From: jenkins-bot
Date: Tue, 26 Apr 2016 18:36:47 +0000 (+0000)
Subject: Merge "Remove un-needed cast for array key in WatchedItemStore"
X-Git-Tag: 1.31.0-rc.0~7176
X-Git-Url: http://git.cyclocoop.org/%7B%24www_url%7Dadmin/password.php?a=commitdiff_plain;h=f5fc9f21ead83bbc50544772281996f37f64d17c;hp=231c684d36479d9e1681a5df22504502660bdb88;p=lhc%2Fweb%2Fwiklou.git
Merge "Remove un-needed cast for array key in WatchedItemStore"
---
diff --git a/Gemfile b/Gemfile
index 636d4ee571..fa3a025ef0 100644
--- a/Gemfile
+++ b/Gemfile
@@ -1,4 +1,5 @@
source 'https://rubygems.org'
-gem 'mediawiki_selenium', '~> 1.6.5'
+gem 'mediawiki_selenium', '~> 1.7'
+gem 'rake', '~> 11.1', '>= 11.1.1'
gem 'rubocop', '~> 0.32.1', require: false
diff --git a/Gemfile.lock b/Gemfile.lock
index 8684be9f32..2bbabd1b7c 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -17,9 +17,9 @@ GEM
faker (>= 1.1.2)
yml_reader (>= 0.6)
diff-lcs (1.2.5)
- domain_name (0.5.20160128)
+ domain_name (0.5.20160310)
unf (>= 0.0.5, < 1.0.0)
- faker (1.6.1)
+ faker (1.6.3)
i18n (~> 0.5)
faraday (0.9.2)
multipart-post (>= 1.2, < 3)
@@ -29,7 +29,7 @@ GEM
ffi (1.9.10)
gherkin (2.12.2)
multi_json (~> 1.3)
- headless (2.2.0)
+ headless (2.2.3)
http-cookie (1.0.2)
domain_name (~> 0.5)
i18n (0.7.0)
@@ -37,7 +37,7 @@ GEM
mediawiki_api (0.5.0)
faraday (~> 0.9, >= 0.9.0)
faraday-cookie_jar (~> 0.0, >= 0.0.6)
- mediawiki_selenium (1.6.5)
+ mediawiki_selenium (1.7.0)
cucumber (~> 1.3, >= 1.3.20)
headless (~> 2.0, >= 2.1.0)
json (~> 1.8, >= 1.8.1)
@@ -48,8 +48,8 @@ GEM
rspec-expectations (~> 2.14, >= 2.14.4)
syntax (~> 1.2, >= 1.2.0)
thor (~> 0.19, >= 0.19.1)
- mime-types (2.99)
- multi_json (1.11.2)
+ mime-types (2.99.1)
+ multi_json (1.11.3)
multi_test (0.1.2)
multipart-post (2.0.0)
netrc (0.11.0)
@@ -63,6 +63,7 @@ GEM
ast (>= 1.1, < 3.0)
powerpack (0.1.1)
rainbow (2.0.0)
+ rake (11.1.1)
rest-client (1.8.0)
http-cookie (>= 1.0.2, < 2.0)
mime-types (>= 1.16, < 3.0)
@@ -77,25 +78,28 @@ GEM
rainbow (>= 1.99.1, < 3.0)
ruby-progressbar (~> 1.4)
ruby-progressbar (1.7.5)
- rubyzip (1.1.7)
- selenium-webdriver (2.50.0)
+ rubyzip (1.2.0)
+ selenium-webdriver (2.53.0)
childprocess (~> 0.5)
- multi_json (~> 1.0)
rubyzip (~> 1.0)
websocket (~> 1.0)
syntax (1.2.0)
thor (0.19.1)
unf (0.1.4)
unf_ext
- unf_ext (0.0.7.1)
+ unf_ext (0.0.7.2)
watir-webdriver (0.9.1)
selenium-webdriver (>= 2.46.2)
- websocket (1.2.2)
+ websocket (1.2.3)
yml_reader (0.7)
PLATFORMS
ruby
DEPENDENCIES
- mediawiki_selenium (~> 1.6.5)
+ mediawiki_selenium (~> 1.7)
+ rake (~> 11.1, >= 11.1.1)
rubocop (~> 0.32.1)
+
+BUNDLED WITH
+ 1.10.6
diff --git a/RELEASE-NOTES-1.27 b/RELEASE-NOTES-1.27
index 2f8f53a1b3..7ddcdfbae2 100644
--- a/RELEASE-NOTES-1.27
+++ b/RELEASE-NOTES-1.27
@@ -7,7 +7,12 @@ production.
=== PHP version requirement ===
As of 1.27, MediaWiki now requires PHP 5.5.9 or higher. This corresponds with
-HHVM 3.1.
+HHVM 3.1. Additionally, the following PHP extensions are required:
+* ctype
+* iconv
+* json
+* mbstring
+* xml
=== Configuration changes in 1.27 ===
* $wgAllowMicrodataAttributes and $wgAllowRdfaAttributes were removed,
@@ -104,6 +109,11 @@ HHVM 3.1.
* $wgPreloadJavaScriptMwUtil was removed (deprecated in 1.26).
Extensions, skins, gadgets and scripts that use the mediawiki.util module must
express a dependency on it.
+* $wgIncludeLegacyJavaScript, deprecated in MediaWiki 1.26, now defaults false.
+ Extensions, skins, gadgets and scripts that need the mediawiki.legacy.wikibits
+ module should express a dependency on it.
+* Removed configuration option $wgCopyrightIcon (deprecated since 1.18). Use
+ $wgFooterIcons['copyright']['copyright'] instead.
=== New features in 1.27 ===
* $wgDataCenterUpdateStickTTL was also added. This decides how long a user
@@ -172,6 +182,14 @@ HHVM 3.1.
be a good idea, but will log out all current sessions.
* $wgEventRelayerConfig was added, for managing PubSub event relay configuration,
specifically for reliable CDN url purges.
+* Requests have unique IDs, equal to the UNIQUE_ID environment variable (when
+ MediaWiki is behind Apache+mod_unique_id or something similar) or a randomly-
+ generated 24-character string. This request ID is used to annotate log records
+ and error messages. It is available client-side via mw.config.get( 'wgRequestId' ).
+ The request ID supplants exception IDs. Accordingly, MWExceptionHandler::getLogId()
+ is deprecated.
+* (T33313) Add a preference for watching uploads by default, also applies
+ to API-based upload tools.
=== External library changes in 1.27 ===
@@ -240,16 +258,11 @@ HHVM 3.1.
* ApiQuery::setGeneratorContinue() was removed (deprecated since 1.24).
* ApiMain::getModules() was removed (deprecated since 1.21).
* ApiBase::getVersion() was removed (deprecated since 1.21).
-* Language::getLangObj() was removed (deprecated since 1.24).
-* Language::getLanguageName() was removed (deprecated since 1.20).
-* Language::getLanguageNames() was removed (deprecated since 1.20).
-* Language::getTranslatedLanguageNames() was removed (deprecated since 1.20).
-* Language::specialPage() was removed (deprecated since 1.24).
-* MediaWikiTestCase::assertException() was removed (deprecated since 1.22).
-* OutputPage::getHeadItems() was removed (deprecated since 1.24).
-* OutputPage::getScript() was removed (deprecated since 1.24).
-* OutputPage::out() was removed (deprecated since 1.22).
-* OutputPage::setAllowedModules() was removed (deprecated since 1.24).
+* ApiMain::getShowVersions() was removed (deprecated in 1.21).
+* ApiMain::addModule() was removed (deprecated in 1.21).
+* ApiMain::addFormat() was removed (deprecated in 1.21).
+* ApiMain::getFormats() was removed (deprecated in 1.21).
+* ApiPageSet::finishPageSetGeneration() was removed (deprecated in 1.21).
=== Languages updated in 1.27 ===
@@ -258,8 +271,12 @@ regularly. Below only new and removed languages are listed, as well as
changes to languages because of Phabricator reports.
* (T113688) Change default numerals from Gurmukhi to Arabic for Punjabi locale.
+* (T116020) Aliases of magic words in MessagesXx.php are sorted by usage.
=== Other changes in 1.27 ===
+* Added dependency injection (DI) infrastructure, see docs/injection.txt for details.
+ It is planned to incrementally move MediaWiki code towards using DI, using the
+ service locator (SL) pattern as a stepping stone.
* ProfilerOutputUdp was removed. Note that there is a ProfilerOutputStats class.
* WikiPage::doDeleteArticleReal() and WikiPage::doDeleteArticle() now
ignore the 2nd and 3rd arguments (formerly $id and $commit).
@@ -369,6 +386,83 @@ changes to languages because of Phabricator reports.
* Unit tests don't work with external PHPUnit anymore, Composer is now the only supported
way. Run `composer install` to install it and other dev dependencies to run unit tests.
* wl_id field added to the watchlist table.
+* Revision::getRawText() was removed (deprecated since 1.21).
+* WikiPage::replaceSection() was removed (deprecated since 1.21).
+* Article::replaceSection() was removed (deprecated since 1.21).
+* Language::getLangObj() was removed (deprecated since 1.24).
+* Language::getLanguageName() was removed (deprecated since 1.20).
+* Language::getLanguageNames() was removed (deprecated since 1.20).
+* Language::getTranslatedLanguageNames() was removed (deprecated since 1.20).
+* Language::specialPage() was removed (deprecated since 1.24).
+* MediaWikiTestCase::assertException() was removed (deprecated since 1.22).
+* OutputPage::getHeadItems() was removed (deprecated since 1.24).
+* OutputPage::getScript() was removed (deprecated since 1.24).
+* OutputPage::out() was removed (deprecated since 1.22).
+* OutputPage::setAllowedModules() was removed (deprecated since 1.24).
+* UserrightsPage::makeGroupNameListForLog() was removed (deprecated since 1.21).
+* MediaWikiSite::newFromGlobalId() was removed (deprecated since 1.21).
+* Title::newFromRedirect() was removed (deprecated since 1.21).
+* Skin::commonPrintStylesheet() was removed (deprecated since 1.22).
+* Skin::getCommonStylePath() was removed (deprecated since 1.24).
+* Skin::newFromKey() was removed (deprecated since 1.24).
+* Skin::getUsableSkins() was removed (deprecated since 1.23).
+* LoadBalancer::pickRandom() was removed (deprecated in 1.21).
+* Article::getUndoText() and WikiPage::getUndoText were removed (deprecated since
+ 1.21).
+* DifferenceEngine::setText() was removed (deprecated in 1.21).
+* Title::newFromRedirectArray() was removed (deprecated in 1.21).
+* UserMailer::send() no longer accepts $replyto as the 5th argument and $contentType
+ as the 6th. These must be passed in the options array now.
+* Title::newFromRedirectRecurse() was removed (deprecated in 1.21).
+* Skin::accesskey was removed (deprecated since 1.21).
+* Skin::blockLink was removed (deprecated since 1.21).
+* Skin::buildRollbackLink was removed (deprecated since 1.21).
+* Skin::emailLink was removed (deprecated since 1.21).
+* Skin::formatComment was removed (deprecated since 1.21).
+* Skin::formatHiddenCategories was removed (deprecated since 1.21).
+* Skin::formatLinksInComment was removed (deprecated since 1.21).
+* Skin::formatRevisionSize was removed (deprecated since 1.21).
+* Skin::formatSize was removed (deprecated since 1.21).
+* Skin::formatTemplates was removed (deprecated since 1.21).
+* Skin::generateTOC was removed (deprecated since 1.21).
+* Skin::getInternalLinkAttributes was removed (deprecated since 1.21).
+* Skin::getInternalLinkAttributesObj was removed (deprecated since 1.21).
+* Skin::getInterwikiLinkAttributes was removed (deprecated since 1.21).
+* Skin::getInvalidTitleDescription was removed (deprecated since 1.21).
+* Skin::getLinkColour was removed (deprecated since 1.21).
+* Skin::getRevDeleteLink was removed (deprecated since 1.21).
+* Skin::getRollbackEditCount was removed (deprecated since 1.21).
+* Skin::makeBrokenImageLinkObj was removed (deprecated since 1.21).
+* Skin::makeCommentLink was removed (deprecated since 1.21).
+* Skin::makeExternalImage was removed (deprecated since 1.21).
+* Skin::makeExternalLink was removed (deprecated since 1.21).
+* Skin::makeHeadline was removed (deprecated since 1.21).
+* Skin::makeImageLink was removed (deprecated since 1.21).
+* Skin::makeMediaLinkFile was removed (deprecated since 1.21).
+* Skin::makeMediaLinkObj was removed (deprecated since 1.21).
+* Skin::makeSelfLinkObj was removed (deprecated since 1.21).
+* Skin::makeThumbLink2 was removed (deprecated since 1.21).
+* Skin::makeThumbLinkObj was removed (deprecated since 1.21).
+* Skin::normaliseSpecialPage was removed (deprecated since 1.21).
+* Skin::normalizeSubpageLink was removed (deprecated since 1.21).
+* Skin::processResponsiveImages was removed (deprecated since 1.21).
+* Skin::revComment was removed (deprecated since 1.21).
+* Skin::revDeleteLink was removed (deprecated since 1.21).
+* Skin::revDeleteLinkDisabled was removed (deprecated since 1.21).
+* Skin::revUserLink was removed (deprecated since 1.21).
+* Skin::revUserTools was removed (deprecated since 1.21).
+* Skin::specialLink was removed (deprecated since 1.21).
+* Skin::splitTrail was removed (deprecated since 1.21).
+* Skin::titleAttrib was removed (deprecated since 1.21).
+* Skin::tocIndent was removed (deprecated since 1.21).
+* Skin::tocLine was removed (deprecated since 1.21).
+* Skin::tocLineEnd was removed (deprecated since 1.21).
+* Skin::tocList was removed (deprecated since 1.21).
+* Skin::tocUnindent was removed (deprecated since 1.21).
+* Skin::tooltip was removed (deprecated since 1.21).
+* Skin::tooltipAndAccesskeyAttribs was removed (deprecated since 1.21).
+* Skin::userTalkLink was removed (deprecated since 1.21).
+* Skin::userToolLinksRedContribs was removed (deprecated since 1.21).
== Compatibility ==
diff --git a/Rakefile b/Rakefile
index 6eef121628..59f5480572 100644
--- a/Rakefile
+++ b/Rakefile
@@ -8,6 +8,9 @@ RuboCop::RakeTask.new(:rubocop) do |task|
task.options = ['-c', '.rubocop.yml']
end
+require 'mediawiki_selenium/rake_task'
+MediawikiSelenium::RakeTask.new(site_tag: false)
+
task default: [:test]
desc 'Run all build/tests commands (CI entry point)'
diff --git a/autoload.php b/autoload.php
index e74df0aa1f..f802ddd874 100644
--- a/autoload.php
+++ b/autoload.php
@@ -7,11 +7,11 @@ $wgAutoloadLocalClasses = [
'APCBagOStuff' => __DIR__ . '/includes/libs/objectcache/APCBagOStuff.php',
'AbstractContent' => __DIR__ . '/includes/content/AbstractContent.php',
'Action' => __DIR__ . '/includes/actions/Action.php',
- 'ActiveUsersPager' => __DIR__ . '/includes/specials/SpecialActiveusers.php',
+ 'ActiveUsersPager' => __DIR__ . '/includes/specials/pagers/ActiveUsersPager.php',
'ActivityUpdateJob' => __DIR__ . '/includes/jobqueue/jobs/ActivityUpdateJob.php',
'AjaxDispatcher' => __DIR__ . '/includes/AjaxDispatcher.php',
'AjaxResponse' => __DIR__ . '/includes/AjaxResponse.php',
- 'AllMessagesTablePager' => __DIR__ . '/includes/specials/SpecialAllMessages.php',
+ 'AllMessagesTablePager' => __DIR__ . '/includes/specials/pagers/AllMessagesTablePager.php',
'AllTrans' => __DIR__ . '/maintenance/language/alltrans.php',
'AlphabeticPager' => __DIR__ . '/includes/pager/AlphabeticPager.php',
'AlterSharedConstraints' => __DIR__ . '/maintenance/oracle/alterSharedConstraints.php',
@@ -180,12 +180,12 @@ $wgAutoloadLocalClasses = [
'BitmapMetadataHandler' => __DIR__ . '/includes/media/BitmapMetadataHandler.php',
'Blob' => __DIR__ . '/includes/db/DatabaseUtility.php',
'Block' => __DIR__ . '/includes/Block.php',
- 'BlockListPager' => __DIR__ . '/includes/specials/SpecialBlockList.php',
+ 'BlockListPager' => __DIR__ . '/includes/specials/pagers/BlockListPager.php',
'BlockLogFormatter' => __DIR__ . '/includes/logging/BlockLogFormatter.php',
'BmpHandler' => __DIR__ . '/includes/media/BMP.php',
'BotPassword' => __DIR__ . '/includes/user/BotPassword.php',
'BrokenRedirectsPage' => __DIR__ . '/includes/specials/SpecialBrokenRedirects.php',
- 'BufferingStatsdDataFactory' => __DIR__ . '/includes/libs/BufferingStatsdDataFactory.php',
+ 'BufferingStatsdDataFactory' => __DIR__ . '/includes/libs/stats/BufferingStatsdDataFactory.php',
'CLIParser' => __DIR__ . '/maintenance/parse.php',
'CSSMin' => __DIR__ . '/includes/libs/CSSMin.php',
'CacheDependency' => __DIR__ . '/includes/cache/CacheDependency.php',
@@ -200,7 +200,7 @@ $wgAutoloadLocalClasses = [
'CategoryMembershipChange' => __DIR__ . '/includes/changes/CategoryMembershipChange.php',
'CategoryMembershipChangeJob' => __DIR__ . '/includes/jobqueue/jobs/CategoryMembershipChangeJob.php',
'CategoryPage' => __DIR__ . '/includes/page/CategoryPage.php',
- 'CategoryPager' => __DIR__ . '/includes/specials/SpecialCategories.php',
+ 'CategoryPager' => __DIR__ . '/includes/specials/pagers/CategoryPager.php',
'CategoryViewer' => __DIR__ . '/includes/CategoryViewer.php',
'CdbException' => __DIR__ . '/includes/compat/CdbCompat.php',
'CdbReader' => __DIR__ . '/includes/compat/CdbCompat.php',
@@ -240,9 +240,9 @@ $wgAutoloadLocalClasses = [
'CliInstaller' => __DIR__ . '/includes/installer/CliInstaller.php',
'CloneDatabase' => __DIR__ . '/includes/db/CloneDatabase.php',
'CodeContentHandler' => __DIR__ . '/includes/content/CodeContentHandler.php',
- 'Collation' => __DIR__ . '/includes/Collation.php',
- 'CollationCkb' => __DIR__ . '/includes/Collation.php',
- 'CollationEt' => __DIR__ . '/includes/Collation.php',
+ 'Collation' => __DIR__ . '/includes/collation/Collation.php',
+ 'CollationCkb' => __DIR__ . '/includes/collation/CollationCkb.php',
+ 'CollationEt' => __DIR__ . '/includes/collation/CollationEt.php',
'CommandLineInc' => __DIR__ . '/maintenance/commandLine.inc',
'CommandLineInstaller' => __DIR__ . '/maintenance/install.php',
'CompareParserCache' => __DIR__ . '/maintenance/compareParserCache.php',
@@ -263,13 +263,13 @@ $wgAutoloadLocalClasses = [
'ContentHandler' => __DIR__ . '/includes/content/ContentHandler.php',
'ContentModelLogFormatter' => __DIR__ . '/includes/logging/ContentModelLogFormatter.php',
'ContextSource' => __DIR__ . '/includes/context/ContextSource.php',
- 'ContribsPager' => __DIR__ . '/includes/specials/SpecialContributions.php',
+ 'ContribsPager' => __DIR__ . '/includes/specials/pagers/ContribsPager.php',
'ConvertExtensionToRegistration' => __DIR__ . '/maintenance/convertExtensionToRegistration.php',
'ConvertLinks' => __DIR__ . '/maintenance/convertLinks.php',
'ConvertUserOptions' => __DIR__ . '/maintenance/convertUserOptions.php',
'ConverterRule' => __DIR__ . '/languages/ConverterRule.php',
'Cookie' => __DIR__ . '/includes/libs/Cookie.php',
- 'CookieJar' => __DIR__ . '/includes/libs/Cookie.php',
+ 'CookieJar' => __DIR__ . '/includes/libs/CookieJar.php',
'CopyFileBackend' => __DIR__ . '/maintenance/copyFileBackend.php',
'CopyFileOp' => __DIR__ . '/includes/filebackend/FileOp.php',
'CopyJobQueue' => __DIR__ . '/maintenance/copyJobQueue.php',
@@ -332,7 +332,7 @@ $wgAutoloadLocalClasses = [
'DeleteOrphanedRevisions' => __DIR__ . '/maintenance/deleteOrphanedRevisions.php',
'DeleteRevision' => __DIR__ . '/maintenance/deleteRevision.php',
'DeleteSelfExternals' => __DIR__ . '/maintenance/deleteSelfExternals.php',
- 'DeletedContribsPager' => __DIR__ . '/includes/specials/SpecialDeletedContributions.php',
+ 'DeletedContribsPager' => __DIR__ . '/includes/specials/pagers/DeletedContribsPager.php',
'DeletedContributionsPage' => __DIR__ . '/includes/specials/SpecialDeletedContributions.php',
'DependencyWrapper' => __DIR__ . '/includes/cache/CacheDependency.php',
'DeprecatedGlobal' => __DIR__ . '/includes/DeprecatedGlobal.php',
@@ -357,7 +357,7 @@ $wgAutoloadLocalClasses = [
'DoubleRedirectJob' => __DIR__ . '/includes/jobqueue/jobs/DoubleRedirectJob.php',
'DoubleRedirectsPage' => __DIR__ . '/includes/specials/SpecialDoubleRedirects.php',
'DoubleReplacer' => __DIR__ . '/includes/libs/replacers/DoubleReplacer.php',
- 'DummyLinker' => __DIR__ . '/includes/Linker.php',
+ 'DummyLinker' => __DIR__ . '/includes/DummyLinker.php',
'DummyTermColorer' => __DIR__ . '/maintenance/term/MWTerm.php',
'Dump7ZipOutput' => __DIR__ . '/includes/export/Dump7ZipOutput.php',
'DumpBZip2Output' => __DIR__ . '/includes/export/DumpBZip2Output.php',
@@ -397,8 +397,8 @@ $wgAutoloadLocalClasses = [
'ErrorPageError' => __DIR__ . '/includes/exception/ErrorPageError.php',
'EventRelayer' => __DIR__ . '/includes/libs/eventrelayer/EventRelayer.php',
'EventRelayerGroup' => __DIR__ . '/includes/EventRelayerGroup.php',
- 'EventRelayerMCRD' => __DIR__ . '/includes/libs/eventrelayer/EventRelayerMCRD.php',
- 'EventRelayerNull' => __DIR__ . '/includes/libs/eventrelayer/EventRelayer.php',
+ 'EventRelayerKafka' => __DIR__ . '/includes/libs/eventrelayer/EventRelayerKafka.php',
+ 'EventRelayerNull' => __DIR__ . '/includes/libs/eventrelayer/EventRelayerNull.php',
'Exif' => __DIR__ . '/includes/media/Exif.php',
'ExifBitmapHandler' => __DIR__ . '/includes/media/ExifBitmap.php',
'ExplodeIterator' => __DIR__ . '/includes/libs/ExplodeIterator.php',
@@ -423,7 +423,6 @@ $wgAutoloadLocalClasses = [
'FakeConverter' => __DIR__ . '/languages/FakeConverter.php',
'FakeMaintenance' => __DIR__ . '/maintenance/Maintenance.php',
'FakeResultWrapper' => __DIR__ . '/includes/db/DatabaseUtility.php',
- 'Fallback' => __DIR__ . '/includes/Fallback.php',
'FatalError' => __DIR__ . '/includes/exception/FatalError.php',
'FauxRequest' => __DIR__ . '/includes/FauxRequest.php',
'FauxResponse' => __DIR__ . '/includes/WebResponse.php',
@@ -490,7 +489,6 @@ $wgAutoloadLocalClasses = [
'GenerateNormalizerDataAr' => __DIR__ . '/maintenance/language/generateNormalizerDataAr.php',
'GenerateNormalizerDataMl' => __DIR__ . '/maintenance/language/generateNormalizerDataMl.php',
'GenerateSitemap' => __DIR__ . '/maintenance/generateSitemap.php',
- 'GenerateUtf8Case' => __DIR__ . '/maintenance/language/generateUtf8Case.php',
'GenericArrayObject' => __DIR__ . '/includes/libs/GenericArrayObject.php',
'GetConfiguration' => __DIR__ . '/maintenance/getConfiguration.php',
'GetLagTimes' => __DIR__ . '/maintenance/getLagTimes.php',
@@ -564,8 +562,8 @@ $wgAutoloadLocalClasses = [
'IPSet' => __DIR__ . '/includes/compat/IPSetCompat.php',
'IPTC' => __DIR__ . '/includes/media/IPTC.php',
'IRCColourfulRCFeedFormatter' => __DIR__ . '/includes/rcfeed/IRCColourfulRCFeedFormatter.php',
- 'IcuCollation' => __DIR__ . '/includes/Collation.php',
- 'IdentityCollation' => __DIR__ . '/includes/Collation.php',
+ 'IcuCollation' => __DIR__ . '/includes/collation/IcuCollation.php',
+ 'IdentityCollation' => __DIR__ . '/includes/collation/IdentityCollation.php',
'ImageBuilder' => __DIR__ . '/maintenance/rebuildImages.php',
'ImageCleanup' => __DIR__ . '/maintenance/cleanupImages.php',
'ImageGallery' => __DIR__ . '/includes/gallery/TraditionalImageGallery.php',
@@ -573,7 +571,7 @@ $wgAutoloadLocalClasses = [
'ImageHandler' => __DIR__ . '/includes/media/ImageHandler.php',
'ImageHistoryList' => __DIR__ . '/includes/page/ImageHistoryList.php',
'ImageHistoryPseudoPager' => __DIR__ . '/includes/page/ImageHistoryPseudoPager.php',
- 'ImageListPager' => __DIR__ . '/includes/specials/SpecialListfiles.php',
+ 'ImageListPager' => __DIR__ . '/includes/specials/pagers/ImageListPager.php',
'ImagePage' => __DIR__ . '/includes/page/ImagePage.php',
'ImageQueryPage' => __DIR__ . '/includes/specialpage/ImageQueryPage.php',
'ImportLogFormatter' => __DIR__ . '/includes/logging/ImportLogFormatter.php',
@@ -620,6 +618,7 @@ $wgAutoloadLocalClasses = [
'JobQueueFederated' => __DIR__ . '/includes/jobqueue/JobQueueFederated.php',
'JobQueueGroup' => __DIR__ . '/includes/jobqueue/JobQueueGroup.php',
'JobQueueMemory' => __DIR__ . '/includes/jobqueue/JobQueueMemory.php',
+ 'JobQueueReadOnlyError' => __DIR__ . '/includes/jobqueue/JobQueue.php',
'JobQueueRedis' => __DIR__ . '/includes/jobqueue/JobQueueRedis.php',
'JobRunner' => __DIR__ . '/includes/jobqueue/JobRunner.php',
'JobSpecification' => __DIR__ . '/includes/jobqueue/JobSpecification.php',
@@ -634,11 +633,11 @@ $wgAutoloadLocalClasses = [
'LBFactoryMulti' => __DIR__ . '/includes/db/loadbalancer/LBFactoryMulti.php',
'LBFactorySimple' => __DIR__ . '/includes/db/loadbalancer/LBFactorySimple.php',
'LBFactorySingle' => __DIR__ . '/includes/db/loadbalancer/LBFactorySingle.php',
- 'LCStore' => __DIR__ . '/includes/cache/LocalisationCache.php',
- 'LCStoreCDB' => __DIR__ . '/includes/cache/LocalisationCache.php',
- 'LCStoreDB' => __DIR__ . '/includes/cache/LocalisationCache.php',
- 'LCStoreNull' => __DIR__ . '/includes/cache/LocalisationCache.php',
- 'LCStoreStaticArray' => __DIR__ . '/includes/cache/LCStoreStaticArray.php',
+ 'LCStore' => __DIR__ . '/includes/cache/localisation/LCStore.php',
+ 'LCStoreCDB' => __DIR__ . '/includes/cache/localisation/LCStoreCDB.php',
+ 'LCStoreDB' => __DIR__ . '/includes/cache/localisation/LCStoreDB.php',
+ 'LCStoreNull' => __DIR__ . '/includes/cache/localisation/LCStoreNull.php',
+ 'LCStoreStaticArray' => __DIR__ . '/includes/cache/localisation/LCStoreStaticArray.php',
'LangMemUsage' => __DIR__ . '/maintenance/language/langmemusage.php',
'Language' => __DIR__ . '/languages/Language.php',
'LanguageAr' => __DIR__ . '/languages/classes/LanguageAr.php',
@@ -698,7 +697,6 @@ $wgAutoloadLocalClasses = [
'LinkFilter' => __DIR__ . '/includes/LinkFilter.php',
'LinkHolderArray' => __DIR__ . '/includes/parser/LinkHolderArray.php',
'LinkSearchPage' => __DIR__ . '/includes/specials/SpecialLinkSearch.php',
- 'LinkTarget' => __DIR__ . '/includes/LinkTarget.php',
'Linker' => __DIR__ . '/includes/Linker.php',
'LinksDeletionUpdate' => __DIR__ . '/includes/deferred/LinksDeletionUpdate.php',
'LinksUpdate' => __DIR__ . '/includes/deferred/LinksUpdate.php',
@@ -718,8 +716,8 @@ $wgAutoloadLocalClasses = [
'LocalIdLookup' => __DIR__ . '/includes/user/LocalIdLookup.php',
'LocalRepo' => __DIR__ . '/includes/filerepo/LocalRepo.php',
'LocalSettingsGenerator' => __DIR__ . '/includes/installer/LocalSettingsGenerator.php',
- 'LocalisationCache' => __DIR__ . '/includes/cache/LocalisationCache.php',
- 'LocalisationCacheBulkLoad' => __DIR__ . '/includes/cache/LocalisationCache.php',
+ 'LocalisationCache' => __DIR__ . '/includes/cache/localisation/LocalisationCache.php',
+ 'LocalisationCacheBulkLoad' => __DIR__ . '/includes/cache/localisation/LocalisationCacheBulkLoad.php',
'LockManager' => __DIR__ . '/includes/filebackend/lockmanager/LockManager.php',
'LockManagerGroup' => __DIR__ . '/includes/filebackend/lockmanager/LockManagerGroup.php',
'LogEntry' => __DIR__ . '/includes/logging/LogEntry.php',
@@ -781,6 +779,7 @@ $wgAutoloadLocalClasses = [
'MediaWikiVersionFetcher' => __DIR__ . '/includes/MediaWikiVersionFetcher.php',
'MediaWiki\\Languages\\Data\\Names' => __DIR__ . '/languages/data/Names.php',
'MediaWiki\\Languages\\Data\\ZhConversion' => __DIR__ . '/languages/data/ZhConversion.php',
+ 'MediaWiki\\Linker\\LinkTarget' => __DIR__ . '/includes/linker/LinkTarget.php',
'MediaWiki\\Logger\\LegacyLogger' => __DIR__ . '/includes/debug/logger/LegacyLogger.php',
'MediaWiki\\Logger\\LegacySpi' => __DIR__ . '/includes/debug/logger/LegacySpi.php',
'MediaWiki\\Logger\\LoggerFactory' => __DIR__ . '/includes/debug/logger/LoggerFactory.php',
@@ -795,6 +794,8 @@ $wgAutoloadLocalClasses = [
'MediaWiki\\Logger\\Monolog\\WikiProcessor' => __DIR__ . '/includes/debug/logger/monolog/WikiProcessor.php',
'MediaWiki\\Logger\\NullSpi' => __DIR__ . '/includes/debug/logger/NullSpi.php',
'MediaWiki\\Logger\\Spi' => __DIR__ . '/includes/debug/logger/Spi.php',
+ 'MediaWiki\\MediaWikiServices' => __DIR__ . '/includes/MediaWikiServices.php',
+ 'MediaWiki\\Services\\ServiceContainer' => __DIR__ . '/includes/Services/ServiceContainer.php',
'MediaWiki\\Session\\BotPasswordSessionProvider' => __DIR__ . '/includes/session/BotPasswordSessionProvider.php',
'MediaWiki\\Session\\CookieSessionProvider' => __DIR__ . '/includes/session/CookieSessionProvider.php',
'MediaWiki\\Session\\ImmutableSessionProviderWithCookie' => __DIR__ . '/includes/session/ImmutableSessionProviderWithCookie.php',
@@ -833,7 +834,7 @@ $wgAutoloadLocalClasses = [
'MemoizedCallable' => __DIR__ . '/includes/libs/MemoizedCallable.php',
'MemoryFileBackend' => __DIR__ . '/includes/filebackend/MemoryFileBackend.php',
'MergeHistory' => __DIR__ . '/includes/MergeHistory.php',
- 'MergeHistoryPager' => __DIR__ . '/includes/specials/SpecialMergeHistory.php',
+ 'MergeHistoryPager' => __DIR__ . '/includes/specials/pagers/MergeHistoryPager.php',
'MergeLogFormatter' => __DIR__ . '/includes/logging/MergeLogFormatter.php',
'MergeMessageFileList' => __DIR__ . '/maintenance/mergeMessageFileList.php',
'MergeableUpdate' => __DIR__ . '/includes/deferred/MergeableUpdate.php',
@@ -880,8 +881,8 @@ $wgAutoloadLocalClasses = [
'NamespaceAwareForeignTitleFactory' => __DIR__ . '/includes/title/NamespaceAwareForeignTitleFactory.php',
'NamespaceConflictChecker' => __DIR__ . '/maintenance/namespaceDupes.php',
'NamespaceImportTitleFactory' => __DIR__ . '/includes/title/NamespaceImportTitleFactory.php',
- 'NewFilesPager' => __DIR__ . '/includes/specials/SpecialNewimages.php',
- 'NewPagesPager' => __DIR__ . '/includes/specials/SpecialNewpages.php',
+ 'NewFilesPager' => __DIR__ . '/includes/specials/pagers/NewFilesPager.php',
+ 'NewPagesPager' => __DIR__ . '/includes/specials/pagers/NewPagesPager.php',
'NewUsersLogFormatter' => __DIR__ . '/includes/logging/NewUsersLogFormatter.php',
'NolinesImageGallery' => __DIR__ . '/includes/gallery/NolinesImageGallery.php',
'NotRecursiveIterator' => __DIR__ . '/includes/utils/iterators/NotRecursiveIterator.php',
@@ -892,6 +893,7 @@ $wgAutoloadLocalClasses = [
'NullJob' => __DIR__ . '/includes/jobqueue/jobs/NullJob.php',
'NullLockManager' => __DIR__ . '/includes/filebackend/lockmanager/LockManager.php',
'NullRepo' => __DIR__ . '/includes/filerepo/NullRepo.php',
+ 'NullStatsdDataFactory' => __DIR__ . '/includes/libs/stats/NullStatsdDataFactory.php',
'OOUIHTMLForm' => __DIR__ . '/includes/htmlform/OOUIHTMLForm.php',
'ORAField' => __DIR__ . '/includes/db/DatabaseOracle.php',
'ORAResult' => __DIR__ . '/includes/db/DatabaseOracle.php',
@@ -933,7 +935,7 @@ $wgAutoloadLocalClasses = [
'PackedHoverImageGallery' => __DIR__ . '/includes/gallery/PackedOverlayImageGallery.php',
'PackedImageGallery' => __DIR__ . '/includes/gallery/PackedImageGallery.php',
'PackedOverlayImageGallery' => __DIR__ . '/includes/gallery/PackedOverlayImageGallery.php',
- 'Page' => __DIR__ . '/includes/page/WikiPage.php',
+ 'Page' => __DIR__ . '/includes/page/Page.php',
'PageArchive' => __DIR__ . '/includes/specials/SpecialUndelete.php',
'PageExists' => __DIR__ . '/maintenance/pageExists.php',
'PageLangLogFormatter' => __DIR__ . '/includes/logging/PageLangLogFormatter.php',
@@ -1006,7 +1008,7 @@ $wgAutoloadLocalClasses = [
'ProtectAction' => __DIR__ . '/includes/actions/ProtectAction.php',
'ProtectLogFormatter' => __DIR__ . '/includes/logging/ProtectLogFormatter.php',
'ProtectedPagesPager' => __DIR__ . '/includes/specials/SpecialProtectedpages.php',
- 'ProtectedTitlesPager' => __DIR__ . '/includes/specials/SpecialProtectedtitles.php',
+ 'ProtectedTitlesPager' => __DIR__ . '/includes/specials/pagers/ProtectedTitlesPager.php',
'ProtectionForm' => __DIR__ . '/includes/ProtectionForm.php',
'PruneFileCache' => __DIR__ . '/maintenance/pruneFileCache.php',
'PublishStashedFileJob' => __DIR__ . '/includes/jobqueue/jobs/PublishStashedFileJob.php',
@@ -1133,12 +1135,15 @@ $wgAutoloadLocalClasses = [
'SearchDatabase' => __DIR__ . '/includes/search/SearchDatabase.php',
'SearchDump' => __DIR__ . '/maintenance/dumpIterator.php',
'SearchEngine' => __DIR__ . '/includes/search/SearchEngine.php',
+ 'SearchEngineConfig' => __DIR__ . '/includes/search/SearchEngineConfig.php',
'SearchEngineDummy' => __DIR__ . '/includes/search/SearchEngine.php',
+ 'SearchEngineFactory' => __DIR__ . '/includes/search/SearchEngineFactory.php',
'SearchExactMatchRescorer' => __DIR__ . '/includes/search/SearchExactMatchRescorer.php',
'SearchHighlighter' => __DIR__ . '/includes/search/SearchHighlighter.php',
'SearchMssql' => __DIR__ . '/includes/search/SearchMssql.php',
'SearchMySQL' => __DIR__ . '/includes/search/SearchMySQL.php',
'SearchNearMatchResultSet' => __DIR__ . '/includes/search/SearchNearMatchResultSet.php',
+ 'SearchNearMatcher' => __DIR__ . '/includes/search/SearchNearMatcher.php',
'SearchOracle' => __DIR__ . '/includes/search/SearchOracle.php',
'SearchPostgres' => __DIR__ . '/includes/search/SearchPostgres.php',
'SearchResult' => __DIR__ . '/includes/search/SearchResult.php',
@@ -1266,6 +1271,7 @@ $wgAutoloadLocalClasses = [
'SquidUpdate' => __DIR__ . '/includes/deferred/CdnCacheUpdate.php',
'SrConverter' => __DIR__ . '/languages/classes/LanguageSr.php',
'StatsOutput' => __DIR__ . '/maintenance/language/StatOutputs.php',
+ 'StatsdAwareInterface' => __DIR__ . '/includes/libs/stats/StatsdAwareInterface.php',
'Status' => __DIR__ . '/includes/Status.php',
'StatusValue' => __DIR__ . '/includes/libs/StatusValue.php',
'StorageTypeStats' => __DIR__ . '/maintenance/storage/storageTypeStats.php',
@@ -1370,7 +1376,7 @@ $wgAutoloadLocalClasses = [
'UploadStashNotLoggedInException' => __DIR__ . '/includes/upload/UploadStash.php',
'UploadStashWrongOwnerException' => __DIR__ . '/includes/upload/UploadStash.php',
'UploadStashZeroLengthFileException' => __DIR__ . '/includes/upload/UploadStash.php',
- 'UppercaseCollation' => __DIR__ . '/includes/Collation.php',
+ 'UppercaseCollation' => __DIR__ . '/includes/collation/UppercaseCollation.php',
'UsageException' => __DIR__ . '/includes/api/ApiMain.php',
'User' => __DIR__ . '/includes/user/User.php',
'UserArray' => __DIR__ . '/includes/user/UserArray.php',
@@ -1387,7 +1393,7 @@ $wgAutoloadLocalClasses = [
'UsercreateTemplate' => __DIR__ . '/includes/templates/Usercreate.php',
'UserloginTemplate' => __DIR__ . '/includes/templates/Userlogin.php',
'UserrightsPage' => __DIR__ . '/includes/specials/SpecialUserrights.php',
- 'UsersPager' => __DIR__ . '/includes/specials/SpecialListusers.php',
+ 'UsersPager' => __DIR__ . '/includes/specials/pagers/UsersPager.php',
'UtfNormal' => __DIR__ . '/includes/compat/normal/UtfNormal.php',
'UzConverter' => __DIR__ . '/languages/classes/LanguageUz.php',
'VFormHTMLForm' => __DIR__ . '/includes/htmlform/VFormHTMLForm.php',
diff --git a/composer.json b/composer.json
index e0667e2f3c..3bea9ea6ca 100644
--- a/composer.json
+++ b/composer.json
@@ -16,12 +16,16 @@
"wiki": "https://www.mediawiki.org/"
},
"require": {
- "composer/semver": "1.2.0",
+ "composer/semver": "1.4.0",
"cssjanus/cssjanus": "1.1.2",
+ "ext-ctype": "*",
"ext-iconv": "*",
+ "ext-json": "*",
+ "ext-mbstring": "*",
+ "ext-xml": "*",
"liuggio/statsd-php-client": "1.0.18",
"mediawiki/at-ease": "1.1.0",
- "oojs/oojs-ui": "0.16.4",
+ "oojs/oojs-ui": "0.16.6",
"oyejorge/less.php": "1.7.0.10",
"php": ">=5.5.9",
"psr/log": "1.0.0",
@@ -30,6 +34,7 @@
"wikimedia/cdb": "1.3.0",
"wikimedia/cldr-plural-rule-parser": "1.0.0",
"wikimedia/composer-merge-plugin": "1.3.1",
+ "wikimedia/html-formatter": "1.0.1",
"wikimedia/ip-set": "1.0.1",
"wikimedia/php-session-serializer": "1.0.3",
"wikimedia/relpath": "1.0.3",
@@ -42,7 +47,7 @@
"jakub-onderka/php-parallel-lint": "0.9.2",
"justinrainbow/json-schema": "~1.3",
"mediawiki/mediawiki-codesniffer": "0.6.0",
- "monolog/monolog": "~1.17.2",
+ "monolog/monolog": "~1.18.2",
"nikic/php-parser": "1.4.1",
"nmred/kafka-php": "0.1.5",
"phpunit/phpunit": "4.8.24",
@@ -52,7 +57,6 @@
"ext-apc": "Local data and opcode cache",
"ext-fileinfo": "Improved mime magic detection",
"ext-intl": "ICU integration",
- "ext-mbstring": "Multibyte string support",
"ext-wikidiff2": "Diff accelerator",
"monolog/monolog": "Flexible debug logging system",
"nmred/kafka-php": "Send debug log events to kafka",
diff --git a/docs/contenthandler.txt b/docs/contenthandler.txt
index f1f478ef31..6209b1426c 100644
--- a/docs/contenthandler.txt
+++ b/docs/contenthandler.txt
@@ -96,7 +96,7 @@ used.
Most importantly, the following functions have been deprecated:
-* Revisions::getText() and Revisions::getRawText() is deprecated in favor Revisions::getContent()
+* Revisions::getText() is deprecated in favor Revisions::getContent()
* WikiPage::getText() is deprecated in favor WikiPage::getContent()
Also, the old Article::getContent() (which returns text) is superceded by Article::getContentObject(). However, both
diff --git a/docs/extension.schema.json b/docs/extension.schema.json
index 4218e8a50a..f1decd3d0d 100644
--- a/docs/extension.schema.json
+++ b/docs/extension.schema.json
@@ -322,6 +322,10 @@
"type": "string",
"description": "Equivalent of remoteBasePath, but relative to $wgExtensionAssetsPath"
},
+ "skipFunction": {
+ "type": "string",
+ "description": "Path to a file containing a JavaScript \"skip function\", if desired."
+ },
"scripts": {
"type": ["string", "array"],
"description": "Scripts to always include (array of file paths)",
@@ -422,7 +426,7 @@
]
},
"templates": {
- "type": "object",
+ "type": ["object", "array"],
"description": "Templates to be loaded for client-side usage"
},
"targets": {
@@ -660,6 +664,23 @@
"FilterLogTypes": {
"type": "object"
},
+ "ActionFilteredLogs": {
+ "type": "object",
+ "description": "List of log types which can be filtered by log actions",
+ "patternProperties": {
+ "^[a-z-]+$": {
+ "type": "object",
+ "patternProperties": {
+ "^[a-z-]+$": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
"LogNames": {
"type": "object"
},
diff --git a/docs/hooks.txt b/docs/hooks.txt
index 9478f485f6..31e9d92a46 100644
--- a/docs/hooks.txt
+++ b/docs/hooks.txt
@@ -1997,6 +1997,11 @@ $user: $wgUser
$request: $wgRequest
$mediaWiki: The $mediawiki object
+'MediaWikiServices': Override services in the default MediaWikiServices instance.
+Extensions may use this to define, replace, or wrap existing services.
+However, the preferred way to define a new service is the $wgServiceWiringFiles array.
+$services: MediaWikiServices
+
'MessageCache::get': When fetching a message. Can be used to override the key
for customisations. Given and returned message key must be in special format:
1) first letter must be in lower case according to the content language.
@@ -2855,6 +2860,7 @@ $special: the SpecialPage object
$subPage: the subpage string or null if no subpage was specified
'SpecialPageBeforeExecute': Called before SpecialPage::execute.
+Return false to prevent execution.
$special: the SpecialPage object
$subPage: the subpage string or null if no subpage was specified
diff --git a/docs/injection.txt b/docs/injection.txt
new file mode 100644
index 0000000000..e0466c44a5
--- /dev/null
+++ b/docs/injection.txt
@@ -0,0 +1,248 @@
+injection.txt
+
+This is an overview of how MediaWiki makes use of dependency injection.
+The design described here grew from the discussion of RFC T384.
+
+
+The term "dependency injection" (DI) refers to a pattern on object oriented
+programming that tries to improve modularity by reducing strong coupling
+between classes. In practical terms, this means that anything an object needs
+to operate should be injected from the outside, the object itself should only
+know narrow interfaces, no concrete implementation of the logic it relies on.
+
+The requirement to inject everything typically results in an architecture that
+based on two main types of objects: simple value objects with no business logic
+(and often immutable), and essentially stateless service objects that use
+other service objects to operate on the value objects.
+
+As of the beginning of 2016 (MW version 1.27), MediaWiki is only starting to
+use the DI approach. Much of the code still relies on global state or direct
+instantiation, resulting in a highly cyclical dependency graph.
+
+
+== Overview ==
+The heart of the DI in MediaWiki is the central service locator,
+MediaWikiServices, which acts as the top level factory for services in
+MediaWiki. MediaWikiServices::getInstance() returns the default service
+locator instance, which can be used to gain access to default instances of
+various services. MediaWikiServices however also allows new services to be
+defined and default services to be redefined. Services are defined or
+redefined by providing a callback function, the "instantiator" function,
+that will return a new instance of the service.
+
+When MediaWikiServices::getInstance() is first called, it will create an
+instance of MediaWikiServices and populate it with the services defined
+in the files listed by $wgServiceWiringFiles, thereby "bootstrapping" the
+DI framework. Per default, $wgServiceWiringFiles lists
+includes/ServiceWiring.php, which defines all default service
+implementations, and specifies how they depend on each other ("wiring").
+
+When a new service is added to MediaWiki core, an instantiator function
+that will create the appropriate default instance for that service must
+be added to ServiceWiring.php. This makes the service available through
+the generic getService() method on the service locator returned by
+MediaWikiServices::getInstance().
+
+Extensions can add their own wiring files to $wgServiceWiringFiles, in order
+to define their own service. Extensions may also use the 'MediaWikiServices'
+hook to define or redefined services by calling methods on the default
+MediaWikiServices instance.
+
+
+It should be noted that the term "service locator" is often used to refer to a
+top level factory that is accessed directly, throughout the code, to avoid
+explicit dependency injection. In contrast, the term "DI container" is often
+used to describe a top level factory that is only accessed when services
+are created. We use the term "service locator" for the top level factory
+because it is more descriptive than "DI container", even though application
+logic is strongly discouraged from accessing MediaWikiServices directly.
+MediaWikiServices::getInstance() should ideally be accessed only in "static
+entry points" such as hook handler functions. See "Migration" below.
+
+
+== Configuration ==
+
+When the default MediaWikiServices instance is created, a Config object is
+provided to the constructor. This Config object represents the "bootstrap"
+configuration which will become available as the 'BootstrapConfig' service.
+As of MW 1.27, the bootstrap config is a GlobalVarConfig object providing
+access to the $wgXxx configuration variables.
+
+The bootstrap config is then used to construct a 'ConfigFactory' service,
+which in turn is used to construct the 'MainConfig' service. Application
+logic should use the 'MainConfig' service (or a more specific configuration
+object). 'BootstrapConfig' should only be used for bootstrapping basic
+services that are needed to load the 'MainConfig'.
+
+
+Note: Several well known services in MediaWiki core act as factories
+themselves, e.g. ApiModuleManager, ObjectCache, SpecialPageFactory, etc.
+The registries these factories are based on are currently managed as part of
+the configuration. This may however change in the future.
+
+
+== Migration ==
+
+This section provides some recipes for improving code modularity by reducing
+strong coupling. The dependency injection mechanism described above is an
+essential tool in this effort.
+
+Migrate access to global service instances and config variables:
+Assume Foo is a class that uses the $wgScriptPath global and calls
+wfGetDB() to get a database connection, in non-static methods.
+* Add $scriptPath as a constructor parameter and use $this->scriptPath
+ instead of $wgScriptPath.
+* Add LoadBalancer $dbLoadBalancer as a constructor parameter. Use
+ $this->dbLoadBalancer->getConnection() instead of wfGetDB().
+* Any code that calls Foo's constructor would now need to provide the
+ $scriptPath and $dbLoadBalancer. To avoid this, avoid direct instantiation
+ of services all together - see below.
+
+Migrate class-level singleton getters:
+Assume class Foo has mostly non-static methods, and provides a static
+getInstance() method that returns a singleton (or default instance).
+* Add an instantiator function for Foo into ServiceWiring.php. The instantiator
+ would do exactly what Foo::getInstance() did. However, it should
+ replace any access to global state with calls to $services->getXxx() to get a
+ service, or $services->getMainConfig()->get() to get a configuration setting.
+* Add a getFoo() method to MediaWikiServices. Don't forget to add the
+ appropriate test cases in MediaWikiServicesTest.
+* Turn Foo::getInstance() into a deprecated alias for
+ MediaWikiServices::getInstance()->getFoo(). Change all calls to
+ Foo::getInstance() to use injection (see above).
+
+Migrate direct service instantiation:
+Assume class Bar calls new Foo().
+* Add an instantiator function for Foo into ServiceWiring.php and add a getFoo()
+ method to MediaWikiServices. Don't forget to add the appropriate test cases
+ in MediaWikiServicesTest.
+* In the instantiator, replace any access to global state with calls
+ to $services->getXxx() to get a service, or $services->getMainConfig()->get()
+ to get a configuration setting.
+* The code in Bar that calls Foo's constructor should be changed to have a Foo
+ instance injected; Eventually, the only code that instantiates Foo is the
+ instantiator in ServiceWiring.php.
+* As an intermediate step, Bar's constructor could initialize the $foo member
+ variable by calling MediaWikiServices::getInstance()->getFoo(). This is
+ acceptable as a stepping stone, but should be replaced by proper injection
+ via a constructor argument. Do not however inject the MediaWikiServices
+ object!
+
+Migrate parameterized helper instantiation:
+Assume class Bar creates some helper object by calling new Foo( $x ),
+and Foo uses a global singleton of the Xyzzy service.
+* Define a FooFactory class (or a FooFactory interface along with a MyFooFactory
+ implementation). FooFactory defines the method newFoo( $x ) or getFoo( $x ),
+ depending on the desired semantics (newFoo would guarantee a fresh instance).
+ When Foo gets refactored to have Xyzzy injected, FooFactory will need a
+ Xyzzy instance, so newFoo() can pass it to new Foo().
+* Add an instantiator function for FooFactory into ServiceWiring.php and add a
+ getFooFactory() method to MediaWikiServices. Don't forget to add the
+ appropriate test cases in MediaWikiServicesTest.
+* The code in Bar that calls Foo's constructor should be changed to have a
+ FooFactory instance injected; Eventually, the only code that instantiates
+ Foo are implementations of FooFactory, and the only code that instantiates
+ FooFactory is the instantiator in ServiceWiring.php.
+* As an intermediate step, Bar's constructor could initialize the $fooFactory
+ member variable by calling MediaWikiServices::getInstance()->getFooFactory().
+ This is acceptable as a stepping stone, but should be replaced by proper
+ injection via a constructor argument. Do not however inject the
+ MediaWikiServices object!
+
+Migrate a handler registry:
+Assume class Bar calls FooRegistry::getFoo( $x ) to get a specialized Foo
+instance for handling $x.
+* Turn getFoo into a non-static method.
+* Add an instantiator function for FooRegistry into ServiceWiring.php and add
+ a getFooRegistry() method to MediaWikiServices. Don't forget to add the
+ appropriate test cases in MediaWikiServicesTest.
+* Change all code that calls FooRegistry::getFoo() statically to call this
+ method on a FooRegistry instance. That is, Bar would have a $fooRegistry
+ member, initialized from a constructor parameter.
+* As an intermediate step, Bar's constructor could initialize the $fooRegistry
+ member variable by calling MediaWikiServices::getInstance()->
+ getFooRegistry(). This is acceptable as a stepping stone, but should be
+ replaced by proper injection via a constructor argument. Do not however
+ inject the MediaWikiServices object!
+
+Migrate deferred service instantiation:
+Assume class Bar calls new Foo(), but only when needed, to avoid the cost of
+instantiating Foo().
+* Define a FooFactory interface and a MyFooFactory implementation of that
+ interface. FooFactory defines the method getFoo() with no parameters.
+* Precede as for the "parameterized helper instantiation" case described above.
+
+Migrate a class with only static methods:
+Assume Foo is a class with only static methods, such as frob(), which
+interacts with global state or system resources.
+* Introduce a FooService interface and a DefaultFoo implementation of that
+ interface. FooService contains the public methods defined by Foo.
+* Add an instantiator function for FooService into ServiceWiring.php and
+ add a getFooService() method to MediaWikiServices. Don't forget to
+ add the appropriate test cases in MediaWikiServicesTest.
+* Add a private static getFooService() method to Foo. That method just
+ calls MediaWikiServices::getInstance()->getFooService().
+* Make all methods in Foo delegate to the FooService returned by
+ getFooService(). That is, Foo::frob() would do self::getFooService()->frob().
+* Deprecate Foo. Inject a FooService into all code that calls methods
+ on Foo, and change any calls to static methods in foo to the methods
+ provided by the FooService interface.
+
+Migrate static hook handler functions (to allow unit testing):
+Assume MyExtHooks::onFoo is a static hook handler function that is called with
+the parameter $x; Further assume MyExt::onFoo needs service Bar, which is
+already known to MediaWikiServices (if not, see above).
+* Create a non-static doFoo( $x ) method in MyExtHooks that has the same
+ signature as onFoo( $x ). Move the code from onFoo() into doFoo(), replacing
+ any access to global or static variables with access to instance member
+ variables.
+* Add a constructor to MyExtHooks that takes a Bar service as a parameter.
+* Add a static method called newFromGlobalState() with no parameters. It should
+ just return new MyExtHooks( MediaWikiServices::getBar() ).
+* The original static handler method onFoo( $x ) is then implemented as
+ self::newFromGlobalState()->doFoo( $x ).
+
+Migrate a "smart record":
+Assume Thingy is a "smart record" that "knows" how to load and store itself.
+For this purpose, Thingy uses wfGetDB().
+* Create a "dumb" value class ThingyRecord that contains all the information
+ that Thingy represents (e.g. the information from a database row). The value
+ object should not know about any service.
+* Create a DAO-style service for loading and storing ThingyRecords, called
+ ThingyStore. It may be useful to split the interfaces for reading and
+ writing, with a single class implementing both interfaces, so we in the
+ end have the ThingyLookup and ThingyStore interfaces, and a SqlThingyStore
+ implementation.
+* Add instantiator functions for ThingyLookup and ThingyStore in
+ ServiceWiring.php. Since we want to use the same instance for both service
+ interfaces, the instantiator for ThingyLookup would return
+ $services->getThingyStore().
+* Add getThingyLookup() and getThingyStore methods to MediaWikiServices.
+ Don't forget to add the appropriate test cases in MediaWikiServicesTest.
+* In the old Thingy class, replace all member variables that represent the
+ record's data with a single ThingyRecord object.
+* In the old Thingy class, replace all calls to static methods or functions,
+ such as wfGetDB(), with calls to the appropriate services, such as
+ LoadBalancer::getConnection().
+* In Thingy's constructor, pull in any services needed, such as the
+ LoadBalancer, by using MediaWikiServices::getInstance(). These services
+ cannot be injected without changing the constructor signature, which
+ is often impractical for "smart records" that get instantiated directly
+ in many places in the code base.
+* Deprecate the old Thingy class. Replace all usages of it with one of the
+ three new classes: loading needs a ThingyLookup, storing needs a ThingyStore,
+ and reading data needs a ThingyRecord.
+
+Migrate lazy loading:
+Assume Thingy is a "smart record" as described above, but requires lazy loading
+of some or all the data it represents.
+* Instead of a plain object, define ThingyRecord to be an interface. Provide a
+ "simple" and "lazy" implementations, called SimpleThingyRecord and
+ LazyThingyRecord. LazyThingyRecord knows about some lower level storage
+ interface, like a LoadBalancer, and uses it to load information on demand.
+* Any direct instantiation of a ThingyRecord would use the SimpleThingyRecord
+ implementation.
+* SqlThingyStore however creates instances of LazyThingyRecord, and injects
+ whatever storage layer service LazyThingyRecord needs to perform lazy loading.
+
+
diff --git a/includes/Collation.php b/includes/Collation.php
deleted file mode 100644
index 7a3623d7d7..0000000000
--- a/includes/Collation.php
+++ /dev/null
@@ -1,648 +0,0 @@
-lang = Language::factory( 'en' );
- }
-
- function getSortKey( $string ) {
- return $this->lang->uc( $string );
- }
-
- function getFirstLetter( $string ) {
- if ( $string[0] == "\0" ) {
- $string = substr( $string, 1 );
- }
- return $this->lang->ucfirst( $this->lang->firstChar( $string ) );
- }
-}
-
-/**
- * Collation class that's essentially a no-op.
- *
- * Does sorting based on binary value of the string.
- * Like how things were pre 1.17.
- */
-class IdentityCollation extends Collation {
-
- function getSortKey( $string ) {
- return $string;
- }
-
- function getFirstLetter( $string ) {
- global $wgContLang;
- // Copied from UppercaseCollation.
- // I'm kind of unclear on when this could happen...
- if ( $string[0] == "\0" ) {
- $string = substr( $string, 1 );
- }
- return $wgContLang->firstChar( $string );
- }
-}
-
-class IcuCollation extends Collation {
- const FIRST_LETTER_VERSION = 2;
-
- /** @var Collator */
- private $primaryCollator;
-
- /** @var Collator */
- private $mainCollator;
-
- /** @var string */
- private $locale;
-
- /** @var Language */
- protected $digitTransformLanguage;
-
- /** @var array */
- private $firstLetterData;
-
- /**
- * Unified CJK blocks.
- *
- * The same definition of a CJK block must be used for both Collation and
- * generateCollationData.php. These blocks are omitted from the first
- * letter data, as an optimisation measure and because the default UCA table
- * is pretty useless for sorting Chinese text anyway. Japanese and Korean
- * blocks are not included here, because they are smaller and more useful.
- */
- private static $cjkBlocks = [
- [ 0x2E80, 0x2EFF ], // CJK Radicals Supplement
- [ 0x2F00, 0x2FDF ], // Kangxi Radicals
- [ 0x2FF0, 0x2FFF ], // Ideographic Description Characters
- [ 0x3000, 0x303F ], // CJK Symbols and Punctuation
- [ 0x31C0, 0x31EF ], // CJK Strokes
- [ 0x3200, 0x32FF ], // Enclosed CJK Letters and Months
- [ 0x3300, 0x33FF ], // CJK Compatibility
- [ 0x3400, 0x4DBF ], // CJK Unified Ideographs Extension A
- [ 0x4E00, 0x9FFF ], // CJK Unified Ideographs
- [ 0xF900, 0xFAFF ], // CJK Compatibility Ideographs
- [ 0xFE30, 0xFE4F ], // CJK Compatibility Forms
- [ 0x20000, 0x2A6DF ], // CJK Unified Ideographs Extension B
- [ 0x2A700, 0x2B73F ], // CJK Unified Ideographs Extension C
- [ 0x2B740, 0x2B81F ], // CJK Unified Ideographs Extension D
- [ 0x2F800, 0x2FA1F ], // CJK Compatibility Ideographs Supplement
- ];
-
- /**
- * Additional characters (or character groups) to be considered separate
- * letters for given languages, or to be removed from the list of such
- * letters (denoted by keys starting with '-').
- *
- * These are additions to (or subtractions from) the data stored in the
- * first-letters-root.ser file (which among others includes full basic latin,
- * cyrillic and greek alphabets).
- *
- * "Separate letter" is a letter that would have a separate heading/section
- * for it in a dictionary or a phone book in this language. This data isn't
- * used for sorting (the ICU library handles that), only for deciding which
- * characters (or character groups) to use as headings.
- *
- * Initially generated based on the primary level of Unicode collation
- * tailorings available at http://developer.mimer.com/charts/tailorings.htm ,
- * later modified.
- *
- * Empty arrays are intended; this signifies that the data for the language is
- * available and that there are, in fact, no additional letters to consider.
- */
- private static $tailoringFirstLetters = [
- // Verified by native speakers
- 'be' => [ "Ð" ],
- 'be-tarask' => [ "Ð" ],
- 'cy' => [ "Ch", "Dd", "Ff", "Ng", "Ll", "Ph", "Rh", "Th" ],
- 'en' => [],
- 'fa' => [ "Ø¢", "Ø¡", "Ù" ],
- 'fi' => [ "Ã
", "Ã", "Ã" ],
- 'fr' => [],
- 'hu' => [ "Cs", "Dz", "Dzs", "Gy", "Ly", "Ny", "Ã", "Sz", "Ty", "Ã", "Zs" ],
- 'is' => [ "Ã", "Ã", "Ã", "Ã", "Ã", "Ã", "Ã", "Ã", "Ã", "Ã", "Ã
" ],
- 'it' => [],
- 'lv' => [ "Ä", "Ä¢", "Ķ", "Ä»", "Å
", "Š", "Ž" ],
- 'pl' => [ "Ä", "Ä", "Ä", "Å", "Å", "Ã", "Å", "Ź", "Å»" ],
- 'pt' => [],
- 'ru' => [],
- 'sv' => [ "Ã
", "Ã", "Ã" ],
- 'sv@collation=standard' => [ "Ã
", "Ã", "Ã" ],
- 'uk' => [ "Ò", "Ь" ],
- 'vi' => [ "Ä", "Ã", "Ä", "Ã", "Ã", "Æ ", "Ư" ],
- // Not verified, but likely correct
- 'af' => [],
- 'ast' => [ "Ch", "Ll", "Ã" ],
- 'az' => [ "Ã", "Æ", "Ä", "Ä°", "Ã", "Å", "Ã" ],
- 'bg' => [],
- 'br' => [ "Ch", "C'h" ],
- 'bs' => [ "Ä", "Ä", "Dž", "Ä", "Lj", "Nj", "Å ", "Ž" ],
- 'ca' => [],
- 'co' => [],
- 'cs' => [ "Ä", "Ch", "Å", "Å ", "Ž" ],
- 'da' => [ "Ã", "Ã", "Ã
" ],
- 'de' => [],
- 'dsb' => [ "Ä", "Ä", "Dź", "Ä", "Ch", "Å", "Å", "Å", "Å ", "Å", "Ž", "Ź" ],
- 'el' => [],
- 'eo' => [ "Ä", "Ä", "Ĥ", "Ä´", "Å", "Ŭ" ],
- 'es' => [ "Ã" ],
- 'et' => [ "Å ", "Ž", "Ã", "Ã", "Ã", "Ã", "W" ], // added W for CollationEt (xx-uca-et)
- 'eu' => [ "Ã" ],
- 'fo' => [ "Ã", "Ã", "Ã", "Ã", "Ã", "Ã", "Ã", "Ã", "Ã
" ],
- 'fur' => [ "Ã", "Ã", "Ã", "Ã", "Ã", "Ã", "Ã" ],
- 'fy' => [],
- 'ga' => [],
- 'gd' => [],
- 'gl' => [ "Ch", "Ll", "Ã" ],
- 'hr' => [ "Ä", "Ä", "Dž", "Ä", "Lj", "Nj", "Å ", "Ž" ],
- 'hsb' => [ "Ä", "Dź", "Ä", "Ch", "Å", "Å", "Å", "Å ", "Ä", "Ž" ],
- 'kk' => [ "Ò®", "Ð" ],
- 'kl' => [ "Ã", "Ã", "Ã
" ],
- 'ku' => [ "Ã", "Ã", "Ã", "Å", "Ã" ],
- 'ky' => [ "Ð" ],
- 'la' => [],
- 'lb' => [],
- 'lt' => [ "Ä", "Å ", "Ž" ],
- 'mk' => [],
- 'mo' => [ "Ä", "Ã", "Ã", "Å", "Å¢" ],
- 'mt' => [ "Ä", "Ä ", "Għ", "Ħ", "Å»" ],
- 'nl' => [],
- 'no' => [ "Ã", "Ã", "Ã
" ],
- 'oc' => [],
- 'rm' => [],
- 'ro' => [ "Ä", "Ã", "Ã", "Å", "Å¢" ],
- 'rup' => [ "Ä", "Ã", "Ã", "Ľ", "Å", "Å", "Å¢" ],
- 'sco' => [],
- 'sk' => [ "Ã", "Ä", "Ch", "Ã", "Å ", "Ž" ],
- 'sl' => [ "Ä", "Å ", "Ž" ],
- 'smn' => [ "Ã", "Ä", "Ä", "Å", "Å ", "Ŧ", "Ž", "Ã", "Ã", "Ã
", "Ã", "Ã" ],
- 'sq' => [ "Ã", "Dh", "Ã", "Gj", "Ll", "Nj", "Rr", "Sh", "Th", "Xh", "Zh" ],
- 'sr' => [],
- 'tk' => [ "Ã", "Ã", "Ž", "Å", "Ã", "Å", "Ã", "Ã" ],
- 'tl' => [ "Ã", "Ng" ],
- 'tr' => [ "Ã", "Ä", "Ä°", "Ã", "Å", "Ã" ],
- 'tt' => [ "Ó", "Ó¨", "Ò®", "Ò", "Ò¢", "Òº" ],
- 'uz' => [ "Ch", "G'", "Ng", "O'", "Sh" ],
- ];
-
- const RECORD_LENGTH = 14;
-
- function __construct( $locale ) {
- if ( !extension_loaded( 'intl' ) ) {
- throw new MWException( 'An ICU collation was requested, ' .
- 'but the intl extension is not available.' );
- }
-
- $this->locale = $locale;
- // Drop everything after the '@' in locale's name
- $localeParts = explode( '@', $locale );
- $this->digitTransformLanguage = Language::factory( $locale === 'root' ? 'en' : $localeParts[0] );
-
- $this->mainCollator = Collator::create( $locale );
- if ( !$this->mainCollator ) {
- throw new MWException( "Invalid ICU locale specified for collation: $locale" );
- }
-
- $this->primaryCollator = Collator::create( $locale );
- $this->primaryCollator->setStrength( Collator::PRIMARY );
- }
-
- function getSortKey( $string ) {
- // intl extension produces non null-terminated
- // strings. Appending '' fixes it so that it doesn't generate
- // a warning on each access in debug php.
- MediaWiki\suppressWarnings();
- $key = $this->mainCollator->getSortKey( $string ) . '';
- MediaWiki\restoreWarnings();
- return $key;
- }
-
- function getPrimarySortKey( $string ) {
- MediaWiki\suppressWarnings();
- $key = $this->primaryCollator->getSortKey( $string ) . '';
- MediaWiki\restoreWarnings();
- return $key;
- }
-
- function getFirstLetter( $string ) {
- $string = strval( $string );
- if ( $string === '' ) {
- return '';
- }
-
- // Check for CJK
- $firstChar = mb_substr( $string, 0, 1, 'UTF-8' );
- if ( ord( $firstChar ) > 0x7f && self::isCjk( UtfNormal\Utils::utf8ToCodepoint( $firstChar ) ) ) {
- return $firstChar;
- }
-
- $sortKey = $this->getPrimarySortKey( $string );
-
- // Do a binary search to find the correct letter to sort under
- $min = ArrayUtils::findLowerBound(
- [ $this, 'getSortKeyByLetterIndex' ],
- $this->getFirstLetterCount(),
- 'strcmp',
- $sortKey );
-
- if ( $min === false ) {
- // Before the first letter
- return '';
- }
- return $this->getLetterByIndex( $min );
- }
-
- function getFirstLetterData() {
- if ( $this->firstLetterData !== null ) {
- return $this->firstLetterData;
- }
-
- $cache = wfGetCache( CACHE_ANYTHING );
- $cacheKey = wfMemcKey(
- 'first-letters',
- $this->locale,
- $this->digitTransformLanguage->getCode(),
- self::getICUVersion()
- );
- $cacheEntry = $cache->get( $cacheKey );
-
- if ( $cacheEntry && isset( $cacheEntry['version'] )
- && $cacheEntry['version'] == self::FIRST_LETTER_VERSION
- ) {
- $this->firstLetterData = $cacheEntry;
- return $this->firstLetterData;
- }
-
- // Generate data from serialized data file
-
- if ( isset( self::$tailoringFirstLetters[$this->locale] ) ) {
- $letters = wfGetPrecompiledData( "first-letters-root.ser" );
- // Append additional characters
- $letters = array_merge( $letters, self::$tailoringFirstLetters[$this->locale] );
- // Remove unnecessary ones, if any
- if ( isset( self::$tailoringFirstLetters['-' . $this->locale] ) ) {
- $letters = array_diff( $letters, self::$tailoringFirstLetters['-' . $this->locale] );
- }
- // Apply digit transforms
- $digits = [ '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' ];
- $letters = array_diff( $letters, $digits );
- foreach ( $digits as $digit ) {
- $letters[] = $this->digitTransformLanguage->formatNum( $digit, true );
- }
- } else {
- $letters = wfGetPrecompiledData( "first-letters-{$this->locale}.ser" );
- if ( $letters === false ) {
- throw new MWException( "MediaWiki does not support ICU locale " .
- "\"{$this->locale}\"" );
- }
- }
-
- /* Sort the letters.
- *
- * It's impossible to have the precompiled data file properly sorted,
- * because the sort order changes depending on ICU version. If the
- * array is not properly sorted, the binary search will return random
- * results.
- *
- * We also take this opportunity to remove primary collisions.
- */
- $letterMap = [];
- foreach ( $letters as $letter ) {
- $key = $this->getPrimarySortKey( $letter );
- if ( isset( $letterMap[$key] ) ) {
- // Primary collision
- // Keep whichever one sorts first in the main collator
- if ( $this->mainCollator->compare( $letter, $letterMap[$key] ) < 0 ) {
- $letterMap[$key] = $letter;
- }
- } else {
- $letterMap[$key] = $letter;
- }
- }
- ksort( $letterMap, SORT_STRING );
-
- /* Remove duplicate prefixes. Basically if something has a sortkey
- * which is a prefix of some other sortkey, then it is an
- * expansion and probably should not be considered a section
- * header.
- *
- * For example 'þ' is sometimes sorted as if it is the letters
- * 'th'. Other times it is its own primary element. Another
- * example is 'â¨'. Sometimes its a currency symbol. Sometimes it
- * is an 'R' followed by an 's'.
- *
- * Additionally an expanded element should always sort directly
- * after its first element due to they way sortkeys work.
- *
- * UCA sortkey elements are of variable length but no collation
- * element should be a prefix of some other element, so I think
- * this is safe. See:
- * - https://ssl.icu-project.org/repos/icu/icuhtml/trunk/design/collation/ICU_collation_design.htm
- * - http://site.icu-project.org/design/collation/uca-weight-allocation
- *
- * Additionally, there is something called primary compression to
- * worry about. Basically, if you have two primary elements that
- * are more than one byte and both start with the same byte then
- * the first byte is dropped on the second primary. Additionally
- * either \x03 or \xFF may be added to mean that the next primary
- * does not start with the first byte of the first primary.
- *
- * This shouldn't matter much, as the first primary is not
- * changed, and that is what we are comparing against.
- *
- * tl;dr: This makes some assumptions about how icu implements
- * collations. It seems incredibly unlikely these assumptions
- * will change, but nonetheless they are assumptions.
- */
-
- $prev = false;
- $duplicatePrefixes = [];
- foreach ( $letterMap as $key => $value ) {
- // Remove terminator byte. Otherwise the prefix
- // comparison will get hung up on that.
- $trimmedKey = rtrim( $key, "\0" );
- if ( $prev === false || $prev === '' ) {
- $prev = $trimmedKey;
- // We don't yet have a collation element
- // to compare against, so continue.
- continue;
- }
-
- // Due to the fact the array is sorted, we only have
- // to compare with the element directly previous
- // to the current element (skipping expansions).
- // An element "X" will always sort directly
- // before "XZ" (Unless we have "XY", but we
- // do not update $prev in that case).
- if ( substr( $trimmedKey, 0, strlen( $prev ) ) === $prev ) {
- $duplicatePrefixes[] = $key;
- // If this is an expansion, we don't want to
- // compare the next element to this element,
- // but to what is currently $prev
- continue;
- }
- $prev = $trimmedKey;
- }
- foreach ( $duplicatePrefixes as $badKey ) {
- wfDebug( "Removing '{$letterMap[$badKey]}' from first letters.\n" );
- unset( $letterMap[$badKey] );
- // This code assumes that unsetting does not change sort order.
- }
- $data = [
- 'chars' => array_values( $letterMap ),
- 'keys' => array_keys( $letterMap ),
- 'version' => self::FIRST_LETTER_VERSION,
- ];
-
- // Reduce memory usage before caching
- unset( $letterMap );
-
- // Save to cache
- $this->firstLetterData = $data;
- $cache->set( $cacheKey, $data, $cache::TTL_WEEK );
- return $data;
- }
-
- function getLetterByIndex( $index ) {
- if ( $this->firstLetterData === null ) {
- $this->getFirstLetterData();
- }
- return $this->firstLetterData['chars'][$index];
- }
-
- function getSortKeyByLetterIndex( $index ) {
- if ( $this->firstLetterData === null ) {
- $this->getFirstLetterData();
- }
- return $this->firstLetterData['keys'][$index];
- }
-
- function getFirstLetterCount() {
- if ( $this->firstLetterData === null ) {
- $this->getFirstLetterData();
- }
- return count( $this->firstLetterData['chars'] );
- }
-
- static function isCjk( $codepoint ) {
- foreach ( self::$cjkBlocks as $block ) {
- if ( $codepoint >= $block[0] && $codepoint <= $block[1] ) {
- return true;
- }
- }
- return false;
- }
-
- /**
- * Return the version of ICU library used by PHP's intl extension,
- * or false when the extension is not installed of the version
- * can't be determined.
- *
- * The constant INTL_ICU_VERSION this function refers to isn't really
- * documented. It is available since PHP 5.3.7 (see PHP bug 54561).
- * This function will return false on older PHPs.
- *
- * @since 1.21
- * @return string|bool
- */
- static function getICUVersion() {
- return defined( 'INTL_ICU_VERSION' ) ? INTL_ICU_VERSION : false;
- }
-
- /**
- * Return the version of Unicode appropriate for the version of ICU library
- * currently in use, or false when it can't be determined.
- *
- * @since 1.21
- * @return string|bool
- */
- static function getUnicodeVersionForICU() {
- $icuVersion = IcuCollation::getICUVersion();
- if ( !$icuVersion ) {
- return false;
- }
-
- $versionPrefix = substr( $icuVersion, 0, 3 );
- // Source: http://site.icu-project.org/download
- $map = [
- '50.' => '6.2',
- '49.' => '6.1',
- '4.8' => '6.0',
- '4.6' => '6.0',
- '4.4' => '5.2',
- '4.2' => '5.1',
- '4.0' => '5.1',
- '3.8' => '5.0',
- '3.6' => '5.0',
- '3.4' => '4.1',
- ];
-
- if ( isset( $map[$versionPrefix] ) ) {
- return $map[$versionPrefix];
- } else {
- return false;
- }
- }
-}
-
-/**
- * Workaround for the lack of support of Sorani Kurdish / Central Kurdish language ('ckb') in ICU.
- *
- * Uses the same collation rules as Persian / Farsi ('fa'), but different characters for digits.
- */
-class CollationCkb extends IcuCollation {
- function __construct() {
- // This will set $locale and collators, which affect the actual sorting order
- parent::__construct( 'fa' );
- // Override the 'fa' language set by parent constructor, which affects #getFirstLetterData()
- $this->digitTransformLanguage = Language::factory( 'ckb' );
- }
-}
-
-/**
- * Workaround for incorrect collation of Estonian language ('et') in ICU (bug 54168).
- *
- * 'W' and 'V' should not be considered the same letter for the purposes of collation in modern
- * Estonian. We work around this by replacing 'W' and 'w' with 'á´¡' U+1D21 'LATIN LETTER SMALL
- * CAPITAL W' for sortkey generation, which is collated like 'W' and is not tailored to have the
- * same primary weight as 'V' in Estonian.
- */
-class CollationEt extends IcuCollation {
- function __construct() {
- parent::__construct( 'et' );
- }
-
- private static function mangle( $string ) {
- return str_replace(
- [ 'w', 'W' ],
- 'á´¡', // U+1D21 'LATIN LETTER SMALL CAPITAL W'
- $string
- );
- }
-
- private static function unmangle( $string ) {
- // Casing data is lostâ¦
- return str_replace(
- 'á´¡', // U+1D21 'LATIN LETTER SMALL CAPITAL W'
- 'W',
- $string
- );
- }
-
- function getSortKey( $string ) {
- return parent::getSortKey( self::mangle( $string ) );
- }
-
- function getFirstLetter( $string ) {
- return self::unmangle( parent::getFirstLetter( self::mangle( $string ) ) );
- }
-}
diff --git a/includes/DefaultSettings.php b/includes/DefaultSettings.php
index 63d04c95ba..ccfb10afd4 100644
--- a/includes/DefaultSettings.php
+++ b/includes/DefaultSettings.php
@@ -585,10 +585,9 @@ $wgLockManagers = [];
* Requires PHP's Exif extension: http://www.php.net/manual/en/ref.exif.php
*
* @note FOR WINDOWS USERS:
- * To enable Exif functions, add the following lines to the "Windows
+ * To enable Exif functions, add the following line to the "Windows
* extensions" section of php.ini:
* @code{.ini}
- * extension=extensions/php_mbstring.dll
* extension=extensions/php_exif.dll
* @endcode
*/
@@ -2170,7 +2169,7 @@ $wgLanguageConverterCacheType = CACHE_ANYTHING;
* given, giving a callable function which will generate a suitable cache object.
*/
$wgObjectCaches = [
- CACHE_NONE => [ 'class' => 'EmptyBagOStuff' ],
+ CACHE_NONE => [ 'class' => 'EmptyBagOStuff', 'reportDupes' => false ],
CACHE_DB => [ 'class' => 'SqlBagOStuff', 'loggroup' => 'SQLBagOStuff' ],
CACHE_ANYTHING => [ 'factory' => 'ObjectCache::newAnything' ],
@@ -2190,12 +2189,12 @@ $wgObjectCaches = [
'loggroup' => 'SQLBagOStuff'
],
- 'apc' => [ 'class' => 'APCBagOStuff' ],
- 'xcache' => [ 'class' => 'XCacheBagOStuff' ],
- 'wincache' => [ 'class' => 'WinCacheBagOStuff' ],
+ 'apc' => [ 'class' => 'APCBagOStuff', 'reportDupes' => false ],
+ 'xcache' => [ 'class' => 'XCacheBagOStuff', 'reportDupes' => false ],
+ 'wincache' => [ 'class' => 'WinCacheBagOStuff', 'reportDupes' => false ],
'memcached-php' => [ 'class' => 'MemcachedPhpBagOStuff', 'loggroup' => 'memcached' ],
'memcached-pecl' => [ 'class' => 'MemcachedPeclBagOStuff', 'loggroup' => 'memcached' ],
- 'hash' => [ 'class' => 'HashBagOStuff' ],
+ 'hash' => [ 'class' => 'HashBagOStuff', 'reportDupes' => false ],
];
/**
@@ -2224,27 +2223,24 @@ $wgMainWANCache = false;
*
* The format is an associative array where the key is a cache identifier, and
* the value is an associative array of parameters. The "cacheId" parameter is
- * a cache identifier from $wgObjectCaches. The "relayerConfig" parameter is an
- * array used to construct an EventRelayer object. The "pool" parameter is a
- * string that is used as a PubSub channel prefix. The "loggroup" parameter
- * controls where log events are sent.
+ * a cache identifier from $wgObjectCaches. The "channels" parameter is a map of
+ * actions ('purge') to PubSub channels defined in $wgEventRelayerConfig.
+ * The "loggroup" parameter controls where log events are sent.
*
* @since 1.26
*/
$wgWANObjectCaches = [
CACHE_NONE => [
- 'class' => 'WANObjectCache',
- 'cacheId' => CACHE_NONE,
- 'pool' => 'mediawiki-main-none',
- 'relayerConfig' => [ 'class' => 'EventRelayerNull' ]
+ 'class' => 'WANObjectCache',
+ 'cacheId' => CACHE_NONE,
+ 'channels' => []
]
/* Example of a simple single data-center cache:
- 'memcached-php' => array(
- 'class' => 'WANObjectCache',
- 'cacheId' => 'memcached-php',
- 'pool' => 'mediawiki-main-memcached',
- 'relayerConfig' => array( 'class' => 'EventRelayerNull' )
- )
+ 'memcached-php' => [
+ 'class' => 'WANObjectCache',
+ 'cacheId' => 'memcached-php',
+ 'channels' => [ 'purge' => 'wancache-main-memcached-purge' ]
+ ]
*/
];
@@ -2288,7 +2284,7 @@ $wgSessionsInObjectCache = true;
$wgObjectCacheSessionExpiry = 3600;
/**
- * @deprecated since 1.27, MediaWiki\\Session\\SessionManager doesn't use PHP session storage.
+ * @deprecated since 1.27, MediaWiki\Session\SessionManager doesn't use PHP session storage.
*/
$wgSessionHandler = null;
@@ -2590,6 +2586,13 @@ $wgCdnMaxageLagged = 30;
*/
$wgCdnReboundPurgeDelay = 0;
+/**
+ * Cache timeout for the CDN when a response is known to be wrong or incomplete (due to load)
+ * @see $wgSquidMaxage
+ * @since 1.27
+ */
+$wgCdnMaxageSubstitute = 60;
+
/**
* Default maximum age for raw CSS/JS accesses
*
@@ -3562,7 +3565,7 @@ $wgResourceLoaderMinifierMaxLineLength = 1000;
*
* @deprecated since 1.26: Always declare dependencies.
*/
-$wgIncludeLegacyJavaScript = true;
+$wgIncludeLegacyJavaScript = false;
/**
* Whether or not to assign configuration variables to the global window object.
@@ -4563,6 +4566,7 @@ $wgDefaultUserOptions = [
'watchcreations' => 1,
'watchdefault' => 1,
'watchdeletion' => 0,
+ 'watchuploads' => 1,
'watchlistdays' => 3.0,
'watchlisthideanons' => 0,
'watchlisthidebots' => 0,
@@ -4631,15 +4635,15 @@ $wgAuthenticationTokenVersion = null;
* @since 1.27
*/
$wgSessionProviders = [
- 'MediaWiki\\Session\\CookieSessionProvider' => [
- 'class' => 'MediaWiki\\Session\\CookieSessionProvider',
+ MediaWiki\Session\CookieSessionProvider::class => [
+ 'class' => MediaWiki\Session\CookieSessionProvider::class,
'args' => [ [
'priority' => 30,
'callUserSetCookiesHook' => true,
] ],
],
- 'MediaWiki\\Session\\BotPasswordSessionProvider' => [
- 'class' => 'MediaWiki\\Session\\BotPasswordSessionProvider',
+ MediaWiki\Session\BotPasswordSessionProvider::class => [
+ 'class' => MediaWiki\Session\BotPasswordSessionProvider::class,
'args' => [ [
'priority' => 40,
] ],
@@ -5896,7 +5900,7 @@ $wgStatsdServer = false;
/**
* Prefix for metric names sent to $wgStatsdServer.
*
- * @see RequestContext::getStats
+ * @see MediaWikiServices::getStatsdDataFactory
* @see BufferingStatsdDataFactory
* @since 1.25
*/
@@ -6210,14 +6214,15 @@ $wgGitBin = '/usr/bin/git';
* %h will be replaced by the short SHA-1 (7 first chars) and %H by the
* full SHA-1 of the HEAD revision.
* %r will be replaced with a URL-encoded version of $1.
+ * %R will be replaced with $1 and no URL-encoding
*
* @since 1.20
*/
$wgGitRepositoryViewers = [
'https://(?:[a-z0-9_]+@)?gerrit.wikimedia.org/r/(?:p/)?(.*)' =>
- 'https://git.wikimedia.org/tree/%r/%H',
+ 'https://phabricator.wikimedia.org/r/revision/%R;%H',
'ssh://(?:[a-z0-9_]+@)?gerrit.wikimedia.org:29418/(.*)' =>
- 'https://git.wikimedia.org/tree/%r/%H',
+ 'https://phabricator.wikimedia.org/r/revision/%R;%H',
];
/** @} */ # End of maintenance }
@@ -6479,6 +6484,10 @@ $wgUnwatchedPageThreshold = false;
* 'legend' => 'legend-msg',
* // optional (defaults to 'flag'), CSS class to put on changes lists rows
* 'class' => 'css-class',
+ * // optional (defaults to 'any'), how top-level flag is determined. 'any'
+ * // will set the top-level flag if any line contains the flag, 'all' will
+ * // only be set if all lines contain the flag.
+ * 'grouping' => 'any',
* );
* @endcode
*
@@ -6489,23 +6498,27 @@ $wgRecentChangesFlags = [
'letter' => 'newpageletter',
'title' => 'recentchanges-label-newpage',
'legend' => 'recentchanges-legend-newpage',
+ 'grouping' => 'any',
],
'minor' => [
'letter' => 'minoreditletter',
'title' => 'recentchanges-label-minor',
'legend' => 'recentchanges-legend-minor',
'class' => 'minoredit',
+ 'grouping' => 'all',
],
'bot' => [
'letter' => 'boteditletter',
'title' => 'recentchanges-label-bot',
'legend' => 'recentchanges-legend-bot',
'class' => 'botedit',
+ 'grouping' => 'all',
],
'unpatrolled' => [
'letter' => 'unpatrolledletter',
'title' => 'recentchanges-label-unpatrolled',
'legend' => 'recentchanges-legend-unpatrolled',
+ 'grouping' => 'any',
],
];
@@ -6545,12 +6558,6 @@ $wgRightsText = null;
*/
$wgRightsIcon = null;
-/**
- * Set this to some HTML to override the rights icon with an arbitrary logo
- * @deprecated since 1.18 Use $wgFooterIcons['copyright']['copyright']
- */
-$wgCopyrightIcon = null;
-
/**
* Set this to true if you want detailed copyright information forms on Upload.
*/
@@ -6883,6 +6890,21 @@ $wgAuth = null;
*/
$wgHooks = [];
+/**
+ * List of service wiring files to be loaded by the default instance of MediaWikiServices.
+ * Each file listed here is expected to return an associative array mapping service names
+ * to instantiator functions. Extensions may add wiring files to define their own services.
+ * However, this cannot be used to replace existing services - use the MediaWikiServices
+ * hook for that.
+ *
+ * @see MediaWikiServices
+ * @see ServiceContainer::loadWiringFiles() for details on loading service instantiator functions.
+ * @see docs/injection.txt for an overview of dependency injection in MediaWiki.
+ */
+$wgServiceWiringFiles = [
+ __DIR__ . '/ServiceWiring.php'
+];
+
/**
* Maps jobs to their handling classes; extensions
* can add to this to provide custom jobs
@@ -7190,6 +7212,7 @@ $wgLogActionsHandlers = [
'move/move' => 'MoveLogFormatter',
'move/move_redir' => 'MoveLogFormatter',
'patrol/patrol' => 'PatrolLogFormatter',
+ 'patrol/autopatrol' => 'PatrolLogFormatter',
'protect/modify' => 'ProtectLogFormatter',
'protect/move_prot' => 'ProtectLogFormatter',
'protect/protect' => 'ProtectLogFormatter',
@@ -7207,6 +7230,77 @@ $wgLogActionsHandlers = [
'upload/upload' => 'UploadLogFormatter',
];
+/**
+ * List of log types that can be filtered by action types
+ *
+ * To each action is associated the list of log_action
+ * subtypes to search for, usually one, but not necessarily so
+ * Extensions may append to this array
+ * @since 1.27
+ */
+$wgActionFilteredLogs = [
+ 'block' => [
+ 'block' => [ 'block' ],
+ 'reblock' => [ 'reblock' ],
+ 'unblock' => [ 'unblock' ],
+ ],
+ 'contentmodel' => [
+ 'change' => [ 'change' ],
+ 'new' => [ 'new' ],
+ ],
+ 'delete' => [
+ 'delete' => [ 'delete' ],
+ 'restore' => [ 'restore' ],
+ 'event' => [ 'event' ],
+ 'revision' => [ 'revision' ],
+ ],
+ 'import' => [
+ 'interwiki' => [ 'interwiki' ],
+ 'upload' => [ 'upload' ],
+ ],
+ 'managetags' => [
+ 'create' => [ 'create' ],
+ 'delete' => [ 'delete' ],
+ 'activate' => [ 'activate' ],
+ 'deactivate' => [ 'deactivate' ],
+ ],
+ 'move' => [
+ 'move' => [ 'move' ],
+ 'move_redir' => [ 'move_redir' ],
+ ],
+ 'newusers' => [
+ 'create' => [ 'create', 'newusers' ],
+ 'create2' => ['create2' ],
+ 'autocreate' => [ 'autocreate' ],
+ 'byemail' => [ 'byemail' ],
+ ],
+ 'patrol' => [
+ 'patrol' => [ 'patrol' ],
+ 'autopatrol' => [ 'autopatrol' ],
+ ],
+ 'protect' => [
+ 'protect' => [ 'protect' ],
+ 'modify' => [ 'modify' ],
+ 'unprotect' => [ 'unprotect' ],
+ 'move_prot' => ['move_prot'],
+ ],
+ 'rights' => [
+ 'rights' => [ 'rights' ],
+ 'autopromote' => [ 'autopromote' ],
+ ],
+ 'suppress' => [
+ 'event' => [ 'event' ],
+ 'revision' => [ 'revision' ],
+ 'delete' => [ 'delete' ],
+ 'block' => [ 'block' ],
+ 'reblock' => [ 'reblock' ],
+ ],
+ 'upload' => [
+ 'upload' => [ 'upload' ],
+ 'overwrite' => [ 'overwrite' ],
+ ],
+];
+
/**
* Maintain a log of newusers at Log/newusers?
*/
@@ -7963,7 +8057,7 @@ $wgPopularPasswordFile = __DIR__ . '/../serialized/commonpasswords.cdb';
$wgMaxUserDBWriteDuration = false;
/**
- * Mapping of event channels to EventRelayer configuration.
+ * Mapping of event channels (or channel categories) to EventRelayer configuration.
*
* By setting up a PubSub system (like Kafka) and enabling a corresponding EventRelayer class
* that uses it, MediaWiki can broadcast events to all subscribers. Certain features like WAN
@@ -7971,7 +8065,13 @@ $wgMaxUserDBWriteDuration = false;
* subscribe to the channel and take actions based on the events. For example, a local daemon
* can run on each CDN cache node and perfom local purges based on the URL purge channel events.
*
- * The 'default' channel is for all channels without an explicit entry here.
+ * Some extensions may want to use "channel categories" so that different channels can also share
+ * the same custom relayer instance (e.g. when it's likely to be overriden). They can use
+ * EventRelayerGroup::getRelayer() based on the category but call notify() on various different
+ * actual channels. One reason for this would be that some system have very different performance
+ * vs durability needs, so one system (e.g. Kafka) may not be suitable for all uses.
+ *
+ * The 'default' key is for all channels (or channel categories) without an explicit entry here.
*
* @since 1.27
*/
diff --git a/includes/DummyLinker.php b/includes/DummyLinker.php
new file mode 100644
index 0000000000..45535ceee5
--- /dev/null
+++ b/includes/DummyLinker.php
@@ -0,0 +1,517 @@
+section != '' ) {
# Try to get a section anchor from the section source, redirect
# to edited section if header found.
- # XXX: Might be better to integrate this into Article::replaceSection
+ # XXX: Might be better to integrate this into Article::replaceSectionAtRev
# for duplicate heading checking and maybe parsing.
$hasmatch = preg_match( "/^ *([=]{1,6})(.*?)(\\1) *\\n/i", $this->textbox1, $matches );
# We can't deal with anchors, includes, html etc in the header for now,
diff --git a/includes/EventRelayerGroup.php b/includes/EventRelayerGroup.php
index 9dfac795a6..9360693a4b 100644
--- a/includes/EventRelayerGroup.php
+++ b/includes/EventRelayerGroup.php
@@ -1,4 +1,6 @@
configByChannel = $config->get( 'EventRelayerConfig' );
+ public function __construct( array $config ) {
+ $this->configByChannel = $config;
}
/**
+ * @deprecated since 1.27 Use MediaWikiServices::getInstance()->getEventRelayerGroup()
* @return EventRelayerGroup
*/
public static function singleton() {
- if ( !self::$instance ) {
- self::$instance = new self( RequestContext::getMain()->getConfig() );
- }
-
- return self::$instance;
+ return MediaWikiServices::getInstance()->getEventRelayerGroup();
}
/**
diff --git a/includes/Fallback.php b/includes/Fallback.php
deleted file mode 100644
index 4c19dca267..0000000000
--- a/includes/Fallback.php
+++ /dev/null
@@ -1,172 +0,0 @@
- 0 ) {
- if ( $splitPos > 256 ) {
- // Optimize large string offsets by skipping ahead N bytes.
- // This will cut out most of our slow time on Latin-based text,
- // and 1/2 to 1/3 on East European and Asian scripts.
- $bytePos = $splitPos;
- while ( $bytePos < $byteLen && $str[$bytePos] >= "\x80" && $str[$bytePos] < "\xc0" ) {
- ++$bytePos;
- }
- $charPos = mb_strlen( substr( $str, 0, $bytePos ) );
- } else {
- $charPos = 0;
- $bytePos = 0;
- }
-
- while ( $charPos++ < $splitPos ) {
- ++$bytePos;
- // Move past any tail bytes
- while ( $bytePos < $byteLen && $str[$bytePos] >= "\x80" && $str[$bytePos] < "\xc0" ) {
- ++$bytePos;
- }
- }
- } else {
- $splitPosX = $splitPos + 1;
- $charPos = 0; // relative to end of string; we don't care about the actual char position here
- $bytePos = $byteLen;
- while ( $bytePos > 0 && $charPos-- >= $splitPosX ) {
- --$bytePos;
- // Move past any tail bytes
- while ( $bytePos > 0 && $str[$bytePos] >= "\x80" && $str[$bytePos] < "\xc0" ) {
- --$bytePos;
- }
- }
- }
-
- return $bytePos;
- }
-
- /**
- * Fallback implementation of mb_strlen, hardcoded to UTF-8.
- * @param string $str
- * @param string $enc Optional encoding; ignored
- * @return int
- */
- public static function mb_strlen( $str, $enc = '' ) {
- $counts = count_chars( $str );
- $total = 0;
-
- // Count ASCII bytes
- for ( $i = 0; $i < 0x80; $i++ ) {
- $total += $counts[$i];
- }
-
- // Count multibyte sequence heads
- for ( $i = 0xc0; $i < 0xff; $i++ ) {
- $total += $counts[$i];
- }
- return $total;
- }
-
- /**
- * Fallback implementation of mb_strpos, hardcoded to UTF-8.
- * @param string $haystack
- * @param string $needle
- * @param string $offset Optional start position
- * @param string $encoding Optional encoding; ignored
- * @return int
- */
- public static function mb_strpos( $haystack, $needle, $offset = 0, $encoding = '' ) {
- $needle = preg_quote( $needle, '/' );
-
- $ar = [];
- preg_match( '/' . $needle . '/u', $haystack, $ar, PREG_OFFSET_CAPTURE, $offset );
-
- if ( isset( $ar[0][1] ) ) {
- return $ar[0][1];
- } else {
- return false;
- }
- }
-
- /**
- * Fallback implementation of mb_strrpos, hardcoded to UTF-8.
- * @param string $haystack
- * @param string $needle
- * @param string $offset Optional start position
- * @param string $encoding Optional encoding; ignored
- * @return int
- */
- public static function mb_strrpos( $haystack, $needle, $offset = 0, $encoding = '' ) {
- $needle = preg_quote( $needle, '/' );
-
- $ar = [];
- preg_match_all( '/' . $needle . '/u', $haystack, $ar, PREG_OFFSET_CAPTURE, $offset );
-
- if ( isset( $ar[0] ) && count( $ar[0] ) > 0 &&
- isset( $ar[0][count( $ar[0] ) - 1][1] ) ) {
- return $ar[0][count( $ar[0] ) - 1][1];
- } else {
- return false;
- }
- }
-}
diff --git a/includes/FauxRequest.php b/includes/FauxRequest.php
index c2108f207a..158c8521fe 100644
--- a/includes/FauxRequest.php
+++ b/includes/FauxRequest.php
@@ -39,7 +39,7 @@ class FauxRequest extends WebRequest {
* @param array $data Array of *non*-urlencoded key => value pairs, the
* fake GET/POST values
* @param bool $wasPosted Whether to treat the data as POST
- * @param MediaWiki\\Session\\Session|array|null $session Session, session
+ * @param MediaWiki\Session\Session|array|null $session Session, session
* data array, or null
* @param string $protocol 'http' or 'https'
* @throws MWException
diff --git a/includes/GitInfo.php b/includes/GitInfo.php
index 29516ab7cd..de7e8c28e2 100644
--- a/includes/GitInfo.php
+++ b/includes/GitInfo.php
@@ -257,9 +257,6 @@ class GitInfo {
if ( $url === false ) {
return false;
}
- if ( substr( $url, -4 ) !== '.git' ) {
- $url .= '.git';
- }
foreach ( self::getViewers() as $repo => $viewer ) {
$pattern = '#^' . $repo . '$#';
if ( preg_match( $pattern, $url, $matches ) ) {
@@ -269,6 +266,7 @@ class GitInfo {
'%h' => substr( $headSHA1, 0, 7 ),
'%H' => $headSHA1,
'%r' => urlencode( $matches[1] ),
+ '%R' => $matches[1],
];
return strtr( $viewerUrl, $replacements );
}
diff --git a/includes/GlobalFunctions.php b/includes/GlobalFunctions.php
index 3fa91fa700..5c42bc26cf 100644
--- a/includes/GlobalFunctions.php
+++ b/includes/GlobalFunctions.php
@@ -39,59 +39,6 @@ use MediaWiki\Session\SessionManager;
* PHP extensions may be included here.
*/
-if ( !function_exists( 'mb_substr' ) ) {
- /**
- * @codeCoverageIgnore
- * @see Fallback::mb_substr
- * @return string
- */
- function mb_substr( $str, $start, $count = 'end' ) {
- return Fallback::mb_substr( $str, $start, $count );
- }
-
- /**
- * @codeCoverageIgnore
- * @see Fallback::mb_substr_split_unicode
- * @return int
- */
- function mb_substr_split_unicode( $str, $splitPos ) {
- return Fallback::mb_substr_split_unicode( $str, $splitPos );
- }
-}
-
-if ( !function_exists( 'mb_strlen' ) ) {
- /**
- * @codeCoverageIgnore
- * @see Fallback::mb_strlen
- * @return int
- */
- function mb_strlen( $str, $enc = '' ) {
- return Fallback::mb_strlen( $str, $enc );
- }
-}
-
-if ( !function_exists( 'mb_strpos' ) ) {
- /**
- * @codeCoverageIgnore
- * @see Fallback::mb_strpos
- * @return int
- */
- function mb_strpos( $haystack, $needle, $offset = 0, $encoding = '' ) {
- return Fallback::mb_strpos( $haystack, $needle, $offset, $encoding );
- }
-}
-
-if ( !function_exists( 'mb_strrpos' ) ) {
- /**
- * @codeCoverageIgnore
- * @see Fallback::mb_strrpos
- * @return int
- */
- function mb_strrpos( $haystack, $needle, $offset = 0, $encoding = '' ) {
- return Fallback::mb_strrpos( $haystack, $needle, $offset, $encoding );
- }
-}
-
// hash_equals function only exists in PHP >= 5.6.0
// http://php.net/hash_equals
if ( !function_exists( 'hash_equals' ) ) {
@@ -2990,7 +2937,7 @@ function wfBaseConvert( $input, $sourceBase, $destBase, $pad = 1,
/**
* @deprecated since 1.27, PHP's session generation isn't used with
- * MediaWiki\\Session\\SessionManager
+ * MediaWiki\Session\SessionManager
*/
function wfFixSessionID() {
wfDeprecated( __FUNCTION__, '1.27' );
@@ -2999,7 +2946,7 @@ function wfFixSessionID() {
/**
* Reset the session id
*
- * @deprecated since 1.27, use MediaWiki\\Session\\SessionManager instead
+ * @deprecated since 1.27, use MediaWiki\Session\SessionManager instead
* @since 1.22
*/
function wfResetSessionID() {
@@ -3021,7 +2968,7 @@ function wfResetSessionID() {
/**
* Initialise php session
*
- * @deprecated since 1.27, use MediaWiki\\Session\\SessionManager instead.
+ * @deprecated since 1.27, use MediaWiki\Session\SessionManager instead.
* Generally, "using" SessionManager will be calling ->getSessionById() or
* ::getGlobalSession() (depending on whether you were passing $sessionId
* here), then calling $session->persist().
diff --git a/includes/HtmlFormatter.php b/includes/HtmlFormatter.php
index 5749775749..9bae8b5fef 100644
--- a/includes/HtmlFormatter.php
+++ b/includes/HtmlFormatter.php
@@ -1,7 +1,7 @@
html = $html;
- }
-
- /**
- * Turns a chunk of HTML into a proper document
- * @param string $html
- * @return string
- */
- public static function wrapHTML( $html ) {
- return '' . $html . '';
- }
-
- /**
- * Override this in descendant class to modify HTML after it has been converted from DOM tree
- * @param string $html HTML to process
- * @return string Processed HTML
- */
- protected function onHtmlReady( $html ) {
- return $html;
- }
-
- /**
- * @return DOMDocument DOM to manipulate
- */
- public function getDoc() {
- if ( !$this->doc ) {
- // DOMDocument::loadHTML apparently isn't very good with encodings, so
- // convert input to ASCII by encoding everything above 128 as entities.
- if ( function_exists( 'mb_convert_encoding' ) ) {
- $html = mb_convert_encoding( $this->html, 'HTML-ENTITIES', 'UTF-8' );
- } else {
- $html = preg_replace_callback( '/[\x{80}-\x{10ffff}]/u', function ( $m ) {
- return '' . UtfNormal\Utils::utf8ToCodepoint( $m[0] ) . ';';
- }, $this->html );
- }
-
- // Workaround for bug that caused spaces before references
- // to disappear during processing: https://phabricator.wikimedia.org/T55086
- // TODO: Please replace with a better fix if one can be found.
- $html = str_replace( ' <', ' <', $html );
-
- libxml_use_internal_errors( true );
- $loader = libxml_disable_entity_loader();
- $this->doc = new DOMDocument();
- $this->doc->strictErrorChecking = false;
- $this->doc->loadHTML( $html );
- libxml_disable_entity_loader( $loader );
- libxml_use_internal_errors( false );
- $this->doc->encoding = 'UTF-8';
- }
- return $this->doc;
- }
-
- /**
- * Sets whether images/videos/sounds should be removed from output
- * @param bool $flag
- */
- public function setRemoveMedia( $flag = true ) {
- $this->removeMedia = $flag;
- }
-
- /**
- * Adds one or more selector of content to remove. A subset of CSS selector
- * syntax is supported:
- *
- *
- * .class
- * .
- * #
- *
- * @param array|string $selectors Selector(s) of stuff to remove
- */
- public function remove( $selectors ) {
- $this->itemsToRemove = array_merge( $this->itemsToRemove, (array)$selectors );
- }
-
- /**
- * Adds one or more element name to the list to flatten (remove tag, but not its content)
- * Can accept undelimited regexes
- *
- * Note this interface may fail in surprising unexpected ways due to usage of regexes,
- * so should not be relied on for HTML markup security measures.
- *
- * @param array|string $elements Name(s) of tag(s) to flatten
- */
- public function flatten( $elements ) {
- $this->elementsToFlatten = array_merge( $this->elementsToFlatten, (array)$elements );
- }
-
- /**
- * Instructs the formatter to flatten all tags
- */
- public function flattenAllTags() {
- $this->flatten( '[?!]?[a-z0-9]+' );
- }
-
- /**
- * Removes content we've chosen to remove. The text of the removed elements can be
- * extracted with the getText method.
- * @return array Array of removed DOMElements
- */
- public function filterContent() {
- $removals = $this->parseItemsToRemove();
-
- // Bail out early if nothing to do
- if ( array_reduce( $removals,
- function ( $carry, $item ) {
- return $carry && !$item;
- },
- true
- ) ) {
- return [];
- }
-
- $doc = $this->getDoc();
-
- // Remove tags
-
- // You can't remove DOMNodes from a DOMNodeList as you're iterating
- // over them in a foreach loop. It will seemingly leave the internal
- // iterator on the foreach out of wack and results will be quite
- // strange. Though, making a queue of items to remove seems to work.
- $domElemsToRemove = [];
- foreach ( $removals['TAG'] as $tagToRemove ) {
- $tagToRemoveNodes = $doc->getElementsByTagName( $tagToRemove );
- foreach ( $tagToRemoveNodes as $tagToRemoveNode ) {
- if ( $tagToRemoveNode ) {
- $domElemsToRemove[] = $tagToRemoveNode;
- }
- }
- }
- $removed = $this->removeElements( $domElemsToRemove );
-
- // Elements with named IDs
- $domElemsToRemove = [];
- foreach ( $removals['ID'] as $itemToRemove ) {
- $itemToRemoveNode = $doc->getElementById( $itemToRemove );
- if ( $itemToRemoveNode ) {
- $domElemsToRemove[] = $itemToRemoveNode;
- }
- }
- $removed = array_merge( $removed, $this->removeElements( $domElemsToRemove ) );
-
- // CSS Classes
- $domElemsToRemove = [];
- $xpath = new DOMXPath( $doc );
- foreach ( $removals['CLASS'] as $classToRemove ) {
- $elements = $xpath->query( '//*[contains(@class, "' . $classToRemove . '")]' );
-
- /** @var $element DOMElement */
- foreach ( $elements as $element ) {
- $classes = $element->getAttribute( 'class' );
- if ( preg_match( "/\b$classToRemove\b/", $classes ) && $element->parentNode ) {
- $domElemsToRemove[] = $element;
- }
- }
- }
- $removed = array_merge( $removed, $this->removeElements( $domElemsToRemove ) );
-
- // Tags with CSS Classes
- foreach ( $removals['TAG_CLASS'] as $classToRemove ) {
- $parts = explode( '.', $classToRemove );
-
- $elements = $xpath->query(
- '//' . $parts[0] . '[@class="' . $parts[1] . '"]'
- );
- $removed = array_merge( $removed, $this->removeElements( $elements ) );
- }
-
- return $removed;
- }
-
- /**
- * Removes a list of elelments from DOMDocument
- * @param array|DOMNodeList $elements
- * @return array Array of removed elements
- */
- private function removeElements( $elements ) {
- $list = $elements;
- if ( $elements instanceof DOMNodeList ) {
- $list = [];
- foreach ( $elements as $element ) {
- $list[] = $element;
- }
- }
- /** @var $element DOMElement */
- foreach ( $list as $element ) {
- if ( $element->parentNode ) {
- $element->parentNode->removeChild( $element );
- }
- }
- return $list;
- }
-
- /**
- * libxml in its usual pointlessness converts many chars to entities - this function
- * perfoms a reverse conversion
- * @param string $html
- * @return string
- */
- private function fixLibXML( $html ) {
- static $replacements;
- if ( !$replacements ) {
- // We don't include rules like '"' => '"' because entities had already been
- // normalized by libxml. Using this function with input not sanitized by libxml is UNSAFE!
- $replacements = new ReplacementArray( [
- '"' => '"',
- '&' => '&',
- '<' => '<',
- '>' => '>',
- ] );
- }
- $html = $replacements->replace( $html );
-
- if ( function_exists( 'mb_convert_encoding' ) ) {
- // Just in case the conversion in getDoc() above used named
- // entities that aren't known to html_entity_decode().
- $html = mb_convert_encoding( $html, 'UTF-8', 'HTML-ENTITIES' );
- } else {
- $html = html_entity_decode( $html, ENT_COMPAT, 'utf-8' );
- }
- return $html;
- }
-
- /**
- * Performs final transformations and returns resulting HTML. Note that if you want to call this
- * both without an element and with an element you should call it without an element first. If you
- * specify the $element in the method it'll change the underlying dom and you won't be able to get
- * it back.
- *
- * @param DOMElement|string|null $element ID of element to get HTML from or
- * false to get it from the whole tree
- * @return string Processed HTML
- */
- public function getText( $element = null ) {
-
- if ( $this->doc ) {
- if ( $element !== null && !( $element instanceof DOMElement ) ) {
- $element = $this->doc->getElementById( $element );
- }
- if ( $element ) {
- $body = $this->doc->getElementsByTagName( 'body' )->item( 0 );
- $nodesArray = [];
- foreach ( $body->childNodes as $node ) {
- $nodesArray[] = $node;
- }
- foreach ( $nodesArray as $nodeArray ) {
- $body->removeChild( $nodeArray );
- }
- $body->appendChild( $element );
- }
- $html = $this->doc->saveHTML();
-
- $html = $this->fixLibXML( $html );
- if ( wfIsWindows() ) {
- // Cleanup for CRLF misprocessing of unknown origin on Windows.
- // If this error continues in the future, please track it down in the
- // XML code paths if possible and fix there.
- $html = str_replace( '
', '', $html );
- }
- } else {
- $html = $this->html;
- }
- // Remove stuff added by wrapHTML()
- $html = preg_replace( '/|^.*?|<\/body>.*$/s', '', $html );
- $html = $this->onHtmlReady( $html );
-
- if ( $this->elementsToFlatten ) {
- $elements = implode( '|', $this->elementsToFlatten );
- $html = preg_replace( "#?($elements)\\b[^>]*>#is", '', $html );
- }
-
- return $html;
- }
-
- /**
- * Helper function for parseItemsToRemove(). This function extracts the selector type
- * and the raw name of a selector from a CSS-style selector string and assigns those
- * values to parameters passed by reference. For example, if given '#toc' as the
- * $selector parameter, it will assign 'ID' as the $type and 'toc' as the $rawName.
- * @param string $selector CSS selector to parse
- * @param string $type The type of selector (ID, CLASS, TAG_CLASS, or TAG)
- * @param string $rawName The raw name of the selector
- * @return bool Whether the selector was successfully recognised
- * @throws MWException
- */
- protected function parseSelector( $selector, &$type, &$rawName ) {
- if ( strpos( $selector, '.' ) === 0 ) {
- $type = 'CLASS';
- $rawName = substr( $selector, 1 );
- } elseif ( strpos( $selector, '#' ) === 0 ) {
- $type = 'ID';
- $rawName = substr( $selector, 1 );
- } elseif ( strpos( $selector, '.' ) !== 0 && strpos( $selector, '.' ) !== false ) {
- $type = 'TAG_CLASS';
- $rawName = $selector;
- } elseif ( strpos( $selector, '[' ) === false && strpos( $selector, ']' ) === false ) {
- $type = 'TAG';
- $rawName = $selector;
- } else {
- throw new MWException( __METHOD__ . "(): unrecognized selector '$selector'" );
- }
-
- return true;
- }
-
- /**
- * Transforms CSS-style selectors into an internal representation suitable for
- * processing by filterContent()
- * @return array
- */
- protected function parseItemsToRemove() {
- $removals = [
- 'ID' => [],
- 'TAG' => [],
- 'CLASS' => [],
- 'TAG_CLASS' => [],
- ];
-
- foreach ( $this->itemsToRemove as $itemToRemove ) {
- $type = '';
- $rawName = '';
- if ( $this->parseSelector( $itemToRemove, $type, $rawName ) ) {
- $removals[$type][] = $rawName;
- }
- }
-
- if ( $this->removeMedia ) {
- $removals['TAG'][] = 'img';
- $removals['TAG'][] = 'audio';
- $removals['TAG'][] = 'video';
- }
-
- return $removals;
- }
+class HtmlFormatter extends HtmlFormatter\HtmlFormatter {
}
diff --git a/includes/HttpFunctions.php b/includes/HttpFunctions.php
index 1a6e38292b..b12f49f0b0 100644
--- a/includes/HttpFunctions.php
+++ b/includes/HttpFunctions.php
@@ -80,7 +80,7 @@ class Http {
} else {
$errors = $status->getErrorsByType( 'error' );
$logger = LoggerFactory::getInstance( 'http' );
- $logger->warning( $status->getWikiText( null, null, 'en' ),
+ $logger->warning( $status->getWikiText( false, false, 'en' ),
[ 'error' => $errors, 'caller' => $caller, 'content' => $req->getContent() ] );
return false;
}
@@ -192,6 +192,26 @@ class Http {
$uri
);
}
+
+ /**
+ * Gets the relevant proxy from $wgHTTPProxy/http_proxy (when set).
+ *
+ * @return mixed The proxy address or an empty string if not set.
+ */
+ public static function getProxy() {
+ global $wgHTTPProxy;
+
+ if ( $wgHTTPProxy ) {
+ return $wgHTTPProxy;
+ }
+
+ $envHttpProxy = getenv( "http_proxy" );
+ if ( $envHttpProxy ) {
+ return $envHttpProxy;
+ }
+
+ return "";
+ }
}
/**
@@ -368,8 +388,6 @@ class MWHttpRequest {
* @return void
*/
public function proxySetup() {
- global $wgHTTPProxy;
-
// If there is an explicit proxy set and proxies are not disabled, then use it
if ( $this->proxy && !$this->noProxy ) {
return;
@@ -379,10 +397,8 @@ class MWHttpRequest {
// local URL and proxies are not disabled
if ( Http::isLocalURL( $this->url ) || $this->noProxy ) {
$this->proxy = '';
- } elseif ( $wgHTTPProxy ) {
- $this->proxy = $wgHTTPProxy;
- } elseif ( getenv( "http_proxy" ) ) {
- $this->proxy = getenv( "http_proxy" );
+ } else {
+ $this->proxy = Http::getProxy();
}
}
diff --git a/includes/LinkTarget.php b/includes/LinkTarget.php
deleted file mode 100644
index 175a8392a8..0000000000
--- a/includes/LinkTarget.php
+++ /dev/null
@@ -1,40 +0,0 @@
-hasFragment() ) {
- $target = clone $target;
- $target->setFragment( '' );
+ $target = $target->createFragmentTarget( '' );
}
# If it's a broken link, add the appropriate query pieces, unless
# there's already an action specified, or unless 'edit' makes no sense
# (i.e., for a nonexistent special page).
if ( in_array( 'broken', $options, true ) && empty( $query['action'] )
- && !$target->isSpecialPage() ) {
+ && $target->getNamespace() !== NS_SPECIAL ) {
$query['action'] = 'edit';
$query['redlink'] = '1';
}
@@ -300,7 +300,8 @@ class Linker {
$proto = PROTO_RELATIVE;
}
- $ret = $target->getLinkURL( $query, false, $proto );
+ $title = Title::newFromLinkTarget( $target );
+ $ret = $title->getLinkURL( $query, false, $proto );
return $ret;
}
@@ -2360,20 +2361,3 @@ class Linker {
}
-/**
- * @since 1.18
- */
-class DummyLinker {
-
- /**
- * Use PHP's magic __call handler to transform instance calls to a dummy instance
- * into static calls to the new Linker for backwards compatibility.
- *
- * @param string $fname Name of called method
- * @param array $args Arguments to the method
- * @return mixed
- */
- public function __call( $fname, $args ) {
- return call_user_func_array( [ 'Linker', $fname ], $args );
- }
-}
diff --git a/includes/MediaWiki.php b/includes/MediaWiki.php
index ad02e68bb5..3dd7420b88 100644
--- a/includes/MediaWiki.php
+++ b/includes/MediaWiki.php
@@ -585,6 +585,13 @@ class MediaWiki {
$request->response()->header( "X-Database-Lagged: true" );
wfDebugLog( 'replication', "Lagged DB used; CDN cache TTL limited to $maxAge seconds" );
}
+
+ // Avoid long-term cache pollution due to message cache rebuild timeouts (T133069)
+ if ( MessageCache::singleton()->isDisabled() ) {
+ $maxAge = $config->get( 'CdnMaxageSubstitute' );
+ $context->getOutput()->lowerCdnMaxage( $maxAge );
+ $request->response()->header( "X-Response-Substitute: true" );
+ }
}
/**
diff --git a/includes/MediaWikiServices.php b/includes/MediaWikiServices.php
new file mode 100644
index 0000000000..612d09e85e
--- /dev/null
+++ b/includes/MediaWikiServices.php
@@ -0,0 +1,190 @@
+get( 'ServiceWiringFiles' );
+ $instance->loadWiringFiles( $wiringFiles );
+
+ // Provide a traditional hook point to allow extensions to configure services.
+ Hooks::run( 'MediaWikiServices', [ $instance ] );
+ }
+
+ return $instance;
+ }
+
+ /**
+ * @param Config $config The Config object to be registered as the 'BootstrapConfig' service.
+ * This has to contain at least the information needed to set up the 'ConfigFactory'
+ * service.
+ */
+ public function __construct( Config $config ) {
+ parent::__construct();
+
+ // register the given Config object as the bootstrap config service.
+ $this->defineService( 'BootstrapConfig', function() use ( $config ) {
+ return $config;
+ } );
+ }
+
+ /**
+ * Returns the Config object containing the bootstrap configuration.
+ * Bootstrap configuration would typically include database credentials
+ * and other information that may be needed before the ConfigFactory
+ * service can be instantiated.
+ *
+ * @note This should only be used during bootstrapping, in particular
+ * when creating the MainConfig service. Application logic should
+ * use getMainConfig() to get a Config instances.
+ *
+ * @return Config
+ */
+ public function getBootstrapConfig() {
+ return $this->getService( 'BootstrapConfig' );
+ }
+
+ /**
+ * @return ConfigFactory
+ */
+ public function getConfigFactory() {
+ return $this->getService( 'ConfigFactory' );
+ }
+
+ /**
+ * Returns the Config object that provides configuration for MediaWiki core.
+ * This may or may not be the same object that is returned by getBootstrapConfig().
+ *
+ * @return Config
+ */
+ public function getMainConfig() {
+ return $this->getService( 'MainConfig' );
+ }
+
+ /**
+ * @return SiteLookup
+ */
+ public function getSiteLookup() {
+ return $this->getService( 'SiteLookup' );
+ }
+
+ /**
+ * @return SiteStore
+ */
+ public function getSiteStore() {
+ return $this->getService( 'SiteStore' );
+ }
+
+ /**
+ * @return StatsdDataFactory
+ */
+ public function getStatsdDataFactory() {
+ return $this->getService( 'StatsdDataFactory' );
+ }
+
+ /**
+ * @return EventRelayerGroup
+ */
+ public function getEventRelayerGroup() {
+ return $this->getService( 'EventRelayerGroup' );
+ }
+
+ /**
+ * @return SearchEngine
+ */
+ public function newSearchEngine() {
+ // New engine object every time, since they keep state
+ return $this->getService( 'SearchEngineFactory' )->create();
+ }
+
+ /**
+ * @return SearchEngineFactory
+ */
+ public function getSearchEngineFactory() {
+ return $this->getService( 'SearchEngineFactory' );
+ }
+
+ /**
+ * @return SearchEngineConfig
+ */
+ public function getSearchEngineConfig() {
+ return $this->getService( 'SearchEngineConfig' );
+ }
+
+ ///////////////////////////////////////////////////////////////////////////
+ // NOTE: When adding a service getter here, don't forget to add a test
+ // case for it in MediaWikiServicesTest::provideGetters() and in
+ // MediaWikiServicesTest::provideGetService()!
+ ///////////////////////////////////////////////////////////////////////////
+
+}
diff --git a/includes/OutputPage.php b/includes/OutputPage.php
index 0c3d60929e..c724207034 100644
--- a/includes/OutputPage.php
+++ b/includes/OutputPage.php
@@ -2315,11 +2315,21 @@ class OutputPage extends ContextSource {
// adding of CSS or Javascript by extensions.
Hooks::run( 'BeforePageDisplay', [ &$this, &$sk ] );
- $sk->outputPage();
+ try {
+ $sk->outputPage();
+ } catch ( Exception $e ) {
+ ob_end_clean(); // bug T129657
+ throw $e;
+ }
}
- // This hook allows last minute changes to final overall output by modifying output buffer
- Hooks::run( 'AfterFinalPageOutput', [ $this ] );
+ try {
+ // This hook allows last minute changes to final overall output by modifying output buffer
+ Hooks::run( 'AfterFinalPageOutput', [ $this ] );
+ } catch ( Exception $e ) {
+ ob_end_clean(); // bug T129657
+ throw $e;
+ }
$this->sendCacheControl();
@@ -3210,6 +3220,7 @@ class OutputPage extends ContextSource {
'wgMonthNamesShort' => $lang->getMonthAbbreviationsArray(),
'wgRelevantPageName' => $relevantTitle->getPrefixedDBkey(),
'wgRelevantArticleId' => $relevantTitle->getArticleID(),
+ 'wgRequestId' => WebRequest::getRequestId(),
];
if ( $user->isLoggedIn() ) {
diff --git a/includes/PageProps.php b/includes/PageProps.php
index bc3e3f1529..3654384722 100644
--- a/includes/PageProps.php
+++ b/includes/PageProps.php
@@ -33,6 +33,33 @@ class PageProps {
*/
private static $instance;
+ /**
+ * Overrides the default instance of this class
+ * This is intended for use while testing and will fail if MW_PHPUNIT_TEST is not defined.
+ *
+ * If this method is used it MUST also be called with null after a test to ensure a new
+ * default instance is created next time getInstance is called.
+ *
+ * @since 1.27
+ *
+ * @param PageProps|null $store
+ *
+ * @return ScopedCallback to reset the overridden value
+ * @throws MWException
+ */
+ public static function overrideInstance( PageProps $store = null ) {
+ if ( !defined( 'MW_PHPUNIT_TEST' ) ) {
+ throw new MWException(
+ 'Cannot override ' . __CLASS__ . 'default instance in operation.'
+ );
+ }
+ $previousValue = self::$instance;
+ self::$instance = $store;
+ return new ScopedCallback( function() use ( $previousValue ) {
+ self::$instance = $previousValue;
+ } );
+ }
+
/**
* @return PageProps
*/
diff --git a/includes/Preferences.php b/includes/Preferences.php
index 54176a6960..3f56240f16 100644
--- a/includes/Preferences.php
+++ b/includes/Preferences.php
@@ -544,12 +544,14 @@ class Preferences {
];
}
if ( $config->get( 'EnotifUserTalk' ) || $config->get( 'EnotifWatchlist' ) ) {
- $defaultPreferences['enotifminoredits'] = [
- 'type' => 'toggle',
- 'section' => 'personal/email',
- 'label-message' => 'tog-enotifminoredits',
- 'disabled' => $disableEmailPrefs,
- ];
+ if ( $config->get( 'EnotifMinorEdits' ) ) {
+ $defaultPreferences['enotifminoredits'] = [
+ 'type' => 'toggle',
+ 'section' => 'personal/email',
+ 'label-message' => 'tog-enotifminoredits',
+ 'disabled' => $disableEmailPrefs,
+ ];
+ }
if ( $config->get( 'EnotifRevealEditorAddress' ) ) {
$defaultPreferences['enotifrevealaddr'] = [
@@ -1042,10 +1044,14 @@ class Preferences {
$watchTypes['rollback'] = 'watchrollback';
}
+ if ( $user->isAllowed( 'upload' ) ) {
+ $watchTypes['upload'] = 'watchuploads';
+ }
+
foreach ( $watchTypes as $action => $pref ) {
if ( $user->isAllowed( $action ) ) {
// Messages:
- // tog-watchdefault, tog-watchmoves, tog-watchdeletion, tog-watchcreations
+ // tog-watchdefault, tog-watchmoves, tog-watchdeletion, tog-watchcreations, tog-watchuploads
// tog-watchrollback
$defaultPreferences[$pref] = [
'type' => 'toggle',
@@ -1301,6 +1307,7 @@ class Preferences {
$htmlForm->setModifiedUser( $user );
$htmlForm->setId( 'mw-prefs-form' );
+ $htmlForm->setAutocomplete( 'off' );
$htmlForm->setSubmitText( $context->msg( 'saveprefs' )->text() );
# Used message keys: 'accesskey-preferences-save', 'tooltip-preferences-save'
$htmlForm->setSubmitTooltip( 'preferences-save' );
diff --git a/includes/Revision.php b/includes/Revision.php
index b7bb346844..40daf3dc3c 100644
--- a/includes/Revision.php
+++ b/includes/Revision.php
@@ -19,6 +19,7 @@
*
* @file
*/
+use MediaWiki\Linker\LinkTarget;
/**
* @todo document
@@ -1035,19 +1036,6 @@ class Revision implements IDBAccessObject {
}
}
- /**
- * Fetch revision text without regard for view restrictions
- *
- * @return string
- *
- * @deprecated since 1.21. Instead, use Revision::getContent( Revision::RAW )
- * or Revision::getSerializedData() as appropriate.
- */
- public function getRawText() {
- ContentHandler::deprecated( __METHOD__, "1.21" );
- return $this->getText( self::RAW );
- }
-
/**
* Fetch original serialized data without regard for view restrictions
*
diff --git a/includes/ServiceWiring.php b/includes/ServiceWiring.php
new file mode 100644
index 0000000000..defe698c28
--- /dev/null
+++ b/includes/ServiceWiring.php
@@ -0,0 +1,102 @@
+ function( MediaWikiServices $services ) {
+ $loadBalancer = wfGetLB(); // TODO: use LB from MediaWikiServices
+ $rawSiteStore = new DBSiteStore( $loadBalancer );
+
+ // TODO: replace wfGetCache with a CacheFactory service.
+ // TODO: replace wfIsHHVM with a capabilities service.
+ $cache = wfGetCache( wfIsHHVM() ? CACHE_ACCEL : CACHE_ANYTHING );
+
+ return new CachingSiteStore( $rawSiteStore, $cache );
+ },
+
+ 'SiteLookup' => function( MediaWikiServices $services ) {
+ // Use the default SiteStore as the SiteLookup implementation for now
+ return $services->getSiteStore();
+ },
+
+ 'ConfigFactory' => function( MediaWikiServices $services ) {
+ // Use the bootstrap config to initialize the ConfigFactory.
+ $registry = $services->getBootstrapConfig()->get( 'ConfigRegistry' );
+ $factory = new ConfigFactory();
+
+ foreach ( $registry as $name => $callback ) {
+ $factory->register( $name, $callback );
+ }
+ return $factory;
+ },
+
+ 'MainConfig' => function( MediaWikiServices $services ) {
+ // Use the 'main' config from the ConfigFactory service.
+ return $services->getConfigFactory()->makeConfig( 'main' );
+ },
+
+ 'StatsdDataFactory' => function( MediaWikiServices $services ) {
+ return new BufferingStatsdDataFactory(
+ rtrim( $services->getMainConfig()->get( 'StatsdMetricPrefix' ), '.' )
+ );
+ },
+
+ 'EventRelayerGroup' => function( MediaWikiServices $services ) {
+ return new EventRelayerGroup( $services->getMainConfig()->get( 'EventRelayerConfig' ) );
+ },
+
+ 'SearchEngineFactory' => function( MediaWikiServices $services ) {
+ // Create search engine
+ return new SearchEngineFactory( $services->getService( 'SearchEngineConfig' ) );
+ },
+
+ 'SearchEngineConfig' => function( MediaWikiServices $services ) {
+ // Create a search engine config from main config.
+ $config = $services->getService( 'MainConfig' );
+ return new SearchEngineConfig( $config );
+ }
+
+ ///////////////////////////////////////////////////////////////////////////
+ // NOTE: When adding a service here, don't forget to add a getter function
+ // in the MediaWikiServices class. The convenience getter should just call
+ // $this->getService( 'FooBarService' ).
+ ///////////////////////////////////////////////////////////////////////////
+
+];
diff --git a/includes/Services/ServiceContainer.php b/includes/Services/ServiceContainer.php
new file mode 100644
index 0000000000..e3cda2ee3f
--- /dev/null
+++ b/includes/Services/ServiceContainer.php
@@ -0,0 +1,222 @@
+extraInstantiationParams = $extraInstantiationParams;
+ }
+
+ /**
+ * @param array $wiringFiles A list of PHP files to load wiring information from.
+ * Each file is loaded using PHP's include mechanism. Each file is expected to
+ * return an associative array that maps service names to instantiator functions.
+ */
+ public function loadWiringFiles( array $wiringFiles ) {
+ foreach ( $wiringFiles as $file ) {
+ // the wiring file is required to return an array of instantiators.
+ $wiring = require $file;
+
+ Assert::postcondition(
+ is_array( $wiring ),
+ "Wiring file $file is expected to return an array!"
+ );
+
+ $this->applyWiring( $wiring );
+ }
+ }
+
+ /**
+ * Registers multiple services (aka a "wiring").
+ *
+ * @param array $serviceInstantiators An associative array mapping service names to
+ * instantiator functions.
+ */
+ public function applyWiring( array $serviceInstantiators ) {
+ Assert::parameterElementType( 'callable', $serviceInstantiators, '$serviceInstantiators' );
+
+ foreach ( $serviceInstantiators as $name => $instantiator ) {
+ $this->defineService( $name, $instantiator );
+ }
+ }
+
+ /**
+ * Returns true if a service is defined for $name, that is, if a call to getService( $name )
+ * would return a service instance.
+ *
+ * @param string $name
+ *
+ * @return bool
+ */
+ public function hasService( $name ) {
+ return isset( $this->serviceInstantiators[$name] );
+ }
+
+ /**
+ * @return string[]
+ */
+ public function getServiceNames() {
+ return array_keys( $this->serviceInstantiators );
+ }
+
+ /**
+ * Define a new service. The service must not be known already.
+ *
+ * @see getService().
+ * @see replaceService().
+ *
+ * @param string $name The name of the service to register, for use with getService().
+ * @param callable $instantiator Callback that returns a service instance.
+ * Will be called with this MediaWikiServices instance as the only parameter.
+ * Any extra instantiation parameters provided to the constructor will be
+ * passed as subsequent parameters when invoking the instantiator.
+ *
+ * @throws RuntimeException if there is already a service registered as $name.
+ */
+ public function defineService( $name, callable $instantiator ) {
+ Assert::parameterType( 'string', $name, '$name' );
+
+ if ( $this->hasService( $name ) ) {
+ throw new RuntimeException( 'Service already defined: ' . $name );
+ }
+
+ $this->serviceInstantiators[$name] = $instantiator;
+ }
+
+ /**
+ * Replace an already defined service.
+ *
+ * @see defineService().
+ *
+ * @note This causes any previously instantiated instance of the service to be discarded.
+ *
+ * @param string $name The name of the service to register.
+ * @param callable $instantiator Callback function that returns a service instance.
+ * Will be called with this MediaWikiServices instance as the only parameter.
+ * The instantiator must return a service compatible with the originally defined service.
+ * Any extra instantiation parameters provided to the constructor will be
+ * passed as subsequent parameters when invoking the instantiator.
+ *
+ * @throws RuntimeException if $name is not a known service.
+ */
+ public function redefineService( $name, callable $instantiator ) {
+ Assert::parameterType( 'string', $name, '$name' );
+
+ if ( !$this->hasService( $name ) ) {
+ throw new RuntimeException( 'Service not defined: ' . $name );
+ }
+
+ if ( isset( $this->services[$name] ) ) {
+ throw new RuntimeException( 'Cannot redefine a service that is already in use: ' . $name );
+ }
+
+ $this->serviceInstantiators[$name] = $instantiator;
+ }
+
+ /**
+ * Returns a service object of the kind associated with $name.
+ * Services instances are instantiated lazily, on demand.
+ * This method may or may not return the same service instance
+ * when called multiple times with the same $name.
+ *
+ * @note Rather than calling this method directly, it is recommended to provide
+ * getters with more meaningful names and more specific return types, using
+ * a subclass or wrapper.
+ *
+ * @see redefineService().
+ *
+ * @param string $name The service name
+ *
+ * @throws InvalidArgumentException if $name is not a known service.
+ * @return object The service instance
+ */
+ public function getService( $name ) {
+ if ( !isset( $this->services[$name] ) ) {
+ $this->services[$name] = $this->createService( $name );
+ }
+
+ return $this->services[$name];
+ }
+
+ /**
+ * @param string $name
+ *
+ * @throws InvalidArgumentException if $name is not a known service.
+ * @return object
+ */
+ private function createService( $name ) {
+ if ( isset( $this->serviceInstantiators[$name] ) ) {
+ $service = call_user_func_array(
+ $this->serviceInstantiators[$name],
+ array_merge( [ $this ], $this->extraInstantiationParams )
+ );
+ } else {
+ throw new InvalidArgumentException( 'Unknown service: ' . $name );
+ }
+
+ return $service;
+ }
+
+}
diff --git a/includes/Setup.php b/includes/Setup.php
index f7d8d08829..9898b84313 100644
--- a/includes/Setup.php
+++ b/includes/Setup.php
@@ -119,20 +119,15 @@ if ( $wgRightsIcon ) {
);
}
-if ( isset( $wgFooterIcons['copyright'] )
- && isset( $wgFooterIcons['copyright']['copyright'] )
+if ( isset( $wgFooterIcons['copyright']['copyright'] )
&& $wgFooterIcons['copyright']['copyright'] === []
) {
- if ( $wgCopyrightIcon ) {
- $wgFooterIcons['copyright']['copyright'] = $wgCopyrightIcon;
- } elseif ( $wgRightsIcon || $wgRightsText ) {
+ if ( $wgRightsIcon || $wgRightsText ) {
$wgFooterIcons['copyright']['copyright'] = [
'url' => $wgRightsUrl,
'src' => $wgRightsIcon,
'alt' => $wgRightsText,
];
- } else {
- unset( $wgFooterIcons['copyright']['copyright'] );
}
}
@@ -366,11 +361,6 @@ if ( $wgEnableEmail ) {
$wgUsersNotifiedOnAllChanges = [];
}
-// Doesn't make sense to have if disabled.
-if ( !$wgEnotifMinorEdits ) {
- $wgHiddenPrefs[] = 'enotifminoredits';
-}
-
if ( $wgMetaNamespace === false ) {
$wgMetaNamespace = str_replace( ' ', '_', $wgSitename );
}
@@ -628,10 +618,9 @@ if ( $wgMainWANCache === false ) {
// Sites using multiple datacenters can configure a relayer.
$wgMainWANCache = 'mediawiki-main-default';
$wgWANObjectCaches[$wgMainWANCache] = [
- 'class' => 'WANObjectCache',
- 'cacheId' => $wgMainCacheType,
- 'pool' => 'mediawiki-main-default',
- 'relayerConfig' => [ 'class' => 'EventRelayerNull' ]
+ 'class' => 'WANObjectCache',
+ 'cacheId' => $wgMainCacheType,
+ 'channels' => [ 'purge' => 'wancache-main-default-purge' ]
];
}
@@ -720,7 +709,7 @@ if ( !is_object( $wgAuth ) ) {
// Set up the session
$ps_session = Profiler::instance()->scopedProfileIn( $fname . '-session' );
/**
- * @var MediaWiki\\Session\\SessionId|null $wgInitialSessionId The persistent
+ * @var MediaWiki\Session\SessionId|null $wgInitialSessionId The persistent
* session ID (if any) loaded at startup
*/
$wgInitialSessionId = null;
diff --git a/includes/SiteStats.php b/includes/SiteStats.php
index 580f7ccb19..215378bcdb 100644
--- a/includes/SiteStats.php
+++ b/includes/SiteStats.php
@@ -36,9 +36,6 @@ class SiteStats {
/** @var int[] */
private static $pageCount = [];
- /** @var int[] */
- private static $groupMemberCounts = [];
-
static function recache() {
self::load( true );
}
@@ -205,8 +202,11 @@ class SiteStats {
*/
static function jobs() {
if ( !isset( self::$jobs ) ) {
- $dbr = wfGetDB( DB_SLAVE );
- self::$jobs = array_sum( JobQueueGroup::singleton()->getQueueSizes() );
+ try{
+ self::$jobs = array_sum( JobQueueGroup::singleton()->getQueueSizes() );
+ } catch ( JobQueueError $e ) {
+ self::$jobs = 0;
+ }
/**
* Zero rows still do single row read for row that doesn't exist,
* but people are annoyed by that
@@ -289,8 +289,10 @@ class SiteStatsInit {
public function __construct( $database = false ) {
if ( $database instanceof IDatabase ) {
$this->db = $database;
+ } elseif ( $database ) {
+ $this->db = wfGetDB( DB_MASTER );
} else {
- $this->db = wfGetDB( $database ? DB_MASTER : DB_SLAVE );
+ $this->db = wfGetDB( DB_SLAVE, 'vslow' );
}
}
diff --git a/includes/Status.php b/includes/Status.php
index cc7abc8200..3d2c887126 100644
--- a/includes/Status.php
+++ b/includes/Status.php
@@ -420,8 +420,11 @@ class Status {
* Returns a list of status messages of the given type, with message and
* params left untouched, like a sane version of getStatusArray
*
- * @param string $type
+ * Each entry is a map of:
+ * - message: string message key or MessageSpecifier
+ * - params: array list of parameters
*
+ * @param string $type
* @return array
*/
public function getErrorsByType( $type ) {
diff --git a/includes/StubObject.php b/includes/StubObject.php
index 211afda671..0b4d048e74 100644
--- a/includes/StubObject.php
+++ b/includes/StubObject.php
@@ -149,7 +149,6 @@ class StubObject {
}
if ( get_class( $GLOBALS[$this->global] ) != $this->class ) {
- $fname = __METHOD__ . '-' . $this->global;
$caller = wfGetCaller( $level );
if ( ++$recursionLevel > 2 ) {
throw new MWException( "Unstub loop detected on call of "
diff --git a/includes/Title.php b/includes/Title.php
index 8bafe2612a..6f38283a5d 100644
--- a/includes/Title.php
+++ b/includes/Title.php
@@ -21,6 +21,7 @@
*
* @file
*/
+use MediaWiki\Linker\LinkTarget;
/**
* Represents a title within MediaWiki.
@@ -248,6 +249,10 @@ class Title implements LinkTarget {
* @return Title
*/
public static function newFromLinkTarget( LinkTarget $linkTarget ) {
+ if ( $linkTarget instanceof Title ) {
+ // Special case if it's already a Title object
+ return $linkTarget;
+ }
return self::makeTitle(
$linkTarget->getNamespace(),
$linkTarget->getText(),
@@ -268,13 +273,9 @@ class Title implements LinkTarget {
* @return Title|null Title or null on an error.
*/
public static function newFromText( $text, $defaultNamespace = NS_MAIN ) {
- if ( is_object( $text ) ) {
- throw new InvalidArgumentException( '$text must be a string.' );
- }
// DWIM: Integers can be passed in here when page titles are used as array keys.
if ( $text !== null && !is_string( $text ) && !is_int( $text ) ) {
- wfDebugLog( 'T76305', wfGetAllCallers( 5 ) );
- return null;
+ throw new InvalidArgumentException( '$text must be a string.' );
}
if ( $text === null ) {
return null;
@@ -572,57 +573,6 @@ class Title implements LinkTarget {
return $title;
}
- /**
- * Extract a redirect destination from a string and return the
- * Title, or null if the text doesn't contain a valid redirect
- * This will only return the very next target, useful for
- * the redirect table and other checks that don't need full recursion
- *
- * @param string $text Text with possible redirect
- * @return Title The corresponding Title
- * @deprecated since 1.21, use Content::getRedirectTarget instead.
- */
- public static function newFromRedirect( $text ) {
- ContentHandler::deprecated( __METHOD__, '1.21' );
-
- $content = ContentHandler::makeContent( $text, null, CONTENT_MODEL_WIKITEXT );
- return $content->getRedirectTarget();
- }
-
- /**
- * Extract a redirect destination from a string and return the
- * Title, or null if the text doesn't contain a valid redirect
- * This will recurse down $wgMaxRedirects times or until a non-redirect target is hit
- * in order to provide (hopefully) the Title of the final destination instead of another redirect
- *
- * @param string $text Text with possible redirect
- * @return Title
- * @deprecated since 1.21, use Content::getUltimateRedirectTarget instead.
- */
- public static function newFromRedirectRecurse( $text ) {
- ContentHandler::deprecated( __METHOD__, '1.21' );
-
- $content = ContentHandler::makeContent( $text, null, CONTENT_MODEL_WIKITEXT );
- return $content->getUltimateRedirectTarget();
- }
-
- /**
- * Extract a redirect destination from a string and return an
- * array of Titles, or null if the text doesn't contain a valid redirect
- * The last element in the array is the final destination after all redirects
- * have been resolved (up to $wgMaxRedirects times)
- *
- * @param string $text Text with possible redirect
- * @return Title[] Array of Titles, with the destination last
- * @deprecated since 1.21, use Content::getRedirectChain instead.
- */
- public static function newFromRedirectArray( $text ) {
- ContentHandler::deprecated( __METHOD__, '1.21' );
-
- $content = ContentHandler::makeContent( $text, null, CONTENT_MODEL_WIKITEXT );
- return $content->getRedirectChain();
- }
-
/**
* Get the prefixed DB key associated with an ID
*
@@ -1427,7 +1377,8 @@ class Title implements LinkTarget {
* specified fragment before setting, so it assumes you're passing it with
* an initial "#".
*
- * Deprecated for public use, use Title::makeTitle() with fragment parameter.
+ * Deprecated for public use, use Title::makeTitle() with fragment parameter,
+ * or Title::createFragmentTarget().
* Still in active use privately.
*
* @private
@@ -1437,6 +1388,23 @@ class Title implements LinkTarget {
$this->mFragment = strtr( substr( $fragment, 1 ), '_', ' ' );
}
+ /**
+ * Creates a new Title for a different fragment of the same page.
+ *
+ * @since 1.27
+ * @param string $fragment
+ * @return Title
+ */
+ public function createFragmentTarget( $fragment ) {
+ return self::makeTitle(
+ $this->getNamespace(),
+ $this->getText(),
+ $fragment,
+ $this->getInterwiki()
+ );
+
+ }
+
/**
* Prefix some arbitrary text with the namespace or interwiki prefix
* of this object
diff --git a/includes/WatchedItem.php b/includes/WatchedItem.php
index 5b4a4fcfe1..db6ce8744a 100644
--- a/includes/WatchedItem.php
+++ b/includes/WatchedItem.php
@@ -18,6 +18,7 @@
* @file
* @ingroup Watchlist
*/
+use MediaWiki\Linker\LinkTarget;
/**
* Representation of a pair of user and title for watchlist entries.
@@ -140,11 +141,7 @@ class WatchedItem {
*/
public function getTitle() {
if ( !$this->title ) {
- if ( $this->linkTarget instanceof Title ) {
- $this->title = $this->linkTarget;
- } else {
- $this->title = Title::newFromLinkTarget( $this->linkTarget );
- }
+ $this->title = Title::newFromLinkTarget( $this->linkTarget );
}
return $this->title;
}
@@ -179,23 +176,31 @@ class WatchedItem {
*/
public static function batchAddWatch( array $items ) {
// wfDeprecated( __METHOD__, '1.27' );
- $userTargetCombinations = [];
+ if ( !$items ) {
+ return false;
+ }
+
+ $targets = [];
+ $users = [];
/** @var WatchedItem $watchedItem */
foreach ( $items as $watchedItem ) {
- if ( $watchedItem->checkRights && !$watchedItem->getUser()->isAllowed( 'editmywatchlist' ) ) {
+ $user = $watchedItem->getUser();
+ if ( $watchedItem->checkRights && !$user->isAllowed( 'editmywatchlist' ) ) {
continue;
}
- $userTargetCombinations[] = [
- $watchedItem->getUser(),
- $watchedItem->getTitle()->getSubjectPage()
- ];
- $userTargetCombinations[] = [
- $watchedItem->getUser(),
- $watchedItem->getTitle()->getTalkPage()
- ];
+ $userId = $user->getId();
+ $users[$userId] = $user;
+ $targets[$userId][] = $watchedItem->getTitle()->getSubjectPage();
+ $targets[$userId][] = $watchedItem->getTitle()->getTalkPage();
}
+
$store = WatchedItemStore::getDefaultInstance();
- return $store->addWatchBatch( $userTargetCombinations );
+ $success = true;
+ foreach ( $users as $userId => $user ) {
+ $success &= $store->addWatchBatchForUser( $user, $targets[$userId] );
+ }
+
+ return $success;
}
/**
diff --git a/includes/WatchedItemStore.php b/includes/WatchedItemStore.php
index 9e21f14bdf..fcf6d3b6e6 100644
--- a/includes/WatchedItemStore.php
+++ b/includes/WatchedItemStore.php
@@ -1,5 +1,7 @@
loadBalancer = $loadBalancer;
$this->cache = $cache;
+ $this->stats = new NullStatsdDataFactory();
$this->deferredUpdatesAddCallableUpdateCallback = [ 'DeferredUpdates', 'addCallableUpdate' ];
$this->revisionGetTimestampFromIdCallback = [ 'Revision', 'getTimestampFromId' ];
}
+ public function setStatsdDataFactory( StatsdDataFactoryInterface $stats ) {
+ $this->stats = $stats;
+ }
+
/**
* Overrides the DeferredUpdates::addCallableUpdate callback
* This is intended for use while testing and will fail if MW_PHPUNIT_TEST is not defined.
@@ -145,6 +160,7 @@ class WatchedItemStore {
wfGetLB(),
new HashBagOStuff( [ 'maxKeys' => 100 ] )
);
+ self::$instance->setStatsdDataFactory( RequestContext::getMain()->getStats() );
}
return self::$instance;
}
@@ -163,18 +179,22 @@ class WatchedItemStore {
$key = $this->getCacheKey( $user, $target );
$this->cache->set( $key, $item );
$this->cacheIndex[$target->getNamespace()][$target->getDBkey()][$user->getId()] = $key;
+ $this->stats->increment( 'WatchedItemStore.cache' );
}
private function uncache( User $user, LinkTarget $target ) {
$this->cache->delete( $this->getCacheKey( $user, $target ) );
unset( $this->cacheIndex[$target->getNamespace()][$target->getDBkey()][$user->getId()] );
+ $this->stats->increment( 'WatchedItemStore.uncache' );
}
private function uncacheLinkTarget( LinkTarget $target ) {
if ( !isset( $this->cacheIndex[$target->getNamespace()][$target->getDBkey()] ) ) {
return;
}
+ $this->stats->increment( 'WatchedItemStore.uncacheLinkTarget' );
foreach ( $this->cacheIndex[$target->getNamespace()][$target->getDBkey()] as $key ) {
+ $this->stats->increment( 'WatchedItemStore.uncacheLinkTarget.items' );
$this->cache->delete( $key );
}
}
@@ -448,8 +468,10 @@ class WatchedItemStore {
$cached = $this->getCached( $user, $target );
if ( $cached ) {
+ $this->stats->increment( 'WatchedItemStore.getWatchedItem.cached' );
return $cached;
}
+ $this->stats->increment( 'WatchedItemStore.getWatchedItem.load' );
return $this->loadWatchedItem( $user, $target );
}
@@ -494,18 +516,34 @@ class WatchedItemStore {
* @param User $user
* @param array $options Allowed keys:
* 'forWrite' => bool defaults to false
+ * 'sort' => string optional sorting by namespace ID and title
+ * one of the self::SORT_* constants
*
* @return WatchedItem[]
*/
public function getWatchedItemsForUser( User $user, array $options = [] ) {
$options += [ 'forWrite' => false ];
+ $dbOptions = [];
+ if ( array_key_exists( 'sort', $options ) ) {
+ Assert::parameter(
+ ( in_array( $options['sort'], [ self::SORT_ASC, self::SORT_DESC ] ) ),
+ '$options[\'sort\']',
+ 'must be SORT_ASC or SORT_DESC'
+ );
+ $dbOptions['ORDER BY'] = [
+ "wl_namespace {$options['sort']}",
+ "wl_title {$options['sort']}"
+ ];
+ }
$db = $this->getConnection( $options['forWrite'] ? DB_MASTER : DB_SLAVE );
+
$res = $db->select(
'watchlist',
[ 'wl_namespace', 'wl_title', 'wl_notificationtimestamp' ],
[ 'wl_user' => $user->getId() ],
- __METHOD__
+ __METHOD__,
+ $dbOptions
);
$this->reuseConnection( $db );
@@ -596,30 +634,30 @@ class WatchedItemStore {
* @param LinkTarget $target
*/
public function addWatch( User $user, LinkTarget $target ) {
- $this->addWatchBatch( [ [ $user, $target ] ] );
+ $this->addWatchBatchForUser( $user, [ $target ] );
}
/**
- * @param array[] $userTargetCombinations array of arrays containing [0] => User [1] => LinkTarget
+ * @param User $user
+ * @param LinkTarget[] $targets
*
* @return bool success
*/
- public function addWatchBatch( array $userTargetCombinations ) {
+ public function addWatchBatchForUser( User $user, array $targets ) {
if ( $this->loadBalancer->getReadOnlyReason() !== false ) {
return false;
}
+ // Only loggedin user can have a watchlist
+ if ( $user->isAnon() ) {
+ return false;
+ }
+
+ if ( !$targets ) {
+ return true;
+ }
$rows = [];
- foreach ( $userTargetCombinations as list( $user, $target ) ) {
- /**
- * @var User $user
- * @var LinkTarget $target
- */
-
- // Only loggedin user can have a watchlist
- if ( $user->isAnon() ) {
- continue;
- }
+ foreach ( $targets as $target ) {
$rows[] = [
'wl_user' => $user->getId(),
'wl_namespace' => $target->getNamespace(),
@@ -629,10 +667,6 @@ class WatchedItemStore {
$this->uncache( $user, $target );
}
- if ( !$rows ) {
- return false;
- }
-
$dbw = $this->getConnection( DB_MASTER );
foreach ( array_chunk( $rows, 100 ) as $toInsert ) {
// Use INSERT IGNORE to avoid overwriting the notification timestamp
@@ -872,12 +906,8 @@ class WatchedItemStore {
* @param LinkTarget $newTarget
*/
public function duplicateAllAssociatedEntries( LinkTarget $oldTarget, LinkTarget $newTarget ) {
- if ( !$oldTarget instanceof Title ) {
- $oldTarget = Title::newFromLinkTarget( $oldTarget );
- }
- if ( !$newTarget instanceof Title ) {
- $newTarget = Title::newFromLinkTarget( $newTarget );
- }
+ $oldTarget = Title::newFromLinkTarget( $oldTarget );
+ $newTarget = Title::newFromLinkTarget( $newTarget );
$this->duplicateEntry( $oldTarget->getSubjectPage(), $newTarget->getSubjectPage() );
$this->duplicateEntry( $oldTarget->getTalkPage(), $newTarget->getTalkPage() );
diff --git a/includes/WebRequest.php b/includes/WebRequest.php
index 812a320f91..b159f79526 100644
--- a/includes/WebRequest.php
+++ b/includes/WebRequest.php
@@ -23,6 +23,8 @@
* @file
*/
+use MediaWiki\Session\Session;
+use MediaWiki\Session\SessionId;
use MediaWiki\Session\SessionManager;
/**
@@ -41,6 +43,12 @@ class WebRequest {
*/
const GETHEADER_LIST = 1;
+ /**
+ * The unique request ID.
+ * @var string
+ */
+ private static $reqId;
+
/**
* Lazy-init response object
* @var WebResponse
@@ -66,7 +74,7 @@ class WebRequest {
protected $protocol;
/**
- * @var \\MediaWiki\\Session\\SessionId|null Session ID to use for this
+ * @var SessionId|null Session ID to use for this
* request. We can't save the session directly due to reference cycles not
* working too well (slow GC in Zend and never collected in HHVM).
*/
@@ -246,6 +254,34 @@ class WebRequest {
return microtime( true ) - $this->requestTime;
}
+ /**
+ * Get the unique request ID.
+ * This is either the value of the UNIQUE_ID envvar (if present) or a
+ * randomly-generated 24-character string.
+ *
+ * @return string
+ * @since 1.27
+ */
+ public static function getRequestId() {
+ if ( !self::$reqId ) {
+ self::$reqId = isset( $_SERVER['UNIQUE_ID'] )
+ ? $_SERVER['UNIQUE_ID'] : wfRandomString( 24 );
+ }
+
+ return self::$reqId;
+ }
+
+ /**
+ * Override the unique request ID. This is for sub-requests, such as jobs,
+ * that wish to use the same id but are not part of the same execution context.
+ *
+ * @param string $id
+ * @since 1.27
+ */
+ public static function overrideRequestId( $id ) {
+ self::$reqId = $id;
+ }
+
/**
* Get the current URL protocol (http or https)
* @return string
@@ -651,7 +687,7 @@ class WebRequest {
* @since 1.27
* @note For performance, keep the session locally if you will be making
* much use of it instead of calling this method repeatedly.
- * @return MediaWiki\\Session\\Session
+ * @return Session
*/
public function getSession() {
if ( $this->sessionId !== null ) {
@@ -669,18 +705,18 @@ class WebRequest {
/**
* Set the session for this request
* @since 1.27
- * @private For use by MediaWiki\\Session classes only
- * @param MediaWiki\\Session\\SessionId $sessionId
+ * @private For use by MediaWiki\Session classes only
+ * @param SessionId $sessionId
*/
- public function setSessionId( MediaWiki\Session\SessionId $sessionId ) {
+ public function setSessionId( SessionId $sessionId ) {
$this->sessionId = $sessionId;
}
/**
* Get the session id for this request, if any
* @since 1.27
- * @private For use by MediaWiki\\Session classes only
- * @return MediaWiki\\Session\\SessionId|null
+ * @private For use by MediaWiki\Session classes only
+ * @return SessionId|null
*/
public function getSessionId() {
return $this->sessionId;
@@ -691,7 +727,7 @@ class WebRequest {
* This does not necessarily mean that the user is logged in!
*
* @deprecated since 1.27, use
- * \\MediaWiki\\Session\\SessionManager::singleton()->getPersistedSessionId()
+ * \MediaWiki\Session\SessionManager::singleton()->getPersistedSessionId()
* instead.
* @return bool
*/
diff --git a/includes/WikiMap.php b/includes/WikiMap.php
index 4534414c9f..cf97984ce1 100644
--- a/includes/WikiMap.php
+++ b/includes/WikiMap.php
@@ -73,13 +73,8 @@ class WikiMap {
* @return WikiReference|null WikiReference object or null if the wiki was not found
*/
private static function getWikiWikiReferenceFromSites( $wikiID ) {
- static $siteStore = null;
- if ( !$siteStore ) {
- // Replace once T114471 got fixed and don't do the caching here.
- $siteStore = SiteSQLStore::newInstance();
- }
-
- $site = $siteStore->getSite( $wikiID );
+ $siteLookup = \MediaWiki\MediaWikiServices::getInstance()->getSiteLookup();
+ $site = $siteLookup->getSite( $wikiID );
if ( !$site instanceof MediaWikiSite ) {
// Abort if not a MediaWikiSite, as this is about Wikis
diff --git a/includes/actions/PurgeAction.php b/includes/actions/PurgeAction.php
index 508bbe0a85..576533d3b7 100644
--- a/includes/actions/PurgeAction.php
+++ b/includes/actions/PurgeAction.php
@@ -66,6 +66,10 @@ class PurgeAction extends FormAction {
}
if ( $user->isAllowed( 'purge' ) ) {
+ // This will update the database immediately, even on HTTP GET.
+ // Lots of uses may exist for this feature, so just ignore warnings.
+ Profiler::instance()->getTransactionProfiler()->resetExpectations();
+
$this->redirectParams = wfArrayToCgi( array_diff_key(
$this->getRequest()->getQueryValues(),
[ 'title' => null, 'action' => null ]
diff --git a/includes/api/ApiBase.php b/includes/api/ApiBase.php
index 1c20229cca..da64c038af 100644
--- a/includes/api/ApiBase.php
+++ b/includes/api/ApiBase.php
@@ -1298,7 +1298,7 @@ abstract class ApiBase extends ContextSource {
*/
private function validateUser( $value, $encParamName ) {
$title = Title::makeTitleSafe( NS_USER, $value );
- if ( $title === null ) {
+ if ( $title === null || $title->hasFragment() ) {
$this->dieUsage(
"Invalid value '$value' for user parameter $encParamName",
"baduser_{$encParamName}"
diff --git a/includes/api/ApiHelp.php b/includes/api/ApiHelp.php
index f2d6329ee5..f7539ce2d1 100644
--- a/includes/api/ApiHelp.php
+++ b/includes/api/ApiHelp.php
@@ -24,6 +24,8 @@
* @file
*/
+use HtmlFormatter\HtmlFormatter;
+
/**
* Class to output help for an API module
*
diff --git a/includes/api/ApiLogin.php b/includes/api/ApiLogin.php
index 02aae06e80..3891415f5e 100644
--- a/includes/api/ApiLogin.php
+++ b/includes/api/ApiLogin.php
@@ -103,7 +103,7 @@ class ApiLogin extends ApiBase {
$loginType = 'BotPassword';
} else {
LoggerFactory::getInstance( 'authmanager' )->info(
- 'BotPassword login failed: ' . $status->getWikiText()
+ 'BotPassword login failed: ' . $status->getWikiText( false, false, 'en' )
);
}
}
diff --git a/includes/api/ApiMain.php b/includes/api/ApiMain.php
index 63b79ac3eb..07642c48ed 100644
--- a/includes/api/ApiMain.php
+++ b/includes/api/ApiMain.php
@@ -397,7 +397,13 @@ class ApiMain extends ApiBase {
if ( $this->mInternalMode ) {
$this->executeAction();
} else {
+ $start = microtime( true );
$this->executeActionWithErrorHandling();
+ if ( $this->isWriteMode() && $this->getRequest()->wasPosted() ) {
+ $timeMs = 1000 * max( 0, microtime( true ) - $start );
+ $this->getStats()->timing(
+ 'api.' . $this->getModuleName() . '.executeTiming', $timeMs );
+ }
}
}
@@ -871,7 +877,7 @@ class ApiMain extends ApiBase {
$errMessage = [
'code' => 'internal_api_error_' . get_class( $e ),
- 'info' => '[' . MWExceptionHandler::getLogId( $e ) . '] ' . $info,
+ 'info' => '[' . WebRequest::getRequestId() . '] ' . $info,
];
}
return $errMessage;
@@ -1750,8 +1756,8 @@ class ApiMain extends ApiBase {
// Use parent to make default message for the main module
$msg = parent::makeHelpMsg();
- $astriks = str_repeat( '*** ', 14 );
- $msg .= "\n\n$astriks Modules $astriks\n\n";
+ $asterisks = str_repeat( '*** ', 14 );
+ $msg .= "\n\n$asterisks Modules $asterisks\n\n";
foreach ( $this->mModuleMgr->getNames( 'action' ) as $name ) {
$module = $this->mModuleMgr->getModule( $name );
@@ -1764,7 +1770,7 @@ class ApiMain extends ApiBase {
$msg .= "\n";
}
- $msg .= "\n$astriks Permissions $astriks\n\n";
+ $msg .= "\n$asterisks Permissions $asterisks\n\n";
foreach ( self::$mRights as $right => $rightMsg ) {
$rightsMsg = $this->msg( $rightMsg['msg'], $rightMsg['params'] )
->useDatabase( false )
@@ -1775,7 +1781,7 @@ class ApiMain extends ApiBase {
"\nGranted to:\n " . str_replace( '*', 'all', implode( ', ', $groups ) ) . "\n\n";
}
- $msg .= "\n$astriks Formats $astriks\n\n";
+ $msg .= "\n$asterisks Formats $asterisks\n\n";
foreach ( $this->mModuleMgr->getNames( 'format' ) as $name ) {
$module = $this->mModuleMgr->getModule( $name );
$msg .= self::makeHelpMsgHeader( $module, 'format' );
@@ -1810,53 +1816,6 @@ class ApiMain extends ApiBase {
return "* $paramName={$module->getModuleName()} $modulePrefix*";
}
- /**
- * Check whether the user wants us to show version information in the API help
- * @return bool
- * @deprecated since 1.21, always returns false
- */
- public function getShowVersions() {
- wfDeprecated( __METHOD__, '1.21' );
-
- return false;
- }
-
- /**
- * Add or overwrite a module in this ApiMain instance. Intended for use by extending
- * classes who wish to add their own modules to their lexicon or override the
- * behavior of inherent ones.
- *
- * @deprecated since 1.21, Use getModuleManager()->addModule() instead.
- * @param string $name The identifier for this module.
- * @param ApiBase $class The class where this module is implemented.
- */
- protected function addModule( $name, $class ) {
- $this->getModuleManager()->addModule( $name, 'action', $class );
- }
-
- /**
- * Add or overwrite an output format for this ApiMain. Intended for use by extending
- * classes who wish to add to or modify current formatters.
- *
- * @deprecated since 1.21, Use getModuleManager()->addModule() instead.
- * @param string $name The identifier for this format.
- * @param ApiFormatBase $class The class implementing this format.
- */
- protected function addFormat( $name, $class ) {
- $this->getModuleManager()->addModule( $name, 'format', $class );
- }
-
- /**
- * Returns the list of supported formats in form ( 'format' => 'ClassName' )
- *
- * @since 1.18
- * @deprecated since 1.21, Use getModuleManager()'s methods instead.
- * @return array
- */
- public function getFormats() {
- return $this->getModuleManager()->getNamesWithClasses( 'format' );
- }
-
/**@}*/
}
diff --git a/includes/api/ApiOpenSearch.php b/includes/api/ApiOpenSearch.php
index effa520a2d..058e0a3909 100644
--- a/includes/api/ApiOpenSearch.php
+++ b/includes/api/ApiOpenSearch.php
@@ -24,6 +24,8 @@
* @file
*/
+use MediaWiki\MediaWikiServices;
+
/**
* @ingroup API
*/
@@ -123,8 +125,7 @@ class ApiOpenSearch extends ApiBase {
* @param array &$results Put results here. Keys have to be integers.
*/
protected function search( $search, $limit, $namespaces, $resolveRedir, &$results ) {
-
- $searchEngine = SearchEngine::create();
+ $searchEngine = MediaWikiServices::getInstance()->newSearchEngine();
$searchEngine->setLimitOffset( $limit );
$searchEngine->setNamespaces( $namespaces );
$titles = $searchEngine->extractTitles( $searchEngine->completionSearchWithVariants( $search ) );
@@ -350,24 +351,25 @@ class ApiOpenSearch extends ApiBase {
* @throws MWException
*/
public static function getOpenSearchTemplate( $type ) {
- global $wgOpenSearchTemplate, $wgCanonicalServer;
+ $config = MediaWikiServices::getInstance()->getSearchEngineConfig();
+ $template = $config->getConfig()->get( 'OpenSearchTemplate' );
- if ( $wgOpenSearchTemplate && $type === 'application/x-suggestions+json' ) {
- return $wgOpenSearchTemplate;
+ if ( $template && $type === 'application/x-suggestions+json' ) {
+ return $template;
}
- $ns = implode( '|', SearchEngine::defaultNamespaces() );
+ $ns = implode( '|', $config->defaultNamespaces() );
if ( !$ns ) {
$ns = '0';
}
switch ( $type ) {
case 'application/x-suggestions+json':
- return $wgCanonicalServer . wfScript( 'api' )
+ return $config->getConfig()->get( 'CanonicalServer' ) . wfScript( 'api' )
. '?action=opensearch&search={searchTerms}&namespace=' . $ns;
case 'application/x-suggestions+xml':
- return $wgCanonicalServer . wfScript( 'api' )
+ return $config->getConfig()->get( 'CanonicalServer' ) . wfScript( 'api' )
. '?action=opensearch&format=xml&search={searchTerms}&namespace=' . $ns;
default:
diff --git a/includes/api/ApiPageSet.php b/includes/api/ApiPageSet.php
index 6bab762aff..f278989544 100644
--- a/includes/api/ApiPageSet.php
+++ b/includes/api/ApiPageSet.php
@@ -747,14 +747,6 @@ class ApiPageSet extends ApiBase {
}
}
- /**
- * Do not use, does nothing, will be removed
- * @deprecated since 1.21
- */
- public function finishPageSetGeneration() {
- wfDeprecated( __METHOD__, '1.21' );
- }
-
/**
* This method populates internal variables with page information
* based on the given array of title strings.
diff --git a/includes/api/ApiQueryExtLinksUsage.php b/includes/api/ApiQueryExtLinksUsage.php
index 404fc19c31..9b055377ef 100644
--- a/includes/api/ApiQueryExtLinksUsage.php
+++ b/includes/api/ApiQueryExtLinksUsage.php
@@ -66,6 +66,9 @@ class ApiQueryExtLinksUsage extends ApiQueryGeneratorBase {
$this->addWhereFld( 'page_namespace', $params['namespace'] );
}
+ // Normalize query to match the normalization applied for the externallinks table
+ $query = Parser::normalizeLinkUrl( $query );
+
$whereQuery = $this->prepareUrlQuerySearchString( $query, $protocol );
if ( $whereQuery !== null ) {
diff --git a/includes/api/ApiQueryImageInfo.php b/includes/api/ApiQueryImageInfo.php
index ab94574065..13e6340203 100644
--- a/includes/api/ApiQueryImageInfo.php
+++ b/includes/api/ApiQueryImageInfo.php
@@ -162,7 +162,7 @@ class ApiQueryImageInfo extends ApiQueryBase {
$gotOne = true;
$fit = $this->addPageSubItem( $pageId,
- self::getInfo( $img, $prop, $result,
+ static::getInfo( $img, $prop, $result,
$finalThumbParams, $opts
)
);
@@ -197,7 +197,7 @@ class ApiQueryImageInfo extends ApiQueryBase {
}
$fit = self::getTransformCount() < self::TRANSFORM_LIMIT &&
$this->addPageSubItem( $pageId,
- self::getInfo( $oldie, $prop, $result,
+ static::getInfo( $oldie, $prop, $result,
$finalThumbParams, $opts
)
);
@@ -533,11 +533,11 @@ class ApiQueryImageInfo extends ApiQueryBase {
if ( $metadata && $version !== 'latest' ) {
$metadata = $file->convertMetadataVersion( $metadata, $version );
}
- $vals['metadata'] = $metadata ? self::processMetaData( $metadata, $result ) : null;
+ $vals['metadata'] = $metadata ? static::processMetaData( $metadata, $result ) : null;
}
if ( $commonmeta ) {
$metaArray = $file->getCommonMetaArray();
- $vals['commonmetadata'] = $metaArray ? self::processMetaData( $metaArray, $result ) : [];
+ $vals['commonmetadata'] = $metaArray ? static::processMetaData( $metaArray, $result ) : [];
}
if ( $extmetadata ) {
@@ -601,7 +601,7 @@ class ApiQueryImageInfo extends ApiQueryBase {
ApiResult::META_BC_BOOLS => [ 'value' ],
];
if ( is_array( $value ) ) {
- $r['value'] = self::processMetaData( $value, $result );
+ $r['value'] = static::processMetaData( $value, $result );
} else {
$r['value'] = $value;
}
@@ -641,8 +641,8 @@ class ApiQueryImageInfo extends ApiQueryBase {
'prop' => [
ApiBase::PARAM_ISMULTI => true,
ApiBase::PARAM_DFLT => 'timestamp|user',
- ApiBase::PARAM_TYPE => self::getPropertyNames(),
- ApiBase::PARAM_HELP_MSG_PER_VALUE => self::getPropertyMessages(),
+ ApiBase::PARAM_TYPE => static::getPropertyNames(),
+ ApiBase::PARAM_HELP_MSG_PER_VALUE => static::getPropertyMessages(),
],
'limit' => [
ApiBase::PARAM_TYPE => 'limit',
@@ -703,7 +703,7 @@ class ApiQueryImageInfo extends ApiQueryBase {
* @return array
*/
public static function getPropertyNames( $filter = [] ) {
- return array_keys( self::getPropertyMessages( $filter ) );
+ return array_keys( static::getPropertyMessages( $filter ) );
}
/**
@@ -787,7 +787,7 @@ class ApiQueryImageInfo extends ApiQueryBase {
public static function getPropertyDescriptions( $filter = [], $modulePrefix = '' ) {
return array_merge(
[ 'What image information to get:' ],
- array_values( array_diff_key( self::getProperties( $modulePrefix ), array_flip( $filter ) ) )
+ array_values( array_diff_key( static::getProperties( $modulePrefix ), array_flip( $filter ) ) )
);
}
diff --git a/includes/api/ApiQueryInfo.php b/includes/api/ApiQueryInfo.php
index ea1b94e42f..b94f5674f4 100644
--- a/includes/api/ApiQueryInfo.php
+++ b/includes/api/ApiQueryInfo.php
@@ -23,6 +23,7 @@
*
* @file
*/
+use MediaWiki\Linker\LinkTarget;
/**
* A query module to show basic page information.
diff --git a/includes/api/ApiQueryPrefixSearch.php b/includes/api/ApiQueryPrefixSearch.php
index d04796c91d..5c50273261 100644
--- a/includes/api/ApiQueryPrefixSearch.php
+++ b/includes/api/ApiQueryPrefixSearch.php
@@ -1,4 +1,6 @@
newSearchEngine();
$searchEngine->setLimitOffset( $limit + 1, $offset );
$searchEngine->setNamespaces( $namespaces );
$titles = $searchEngine->extractTitles( $searchEngine->completionSearchWithVariants( $search ) );
diff --git a/includes/api/ApiQuerySearch.php b/includes/api/ApiQuerySearch.php
index 2eb5d14ea3..f57d3a30cf 100644
--- a/includes/api/ApiQuerySearch.php
+++ b/includes/api/ApiQuerySearch.php
@@ -24,6 +24,8 @@
* @file
*/
+use MediaWiki\MediaWikiServices;
+
/**
* Query module to perform full text search within wiki titles and content
*
@@ -78,8 +80,9 @@ class ApiQuerySearch extends ApiQueryGeneratorBase {
}
// Create search engine instance and set options
- $search = isset( $params['backend'] ) && $params['backend'] != self::BACKEND_NULL_PARAM ?
- SearchEngine::create( $params['backend'] ) : SearchEngine::create();
+ $type = isset( $params['backend'] ) && $params['backend'] != self::BACKEND_NULL_PARAM ?
+ $params['backend'] : null;
+ $search = MediaWikiServices::getInstance()->getSearchEngineFactory()->create( $type );
$search->setLimitOffset( $limit + 1, $params['offset'] );
$search->setNamespaces( $params['namespace'] );
$search->setFeatureData( 'rewrite', (bool)$params['enablerewrites'] );
@@ -95,7 +98,8 @@ class ApiQuerySearch extends ApiQueryGeneratorBase {
} elseif ( $what == 'nearmatch' ) {
// near matches must receive the user input as provided, otherwise
// the near matches within namespaces are lost.
- $matches = SearchEngine::getNearMatchResultSet( $params['search'] );
+ $matches = $search->getNearMatcher( $this->getConfig() )
+ ->getNearMatchResultSet( $params['search'] );
} else {
// We default to title searches; this is a terrible legacy
// of the way we initially set up the MySQL fulltext-based
@@ -116,7 +120,7 @@ class ApiQuerySearch extends ApiQueryGeneratorBase {
if ( is_null( $matches ) ) {
$this->dieUsage( "{$what} search is disabled", "search-{$what}-disabled" );
} elseif ( $matches instanceof Status && !$matches->isGood() ) {
- $this->dieUsage( $matches->getWikiText(), 'search-error' );
+ $this->dieUsage( $matches->getWikiText( false, false, 'en' ), 'search-error' );
}
if ( $resultPageSet === null ) {
@@ -358,13 +362,14 @@ class ApiQuerySearch extends ApiQueryGeneratorBase {
'enablerewrites' => false,
];
- $alternatives = SearchEngine::getSearchTypes();
+ $searchConfig = MediaWikiServices::getInstance()->getSearchEngineConfig();
+ $alternatives = $searchConfig->getSearchTypes();
if ( count( $alternatives ) > 1 ) {
if ( $alternatives[0] === null ) {
$alternatives[0] = self::BACKEND_NULL_PARAM;
}
$params['backend'] = [
- ApiBase::PARAM_DFLT => $this->getConfig()->get( 'SearchType' ),
+ ApiBase::PARAM_DFLT => $searchConfig->getSearchType(),
ApiBase::PARAM_TYPE => $alternatives,
];
}
diff --git a/includes/api/ApiQueryTokens.php b/includes/api/ApiQueryTokens.php
index cc829aa8a1..de5a377417 100644
--- a/includes/api/ApiQueryTokens.php
+++ b/includes/api/ApiQueryTokens.php
@@ -59,7 +59,7 @@ class ApiQueryTokens extends ApiQueryBase {
* @return (string|array)[] Returning a string will use that as the salt
* for User::getEditTokenObject() to fetch the token, which will give a
* LoggedOutEditToken (always "+\\") for anonymous users. Returning an
- * array will use it as parameters to MediaWiki\\Session\\Session::getToken(),
+ * array will use it as parameters to MediaWiki\Session\Session::getToken(),
* which will always return a full token even for anonymous users.
*/
public static function getTokenTypeSalts() {
@@ -84,14 +84,14 @@ class ApiQueryTokens extends ApiQueryBase {
/**
* Get a token from a salt
* @param User $user
- * @param MediaWiki\\Session\\Session $session
+ * @param MediaWiki\Session\Session $session
* @param string|array $salt A string will be used as the salt for
* User::getEditTokenObject() to fetch the token, which will give a
* LoggedOutEditToken (always "+\\") for anonymous users. An array will
- * be used as parameters to MediaWiki\\Session\\Session::getToken(), which
+ * be used as parameters to MediaWiki\Session\Session::getToken(), which
* will always return a full token even for anonymous users. An array will
* also persist the session.
- * @return MediaWiki\\Session\\Token
+ * @return MediaWiki\Session\Token
*/
public static function getToken( User $user, MediaWiki\Session\Session $session, $salt ) {
if ( is_array( $salt ) ) {
diff --git a/includes/api/ApiStashEdit.php b/includes/api/ApiStashEdit.php
index 3c02c9ce63..cc8e39079f 100644
--- a/includes/api/ApiStashEdit.php
+++ b/includes/api/ApiStashEdit.php
@@ -272,18 +272,18 @@ class ApiStashEdit extends ApiBase {
}
$timeMs = 1000 * max( 0, microtime( true ) - $start );
- $stats->timing( 'editstash.lock-wait-time', $timeMs );
+ $stats->timing( 'editstash.lock_wait_time', $timeMs );
}
if ( !is_object( $editInfo ) || !$editInfo->output ) {
- $stats->increment( 'editstash.cache-misses' );
+ $stats->increment( 'editstash.cache_misses.no_stash' );
$logger->debug( "No cache value for key '$key'." );
return false;
}
$time = wfTimestamp( TS_UNIX, $editInfo->output->getTimestamp() );
if ( ( time() - $time ) <= 3 ) {
- $stats->increment( 'editstash.cache-hits' );
+ $stats->increment( 'editstash.cache_hits.presumed_fresh' );
$logger->debug( "Timestamp-based cache hit for key '$key'." );
return $editInfo; // assume nothing changed
}
@@ -312,7 +312,7 @@ class ApiStashEdit extends ApiBase {
}
if ( $changed || $res->numRows() != $templateUses ) {
- $stats->increment( 'editstash.cache-misses' );
+ $stats->increment( 'editstash.cache_misses.proven_stale' );
$logger->info( "Stale cache for key '$key'; template changed." );
return false;
}
@@ -336,13 +336,13 @@ class ApiStashEdit extends ApiBase {
}
if ( $changed || $res->numRows() != count( $files ) ) {
- $stats->increment( 'editstash.cache-misses' );
+ $stats->increment( 'editstash.cache_misses.proven_stale' );
$logger->info( "Stale cache for key '$key'; file changed." );
return false;
}
}
- $stats->increment( 'editstash.cache-hits' );
+ $stats->increment( 'editstash.cache_hits.proven_fresh' );
$logger->debug( "Cache hit for key '$key'." );
return $editInfo;
diff --git a/includes/api/ApiUpload.php b/includes/api/ApiUpload.php
index 326f8ba112..1571b27cfe 100644
--- a/includes/api/ApiUpload.php
+++ b/includes/api/ApiUpload.php
@@ -257,7 +257,7 @@ class ApiUpload extends ApiBase {
'offset' => $this->mUpload->getOffset(),
];
- $this->dieUsage( $status->getWikiText(), 'stashfailed', 0, $extradata );
+ $this->dieUsage( $status->getWikiText( false, false, 'en' ), 'stashfailed', 0, $extradata );
}
}
@@ -288,7 +288,7 @@ class ApiUpload extends ApiBase {
$filekey,
[ 'result' => 'Failure', 'stage' => 'assembling', 'status' => $status ]
);
- $this->dieUsage( $status->getWikiText(), 'stashfailed' );
+ $this->dieUsage( $status->getWikiText( false, false, 'en' ), 'stashfailed' );
}
// The fully concatenated file has a new filekey. So remove
@@ -391,7 +391,7 @@ class ApiUpload extends ApiBase {
if ( !$progress ) {
$this->dieUsage( 'No result in status data', 'missingresult' );
} elseif ( !$progress['status']->isGood() ) {
- $this->dieUsage( $progress['status']->getWikiText(), 'stashfailed' );
+ $this->dieUsage( $progress['status']->getWikiText( false, false, 'en' ), 'stashfailed' );
}
if ( isset( $progress['status']->value['verification'] ) ) {
$this->checkVerification( $progress['status']->value['verification'] );
@@ -685,16 +685,19 @@ class ApiUpload extends ApiBase {
/** @var $file File */
$file = $this->mUpload->getLocalFile();
- // For preferences mode, we want to watch if 'watchdefault' is set or
- // if the *file* doesn't exist and 'watchcreations' is set. But
- // getWatchlistValue()'s automatic handling checks if the *title*
- // exists or not, so we need to check both prefs manually.
+ // For preferences mode, we want to watch if 'watchdefault' is set,
+ // or if the *file* doesn't exist, and either 'watchuploads' or
+ // 'watchcreations' is set. But getWatchlistValue()'s automatic
+ // handling checks if the *title* exists or not, so we need to check
+ // all three preferences manually.
$watch = $this->getWatchlistValue(
$this->mParams['watchlist'], $file->getTitle(), 'watchdefault'
);
+
if ( !$watch && $this->mParams['watchlist'] == 'preferences' && !$file->exists() ) {
- $watch = $this->getWatchlistValue(
- $this->mParams['watchlist'], $file->getTitle(), 'watchcreations'
+ $watch = (
+ $this->getWatchlistValue( 'preferences', $file->getTitle(), 'watchuploads' ) ||
+ $this->getWatchlistValue( 'preferences', $file->getTitle(), 'watchcreations' )
);
}
diff --git a/includes/api/i18n/ba.json b/includes/api/i18n/ba.json
index f39998b3b1..0e8b437595 100644
--- a/includes/api/i18n/ba.json
+++ b/includes/api/i18n/ba.json
@@ -7,7 +7,12 @@
"ÐйÑаÑ",
"ЯнмÑÑза Ðаки",
"ÐйбикÓ",
- "ÐилиÓ"
+ "ÐилиÓ",
+ "Lizalizaufa",
+ "ÐÑлÑÑаÑай",
+ "Ilmira",
+ "ÐизаÑÑллина",
+ "Ð¢Ð°Ð½Ð·Ð¸Ð»Ñ ÐÑÑлÑгилÑдина"
]
},
"apihelp-main-description": "\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
\nСÑаÑÑÑ: ÐÑл биÑÑÓ ÐºÒ¯ÑÒ»ÓÑелгÓн Ð±Ð°Ñ ÑÑнкÑиÑÐ»Ð°Ñ Òа ÑÑлÓÑÐ³Ó ÑейеÑ, ÑÑлай Òа API ÓÒ¯Òем ÑÑкÓÑÑеү Ñ
ÓÐ»ÐµÐ½Ð´Ó ÑоÑа Ò»Óм ÑелÓгÓн Ð±ÐµÑ Ð²Ð°Ò¡ÑÑÑа Ò¯ÒгÓÑеÑÐ³Ó Ð¼Ó©Ð¼ÐºÐ¸Ð½. ЯңÑÑÑÑлÑÑÒаÑÒÑ Ò»ÓÑ Ñаҡ белеп ÑоÑÐ¾Ñ Ó©Ñөн [https://lists.wikimedia.org/pipermail/mediawiki-api-announce/ поÑÑа ÑаÑаÑÑÑ mediawiki-api-announce], оÑоÒа ÑÒÑл.\n\nХаÑÐ°Ð»Ñ Ò»Ð¾ÑаÑÑÑÒаÑ: ÓгÓÑ API Ñ
аÑÐ°Ð»Ñ Ò»Ð¾ÑаÑÑÑ Ð°Ð»Ò»Ð°, HTTP Ð±Ð°Ñ Ò»Ò¯Òе «MediaWiki-API-Error» аÑÒ¡ÑÑÑ Ð¼ÐµÐ½Óн киÑе ҡайÑаÑÑла, бÑнан Ò»ÑÒ£ Ð±Ð°Ñ Ò»Ò¯ÒÒең мÓÒÓнÓһе Ò»Óм Ñ
аÑа ÐºÐ¾Ð´Ñ ÐºÐ¸Ñе ебÓÑелÓÑÓк Ò»Óм киÑе ÑÑл ÑÒ¡ мÓÒÓнÓÐ»Ó ÐºÐ¸Ñе Ò¡ÑйÑлаÑаҡ. ÐиңеÑÓк мÓÒлүмÓÑÑе оÑонан ҡаÑа [[mw:API:Errors_and_warnings|API:ХаÑÐ°Ð»Ð°Ñ Ò»Óм иҫкÓÑÑеүÒÓÑ]].\n\nТеÑÑлаÑ: API-һоÑаÑÑÑÒаÑÒÑ ÑеÑÑÐ»Ð°Ñ ÑÒ£Ð°Ð¹Ð»Ñ Ð±ÑлһÑн Ó©Ñөн ҡаÑа. [[Special:ApiSandbox]]",
@@ -69,7 +74,7 @@
"apihelp-delete-param-watch": "Ò ÑлланÑÑÑÑнÑÒ£ аÒÑмдаÒÑ ÐºÒ¯ÒÓÑеү иÑÐµÐ¼Ð»ÐµÐ³ÐµÐ½Ó Ð±Ð¸Ñ Ó©Ò«ÑÓÑгÓ.",
"apihelp-delete-param-watchlist": "ÐÒÑмдаÒÑ Ò¡ÑлланÑÑÑÑнÑÒ£ ÑеÒмÓһенÓн биÑÑе Ò»Ò¯ÒÒ»ÐµÒ Ó©Ò«ÑÓÑÐ³Ó Ð¹Óки ÑйÑÑÒа, Ò»ÑлÑанмалаÑÒÑ ÑайÒаланÑÒÑÒ Ð¹Óки ÑÓÒÓÑÑе алмаÑÑÑÑмаҫҡа.",
"apihelp-delete-param-unwatch": "Ò ÑлланÑÑÑÑнÑÒ£ аÒÑмдаÒÑ ÐºÒ¯ÒÓÑеү иÑемлегенÓн биÑÑе ÑйÑÑÒа.",
- "apihelp-delete-param-oldimage": "ÐÐ¼Ñ ÑÑаÑого изобÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ð´Ð»Ñ ÑдалениÑ, как ÑÑо пÑедÑÑмоÑÑено\n\nÐÑнда ниÑек ҡаÑалÒанÑа, ÑйÑÑ Ó©Ñөн иҫке Ò»Ò¯ÑÓÑлÓмÓнең иÑеме [[Special:ApiHelp/query+imageinfo|action=query&prop=imageinfo&iiprop=archivename]]",
+ "apihelp-delete-param-oldimage": "\nÐÑнда ниÑек ҡаÑалÒанÑа, ÑйÑÑ Ó©Ñөн иҫке Ò»Ò¯ÑÓÑлÓмÓнең иÑеме [[Special:ApiHelp/query+imageinfo|action=query&prop=imageinfo&iiprop=archivename]]",
"apihelp-delete-example-simple": "ЮйÑÑÒа: Main Page .",
"apihelp-delete-example-reason": "ЮйÑÑÒа Main Page ÑÓбÓп Preparing for move .",
"apihelp-disabled-description": "ÐÑл модÑÐ»Ñ Ò»Ò¯Ð½Ð´ÐµÑелгÓн.",
@@ -93,7 +98,7 @@
"apihelp-edit-param-unwatch": "Ò ÑлланÑÑÑÑнÑÒ£ аÒÑмдаÒÑ ÐºÒ¯ÒÓÑеү иÑемлегенÓн биÑÑе ÑйÑÑÒа.",
"apihelp-edit-param-watchlist": "ÐÒÑмдаÒÑ Ò¡ÑлланÑÑÑÑнÑÒ£ ÑеÒмÓһенÓн биÑÑе Ò»Ò¯ÒÒ»ÐµÒ Ó©Ò«ÑÓÑÐ³Ó Ð¹Óки ÑйÑÑÒа, Ò»ÑлÑанмалаÑÒÑ ÑайÒаланÑÒÑÒ Ð¹Óки ÑÓÒÓÑÑе алмаÑÑÑÑмаÒÑÒ.",
"apihelp-edit-param-md5": "\n\nMD5-Ñ
ÑÑ Ð¿Ð°ÑамеÑÑÑнÑÒ£ $1 text, йÓки $1 prepend ÑекÑÑ Ò»Óм $1 appendtext паÑамеÑÑÒаÑÑ Ð±ÓйлÓнгÓн. \nÒ ÑйÑлÒан бÑлһа, ÓгÓÑ Ñ
ÑÑ Ð´Ó©ÑÓ©Ò« бÑлмаһа, мөÑ
ÓÑÑиÑлÓÒ¯ ÑÑлÓнмÓйÓÑÓк.",
- "apihelp-edit-param-prependtext": "ÐÑл ÑекÑÑÑ Ð±Ð¸ÑÑең баÑÑна Ó©Ò«ÑÓгеÒ. $ 1text алмаÑÑÑÑа.",
+ "apihelp-edit-param-prependtext": "ÐÑл ÑекÑÑÑ Ð±Ð¸ÑÑең баÑÑна Ó©Ò«ÑÓгеÒ. $1text алмаÑÑÑÑа.",
"apihelp-edit-param-appendtext": "ÐÑл ÑекÑÑÑ Ð±Ð¸ÑÑең аÒаÒÑнаÑа Ó©Ò«ÑÓгеÒ.$1text алмаÑÑÑÑа.\n$1section -Ð´Ñ ÑайÒаланÑÒÑÒ = ÑÒ£Ñ, ÑÒ£Ñ Ð±Ò¯Ð»ÐµÐº Ó©Ò«ÑÓÒ¯ Ó©Ñөн, Ó Ð±Ñл паÑамеÑÑÒа Ñүгел.",
"apihelp-edit-param-undo": "ÐÑл веÑÑиÑÐ½Ñ ÐºÐ¸Ñе алÑÑÒа. $1text,$1prependtext,$1appendtext алмаÑÑÑÑа.",
"apihelp-edit-param-undoafter": "$1undo- нан алÑп баÑлÑÒ¡ Ò¯ÒгÓÑÑеүÒÓÑÒе киÑе алÑÑÒа. ÓгÓÑ Ñл Ò¡ÑйÑлмаÒан бÑлһа, Ð±ÐµÑ ÑикÑеÑеүÒе киÑе алÑÑ Òа еÑÓ.",
@@ -114,8 +119,17 @@
"apihelp-expandtemplates-param-title": "ÐÐ¸Ñ Ð±Ð°Ñ Ò»Ò¯Òе",
"apihelp-expandtemplates-param-text": "ÐонвеÑÑÐ»Ð°Ñ Ó©Ñөн викиÑекÑÑ",
"apihelp-expandtemplates-param-revid": "{{REVISIONID}} Ò»Óм ÑÑÒа оҡÑаÒан алмаÑÑÐ°Ñ Ó©Ñөн ID-Ð½Ñ ÑÒ£Ñнан ҡаÑаÑ",
+ "apihelp-expandtemplates-param-prop": "\nÐлÑÑ Ó©Ñөн, мÓÒлүмÓÑÑең Ò¡Ð°Ð¹Ò»Ñ Ó©Ð»Ó©ÑÓ©\n\nÐÒÑÐ¸Ð±Ð°Ñ Ð¸ÑегеÒ, ÓгÓÑ Ð±ÐµÑ ÒÓмÓл Ð´Ó Ò»Ð°Ð¹Ð»Ð°Ð½Ð¼Ð°Ò»Ð°, Ñл ÑаҡÑа Ò»Ó©ÒөмÑÓ Ð²Ð¸ÐºÐ¸- ÑекÑÑан ÑоÑаÑаҡ, Ñик ÑÑÒÑÑ Ñлекке ÑоÑмаÑÑа.",
"apihelp-expandtemplates-paramvalue-prop-wikitext": "ÐиңÓйÑелгÓн викиÑекÑÑ",
+ "apihelp-expandtemplates-paramvalue-prop-categories": "ÐÐ°Ñ ÐºÐ°ÑегоÑиÑÐ»Ð°Ñ Òа вики ÑекÑÑа күÑÒ»ÓÑелмÓй индеÑелгÓн мÓÒлүмÓÑÑÓÑÒе күÑÒ»ÓÑÓ",
+ "apihelp-expandtemplates-paramvalue-prop-properties": "Ðики-ÑекÑÑаÒÑ Ð±Ð¸Ð»Ð´Óле киңÓйÑелгÓн ÑÑлÑÑÐ¼Ð»Ñ Ò»Ò¯ÒÒÓÑÒең биÑÑÓÑе Ò¯ÒенÑÓлеге.",
+ "apihelp-expandtemplates-paramvalue-prop-ttl": "ÐакÑÐ¸Ð¼Ð°Ð»Ñ Ð²Ð°Ò¡ÑÑ Ò¯ÑкÓндÓн Ò»ÑÒ£ Ò»Ó©ÒөмÑÓ ÐºÑÑÑаÑÑ ÑÑаҡһÑÒ Ñип ÑабÑлÑÑÒа ÑейеÑ.",
+ "apihelp-expandtemplates-paramvalue-prop-jsconfigvars": "ÐÐ¸Ñ Ó©Ñөн Ò¯ÒенÑÓлекле JavaScript Ò¯ÒгÓÑеүÑÓн конÑигÑÑаÑиÑÐ»Ð°Ñ Ð±Ð¸ÑÓ.",
+ "apihelp-expandtemplates-paramvalue-prop-encodedjsconfigvars": "JavaScriptÑÑÒ£ JSON ÑÐ»Ñ Ò»Ñмаҡ Ò¯ÒенÑÓлекле биÑÑÓÑÐµÐ½Ó Ð°Ð»ÑÑÑна ÑоÑÒан конÑигÑÑаÑÐ¸Ñ Ð±Ð¸ÑÓ.",
"apihelp-expandtemplates-paramvalue-prop-parsetree": "XML кеÑеÑÐµÐ»Ó ÑоÑÒан мÓÒлүмÓÑ Ð°ÒаÑÑ (ÑÓжÓÑÓһе).",
+ "apihelp-expandtemplates-param-includecomments": "СÑҡҡанда HTML комменÑаÑийÒаÑÑна индеÑеү кÓÑÓкме?",
+ "apihelp-expandtemplates-example-simple": "Ðики-ÑекÑÑÑ Ð°ÑÑÒÑÒ {{Project:Sandbox}} .",
+ "apihelp-feedcontributions-description": "ҺеÒÒең иÑÐµÐ¼Ð³Ó ÐºÐ¸Ð»Ð³Óн ÑÓҡдимдÓÑÐ³Ó Ò¡Ð°Ð¹ÑÑÑ",
"apihelp-feedcontributions-param-feedformat": "ÐÓÒлүмÓÑÑÓÑ ÑÑÒаÑÑÑ ÑоÑмаÑÑ.",
"apihelp-feedcontributions-param-year": "ÐÑлдан баÑлап (Ò»Óм ÑлегеÑÓк):",
"apihelp-feedcontributions-param-month": "ÐйÒан баÑлап (Ò»Óм ÑлегеÑÓк):",
@@ -124,6 +138,7 @@
"apihelp-feedcontributions-param-newonly": "Ð¯Ò£Ñ Ð±Ð¸Ñ ÑһаÒан ÑÓ©ÒÓÑеүÒÓÑÒе Ð³ÐµÐ½Ó ÐºÒ¯ÑÒ»ÓÑеÑгÓ",
"apihelp-feedcontributions-param-showsizediff": "ӨлгÓоÓÑ Ð°ÑаһÑдаÒÑ ÐºÒ¯Ð»Óм айÑÑмаһÑн күÑÒ»ÓÑеÑгÓ",
"apihelp-feedcontributions-example-simple": "Ò ÑлланÑÑÑÑнÑÒ£ өлөÑөн күÑÒ»ÓÑеÑÐ³Ó Example .",
+ "apihelp-feedrecentchanges-description": "ÐаналдÑÒ£ Ò»ÑÒ£ÒÑ Ò¯ÒгÓÑеÑÑÓÑен киÑе ҡайÑаÑÑÑÒа.",
"apihelp-feedrecentchanges-param-feedformat": "ÐÓÒлүмÓÑÑÓÑ ÑÑÒаÑÑÑ ÑоÑмаÑÑ.",
"apihelp-feedrecentchanges-param-invert": "ҺайланÒандан баÑҡа иÑемдÓÑ Ð°ÑаÑÑÒÑ",
"apihelp-feedrecentchanges-param-limit": "Ò Ð°Ð¹ÑаÑÑлÒан Ò»Ó©ÒөмÑÓлÓÑÒең макÑÐ¸Ð¼Ð°Ð»Ñ Ò»Ð°Ð½Ñ.",
@@ -137,11 +152,17 @@
"apihelp-feedrecentchanges-param-tagfilter": "ТÑг бÑйÑнÑа Ò»Ó©ÒгөÑ",
"apihelp-feedrecentchanges-param-target": "ÐÑл биÑÑÓн Ò»ÑлÑанÒан биÑÑÓÑÒÓ Ò»ÑÒ£ÒÑ Ò¯ÒгÓÑÑеүÒÓÑÒе күÑÒ»ÓÑеÑгÓ",
"apihelp-feedrecentchanges-param-showlinkedto": "ÐиÑеһенÑÓ, бÑл биÑÐºÓ Ò»ÑлÑанма ÑһаÒан биÑÑÓÑÒÓге Ò¯ÒгÓÑÑеүÒÓÑÒе күÑÒ»ÓÑеÑгÓ",
+ "apihelp-feedrecentchanges-param-categories": "ÐÐ°Ñ ÐºÐ°ÑегоÑÐ¸Ñ Ð±Ð¸ÑÑÓÑендÓге Ò¯ÒгÓÑеÑÑÓÑÒе Ð³ÐµÐ½Ó ÐºÒ¯ÑÒ»ÓÑеÑгÓ",
+ "apihelp-feedrecentchanges-param-categories_any": "ÐÑл каÑегоÑиÑнан баÑҡа ÑелÓÒ»Ó Ò¡Ð°Ð¹Ò»Ñ ÐºÐ°ÑегоÑиÑÐ»Ð°Ñ Ð±Ð¸ÑÑÓÑендÓге Ò¯ÒгÓÑеÑÑÓÑÒе Ð³ÐµÐ½Ó ÐºÒ¯ÑÒ»ÓÑеÑгÓ",
"apihelp-feedrecentchanges-example-simple": "ÒºÑÒ£ÒÑ Ò¯ÒгÓÑÑеүÒÓÑÒе күÑÒ»ÓÑеÑгÓ.",
"apihelp-feedrecentchanges-example-30days": "30 көн аÑаÑÑÒÑндаÒÑ Ò»ÑÒ£ÒÑ Ò¯ÒгÓÑÑеүÒÓÑÒе күÑÒ»ÓÑеÑгÓ.",
+ "apihelp-feedwatchlist-description": "ÐÒ¯ÒÓÑеү каналÑн ҡайÑаÑа",
"apihelp-feedwatchlist-param-feedformat": "ÐÓÒлүмÓÑÑÓÑ ÑÑÒаÑÑÑ ÑоÑмаÑÑ.",
+ "apihelp-feedwatchlist-param-hours": "ÐÑл моменÑÑан Ò»ÑÒ£ күп ÑÓÒÓÑ ÑÑÐµÐ½Ð´Ó Ð±Ð¸ÑÑÓÑ Ð¸Ñемлеге Ò¯ÒгÓÑÑелгÓн.",
"apihelp-feedwatchlist-param-linktosections": "Ðөмкин бÑлһа, Ò¯ÒгÓÑÑеүÒÓÑ Ð±ÑлÒан Ð±Ò¯Ð»ÐµÐºÐºÓ ÑÑÑа Ò»ÑлÑанма.",
"apihelp-feedwatchlist-example-default": "ÐÒ¯ÒÓÑеү каналÑн күÑÒ»ÓÑеÑгÓ",
+ "apihelp-feedwatchlist-example-all6hrs": "ÐÒ¯ÒÓÑеү биÑÑÓÑендÓге Ò»ÑÒ£ÒÑ 6 ÑÓÒÓÑ ÑÑендÓге баÑлÑÒ¡ Ò¯ÒгÓÑеÑÑÓÑÒе күÑÒ»ÓÑеÑгÓ.",
+ "apihelp-filerevert-description": "Ð¤Ð°Ð¹Ð»Ð´Ñ Ð¸Ò«ÐºÐµ веÑÑиÑÒа ҡайÑаÑÑÑÒа.",
"apihelp-filerevert-param-filename": "ÐÑеÑикÑÒ»ÑÒ Ñайл иÑеме",
"apihelp-filerevert-param-comment": "ÐомменÑаÑий ÑейÓÑгÓ",
"apihelp-filerevert-example-revert": "ÐиÑе Wiki.png ÑÑаÑÒа 2011-03-05T15:27:40Z ҡайÑÑÑÒа.",
@@ -167,11 +188,22 @@
"apihelp-login-param-name": "Ò Ð°ÑнаÑÑÑÑÑ Ð¸Ñеме.",
"apihelp-login-param-password": "СеÑÒ»Ò¯Ò.",
"apihelp-login-param-domain": "Ðомен (моÑлаҡ Ñүгел).",
+ "apihelp-login-param-token": "ÐеÑенÑе һоÑÐ°Ñ Ð²Ð°Ò¡ÑÑÑнла алÑнÒан логин маÑкеÑ",
+ "apihelp-login-example-gettoken": "СиÑÑемаÒа инеү маÑкеÑÑн алÑÑ.",
"apihelp-login-example-login": "ТанÑлÑÑ.",
"apihelp-logout-description": "СÑÒÑÑÒа Ò»Óм ÑеÑÑÐ¸Ñ Ð¼ÓÒлүмÓÑен ÑйÑÑÒа.",
+ "apihelp-logout-example-logout": "ÐÒÑмдаÒÑ Ò¡ÑлланÑÑÑÑнÑÒ£ киÑкÓн ÑаҡÑа инеүе",
+ "apihelp-managetags-description": "ТегÑаÑÒÑ Ò¯ÒгÓÑÑеү менÓн бÓйле идаÑа иÑеү мÓÑÑÓлÓлÓÑен Ñ
Óл иÑеү",
+ "apihelp-managetags-param-reason": "\nÐилдÓне бÑлдÑÑÑÑ, ÑйÒÑÑÑÑ, акÑиваÑиÑÐ»Ð°Ñ Ò»Óм деакÑиваÑиÑÐ»Ð°Ñ Ó©Ñөн моÑлаҡ бÑлмаÒан ÑÓбÓп",
"apihelp-mergehistory-description": "Ò®ÒгÓÑÑеүÒÓÑ ÑаÑиÑ
Ñн беÑлÓÑÑеÑеү.",
+ "apihelp-mergehistory-param-from": "ТаÑиÑ
ÑÑ Ð±ÐµÑлÓÑÑеÑгÓн Ð±Ð¸Ñ Ð°ÑамаһÑ. $1fromid менÓн беÑÐ³Ó Ò¡ÑланÑÑÑ Ð¼Ó©Ð¼ÐºÐ¸Ð½ Ñүгел.",
+ "apihelp-mergehistory-param-fromid": "ТаÑиÑ
ÑÑ Ð±ÐµÑлÓÑÑеÑгÓн Ð±Ð¸Ñ Ð°ÑамаһÑ. $1fromid менÓн беÑÐ³Ó Ò¡ÑланÑÑÑ Ð¼Ó©Ð¼ÐºÐ¸Ð½ Ñүгел.",
+ "apihelp-mergehistory-param-to": "ТаÑиÑ
ÑÑ Ð±ÐµÑлÓÑÑеÑгÓн Ð±Ð¸Ñ Ð°ÑамаһÑ. $1fromid менÓн беÑÐ³Ó Ò¡ÑланÑÑÑ Ð¼Ó©Ð¼ÐºÐ¸Ð½ Ñүгел.",
+ "apihelp-mergehistory-param-toid": "ТаÑиÑ
ÑÑ Ð±ÐµÑлÓÑÑеÑгÓн Ð±Ð¸Ñ Ð°ÑамаһÑ. $1fromid менÓн беÑÐ³Ó Ò¡ÑланÑÑÑ Ð¼Ó©Ð¼ÐºÐ¸Ð½ Ñүгел.",
"apihelp-mergehistory-param-reason": "ТаÑиÑ
ÑÑ Ð±ÐµÑлÓÑÑеÑеү ÑÓбÓбе",
"apihelp-move-description": "ÐиÑÑең иÑемен Ò¯ÒгÓÑÑеÑгÓ",
+ "apihelp-move-param-from": "ÐÓ©Ñ
ÓÑиÑÑлÓÒ¯ Ó©Ñөн биÑÑең иÑеме.$1биÑÑÓÑÒÓн беÑÐ³Ó ÑайÒаланÑÑ Ð¼Ó©Ð¼ÐºÐ¸Ð½ Ñүгел.",
+ "apihelp-move-param-fromid": "ÐÐ¸Ñ Ð¸Ð´ÐµÐ½ÑиÑакÑоÑÑн мөÑ
ÓÑÑиÑлÓÒ¯ Ó©Ñөн биÑÑÓÑ. $1title менÓн беÑÐ³Ó Ò¡ÑлланÑла алмайÒаÑ.",
"apihelp-move-param-to": "ÐÑемен Ò¯ÒгÓÑÑеÑÐ³Ó ÑейеÑле биÑÑең Ð±Ð°Ñ Ò»Ò¯Òе",
"apihelp-move-param-reason": "Ò®ÒгÓÑÑеү ÑÓбÓбе",
"apihelp-move-param-movetalk": "Ð¤ÐµÐºÐµÑ Ð°Ð»ÑÑÑÑ Ð±Ð¸Ñе бÑлһа, иÑемен Ò¯ÒгÓÑÑеÑгÓ.",
@@ -179,27 +211,222 @@
"apihelp-move-param-noredirect": "ÐүнÓлÑеүÒÓÑ Ò¡Ñймаҫҡа",
"apihelp-move-param-watch": "ÐÒÑмдаÒÑ Ò¡ÑлланÑÑÑÑнÑÒ£ күÒÓÑеү биÑÐµÐ½Ó Ð±Ð¸Ñ Ò»Óм йүнÓлÑеү Ó©Ò«ÑÓÑгÓ.",
"apihelp-move-param-unwatch": "ÐÒÑмдаÒÑ Ò¡ÑлланÑÑÑÑнÑÒ£ күÒÓÑеү биÑÐµÐ½Ð´Ó Ð±Ð¸ÑÑе Ò»Óм йүнÓлÑеүÒе ÑйÑÑÒа.",
+ "apihelp-move-param-watchlist": "ÐÒÑмдаÒÑ Ò¡ÑлланÑÑÑÑнÑÒ£ ÑеÒмÓһенÓн биÑÑе Ò»Ò¯ÒÒ»ÐµÒ Ó©Ò«ÑÓÑÐ³Ó Ð¹Óки ÑйÑÑÒа, Ò»ÑлÑанмалаÑÒÑ ÑайÒаланÑÒÑÒ Ð¹Óки ÑÓÒÓÑÑе алмаÑÑÑÑмаҫҡа.",
"apihelp-move-param-ignorewarnings": "ÐÓ©ÑÓ Ð¸Ò«ÐºÓÑмÓлÓÑÐ³Ó Ð¸ÒÑÐ¸Ð±Ð°Ñ Ð¸ÑмÓҫкÓ",
"apihelp-move-example-move": "ÐÑемен Ò¯ÒгÓÑÑеÑÐ³Ó Badtitle Goodtitle йүнÓлÑеү Ò¡Ñймаҫҡа.",
+ "apihelp-opensearch-description": "OpenSearch пÑоÑоколÑн Ò¡ÑлланÑп вики ÑÒлÓÒ¯.",
"apihelp-opensearch-param-search": "ÐÒлÓÒ¯ ÑлÑ.",
"apihelp-opensearch-param-limit": "Ò Ð°Ð¹ÑаÑÑлÒан Ò»Ó©ÒөмÑÓлÓÑÒең макÑÐ¸Ð¼Ð°Ð»Ñ Ò»Ð°Ð½Ñ.",
"apihelp-opensearch-param-namespace": "ÐÒлÓÒ¯ Ó©Ñөн иÑемдÓÑ Ð°ÑаÑÑÒÑ",
"apihelp-opensearch-param-format": "ÐÓÒлүмÓÑÑÓÑ ÑÑÒаÑÑÑ ÑоÑмаÑÑ.",
+ "apihelp-opensearch-example-te": " Te KBD> менÓн баÑланÒан биÑÑÓÑÒе ÑабÑÑÒа.",
"apihelp-options-param-reset": "ÐилеÑеү бÑйÑнÑа көйлÓÒ¯ÒÓÑÐ³Ó ÐºÒ¯ÑеÑгÓ.",
"apihelp-options-example-reset": "ÐÓ©ÑÓ ÐºÓ©Ð¹Ð»ÓÒ¯ÒÓÑÒе ÑаÑлаÑÒа",
"apihelp-paraminfo-description": "API модÑле ÑÑÑаһÑнда мÓÒлүмÓÑ Ð°Ð»ÑÑÒа.",
"apihelp-paraminfo-param-helpformat": "ÐелеÑÐ¼Ó ÑÐ»Ñ ÑоÑмаÑÑ.",
+ "apihelp-parse-param-prop": "Ò Ð°Ð¹Ò»Ñ Ð¼ÓÒлүмÓÑÑе алÑÑÒа:",
+ "apihelp-parse-paramvalue-prop-langlinks": "Ðики-ÑекÑÑÑÒ£ ÑинÑакÑик анализÑнда ÑÑÑÒ¡Ñ ÑÑÑÐ»ÐºÐ°Ð»Ð°Ñ Ð±Ð¸ÑÓ.",
+ "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": "<код> & ÐТ -ҡа һалÑÑ Ó©Ñөн ÑлеменÑÑÐ°Ñ Ð±Ð¸ÑÓ; баÑÑ & GT; биÑÑең код>",
+ "apihelp-parse-paramvalue-prop-headhtml": "ÐйÑÑÑлÒан <код> & Ð»Ñ Ð±Ð¸ÑÓ; & баÑÑаÑÑ GТ; биÑÑең код>.",
+ "apihelp-parse-paramvalue-prop-jsconfigvars": "ÐÐ¸Ñ Ó©Ñөн Ò¯ÒенÑÓлекле JavaScript Ò¯ÒгÓÑеүÑÓн конÑигÑÑаÑиÑÐ»Ð°Ñ Ð±Ð¸ÑÓ.",
+ "apihelp-parse-paramvalue-prop-encodedjsconfigvars": "JavaScriptÑÑÒ£ JSON ÑÐ»Ñ Ò»Ñмаҡ Ò¯ÒенÑÓлекле биÑÑÓÑÐµÐ½Ó Ð°Ð»ÑÑÑна ÑоÑÒан конÑигÑÑаÑÐ¸Ñ Ð±Ð¸ÑÓ.",
+ "apihelp-parse-paramvalue-prop-iwlinks": "Ðики-ÑекÑÑÑÒ£ ÑинÑакÑик анализÑнда инÑеÑвикÑаÑÒа Ò»ÑлÑанма биÑÓ.",
+ "apihelp-parse-paramvalue-prop-wikitext": "ÒºÑÒÑмÑа ÑÒºÐ°Ñ Ó©Ñөн ÑÓүге вики-ÑекÑÑÑ ÐºÒ¯ÑÒ»ÓÑÓ",
+ "apihelp-parse-paramvalue-prop-properties": "Ðики-ÑекÑÑÑÒ£ ÑинÑакÑик анализÑнда билдÓлÓнгÓн ÑÓ©Ñлө ÑиÑаÑÑаÑÒÑ Ð±Ð¸ÑÓ.",
+ "apihelp-parse-paramvalue-prop-limitreportdata": "СÑÑÑкÑÑÑа Ò»Ñмаҡ иÑеп Ñөплө оÑÑÐµÑ Ð±Ð¸ÑÓ. $1disablelimitreport ваÑ> <алÑÑÑнÑÑÑÑ> Ò¡ÑйÑлÒан ваҡÑÑÑа Ð±ÐµÑ Ð½Ð¸Ð½Ð´Óй мÓÒлүмÓÑ ÑÓ Ð±Ð¸ÑмÓй.",
+ "apihelp-parse-paramvalue-prop-limitreporthtml": "Төплө оÑÑеÑÑÑÒ£ HTML веÑÑиÑÒ»Ñн биÑÓ. <пеÑеменнаÑ>$1disablelimitreport ваÑ> Ò¡ÑйÑлÒан бÑлһа,Ð±ÐµÑ Ð¼ÓÒлүмÓÑ ÑÓ Ð±Ð¸ÑмÓй.",
+ "apihelp-parse-param-disablepp": "УÑÑнÑна $1disablelimitreport Ò¡ÑлланÑÑÒа.",
+ "apihelp-parse-param-preview": "Ðлдан ҡаÑÐ°Ñ ÑежимÑнда ÑинÑакÑик анализ",
"apihelp-parse-example-page": "ÐиÑÑе ÑикÑеÑеү.",
"apihelp-parse-example-text": "ТикÑеÑеү: wikitext.",
+ "apihelp-parse-example-summary": "ÒºÑÒÑмÑÐ°Ð½Ñ ÑикÑеÑеү.",
"apihelp-patrol-param-rcid": "Ð¯Ò£Ñ ID Ò¯ÒгÓÑÑеүÒÓÑÒе паÑÑÑллÓÒ¯ Ó©Ñөн",
"apihelp-patrol-param-revid": "ID мөÑ
ÓÑÑиÑÒе паÑÑллÓÒ¯",
+ "apihelp-patrol-param-tags": "ЮйÒÑÑÑлÒÐ°Ð½Ð´Ð°Ñ Ð¶ÑÑналÑндаÒÑ ÑÒмалаÑÒа мөÑÓжÓÒÓÑ Ð¸ÑÐµÑ Ó©Ñөн, билдÓлÓÑÒе Ò¯ÒгÓÑÑеÑгÓ.",
+ "apihelp-patrol-example-rcid": "ÒºÑÒ£ÒÑ Ò¯ÒгÓÑеÑÑÓÑÒе ҡаÑаÑ.",
+ "apihelp-patrol-example-revid": "ЯңÑнан ҡаÑаÑ.",
"apihelp-protect-description": "ÐиÑÑе Ò»Ð°Ò¡Ð»Ð°Ñ ÐºÐ¸Ð¼Óлен Ò¯ÒгÓÑÑеÑгÓ",
+ "apihelp-protect-param-title": "ÐÐ¸Ñ Ð°ÑамаһÑ. $1pageid менÓн беÑÐ³Ó Ò¡ÑлланÑлмай.",
+ "apihelp-protect-param-reason": "(ÐÐÐ) һаÒÑ ÑÓбÓпÑÓÑе.",
+ "apihelp-protect-param-tags": "ЮйÒÑÑÑлÒÐ°Ð½Ð´Ð°Ñ Ð¶ÑÑналÑндаÒÑ ÑÒмалаÑÒа мөÑÓжÓÒÓÑ Ð¸ÑÐµÑ Ó©Ñөн, билдÓлÓÑÒе Ò¯ÒгÓÑÑеÑгÓ.",
+ "apihelp-protect-param-watchlist": "ÐÒÑмдаÒÑ Ò¡ÑлланÑÑÑÑнÑÒ£ ÑеÒмÓһенÓн биÑÑе Ò»Ò¯ÒÒ»ÐµÒ Ó©Ò«ÑÓÑÐ³Ó Ð¹Óки ÑйÑÑÒа, Ò»ÑлÑанмалаÑÒÑ ÑайÒаланÑÒÑÒ Ð¹Óки ÑÓÒÓÑÑе алмаÑÑÑÑмаҫҡа.",
"apihelp-protect-example-protect": "ÐиÑÑе һаҡлаÑÒа.",
+ "apihelp-protect-example-unprotect": "вÑеÑ
Ó©Ñөн ÑиклÓÒ¯ÒÓÑ Ò¡ÑйÑп,биÑÑÓн һаҡлаÑÒÑ Ð°Ð»ÑÑÒа.",
+ "apihelp-protect-example-unprotect2": "ÐÐµÑ Ð½Ð¸Ð½Ð´Óй ÑиклÓÒ¯ÒÓÑ Ò¡Ñймай биÑÑÓн һаҡлаÑÒÑ Ð°Ð»ÑÑÒа.",
"apihelp-purge-param-forcelinkupdate": "ТаблиÑÐ°Ð»Ð°Ñ Ð±ÓйлÓнеÑен ÑÒ£ÑÑÑÑÑ.",
+ "apihelp-purge-param-forcerecursivelinkupdate": "ÒºÑлÑÐ°Ð½Ð¼Ð°Ð½Ñ Ò»Óм ÑаблиÑÐ°Ð½Ñ ÑÒ£ÑÑÑÑÒÑÒ Ò»Óм бÑл биÑÑе Ñаблон иÑеп Ò¡ÑлланÒан баÑҡа биÑÑÓÑ Ó©Ñөн Ò»ÑлÑанмалаÑÒÑ Ð»Ð° ÑÒ£ÑÑÑÑÒÑÒ.",
"apihelp-query-param-list": "ÐиндÓй иÑемлекÑе Ò¡ÑлланÑÑÒа",
"apihelp-query-param-meta": "ÐиндÓй маÑамÓÒлүмÓÑ Ò¡ÑлланÑÑÒа",
"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-limit": "ÐиÑÓ ÐºÐ°ÑегоÑиÑÐ½Ñ ÐºÐ¸Ñе ҡайÑаÑÑÑÒа",
"apihelp-query+allcategories-param-prop": "ÐиндÓй Ò¯ÒенÑÓлек алÑÑÒа:",
- "apihelp-query+allmessages-param-prop": "ÐиндÓй Ò¯ÒенÑÓлек алÑÑÒа:"
+ "apihelp-query+allcategories-paramvalue-prop-size": "ÐаÑегоÑиÑлаÑÒа биÑÑÓÑ Ò»Ð°Ð½Ñ Ó©Ò«ÑÓÒ¯",
+ "apihelp-query+allcategories-example-size": "ÐиÑÑÓÑ Ò»Ð°Ð½Ñ Ð±ÑйÑнÑа мÓÒлүмÓÑле каÑегоÑиÑÐ»Ð°Ñ Ð¸Ñемлеге.",
+ "apihelp-query+allcategories-example-generator": "иÑемлек каÑегоÑиÑÐ»Ð°Ñ Ð±Ð¸ÑенÓн мÓÒлүмÓÑ Ð°Ð»ÑÑÒа.",
+ "apihelp-query+alldeletedrevisions-description": "ÐÐ°Ñ Ð¼Ó©Ñ
ÓÑÑиÑлÓÒ¯ иÑемлеге Ò¡ÑлланÑÑÑÑ ÑаÑаÑÑнан ÑйÑлÒан.",
+ "apihelp-query+alldeletedrevisions-paraminfo-useronly": "$3Ò¡ÑлланÑÑÑÑнÑÒ£ менÓн Ð³ÐµÐ½Ó Ò¡ÑлланÑла ала.",
+ "apihelp-query+alldeletedrevisions-param-end": "ÐÒ«Óп күÑеÑеү баÑланÒан ваҡÑÑ Ð±Ð¸Ð»Ð´Óһе",
+ "apihelp-query+alldeletedrevisions-param-prefix": "ÐÑл мÓÒÓнÓнÓн баÑланÒан Ð±Ð°Ñ Ð°ÑамалаÑÒÑ ÐºÐ°ÑегоÑиÑÐ»Ð°Ñ Ð±ÑйÑнÑа ÑÒлÓÑгÓ.",
+ "apihelp-query+alldeletedrevisions-param-user": "ÐаÑÑ Ñик бÑл Ò¡ÑлланÑÑÑÑнÑÒ£ Ò¯ÒгÓÑÑеүÒÓÑ Ð¸Ñемлеге.",
+ "apihelp-query+alldeletedrevisions-param-namespace": "ÐаÑÑ Ñик бÑл иÑемдÓÑ Ð°ÑаÑÑÒÑндаÒÑ Ð±Ð¸ÑÑÓÑ Ð¸Ñемлеге.",
+ "apihelp-query+alldeletedrevisions-example-ns-main": "Төп иÑемдÓÑ Ð°ÑаÑÑÒÑнда ÑйÑлÒан ÑÓүге 50 Ò¯ÒгÓÑÑеү иÑемлеге.",
+ "apihelp-query+allfileusages-description": "ЮйÑлÒÐ°Ð½Ð´Ð°Ñ Ð¼ÐµÐ½Óн беÑÐ³Ó Ð±Ð°ÑлÑÒ¡ ÑÐ°Ð¹Ð»Ð´Ð°Ñ ÑÓÑÑибе иÑемлеге.",
+ "apihelp-query+allfileusages-param-from": "ҺанаÑÒÑ Ð±Ð°ÑÐ»Ð°Ñ Ó©Ñөн Ñайл аÑамаһÑ.",
+ "apihelp-query+allfileusages-param-to": "ҺанаÑÒÑ ÑÑÒ¡ÑаÑÑÑ ÑÐ°Ð¹Ð»Ñ Ð°ÑамаһÑ.",
+ "apihelp-query+allfileusages-param-prefix": "ÐÑл мÓÒÓнÓнÓн баÑланÒан Ð±Ð°Ñ Ð°ÑамалаÑÒÑ ÐºÐ°ÑегоÑиÑÐ»Ð°Ñ Ð±ÑйÑнÑа ÑÒлÓÑгÓ.",
+ "apihelp-query+allfileusages-param-prop": "Ò Ð°Ð¹Ò»Ñ Ð¼ÓÒлүмÓÑÑе күÑÒ»ÓÑеÑгÓ:",
+ "apihelp-query+allfileusages-paramvalue-prop-title": "Файл аÑамаһÑна Ò¡ÑÑа.",
+ "apihelp-query+allfileusages-param-limit": "ÐиÑÓ Ð±Ð¸ÑÑе ÑеÑгеÒеÑгÓ?",
+ "apihelp-query+allfileusages-param-dir": "ÒºÐ°Ð½Ð°Ñ Ð¹Ò¯Ð½ÓлеÑе.",
+ "apihelp-query+allfileusages-example-unique": "ÐÑамалаÑÒÑÒ£ ÑÒенÑÓлекле ÑайлдаÑÑ Ð¸Ñемлеге.",
+ "apihelp-query+allfileusages-example-unique-generator": "ТөÑөп ҡалÒандаÑÒÑ Ð°Ð¹ÑÑÑп, баÑлÑÒ¡ иÑем-Ò»ÑлÑанмалаÑÒÑ Ð°Ð»ÑÑÒа.",
+ "apihelp-query+allimages-description": "ÐеÑ-Ð±ÐµÑ Ð°ÑÑÐ»Ñ Ð±Ó©ÑÓ Ð¾Ð±ÑаздаÑÒÑ Ò»Ð°Ð½Ð°Ð¿ ÑÑÒÑÑÒа.",
+ "apihelp-query+allimages-param-sort": "СоÑÑиÑÐ¾Ð²ÐºÐ°Ð»Ð°Ñ Ò¯ÒенÑÓлекÑÓÑе.",
+ "apihelp-query+allimages-param-dir": "ÒºÐ°Ð½Ð°Ñ Ð¹Ò¯Ð½ÓлеÑе.",
+ "apihelp-query+allimages-param-minsize": "ÒºÒ¯ÑÓÑÑÓÑ Ð»Ð¸Ð¼Ð¸ÑÑ (байÑÑаÑÒа).",
+ "apihelp-query+allimages-param-maxsize": "ÐÐ°Ñ Ò»Ò¯ÑÓÑÑÓÑ Ð»Ð¸Ð¼Ð¸ÑÑ (байÑÑаÑÒа).",
+ "apihelp-query+allimages-param-limit": "ÐиÑе ҡайÑÑÑ Ó©Ñөн обÑÐ°Ð·Ð´Ð°Ñ Ò»Ð°Ð½Ñ.",
+ "apihelp-query+allimages-example-B": "Ð Ñ
ÓÑеÑенÓн баÑланÒан ÑÐ°Ð¹Ð»Ð´Ð°Ñ Ð¸Ñемлеген күÑÒ»ÓÑеÑгÓ.",
+ "apihelp-query+allimages-example-generator": "Ð Ñ
ÓÑеÑенÓн баÑланÒан ÑÐ°Ð¹Ð»Ð´Ð°Ñ Ð¸Ñемлеген күÑÒ»ÓÑеÑгÓ.",
+ "apihelp-query+alllinks-description": "ÐиÑелгÓн иÑемдÓÑ Ð°ÑаÑÑÒÑна йүнÓлÑкÓн баÑлÑÒ¡ Ò»ÑлÑанмалаÑÒÑ Ò»Ð°Ð½Ð°Ð¿ ÑÑÒÑÑÒа.",
+ "apihelp-query+alllinks-param-from": "ҺанаÑÒÑ Ð±Ð°ÑÐ»Ð°Ñ Ó©Ñөн Ò»ÑлÑанма аÑамаһÑ.",
+ "apihelp-query+alllinks-param-to": "ҺанаÑÒÑ ÑÑÒ¡ÑаÑÑÑ Ò»ÑлÑÐ°Ð½Ð¼Ð°Ò»Ñ Ð°ÑамаһÑ.",
+ "apihelp-query+alllinks-param-prefix": "ÐÑл мÓÒÓнÓнÓн баÑланÒан бÓйлÓнеÑле Ð±Ð°Ñ Ð°ÑамалаÑÒÑ ÑÒлÓÑгÓ.",
+ "apihelp-query+alllinks-param-prop": "Ò Ð°Ð¹Ò»Ñ Ð¼ÓÒлүмÓÑÑе күÑÒ»ÓÑеÑгÓ:",
+ "apihelp-query+alllinks-paramvalue-prop-title": "ÒºÑлÑанма аÑамаһÑн Ò¡ÑÑа.",
+ "apihelp-query+alllinks-param-namespace": "ÒºÐ°Ð½Ð°Ñ Ó©Ñөн иÑемдÓÑ Ð°ÑаÑÑÒÑ.",
+ "apihelp-query+alllinks-param-limit": "ÐиÑÓ Ð±Ð¸ÑÑе ÑеÑгеÒеÑгÓ?",
+ "apihelp-query+alllinks-param-dir": "ÒºÐ°Ð½Ð°Ñ Ð¹Ò¯Ð½ÓлеÑе.",
+ "apihelp-query+alllinks-example-unique": "ÐÑамалаÑÒÑÒ£ ÑÒенÑÓлекле ÑайлдаÑÑ Ð¸Ñемлеге.",
+ "apihelp-query+alllinks-example-unique-generator": "ТөÑөп ҡалÒандаÑÒÑ Ð°Ð¹ÑÑÑп, баÑлÑÒ¡ иÑем-Ò»ÑлÑанмалаÑÒÑ Ð°Ð»ÑÑÒа.",
+ "apihelp-query+alllinks-example-generator": "ÒºÑлÑÐ°Ð½Ð¼Ð°Ð»Ñ Ð±Ð¸ÑÑÓÑ Ð±Ð°Ñ.",
+ "apihelp-query+allmessages-description": "ÐÑл ÑайÑÑан Ñ
ÓбÓÑ Ò¡Ð°Ð¹ÑаÑÑÑ.",
+ "apihelp-query+allmessages-param-prop": "ÐиндÓй Ò¯ÒенÑÓлек алÑÑÒа:",
+ "apihelp-query+allmessages-param-args": "ÐÑгÑменÑÑÐ°Ñ Ð¥ÓбÓÑÒÓÑÒÓ Ð±Ð¸ÑелÓÑÓк.",
+ "apihelp-query+allpages-param-from": "ÐÒ«Óп күÑеÑеү баÑланÒан ваҡÑÑ Ð±Ð¸Ð»Ð´Óһе",
+ "apihelp-query+allpages-param-to": "ÐÒ«Óп күÑеÑеү баÑланÒан ваҡÑÑ Ð±Ð¸Ð»Ð´Óһе",
+ "apihelp-query+allpages-param-prefix": "ÐÑл мÓÒÓнÓнÓн баÑланÒан Ð±Ð°Ñ Ð°ÑамалаÑÒÑ ÐºÐ°ÑегоÑиÑÐ»Ð°Ñ Ð±ÑйÑнÑа ÑÒлÓÑгÓ.",
+ "apihelp-query+allpages-param-namespace": "ÒºÐ°Ð½Ð°Ñ Ó©Ñөн иÑемдÓÑ Ð°ÑаÑÑÒÑ.",
+ "apihelp-query+allpages-param-minsize": "ÒºÒ¯ÑÓÑÑÓÑ Ð»Ð¸Ð¼Ð¸ÑÑ (байÑÑаÑÒа).",
+ "apihelp-query+allpages-param-limit": "ÐиÑÓ Ð±Ð¸ÑÑе ÑеÑгеÒеÑгÓ?",
+ "apihelp-query+allpages-param-dir": "ÒºÐ°Ð½Ð°Ñ Ð¹Ò¯Ð½ÓлеÑе.",
+ "apihelp-query+allpages-example-B": "Ð Ñ
ÓÑеÑенÓн баÑланÒан ÑÐ°Ð¹Ð»Ð´Ð°Ñ Ð¸Ñемлеген күÑÒ»ÓÑеÑгÓ.",
+ "apihelp-query+allpages-example-generator": "Ð Ñ
ÓÑеÑенÓн баÑланÒан ÑÐ°Ð¹Ð»Ð´Ð°Ñ Ð¸Ñемлеген күÑÒ»ÓÑеÑгÓ.",
+ "apihelp-query+allredirects-param-from": "ҺанаÑÒÑ ÑÑÒ¡ÑаÑÑÑ ÑÐ°Ð¹Ð»Ñ Ð°ÑамаһÑ.",
+ "apihelp-query+allredirects-param-to": "ҺанаÑÒÑ ÑÑÒ¡ÑаÑÑÑ ÑÐ°Ð¹Ð»Ñ Ð°ÑамаһÑ.",
+ "apihelp-query+allredirects-param-prefix": "ÐÑл мÓÒÓнÓнÓн баÑланÒан Ð±Ð°Ñ Ð°ÑамалаÑÒÑ ÐºÐ°ÑегоÑиÑÐ»Ð°Ñ Ð±ÑйÑнÑа ÑÒлÓÑгÓ.",
+ "apihelp-query+allredirects-param-prop": "Ò Ð°Ð¹Ò»Ñ Ð¼ÓÒлүмÓÑÑе күÑÒ»ÓÑеÑгÓ:",
+ "apihelp-query+allredirects-param-namespace": "ÒºÐ°Ð½Ð°Ñ Ó©Ñөн иÑемдÓÑ Ð°ÑаÑÑÒÑ.",
+ "apihelp-query+allredirects-param-dir": "ÒºÐ°Ð½Ð°Ñ Ð¹Ò¯Ð½ÓлеÑе.",
+ "apihelp-query+allredirects-example-generator": "ÒºÑлÑÐ°Ð½Ð¼Ð°Ð»Ñ Ð±Ð¸ÑÑÓÑ Ð±Ð°Ñ.",
+ "apihelp-query+allrevisions-param-start": "ÐÒ«Óп күÑеÑеү баÑланÒан ваҡÑÑ Ð±Ð¸Ð»Ð´Óһе",
+ "apihelp-query+allrevisions-param-end": "ÐÒ«Óп күÑеÑеү баÑланÒан ваҡÑÑ Ð±Ð¸Ð»Ð´Óһе",
+ "apihelp-query+allrevisions-param-user": "ÐаÑÑ Ñик бÑл Ò¡ÑлланÑÑÑÑнÑÒ£ Ò¯ÒгÓÑÑеүÒÓÑ Ð¸Ñемлеге.",
+ "apihelp-query+allrevisions-param-excludeuser": "ÐаÑÑ Ñик бÑл Ò¡ÑлланÑÑÑÑнÑÒ£ Ò¯ÒгÓÑÑеүÒÓÑ Ð¸Ñемлеге.",
+ "apihelp-query+alltransclusions-example-generator": "ÒºÑлÑÐ°Ð½Ð¼Ð°Ð»Ñ Ð±Ð¸ÑÑÓÑ Ð±Ð°Ñ.",
+ "apihelp-query+allusers-param-from": "ÐÒ«Óп күÑеÑеү баÑланÒан ваҡÑÑ Ð±Ð¸Ð»Ð´Óһе",
+ "apihelp-query+allusers-param-to": "ÐÒ«Óп күÑеÑеү баÑланÒан ваҡÑÑ Ð±Ð¸Ð»Ð´Óһе",
+ "apihelp-query+allusers-param-prefix": "ÐÑл мÓÒÓнÓнÓн баÑланÒан Ð±Ð°Ñ Ð°ÑамалаÑÒÑ ÐºÐ°ÑегоÑиÑÐ»Ð°Ñ Ð±ÑйÑнÑа ÑÒлÓÑгÓ.",
+ "apihelp-query+allusers-param-prop": "Ò Ð°Ð¹Ò»Ñ Ð¼ÓÒлүмÓÑÑе күÑÒ»ÓÑеÑгÓ:",
+ "apihelp-query+backlinks-param-title": "ÐÓ©Ñ
ÓÑиÑÑлÓÒ¯ Ó©Ñөн биÑÑең иÑеме.$1биÑÑÓÑÒÓн беÑÐ³Ó ÑайÒаланÑÑ Ð¼Ó©Ð¼ÐºÐ¸Ð½ Ñүгел.",
+ "apihelp-query+backlinks-param-pageid": "ÐÐ¸Ñ Ð¸Ð´ÐµÐ½ÑиÑакÑоÑÑн мөÑ
ÓÑÑиÑлÓÒ¯ Ó©Ñөн биÑÑÓÑ. $1title менÓн беÑÐ³Ó Ò¡ÑлланÑла алмайÒаÑ",
+ "apihelp-query+backlinks-param-dir": "ÒºÐ°Ð½Ð°Ñ Ð¹Ò¯Ð½ÓлеÑе.",
+ "apihelp-query+blocks-param-start": "ÐÒ«Óп күÑеÑеү баÑланÒан ваҡÑÑ Ð±Ð¸Ð»Ð´Óһе",
+ "apihelp-query+blocks-param-end": "ÐÒ«Óп күÑеÑеү баÑланÒан ваҡÑÑ Ð±Ð¸Ð»Ð´Óһе",
+ "apihelp-query+blocks-param-prop": "ÐиндÓй Ò¯ÒенÑÓлек алÑÑÒа:",
+ "apihelp-query+blocks-example-simple": "ÐеÑлÓÑÐ¼Ó Ð¸Ñемлеге",
+ "apihelp-query+categories-param-limit": "ÐиÑÓ ÐºÐ°ÑегоÑиÑÐ½Ñ ÐºÐ¸Ñе ҡайÑаÑÑÑÒа",
+ "apihelp-query+categories-param-dir": "ÒºÐ°Ð½Ð°Ñ Ð¹Ò¯Ð½ÓлеÑе.",
+ "apihelp-query+categorymembers-param-pageid": "ÐÐ¸Ñ Ð¸Ð´ÐµÐ½ÑиÑакÑоÑÑ ÑйÑлÑÑ Ó©Ñөн биÑÑÓÑ. $1title менÓн беÑÐ³Ó Ò¡ÑлланÑла алмайÒаÑ",
+ "apihelp-query+categorymembers-param-prop": "Ò Ð°Ð¹Ò»Ñ Ð¼ÓÒлүмÓÑÑе күÑÒ»ÓÑеÑгÓ:",
+ "apihelp-query+categorymembers-param-limit": "ÐиÑе ҡайÑаÑÑлÒан белдеÑеүÒÓÑÒең иң күп һанÑ",
+ "apihelp-query+categorymembers-param-sort": "СоÑÑҡа бүлеү Ò¯ÒенÑÓлеге",
+ "apihelp-query+contributors-param-limit": "ÐиÑÓ Ð±Ð¸ÑÑе ÑеÑгеÒеÑгÓ?",
+ "apihelp-query+deletedrevisions-param-user": "ÐаÑÑ Ñик бÑл Ò¡ÑлланÑÑÑÑнÑÒ£ Ò¯ÒгÓÑÑеүÒÓÑ Ð¸Ñемлеге.",
+ "apihelp-query+deletedrevisions-param-excludeuser": "ÐаÑÑ Ñик бÑл Ò¡ÑлланÑÑÑÑнÑÒ£ Ò¯ÒгÓÑÑеүÒÓÑ Ð¸Ñемлеге.",
+ "apihelp-query+deletedrevs-param-start": "ÐÒ«Óп күÑеÑеү баÑланÒан ваҡÑÑ Ð±Ð¸Ð»Ð´Óһе",
+ "apihelp-query+deletedrevs-param-end": "ÐÒ«Óп күÑеÑеү баÑланÒан ваҡÑÑ Ð±Ð¸Ð»Ð´Óһе",
+ "apihelp-query+deletedrevs-param-prefix": "ÐÑл мÓÒÓнÓнÓн баÑланÒан Ð±Ð°Ñ Ð°ÑамалаÑÒÑ ÐºÐ°ÑегоÑиÑÐ»Ð°Ñ Ð±ÑйÑнÑа ÑÒлÓÑгÓ.",
+ "apihelp-query+deletedrevs-param-user": "ÐаÑÑ Ñик бÑл Ò¡ÑлланÑÑÑÑнÑÒ£ Ò¯ÒгÓÑÑеүÒÓÑ Ð¸Ñемлеге.",
+ "apihelp-query+duplicatefiles-param-dir": "ÒºÐ°Ð½Ð°Ñ Ð¹Ò¯Ð½ÓлеÑе.",
+ "apihelp-query+duplicatefiles-example-generated": "ÐоиÑк дÑбликаÑов вÑеÑ
Ñайлов.",
+ "apihelp-query+embeddedin-param-title": "ÐÓ©Ñ
ÓÑиÑÑлÓÒ¯ Ó©Ñөн биÑÑең иÑеме.$1биÑÑÓÑÒÓн беÑÐ³Ó ÑайÒаланÑÑ Ð¼Ó©Ð¼ÐºÐ¸Ð½ Ñүгел.",
+ "apihelp-query+embeddedin-param-pageid": "ÐÐ¸Ñ Ð¸Ð´ÐµÐ½ÑиÑакÑоÑÑн мөÑ
ÓÑÑиÑлÓÒ¯ Ó©Ñөн биÑÑÓÑ. $1title менÓн беÑÐ³Ó Ò¡ÑлланÑла алмайÒаÑ",
+ "apihelp-query+embeddedin-param-dir": "ÒºÐ°Ð½Ð°Ñ Ð¹Ò¯Ð½ÓлеÑе.",
+ "apihelp-query+embeddedin-param-limit": "ÐиÑÓ Ð±Ð¸ÑÑе ÑеÑгеÒеÑгÓ?",
+ "apihelp-query+exturlusage-param-limit": "Ðүпме Ò»ÑлÑанмалаÑÒÑ ÐºÐ¸Ñе ҡайÑаÑÑÑÒа.",
+ "apihelp-query+filearchive-param-from": "ÐÒ«Óп күÑеÑеү баÑланÒан ваҡÑÑ Ð±Ð¸Ð»Ð´Óһе",
+ "apihelp-query+filearchive-param-to": "ÐÒ«Óп күÑеÑеү баÑланÒан ваҡÑÑ Ð±Ð¸Ð»Ð´Óһе",
+ "apihelp-query+filearchive-param-prefix": "ÐÑл мÓÒÓнÓнÓн баÑланÒан Ð±Ð°Ñ Ð°ÑамалаÑÒÑ ÐºÐ°ÑегоÑиÑÐ»Ð°Ñ Ð±ÑйÑнÑа ÑÒлÓÑгÓ.",
+ "apihelp-query+filearchive-param-dir": "ÒºÐ°Ð½Ð°Ñ Ð¹Ò¯Ð½ÓлеÑе.",
+ "apihelp-query+fileusage-param-prop": "ÐиндÓй Ò¯ÒенÑÓлек алÑÑÒа:",
+ "apihelp-query+fileusage-param-limit": "Ðүпме Ò»ÑлÑанмалаÑÒÑ ÐºÐ¸Ñе ҡайÑаÑÑÑÒа.",
+ "apihelp-query+imageinfo-param-prop": "Ò Ð°Ð¹Ò»Ñ Ð¼ÓÒлүмÓÑÑе алÑÑÒа:",
+ "apihelp-query+imageinfo-paramvalue-prop-mediatype": "Файл аÑамаһÑна Ò¡ÑÑа.",
+ "apihelp-query+images-param-limit": "Ðүпме Ò»ÑлÑанмалаÑÒÑ ÐºÐ¸Ñе ҡайÑаÑÑÑÒа.",
+ "apihelp-query+images-param-dir": "ÒºÐ°Ð½Ð°Ñ Ð¹Ò¯Ð½ÓлеÑе.",
+ "apihelp-query+imageusage-param-title": "ÐÓ©Ñ
ÓÑиÑÑлÓÒ¯ Ó©Ñөн биÑÑең иÑеме.$1биÑÑÓÑÒÓн беÑÐ³Ó ÑайÒаланÑÑ Ð¼Ó©Ð¼ÐºÐ¸Ð½ Ñүгел.",
+ "apihelp-query+imageusage-param-pageid": "ÐÐ¸Ñ Ð¸Ð´ÐµÐ½ÑиÑакÑоÑÑн мөÑ
ÓÑÑиÑлÓÒ¯ Ó©Ñөн биÑÑÓÑ. $1title менÓн беÑÐ³Ó Ò¡ÑлланÑла алмайÒаÑ",
+ "apihelp-query+imageusage-param-dir": "ÒºÐ°Ð½Ð°Ñ Ð¹Ò¯Ð½ÓлеÑе.",
+ "apihelp-query+info-paramvalue-prop-protection": "ÐиÑÑе Ò»Ð°Ò¡Ð»Ð°Ñ ÐºÐ¸Ð¼Óлен Ò¯ÒгÓÑÑеÑгÓ",
+ "apihelp-query+iwbacklinks-param-limit": "ÐиÑÓ Ð±Ð¸ÑÑе ÑеÑгеÒеÑгÓ?",
+ "apihelp-query+iwbacklinks-param-prop": "ÐиндÓй Ò¯ÒенÑÓлек алÑÑÒа:",
+ "apihelp-query+iwbacklinks-paramvalue-prop-iwtitle": "Файл аÑамаһÑна Ò¡ÑÑа.",
+ "apihelp-query+iwlinks-param-dir": "ÒºÐ°Ð½Ð°Ñ Ð¹Ò¯Ð½ÓлеÑе.",
+ "apihelp-query+langbacklinks-param-limit": "ÐиÑÓ Ð±Ð¸ÑÑе ÑеÑгеÒеÑгÓ?",
+ "apihelp-query+langbacklinks-param-prop": "ÐиндÓй Ò¯ÒенÑÓлек алÑÑÒа:",
+ "apihelp-query+links-param-limit": "Ðүпме Ò»ÑлÑанмалаÑÒÑ ÐºÐ¸Ñе ҡайÑаÑÑÑÒа.",
+ "apihelp-query+links-param-dir": "ÒºÐ°Ð½Ð°Ñ Ð¹Ò¯Ð½ÓлеÑе.",
+ "apihelp-query+linkshere-param-prop": "ÐиндÓй Ò¯ÒенÑÓлек алÑÑÒа:",
+ "apihelp-query+logevents-description": "ÐÑÑналдаÑÒан ваҡиÒа алÑÑ.",
+ "apihelp-query+logevents-param-prop": "ÐиндÓй Ò¯ÒенÑÓлек алÑÑÒа:",
+ "apihelp-query+logevents-param-start": "ÐÒ«Óп күÑеÑеү баÑланÒан ваҡÑÑ Ð±Ð¸Ð»Ð´Óһе",
+ "apihelp-query+logevents-param-end": "ÐÒ«Óп күÑеÑеү ÑамамланÒан ваҡÑÑ Ð±Ð¸Ð»Ð´Óһе",
+ "apihelp-query+logevents-example-simple": " ÒºÑÒ£ÒÑ ÑеÑкÓлгÓн ваҡиÒÐ°Ð»Ð°Ñ Ð¸Ñемлеге.",
+ "apihelp-query+pagepropnames-param-limit": "ÐиÑе ҡайÑаÑÑлÒан белдеÑеүÒÓÑÒең иң күп һанÑ",
+ "apihelp-query+pagepropnames-example-simple": "ТÓүге 10 иÑем ÑиÑаÑÑн алÑÑ.",
+ "apihelp-query+pageswithprop-param-prop": "Ò Ð°Ð¹Ò»Ñ Ð¼ÓÒлүмÓÑÑе күÑÒ»ÓÑеÑгÓ:",
+ "apihelp-query+pageswithprop-param-limit": "ÐиÑе ҡайÑаÑÑлÒан белдеÑеүÒÓÑÒең иң күп һанÑ",
+ "apihelp-query+pageswithprop-param-dir": "ÐиндÓй йүнÓлеÑÐºÓ Ð°Ð¹ÑÑÑÑÒа",
+ "apihelp-query+prefixsearch-param-search": "ÐÒлÓÒ¯ ÑлÑ.",
+ "apihelp-query+prefixsearch-param-namespace": "ÐÒлÓÒ¯ Ó©Ñөн иÑемдÓÑ Ð°ÑаÑÑÒÑ",
+ "apihelp-query+prefixsearch-param-limit": "Ò Ð°Ð¹ÑаÑÑлÒан Ò»Ó©ÒөмÑÓлÓÑÒең макÑÐ¸Ð¼Ð°Ð»Ñ Ò»Ð°Ð½Ñ.",
+ "apihelp-query+prefixsearch-param-offset": "ТөÑÓ©Ñөп ҡалдÑÑÑÑ Ó©Ñөн Ò»Ó©ÒөмÑÓ Ð¸Ò«Óбе",
+ "apihelp-query+protectedtitles-param-limit": "ÐиÑÓ Ð±Ð¸ÑÑе ÑеÑгеÒеÑгÓ?",
+ "apihelp-query+protectedtitles-param-prop": "ÐиндÓй Ò¯ÒенÑÓлек алÑÑÒа:",
+ "apihelp-query+querypage-param-limit": "ТөÑÓ©Ñөп ҡалдÑÑÑÑ Ó©Ñөн Ò»Ó©ÒөмÑÓ Ð¸Ò«Óбе",
+ "apihelp-query+recentchanges-param-start": "ÐÒ«Óп күÑеÑеү баÑланÒан ваҡÑÑ Ð±Ð¸Ð»Ð´Óһе",
+ "apihelp-query+recentchanges-param-end": "ÐÒ«Óп күÑеÑеү ÑамамланÒан ваҡÑÑ Ð±Ð¸Ð»Ð´Óһе",
+ "apihelp-query+recentchanges-param-user": "ÐаÑÑ Ñик бÑл Ò¡ÑлланÑÑÑÑнÑÒ£ Ò¯ÒгÓÑÑеүÒÓÑ Ð¸Ñемлеге.",
+ "apihelp-query+recentchanges-param-limit": "ÐиÑÓ Ð±Ð¸ÑÑе ÑеÑгеÒеÑгÓ?",
+ "apihelp-query+recentchanges-param-type": "ÐиндÓй ÑÓ©ÑÒÓÑ Ò¯ÒгÓÑÑеүÒе күÑÒ»ÓÑеÑгө",
+ "apihelp-query+recentchanges-example-simple": "ÒºÑÒ£ÒÑ Ò¯ÒгÓÑÑеүÒÓÑÒе күÑÒ»ÓÑеÑгÓ.",
+ "apihelp-query+redirects-param-prop": "ÐиндÓй Ò¯ÒенÑÓлек алÑÑÒа:",
+ "apihelp-query+redirects-param-limit": "Ðүпме Ò»ÑлÑанмалаÑÒÑ ÐºÐ¸Ñе ҡайÑаÑÑÑÒа.",
+ "apihelp-query+revisions-example-last5": "ÒºÑÒ£ÒÑ 5 Main Page веÑÑиÑÐ½Ñ Ð°Ð»ÑÑÒа.",
+ "apihelp-query+revisions-example-first5": "ТÓүге 5 Main Page веÑÑиÑÐ½Ñ Ð°Ð»ÑÑÒа.",
+ "apihelp-query+search-param-info": "ÐиндÓй маÑамÓÒлүмÓÑ Ò¡ÑлланÑÑÒа",
+ "apihelp-query+search-param-prop": "ÐиндÓй Ò¯ÒенÑÓлекÑе ҡайÑаÑÑÑÒа",
+ "apihelp-query+search-param-limit": "ÐиÑÓ Ð±Ð¸ÑÑе ÑеÑгеÒеÑгÓ?",
+ "apihelp-query+tags-description": "Ò®ÒгÓÑÑелгÓн ÑамÒÐ°Ð»Ð°Ñ Ð¸Ñемлеге.",
+ "apihelp-query+tags-param-limit": "ÐиÑе ҡайÑаÑÑлÒан белдеÑеүÒÓÑÒең иң күп һанÑ",
+ "apihelp-query+tags-param-prop": "ÐиндÓй Ò¯ÒенÑÓлек алÑÑÒа:",
+ "apihelp-query+tags-example-simple": "ÐңлайÑÑÐ»Ñ ÑамÒÐ°Ð»Ð°Ñ Ð±Ð¸Ñе",
+ "apihelp-query+templates-param-limit": "Ðүпме Ò»ÑлÑанмалаÑÒÑ ÐºÐ¸Ñе ҡайÑаÑÑÑÒа.",
+ "apihelp-query+templates-param-dir": "ÒºÐ°Ð½Ð°Ñ Ð¹Ò¯Ð½ÓлеÑе.",
+ "apihelp-query+transcludedin-param-prop": "ÐиндÓй Ò¯ÒенÑÓлек алÑÑÒа:",
+ "apihelp-query+transcludedin-param-limit": "Ðүпме Ò»ÑлÑанмалаÑÒÑ ÐºÐ¸Ñе ҡайÑаÑÑÑÒа.",
+ "apihelp-query+usercontribs-description": "Ò ÑлланÑÑÑÑнÑÒ£ бөÑÓ ÑÓ©ÒÓÑеүÒÓÑен алÑÑ",
+ "apihelp-query+usercontribs-param-limit": "ÐиÑе ҡайÑаÑÑлÒан белдеÑеүÒÓÑÒең иң күп һанÑ"
}
diff --git a/includes/api/i18n/be-tarask.json b/includes/api/i18n/be-tarask.json
index 3108e5b937..3b5201a0f4 100644
--- a/includes/api/i18n/be-tarask.json
+++ b/includes/api/i18n/be-tarask.json
@@ -1,7 +1,8 @@
{
"@metadata": {
"authors": [
- "Red Winged Duck"
+ "Red Winged Duck",
+ "Renessaince"
]
},
"apihelp-main-description": "\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
\nСÑаÑÑÑ: ÑÑе магÑÑмаÑÑÑÑ Ð½Ð° гÑÑай ÑÑаÑонÑÑ Ð¿Ð°Ð²ÑÐ½Ð½Ñ Ð¿ÑаÑаваÑÑ, але API знаÑ
одзÑÑÑа Ñ Ð°ÐºÑÑÑнай ÑаÑпÑаÑоÑÑÑ Ñ Ð¼Ð¾Ð¶Ð° зÑмÑнÑÑÑа Ñ Ð»ÑÐ±Ñ Ð¼Ð¾Ð¼Ð°Ð½Ñ. ÐадпÑÑвайÑеÑÑ Ð½Ð° [https://lists.wikimedia.org/pipermail/mediawiki-api-announce/ ÑаÑÑÑÐ»ÐºÑ mediawiki-api-announce] Ð´Ð·ÐµÐ»Ñ Ð¿Ð°Ð²ÐµÐ´Ð°Ð¼Ð»ÐµÐ½ÑнÑÑ Ð¿Ñа абнаÑленÑнÑ.\n\nÐамÑлковÑÑ Ð·Ð°Ð¿ÑÑÑ: ÐºÐ°Ð»Ñ Ð´Ð° API даÑÑлаÑÑÑа памÑлковÑÑ Ð·Ð°Ð¿ÑÑÑ, HTTP-загаловак бÑдзе даÑÐ»Ð°Ð½Ñ Ð· клÑÑом «MediaWiki-API-Error», а поÑÑм знаÑÑнÑне загалоÑÐºÑ Ñ ÐºÐ¾Ð´ памÑÐ»ÐºÑ Ð±ÑдÑÑÑ Ð²ÑÑÑаÑленÑÑ Ð½Ð° аднолÑкавае знаÑÑнÑне. ÐÐ·ÐµÐ»Ñ Ð´Ð°Ð´Ð°Ñковай ÑнÑаÑмаÑÑÑ Ð³Ð»ÑдзÑÑе [[mw:API:Errors_and_warnings|API: ÐамÑÐ»ÐºÑ Ñ Ð¿Ð°Ð¿ÑÑÑджанÑнÑ]].\n\nТÑÑÑаванÑне: Ð´Ð»Ñ Ð·ÑÑÑнаÑÑÑÑ Ð¿ÑавеÑÐºÑ API-запÑÑаÑ, глÑдзÑÑе [[Special:ApiSandbox]].",
@@ -51,5 +52,8 @@
"apihelp-createaccount-param-reason": "ÐеабавÑÐ·ÐºÐ¾Ð²Ð°Ñ Ð¿ÑÑÑÑна ÑÑваÑÑнÑÐ½Ñ ÑаÑ
ÑнкÑ, ÑÐºÐ°Ñ Ð±Ñдзе запÑÑÐ°Ð½Ð°Ñ Ñ Ð¶ÑÑнал.",
"apihelp-createaccount-param-language": "ÐоÑÐ½Ñ ÐºÐ¾Ð´, ÑÐºÑ Ð±Ñдзе вÑÑÑаÑÐ»ÐµÐ½Ñ ÑдзелÑнÑÐºÑ Ð¿Ð° змоÑÑанÑÐ½Ñ (неабавÑзкова, па змоÑÑанÑÐ½Ñ Ð¼Ð¾Ð²Ð° зÑмеÑÑÑ).",
"apihelp-createaccount-example-pass": "СÑваÑÑнÑне ÑдзелÑнÑка testuser з паÑолем test123 .",
- "apihelp-createaccount-example-mail": "СÑваÑÑнÑне ÑдзелÑнÑка testmailuser Ñ Ð°Ð´Ð¿ÑаÑка вÑпадковага паÑÐ¾Ð»Ñ ÑлекÑÑоннай поÑÑай."
+ "apihelp-createaccount-example-mail": "СÑваÑÑнÑне ÑдзелÑнÑка testmailuser Ñ Ð°Ð´Ð¿ÑаÑка вÑпадковага паÑÐ¾Ð»Ñ ÑлекÑÑоннай поÑÑай.",
+ "apihelp-query+transcludedin-paramvalue-prop-title": "Ðазва кожнай ÑÑаÑонкÑ.",
+ "apihelp-query+transcludedin-param-limit": "ÐолÑÐºÑ Ð²ÑÑÑаÑÑ.",
+ "apihelp-query+userinfo-paramvalue-prop-acceptlang": "ÐÑблÑе загаловак Accept-Language
, адаÑÐ»Ð°Ð½Ñ ÐºÐ»ÑенÑам Ñ ÑÑÑÑкÑÑÑаванÑм ÑаÑмаÑе."
}
diff --git a/includes/api/i18n/ckb.json b/includes/api/i18n/ckb.json
index 025741cbcc..3259f7083d 100644
--- a/includes/api/i18n/ckb.json
+++ b/includes/api/i18n/ckb.json
@@ -1,8 +1,10 @@
{
"@metadata": {
"authors": [
- "Pirehelokan"
+ "Pirehelokan",
+ "Sarchia"
]
},
- "apihelp-parse-param-disabletoc": "Ù¾ÛØ±Ø³ØªÛ ÙاÙÛرÛÚ© Ù¾Ûشا٠Ù
ÛدÛ."
+ "apihelp-parse-param-disabletoc": "Ù¾ÛØ±Ø³ØªÛ ÙاÙÛرÛÚ© Ù¾Ûشا٠Ù
ÛدÛ.",
+ "api-help-param-default": "بÙÛÚÛت: $1"
}
diff --git a/includes/api/i18n/cs.json b/includes/api/i18n/cs.json
index 259fe65b26..fbddc8d8bf 100644
--- a/includes/api/i18n/cs.json
+++ b/includes/api/i18n/cs.json
@@ -129,7 +129,7 @@
"apihelp-help-example-query": "NápovÄda pro dva podmoduly query",
"apihelp-imagerotate-description": "OtoÄit jeden nebo vÃce obrázků.",
"apihelp-imagerotate-example-generator": "OtoÄit vÅ¡echny obrázky v Category:Flip o 180 stupÅů.",
- "apihelp-import-param-summary": "Import shrnutÃ.",
+ "apihelp-import-param-summary": "Shrnutà do protokolovacÃho záznamu importu.",
"apihelp-import-param-xml": "Nahraný XML soubor.",
"apihelp-import-param-namespace": "Importovat do tohoto jmenného prostoru. Nelze použÃvat souÄasnÄ s parametrem $1rootpage .",
"apihelp-import-param-rootpage": "Importovat jako podstránku k této stránce. Nelze použÃvat souÄasnÄ s parametrem $1namespace .",
diff --git a/includes/api/i18n/de.json b/includes/api/i18n/de.json
index 5b67c1f67d..5402ab47e3 100644
--- a/includes/api/i18n/de.json
+++ b/includes/api/i18n/de.json
@@ -200,7 +200,7 @@
"apihelp-imagerotate-example-simple": "Datei:Beispiel.png um 90 Grad drehen.",
"apihelp-imagerotate-example-generator": "Alle Bilder in der Kategorie:Flip um 180 Grad drehen.",
"apihelp-import-description": "Importiert eine Seite aus einem anderen Wiki oder von einer XML-Datei.\n\nBitte beachte, dass der HTTP-POST-Vorgang als Dateiupload ausgeführt werden muss (z.B. durch multipart/form-data), um eine Datei über den xml -Parameter zu senden.",
- "apihelp-import-param-summary": "Import-Zusammenfassung.",
+ "apihelp-import-param-summary": "Importzusammenfassung des Logbucheintrags.",
"apihelp-import-param-xml": "Hochgeladene XML-Datei.",
"apihelp-import-param-interwikisource": "Für Interwiki-Importe: Wiki, von dem importiert werden soll.",
"apihelp-import-param-interwikipage": "Für Interwiki-Importe: zu importierende Seite.",
@@ -328,7 +328,7 @@
"apihelp-purge-example-simple": "Purgt die Main Page und die API -Seite.",
"apihelp-purge-example-generator": "Purgt die ersten 10 Seiten des Hauptnamensraums.",
"apihelp-query-description": "Bezieht Daten von und über MediaWiki.\n\nAlle Ãnderungsvorgänge müssen unter Angabe eines Tokens ablaufen, um Missbrauch durch böswillige Anwendungen vorzubeugen.",
- "apihelp-query-param-prop": "Zurückzuliefernde Eigenschaften der abgefragten Seiten.",
+ "apihelp-query-param-prop": "Zurückzugebende Eigenschaften der abgefragten Seiten.",
"apihelp-query-param-list": "Welche Listen abgerufen werden sollen.",
"apihelp-query-param-meta": "Zurückzugebende Metadaten.",
"apihelp-query-param-indexpageids": "SchlieÃt einen zusätzlichen pageids-Abschnitt mit allen zurückgegebenen Seitenkennungen ein.",
@@ -415,7 +415,7 @@
"apihelp-query+alllinks-example-generator": "Ruft Seiten ab welche die Verknüpfungen beinhalten.",
"apihelp-query+allmessages-description": "Gibt Nachrichten von dieser Website zurück.",
"apihelp-query+allmessages-param-messages": "Welche Nachrichten ausgegeben werden sollen. * (Vorgabe) bedeutet alle Nachrichten.",
- "apihelp-query+allmessages-param-prop": "Welche Eigenschaften abgerufen werden sollen.",
+ "apihelp-query+allmessages-param-prop": "Zurückzugebende Eigenschaften.",
"apihelp-query+allmessages-param-enableparser": "Setzen, um den Parser zu aktivieren. Dies wird den Wikitext der Nachricht vorverarbeiten (magische Worte ersetzen, Vorlagen berücksichtigen, usw.).",
"apihelp-query+allmessages-param-nocontent": "Wenn gesetzt, füge nicht den Inhalt der Nachricht der Ausgabe hinzu.",
"apihelp-query+allmessages-param-includelocal": "SchlieÃt auch lokale Nachrichten ein. Zum Beispiel Nachrichten die es nicht in der Software gibt, die es aber als MediaWiki: - Seite gibt. Dies listet alle MediaWiki: - Seiten auf. Daher werden auch diejenigen aufgelistet, die eigentlich keine Nachrichten sind, wie [[MediaWiki:Common.js|Common.js]].",
@@ -537,7 +537,7 @@
"apihelp-query+blocks-example-simple": "Sperren auflisten",
"apihelp-query+blocks-example-users": "Listet Sperren der Benutzer Alice und Bob auf.",
"apihelp-query+categories-description": "Liste alle Kategorien auf, zu denen die Seiten gehören.",
- "apihelp-query+categories-param-prop": "Welche zusätzlichen Eigenschaften für jede Kategorie abrufen:",
+ "apihelp-query+categories-param-prop": "Zusätzlich zurückzugebende Eigenschaften jeder Kategorie:",
"apihelp-query+categories-paramvalue-prop-timestamp": "Fügt einen Zeitstempel wann die Kategorie angelegt wurde hinzu.",
"apihelp-query+categories-param-show": "Welche Art von Kategorien gezeigt werden soll.",
"apihelp-query+categories-param-limit": "Wie viele Kategorien zurückgegeben werden sollen.",
@@ -694,7 +694,7 @@
"apihelp-query+imageusage-param-redirect": "Falls die verweisende Seite eine Weiterleitung ist, finde alle Seiten, die ebenfalls auf diese Weiterleitung verweisen. Die maximale Grenze wird halbiert.",
"apihelp-query+imageusage-example-simple": "Zeige Seiten, die [[:File:Albert Einstein Head.jpg]] verwenden.",
"apihelp-query+info-description": "Ruft Basisinformationen über die Seite ab.",
- "apihelp-query+info-param-prop": "Welche zusätzlichen Eigenschaften abgerufen werden sollen:",
+ "apihelp-query+info-param-prop": "Zusätzlich zurückzugebende Eigenschaften:",
"apihelp-query+info-paramvalue-prop-protection": "Liste die Schutzstufe jeder Seite auf.",
"apihelp-query+info-paramvalue-prop-talkid": "Die Seitenkennung der Diskussionsseite für jede Nicht-Diskussionsseite.",
"apihelp-query+info-paramvalue-prop-watched": "Liste den Ãberwachungszustand jeder Seite auf.",
@@ -705,26 +705,32 @@
"apihelp-query+info-paramvalue-prop-displaytitle": "Gibt die Art und Weise an, in der der Seitentitel tatsächlich angezeigt wird.",
"apihelp-query+info-param-testactions": "Ãberprüft, ob der aktuelle Benutzer gewisse Aktionen auf der Seite ausführen kann.",
"apihelp-query+iwbacklinks-param-prefix": "Präfix für das Interwiki.",
+ "apihelp-query+iwbacklinks-param-prop": "Zurückzugebende Eigenschaften:",
"apihelp-query+iwbacklinks-paramvalue-prop-iwprefix": "Ergänzt das Präfix des Interwikis.",
"apihelp-query+iwbacklinks-paramvalue-prop-iwtitle": "Ergänzt den Titel des Interwikis.",
"apihelp-query+iwbacklinks-param-dir": "Die Auflistungsrichtung.",
+ "apihelp-query+iwlinks-param-prop": "Zusätzlich zurückzugebende Eigenschaften jedes Interlanguage-Links:",
"apihelp-query+iwlinks-paramvalue-prop-url": "Ergänzt die vollständige URL.",
"apihelp-query+iwlinks-param-limit": "Wie viele Interwiki-Links zurückgegeben werden sollen.",
"apihelp-query+iwlinks-param-prefix": "Gibt nur Interwiki-Links mit diesem Präfix zurück.",
"apihelp-query+iwlinks-param-dir": "Die Auflistungsrichtung.",
"apihelp-query+langbacklinks-param-limit": "Wie viele Gesamtseiten zurückgegeben werden sollen.",
+ "apihelp-query+langbacklinks-param-prop": "Zurückzugebende Eigenschaften:",
"apihelp-query+langbacklinks-param-dir": "Die Auflistungsrichtung.",
"apihelp-query+langbacklinks-example-simple": "Ruft Seiten ab, die auf [[:fr:Test]] verlinken.",
"apihelp-query+langlinks-param-limit": "Wie viele Sprachlinks zurückgegeben werden sollen.",
+ "apihelp-query+langlinks-param-prop": "Zusätzlich zurückzugebende Eigenschaften jedes Interlanguage-Links:",
"apihelp-query+langlinks-paramvalue-prop-url": "Ergänzt die vollständige URL.",
"apihelp-query+langlinks-param-dir": "Die Auflistungsrichtung.",
"apihelp-query+links-param-limit": "Wie viele Links zurückgegeben werden sollen.",
"apihelp-query+links-param-dir": "Die Auflistungsrichtung.",
"apihelp-query+links-example-simple": "Links von der Hauptseite abrufen",
"apihelp-query+linkshere-description": "Alle Seiten finden, die auf die angegebenen Seiten verlinken.",
+ "apihelp-query+linkshere-param-prop": "Zurückzugebende Eigenschaften:",
"apihelp-query+linkshere-paramvalue-prop-pageid": "Die Seitenkennung jeder Seite.",
"apihelp-query+linkshere-paramvalue-prop-title": "Titel jeder Seite.",
"apihelp-query+logevents-description": "Ereignisse von den Logbüchern abrufen.",
+ "apihelp-query+logevents-param-prop": "Zurückzugebende Eigenschaften:",
"apihelp-query+logevents-paramvalue-prop-type": "Ergänzt den Typ des Logbuchereignisses.",
"apihelp-query+logevents-paramvalue-prop-comment": "Ergänzt den Kommentar des Logbuchereignisses.",
"apihelp-query+logevents-example-simple": "Listet die letzten Logbuch-Ereignisse auf.",
@@ -732,13 +738,23 @@
"apihelp-query+pageswithprop-param-limit": "Die maximale Anzahl zurückzugebender Seiten.",
"apihelp-query+prefixsearch-param-search": "Such-Zeichenfolge.",
"apihelp-query+prefixsearch-param-offset": "Anzahl der zu überspringenden Ergebnisse.",
+ "apihelp-query+protectedtitles-param-prop": "Zurückzugebende Eigenschaften:",
"apihelp-query+querypage-param-limit": "Anzahl der zurückzugebenden Ergebnisse.",
"apihelp-query+recentchanges-description": "Listet die letzten Ãnderungen auf.",
+ "apihelp-query+recentchanges-param-user": "Listet nur Ãnderungen von diesem Benutzer auf.",
+ "apihelp-query+recentchanges-param-excludeuser": "Listet keine Ãnderungen von diesem Benutzer auf.",
+ "apihelp-query+recentchanges-param-tag": "Listet nur Ãnderungen auf, die mit dieser Markierung markiert sind.",
+ "apihelp-query+recentchanges-paramvalue-prop-flags": "Ergänzt Markierungen für die Bearbeitung.",
"apihelp-query+recentchanges-paramvalue-prop-timestamp": "Ergänzt den Zeitstempel für die Bearbeitung.",
+ "apihelp-query+recentchanges-paramvalue-prop-title": "Ergänzt den Seitentitel der Bearbeitung.",
"apihelp-query+recentchanges-paramvalue-prop-tags": "Listet Markierungen für den Eintrag auf.",
"apihelp-query+recentchanges-example-simple": "Listet die letzten Ãnderungen auf.",
+ "apihelp-query+redirects-param-prop": "Zurückzugebende Eigenschaften:",
"apihelp-query+redirects-paramvalue-prop-pageid": "Seitenkennung einer jeden Weiterleitung.",
"apihelp-query+redirects-paramvalue-prop-title": "Titel einer jeden Weiterleitung.",
+ "apihelp-query+redirects-param-limit": "Wie viele Weiterleitungen zurückgegeben werden sollen.",
+ "apihelp-query+revisions-param-tag": "Listet nur Versionen auf, die mit dieser Markierung markiert sind.",
+ "apihelp-query+revisions+base-param-prop": "Zurückzugebende Eigenschaften jeder Version:",
"apihelp-query+revisions+base-paramvalue-prop-ids": "Die Kennung der Version.",
"apihelp-query+revisions+base-paramvalue-prop-flags": "Versionsmarkierungen (klein).",
"apihelp-query+revisions+base-paramvalue-prop-timestamp": "Der Zeitstempel der Version.",
@@ -757,8 +773,10 @@
"apihelp-query+search-example-text": "Texte nach meaning durchsuchen.",
"apihelp-query+siteinfo-example-simple": "Websiteinformationen abrufen",
"apihelp-query+tags-description": "Ãnderungs-Tags auflisten.",
+ "apihelp-query+tags-param-prop": "Zurückzugebende Eigenschaften:",
"apihelp-query+tags-example-simple": "Verfügbare Tags auflisten",
"apihelp-query+templates-param-dir": "Die Auflistungsrichtung.",
+ "apihelp-query+transcludedin-param-prop": "Zurückzugebende Eigenschaften:",
"apihelp-query+usercontribs-description": "Alle Bearbeitungen von einem Benutzer abrufen.",
"apihelp-query+usercontribs-param-limit": "Die maximale Anzahl der zurückzugebenden Beiträge.",
"apihelp-query+usercontribs-param-start": "Der zurückzugebende Start-Zeitstempel.",
@@ -780,6 +798,7 @@
"apihelp-query+users-paramvalue-prop-rights": "Listet alle Rechte auf, die jeder Benutzer hat.",
"apihelp-query+users-paramvalue-prop-editcount": "Ergänzt den Bearbeitungszähler des Benutzers.",
"apihelp-query+users-example-simple": "Gibt Informationen für den Benutzer Example zurück.",
+ "apihelp-query+watchlist-param-prop": "Zusätzlich zurückzugebende Eigenschaften:",
"apihelp-query+watchlist-paramvalue-prop-user": "Ergänzt den Benutzer, der die Bearbeitung ausgeführt hat.",
"apihelp-query+watchlist-paramvalue-prop-userid": "Ergänzt die Kennung des Benutzers, der die Bearbeitung ausgeführt hat.",
"apihelp-query+watchlist-paramvalue-prop-comment": "Ergänzt den Kommentar der Bearbeitung.",
@@ -787,6 +806,7 @@
"apihelp-query+watchlist-paramvalue-prop-sizes": "Ergänzt die alten und neuen Längen der Seite.",
"apihelp-query+watchlist-paramvalue-type-new": "Seitenerstellungen.",
"apihelp-query+watchlist-paramvalue-type-log": "Logbucheinträge.",
+ "apihelp-query+watchlistraw-param-prop": "Zusätzlich zurückzugebende Eigenschaften:",
"apihelp-rsd-description": "Ein RSD-Schema (Really Simple Discovery) exportieren.",
"apihelp-rsd-example-simple": "Das RSD-Schema exportieren",
"apihelp-setnotificationtimestamp-param-entirewatchlist": "An allen beobachteten Seiten arbeiten.",
diff --git a/includes/api/i18n/en.json b/includes/api/i18n/en.json
index 2d1542ead6..2b23da0c03 100644
--- a/includes/api/i18n/en.json
+++ b/includes/api/i18n/en.json
@@ -20,7 +20,7 @@
"apihelp-main-param-uselang": "Language to use for message translations. [[Special:ApiHelp/query+siteinfo|action=query&meta=siteinfo]] with siprop=languages returns a list of language codes, or specify user to use the current user's language preference, or specify content to use this wiki's content language.",
"apihelp-block-description": "Block a user.",
- "apihelp-block-param-user": "Username, IP address, or IP range to block.",
+ "apihelp-block-param-user": "Username, IP address, or IP address range to block.",
"apihelp-block-param-expiry": "Expiry time. May be relative (e.g. 5 months or 2 weeks ) or absolute (e.g. 2014-09-18T12:34:56Z ). If set to infinite , indefinite , or never , the block will never expire.",
"apihelp-block-param-reason": "Reason for block.",
"apihelp-block-param-anononly": "Block anonymous users only (i.e. disable anonymous edits for this IP address).",
@@ -204,7 +204,7 @@
"apihelp-imagerotate-example-generator": "Rotate all images in Category:Flip by 180 degrees.",
"apihelp-import-description": "Import a page from another wiki, or from an XML file.\n\nNote that the HTTP POST must be done as a file upload (i.e. using multipart/form-data) when sending a file for the xml parameter.",
- "apihelp-import-param-summary": "Import summary.",
+ "apihelp-import-param-summary": "Log entry import summary.",
"apihelp-import-param-xml": "Uploaded XML file.",
"apihelp-import-param-interwikisource": "For interwiki imports: wiki to import from.",
"apihelp-import-param-interwikipage": "For interwiki imports: page to import.",
@@ -587,7 +587,7 @@
"apihelp-query+blocks-param-end": "The timestamp to stop enumerating at.",
"apihelp-query+blocks-param-ids": "List of block IDs to list (optional).",
"apihelp-query+blocks-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 $3users . CIDR ranges broader than IPv4/$1 or IPv6/$2 are not accepted.",
+ "apihelp-query+blocks-param-ip": "Get all blocks applying to this IP address or CIDR range, including range blocks.\nCannot be used together with $3users . 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:",
"apihelp-query+blocks-paramvalue-prop-id": "Adds the ID of the block.",
@@ -1331,7 +1331,7 @@
"apihelp-unblock-description": "Unblock a user.",
"apihelp-unblock-param-id": "ID of the block to unblock (obtained through list=blocks ). Cannot be used together with $1user .",
- "apihelp-unblock-param-user": "Username, IP address or IP range to unblock. Cannot be used together with $1id .",
+ "apihelp-unblock-param-user": "Username, IP address or IP address range to unblock. Cannot be used together with $1id .",
"apihelp-unblock-param-reason": "Reason for unblock.",
"apihelp-unblock-param-tags": "Change tags to apply to the entry in the block log.",
"apihelp-unblock-example-id": "Unblock block ID #105 .",
diff --git a/includes/api/i18n/es.json b/includes/api/i18n/es.json
index 2570bc1f38..284c23c8ab 100644
--- a/includes/api/i18n/es.json
+++ b/includes/api/i18n/es.json
@@ -13,22 +13,29 @@
"Chris TR",
"Ncontinanza",
"Poco a poco",
- "YoViajo"
+ "YoViajo",
+ "Eloy",
+ "AlvaroMolina",
+ "Ciencia Al Poder",
+ "Lemondoge",
+ "Mgpena"
]
},
"apihelp-main-description": "\n* [[mw:API:Main_page|Documentación]]\n* [[mw:API:FAQ|Preguntas frecuentes]]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api Lista de correos]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announce API de anuncios]\n* [https://phabricator.wikimedia.org/maniphest/query/GebfyV4uCaLd/#R Errores y peticiones]\n
\nEstado: Todas las caracterÃsticas que se muestran en esta página deberÃa funcionar, pero la API aún está en desarrollo activo y puede cambiar en cualquier momento. SuscrÃbete a [https://lists.wikimedia.org/pipermail/mediawiki-api-announce/ la lista de correo de mediawiki-api-announce] para estar al dÃa de las actualizaciones.\n\nSolicitudes erróneas: Cuando se envÃan solicitudes erróneas a la API, se envÃa un encabezado HTTP con la clave \"MediaWiki-API-Error\" y ambos valores, del encabezado y el código de error, se establecerán en el mismo valor. Para más información, véase [[mw:API:Errors_and_warnings|API: Errores y advertencias]].\n\nPruebas: para facilitar las pruebas de solicitudes a la API, consulta [[Special:ApiSandbox]].",
"apihelp-main-param-action": "Qué acción se realizará.",
"apihelp-main-param-format": "El formato de la salida.",
- "apihelp-main-param-smaxage": "Establece el encabezado s-maxage
durante estos segundos. Los errores nunca se almacenan en caché.",
- "apihelp-main-param-maxage": "Establece el encabezado max-age
durante estos segundos. Los errores nunca se almacenan en caché.",
+ "apihelp-main-param-maxlag": "El máximo retraso puede ser utilizado cuando MediaWiki está instalado en una base de datos replicada clúster. Para guardar las acciones que causan más de replicación de sitios de retraso, este parámetro puede hacer que el cliente espere hasta que el retraso de la replicación es menor que el valor especificado. En caso de exceso de lag, código de error maxlag se devuelve con un mensaje parecido a la Espera de $host: $lag segundos quedado . Véase [[mw:Manual:Maxlag_parameter|Manual: Maxlag parámetro]] para más información.",
+ "apihelp-main-param-smaxage": "Establece el encabezado HTTP s-maxage
de control de caché a esta cantidad de segundos. Los errores nunca se almacenan en caché.",
+ "apihelp-main-param-maxage": "Establece el encabezado HTTP max-age
de control de caché a esta cantidad de segundos. Los errores nunca se almacenan en caché.",
"apihelp-main-param-assert": "Comprobar que el usuario haya iniciado sesión si el valor es user o si tiene el permiso de bot si es bot .",
"apihelp-main-param-requestid": "Cualquier valor dado aquà se incluirá en la respuesta. Se puede utilizar para distinguir solicitudes.",
"apihelp-main-param-servedby": "Incluir el nombre del host que ha servido la solicitud en los resultados.",
"apihelp-main-param-curtimestamp": "Incluir la marca de tiempo actual en el resultado.",
+ "apihelp-main-param-origin": "Cuando se accede a la API usando una petición AJAX de distinto dominio (CORS), establece este valor al dominio de origen. Debe ser incluido en cualquier petición pre-vuelo, y por lo tanto debe ser parte de la URI de la petición (no del cuerpo POST). Debe coincidir exactamente con uno de los orÃgenes de la cabecera Origin
, por lo que deberÃa ser algo como https://en.wikipedia.org o https://meta.wikimedia.org . Si este parámetro no coincide con la cabecera Origin
, se devolverá una respuesta 403.\nSi este parámetro coincide con la cabecera Origin
y el origen está en lista blanca, se creará una cabecera Access-Control-Allow-Origin
.",
"apihelp-main-param-uselang": "El idioma que se usará para las traducciones de mensajes. [[Special:ApiHelp/query+siteinfo|action=query&meta=siteinfo]] con siprop=languages devuelve una lista de códigos de idiomas, o especifica user para usar la preferencia de idioma del usuario actual, o especifica content para usar el idioma de contenido de este wiki.",
"apihelp-block-description": "Bloquear a un usuario.",
"apihelp-block-param-user": "El nombre de usuario, dirección IP o intervalo de IP que quieres bloquear.",
- "apihelp-block-param-expiry": "Fecha de expiración. Puede ser relativa (por ejemplo, 5 meses o 2 semanas ) o absoluta (por ejemplo, 2014-09-18T12:34:56Z ). Si se establece en infinito , indefinido , o nunca , el bloqueo será permanente.",
+ "apihelp-block-param-expiry": "Fecha de expiración. Puede ser relativa (por ejemplo, 5 months o 2 weeks ) o absoluta (por ejemplo, 2014-09-18T12:34:56Z ). Si se establece en infinite , indefinite , o never , el bloqueo será permanente.",
"apihelp-block-param-reason": "Razón para el bloqueo.",
"apihelp-block-param-anononly": "Bloquear solo usuarios anónimos (es decir, desactivar ediciones anónimas de esta dirección IP).",
"apihelp-block-param-nocreate": "Prevenir la creación de cuentas.",
@@ -38,7 +45,7 @@
"apihelp-block-param-allowusertalk": "Permitir que el usuario edite su propia página de discusión (depende de [[mw:Manual:$wgBlockAllowsUTEdit|$wgBlockAllowsUTEdit]] ).",
"apihelp-block-param-reblock": "Si la cuenta ya está bloqueada, sobrescribir el bloqueo existente.",
"apihelp-block-param-watchuser": "Vigilar las páginas de usuario y de discusión del usuario o de la dirección IP.",
- "apihelp-block-example-ip-simple": "Bloquear la dirección IP 192.0.2.5 durante 3 dÃas por el motivo: Primer ataque .",
+ "apihelp-block-example-ip-simple": "Bloquear la dirección IP 192.0.2.5 durante 3 dÃas por el motivo First strike .",
"apihelp-block-example-user-complex": "Bloquear al usuario Vandal indefinidamente con el motivo Vandalism y evitar que se cree nuevas cuentas o envÃe correos.",
"apihelp-checktoken-description": "Comprueba la validez de una ficha desde [[Special:ApiHelp/query+tokens|action=query&meta=tokens]] .",
"apihelp-checktoken-param-type": "Tipo de ficha a probar.",
@@ -71,7 +78,9 @@
"apihelp-delete-param-title": "TÃtulo de la página a eliminar. No se puede utilizar junto a $1pageid .",
"apihelp-delete-param-pageid": "ID de la página a eliminar. No se puede utilizar junto a $1title .",
"apihelp-delete-param-reason": "Motivo de la eliminación. Si no se especifica, se generará uno automáticamente.",
+ "apihelp-delete-param-tags": "Cambio de etiquetas para aplicar a la entrada en la eliminación del registro.",
"apihelp-delete-param-watch": "Añadir esta página a la lista de seguimiento del usuario actual.",
+ "apihelp-delete-param-watchlist": "Incondicionalmente agregar o remover la página de la lista de seguimiento del usuario actual, usar las preferencias o no cambiar el seguimiento.",
"apihelp-delete-param-unwatch": "Quitar la página de la lista de seguimiento del usuario actual.",
"apihelp-delete-example-simple": "Borrar Main Page .",
"apihelp-delete-example-reason": "Eliminar Main Page con el motivo Preparing for move .",
@@ -87,6 +96,7 @@
"apihelp-edit-param-minor": "Edición menor.",
"apihelp-edit-param-notminor": "Edición no menor.",
"apihelp-edit-param-bot": "Marcar esta edición como de bot.",
+ "apihelp-edit-param-recreate": "Reemplazar los errores acerca de la página de haber sido eliminados en el Ãnterin.",
"apihelp-edit-param-createonly": "No editar la página si ya existe.",
"apihelp-edit-param-nocreate": "Producir un error si la página no existe.",
"apihelp-edit-param-watch": "Añadir la página a la lista de seguimiento del usuario actual.",
@@ -113,6 +123,7 @@
"apihelp-expandtemplates-param-text": "Sintaxis wiki que se convertirá.",
"apihelp-expandtemplates-param-revid": "Revisión de ID, para {{REVISIONID}} y variables similares.",
"apihelp-expandtemplates-paramvalue-prop-wikitext": "El wikitexto expandido.",
+ "apihelp-expandtemplates-paramvalue-prop-categories": "Cualesquiera categorÃas presentes en la entrada que no están representadas en salida de wikitexto.",
"apihelp-expandtemplates-paramvalue-prop-properties": "Propiedades de página definidas por palabras mágicas en el wikitexto.",
"apihelp-expandtemplates-paramvalue-prop-ttl": "El tiempo máximo tras el cual deberÃan invalidarse los resultados en caché.",
"apihelp-expandtemplates-paramvalue-prop-jsconfigvars": "Da las variables de configuración JavaScript especÃficas para la página.",
@@ -130,7 +141,7 @@
"apihelp-feedcontributions-param-toponly": "Mostrar solo ediciones que son últimas revisiones.",
"apihelp-feedcontributions-param-newonly": "Mostrar solo ediciones que son creaciones de páginas.",
"apihelp-feedcontributions-param-showsizediff": "Mostrar la diferencia de tamaño entre revisiones.",
- "apihelp-feedcontributions-example-simple": "Devolver las contribuciones del usuario Ejemplo .",
+ "apihelp-feedcontributions-example-simple": "Devolver las contribuciones del usuario Example .",
"apihelp-feedrecentchanges-description": "Devuelve un canal de cambios recientes.",
"apihelp-feedrecentchanges-param-feedformat": "El formato del canal.",
"apihelp-feedrecentchanges-param-namespace": "Espacio de nombres al cual limitar los resultados.",
@@ -175,9 +186,9 @@
"apihelp-help-example-query": "Ayuda para dos submódulos de consulta.",
"apihelp-imagerotate-description": "Girar una o más imágenes.",
"apihelp-imagerotate-param-rotation": "Grados que rotar una imagen en sentido horario.",
- "apihelp-imagerotate-example-simple": "Rotar File:Ejemplo.png 90 grados.",
- "apihelp-imagerotate-example-generator": "Rotar todas las imágenes en la CategorÃa:Girar 180 grados.",
- "apihelp-import-param-summary": "Resumen de importación.",
+ "apihelp-imagerotate-example-simple": "Rotar File:Example.png 90 grados.",
+ "apihelp-imagerotate-example-generator": "Rotar todas las imágenes en Category:Flip 180 grados.",
+ "apihelp-import-param-summary": "Resumen de importación de entrada del registro.",
"apihelp-import-param-xml": "Se cargó el archivo XML.",
"apihelp-import-param-interwikisource": "Para importaciones interwiki: wiki desde la que importar.",
"apihelp-import-param-interwikipage": "Para importaciones interwiki: página a importar.",
@@ -200,7 +211,7 @@
"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-managetags-param-reason": "Un motivo opcional para crear, eliminar, activar o desactivar la etiqueta.",
"apihelp-managetags-example-create": "Crear una etiqueta llamada spam con el motivo For use in edit patrolling ",
- "apihelp-managetags-example-delete": "Eliminar la etiqueta vandlaismo con el motivo mal deletreado ",
+ "apihelp-managetags-example-delete": "Eliminar la etiqueta vandlaism con el motivo Misspelt ",
"apihelp-managetags-example-activate": "Activar una etiqueta llamada spam con el motivo For use in edit patrolling ",
"apihelp-managetags-example-deactivate": "Desactivar una etiqueta llamada spam con el motivo No longer required ",
"apihelp-mergehistory-description": "Fusionar historiales de páginas.",
@@ -282,6 +293,8 @@
"apihelp-parse-example-summary": "Analizar un resumen.",
"apihelp-patrol-description": "Verificar una página o revisión.",
"apihelp-patrol-param-rcid": "Identificador de cambios recientes que verificar.",
+ "apihelp-patrol-param-revid": "Identificador de revisión que patrullar.",
+ "apihelp-patrol-param-tags": "Cambio de etiquetas para aplicar a la entrada en la patrulla de registro.",
"apihelp-patrol-example-rcid": "Verificar un cambio reciente.",
"apihelp-patrol-example-revid": "Verificar una revisión.",
"apihelp-protect-description": "Cambiar el nivel de protección de una página.",
@@ -302,6 +315,7 @@
"apihelp-query-param-meta": "Qué metadatos obtener.",
"apihelp-query-param-indexpageids": "Incluir una sección de ID de páginas adicional en la que se muestran todas las ID de páginas.",
"apihelp-query-param-export": "Exportar las revisiones actuales de las páginas dadas o generadas.",
+ "apihelp-query-param-iwurl": "Si la URL completa si el tÃtulo es un interwiki.",
"apihelp-query+allcategories-description": "Enumerar todas las categorÃas.",
"apihelp-query+allcategories-param-from": "La categorÃa para comenzar la enumeración",
"apihelp-query+allcategories-param-to": "La categorÃa para detener la enumeración",
@@ -417,6 +431,7 @@
"apihelp-query+backlinks-example-generator": "Obtener información acerca de las páginas enlazadas a Main page .",
"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+blocks-param-ip": "Obtiene todos los bloqueos que se aplican a esta dirección IP o intervalo CIDR, incluyendo bloqueos de intervalos. No se puede usar en conjunto con $3users . No se aceptan intervalos CIDR mayores que IPv4/$1 o IPv6/$2.",
"apihelp-query+blocks-param-prop": "Qué propiedades se obtendrán:",
"apihelp-query+blocks-paramvalue-prop-userid": "Añade el identificador del usuario bloqueado.",
"apihelp-query+blocks-paramvalue-prop-timestamp": "Añade la fecha y hora de cuando se aplicó el bloque.",
@@ -460,6 +475,7 @@
"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+extlinks-example-simple": "Obtener una lista de los enlaces externos en Main Page .",
+ "apihelp-query+exturlusage-description": "Enumera páginas que contienen una URL dada.",
"apihelp-query+exturlusage-param-prop": "Qué piezas de información incluir:",
"apihelp-query+exturlusage-paramvalue-prop-ids": "Añade el identificado de la página.",
"apihelp-query+exturlusage-paramvalue-prop-title": "Agrega el tÃtulo y el identificador del espacio de nombres de la página.",
@@ -489,8 +505,11 @@
"apihelp-query+imageinfo-param-prop": "Qué información del archivo se obtendrá:",
"apihelp-query+imageinfo-paramvalue-prop-user": "Añade el usuario que subió cada versión del archivo.",
"apihelp-query+imageinfo-paramvalue-prop-userid": "Añade la ID de usuario que subió cada versión del archivo.",
+ "apihelp-query+imageinfo-paramvalue-prop-canonicaltitle": "Agrega el tÃtulo canónico del archivo.",
"apihelp-query+imageinfo-param-limit": "Cuántos revisiones de archivos se devolverán por perfil.",
"apihelp-query+imageinfo-param-urlheight": "Similar a $1urlwidth.",
+ "apihelp-query+imageinfo-param-extmetadatafilter": "Si se especifica y no vacÃo, sólo estas claves serán devueltos por $1prop=extmetadata.",
+ "apihelp-query+imageinfo-param-urlparam": "Un controlador especÃfico de la cadena de parámetro. Por ejemplo, los archivos Pdf pueden utilizar page15-100px . $1urlwidth debe ser utilizado y debe ser consistente con $1urlparam .",
"apihelp-query+imageinfo-param-localonly": "Buscar solo archivos en el repositorio local.",
"apihelp-query+images-description": "Devuelve todos los archivos contenidos en las páginas dadas.",
"apihelp-query+images-param-limit": "Cuántos archivos se devolverán.",
@@ -585,7 +604,7 @@
"apihelp-query+redirects-paramvalue-prop-fragment": "Fragmento de cada redirección, si los hubiere.",
"apihelp-query+redirects-param-limit": "Cuántas redirecciones se devolverán.",
"apihelp-query+redirects-example-simple": "Mostrar una lista de las redirecciones a la [[Main Page|Portada]]",
- "apihelp-query+revisions-example-last5": "Mostrar las últimas 5 revisiones de la Portada .",
+ "apihelp-query+revisions-example-last5": "Mostrar las últimas 5 revisiones de la Main Page .",
"apihelp-query+revisions+base-param-prop": "Las propiedades que se obtendrán para cada revisión:",
"apihelp-query+revisions+base-paramvalue-prop-ids": "El identificador de la revisión.",
"apihelp-query+revisions+base-paramvalue-prop-flags": "Marcas de revisión (menor).",
@@ -657,7 +676,7 @@
"apihelp-query+usercontribs-paramvalue-prop-patrolled": "Etiqueta ediciones verificadas.",
"apihelp-query+usercontribs-paramvalue-prop-tags": "Lista las etiquetas para la edición.",
"apihelp-query+usercontribs-param-show": "Mostrar solo los elementos que coinciden con estos criterios. Por ejemplo, solo ediciones no menores: $2show=!minor .\n\nSi se establece $2show=patrolled o $2show=!patrolled , las revisiones más antiguas que [[mw:Manual:$wgRCMaxAge|$wgRCMaxAge]] ($1 {{PLURAL:$1|segundo|segundos}}) no se mostrarán.",
- "apihelp-query+usercontribs-example-user": "Mostrar contribuciones del usuario Ejemplo .",
+ "apihelp-query+usercontribs-example-user": "Mostrar contribuciones del usuario Example .",
"apihelp-query+usercontribs-example-ipprefix": "Mostrar las contribuciones de todas las direcciones IP con el prefijo 192.0.2. .",
"apihelp-query+userinfo-description": "Obtener información sobre el usuario actual.",
"apihelp-query+userinfo-param-prop": "Qué piezas de información incluir:",
@@ -717,10 +736,11 @@
"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 vandalism al identificador de revisión 123 sin especificar un motivo",
- "apihelp-tag-example-log": "Eliminar la etiqueta spam de la entrada del registro con identificador 123 con el motivo aplicada incorrectamente ",
+ "apihelp-tag-example-log": "Eliminar la etiqueta spam de la entrada del registro con identificador 123 con el motivo Wrongly applied ",
"apihelp-unblock-description": "Desbloquear un usuario.",
+ "apihelp-unblock-param-user": "Nombre de usuario, dirección IP o rango de direcciones IP para desbloquear. No se puede utilizar junto con $1id .",
"apihelp-unblock-param-reason": "Motivo del desbloqueo.",
- "apihelp-unblock-example-user": "Desbloquear al usuario Bob con el motivo Lo siento, Bob ",
+ "apihelp-unblock-example-user": "Desbloquear al usuario Bob con el motivo Sorry Bob ",
"apihelp-undelete-param-reason": "Motivo de la restauración.",
"apihelp-undelete-example-revisions": "Restaurar dos revisiones de la página Main Page .",
"apihelp-upload-param-tags": "Cambiar etiquetas para aplicar a la entrada del registro de subidas y a la revisión de página de archivo.",
@@ -734,7 +754,7 @@
"apihelp-userrights-param-reason": "Motivo del cambio.",
"apihelp-userrights-example-user": "Agregar al usuario FooBot al grupo bot y eliminarlo de los grupos sysop y bureaucrat .",
"apihelp-watch-example-watch": "Vigilar la página Main Page .",
- "apihelp-watch-example-unwatch": "Dejar de vigilar la Portada .",
+ "apihelp-watch-example-unwatch": "Dejar de vigilar la Main Page .",
"apihelp-format-example-generic": "Devolver el resultado de la consulta en formato $1.",
"api-help-main-header": "Módulo principal",
"api-help-flag-deprecated": "Este módulo está en desuso.",
@@ -751,7 +771,7 @@
"api-help-param-deprecated": "En desuso.",
"api-help-param-required": "Este parámetro es obligatorio.",
"api-help-datatypes-header": "Tipos de datos",
- "api-help-datatypes": "Algunos tipos de parámetros en las solicitudes de API necesita más explicación:\n;booleano\n:Los parámetros booleanos trabajo como casillas de verificación HTML: si el parámetro se especifica, independientemente de su valor, se considera verdadero. Para un valor false, se omite el parámetro completo.\n;marca de tiempo\n:Las marcas de tiempo se puede especificar en varios formatos. ISO 8601 con la fecha y la hora, se recomienda. Todas las horas están en UTC, la inclusión de la zona horaria es ignorada.\n:* ISO 8601 con fecha y hora, 2001 -01 -15 T14 :56 :00 Z (signos de puntuación y Z son opcionales)\n:* ISO 8601 fecha y hora (se omite) fracciones de segundo, 2001 -01 -15 T14 :56 :00 .00001 Z (guiones, dos puntos y, Z son opcionales)\n:* Formato MediaWiki, 2001 01 15 14 56 00 \n:* Formato numérico genérico, 2001 -01 -15 14 :56 :00 (opcional en la zona horaria GMT , +## , o -## se omite)\n:* Formato EXIF, 2001 :01 :15 14 :56 :00 \n:*Formato RFC 2822 (zona horaria se puede omitir), Mon , 15 Ene 2001 14 :56 :00 \n:* Formato RFC 850 (zona horaria se puede omitir), lunes , 15 -enero -2001 14 :56 :00 \n:* Formato C ctime, lunes enero 15 14 :56 :00 de 2001 \n:* Segundos desde 1970-01-01T00:00:00Z como de 1 a 13, dÃgito entero",
+ "api-help-datatypes": "Algunos tipos de parámetros en las solicitudes de API necesita más explicación:\n;boolean\n:Los parámetros booleanos trabajo como HTML casillas de verificación: si el parámetro se especifica, independientemente de su valor, se considera verdadero. Para un valor false, se omite el parámetro completo.\n;marca de tiempo\n:Las marcas de tiempo se puede especificar en varios formatos. ISO 8601 la fecha y la hora se recomienda. Todas las horas están en UTC, la inclusión de la zona horaria es ignorado.\n:* ISO 8601 la fecha y la hora, 2001 -01 -15 T14 :56 :00 Z (signos de puntuación y Z son opcionales)\n:* ISO 8601 la fecha y la hora (se omite) fracciones de segundos, 2001 -01 -15 T14 :56 :00 .00001 Z (guiones, dos puntos, y, Z son opcionales)\n:* MediaWiki formato, 2001 01 15 14 56 00 \n:* Genérico formato numérico, 2001 -01 -15 14 :56 :00 (opcional en la zona horaria de GMT , +## , o -## se omite)\n:* El formato EXIF, 2001 :01 :15 14 :56 :00 \n:*Formato RFC 2822 (zona horaria se puede omitir), Mon , 15 Ene 2001 14 :56 :00 \n:* Formato RFC 850 (zona horaria se puede omitir), lunes , 15 -Ene -2001 14 :56 :00 \n:* C ctime formato, Mon Jan 15 14 :56 :00 de 2001 \n:* Segundos desde 1970-01-01T00:00:00Z como la 1 a la 13 dÃgito entero (excepto 0 )\n:* La cadena de ahora ",
"api-help-param-type-limit": "Tipo: entero o max ",
"api-help-param-type-integer": "Tipo: {{PLURAL:$1|1=entero|2=lista de enteros}}",
"api-help-param-type-boolean": "Tipo: booleano/lógico ([[Special:ApiHelp/main#main/datatypes|detalles]])",
diff --git a/includes/api/i18n/fi.json b/includes/api/i18n/fi.json
index f21ae2a230..b2398af697 100644
--- a/includes/api/i18n/fi.json
+++ b/includes/api/i18n/fi.json
@@ -5,34 +5,94 @@
"MrTapsa",
"Pitke",
"Stryn",
- "Jaakkoh"
+ "Jaakkoh",
+ "01miki10",
+ "Silvonen"
]
},
+ "apihelp-main-param-action": "Mikä toiminto suoritetaan.",
+ "apihelp-main-param-curtimestamp": "Sisällytä nykyinen aikaleima tulokseen.",
"apihelp-block-description": "Estä käyttäjä.",
+ "apihelp-block-param-user": "Käyttäjä, IP-osoite tai IP-osoitealue, joka estetään.",
+ "apihelp-block-param-expiry": "Päättymisaika. Voi olla suhteellinen (esim. 5 months tai 2 weeks ) tai absoluuttinen (esim. 2014-09-18T12:34:56Z ). Jos asetetaan infinite , indefinite tai never , esto ei pääty koskaan.",
"apihelp-block-param-reason": "Eston syy.",
+ "apihelp-block-param-anononly": "Estä vain anonyymit käytäjät (ts. estä anonyymit muokkaukset tästä IP-osoitteesta)",
+ "apihelp-block-param-nocreate": "Estä tunnusten luonti.",
+ "apihelp-block-param-autoblock": "Estä automaattisesti viimeksi käytetty IP-osoite, ja ne osoitteet, joista hän yrittää kirjautua sisään.",
+ "apihelp-block-param-noemail": "Estä käyttäjää lähettämästä sähköpostia wikin kautta. (Vaatii oikeuden blockemail
.)",
+ "apihelp-block-param-hidename": "Piilota käyttäjänimi estolokista. (Vaatii oikeuden hideuser
.)",
+ "apihelp-block-param-allowusertalk": "Salli käyttäjän muokata omaa keskustelusivuaan (riippuu asetuksesta [[mw:Manual:$wgBlockAllowsUTEdit|$wgBlockAllowsUTEdit]] ).",
+ "apihelp-block-param-reblock": "Jos käyttäjä on jo estetty, korvaa nykyinen esto.",
+ "apihelp-block-param-watchuser": "Tarkkaile käyttäjän tai IP-osoitteen käyttäjä- ja keskustelusivuja.",
+ "apihelp-block-example-ip-simple": "Estä IP-osoite 192.0.2.5 kolmeksi päiväksi syystä First strike .",
+ "apihelp-block-example-user-complex": "Estä käyttäjä Vandal ikuisesti syystä Vandalism , sekä estä uusien käyttäjien luonti ja sähköpostin lähetys.",
"apihelp-compare-param-fromtitle": "Ensimmäinen vertailtava otsikko.",
+ "apihelp-createaccount-description": "Luo uusi käyttäjätunnus.",
"apihelp-createaccount-param-name": "Käyttäjätunnus.",
"apihelp-createaccount-param-email": "Käyttäjän sähköpostiosoite (valinnainen).",
"apihelp-createaccount-param-realname": "Käyttäjän oikea nimi (valinnainen).",
+ "apihelp-createaccount-example-pass": "Luo käyttäjä testuser salasanalla test123 .",
+ "apihelp-createaccount-example-mail": "Luo käyttäjä testmailuset ja lähetä sähköpostilla satunnaisesti luotu salasana.",
"apihelp-delete-description": "Poista sivu.",
"apihelp-delete-param-watch": "Lisää sivu nykyisen käyttäjän tarkkailulistalle.",
+ "apihelp-delete-param-unwatch": "Poista sivu nykyisen käyttäjän tarkkailulistalta.",
+ "apihelp-delete-example-simple": "Poista Main Page .",
+ "apihelp-delete-example-reason": "Poista Main Page syystä Preparing for move .",
+ "apihelp-disabled-description": "Tämä moduuli on poistettu käytöstä.",
"apihelp-edit-description": "Luo ja muokkaa sivuja.",
"apihelp-edit-param-text": "Sivun sisältö.",
"apihelp-edit-param-minor": "Pieni muokkaus.",
"apihelp-edit-param-notminor": "Ei-pieni muokkaus.",
+ "apihelp-edit-param-bot": "Merkitse tämä muokkaus bottimuokkaukseksi.",
+ "apihelp-edit-param-createonly": "Ãlä muokkaa sivua, jos se on jo olemassa.",
+ "apihelp-edit-param-watch": "Lisää sivu nykyisen käyttäjän tarkkailulistalle.",
+ "apihelp-edit-param-unwatch": "Poista sivu nykyisen käyttäjän tarkkailulistalta.",
"apihelp-edit-example-edit": "Muokkaa sivua.",
"apihelp-emailuser-description": "Lähetä sähköpostia käyttäjälle.",
+ "apihelp-emailuser-param-target": "Käyttäjä, jolle lähetetään sähköpostia.",
"apihelp-emailuser-param-subject": "Otsikko.",
+ "apihelp-emailuser-param-text": "Sähköpostin sisältö.",
"apihelp-emailuser-param-ccme": "Lähetä kopio tästä viestistä minulle.",
"apihelp-emailuser-example-email": "Lähetä käyttäjälle WikiSysop sähköposti, jossa lukee Content .",
+ "apihelp-expandtemplates-description": "Laajentaa kaikki wikitekstin mallineet.",
"apihelp-expandtemplates-param-title": "Sivun otsikko.",
+ "apihelp-expandtemplates-param-text": "Muunnettava wikiteksti.",
+ "apihelp-expandtemplates-paramvalue-prop-wikitext": "Laajennettu wikiteksti.",
+ "apihelp-feedcontributions-param-year": "Alkaen vuodesta (ja aiemmin).",
+ "apihelp-feedcontributions-param-month": "Alkaen kuukaudesta (ja aiemmin).",
+ "apihelp-feedcontributions-param-tagfilter": "Suodata muokkaukset, joissa on nämä merkkaukset.",
+ "apihelp-feedcontributions-param-deletedonly": "Näytä vain poistetut muokkaukset.",
+ "apihelp-feedcontributions-param-toponly": "Näytä vain muokkaukset, jotka ovat viimeisimpiä versioita.",
+ "apihelp-feedcontributions-param-newonly": "Näytä vain muokkaukset, joilla on luotu sivu.",
"apihelp-feedrecentchanges-param-limit": "Kerralla näytettävien tulosten enimmäismäärä.",
"apihelp-feedrecentchanges-param-hideminor": "Piilota pienet muutokset.",
+ "apihelp-feedrecentchanges-param-hidebots": "Piilota bottien tekemät muutokset.",
"apihelp-feedrecentchanges-param-hideanons": "Piilota kirjautumattomien käyttäjien tekemät muutokset.",
"apihelp-feedrecentchanges-param-hideliu": "Piilota rekisteröityneiden käyttäjien tekemät muutokset.",
+ "apihelp-feedrecentchanges-param-hidepatrolled": "Piilota tarkastetut muutokset.",
+ "apihelp-feedrecentchanges-param-hidemyself": "Piilota nykyisen käyttäjän tekemät muutokset.",
+ "apihelp-feedrecentchanges-param-tagfilter": "Suodata merkkauksen mukaan.",
+ "apihelp-feedrecentchanges-example-simple": "Näytä tuoreet muutokset.",
"apihelp-filerevert-param-filename": "Kohteen nimi ilman File:-etuliitettä.",
"apihelp-filerevert-param-comment": "Tallennuksen kommentti.",
"apihelp-imagerotate-description": "Käännä kuva tai kuvia.",
+ "apihelp-imagerotate-example-simple": "Käännä kuvaa File:Example.png 90 astetta.",
+ "apihelp-imagerotate-example-generator": "Käännä kaikkia kuvia luokassa Category:Flip 180 astetta.",
+ "apihelp-login-param-name": "Käyttäjänimi.",
+ "apihelp-login-param-password": "Salasana.",
+ "apihelp-login-example-login": "Kirjaudu sisään.",
+ "apihelp-logout-description": "Kirjaudu ulos ja tyhjennä istunnon tiedot.",
+ "apihelp-logout-example-logout": "Kirjaa nykyinen käyttäjä ulos.",
+ "apihelp-managetags-example-create": "Luo merkkaus nimeltä spam syystä For use in edit patrolling ",
+ "apihelp-managetags-example-delete": "Poista merkkaus vandlaism syystä Misspelt ",
+ "apihelp-managetags-example-activate": "Ota käyttöön merkkaus nimeltä spam syystä For use in edit patrolling ",
+ "apihelp-managetags-example-deactivate": "Poista käytöstä merkkaus nimeltä spam syystä No longer required ",
+ "apihelp-mergehistory-description": "Yhdistä sivujen muutoshistoriat.",
+ "apihelp-move-description": "Siirrä sivu.",
+ "apihelp-move-param-noredirect": "Ãlä luo ohjausta.",
+ "apihelp-move-param-watch": "Lisää sivu ja ohjaus nykyisen käyttäjän tarkkailulistalle.",
+ "apihelp-move-param-unwatch": "Poista sivu ja ohjaus nykyisen käyttäjän tarkkailulistalta.",
+ "apihelp-query+alllinks-paramvalue-prop-title": "Lisää linkin otsikon.",
"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 vandalism versioon 123 antamatta perustelua.",
"apihelp-upload-param-stash": "Mikäli valittu, palvelin säilöö tiedoston väliaikaisesti tallentamisen sijaan."
diff --git a/includes/api/i18n/fr.json b/includes/api/i18n/fr.json
index b1089c7770..4c0d1775bb 100644
--- a/includes/api/i18n/fr.json
+++ b/includes/api/i18n/fr.json
@@ -22,7 +22,8 @@
"L",
"Umherirrender",
"Elfix",
- "Lbayle"
+ "Lbayle",
+ "Verdy p"
]
},
"apihelp-main-description": "\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
\nÃtat : 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\nRequêtes erronées : 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]].\n\nTest : Pour faciliter le test des requêtes de lâAPI, voyez [[Special:ApiSandbox]].",
@@ -206,7 +207,7 @@
"apihelp-imagerotate-example-simple": "Faire pivoter File:Example.png de 90 degrés.",
"apihelp-imagerotate-example-generator": "Faire pivoter toutes les images de Category:Flip de 180 degrés.",
"apihelp-import-description": "Importer une page depuis un autre wiki, ou depuis un fichier XML.\n\nNoter que le POST HTTP doit être effectué comme un import de fichier (câest-à -dire en utilisant multipart/form-data) lors de lâenvoi dâun fichier pour le paramètre xml .",
- "apihelp-import-param-summary": "Importer le résumé.",
+ "apihelp-import-param-summary": "Résumé de lâimportation de lâentrée de journal.",
"apihelp-import-param-xml": "Fichier XML téléchargé.",
"apihelp-import-param-interwikisource": "Pour les importations interwiki : wiki depuis lequel importer.",
"apihelp-import-param-interwikipage": "Pour les importations interwiki : page à importer.",
@@ -356,7 +357,7 @@
"apihelp-purge-param-forcerecursivelinkupdate": "Mettre à jour la table des liens, et mettre à jour les tables de liens pour toute page qui utilise cette page comme modèle",
"apihelp-purge-example-simple": "Purger les pages Main Page et API .",
"apihelp-purge-example-generator": "Purger les 10 premières pages de lâespace de noms principal",
- "apihelp-query-description": "Extraire des données de et sur MédiaWiki.\n\nToutes les modifications de données devront dâabord utiliser une requête pour obtenir un jeton, afin dâéviter les abus de la part de sites malveillants.",
+ "apihelp-query-description": "Extraire des données de et sur MediaWiki.\n\nToutes les modifications de données devront dâabord utiliser une requête pour obtenir un jeton, afin dâéviter les abus de la part de sites malveillants.",
"apihelp-query-param-prop": "Quelles propriétés obtenir des pages demandées.",
"apihelp-query-param-list": "Quelles listes obtenir.",
"apihelp-query-param-meta": "Quelles métadonnées obtenir.",
@@ -421,7 +422,7 @@
"apihelp-query+allimages-param-minsize": "Restreindre aux images avec au moins ce nombre dâoctets.",
"apihelp-query+allimages-param-maxsize": "Restreindre aux images avec au plus ce nombre dâoctets.",
"apihelp-query+allimages-param-sha1": "Hachage SHA1 de lâimage. Ãcrase $1sha1base36.",
- "apihelp-query+allimages-param-sha1base36": "Hachage SHA1 de lâimage en base 36 (utilisé dans MédiaWiki).",
+ "apihelp-query+allimages-param-sha1base36": "Hachage SHA1 de lâimage en base 36 (utilisé dans MediaWiki).",
"apihelp-query+allimages-param-user": "Renvoyer seulement les fichiers téléchargés par cet utilisateur. Utilisable uniquement avec $1sort=timestamp. Impossible à utiliser avec $1filterbots.",
"apihelp-query+allimages-param-filterbots": "Comment filtrer les fichiers téléchargés par des robots. Peut être utilisé uniquement avec $1sort=timestamp. Impossible à utiliser avec $1user.",
"apihelp-query+allimages-param-mime": "Quels types MIME rechercher, par ex. image/jpeg .",
@@ -871,7 +872,7 @@
"apihelp-query+pagepropnames-example-simple": "Obtenir les 10 premiers noms de propriété.",
"apihelp-query+pageprops-description": "Obtenir diverses propriétés de page définies dans le contenu de la page.",
"apihelp-query+pageprops-param-prop": "Lister uniquement ces propriétés de page ([[Special:ApiHelp/query+pagepropnames|action=query&list=pagepropnames]] renvoie les noms de propriété de page utilisés). Utile pour vérifier si des pages utilisent une certaine propriété de page.",
- "apihelp-query+pageprops-example-simple": "Obtenir les propriétés des pages Accueil et MédiaWiki .",
+ "apihelp-query+pageprops-example-simple": "Obtenir les propriétés des pages Main Page et MediaWiki .",
"apihelp-query+pageswithprop-description": "Lister toutes les pages utilisant une propriété de page donnée.",
"apihelp-query+pageswithprop-param-propname": "Propriété de page pour laquelle énumérer les pages ([[Special:ApiHelp/query+pagepropnames|action=query&list=pagepropnames]] renvoie les noms de propriété de page utilisés).",
"apihelp-query+pageswithprop-param-prop": "Quelles informations inclure :",
@@ -1250,7 +1251,7 @@
"apihelp-tokens-example-emailmove": "Récupérer un jeton de courriel et un jeton de déplacement.",
"apihelp-unblock-description": "Débloquer un utilisateur.",
"apihelp-unblock-param-id": "ID du blocage à lever (obtenu via list=blocks ). Impossible à utiliser avec $1user .",
- "apihelp-unblock-param-user": "Nom dâutilisateur, adresse IP ou plage dâadresse IP à débloquer. Impossible à utiliser avec $1id .",
+ "apihelp-unblock-param-user": "Nom dâutilisateur, adresse IP ou plage dâadresses IP à débloquer. Impossible à utiliser en même temps que $1id .",
"apihelp-unblock-param-reason": "Motif de déblocage.",
"apihelp-unblock-param-tags": "Modifier les balises à appliquer à lâentrée dans le journal de blocage.",
"apihelp-unblock-example-id": "Lever le blocage dâID #105 .",
diff --git a/includes/api/i18n/gl.json b/includes/api/i18n/gl.json
index 6841ab7c5b..be92dc2ad9 100644
--- a/includes/api/i18n/gl.json
+++ b/includes/api/i18n/gl.json
@@ -194,7 +194,7 @@
"apihelp-imagerotate-example-simple": "Rotar File:Example.png 90 graos.",
"apihelp-imagerotate-example-generator": "Rotar tódalas imaxes en Category:Flip 180 graos",
"apihelp-import-description": "Importar unha páxina doutra wiki, ou dun ficheiro XML.\n\nDecátese de que o POST HTTP debe facerse como unha carga de ficheiro (p. ex. usando multipart/form-data) cando se envÃe un ficheiro para o parámetro xml .",
- "apihelp-import-param-summary": "Resume de importación.",
+ "apihelp-import-param-summary": "Resume de importación de entrada no rexistro.",
"apihelp-import-param-xml": "Subido ficheiro XML.",
"apihelp-import-param-interwikisource": "Para importacións interwiki: wiki da que importar.",
"apihelp-import-param-interwikipage": "Para importacións interwiki: páxina a importar.",
@@ -226,6 +226,7 @@
"apihelp-mergehistory-param-fromid": "Identificador da páxina desde a que se fusionará o historial. Non pode usarse xunto con $1from .",
"apihelp-mergehistory-param-to": "TÃtulo da páxina á que se fusionará o historial. Non pode usarse xunto con $1toid .",
"apihelp-mergehistory-param-toid": "Identificador da páxina á que se fusionará o historial. Non pode usarse xunto con $1to .",
+ "apihelp-mergehistory-param-timestamp": "Selo de tempo dende o que se moverán as modificacións desde o historial da páxina fonte ó historial da páxina destino. Se non se indica, todo o historial da páxina fonte fusionarase co da páxina destino.",
"apihelp-mergehistory-param-reason": "Razón para a fusión de historiais.",
"apihelp-mergehistory-example-merge": "Fusionar o historial enteiro de PáxinaVella en PáxinaNova .",
"apihelp-mergehistory-example-merge-timestamp": "Fusionar as revisións da páxina PáxinaVella con data 2015-12-31T04:37:41Z en PáxinaNova .",
@@ -1286,6 +1287,7 @@
"apihelp-watch-example-unwatch": "Deixar de vixiar a páxina Páxina Principal .",
"apihelp-watch-example-generator": "Vixiar as primeiras páxinas no espazo de nomes principal",
"apihelp-format-example-generic": "Devolver o resultado da consulta no formato $1.",
+ "apihelp-format-param-wrappedhtml": "Devolver o HTML formatado e os módulos ResourceLoader asociados como un obxecto JSON.",
"apihelp-json-description": "Datos de saÃda en formato JSON.",
"apihelp-json-param-callback": "Se está especificado, inclúe a saÃda na chamada da función indicada. Para maior seguridade, todos os datos especÃficos do usuario serán restrinxidos.",
"apihelp-json-param-utf8": "Se está especificado, codifica a maiorÃa (pero non todos) dos caracteres ASCII como UTF-8 no canto de reemprazalos con secuencias de escape hexadecimais. Por defecto cando formatversion non é 1 .",
diff --git a/includes/api/i18n/he.json b/includes/api/i18n/he.json
index 618fbc7e9f..7a842f4fca 100644
--- a/includes/api/i18n/he.json
+++ b/includes/api/i18n/he.json
@@ -39,7 +39,7 @@
"apihelp-block-param-reblock": "×× ××שת×ש ××ר ×ס××, ××ר×ס ×ת ××ס××× ×× ××××ת.",
"apihelp-block-param-watchuser": "×עק×× ×××¨× ××£ ××שת×ש ×××£ ×ש××× ×©× ××שת×ש ×× ×©× ×ת××ת ×Ö¾IP.",
"apihelp-block-example-ip-simple": "×ס××ת ×ת××ת ×Ö¾IPâ 192.0.2.5 ×ש×××©× ×××× ×¢× ×ס××× First strike .",
- "apihelp-block-example-user-complex": "×ס××ת ××שת×ש Vandal ××× ××××ת ××× ×¢× ×ס××× Vandalism , ××× ×עת ×צ×רת ×ש××××ת ××ש×× ×ש×××ת ×××\"×.",
+ "apihelp-block-example-user-complex": "×ס××ת ××שת×ש Vandal ××× ××××ת ××× ×¢× ×ס××× Vandalism , ××× ×עת ×צ×רת ×ש××× ×ת ××ש×× ×ש×××ת ×××\"×.",
"apihelp-checktoken-description": "×××קת ×תק×× ×ת ×©× ××ס×××× ×Ö¾[[Special:ApiHelp/query+tokens|action=query&meta=tokens]] .",
"apihelp-checktoken-param-type": "ס×× ××ס×××× ×©××××ק×.",
"apihelp-checktoken-param-token": "×××× ×ס×××× ××××ק.",
@@ -195,7 +195,7 @@
"apihelp-imagerotate-example-simple": "×ס××× ×ת File:Example.png ×Ö¾90 ××¢××ת.",
"apihelp-imagerotate-example-generator": "×ס××× ×ת ×× ×ת××× ×ת ×Ö¾Category:Flip ×Ö¾180 ××¢××ת.",
"apihelp-import-description": "××××× ××£ ×××××§× ××ר ×× ×ק×××¥ XML.\n\n×ש ×ש×× ×× ××× ×©×¤×¢××ת HTTP POST צר××× ×××עש×ת ×ת×ר ××¢××ת ק×××¥ (××××ר, ×¢× multipart/form-data) ×××× ×©×××ת ק×××¥ ×פר××ר xml .",
- "apihelp-import-param-summary": "תקצ×ר ××××.",
+ "apihelp-import-param-summary": "תקצ×ר ××××× ×¢×××× ××××.",
"apihelp-import-param-xml": "ק×××¥ XML ש×××¢××.",
"apihelp-import-param-interwikisource": "××××× ××× ××ª×¨× ××ק×: ××××× ×××§× ×××××.",
"apihelp-import-param-interwikipage": "××××× ××× ××ª×¨× ××ק×: ×××× ××£ ×××××.",
@@ -528,7 +528,7 @@
"apihelp-query+allusers-paramvalue-prop-groups": "××ספת ק××צ×ת ש×שת×ש ××ר ×××. ×× ×שת×ש ×××תר ×ש××× ×פ××¤× ××××× ×××××ר פ××ת ת×צ××ת ×××××××.",
"apihelp-query+allusers-paramvalue-prop-implicitgroups": "×רש×× ×ת ×× ×ק××צ×ת ש××שת×ש ××ר ××× ×××××××ת.",
"apihelp-query+allusers-paramvalue-prop-rights": "רש××ת ×××רש××ת ש×ש ××שת×ש.",
- "apihelp-query+allusers-paramvalue-prop-editcount": "××ספת ×× ××× ×ער×××ת ×©× ××שת×ש .",
+ "apihelp-query+allusers-paramvalue-prop-editcount": "××ספת ××× × ×ער×××ת ×©× ××שת×ש.",
"apihelp-query+allusers-paramvalue-prop-registration": "××ספת ××ת×Ö¾×××× ×©× ××× ×ר×ש×× ×©× ××שת×ש (×××× ××××ת ר×ק).",
"apihelp-query+allusers-paramvalue-prop-centralids": "××ספת ××××× ××ר××× ×××¦× ×ש××× ××שת×ש.",
"apihelp-query+allusers-param-limit": "××× ×©××ת ×שת×ש ××¡× ×××× ××©× ×ת.",
diff --git a/includes/api/i18n/hsn.json b/includes/api/i18n/hsn.json
new file mode 100644
index 0000000000..a646923a55
--- /dev/null
+++ b/includes/api/i18n/hsn.json
@@ -0,0 +1,9 @@
+{
+ "@metadata": {
+ "authors": [
+ "SolidBlock"
+ ]
+ },
+ "apihelp-main-param-action": "è¦æå¾æä½ã",
+ "apihelp-main-param-format": "åºçæ ¼å¼ã"
+}
diff --git a/includes/api/i18n/hu.json b/includes/api/i18n/hu.json
index 5eaa449cc0..7334fab962 100644
--- a/includes/api/i18n/hu.json
+++ b/includes/api/i18n/hu.json
@@ -5,7 +5,8 @@
"Dorgan",
"Tacsipacsi",
"ViDam",
- "Macofe"
+ "Macofe",
+ "Wolf Rex"
]
},
"apihelp-main-param-action": "Milyen műveletet hajtson végre.",
@@ -18,11 +19,47 @@
"apihelp-block-param-expiry": "Lejárat ideje. Lehet relatÃv (pl. 5 months , 2 weeks ) vagy abszolút (pl. 2014-09-18T12:34:56Z ). Ha infinite -re, indefinite -re vagy never -re állÃtod, a blokk soha nem fog lejárni.",
"apihelp-block-param-reason": "Blokkolás oka.",
"apihelp-block-param-nocreate": "Ãj regisztráció megakadályozása",
+ "apihelp-block-param-watchuser": "A szerkesztÅ vagy IP-cÃm szerkesztÅi- és vitalapjának figyelése.",
"apihelp-createaccount-param-name": "Felhasználónév.",
+ "apihelp-createaccount-param-email": "A szerkesztÅ e-mail-cÃme (nem kötelezÅ).",
+ "apihelp-createaccount-param-realname": "A szerkesztÅ valódi neve (nem kötelezÅ).",
"apihelp-delete-description": "Lap törlése.",
+ "apihelp-delete-param-unwatch": "A lap törlése a szerkesztÅ figyelÅlistájáról.",
"apihelp-delete-example-simple": "Main Page törlése.",
+ "apihelp-disabled-description": "Ez a modul le lett tiltva.",
+ "apihelp-edit-description": "Lapok létrehozása és szerkesztése.",
+ "apihelp-edit-param-sectiontitle": "Az új szakasz cÃme.",
+ "apihelp-edit-param-minor": "Apró változtatás.",
+ "apihelp-edit-param-bot": "Szerkesztés megjelölése botszerkesztésként.",
+ "apihelp-edit-param-createonly": "Ne szerkeszd a lapot, ha már létezik.",
"apihelp-edit-example-edit": "Lap szerkesztése",
+ "apihelp-emailuser-description": "E-mail küldése",
+ "apihelp-emailuser-param-text": "Szövegtörzs.",
+ "apihelp-emailuser-param-ccme": "Másolat küldése magamnak.",
"apihelp-expandtemplates-param-title": "Lap cÃme.",
+ "apihelp-feedrecentchanges-param-hideminor": "Apró változtatások elrejtése.",
+ "apihelp-feedrecentchanges-param-hidebots": "Botszerkesztések elrejtése.",
+ "apihelp-feedrecentchanges-param-hidepatrolled": "EllenÅrzött változtatások elrejtése.",
+ "apihelp-login-param-name": "SzerkesztÅnév.",
+ "apihelp-login-param-password": "Jelszó.",
+ "apihelp-login-example-login": "Bejelentkezés.",
+ "apihelp-logout-example-logout": "Aktuális felhasználó kijelentkeztetése.",
+ "apihelp-mergehistory-description": "Laptörténetek egyesÃtése",
+ "apihelp-mergehistory-param-reason": "Laptörténet egyesÃtésének oka.",
+ "apihelp-move-description": "Egy lap átnevezése.",
+ "apihelp-move-param-reason": "Az átnevezés oka.",
+ "apihelp-move-param-movetalk": "Nevezd át a vitalapot is, ha létezik.",
+ "apihelp-move-param-movesubpages": "Nevezd át az allapokat is, ha lehetséges.",
+ "apihelp-move-param-noredirect": "Ne készÃts átirányÃtást.",
+ "apihelp-move-param-ignorewarnings": "Figyelmeztetések figyelmen kÃvül hagyása.",
+ "apihelp-opensearch-param-limit": "Találatok maximális száma.",
+ "apihelp-options-example-reset": "Minden beállÃtás visszaállÃtása",
+ "apihelp-protect-example-protect": "Lap levédése.",
+ "apihelp-query+allcategories-param-dir": "A rendezés iránya.",
+ "apihelp-query+deletedrevs-paraminfo-modes": "{{PLURAL:$1|Mód|Módok}}: $2",
+ "apihelp-query+imageinfo-paramvalue-prop-sha1": "SHA-1 hash hozzáadása a fájlhoz.",
+ "apihelp-query+imageinfo-paramvalue-prop-mime": "MIME-tÃpus hozzáadása a fájlhoz.",
+ "apihelp-query+info-paramvalue-prop-watchers": "A lapot figyelÅk száma, ha lehetséges.",
"apihelp-userrights-param-userid": "Felhasználói azonosÃtó.",
"api-help-title": "MediaWiki API súgó",
"api-help-lead": "Ez egy automatikusan generált MediaWiki API-dokumentációs lap.\n\nDokumentáció és példák: https://www.mediawiki.org/wiki/API",
diff --git a/includes/api/i18n/id.json b/includes/api/i18n/id.json
index 223e5853db..480ad24812 100644
--- a/includes/api/i18n/id.json
+++ b/includes/api/i18n/id.json
@@ -1,8 +1,10 @@
{
"@metadata": {
"authors": [
- "WongKentir"
+ "WongKentir",
+ "Beeyan"
]
},
- "apihelp-createaccount-param-name": "Nama pengguna"
+ "apihelp-createaccount-param-name": "Nama pengguna",
+ "apihelp-revisiondelete-param-ids": "Penanda untuk perubahan yang akan dihapus"
}
diff --git a/includes/api/i18n/it.json b/includes/api/i18n/it.json
index 2825a739c8..d26b996728 100644
--- a/includes/api/i18n/it.json
+++ b/includes/api/i18n/it.json
@@ -14,18 +14,20 @@
"JackLantern"
]
},
- "apihelp-main-description": "\n* [[mw:API:Main_page|Documentazione (in inglese)]]\n* [[mw:API:FAQ|FAQ (in inglese)]]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api Mailing list]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announce Annunci sull'API]\n* [https://phabricator.wikimedia.org/maniphest/query/GebfyV4uCaLd/#R Bug & richieste]\n
\nStato: Tutte le funzioni e caratteristiche mostrate su questa pagina dovrebbero funzionare, ma l'API è ancora in fase d'attivo sviluppo, e potrebbe cambiare in qualsiasi momenento. Iscriviti alla [https://lists.wikimedia.org/pipermail/mediawiki-api-announce/ the mediawiki-api-announce mailing list] per essere informato sugli aggiornamenti.\n\nIstruzioni sbagliate: quando vengono impartite all'API delle istruzioni sbagliate, un'intestazione HTTP verrà inviata col messaggio \"MediaWiki-API-Error\" e sia al valore dell'intestazione sia al codice d'errore verrà impostato lo stesso valore. Per maggiori informazioni leggi [[mw:API:Errors_and_warnings|API:Errori ed avvertimenti (in inglese)]].\n\nTest: per testare facilmente le richieste API, vedi [[Special:ApiSandbox]].",
+ "apihelp-main-description": "\n* [[mw:API:Main_page|Documentazione]] (in inglese)\n* [[mw:API:FAQ|FAQ]] (in inglese)\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api Mailing list]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announce Annunci sull'API]\n* [https://phabricator.wikimedia.org/maniphest/query/GebfyV4uCaLd/#R Bug & richieste]\n
\nStato: tutte le funzioni e caratteristiche mostrate su questa pagina dovrebbero funzionare, ma le API sono ancora in fase attiva di sviluppo, e potrebbero cambiare in qualsiasi momento. Iscriviti alla [https://lists.wikimedia.org/pipermail/mediawiki-api-announce/ la mailing list sugli annunci delle API MediaWiki] per essere informato sugli aggiornamenti.\n\nIstruzioni sbagliate: quando vengono impartite alle API delle istruzioni sbagliate, un'intestazione HTTP verrà inviata col messaggio \"MediaWiki-API-Error\" e, sia il valore dell'intestazione, sia il codice d'errore, verranno impostati con lo stesso valore. Per maggiori informazioni leggi [[mw:API:Errors_and_warnings|API:Errori ed avvertimenti]] (in inglese).\n\nTest: per testare facilmente le richieste API, vedi [[Special:ApiSandbox]].",
"apihelp-main-param-action": "Azione da compiere.",
"apihelp-main-param-format": "Formato dell'output.",
- "apihelp-main-param-assert": "Verifica che l'utente sia loggato se si è impostato utente , o che abbia i permessi di bot se si è impostato bot .",
+ "apihelp-main-param-assert": "Verifica che l'utente abbia effettuato l'accesso se si è impostato user , o che abbia i permessi di bot se si è impostato bot .",
"apihelp-main-param-requestid": "Tutti i valori forniti saranno implementati nella risposta. Potrebbero venir utilizzati per distinguere le richieste.",
"apihelp-main-param-servedby": "Includi nel risultato il nome dell'host che ha servito la richiesta.",
"apihelp-main-param-curtimestamp": "Includi nel risultato il timestamp attuale.",
"apihelp-block-description": "Blocca un utente.",
"apihelp-block-param-user": "Nome utente, indirizzo IP o range di IP da bloccare.",
+ "apihelp-block-param-expiry": "Tempo di scadenza. Può essere relativo (ad esempio, 5 months o 2 weeks ) o assoluto (ad esempio 2014-09-18T12:34:56Z ). Se impostato a infinite , indefinite o never , il blocco non scadrà mai.",
"apihelp-block-param-reason": "Motivo del blocco.",
"apihelp-block-param-anononly": "Blocca solo gli utenti non registrati (cioè disattiva i contributi anonimi da questo indirizzo IP).",
"apihelp-block-param-nocreate": "Impedisci creazione di utenze.",
+ "apihelp-block-param-autoblock": "Blocca automaticamente l'ultimo indirizzo IP usato dall'utente e i successivi con cui viene tentato l'accesso.",
"apihelp-block-param-hidename": "Nascondi il nome utente dal registro dei blocchi (Richiede i permessi di hideuser
).",
"apihelp-block-param-reblock": "Se l'utente è già bloccato, sovrascrivere il blocco esistente.",
"apihelp-block-param-watchuser": "Segui la pagina utente e le pagine di discussione utente dell'utente o dell'indirizzo IP.",
@@ -58,17 +60,19 @@
"apihelp-createaccount-example-pass": "Crea l'utente testuser con password test123 .",
"apihelp-createaccount-example-mail": "Crea l'utente testmailuser e mandagli via e-mail una password generata casualmente.",
"apihelp-delete-description": "Cancella una pagina.",
- "apihelp-delete-param-title": "Titolo della pagina che si desidera eliminare. Non può essere usato insieme con $1pageid .",
+ "apihelp-delete-param-title": "Titolo della pagina che si desidera eliminare. Non può essere usato insieme a $1pageid .",
"apihelp-delete-param-pageid": "ID di pagina della pagina da cancellare. Non può essere usato insieme con $1title .",
"apihelp-delete-param-reason": "Motivo della cancellazione. Se non indicato, verrà usata una motivazione generata automaticamente.",
"apihelp-delete-param-watch": "Aggiunge la pagina agli osservati speciali dell'utente attuale.",
"apihelp-delete-param-unwatch": "Rimuove la pagina dagli osservati speciali dell'utente attuale.",
+ "apihelp-delete-param-oldimage": "Il nome della vecchia immagine da cancellare, come fornita da [[Special:ApiHelp/query+imageinfo|action=query&prop=imageinfo&iiprop=archivename]].",
"apihelp-delete-example-simple": "Cancella Main Page .",
"apihelp-delete-example-reason": "Cancella la Main Page con motivazione Preparing for move .",
"apihelp-disabled-description": "Questo modulo è stato disabilitato.",
"apihelp-edit-description": "Crea e modifica pagine.",
- "apihelp-edit-param-title": "Titolo della pagina da modificare. Non può essere usato insieme con $1pageid .",
+ "apihelp-edit-param-title": "Titolo della pagina da modificare. Non può essere usato insieme a $1pageid .",
"apihelp-edit-param-pageid": "ID di pagina della pagina da modificare. Non può essere usato insieme con $1title .",
+ "apihelp-edit-param-section": "Numero di sezione. 0 per la sezione iniziale, new per una nuova sezione.",
"apihelp-edit-param-sectiontitle": "Il titolo per una nuova sezione.",
"apihelp-edit-param-text": "Contenuto della pagina.",
"apihelp-edit-param-summary": "Oggetto della modifica. Anche titolo della sezione se $1sezione=new e $1sectiontitle non è impostato.",
@@ -81,7 +85,10 @@
"apihelp-edit-param-watch": "Aggiunge la pagina agli osservati speciali dell'utente attuale.",
"apihelp-edit-param-unwatch": "Rimuove la pagina dagli osservati speciali dell'utente attuale.",
"apihelp-edit-param-redirect": "Risolvi automaticamente redirect.",
+ "apihelp-edit-param-contentmodel": "Modello di contenuto dei nuovi contenuti.",
+ "apihelp-edit-param-token": "Il token deve sempre essere inviato come ultimo parametro, o almeno dopo il parametro $1text.",
"apihelp-edit-example-edit": "Modifica una pagina.",
+ "apihelp-edit-example-prepend": "Anteponi __NOTOC__ a una pagina.",
"apihelp-emailuser-description": "Manda un'e-mail ad un utente.",
"apihelp-emailuser-param-target": "Utente a cui inviare l'e-mail.",
"apihelp-emailuser-param-subject": "Oggetto dell'e-mail.",
@@ -97,10 +104,15 @@
"apihelp-feedcontributions-param-feedformat": "Il formato del feed.",
"apihelp-feedcontributions-param-year": "Dall'anno (e precedenti).",
"apihelp-feedcontributions-param-month": "Dal mese (e precedenti).",
+ "apihelp-feedcontributions-param-tagfilter": "Filtra contributi che hanno queste etichette.",
"apihelp-feedcontributions-param-deletedonly": "Mostra solo i contribuiti cancellati.",
"apihelp-feedcontributions-param-toponly": "Mostra solo i contributi che sono le ultime versioni per la pagina.",
"apihelp-feedcontributions-param-newonly": "Visualizza solo le modifiche che sono creazioni di pagina.",
+ "apihelp-feedcontributions-param-showsizediff": "Mostra la differenza di dimensioni tra le versioni.",
+ "apihelp-feedcontributions-example-simple": "Restituisce contributi per l'utente Example .",
"apihelp-feedrecentchanges-param-feedformat": "Il formato del feed.",
+ "apihelp-feedrecentchanges-param-namespace": "Namespace a cui limitare i risultati.",
+ "apihelp-feedrecentchanges-param-associated": "Includi namespace associato (discussione o principale)",
"apihelp-feedrecentchanges-param-limit": "Numero massimo di risultati da restituire.",
"apihelp-feedrecentchanges-param-hideminor": "Nascondi le modifiche minori.",
"apihelp-feedrecentchanges-param-hidebots": "Nascondi le modifiche apportate da bot.",
@@ -120,22 +132,30 @@
"apihelp-filerevert-param-comment": "Commento sul caricamento.",
"apihelp-filerevert-param-archivename": "Nome dell'archivio della versione da ripristinare.",
"apihelp-filerevert-example-revert": "Ripristina Wiki.png alla versione del 2011-03-05T15:27:40Z .",
+ "apihelp-help-param-toc": "Includi un indice nell'output HTML.",
+ "apihelp-help-example-main": "Aiuto per il modulo principale.",
"apihelp-help-example-submodules": "Aiuto per action=query e tutti i suoi sotto-moduli.",
+ "apihelp-help-example-recursive": "Tutti gli aiuti in una pagina.",
+ "apihelp-help-example-help": "Aiuto per lo stesso modulo di aiuto.",
"apihelp-imagerotate-description": "Ruota una o più immagini.",
"apihelp-imagerotate-param-rotation": "Gradi di rotazione dell'immagine in senso orario.",
"apihelp-imagerotate-example-simple": "Ruota File:Example.png di 90 gradi.",
"apihelp-imagerotate-example-generator": "Ruota tutte le immagini in Category:Flip di 180 gradi.",
- "apihelp-import-param-summary": "Oggetto dell'importazione.",
+ "apihelp-import-param-summary": "Oggetto nel registro di importazione.",
"apihelp-import-param-xml": "File XML caricato.",
"apihelp-import-param-interwikisource": "Per importazioni interwiki: wiki da cui importare.",
"apihelp-import-param-interwikipage": "Per importazioni interwiki: pagina da importare.",
"apihelp-import-param-fullhistory": "Per importazioni interwiki: importa l'intera cronologia, non solo la versione attuale.",
"apihelp-import-param-templates": "Per importazioni interwiki: importa anche tutti i template inclusi.",
+ "apihelp-import-param-namespace": "Importa in questo namespace. Non può essere usato insieme a $1rootpage .",
+ "apihelp-import-param-rootpage": "Importa come sottopagina di questa pagina. Non può essere usato insieme a $1namespace .",
"apihelp-import-example-import": "Importa [[meta:Help:ParserFunctions]] nel namespace 100 con cronologia completa.",
"apihelp-login-param-name": "Nome utente.",
"apihelp-login-param-password": "Password.",
"apihelp-login-param-domain": "Dominio (opzionale).",
+ "apihelp-login-example-gettoken": "Recupera un token di login.",
"apihelp-login-example-login": "Entra.",
+ "apihelp-logout-description": "Esci e cancella i dati della sessione.",
"apihelp-mergehistory-description": "Unisce cronologie pagine.",
"apihelp-mergehistory-param-from": "Il titolo della pagina da cui cronologia sarà unita. Non può essere usato insieme a $1fromid .",
"apihelp-mergehistory-param-fromid": "L'ID della pagina da cui cronologia sarà unita. Non può essere usato insieme a $1from .",
@@ -146,55 +166,116 @@
"apihelp-mergehistory-example-merge": "Unisci l'intera cronologia di Oldpage in Newpage .",
"apihelp-mergehistory-example-merge-timestamp": "Unisci le versioni della pagina Oldpage fino a 2015-12-31T04:37:41Z in Newpage .",
"apihelp-move-description": "Sposta una pagina.",
+ "apihelp-move-param-to": "Titolo a cui spostare la pagina.",
"apihelp-move-param-reason": "Motivo della rinomina.",
"apihelp-move-param-movetalk": "Rinomina la pagina di discussione, se esiste.",
"apihelp-move-param-movesubpages": "Rinomina sottopagine, se applicabile.",
"apihelp-move-param-noredirect": "Non creare un rinvio.",
"apihelp-move-param-watch": "Aggiunge la pagina e il redirect agli osservati speciali dell'utente attuale.",
+ "apihelp-move-param-unwatch": "Rimuovi la pagina e il redirect dagli osservati speciali dell'utente attuale.",
"apihelp-move-param-ignorewarnings": "Ignora i messaggi di avvertimento del sistema.",
+ "apihelp-move-example-move": "Sposta Badtitle a Goodtitle senza lasciare redirect.",
+ "apihelp-opensearch-param-search": "Stringa di ricerca.",
"apihelp-opensearch-param-limit": "Numero massimo di risultati da restituire.",
+ "apihelp-opensearch-param-suggest": "Non fare nulla se [[mw:Manual:$wgEnableOpenSearchSuggest|$wgEnableOpenSearchSuggest]] è falso.",
"apihelp-opensearch-param-format": "Il formato dell'output.",
"apihelp-opensearch-example-te": "Trova le pagine che iniziano con Te .",
"apihelp-options-example-reset": "Reimposta tutte le preferenze.",
+ "apihelp-paraminfo-description": "Ottieni informazioni sui moduli API.",
"apihelp-paraminfo-param-helpformat": "Formato delle stringhe di aiuto.",
"apihelp-parse-param-summary": "Oggetto da analizzare.",
+ "apihelp-parse-param-prop": "Quali pezzi di informazioni ottenere:",
"apihelp-parse-example-text": "Analizza wikitext.",
"apihelp-parse-example-texttitle": "Analizza wikitext, specificando il titolo della pagina.",
"apihelp-parse-example-summary": "Analizza un oggetto.",
+ "apihelp-patrol-description": "Verifica una pagina o versione.",
+ "apihelp-patrol-param-rcid": "ID della modifica recente da verificare.",
+ "apihelp-patrol-param-revid": "ID versione da verificare.",
"apihelp-patrol-param-tags": "Modifica etichette da applicare all'elemento del registro delle verifiche.",
+ "apihelp-patrol-example-rcid": "Verifica una modifica recente.",
+ "apihelp-patrol-example-revid": "Verifica una versione.",
"apihelp-protect-description": "Modifica il livello di protezione di una pagina.",
- "apihelp-protect-param-title": "Titolo della pagina da (s)proteggere. Non può essere usato insieme con $1pageid.",
+ "apihelp-protect-param-title": "Titolo della pagina da (s)proteggere. Non può essere usato insieme a $1pageid .",
"apihelp-protect-param-pageid": "ID della pagina da (s)proteggere. Non può essere usato insieme con $1title.",
"apihelp-protect-param-tags": "Modifica etichette da applicare all'elemento del registro delle protezioni.",
"apihelp-protect-example-protect": "Proteggi una pagina.",
+ "apihelp-protect-example-unprotect": "Sproteggi una pagina impostando restrizione su all .",
+ "apihelp-protect-example-unprotect2": "Sproteggi una pagina impostando nessuna restrizione.",
+ "apihelp-purge-param-forcelinkupdate": "Aggiorna la tabella dei collegamenti.",
+ "apihelp-purge-param-forcerecursivelinkupdate": "Aggiorna la tabella dei collegamenti per questa pagina, e per ogni pagina che usa questa pagina come template.",
+ "apihelp-query-param-list": "Quali elenchi ottenere.",
+ "apihelp-query-param-meta": "Quali metadati ottenere.",
"apihelp-query-param-export": "Esporta la versione attuale di tutte le pagine ottenute o generate.",
+ "apihelp-query+allcategories-description": "Enumera tutte le categorie.",
+ "apihelp-query+allcategories-param-from": "La categoria da cui iniziare l'elenco.",
+ "apihelp-query+allcategories-param-to": "La categoria al quale interrompere l'elenco.",
+ "apihelp-query+allcategories-param-prefix": "Ricerca per tutti i titoli delle categorie che iniziano con questo valore.",
"apihelp-query+allcategories-param-dir": "Direzione dell'ordinamento.",
"apihelp-query+allcategories-param-limit": "Quante categorie restituire.",
"apihelp-query+allcategories-param-prop": "Quali proprietà ottenere:",
"apihelp-query+allcategories-paramvalue-prop-size": "Aggiungi il numero di pagine nella categoria.",
"apihelp-query+allcategories-paramvalue-prop-hidden": "Etichetta categorie che sono nascoste con __HIDDENCAT__
.",
"apihelp-query+allcategories-example-size": "Elenca categorie con informazioni sul numero di pagine in ognuna.",
+ "apihelp-query+alldeletedrevisions-description": "Elenca tutte le versioni cancellate da un utente o in un namespace.",
"apihelp-query+alldeletedrevisions-paraminfo-useronly": "Può essere utilizzato solo con $3user .",
"apihelp-query+alldeletedrevisions-paraminfo-nonuseronly": "Non può essere utilizzato con $3user .",
+ "apihelp-query+alldeletedrevisions-param-start": "Il timestamp da cui iniziare l'elenco.",
+ "apihelp-query+alldeletedrevisions-param-end": "Il timestamp al quale interrompere l'elenco.",
+ "apihelp-query+alldeletedrevisions-param-from": "Inizia elenco a questo titolo.",
+ "apihelp-query+alldeletedrevisions-param-to": "Interrompi elenco a questo titolo.",
+ "apihelp-query+alldeletedrevisions-param-prefix": "Ricerca per tutti i titoli delle pagine che iniziano con questo valore.",
+ "apihelp-query+alldeletedrevisions-param-user": "Elenca solo le versioni di questo utente.",
+ "apihelp-query+alldeletedrevisions-param-excludeuser": "Non elencare le versioni di questo utente.",
+ "apihelp-query+alldeletedrevisions-param-namespace": "Elenca solo le pagine in questo namespace.",
"apihelp-query+alldeletedrevisions-example-user": "Elenca gli ultimi 50 contributi cancellati dell'utente Example .",
"apihelp-query+alldeletedrevisions-example-ns-main": "Elenca le prime 50 versioni cancellate nel namespace principale.",
+ "apihelp-query+allfileusages-param-from": "Il titolo del file da cui iniziare l'elenco.",
+ "apihelp-query+allfileusages-param-to": "Il titolo del file al quale interrompere l'elenco.",
+ "apihelp-query+allfileusages-param-prefix": "Ricerca per tutti i titoli dei file che iniziano con questo valore.",
+ "apihelp-query+allfileusages-param-prop": "Quali pezzi di informazioni includere:",
"apihelp-query+allfileusages-paramvalue-prop-title": "Aggiunge il titolo del file.",
"apihelp-query+allfileusages-param-limit": "Quanti elementi totali restituire.",
"apihelp-query+allfileusages-param-dir": "La direzione in cui elencare.",
+ "apihelp-query+allfileusages-example-generator": "Ottieni le pagine contenenti i file.",
"apihelp-query+allimages-param-sort": "Proprietà di ordinamento.",
"apihelp-query+allimages-param-dir": "La direzione in cui elencare.",
+ "apihelp-query+allimages-param-from": "Il titolo dell'immagine da cui iniziare l'elenco. Può essere utilizzato solo con $1sort=name.",
+ "apihelp-query+allimages-param-start": "Il timestamp da cui iniziare l'elenco. Può essere utilizzato solo con $1sort=timestamp.",
+ "apihelp-query+allimages-param-end": "Il timestamp al quale interrompere l'elenco. Può essere utilizzato solo con $1sort=timestamp.",
"apihelp-query+allimages-param-limit": "Quante immagini in totale restituire.",
"apihelp-query+allimages-example-B": "Mostra un elenco di file a partire dalla lettera B .",
+ "apihelp-query+alllinks-description": "Elenca tutti i collegamenti che puntano ad un namespace indicato.",
+ "apihelp-query+alllinks-param-from": "Il titolo del collegamento da cui iniziare l'elenco.",
+ "apihelp-query+alllinks-param-to": "Il titolo del collegamento al quale interrompere l'elenco.",
+ "apihelp-query+alllinks-param-prefix": "Ricerca per tutti i titoli dei collegamenti che iniziano con questo valore.",
+ "apihelp-query+alllinks-param-prop": "Quali pezzi di informazioni includere:",
+ "apihelp-query+alllinks-paramvalue-prop-ids": "Aggiunge l'ID pagina della pagina collegata (non può essere usato con $1unique ).",
"apihelp-query+alllinks-paramvalue-prop-title": "Aggiunge il titolo del collegamento.",
+ "apihelp-query+alllinks-param-namespace": "Il namespace da elencare.",
"apihelp-query+alllinks-param-limit": "Quanti elementi totali restituire.",
"apihelp-query+alllinks-param-dir": "La direzione in cui elencare.",
+ "apihelp-query+alllinks-example-generator": "Ottieni le pagine contenenti i collegamenti.",
+ "apihelp-query+allmessages-description": "Restituisce messaggi da questo sito.",
+ "apihelp-query+allmessages-param-prop": "Quali proprietà ottenere.",
"apihelp-query+allmessages-param-lang": "Restituisci messaggi in questa lingua.",
+ "apihelp-query+allmessages-param-prefix": "Restituisci messaggi con questo prefisso.",
+ "apihelp-query+allpages-param-from": "Il titolo di pagina da cui iniziare l'elenco.",
+ "apihelp-query+allpages-param-to": "Il titolo di pagina al quale interrompere l'elenco.",
+ "apihelp-query+allpages-param-prefix": "Ricerca per tutti i titoli delle pagine che iniziano con questo valore.",
+ "apihelp-query+allpages-param-namespace": "Il namespace da elencare.",
"apihelp-query+allpages-param-filterredir": "Quali pagine elencare.",
+ "apihelp-query+allpages-param-limit": "Quante pagine totali restituire.",
"apihelp-query+allpages-param-dir": "La direzione in cui elencare.",
+ "apihelp-query+allredirects-param-from": "Il titolo del reindirizzamento da cui iniziare l'elenco.",
+ "apihelp-query+allredirects-param-prop": "Quali pezzi di informazioni includere:",
"apihelp-query+allredirects-paramvalue-prop-title": "Aggiunge il titolo del redirect.",
+ "apihelp-query+allredirects-param-namespace": "Il namespace da elencare.",
"apihelp-query+allredirects-param-limit": "Quanti elementi totali restituire.",
"apihelp-query+allredirects-param-dir": "La direzione in cui elencare.",
+ "apihelp-query+allredirects-example-generator": "Ottieni le pagine contenenti i reindirizzamenti.",
"apihelp-query+allrevisions-description": "Elenco di tutte le versioni.",
+ "apihelp-query+allrevisions-param-start": "Il timestamp da cui iniziare l'elenco.",
+ "apihelp-query+allrevisions-param-end": "Il timestamp al quale interrompere l'elenco.",
"apihelp-query+allrevisions-param-user": "Elenca solo le versioni di questo utente.",
"apihelp-query+allrevisions-param-excludeuser": "Non elencare le versioni di questo utente.",
"apihelp-query+allrevisions-param-namespace": "Elenca solo le pagine in questo namespace.",
@@ -204,27 +285,97 @@
"apihelp-query+mystashedfiles-paramvalue-prop-size": "Recupera la dimensione del file e le dimensioni dell'immagine.",
"apihelp-query+mystashedfiles-paramvalue-prop-type": "Recupera il tipo MIME del file e il tipo media.",
"apihelp-query+mystashedfiles-param-limit": "Quanti file restituire.",
+ "apihelp-query+alltransclusions-description": "Elenca tutte le inclusioni (pagine incorporate utilizzando {{x}}), comprese le non esistenti.",
+ "apihelp-query+alltransclusions-param-from": "Il titolo dell'inclusione da cui iniziare l'elenco.",
+ "apihelp-query+alltransclusions-param-prop": "Quali pezzi di informazioni includere:",
"apihelp-query+alltransclusions-paramvalue-prop-title": "Aggiunge il titolo dell'inclusione.",
+ "apihelp-query+alltransclusions-param-namespace": "Il namespace da elencare.",
"apihelp-query+alltransclusions-param-limit": "Quanti elementi totali restituire.",
"apihelp-query+alltransclusions-param-dir": "La direzione in cui elencare.",
+ "apihelp-query+alltransclusions-example-generator": "Ottieni pagine contenenti le inclusioni.",
+ "apihelp-query+allusers-param-from": "Il nome utente da cui iniziare l'elenco.",
+ "apihelp-query+allusers-param-to": "Il nome utente al quale interrompere l'elenco.",
+ "apihelp-query+allusers-param-prefix": "Ricerca per tutti gli utenti che iniziano con questo valore.",
"apihelp-query+allusers-param-dir": "Direzione dell'ordinamento.",
+ "apihelp-query+allusers-param-group": "Includi solo gli utenti nei gruppi indicati.",
+ "apihelp-query+allusers-param-excludegroup": "Escludi gli utenti nei gruppi indicati.",
+ "apihelp-query+allusers-param-prop": "Quali pezzi di informazioni includere:",
"apihelp-query+allusers-param-limit": "Quanti nomi utente totali restituire.",
"apihelp-query+backlinks-description": "Trova tutte le pagine che puntano a quella specificata.",
+ "apihelp-query+backlinks-param-namespace": "Il namespace da elencare.",
"apihelp-query+backlinks-param-dir": "La direzione in cui elencare.",
"apihelp-query+backlinks-param-redirect": "Se la pagina collegata è un redirect, trova tutte le pagine che puntano al redirect. Il limite massimo è dimezzato.",
+ "apihelp-query+backlinks-example-simple": "Mostra collegamenti a Main page .",
+ "apihelp-query+blocks-param-start": "Il timestamp da cui iniziare l'elenco.",
+ "apihelp-query+blocks-param-end": "Il timestamp al quale interrompere l'elenco.",
+ "apihelp-query+blocks-param-limit": "Il numero massimo di blocchi da elencare.",
"apihelp-query+blocks-param-prop": "Quali proprietà ottenere:",
+ "apihelp-query+blocks-paramvalue-prop-id": "Aggiunge l'ID del blocco.",
+ "apihelp-query+blocks-paramvalue-prop-user": "Aggiunge il nome utente dell'utente bloccato.",
"apihelp-query+blocks-paramvalue-prop-userid": "Aggiunge l'ID utente dell'utente bloccato.",
+ "apihelp-query+blocks-paramvalue-prop-by": "Aggiunge il nome utente dell'utente che ha effettuato il blocco.",
"apihelp-query+blocks-paramvalue-prop-byid": "Aggiunge l'ID utente dell'utente che ha effettuato il blocco.",
"apihelp-query+blocks-example-simple": "Elenca i blocchi.",
+ "apihelp-query+categories-param-show": "Quale tipo di categorie mostrare.",
+ "apihelp-query+categories-param-limit": "Quante categorie restituire.",
"apihelp-query+categories-param-dir": "La direzione in cui elencare.",
+ "apihelp-query+categoryinfo-description": "Restituisce informazioni su una categoria indicata.",
+ "apihelp-query+categoryinfo-example-simple": "Ottieni informazioni su Category:Foo e Category:Bar .",
+ "apihelp-query+categorymembers-description": "Elenca tutte le pagine in una categoria indicata.",
+ "apihelp-query+categorymembers-param-prop": "Quali pezzi di informazioni includere:",
+ "apihelp-query+categorymembers-paramvalue-prop-ids": "Aggiunge l'ID pagina.",
"apihelp-query+categorymembers-paramvalue-prop-title": "Aggiunge il titolo e l'ID namespace della pagina.",
"apihelp-query+categorymembers-paramvalue-prop-type": "Aggiunge il tipo di come la pagina è stata categorizzata (page , subcat o file ).",
"apihelp-query+categorymembers-param-namespace": "Includi solo le pagine in questi namespace. Nota che può essere usato $1type=subcat o $1type=file anziché $1namespace=14 o 6 .",
+ "apihelp-query+categorymembers-param-limit": "Il numero massimo di pagine da restituire.",
+ "apihelp-query+categorymembers-param-sort": "Proprietà di ordinamento.",
+ "apihelp-query+categorymembers-param-dir": "In quale direzione ordinare.",
+ "apihelp-query+categorymembers-param-start": "Il timestamp da cui iniziare l'elenco. Può essere utilizzato solo con $1sort=timestamp .",
+ "apihelp-query+categorymembers-param-end": "Il timestamp al quale interrompere l'elenco. Può essere utilizzato solo con $1sort=timestamp .",
+ "apihelp-query+categorymembers-param-startsortkey": "Usa $1starthexsortkey invece.",
+ "apihelp-query+categorymembers-param-endsortkey": "Usa $1endhexsortkey invece.",
+ "apihelp-query+categorymembers-example-simple": "Ottieni le prime 10 pagine in Category:Physics .",
+ "apihelp-query+categorymembers-example-generator": "Ottieni informazioni sulle prime 10 pagine in Category:Physics .",
+ "apihelp-query+contributors-param-limit": "Quanti contributi restituire.",
+ "apihelp-query+deletedrevisions-param-start": "Il timestamp da cui iniziare l'elenco. Ignorato quando si elabora un elenco di ID versioni.",
+ "apihelp-query+deletedrevisions-param-end": "Il timestamp al quale interrompere l'elenco. Ignorato quando si elabora un elenco di ID versioni.",
+ "apihelp-query+deletedrevisions-param-tag": "Elenca solo le versioni etichettate con questa etichetta.",
+ "apihelp-query+deletedrevisions-param-user": "Elenca solo le versioni di questo utente.",
+ "apihelp-query+deletedrevisions-param-excludeuser": "Non elencare le versioni di questo utente.",
+ "apihelp-query+deletedrevisions-example-titles": "Elenca le versioni cancellate delle pagine Main Page e Talk:Main Page , con il contenuto.",
+ "apihelp-query+deletedrevisions-example-revids": "Elenca le informazioni per la versione cancellata 123456 .",
+ "apihelp-query+deletedrevs-param-start": "Il timestamp da cui iniziare l'elenco.",
+ "apihelp-query+deletedrevs-param-end": "Il timestamp al quale interrompere l'elenco.",
+ "apihelp-query+deletedrevs-param-from": "Inizia elenco a questo titolo.",
+ "apihelp-query+deletedrevs-param-to": "Interrompi elenco a questo titolo.",
+ "apihelp-query+deletedrevs-param-prefix": "Ricerca per tutti i titoli delle pagine che iniziano con questo valore.",
+ "apihelp-query+deletedrevs-param-unique": "Elenca solo una versione per ogni pagina.",
+ "apihelp-query+deletedrevs-param-tag": "Elenca solo le versioni etichettate con questa etichetta.",
+ "apihelp-query+deletedrevs-param-user": "Elenca solo le versioni di questo utente.",
+ "apihelp-query+deletedrevs-param-excludeuser": "Non elencare le versioni di questo utente.",
+ "apihelp-query+deletedrevs-param-namespace": "Elenca solo le pagine in questo namespace.",
+ "apihelp-query+deletedrevs-param-limit": "Il numero massimo di versioni da elencare.",
+ "apihelp-query+disabled-description": "Questo modulo query è stato disabilitato.",
+ "apihelp-query+duplicatefiles-param-limit": "Quanti file duplicati restituire.",
"apihelp-query+duplicatefiles-param-dir": "La direzione in cui elencare.",
+ "apihelp-query+duplicatefiles-example-simple": "Cerca i duplicati di [[:File:Albert Einstein Head.jpg]].",
+ "apihelp-query+duplicatefiles-example-generated": "Cerca i duplicati di tutti i file.",
"apihelp-query+embeddedin-description": "Trova tutte le pagine che incorporano (transclusione) il titolo specificato.",
+ "apihelp-query+embeddedin-param-namespace": "Il namespace da elencare.",
"apihelp-query+embeddedin-param-dir": "La direzione in cui elencare.",
+ "apihelp-query+embeddedin-param-limit": "Quante pagine totali restituire.",
+ "apihelp-query+extlinks-param-limit": "Quanti collegamenti restituire.",
+ "apihelp-query+exturlusage-param-prop": "Quali pezzi di informazioni includere:",
+ "apihelp-query+exturlusage-paramvalue-prop-ids": "Aggiunge l'ID della pagina.",
"apihelp-query+exturlusage-paramvalue-prop-title": "Aggiunge il titolo e l'ID namespace della pagina.",
+ "apihelp-query+exturlusage-paramvalue-prop-url": "Aggiunge l'URL utilizzato nella pagina.",
+ "apihelp-query+exturlusage-param-namespace": "I namespace da elencare.",
+ "apihelp-query+exturlusage-param-limit": "Quante pagine restituire.",
+ "apihelp-query+filearchive-param-from": "Il titolo dell'immagine da cui iniziare l'elenco.",
+ "apihelp-query+filearchive-param-limit": "Quante immagini restituire in totale.",
"apihelp-query+filearchive-param-dir": "La direzione in cui elencare.",
+ "apihelp-query+filearchive-paramvalue-prop-mime": "Aggiunge MIME dell'immagine.",
+ "apihelp-query+filearchive-paramvalue-prop-bitdepth": "Aggiunge la profondità di bit della versione.",
"apihelp-query+filearchive-example-simple": "Mostra un elenco di tutti i file cancellati.",
"apihelp-query+fileusage-description": "Trova tutte le pagine che utilizzano il file specificato.",
"apihelp-query+fileusage-param-prop": "Quali proprietà ottenere:",
@@ -234,20 +385,35 @@
"apihelp-query+fileusage-param-namespace": "Includi solo le pagine in questi namespace.",
"apihelp-query+fileusage-param-show": "Mostra solo gli elementi che soddisfano questi criteri:\n;redirect:mostra solo i redirect.\n;!redirect:mostra solo i non redirect.",
"apihelp-query+fileusage-example-simple": "Ottieni un elenco di pagine che usano [[:File:Example.jpg]].",
+ "apihelp-query+imageinfo-paramvalue-prop-mime": "Aggiunge il tipo MIME del file.",
+ "apihelp-query+imageinfo-param-start": "Il timestamp da cui iniziare l'elenco.",
+ "apihelp-query+imageinfo-param-urlheight": "Simile a $1urlwidth.",
+ "apihelp-query+images-param-limit": "Quanti file restituire.",
"apihelp-query+images-param-dir": "La direzione in cui elencare.",
"apihelp-query+images-example-simple": "Ottieni un elenco di file usati in [[Main Page]].",
"apihelp-query+imageusage-description": "Trova tutte le pagine che utilizzano il titolo dell'immagine specificato.",
+ "apihelp-query+imageusage-param-namespace": "Il namespace da elencare.",
"apihelp-query+imageusage-param-dir": "La direzione in cui elencare.",
"apihelp-query+imageusage-param-redirect": "Se la pagina collegata è un redirect, trova tutte le pagine che puntano al redirect. Il limite massimo è dimezzato.",
"apihelp-query+info-paramvalue-prop-visitingwatchers": "Il numero di osservatori di ogni pagina che hanno visitato le ultime modifiche alla pagina, se consentito.",
+ "apihelp-query+iwbacklinks-param-prefix": "Prefisso per l'interwiki.",
+ "apihelp-query+iwbacklinks-param-limit": "Quante pagine totali restituire.",
"apihelp-query+iwbacklinks-param-prop": "Quali proprietà ottenere:",
+ "apihelp-query+iwbacklinks-paramvalue-prop-iwprefix": "Aggiunge il prefisso dell'interwiki.",
"apihelp-query+iwbacklinks-paramvalue-prop-iwtitle": "Aggiunge il titolo dell'interwiki.",
"apihelp-query+iwbacklinks-param-dir": "La direzione in cui elencare.",
+ "apihelp-query+iwlinks-description": "Restituisce tutti i collegamenti interwiki dalle pagine indicate.",
+ "apihelp-query+iwlinks-paramvalue-prop-url": "Aggiunge l'URL completo.",
+ "apihelp-query+iwlinks-param-limit": "Quanti collegamenti interwiki restituire.",
"apihelp-query+iwlinks-param-dir": "La direzione in cui elencare.",
+ "apihelp-query+langbacklinks-param-limit": "Quante pagine totali restituire.",
"apihelp-query+langbacklinks-param-prop": "Quali proprietà ottenere:",
"apihelp-query+langbacklinks-paramvalue-prop-lltitle": "Aggiunge il titolo del collegamento linguistico.",
"apihelp-query+langbacklinks-param-dir": "La direzione in cui elencare.",
+ "apihelp-query+langlinks-paramvalue-prop-url": "Aggiunge l'URL completo.",
"apihelp-query+langlinks-param-dir": "La direzione in cui elencare.",
+ "apihelp-query+links-param-namespace": "Mostra collegamenti solo in questi namespace.",
+ "apihelp-query+links-param-limit": "Quanti collegamenti restituire.",
"apihelp-query+links-param-dir": "La direzione in cui elencare.",
"apihelp-query+linkshere-description": "Trova tutte le pagine che puntano a quelle specificate.",
"apihelp-query+linkshere-param-prop": "Quali proprietà ottenere:",
@@ -259,25 +425,67 @@
"apihelp-query+linkshere-example-simple": "Ottieni un elenco di pagine che puntano a [[Main Page]].",
"apihelp-query+logevents-param-prop": "Quali proprietà ottenere:",
"apihelp-query+logevents-paramvalue-prop-title": "Aggiunge il titolo della pagine per l'evento nel registro.",
+ "apihelp-query+logevents-param-start": "Il timestamp da cui iniziare l'elenco.",
+ "apihelp-query+logevents-param-end": "Il timestamp al quale interrompere l'elenco.",
+ "apihelp-query+pageswithprop-param-prop": "Quali pezzi di informazioni includere:",
+ "apihelp-query+pageswithprop-paramvalue-prop-ids": "Aggiunge l'ID pagina.",
"apihelp-query+pageswithprop-paramvalue-prop-title": "Aggiunge il titolo e l'ID namespace della pagina.",
+ "apihelp-query+pageswithprop-paramvalue-prop-value": "Aggiunge il valore della proprietà di pagina.",
+ "apihelp-query+pageswithprop-param-limit": "Il numero massimo di pagine da restituire.",
+ "apihelp-query+pageswithprop-param-dir": "In quale direzione ordinare.",
+ "apihelp-query+prefixsearch-param-search": "Stringa di ricerca.",
+ "apihelp-query+prefixsearch-param-limit": "Numero massimo di risultati da restituire.",
+ "apihelp-query+prefixsearch-param-offset": "Numero di risultati da saltare",
+ "apihelp-query+protectedtitles-description": "Elenca tutti i titoli protetti dalla creazione.",
+ "apihelp-query+protectedtitles-param-namespace": "Elenca solo i titoli in questi namespace.",
+ "apihelp-query+protectedtitles-param-level": "Elenca solo i titoli con questi livelli di protezione.",
+ "apihelp-query+protectedtitles-param-limit": "Quante pagine totali restituire.",
"apihelp-query+protectedtitles-param-prop": "Quali proprietà ottenere:",
+ "apihelp-query+protectedtitles-paramvalue-prop-user": "Aggiunge l'utente che ha aggiunto la protezione.",
"apihelp-query+protectedtitles-paramvalue-prop-userid": "Aggiunge l'ID utente che ha aggiunto la protezione.",
+ "apihelp-query+protectedtitles-paramvalue-prop-comment": "Aggiunge il commento per la protezione.",
"apihelp-query+protectedtitles-paramvalue-prop-level": "Aggiunge il livello di protezione.",
"apihelp-query+protectedtitles-example-generator": "Trova collegamenti a titoli protetti nel namespace principale.",
+ "apihelp-query+querypage-param-limit": "Numero di risultati da restituire.",
+ "apihelp-query+querypage-example-ancientpages": "Restituisce risultati da [[Special:Ancientpages|Speciale:PagineMenoRecenti]].",
+ "apihelp-query+random-param-namespace": "Restituisci le pagine solo in questi namespace.",
+ "apihelp-query+random-param-redirect": "Usa $1filterredir=redirects invece.",
+ "apihelp-query+random-example-simple": "Restituisce due pagine casuali dal namespace principale.",
+ "apihelp-query+recentchanges-description": "Elenca le modifiche recenti.",
+ "apihelp-query+recentchanges-param-start": "Il timestamp da cui iniziare l'elenco.",
+ "apihelp-query+recentchanges-param-end": "Il timestamp al quale interrompere l'elenco.",
"apihelp-query+recentchanges-example-simple": "Elenco modifiche recenti.",
+ "apihelp-query+redirects-description": "Restituisce tutti i reindirizzamenti alla data indicata.",
"apihelp-query+redirects-param-prop": "Quali proprietà ottenere:",
"apihelp-query+redirects-paramvalue-prop-pageid": "ID pagina di ogni redirect.",
"apihelp-query+redirects-paramvalue-prop-title": "Titolo di ogni redirect.",
"apihelp-query+redirects-param-namespace": "Includi solo le pagine in questi namespace.",
+ "apihelp-query+redirects-param-limit": "Quanti reindirizzamenti restituire.",
"apihelp-query+redirects-example-simple": "Ottieni un elenco di redirect a [[Main Page]].",
+ "apihelp-query+revisions-param-startid": "L'ID versione da cui iniziare l'elenco.",
+ "apihelp-query+revisions-param-start": "Il timestamp della versione da cui iniziare l'elenco.",
+ "apihelp-query+revisions-param-tag": "Elenca solo le versioni etichettate con questa etichetta.",
"apihelp-query+revisions+base-paramvalue-prop-ids": "L'ID della versione.",
+ "apihelp-query+revisions+base-paramvalue-prop-timestamp": "Il timestamp della versione.",
"apihelp-query+revisions+base-paramvalue-prop-content": "Testo della versione.",
"apihelp-query+revisions+base-paramvalue-prop-tags": "Etichette della versione.",
+ "apihelp-query+search-param-what": "Quale tipo di ricerca effettuare.",
+ "apihelp-query+search-param-info": "Quali metadati restituire.",
+ "apihelp-query+search-param-prop": "Quali proprietà restituire.",
+ "apihelp-query+search-paramvalue-prop-size": "Aggiungi la dimensione della pagina in byte.",
+ "apihelp-query+search-paramvalue-prop-wordcount": "Aggiungi il conteggio delle parole nella pagina.",
+ "apihelp-query+search-paramvalue-prop-timestamp": "Aggiungi il timestamp di quando la pagina è stata modificata l'ultima volta.",
"apihelp-query+search-paramvalue-prop-redirecttitle": "Aggiunge il titolo del redirect corrispondente.",
"apihelp-query+search-paramvalue-prop-sectiontitle": "Aggiunge il titolo della sezione corrispondente.",
+ "apihelp-query+search-param-limit": "Quante pagine totali restituire.",
+ "apihelp-query+siteinfo-param-prop": "Quali informazioni ottenere:",
+ "apihelp-query+siteinfo-paramvalue-prop-libraries": "Restituisci librerie installate sul wiki.",
+ "apihelp-query+siteinfo-paramvalue-prop-extensions": "Restituisci estensioni installate sul wiki.",
"apihelp-query+siteinfo-paramvalue-prop-restrictions": "Restituisce informazioni sui tipi di restrizione (protezione) disponibili.",
"apihelp-query+tags-param-prop": "Quali proprietà ottenere:",
+ "apihelp-query+templates-param-limit": "Quanti template restituire.",
"apihelp-query+templates-param-dir": "La direzione in cui elencare.",
+ "apihelp-query+tokens-param-type": "Tipi di token da richiedere.",
"apihelp-query+tokens-example-simple": "Recupera un token csrf (il predefinito).",
"apihelp-query+transcludedin-description": "Trova tutte le pagine che incorporano quella specificata.",
"apihelp-query+transcludedin-param-prop": "Quali proprietà ottenere:",
@@ -287,42 +495,84 @@
"apihelp-query+transcludedin-param-namespace": "Includi solo le pagine in questi namespace.",
"apihelp-query+transcludedin-param-show": "Mostra solo gli elementi che soddisfano questi criteri:\n;redirect:mostra solo i redirect.\n;!redirect:mostra solo i non redirect.",
"apihelp-query+transcludedin-example-simple": "Ottieni un elenco di pagine che includono Main Page .",
+ "apihelp-query+usercontribs-param-namespace": "Elenca solo i contributi in questi namespace.",
"apihelp-query+usercontribs-paramvalue-prop-title": "Aggiunge il titolo e l'ID namespace della pagina.",
+ "apihelp-query+usercontribs-paramvalue-prop-patrolled": "Etichetta modifiche verificate",
"apihelp-query+userinfo-description": "Ottieni informazioni sull'utente attuale.",
"apihelp-query+userinfo-paramvalue-prop-blockinfo": "Etichetta se l'utente attuale è bloccato, da chi e per quale motivo.",
"apihelp-query+userinfo-paramvalue-prop-hasmsg": "Aggiunge un'etichetta messages se l'utente attuale ha messaggi in attesa.",
"apihelp-query+userinfo-paramvalue-prop-implicitgroups": "Elenca tutti i gruppi di cui l'utente attuale è automaticamente membro.",
"apihelp-query+userinfo-paramvalue-prop-changeablegroups": "Elenca tutti i gruppi di cui l'utente attuale può essere aggiunto o rimosso.",
+ "apihelp-query+userinfo-paramvalue-prop-realname": "Aggiungi il nome reale dell'utente.",
+ "apihelp-query+userinfo-paramvalue-prop-registrationdate": "Aggiungi la data di registrazione dell'utente.",
"apihelp-query+userinfo-example-simple": "Ottieni informazioni sull'utente attuale.",
"apihelp-query+users-description": "Ottieni informazioni su un elenco di utenti.",
+ "apihelp-query+users-param-prop": "Quali pezzi di informazioni includere:",
"apihelp-query+users-param-users": "Un elenco di utenti di cui ottenere informazioni.",
"apihelp-query+watchlist-description": "Ottieni le ultime modifiche alle pagine tra gli osservati speciali dell'utente attuale.",
+ "apihelp-query+watchlist-param-start": "Il timestamp da cui iniziare l'elenco.",
+ "apihelp-query+watchlist-param-end": "Il timestamp al quale interrompere l'elenco.",
+ "apihelp-query+watchlist-param-prop": "Quali proprietà aggiuntive ottenere:",
+ "apihelp-query+watchlist-paramvalue-prop-ids": "Aggiunge l'ID versione e l'ID pagina.",
+ "apihelp-query+watchlist-paramvalue-prop-title": "Aggiungi il titolo della pagina.",
+ "apihelp-query+watchlistraw-param-namespace": "Elenca solo le pagine nei namespace indicati.",
+ "apihelp-query+watchlistraw-param-fromtitle": "Il titolo (con prefisso namespace) da cui iniziare l'elenco.",
+ "apihelp-query+watchlistraw-param-totitle": "Il titolo (con prefisso namespace) al quale interrompere l'elenco.",
"apihelp-query+watchlistraw-example-simple": "Elenca le pagine fra gli osservati speciali dell'utente attuale.",
"apihelp-query+watchlistraw-example-generator": "Recupera le informazioni sulle pagine fra gli osservati speciali dell'utente attuale.",
+ "apihelp-stashedit-param-sectiontitle": "Il titolo per una nuova sezione.",
+ "apihelp-stashedit-param-text": "Contenuto della pagina.",
+ "apihelp-stashedit-param-contentmodel": "Modello di contenuto dei nuovi contenuti.",
"apihelp-tokens-param-type": "Tipi di token da richiedere.",
"apihelp-tokens-example-edit": "Recupera un token di modifica (il predefinito).",
"apihelp-unblock-description": "Sblocca un utente",
"apihelp-unblock-param-tags": "Modifica etichette da applicare all'elemento del registro dei blocchi.",
"apihelp-undelete-param-title": "Titolo della pagina da ripristinare.",
"apihelp-undelete-param-tags": "Modifica etichette da applicare all'elemento del registro delle cancellazioni.",
+ "apihelp-upload-param-file": "Contenuto del file.",
"apihelp-upload-example-url": "Carica da un URL.",
"apihelp-userrights-param-user": "Nome utente.",
"apihelp-userrights-param-userid": "ID utente.",
+ "apihelp-userrights-param-add": "Aggiungi l'utente a questi gruppi.",
+ "apihelp-userrights-param-remove": "Rimuovi l'utente da questi gruppi.",
+ "apihelp-userrights-param-reason": "Motivo del cambiamento.",
"apihelp-watch-description": "Aggiunge o rimuove pagine dagli osservati speciali dell'utente attuale.",
"apihelp-format-param-wrappedhtml": "Restituisce l'HTML ben formattato e i moduli ResourceLoader associati come un oggetto JSON.",
"api-pageset-param-titles": "Un elenco di titoli su cui lavorare.",
"api-pageset-param-pageids": "Un elenco di ID pagina su cui lavorare.",
"api-pageset-param-revids": "Un elenco di ID versioni su cui lavorare.",
"api-pageset-param-redirects-generator": "Risolvi automaticamente redirect in $1titles , $1pageids , e $1revids , e nelle pagine restituite da $1generator .",
+ "api-pageset-param-redirects-nogenerator": "Risolve automaticamente i reindirizzamenti in $1titles , $1pageids , e $1revids .",
"api-pageset-param-converttitles": "Converte i titoli in altre varianti, se necessario. Funziona solo se la lingua del contenuto del wiki supporta la conversione in varianti. Le lingue che supportano la conversione in varianti includono $1",
"api-help-main-header": "Modulo principale",
+ "api-help-flag-deprecated": "Questo modulo è deprecato.",
+ "api-help-flag-internal": "Questo modulo è interno o instabile. Il suo funzionamento potrebbe variare senza preavviso.",
+ "api-help-flag-readrights": "Questo modulo richiede i diritti di lettura.",
+ "api-help-flag-writerights": "Questo modulo richiede i diritti di scrittura.",
+ "api-help-flag-mustbeposted": "Questo modulo accetta solo richieste POST.",
+ "api-help-flag-generator": "Questo modulo può essere utilizzato come generatore.",
+ "api-help-source": "Fonte: $1",
+ "api-help-source-unknown": "Fonte: sconosciuta ",
"api-help-license": "Licenza: [[$1|$2]]",
+ "api-help-license-noname": "Licenza: [[$1|Vedi collegamento]]",
"api-help-license-unknown": "Licenza: sconosciuta ",
"api-help-parameters": "{{PLURAL:$1|Parametro|Parametri}}:",
"api-help-param-deprecated": "Deprecato.",
"api-help-param-required": "Questo parametro è obbligatorio.",
+ "api-help-datatypes-header": "Tipi di dato",
+ "api-help-param-type-limit": "Tipo: intero o max ",
+ "api-help-param-type-integer": "Tipo: {{PLURAL:$1|1=intero|2=elenco di interi}}",
+ "api-help-param-type-boolean": "Tipo: booleano ([[Special:ApiHelp/main#main/datatypes|dettagli]])",
+ "api-help-param-type-timestamp": "Tipo: {{PLURAL:$1|1=timestamp|2=elenco di timestamp}} ([[Special:ApiHelp/main#main/datatypes|formati consentiti]])",
"api-help-param-type-user": "Tipo: {{PLURAL:$1|1=nome utente|2=elenco di nomi utente}}",
"api-help-param-list": "{{PLURAL:$1|1=Uno dei seguenti valori|2=Valori (separati da {{!}} )}}: $2",
+ "api-help-param-list-can-be-empty": "{{PLURAL:$1|0=Deve essere vuoto|Può essere vuoto, o $2}}",
+ "api-help-param-limit": "Non più di $1 consentito.",
+ "api-help-param-limit2": "Non più di $1 ($2 per bot) consentito.",
+ "api-help-param-integer-min": "{{PLURAL:$1|1=Il valore non deve essere inferiore|2=I valori non devono essere inferiori}} a $2.",
+ "api-help-param-integer-max": "{{PLURAL:$1|1=Il valore non deve essere superiore|2=I valori non devono essere superiori}} a $3.",
+ "api-help-param-integer-minmax": "{{PLURAL:$1|1=Il valore deve essere compreso|2=I valori devono essere compresi}} tra $2 e $3.",
+ "api-help-param-multi-separate": "Separa i valori con | .",
"api-help-param-multi-max": "Il numero massimo di valori è {{PLURAL:$1|$1}} ({{PLURAL:$2|$2}} per i bot).",
"api-help-param-default": "Predefinito: $1",
"api-help-param-default-empty": "Predefinito: (vuoto) ",
diff --git a/includes/api/i18n/ja.json b/includes/api/i18n/ja.json
index 979f0239f2..d6596b1ffb 100644
--- a/includes/api/i18n/ja.json
+++ b/includes/api/i18n/ja.json
@@ -143,6 +143,7 @@
"apihelp-feedrecentchanges-example-30days": "æè¿30æ¥éã®å¤æ´ã表示ããã",
"apihelp-feedwatchlist-description": "ã¦ã©ãããªã¹ãã®ãã£ã¼ããè¿ãã¾ãã",
"apihelp-feedwatchlist-param-feedformat": "ãã£ã¼ãã®å½¢å¼ã",
+ "apihelp-feedwatchlist-param-linktosections": "å¯è½ã§ããã°ãå¤æ´ãããç¯ã«ç´æ¥ãªã³ã¯ããã",
"apihelp-feedwatchlist-example-default": "ã¦ã©ãããªã¹ãã®ãã£ã¼ãã表示ããã",
"apihelp-feedwatchlist-example-all6hrs": "ã¦ã©ããä¸ã®ãã¼ã¸ã«å¯¾ããéå»6æéã®æ´æ°ããã¹ã¦è¡¨ç¤ºããã",
"apihelp-filerevert-description": "ãã¡ã¤ã«ãå¤ãçã«å·®ãæ»ãã¾ãã",
@@ -165,7 +166,7 @@
"apihelp-imagerotate-example-simple": "File:Example.png ã 90 度å転ãããã",
"apihelp-imagerotate-example-generator": "Category:Flip å
ã®ãã¹ã¦ã®ç»åã 180 度å転ãããã",
"apihelp-import-description": "ä»ã®Wikiã¾ãã¯XMLãã¡ã¤ã«ãããã¼ã¸ãåãè¾¼ãã\n\nxml ãã©ã¡ã¼ã¿ã¼ã§ãã¡ã¤ã«ãéä¿¡ããå ´åããã¡ã¤ã«ã®ã¢ãããã¼ãã¨ãã¦HTTP POSTãããªããã°ãªããªã (ä¾ãã°ãmultipart/form-dataã使ç¨ãã) ç¹ã«æ³¨æãã¦ãã ããã",
- "apihelp-import-param-summary": "ãã¼ã¸åãè¾¼ã¿ã®è¦ç´ã",
+ "apihelp-import-param-summary": "è¨é²ããããã¼ã¸åãè¾¼ã¿ã®è¦ç´ã",
"apihelp-import-param-xml": "XMLãã¡ã¤ã«ãã¢ãããã¼ã",
"apihelp-import-param-interwikisource": "ã¦ã£ãéã®åãè¾¼ã¿ã®å ´å: åãè¾¼ã¿å
ã®ã¦ã£ãã",
"apihelp-import-param-interwikipage": "ã¦ã£ãéã®åãè¾¼ã¿ã®å ´å: åãè¾¼ããã¼ã¸ã",
@@ -174,6 +175,7 @@
"apihelp-import-param-namespace": "ãã®åå空éã«åãè¾¼ãã$1rootpage ãã©ã¡ã¼ã¿ã¨ã¯åæã«ä½¿ç¨ã§ãã¾ããã",
"apihelp-import-param-rootpage": "ãã®ãã¼ã¸ã®ä¸ä½ãã¼ã¸ã¨ãã¦åãè¾¼ãã$1namespace ãã©ã¡ã¼ã¿ã¨ã¯åæã«ä½¿ç¨ã§ãã¾ããã",
"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": "ãã¡ã¤ã³ (çç¥å¯è½)",
@@ -191,6 +193,10 @@
"apihelp-managetags-example-activate": "spam ã¨ããååã®ã¿ã°ã For use in edit patrolling ã¨ããçç±ã§æå¹åãã",
"apihelp-managetags-example-deactivate": "No longer required ã¨ããçç±ã§ã¿ã° spam ãç¡å¹åãã",
"apihelp-mergehistory-description": "ãã¼ã¸ã®å±¥æ´ãçµ±åããã",
+ "apihelp-mergehistory-param-from": "å±¥æ´çµ±åå
ã®ãã¼ã¸åã$1fromid ã¨ã¯åæã«ä½¿ç¨ã§ãã¾ããã",
+ "apihelp-mergehistory-param-fromid": "å±¥æ´çµ±åå
ã®ãã¼ã¸ã$1from ã¨ã¯åæã«ä½¿ç¨ã§ãã¾ããã",
+ "apihelp-mergehistory-param-to": "å±¥æ´çµ±åå
ã®ãã¼ã¸åã$1toid ã¨ã¯åæã«ä½¿ç¨ã§ãã¾ããã",
+ "apihelp-mergehistory-param-toid": "å±¥æ´çµ±åå
ã®ãã¼ã¸IDã$1to ã¨ã¯åæã«ä½¿ç¨ã§ãã¾ããã",
"apihelp-mergehistory-param-reason": "å±¥æ´ã®çµ±åã®çç±ã",
"apihelp-mergehistory-example-merge": "Oldpage ã®ãã¹ã¦ã®å±¥æ´ã Newpage ã«çµ±åããã",
"apihelp-move-description": "ãã¼ã¸ã移åãã¾ãã",
@@ -214,6 +220,8 @@
"apihelp-opensearch-param-format": "åºåããå½¢å¼ã",
"apihelp-opensearch-example-te": "Te ããå§ã¾ããã¼ã¸ãæ¤ç´¢ããã",
"apihelp-options-param-reset": "å人è¨å®ããµã¤ãã®æ¢å®å¤ã«ãªã»ããããã",
+ "apihelp-options-param-resetkinds": "$1reset ããè¨å®ããã¦ããå ´åããªã»ããããè¨å®é
ç®ã®ç¨®é¡ã®ãªã¹ãã",
+ "apihelp-options-param-change": "åå=å¤ ã®å½¢å¼ (ä¾ãã° skin=vector) ã§æ´å½¢ãããå¤æ´ã®ãªã¹ããå¤ã¯ãã¤ãæåãå«ããã¨ãã§ãã¾ãããoptionname|otheroption|... ã®ããã«å¤ãä¸ããããªã (ã¤ã³ã¼ã«è¨å·ããç¡ã) å ´åãè¨å®ã¯æ¢å®å¤ã«ãªã»ããããã¾ãã",
"apihelp-options-example-reset": "ãã¹ã¦åæè¨å®ã«æ»ãã",
"apihelp-options-example-change": "skin ããã³ hideminor ã®å人è¨å®ãå¤æ´ããã",
"apihelp-options-example-complex": "ãã¹ã¦ã®å人è¨å®ãåæåããskin ããã³ nickname ãè¨å®ããã",
@@ -222,9 +230,13 @@
"apihelp-paraminfo-param-helpformat": "ãã«ãæååã®å½¢å¼ã",
"apihelp-paraminfo-param-querymodules": "ã¯ã¨ãªã¢ã¸ã¥ã¼ã«åã®ãªã¹ã (prop , meta or list ãã©ã¡ã¼ã¿ã®å¤)ã$1querymodules=foo ã®ä»£ããã« $1modules=query+foo ã使ç¨ãã¦ãã ããã",
"apihelp-paraminfo-example-1": "[[Special:ApiHelp/parse|action=parse]] , [[Special:ApiHelp/jsonfm|format=jsonfm]] , [[Special:ApiHelp/query+allpages|action=query&list=allpages]] , and [[Special:ApiHelp/query+siteinfo|action=query&meta=siteinfo]] ã«é¢ããæ
å ±ã表示ããã",
+ "apihelp-parse-param-title": "æååãå±ãããã¼ã¸ã®ãã¼ã¸åããããçç¥ããå ´åãå¿
ã $1contentmodel ãæå®ããªããã°ãªãã¾ãããã¾ãããã®å ´å [[API]] ããã¼ã¸åã¨ãã¦ä½¿ç¨ããã¾ãã",
+ "apihelp-parse-param-text": "æ§æ解æããæååãã³ã³ãã³ãã»ã¢ãã«ãå¶å¾¡ããããã«ã¯$1title ã¾ã㯠$1contentmodel ã使ç¨ãã¦ãã ããã",
"apihelp-parse-param-summary": "æ§æ解æã®ããã®è¦ç´",
"apihelp-parse-param-page": "ãã®ãã¼ã¸ã®å
容ãæ§æ解æãã¾ãã$1text ããã³ $1title ã¨ã¯åæã«ä½¿ç¨ã§ãã¾ããã",
+ "apihelp-parse-param-pageid": "ãã®ãã¼ã¸ã®å
容ãæ§æ解æããã$1page ããªã¼ãã¼ã©ã¤ããã¾ãã",
"apihelp-parse-param-redirects": "ãã $1page ã $1pageid ã«è»¢éãã¼ã¸ãæå®ãããå ´åãããã解決ããã",
+ "apihelp-parse-param-oldid": "ãã®çã®å
容ãæ§æ解æããã$1page ããã³ $1pageid ããªã¼ãã¼ã©ã¤ããã¾ãã",
"apihelp-parse-param-prop": "ã©ã®æ
å ±ãåå¾ããã:",
"apihelp-parse-paramvalue-prop-text": "ã¦ã£ãããã¹ãã®è§£æãããããã¹ããæä¾ãã¾ãã",
"apihelp-parse-paramvalue-prop-langlinks": "解æãããã¦ã£ãããã¹ãã«ãããè¨èªãªã³ã¯ãæä¾ãã¾ãã",
@@ -309,6 +321,7 @@
"apihelp-query+alldeletedrevisions-param-user": "ãã®å©ç¨è
ã«ããçã®ã¿ãä¸è¦§è¡¨ç¤ºããã",
"apihelp-query+alldeletedrevisions-param-excludeuser": "ãã®å©ç¨è
ã«ããçãä¸è¦§è¡¨ç¤ºããªãã",
"apihelp-query+alldeletedrevisions-param-namespace": "ãã®åå空éã«å«ã¾ãããã¼ã¸ã®ã¿ãä¸è¦§è¡¨ç¤ºãã¾ãã",
+ "apihelp-query+alldeletedrevisions-param-miser-user-namespace": "注æ: [[mw:Manual:$wgMiserMode|miser mode]] ã«ããã$1user 㨠$1namespace ãåæã«ä½¿ç¨ããã¨ç¶ç¶ããåã« $1limit ããè¿ãããçµæãå°ãªããªããã¨ãããã¾ã; 極端ãªå ´åã§ã¯ãã¼ã件ã®çµæãè¿ããã¨ãããã¾ãã",
"apihelp-query+alldeletedrevisions-param-generatetitles": "ã¸ã§ãã¬ã¼ã¿ã¼ã¨ãã¦ä½¿ç¨ããå ´åãçIDã§ã¯ãªããã¼ã¸åãçæãã¾ãã",
"apihelp-query+alldeletedrevisions-example-user": "å©ç¨è
Example ã«ããåé¤ãããç´è¿ã®50çãä¸è¦§è¡¨ç¤ºããã",
"apihelp-query+alldeletedrevisions-example-ns-main": "æ¨æºåå空éã«ããåé¤ãããæåã®50çãä¸è¦§è¡¨ç¤ºããã",
@@ -322,6 +335,7 @@
"apihelp-query+allfileusages-param-limit": "è¿ãé
ç®ã®ç·æ°ã",
"apihelp-query+allfileusages-param-dir": "ä¸è¦§è¡¨ç¤ºããæ¹åã",
"apihelp-query+allfileusages-example-unique": "ã¦ãã¼ã¯ãªãã¡ã¤ã«ãä¸è¦§è¡¨ç¤ºããã",
+ "apihelp-query+allfileusages-example-unique-generator": "ãã¡ã¤ã«åããåå¨ããªããã®ã«å°ãã¤ãã¦ããã¹ã¦åå¾ããã",
"apihelp-query+allfileusages-example-generator": "ãã¡ã¤ã«ãå«ããã¼ã¸ãåå¾ãã¾ãã",
"apihelp-query+allimages-description": "é 次ãã¹ã¦ã®ç»åãåæãã¾ãã",
"apihelp-query+allimages-param-sort": "並ã¹æ¿ãã«ä½¿ç¨ããããããã£ã",
@@ -335,6 +349,7 @@
"apihelp-query+allimages-param-maxsize": "ç»åã®æ大ãã¤ãæ°ãå¶éããã",
"apihelp-query+allimages-param-sha1": "ç»åã® SHA1 ããã·ã¥å¤ã$1sha1base36 ããªã¼ãã¼ã©ã¤ããã¾ãã",
"apihelp-query+allimages-param-user": "ãã®å©ç¨è
ã«ããã¢ãããã¼ãããããã¡ã¤ã«ã®ã¿ãè¿ãã$1sort=timestamp ãæå®ããå ´åã®ã¿ä½¿ç¨ã§ãã¾ãã $1filterbots ã¨ã¯åæã«ä½¿ç¨ã§ãã¾ããã",
+ "apihelp-query+allimages-param-filterbots": "ãããã«ããã¢ãããã¼ãããããã¡ã¤ã«ãçµãè¾¼ãæ¹æ³ã$1sort=timestamp ãæå®ããå ´åã®ã¿ä½¿ç¨ã§ãã¾ãã$1user ã¨ã¯åæã«ä½¿ç¨ã§ãã¾ããã",
"apihelp-query+allimages-param-mime": "æ¤ç´¢å¯¾è±¡ã®MIMEã¿ã¤ãããã¨ãã° image/jpeg ã",
"apihelp-query+allimages-param-limit": "è¿ãç»åã®ç·æ°ã",
"apihelp-query+allimages-example-B": "B ã§å§ã¾ããã¡ã¤ã«ã®ä¸è¦§ã表示ããã",
@@ -354,6 +369,7 @@
"apihelp-query+alllinks-param-dir": "ä¸è¦§è¡¨ç¤ºããæ¹åã",
"apihelp-query+alllinks-example-B": "B ã§å§ã¾ããªã³ã¯ããããã¼ã¸ (åå¨ããªããã¼ã¸ãå«ã)ãããªã³ã¯å
ã®ãã¼ã¸IDã¨ã¨ãã«è¡¨ç¤ºããã",
"apihelp-query+alllinks-example-unique": "ã¦ãã¼ã¯ãªãªã³ã¯ã®ã¿ã¤ãã«ãä¸è¦§ã",
+ "apihelp-query+alllinks-example-unique-generator": "ãªã³ã¯ããã¦ãããã¼ã¸ããåå¨ããªããã®ã«å°ãã¤ãã¦ããã¹ã¦åå¾ããã",
"apihelp-query+alllinks-example-generator": "ãªã³ã¯ãå«ããã¼ã¸ãåå¾ãã¾ãã",
"apihelp-query+allmessages-param-messages": "åºåã®ããã®ã¡ãã»ã¼ã¸ã * ï¼ããã©ã«ãï¼ã¯ããã¹ã¦ã®ã¡ãã»ã¼ã¸ãæå³ãã¾ãã",
"apihelp-query+allmessages-param-prop": "åå¾ããããããã£:",
@@ -402,12 +418,18 @@
"apihelp-query+mystashedfiles-paramvalue-prop-size": "ãã¡ã¤ã«ãµã¤ãºã¨ç»åã®å¤§ãããåå¾ãã¾ãã",
"apihelp-query+mystashedfiles-paramvalue-prop-type": "ãã¡ã¤ã«ã® MIME ã¿ã¤ãã¨ã¡ãã£ã¢ã¿ã¤ããåå¾ãã¾ãã",
"apihelp-query+mystashedfiles-param-limit": "åå¾ãããã¡ã¤ã«ã®æ°ã",
- "apihelp-query+alltransclusions-param-prefix": "ãã®å¤ã§å§ã¾ããã¹ã¦ã®ãã©ã³ã¹ã¯ã«ã¼ãããã¦ãããã¼ã¸ãæ¤ç´¢ããã",
+ "apihelp-query+alltransclusions-description": "åå¨ããªããã®ãå«ãã¦ããã¹ã¦ã®åç
§èªã¿è¾¼ã¿ ({{x}} ã§åãè¾¼ã¾ãããã¼ã¸) ãä¸è¦§è¡¨ç¤ºãã¾ãã",
+ "apihelp-query+alltransclusions-param-from": "åæãéå§ããåç
§èªã¿è¾¼ã¿ã®ãã¼ã¸åã",
+ "apihelp-query+alltransclusions-param-to": "åæãçµäºããåç
§èªã¿è¾¼ã¿ã®ãã¼ã¸åã",
+ "apihelp-query+alltransclusions-param-prefix": "ãã®å¤ã§å§ã¾ããã¹ã¦ã®åç
§èªã¿è¾¼ã¿ããã¦ãããã¼ã¸ãæ¤ç´¢ããã",
"apihelp-query+alltransclusions-param-prop": "ã©ã®æ
å ±ãçµæã«å«ããã:",
- "apihelp-query+alltransclusions-param-namespace": "åæããå空éã",
+ "apihelp-query+alltransclusions-paramvalue-prop-ids": "åç
§å
ã®ãã¼ã¸IDã追å ãã¾ã ($1unique ã¨ã¯åæã«ä½¿ç¨ã§ãã¾ãã)ã",
+ "apihelp-query+alltransclusions-paramvalue-prop-title": "åç
§èªã¿è¾¼ã¿ã®ãã¼ã¸åã追å ãã¾ãã",
+ "apihelp-query+alltransclusions-param-namespace": "åæããåå空éã",
"apihelp-query+alltransclusions-param-limit": "è¿ãé
ç®ã®ç·æ°ã",
"apihelp-query+alltransclusions-param-dir": "ä¸è¦§è¡¨ç¤ºããæ¹åã",
- "apihelp-query+alltransclusions-example-B": "B ã§å§ã¾ãåç
§èªã¿è¾¼ã¿ããã¦ãããã¼ã¸ (åå¨ããªããã¼ã¸ãå«ã)ããåç
§å
ã®ãã¼ã¸IDã¨ã¨ãã«è¡¨ç¤ºããã",
+ "apihelp-query+alltransclusions-example-B": "åç
§èªã¿è¾¼ã¿ããã¦ãããã¼ã¸ (åå¨ããªããã¼ã¸ãå«ã) ããåç
§å
ã®ãã¼ã¸IDã¨ã¨ãã«ãB ã§å§ã¾ããã®ããä¸è¦§è¡¨ç¤ºããã",
+ "apihelp-query+alltransclusions-example-unique-generator": "åç
§èªã¿è¾¼ã¿ããããã¼ã¸ããåå¨ããªããã®ã«å°ãã¤ãã¦ããã¹ã¦åå¾ããã",
"apihelp-query+alltransclusions-example-generator": "åç
§èªã¿è¾¼ã¿ãå«ãã§ãããã¼ã¸ãåå¾ããã",
"apihelp-query+allusers-description": "ãã¹ã¦ã®ç»é²å©ç¨è
ãä¸è¦§è¡¨ç¤ºãã¾ãã",
"apihelp-query+allusers-param-from": "åæãéå§ããå©ç¨è
åã",
@@ -520,6 +542,7 @@
"apihelp-query+exturlusage-paramvalue-prop-title": "ãã¼ã¸åã¨åå空éIDã追å ãã¾ãã",
"apihelp-query+exturlusage-paramvalue-prop-url": "ãã¼ã¸å
ã§ä½¿ç¨ããã¦ããURLã追å ãã¾ãã",
"apihelp-query+exturlusage-param-protocol": "URLã®ãããã³ã«ããã®ãã©ã¡ã¼ã¿ã空ã§ããããã¤$1query ãè¨å®ããã¦ããå ´å, protocol 㯠http ã¨ãªãã¾ãããã¹ã¦ã®å¤é¨ãªã³ã¯ãä¸è¦§è¡¨ç¤ºããããã«ã¯ãã®ãã©ã¡ã¼ã¿ã¨ $1query ã®ä¸¡æ¹ã空ã«ãã¦ãã ããã",
+ "apihelp-query+exturlusage-param-query": "ãããã³ã«ãé¤ããæ¤ç´¢æååã[[Special:LinkSearch]] ãåç
§ãã¦ãã ããããã¹ã¦ã®å¤é¨ãªã³ã¯ãä¸è¦§è¡¨ç¤ºããã«ã¯ç©ºæ¬ã«ãã¦ãã ããã",
"apihelp-query+exturlusage-param-namespace": "åæãããã¼ã¸åå空éã",
"apihelp-query+exturlusage-example-simple": "http://www.mediawiki.org ã«ãªã³ã¯ãã¦ãããã¼ã¸ãä¸è¦§è¡¨ç¤ºããã",
"apihelp-query+filearchive-description": "åé¤ããããã¡ã¤ã«ããã¹ã¦é ã«åæãã¾ãã",
@@ -640,6 +663,7 @@
"apihelp-query+pageprops-description": "ãã¼ã¸ã³ã³ãã³ãã§å®ç¾©ããã¦ããæ§ã
ãªãã¼ã¸ã®ããããã£ãåå¾ã",
"apihelp-query+pageprops-example-simple": "ãã¼ã¸ Main Page ããã³ MeiaWiki ã®ããããã£ãåå¾ããã",
"apihelp-query+pageswithprop-description": "ä¸ãããããã¼ã¸ããããã£ã使ç¨ããã¦ãããã¹ã¦ã®ãã¼ã¸ãä¸è¦§è¡¨ç¤ºãã¾ãã",
+ "apihelp-query+pageswithprop-param-prop": "ã©ã®æ
å ±ãçµæã«å«ããã:",
"apihelp-query+pageswithprop-paramvalue-prop-ids": "ãã¼ã¸IDã追å ãã¾ãã",
"apihelp-query+pageswithprop-paramvalue-prop-title": "ãã¼ã¸åã¨åå空éIDã追å ãã¾ãã",
"apihelp-query+pageswithprop-paramvalue-prop-value": "ãã¼ã¸ããããã£ã®å¤ã追å ã",
@@ -773,6 +797,7 @@
"apihelp-query+usercontribs-param-tag": "ãã®ã¿ã°ãä»ä¸ãããçã®ã¿ãä¸è¦§è¡¨ç¤ºããã",
"apihelp-query+usercontribs-param-toponly": "ææ°ã®çã§ããå¤æ´ã®ã¿ãä¸è¦§è¡¨ç¤ºããã",
"apihelp-query+usercontribs-example-user": "å©ç¨è
Example ã®æ稿è¨é²ã表示ããã",
+ "apihelp-query+userinfo-param-prop": "ã©ã®æ
å ±ãçµæã«å«ããã:",
"apihelp-query+userinfo-paramvalue-prop-realname": "å©ç¨è
ã®æ¬åã追å ãã¾ãã",
"apihelp-query+userinfo-example-simple": "ç¾å¨ã®å©ç¨è
ã«é¢ããæ
å ±ãåå¾ãã¾ãã",
"apihelp-query+userinfo-example-data": "ç¾å¨ã®å©ç¨è
ã«é¢ãã追å æ
å ±ãåå¾ãã¾ãã",
@@ -804,12 +829,18 @@
"apihelp-revisiondelete-example-revision": "Main Page ã®ç 12345 ã®æ¬æãé ãã",
"apihelp-rollback-param-title": "å·»ãæ»ããã¼ã¸åã§ãã$1pageid ã¨ã¯åæã«ä½¿ç¨ã§ãã¾ããã",
"apihelp-rollback-param-pageid": "å·»ãæ»ããã¼ã¸ã®ãã¼ã¸IDã§ãã$1title ã¨ã¯åæã«ä½¿ç¨ã§ãã¾ããã",
+ "apihelp-rollback-param-tags": "å·»ãæ»ãã«é©ç¨ããã¿ã°ã",
"apihelp-rollback-param-user": "å·»ãæ»ã対象ã®ç·¨éãè¡ã£ãå©ç¨è
åã",
"apihelp-rollback-param-markbot": "å·»ãæ»ãããç·¨éã¨å·»ãæ»ãããããã®ç·¨éã¨ãã¦ãã¼ã¯ããã",
"apihelp-rollback-example-simple": "å©ç¨è
Example ã«ãã Main Page ã¸ã®æå¾ã®ä¸é£ã®ç·¨éãå·»ãæ»ãã",
"apihelp-rollback-example-summary": "IPå©ç¨è
192.0.2.5 ã«ãã Main Page ã¸ã®æå¾ã®ä¸é£ã®ç·¨éã Reverting vandalism ã¨ããçç±ã§ããããã®ç·¨éã¨ãã®å·®ãæ»ãããããã®ç·¨éã¨ãã¦ãã¼ã¯ãã¦å·®ãæ»ãã",
"apihelp-stashedit-param-title": "ç·¨éããã¦ãããã¼ã¸ã®ãã¼ã¸åã",
+ "apihelp-stashedit-param-text": "ãã¼ã¸ã®æ¬æã",
+ "apihelp-stashedit-param-contentmodel": "æ°ããã³ã³ãã³ãã®ã³ã³ãã³ãã»ã¢ãã«ã",
+ "apihelp-tag-description": "åã
ã®çã¾ãã¯è¨é²é
ç®ã«å¯¾ãã¿ã°ã®è¿½å ã¾ãã¯åé¤ãè¡ãã¾ãã",
+ "apihelp-tag-param-add": "追å ããã¿ã°ãæåã§å®ç¾©ãããã¿ã°ã®ã¿è¿½å å¯è½ã§ãã",
"apihelp-tag-param-reason": "å¤æ´ã®çç±ã",
+ "apihelp-tag-example-rev": "çID 123ã« vandalism ã¿ã°ãçç±ãæå®ããã«è¿½å ãã",
"apihelp-tag-example-log": "Wrongly applied ã¨ããçç±ã§ spam ã¿ã°ã è¨é²é
ç®ID 123 ããåãé¤ã",
"apihelp-tokens-param-type": "ãªã¯ã¨ã¹ããããã¼ã¯ã³ã®ç¨®é¡ã",
"apihelp-tokens-example-edit": "ç·¨éãã¼ã¯ã³ãåå¾ãã (æ¢å®)ã",
@@ -830,6 +861,7 @@
"apihelp-upload-param-watch": "ãã®ãã¼ã¸ãã¦ã©ããããã",
"apihelp-upload-param-ignorewarnings": "ããããè¦åãç¡è¦ããã",
"apihelp-upload-param-url": "ãã¡ã¤ã«åå¾å
ã®URL.",
+ "apihelp-userrights-description": "å©ç¨è
ã®æå±ã°ã«ã¼ããå¤æ´ãã¾ãã",
"apihelp-userrights-param-user": "å©ç¨è
åã",
"apihelp-userrights-param-userid": "å©ç¨è
IDã",
"apihelp-userrights-param-add": "å©ç¨è
ããã®ã°ã«ã¼ãã«è¿½å ãã¾ãã",
@@ -882,6 +914,8 @@
"api-help-param-default": "æ¢å®å¤: $1",
"api-help-param-default-empty": "æ¢å®å¤: (空) ",
"api-help-param-token": "[[Special:ApiHelp/query+tokens|action=query&meta=tokens]] ããåå¾ããã$1ããã¼ã¯ã³",
+ "api-help-param-token-webui": "äºææ§ã®ããã«ãã¦ã§ãUIã§ä½¿ç¨ããããã¼ã¯ã³ãåçããã¾ãã",
+ "api-help-param-limited-in-miser-mode": "注æ: [[mw:Manual:$wgMiserMode|miser mode]] ã«ãããããã使ç¨ããã¨ç¶ç¶ããåã« $1limit ããè¿ãããçµæãå°ãªããªããã¨ãããã¾ã; 極端ãªå ´åã§ã¯ãã¼ã件ã®çµæãè¿ããã¨ãããã¾ãã",
"api-help-param-direction": "åæã®æ¹å:\n;newer:å¤ããã®ãå
ã«è¡¨ç¤ºãã¾ãã注æ: $1start 㯠$1end 以åã§ãªããã°ãªãã¾ããã\n;older:æ°ãããã®ãå
ã«è¡¨ç¤ºãã¾ã (æ¢å®)ã注æ: $1start 㯠$1end 以éã§ãªããã°ãªãã¾ããã",
"api-help-param-no-description": "(説æãªã) ",
"api-help-examples": "{{PLURAL:$1|ä¾}}:",
diff --git a/includes/api/i18n/lb.json b/includes/api/i18n/lb.json
index 8ac4d51f0b..76fd47daf4 100644
--- a/includes/api/i18n/lb.json
+++ b/includes/api/i18n/lb.json
@@ -56,7 +56,7 @@
"apihelp-help-example-recursive": "All Hëllef op enger Säit",
"apihelp-imagerotate-description": "Eent oder méi Biller dréinen.",
"apihelp-imagerotate-example-generator": "All Biller an der Category:Flip]] ëm 180 Grad dréinen.",
- "apihelp-import-param-summary": "Resumé importéieren.",
+ "apihelp-import-param-summary": "Resumé vum importéiere vum Logbuch.",
"apihelp-import-param-xml": "Eropgeluedenen XML-Fichier.",
"apihelp-import-param-rootpage": "Als Ãnnersäit vun dëser Säit importéieren. Kann net zesumme mam $1namespace benotzt ginn.",
"apihelp-login-param-name": "Benotzernumm.",
diff --git a/includes/api/i18n/mg.json b/includes/api/i18n/mg.json
index 8e2a8b5660..156cf25b3b 100644
--- a/includes/api/i18n/mg.json
+++ b/includes/api/i18n/mg.json
@@ -7,5 +7,30 @@
"apihelp-main-description": "\n* [https://www.mediawiki.org/wiki/API:Main_page Torohevitra be kokoa]\n* [https://www.mediawiki.org/wiki/API:FAQ Fanontaniana miverina matetika]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api Lisitry ny mailaka manaraka]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announce Filazana API]\n* [https://phabricator.wikimedia.org/maniphest/query/GebfyV4uCaLd/#R Baogy & hataka]\n
\nStatus: \nTokony mandeha avokoa ny fitaovana aseho eto amin'ity pehy ity, na dia izany aza mbola am-panamboarana ny API ary mety hiova na oviana na oviana. Araho amin'ny alalan'ny fisoratana ny mailakao ao amin'ny [https://lists.wikimedia.org/pipermail/mediawiki-api-announce/ the mediawiki-api-announce lisitra fampielezana] ny fiovana.\n\nHataka diso: \nRehefa alefa ao amin'i API ny hata, ho alefa miaraka amin'ny lakile \"MediaWiki-API-Error\" ny header HTTP ary samy homen-tsanda mitovy ny header ary ny kaodin-kadisoana. Ho an'ny torohay fanampiny dia jereo https://www.mediawiki.org/wiki/API:Errors_and_warnings.",
"apihelp-main-param-action": "Inona ny zavatra ho atao.",
"apihelp-main-param-format": "Format mivoaka",
- "apihelp-createaccount-param-name": "Anaram-pikambana."
+ "apihelp-block-param-user": "Anaram-pikambana, adiresy IP na valan' IP hosakanana.",
+ "apihelp-block-param-expiry": "Fitaom-pisasarana. Mety miovaova(e.g. 5 volana na herinandro 2 ) na voafaritra (e.g. 2014-09-18T12:34:56Z ). Raha atao tsiefa , tsy fantatra , na mandrakizay , dia tsy hitsahatra mihitsy ilay sakana.",
+ "apihelp-block-param-reason": "Antom-panakanana",
+ "apihelp-block-param-anononly": "Mpikambana tsy nisoratra anarana ihany no sakanana (izany hoe aza mamela fiovan'olona tsy nisoratra anarana avy amin'ity adiresy IP ity).",
+ "apihelp-block-param-nocreate": "Hanakana famoronan-kaonty.",
+ "apihelp-block-param-autoblock": "Manakana ny adiresy IP farany nampiasaina, ary izay adiresy IP mety hidirany.",
+ "apihelp-block-param-noemail": "Hanakana ny mpikambana tsy handefa mailaka amin'ny alalan'ny wiki (Mila ny zo blockemail
).",
+ "apihelp-block-param-hidename": "Hanafina ny anaram-pikambana amin'ny laogim-panakanana (mila ny zo hideuser
).",
+ "apihelp-block-param-allowusertalk": "Hamela ny mpikambana hanova ny pejin-dresany (miankina amin'ny [[mw:Manual:$wgBlockAllowsUTEdit|$wgBlockAllowsUTEdit]] )",
+ "apihelp-block-param-reblock": "Raha efa nosakanana ilay mpikambana, itsahina ilay sakana efa misy.",
+ "apihelp-block-param-watchuser": "Hijery ny adiresy IP ary ny pejin-dresak'ilay mpikambana.",
+ "apihelp-block-example-ip-simple": "Hanakana ny adiresy IP 192.0.2.5 mandritry ny telo andro miaraka amin'ny antony Filazana voalohany .",
+ "apihelp-compare-param-fromtitle": "Lohateny voalohany ampitahaina.",
+ "apihelp-compare-param-fromid": "ID pejy voalohany ampitahaina.",
+ "apihelp-compare-param-fromrev": "Versions voalohany ampitahaina.",
+ "apihelp-compare-param-totitle": "Lohateny faharoa ampitahaina.",
+ "apihelp-compare-param-toid": "ID pejy faharoa ampitahaina.",
+ "apihelp-compare-param-torev": "Versiona faharoa ampitahaina.",
+ "apihelp-compare-example-1": "Hamorona raki-pahasamihafan'ny versiona 1 sy 2.",
+ "apihelp-createaccount-description": "Hamorona kaontim-pikambana vaovao.",
+ "apihelp-createaccount-param-name": "Anaram-pikambana.",
+ "apihelp-createaccount-param-password": "Tenimiafina (tsy raharahiana raha voafaritra i $1mailpassword ).",
+ "apihelp-createaccount-param-domain": "Vala ho an'ilay famantarana avy any ivelany (azo tsy fenoina).",
+ "apihelp-createaccount-param-token": "Famantarana famoronan-kaonty azo tamin'ny hataka voalohany.",
+ "apihelp-createaccount-param-email": "Adiresy imailaky ny mpikambana (azo tsy fenoina).",
+ "apihelp-createaccount-param-realname": "Tena anaran'ilay mpikambana (azo tsy fenoina)."
}
diff --git a/includes/api/i18n/nl.json b/includes/api/i18n/nl.json
index 71e08cf89e..865ebd98ec 100644
--- a/includes/api/i18n/nl.json
+++ b/includes/api/i18n/nl.json
@@ -12,7 +12,8 @@
"HanV",
"Rangekill",
"Robin van der Vliet",
- "Edoderoo"
+ "Edoderoo",
+ "Lemondoge"
]
},
"apihelp-main-description": "\n* [[mw:API:Main_page|Documentatie]]\n* [[mw:API:FAQ|FAQ]]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api E-maillijst]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announce API-aankondigingen]\n* [https://phabricator.wikimedia.org/maniphest/query/GebfyV4uCaLd/#R Bugs & verzoeken]\n
\nStatus: Alle functies die op deze pagina worden weergegeven horen te werken. Aan de API wordt actief gewerkt, en deze kan gewijzigd worden. Abonneer u op de [https://lists.wikimedia.org/pipermail/mediawiki-api-announce/ e-maillijst mediawiki-api-announce] voor meldingen over aanpassingen.\n\nFoutieve verzoeken: als de API foutieve verzoeken ontvangt, wordt er geantwoord met een HTTP-header met de sleutel \"MediaWiki-API-Error\" en daarna worden de waarde van de header en de foutcode op dezelfde waarde ingesteld. Zie [[mw:API:Errors_and_warnings|API: Errors and warnings]] voor meer informatie.\n\nTesten: u kunt [[Special:ApiSandbox|eenvoudig API-verzoeken testen]].",
@@ -33,6 +34,7 @@
"apihelp-block-param-reblock": "De huidige blokkade aanpassen als de gebruiker al geblokkeerd is.",
"apihelp-block-param-watchuser": "De gebruikerspagina en overlegpagina van de gebruiker of het IP-adres volgen.",
"apihelp-block-example-ip-simple": "Het IP-adres 192.0.2.5 voor drie dagen blokkeren met First strike als opgegeven reden.",
+ "apihelp-checktoken-param-type": "Tokentype wordt getest.",
"apihelp-compare-param-fromtitle": "Eerste paginanaam om te vergelijken.",
"apihelp-compare-param-fromid": "Eerste pagina-ID om te vergelijken.",
"apihelp-compare-param-fromrev": "Eerste versie om te vergelijken.",
@@ -138,6 +140,7 @@
"apihelp-protect-example-protect": "Een pagina beveiligen",
"apihelp-query+alldeletedrevisions-param-tag": "Alleen versies weergeven met dit label.",
"apihelp-query+allmessages-param-enableparser": "Stel in om de parser in te schakelen, zorgt voor het voorverwerken van de wikitekst van een bericht (vervangen van magische woorden, de afhandeling van sjablonen, enzovoort).",
+ "apihelp-query+mystashedfiles-paramvalue-prop-type": "Vraag het MIME- en mediatype van het bestand op.",
"apihelp-query+blocks-paramvalue-prop-flags": "Labelt de blokkade met (automatische blokkade, alleen anoniem, enzovoort).",
"apihelp-query+deletedrevisions-param-tag": "Alleen versies weergeven met dit label.",
"apihelp-query+deletedrevs-param-tag": "Alleen versies weergeven met dit label.",
diff --git a/includes/api/i18n/pl.json b/includes/api/i18n/pl.json
index fcdbb25d28..0c9f12f506 100644
--- a/includes/api/i18n/pl.json
+++ b/includes/api/i18n/pl.json
@@ -11,7 +11,8 @@
"Peter Bowman",
"Darellur",
"The Polish",
- "Matma Rex"
+ "Matma Rex",
+ "Sethakill"
]
},
"apihelp-main-param-action": "Wybierz akcjÄ do wykonania.",
@@ -25,6 +26,7 @@
"apihelp-block-param-anononly": "Blokuj tylko anonimowych użytkowników (blokuje anonimowe edycje z tego adresu IP).",
"apihelp-block-param-nocreate": "Zapobiegnij utworzeniu konta.",
"apihelp-block-param-autoblock": "Zablokuj ostatni adres IP tego użytkownika i automatycznie wszystkie kolejne, z których bÄdzie siÄ logowaÅ.",
+ "apihelp-block-param-hidename": "Ukryj nazwÄ użytkownika z rejestru blokad. (Wymagane uprawnienia hideuser
)",
"apihelp-block-param-reblock": "Jeżeli ten użytkownik jest już zablokowany, nadpisz blokadÄ.",
"apihelp-block-param-watchuser": "Obserwuj stronÄ użytkownika i jego IP oraz ich strony dyskusji.",
"apihelp-block-example-ip-simple": "Zablokuj IP 192.0.2.5 na 3 dni za Pierwszy atak .",
@@ -119,7 +121,7 @@
"apihelp-imagerotate-param-rotation": "Stopni w prawo, aby obróciÄ zdjÄcie.",
"apihelp-imagerotate-example-simple": "ObrÃ³Ä Plik:PrzykÅad.png o 90 stopni.",
"apihelp-imagerotate-example-generator": "ObrÃ³Ä wszystkie obrazki w Kategorii:Flip o 180 stopni.",
- "apihelp-import-param-summary": "Podsumowanie importu.",
+ "apihelp-import-param-summary": "Podsumowanie importu rekordów dziennika.",
"apihelp-import-param-xml": "PrzesÅany plik XML.",
"apihelp-import-param-interwikisource": "Dla importów mediawiki: źródÅowa wiki.",
"apihelp-import-param-interwikipage": "Dla importów interwiki: strona do importu.",
@@ -137,6 +139,7 @@
"apihelp-logout-example-logout": "Wyloguj obecnego użytkownika.",
"apihelp-managetags-param-reason": "Opcjonalny powód utworzenia, usuniÄcia, wÅÄ
czenia lub wyÅÄ
czenia znacznika.",
"apihelp-managetags-param-ignorewarnings": "Czy zignorowaÄ ostrzeżenia, które pojawiajÄ
siÄ w trakcie operacji.",
+ "apihelp-mergehistory-description": "ÅÄ
czenie historii edycji.",
"apihelp-move-description": "PrzenieÅ stronÄ.",
"apihelp-move-param-reason": "Powód zmiany nazwy.",
"apihelp-move-param-movetalk": "ZmieÅ nazwÄ strony dyskusji, jeÅli istnieje.",
diff --git a/includes/api/i18n/pt.json b/includes/api/i18n/pt.json
index 254f1c8ece..b70ebe92fd 100644
--- a/includes/api/i18n/pt.json
+++ b/includes/api/i18n/pt.json
@@ -7,7 +7,7 @@
"Jkb8"
]
},
- "apihelp-main-description": "\n* [[mw:API:Main_page|Documentação]]\n* [[mw:API:FAQ|FAQ]]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api Lista de discussão]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announce Anúncios da API]\n* [https://phabricator.wikimedia.org/maniphest/query/GebfyV4uCaLd/#R Erros e solicitações]\n
\nEstado: Todas as funcionalidades mostradas nesta página deveriam estar a funcionar, mas a API ainda está em activo desenvolvimento, e pode ser alterada a qualquer momento. Inscreva-se na [https://lists.wikimedia.org/pipermail/mediawiki-api-announce/ lista de discussão mediawiki-api-announce] para ser informado acerca das actualizações.\n\nSolicitações erradas: Quando solicitações erradas são enviadas à API, um cabeçalho em HTTP será enviado com a chave \"MediaWiki-API-Error\" e, em seguida, tanto o valor do cabeçalho quanto o código de erro retornado serão definidos com o mesmo valor. Para mais informação, consulte [[mw:API:Errors_and_warnings|API: Errors and warnings]].",
+ "apihelp-main-description": "\n* [[mw:API:Main_page|Documentação]]\n* [[mw:API:FAQ|FAQ]]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api Lista de discussão]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announce Anúncios da API]\n* [https://phabricator.wikimedia.org/maniphest/query/GebfyV4uCaLd/#R Erros e solicitações]\n
\nEstado: Todas as funcionalidades mostradas nesta página deveriam estar a funcionar, mas a API ainda está em activo desenvolvimento, e pode ser alterada a qualquer momento. Inscreva-se na [https://lists.wikimedia.org/pipermail/mediawiki-api-announce/ lista de discussão mediawiki-api-announce] para ser informado acerca das actualizações.\n\nSolicitações erradas: Quando solicitações erradas são enviadas à API, um cabeçalho em HTTP será enviado com a chave \"MediaWiki-API-Error\" e, em seguida, tanto o valor do cabeçalho quanto o código de erro retornado serão definidos com o mesmo valor. Para mais informação, consulte [[mw:API:Errors_and_warnings|API: Errors and warnings]].\n\nTestes: Para facilitar os testes de solicitações à API, consulte [[Special:ApiSandbox]].",
"apihelp-main-param-action": "Qual acção a executar.",
"apihelp-main-param-format": "O formato de saÃda.",
"apihelp-block-description": "Bloquear um utilizador.",
diff --git a/includes/api/i18n/qqq.json b/includes/api/i18n/qqq.json
index cde4cf19cb..4ded4aaf6d 100644
--- a/includes/api/i18n/qqq.json
+++ b/includes/api/i18n/qqq.json
@@ -18,7 +18,7 @@
"apihelp-main-description": "{{doc-apihelp-description|main}}",
"apihelp-main-param-action": "{{doc-apihelp-param|main|action}}",
"apihelp-main-param-format": "{{doc-apihelp-param|main|format}}",
- "apihelp-main-param-maxlag": "{{doc-apihelp-param|main|maxlag}}\n\n\"$host\" and \"$lag\" are not variables and appear as is.\n----\n\"Database replication\" is a configuration where you have multiple databases that communicate with each other so they all contain the same data. A \"database replicated cluster\" is a cluster (meaning \"a group of computers that work together\") of databases configured in this manner.\n\n\"Lag\" refers to the situation where one or more of the databases in the cluster are not completely up to date. For example, if the \"master\" database has data up to 2016-01-21T01:23:45Z while one of the \"slave\" is only up to 2016-01-21T01:23:30Z, that's a lag of 15 seconds.\n\nIn this case, \"$lag\" and \"$host\" are syntactic variables rather than computer code variables, so would not be appropriate. They are there to represent that the actual output text will be something like \"Waiting for db1045: 53 seconds lagged.\"",
+ "apihelp-main-param-maxlag": "{{doc-apihelp-param|main|maxlag}}",
"apihelp-main-param-smaxage": "{{doc-apihelp-param|main|smaxage}}",
"apihelp-main-param-maxage": "{{doc-apihelp-param|main|maxage}}",
"apihelp-main-param-assert": "{{doc-apihelp-param|main|assert}}",
diff --git a/includes/api/i18n/ro.json b/includes/api/i18n/ro.json
new file mode 100644
index 0000000000..6577423329
--- /dev/null
+++ b/includes/api/i18n/ro.json
@@ -0,0 +1,19 @@
+{
+ "@metadata": {
+ "authors": [
+ "ANDROBETA"
+ ]
+ },
+ "apihelp-createaccount-param-email": "Adresa de e-mail a utilizatorului (opÈional).",
+ "apihelp-createaccount-param-realname": "Numele real al utilizatorului (opÈional).",
+ "apihelp-createaccount-param-mailpassword": "DacÄ este setat la orice valoare, o parolÄ aleatoare va fi trimisÄ utilizatorului prin e-mail.",
+ "apihelp-delete-description": "Èterge o paginÄ.",
+ "apihelp-delete-param-title": "Titlul paginii de Èters. Nu poate fi folosit împreunÄ cu $1pageid .",
+ "apihelp-delete-param-pageid": "ID-ul paginii de Èters. Nu poate fi folosit împreunÄ cu $1title .",
+ "apihelp-delete-param-reason": "Motivul Ètergerii. DacÄ nu e specificat, va fi folosit un motiv generat automat.",
+ "apihelp-disabled-description": "Acest modul a fost dezactivat.",
+ "apihelp-edit-description": "CreeazÄ Èi modificÄ pagini.",
+ "apihelp-edit-example-edit": "ModificÄ o paginÄ.",
+ "apihelp-expandtemplates-param-title": "Titlul paginii.",
+ "apihelp-expandtemplates-param-text": "Wikitext de convertit."
+}
diff --git a/includes/api/i18n/ru.json b/includes/api/i18n/ru.json
index 18dc60c0c5..dd537f6f74 100644
--- a/includes/api/i18n/ru.json
+++ b/includes/api/i18n/ru.json
@@ -14,7 +14,9 @@
"Macofe",
"ÐÑаÑноÑÑдÑева Ðлена",
"Iniquity",
- "ÐилиÓ"
+ "ÐилиÓ",
+ "ÐйÑаÑ",
+ "ÐизаÑÑллина"
]
},
"apihelp-main-description": "\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
\nСÑаÑÑÑ: ÐÑе оÑобÑажаемÑе на ÑÑой ÑÑÑаниÑе ÑÑнкÑии Ð´Ð¾Ð»Ð¶Ð½Ñ ÑабоÑаÑÑ, однако API наÑ
одиÑÑÑ Ð² ÑÑаÑÑÑе акÑивной ÑазÑабоÑки и Ð¼Ð¾Ð¶ÐµÑ Ð¸Ð·Ð¼ÐµÐ½Ð¸ÑÑÑÑ Ð² лÑбой моменÑ. ÐодпиÑиÑеÑÑ Ð½Ð° [https://lists.wikimedia.org/pipermail/mediawiki-api-announce/ поÑÑовÑÑ ÑаÑÑÑÐ»ÐºÑ mediawiki-api-announce], ÑÑÐ¾Ð±Ñ Ð±ÑÑÑ Ð² кÑÑÑе обновлений.\n\nÐÑибоÑнÑе запÑоÑÑ: ÐÑли API полÑÑÐ°ÐµÑ Ð·Ð°Ð¿ÑÐ¾Ñ Ñ Ð¾Ñибкой, веÑнÑÑÑÑ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾Ðº HTTP Ñ ÐºÐ»ÑÑом «MediaWiki-API-Error», поÑле Ñего знаÑение заголовка и код оÑибки бÑдÑÑ Ð¾ÑпÑÐ°Ð²Ð»ÐµÐ½Ñ Ð¾Ð±ÑаÑно и ÑÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ñ Ð² Ñо же знаÑение. Ðолее подÑобнÑÑ Ð¸Ð½ÑоÑмаÑÐ¸Ñ Ñм. [[mw:API:Errors_and_warnings|API: ÐÑибки и пÑедÑпÑеждениÑ]].\n\nТеÑÑиÑование: Ð´Ð»Ñ ÑдобÑÑва ÑеÑÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ API-запÑоÑов, Ñм. [[Special:ApiSandbox]].",
@@ -33,7 +35,7 @@
"apihelp-block-param-anononly": "ÐлокиÑоваÑÑ ÑолÑко анонимнÑÑ
полÑзоваÑелей (Ñ. е. запÑеÑиÑÑ Ð°Ð½Ð¾Ð½Ð¸Ð¼Ð½Ñе пÑавки Ð´Ð»Ñ ÑÑого IP-адÑеÑа).",
"apihelp-block-param-nocreate": "ÐапÑеÑиÑÑ Ñоздание ÑÑÑÑнÑÑ
запиÑей.",
"apihelp-block-param-autoblock": "ÐвÑомаÑиÑеÑки блокиÑоваÑÑ Ð¿Ð¾Ñледний иÑполÑзованнÑй IP-адÑÐµÑ Ð¸ вÑе поÑледÑÑÑие, Ñ ÐºÐ¾ÑоÑÑÑ
бÑдÑÑ ÑовеÑÑаÑÑÑÑ Ð¿Ð¾Ð¿ÑÑки авÑоÑизаÑии.",
- "apihelp-block-param-noemail": "Ò ÑлланÑÑÑÑнÑÒ£ Ðики аÑа ÑлекÑÑон поÑÑа ебÓÑеүен ÑÑйÑÑ. (Талап иÑÓ blockemail
Ñ
оҡÑÒÑн)",
+ "apihelp-block-param-noemail": "ÐапÑеÑиÑÑ ÑÑаÑÑÐ½Ð¸ÐºÑ Ð¾ÑпÑавлÑÑÑ ÑлекÑÑоннÑÑ Ð¿Ð¾ÑÑÑ ÑеÑез инÑеÑÑÐµÐ¹Ñ Ð²Ð¸ÐºÐ¸. (ТÑебÑеÑÑÑ Ð¿Ñаво blockemail
).",
"apihelp-block-param-hidename": "СкÑÑÑÑ Ð¸Ð¼Ñ ÑÑаÑÑника из жÑÑнала блокиÑовок. (ТÑебÑеÑÑÑ Ð¿Ñаво hideuser
).",
"apihelp-block-param-allowusertalk": "ÐозволÑÐµÑ ÑÑаÑÑникам ÑедакÑиÑоваÑÑ Ð¸Ñ
ÑобÑÑвеннÑе ÑÑÑаниÑÑ Ð¾Ð±ÑÑÐ¶Ð´ÐµÐ½Ð¸Ñ (завиÑÐ¸Ñ Ð¾Ñ [[mw:Manual:$wgBlockAllowsUTEdit|$wgBlockAllowsUTEdit]] ).",
"apihelp-block-param-reblock": "ÐÑли ÑÑаÑÑник Ñже заблокиÑован, пеÑезапиÑаÑÑ ÑÑÑеÑÑвÑÑÑÑÑ Ð±Ð»Ð¾ÐºÐ¸ÑовкÑ.",
@@ -96,6 +98,7 @@
"apihelp-expandtemplates-param-text": "ÐикиÑекÑÑ Ð´Ð»Ñ ÐºÐ¾Ð½Ð²ÐµÑÑиÑованиÑ",
"apihelp-expandtemplates-paramvalue-prop-wikitext": "РаÑÑиÑеннÑй викиÑекÑÑ",
"apihelp-expandtemplates-paramvalue-prop-parsetree": "ÐеÑево ÑазбоÑа XML вÑ
однÑÑ
даннÑÑ
.",
+ "apihelp-feedcontributions-param-feedformat": "ÐиÑеү ÑоÑмаÑÑ",
"apihelp-feedcontributions-param-year": "ÐÑ Ð³Ð¾Ð´Ð° (и Ñанее).",
"apihelp-feedcontributions-param-month": "ÐÑ Ð¼ÐµÑÑÑа (и Ñанее).",
"apihelp-feedcontributions-param-deletedonly": "ÐоказаÑÑ ÑолÑко ÑдалÑннÑе пÑавки.",
@@ -117,9 +120,15 @@
"apihelp-feedrecentchanges-param-showlinkedto": "ÐоказаÑÑ Ð¿Ñавки на ÑÑÑаниÑаÑ
, ÑÑÑлаÑÑиÑ
ÑÑ Ð½Ð° даннÑÑ.",
"apihelp-feedrecentchanges-example-simple": "СпиÑок поÑледниÑ
изменений.",
"apihelp-feedrecentchanges-example-30days": "ÐоказаÑÑ Ð¿Ð¾Ñледние Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð² ÑеÑение 30 дней.",
+ "apihelp-feedwatchlist-param-feedformat": "ÐиÑеү ÑоÑмаÑÑ.",
+ "apihelp-feedwatchlist-param-hours": "ÐÑл ваҡÑÑÑан алÑп Ò¯ÒгÓÑÑелгÓн биÑÑÓÑ Ð¸Ñемлеге",
"apihelp-feedwatchlist-param-linktosections": "СÑÑлаÑÑÑÑ Ð¿ÑÑмо на ÑÐ°Ð·Ð´ÐµÐ»Ñ Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñми, еÑли возможно.",
+ "apihelp-feedwatchlist-example-default": "ÐÒ¯ÒÓÑеү каналÑн күÑÒ»ÓÑеÑгÓ",
+ "apihelp-feedwatchlist-example-all6hrs": "ÐÒ¯ÒÓÑелгÓн биÑÑÓÑÒÓ Ò»ÑÒ£ÒÑ 6 ÑÓÒÓÑ ÑÑендÓге Ò¯ÒгÓÑеÑÑÓÑÒе күÑÒ»ÓÑеÑгÓ.",
+ "apihelp-filerevert-description": "Ð¤Ð°Ð¹Ð»Ð´Ñ Ð¸Ò«ÐºÐµ веÑÑиÑÒа ҡайÑаÑÑÑÒа.",
"apihelp-filerevert-param-filename": "Целевое Ð¸Ð¼Ñ Ñайла без пÑеÑикÑа File:.",
"apihelp-filerevert-param-comment": "ÐагÑÑзиÑÑ ÐºÐ¾Ð¼Ð¼ÐµÐ½ÑаÑий.",
+ "apihelp-help-param-helpformat": "ÐелеÑÐ¼Ó ÑÒÑÑ ÑоÑмаÑÑ.",
"apihelp-help-example-main": "ÐомоÑÑ Ð¿Ð¾ Ð³Ð»Ð°Ð²Ð½Ð¾Ð¼Ñ Ð¼Ð¾Ð´ÑлÑ.",
"apihelp-help-example-recursive": "ÐÑÑ ÑпÑавка в одном Ñазделе.",
"apihelp-imagerotate-description": "ÐовоÑÐ¾Ñ Ð¾Ð´Ð½Ð¾Ð³Ð¾ или неÑколÑкиÑ
изобÑажений.",
@@ -154,23 +163,86 @@
"apihelp-options-example-reset": "СбÑоÑиÑÑ Ð²Ñе наÑÑÑойки.",
"apihelp-paraminfo-description": "ÐолÑÑиÑÑ Ð¸Ð½ÑоÑмаÑÐ¸Ñ Ð¾ модÑлÑÑ
API.",
"apihelp-paraminfo-param-helpformat": "ФоÑÐ¼Ð°Ñ ÑÑÑок ÑпÑавки.",
+ "apihelp-parse-param-disablepp": "УÑÑнÑна $1disablelimitreport Ò¡ÑлланÑÑÒа.",
+ "apihelp-parse-param-preview": "Ðлдан ҡаÑÐ°Ñ ÑежимÑнда ÑинÑакÑик анализ",
"apihelp-parse-param-disabletoc": "Ðе вклÑÑаÑÑ Ð² вÑвод ÑаблиÑÑ ÑодеÑжаниÑ.",
"apihelp-parse-example-page": "анализ ÑÑÑаниÑÑ",
"apihelp-parse-example-text": "Ðнализ wikitext.",
+ "apihelp-parse-example-summary": "ÒºÑÒÑмÑÐ°Ð½Ñ ÑикÑеÑеү.",
+ "apihelp-patrol-param-rcid": "Ð¯Ò£Ñ Ò¯ÒгÓÑÑеүÒÓÑÒе ҡаÑÐ°Ñ Ð¸Ð´ÐµÐ½ÑиÑикаÑоÑÑ.",
+ "apihelp-patrol-param-revid": "Ò Ð°ÑÐ°Ñ Ð²ÐµÑÑиÑÒ»Ñ Ð¸Ð´ÐµÐ½ÑиÑикаÑоÑÑ.",
+ "apihelp-patrol-example-rcid": "ÒºÑÒ£ÒÑ Ò¯ÒгÓÑеÑÑÓÑÒе ҡаÑаÑ.",
+ "apihelp-patrol-example-revid": "ЯңÑнан ҡаÑаÑ.",
"apihelp-protect-description": "ÐзмениÑÑ ÑÑÐ¾Ð²ÐµÐ½Ñ Ð·Ð°ÑиÑÑ ÑÑÑаниÑÑ.",
+ "apihelp-protect-param-title": "ÐÐ¸Ñ Ð°ÑамаһÑ. $1pageid менÓн беÑÐ³Ó Ò¡ÑлланÑлмай.",
+ "apihelp-protect-param-reason": "(ÐÐÐ) һаÒÑ ÑÓбÓпÑÓÑе.",
"apihelp-protect-example-protect": "ÐаÑиÑиÑÑ ÑÑÑаниÑÑ.",
+ "apihelp-protect-example-unprotect": "вÑеÑ
Ó©Ñөн ÑиклÓÒ¯ÒÓÑ Ò¡ÑйÑп,биÑÑÓн һаҡлаÑÒÑ Ð°Ð»ÑÑÒа.",
+ "apihelp-protect-example-unprotect2": "ÐÐµÑ Ð½Ð¸Ð½Ð´Óй ÑиклÓÒ¯ÒÓÑ Ò¡Ñймай биÑÑÓн һаҡлаÑÒÑ Ð°Ð»ÑÑÒа.",
"apihelp-purge-param-forcelinkupdate": "Ðбновление ÑвÑзей ÑаблиÑ.",
+ "apihelp-purge-param-forcerecursivelinkupdate": "ÒºÑлÑÐ°Ð½Ð¼Ð°Ð½Ñ Ò»Óм ÑаблиÑÐ°Ð½Ñ ÑÒ£ÑÑÑÑÒÑÒ Ò»Óм бÑл биÑÑе Ñаблон иÑеп Ò¡ÑлланÒан баÑҡа биÑÑÓÑ Ó©Ñөн Ò»ÑлÑанмалаÑÒÑ Ð»Ð° ÑÒ£ÑÑÑÑÒÑÒ.",
"apihelp-query-param-list": "Ðакие ÑпиÑки иÑполÑзоваÑÑ",
"apihelp-query-param-meta": "Ðакие меÑаданнÑе иÑполÑзоваÑÑ",
"apihelp-query+allcategories-description": "ÐеÑеÑиÑлиÑÑ Ð²Ñе каÑегоÑии.",
+ "apihelp-query+allcategories-param-prefix": "ÐÑл мÓÒÓнÓнÓн баÑланÒан Ð±Ð°Ñ Ð°ÑамалаÑÒÑ ÐºÐ°ÑегоÑиÑÐ»Ð°Ñ Ð±ÑйÑнÑа ÑÒлÓÑгÓ.",
+ "apihelp-query+allcategories-param-dir": "СоÑÑÐ»Ð°Ñ Ð¹Ò¯Ð½ÓлеÑÑÓÑе.",
"apihelp-query+allcategories-param-limit": "СколÑко каÑегоÑий веÑнÑÑÑ.",
"apihelp-query+allcategories-param-prop": "Ðакие ÑвойÑÑва полÑÑиÑÑ:",
+ "apihelp-query+allcategories-paramvalue-prop-size": "ÐаÑегоÑиÑлаÑÒа биÑÑÓÑ Ò»Ð°Ð½Ñ Ó©Ò«ÑÓÒ¯",
+ "apihelp-query+allcategories-example-size": "ÐиÑÑÓÑ Ò»Ð°Ð½Ñ Ð±ÑйÑнÑа мÓÒлүмÓÑле каÑегоÑиÑÐ»Ð°Ñ Ð¸Ñемлеге.",
+ "apihelp-query+allcategories-example-generator": "иÑемлек каÑегоÑиÑÐ»Ð°Ñ Ð±Ð¸ÑенÓн мÓÒлүмÓÑ Ð°Ð»ÑÑÒа.",
+ "apihelp-query+alldeletedrevisions-description": "ÐÐ°Ñ Ð¼Ó©Ñ
ÓÑÑиÑлÓÒ¯ иÑемлеге Ò¡ÑлланÑÑÑÑ ÑаÑаÑÑнан ÑйÑлÒан.",
+ "apihelp-query+alldeletedrevisions-paraminfo-useronly": "$3Ò¡ÑлланÑÑÑÑнÑÒ£ менÓн Ð³ÐµÐ½Ó Ò¡ÑлланÑла ала.",
+ "apihelp-query+alldeletedrevisions-param-start": "ҺанаÑÒÑ Ð±Ð°ÑÐ»Ð°Ñ Ð²Ð°Ò¡ÑÑÑн билдÓлÓÒ¯",
+ "apihelp-query+alldeletedrevisions-param-end": "Һанай баÑÐ»Ð°Ñ Ð²Ð°Ò¡ÑÑÑн билдÓлÓÒ¯.",
+ "apihelp-query+alldeletedrevisions-param-prefix": "ÐÑл мÓÒÓнÓнÓн баÑланÒан Ð±Ð°Ñ Ð°ÑамалаÑÒÑ ÐºÐ°ÑегоÑиÑÐ»Ð°Ñ Ð±ÑйÑнÑа ÑÒлÓÑгÓ.",
+ "apihelp-query+alldeletedrevisions-param-user": "ÐаÑÑ Ñик бÑл Ò¡ÑлланÑÑÑÑнÑÒ£ Ò¯ÒгÓÑÑеүÒÓÑ Ð¸Ñемлеге.",
+ "apihelp-query+alldeletedrevisions-param-excludeuser": "ÐÑл Ò¡ÑлланÑÑÑÑнÑÒ£ Ò¯ÒгÓÑÑеүÒÓÑ Ð¸Ñемлеге Ñүгел.",
+ "apihelp-query+alldeletedrevisions-param-namespace": "ÐаÑÑ Ñик бÑл иÑемдÓÑ Ð°ÑаÑÑÒÑндаÒÑ Ð±Ð¸ÑÑÓÑ Ð¸Ñемлеге.",
+ "apihelp-query+alldeletedrevisions-example-ns-main": "Төп иÑемдÓÑ Ð°ÑаÑÑÒÑнда ÑйÑлÒан ÑÓүге 50 Ò¯ÒгÓÑÑеү иÑемлеге.",
+ "apihelp-query+allfileusages-description": "ЮйÑлÒÐ°Ð½Ð´Ð°Ñ Ð¼ÐµÐ½Óн беÑÐ³Ó Ð±Ð°ÑлÑÒ¡ ÑÐ°Ð¹Ð»Ð´Ð°Ñ ÑÓÑÑибе иÑемлеге.",
+ "apihelp-query+allfileusages-param-from": "ҺанаÑÒÑ Ð±Ð°ÑÐ»Ð°Ñ Ó©Ñөн Ñайл аÑамаһÑ.",
+ "apihelp-query+allfileusages-param-to": "ҺанаÑÒÑ ÑÑÒ¡ÑаÑÑÑ ÑÐ°Ð¹Ð»Ñ Ð°ÑамаһÑ.",
+ "apihelp-query+allfileusages-param-prefix": "ÐÑл мÓÒÓнÓнÓн баÑланÒан Ð±Ð°Ñ Ð°ÑамалаÑÒÑ ÐºÐ°ÑегоÑиÑÐ»Ð°Ñ Ð±ÑйÑнÑа ÑÒлÓÑгÓ.",
+ "apihelp-query+allfileusages-param-prop": "Ò Ð°Ð¹Ò»Ñ Ð¼ÓÒлүмÓÑÑе күÑÒ»ÓÑеÑгÓ:",
+ "apihelp-query+allfileusages-paramvalue-prop-title": "Файл аÑамаһÑна Ò¡ÑÑа.",
+ "apihelp-query+allfileusages-param-limit": "ÐиÑÓ Ð±Ð¸ÑÑе ÑеÑгеÒеÑгÓ?",
+ "apihelp-query+allfileusages-param-dir": "ÒºÐ°Ð½Ð°Ñ Ð¹Ò¯Ð½ÓлеÑе.",
+ "apihelp-query+allfileusages-example-unique": "ÐÑамалаÑÒÑÒ£ ÑÒенÑÓлекле ÑайлдаÑÑ Ð¸Ñемлеге.",
+ "apihelp-query+allfileusages-example-unique-generator": "ТөÑөп ҡалÒандаÑÒÑ Ð°Ð¹ÑÑÑп, баÑлÑÒ¡ иÑем-Ò»ÑлÑанмалаÑÒÑ Ð°Ð»ÑÑÒа.",
+ "apihelp-query+allfileusages-example-generator": "Ð¤Ð°Ð¹Ð»Ð´Ð°Ñ Ð¼ÐµÐ½Óн биÑÑÓÑ Ð±Ð°Ñ.",
+ "apihelp-query+allimages-description": "ÐеÑ-Ð±ÐµÑ Ð°ÑÑÐ»Ñ Ð±Ó©ÑÓ Ð¾Ð±ÑаздаÑÒÑ Ò»Ð°Ð½Ð°Ð¿ ÑÑÒÑÑÒа.",
+ "apihelp-query+allimages-param-sort": "СоÑÑиÑÐ¾Ð²ÐºÐ°Ð»Ð°Ñ Ò¯ÒенÑÓлекÑÓÑе.",
+ "apihelp-query+allimages-param-dir": "ÒºÐ°Ð½Ð°Ñ Ð¹Ò¯Ð½ÓлеÑе.",
+ "apihelp-query+allimages-param-minsize": "ÒºÒ¯ÑÓÑÑÓÑ Ð»Ð¸Ð¼Ð¸ÑÑ (байÑÑаÑÒа).",
+ "apihelp-query+allimages-param-maxsize": "ÐÐ°Ñ Ò»Ò¯ÑÓÑÑÓÑ Ð»Ð¸Ð¼Ð¸ÑÑ (байÑÑаÑÒа).",
+ "apihelp-query+allimages-param-limit": "ÐиÑе ҡайÑÑÑ Ó©Ñөн обÑÐ°Ð·Ð´Ð°Ñ Ò»Ð°Ð½Ñ.",
+ "apihelp-query+allimages-example-B": "Ð Ñ
ÓÑеÑенÓн баÑланÒан ÑÐ°Ð¹Ð»Ð´Ð°Ñ Ð¸Ñемлеген күÑÒ»ÓÑеÑгÓ.",
+ "apihelp-query+allimages-example-recent": "ÐүпÑÓн Ñүгел ÑейÓлгÓн Ò»Óм [[ÑпеÑиалÑнÑе:NewFiles]] оҡÑÐ°Ñ ÑÐ°Ð¹Ð»Ð´Ð°Ñ Ð¸Ñемлеген күÑÒ»ÓÑеÑгÓ.",
+ "apihelp-query+allimages-example-generator": "Т Ñ
ÓÑеÑенÓн баÑланÒан 4 Ñайл Ñ
аҡÑнда мÓÒлүмÓÑÑе күÑÒ»ÓÑеÑгÓ.",
+ "apihelp-query+alllinks-description": "ÐиÑелгÓн иÑемдÓÑ Ð°ÑаÑÑÒÑна йүнÓлÑкÓн баÑлÑÒ¡ Ò»ÑлÑанмалаÑÒÑ Ò»Ð°Ð½Ð°Ð¿ ÑÑÒÑÑÒа.",
+ "apihelp-query+alllinks-param-from": "ҺанаÑÒÑ Ð±Ð°ÑÐ»Ð°Ñ Ó©Ñөн Ò»ÑлÑанма аÑамаһÑ.",
+ "apihelp-query+alllinks-param-to": "ҺанаÑÒÑ ÑÑÒ¡ÑаÑÑÑ Ò»ÑлÑÐ°Ð½Ð¼Ð°Ò»Ñ Ð°ÑамаһÑ.",
+ "apihelp-query+alllinks-param-prefix": "ÐÑл мÓÒÓнÓнÓн баÑланÒан бÓйлÓнеÑле Ð±Ð°Ñ Ð°ÑамалаÑÒÑ ÑÒлÓÑгÓ.",
+ "apihelp-query+alllinks-param-prop": "Ò Ð°Ð¹Ò»Ñ Ð¼ÓÒлүмÓÑÑе күÑÒ»ÓÑеÑгÓ:",
+ "apihelp-query+alllinks-paramvalue-prop-title": "ÒºÑлÑанма аÑамаһÑн Ò¡ÑÑа.",
+ "apihelp-query+alllinks-param-namespace": "ÒºÐ°Ð½Ð°Ñ Ó©Ñөн иÑемдÓÑ Ð°ÑаÑÑÒÑ.",
+ "apihelp-query+alllinks-param-limit": "ÐиÑÓ ÑлеменÑÑÑ ÑеÑгеÒеÑгÓ?",
+ "apihelp-query+alllinks-param-dir": "ÒºÐ°Ð½Ð°Ñ Ð¹Ò¯Ð½ÓлеÑе.",
+ "apihelp-query+alllinks-example-unique": "ÐÑамалаÑÒÑÒ£ Ò¯ÒенÑÓлекле иÑемдÓÑе бÓйлÓнгÓн.",
"apihelp-query+alllinks-example-unique-generator": "ÐолÑÑиÑÑ Ð²Ñе названиÑ-ÑÑÑлки, вÑделÑÑ Ð¿ÑопÑÑеннÑе.",
+ "apihelp-query+alllinks-example-generator": "ÒºÑлÑÐ°Ð½Ð¼Ð°Ð»Ñ Ð±Ð¸ÑÑÓÑ Ð±Ð°Ñ.",
+ "apihelp-query+allmessages-description": "ÐÑл ÑайÑÑан Ñ
ÓбÓÑ Ò¡Ð°Ð¹ÑаÑÑÑ.",
+ "apihelp-query+allmessages-param-prop": "ÐиндÓй Ò¯ÒенÑÓлекÑÓÑÒе ҡайÑаÑÑÑÒа.",
+ "apihelp-query+allmessages-param-args": "ÐÑгÑменÑÑÐ°Ñ Ð¥ÓбÓÑÒÓÑÒÓ Ð±Ð¸ÑелÓÑÓк.",
"apihelp-query+blocks-example-simple": "СпиÑок блоков.",
"apihelp-query+categories-param-limit": "СколÑко каÑегоÑий на возвÑаÑ.",
"apihelp-query+categorymembers-param-sort": "СвойÑÑво Ð´Ð»Ñ ÑоÑÑиÑовки.",
"apihelp-query+categorymembers-param-startsortkey": "ÐÑполÑзоваÑÑ $1starthexsortkey вмеÑÑо.",
"apihelp-query+categorymembers-param-endsortkey": "ÐÑполÑзоваÑÑ $1endhexsortkey вмеÑÑо.",
+ "apihelp-query+deletedrevs-param-limit": "ÐÑемлекÑÓге ÑÒмалаÑÒÑÒ£ иң күбе.",
+ "apihelp-query+deletedrevs-example-mode1": "Юҡ иÑелгÓн Ò»ÑÒ£ÒÑ Ð±Ð¸ÑÑÓÑÒең иÑемлеге, Ð±Ð°Ñ Ð±Ð¸ÑÑең-Ò»Ñ Ò»ÓмÓйÑеÑгÓ:Ð±Ð°Ñ Ð±Ð¸ÑÑең /kbd>-Ò»Ñ,конÑÐ¸Ð½ÐµÐ½Ñ Ð¼ÐµÐ½Óн(Ñежим 1).",
+ "apihelp-query+deletedrevs-example-mode3-talk": "Юҡ иÑелгÓн ÑÓүге 50 биÑÑең иÑемлеге {{ÐС:ÑÐµÐºÐµÑ Ð°Ð»ÑÑÑÑ}} иÑемдÓÑ Ð°ÑаÑÑÒÑ(Ñежим 3).",
"apihelp-query+duplicatefiles-example-generated": "ÐоиÑк дÑбликаÑов вÑеÑ
Ñайлов.",
"apihelp-query+logevents-description": "ÐолÑÑаÑÑ ÑобÑÑÐ¸Ñ Ð¸Ð· жÑÑналов.",
"apihelp-query+logevents-example-simple": "СпиÑок поÑледниÑ
заÑегиÑÑÑиÑованнÑÑ
ÑобÑÑий.",
diff --git a/includes/api/i18n/uk.json b/includes/api/i18n/uk.json
index 4b0a00eeb1..a525f2e7d0 100644
--- a/includes/api/i18n/uk.json
+++ b/includes/api/i18n/uk.json
@@ -194,7 +194,7 @@
"apihelp-imagerotate-example-simple": "ÐовеÑнÑÑи File:Example.png на 90 гÑадÑÑÑв.",
"apihelp-imagerotate-example-generator": "ÐовеÑнÑÑи ÑÑÑ Ð·Ð¾Ð±ÑÐ°Ð¶ÐµÐ½Ð½Ñ Ñ Category:Flip на 180 гÑадÑÑÑв.",
"apihelp-import-description": "ÐмпоÑÑÑваÑи ÑÑоÑÑÐ½ÐºÑ Ð· ÑнÑÐ¾Ñ Ð²ÑÐºÑ Ð°Ð±Ð¾ з XML-ÑайлÑ.\n\nÐважÑе, Ñо HTTP POST Ð¼Ð°Ñ Ð±ÑÑи виконано Ñк заванÑÐ°Ð¶ÐµÐ½Ð½Ñ ÑÐ°Ð¹Ð»Ñ (ÑобÑо з викоÑиÑÑаннÑм даниÑ
ÑÑзниÑ
ÑаÑÑин/ÑоÑм) пÑд ÑÐ°Ñ Ð½Ð°Ð´ÑÐ¸Ð»Ð°Ð½Ð½Ñ ÑÐ°Ð¹Ð»Ñ Ð´Ð»Ñ Ð¿Ð°ÑамеÑÑа xml .",
- "apihelp-import-param-summary": "ÐмпоÑÑÑваÑи пÑдÑÑмок.",
+ "apihelp-import-param-summary": "ÐÑдÑÑмок ÑмпоÑÑÑ Ð·Ð°Ð¿Ð¸ÑÑв жÑÑналÑ.",
"apihelp-import-param-xml": "ÐаванÑажено XML-Ñайл.",
"apihelp-import-param-interwikisource": "ÐÐ»Ñ ÑнÑеÑвÑкÑ-ÑмпоÑÑÑ: вÑкÑ, з ÑÐºÐ¾Ñ ÑмпоÑÑÑваÑи.",
"apihelp-import-param-interwikipage": "ÐÐ»Ñ ÑнÑеÑвÑкÑ-ÑмпоÑÑÑ: ÑÑоÑÑнки Ð´Ð»Ñ ÑмпоÑÑÑ.",
diff --git a/includes/api/i18n/ur.json b/includes/api/i18n/ur.json
new file mode 100644
index 0000000000..c0f1bcfae3
--- /dev/null
+++ b/includes/api/i18n/ur.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Obaid Raza"
+ ]
+ },
+ "apihelp-delete-example-simple": "Øذ٠صÙØÛ Ø§ÙÙ ."
+}
diff --git a/includes/api/i18n/zh-hans.json b/includes/api/i18n/zh-hans.json
index fb8464c595..c3ea00a8ab 100644
--- a/includes/api/i18n/zh-hans.json
+++ b/includes/api/i18n/zh-hans.json
@@ -202,7 +202,7 @@
"apihelp-imagerotate-example-simple": "90 度æ转File:Example.png ã",
"apihelp-imagerotate-example-generator": "å°Category:Flip ä¹ä¸çææå¾åæ转180 度ã",
"apihelp-import-description": "ä»å¦ä¸ä¸ªwikiæä»ä¸ä¸ªXMLæ件导å
¥é¡µé¢ã\n\n注æå½åéä¸ä¸ªç¨äºxml åæ°çæ件æ¶ï¼HTTP POSTå¿
é¡»ä½ä¸ºä¸æ¬¡æ件ä¸ä¼ å®æï¼ä¹å°±æ¯ä½¿ç¨multipart/form-dataï¼ã",
- "apihelp-import-param-summary": "导å
¥æè¦ã",
+ "apihelp-import-param-summary": "æ¥å¿è®°å½å¯¼å
¥æè¦ã",
"apihelp-import-param-xml": "ä¸ä¼ çXMLæ件ã",
"apihelp-import-param-interwikisource": "ç¨äºè·¨wiki导å
¥ï¼å¯¼å
¥çæ¥æºwikiã",
"apihelp-import-param-interwikipage": "ç¨äºè·¨wiki导å
¥ï¼å¯¼å
¥ç页é¢ã",
diff --git a/includes/cache/LCStoreStaticArray.php b/includes/cache/LCStoreStaticArray.php
deleted file mode 100644
index 1e20082f16..0000000000
--- a/includes/cache/LCStoreStaticArray.php
+++ /dev/null
@@ -1,140 +0,0 @@
-directory = $conf['directory'];
- } else {
- $this->directory = $wgCacheDirectory;
- }
- }
-
- public function startWrite( $code ) {
- $this->currentLang = $code;
- $this->fname = $this->directory . '/' . $code . '.l10n.php';
- $this->data[$code] = [];
- if ( file_exists( $this->fname ) ) {
- $this->data[$code] = require $this->fname;
- }
- }
-
- public function set( $key, $value ) {
- $this->data[$this->currentLang][$key] = self::encode( $value );
- }
-
- /**
- * Encodes a value into an array format
- *
- * @param mixed $value
- * @return array
- * @throws RuntimeException
- */
- public static function encode( $value ) {
- if ( is_scalar( $value ) || $value === null ) {
- // [V]alue
- return [ 'v', $value ];
- }
- if ( is_object( $value ) ) {
- // [S]erialized
- return [ 's', serialize( $value ) ];
- }
- if ( is_array( $value ) ) {
- // [A]rray
- return [ 'a', array_map( function ( $v ) {
- return LCStoreStaticArray::encode( $v );
- }, $value ) ];
- }
-
- throw new RuntimeException( 'Cannot encode ' . var_export( $value, true ) );
- }
-
- /**
- * Decode something that was encoded with encode
- *
- * @param array $encoded
- * @return array|mixed
- * @throws RuntimeException
- */
- public static function decode( array $encoded ) {
- $type = $encoded[0];
- $data = $encoded[1];
-
- switch ( $type ) {
- case 'v':
- return $data;
- case 's':
- return unserialize( $data );
- case 'a':
- return array_map( function ( $v ) {
- return LCStoreStaticArray::decode( $v );
- }, $data );
- default:
- throw new RuntimeException(
- 'Unable to decode ' . var_export( $encoded, true ) );
- }
- }
-
- public function finishWrite() {
- file_put_contents(
- $this->fname,
- "data[$this->currentLang], true ) . ';'
- );
- $this->currentLang = null;
- $this->fname = null;
- }
-
- public function get( $code, $key ) {
- if ( !array_key_exists( $code, $this->data ) ) {
- $fname = $this->directory . '/' . $code . '.l10n.php';
- if ( !file_exists( $fname ) ) {
- return null;
- }
- $this->data[$code] = require $fname;
- }
- $data = $this->data[$code];
- if ( array_key_exists( $key, $data ) ) {
- return self::decode( $data[$key] );
- }
- return null;
- }
-}
diff --git a/includes/cache/LinkBatch.php b/includes/cache/LinkBatch.php
index 5dc81101b0..c5bd29058c 100644
--- a/includes/cache/LinkBatch.php
+++ b/includes/cache/LinkBatch.php
@@ -20,6 +20,7 @@
* @file
* @ingroup Cache
*/
+use MediaWiki\Linker\LinkTarget;
/**
* Class representing a list of titles
diff --git a/includes/cache/LocalisationCache.php b/includes/cache/LocalisationCache.php
deleted file mode 100644
index 6efeabef4a..0000000000
--- a/includes/cache/LocalisationCache.php
+++ /dev/null
@@ -1,1479 +0,0 @@
-
- * zh-hans -> en ). Some common errors are corrected, for example namespace
- * names with spaces instead of underscores, but heavyweight processing, such
- * as grammatical transformation, is done by the caller.
- */
-class LocalisationCache {
- const VERSION = 4;
-
- /** Configuration associative array */
- private $conf;
-
- /**
- * True if recaching should only be done on an explicit call to recache().
- * Setting this reduces the overhead of cache freshness checking, which
- * requires doing a stat() for every extension i18n file.
- */
- private $manualRecache = false;
-
- /**
- * True to treat all files as expired until they are regenerated by this object.
- */
- private $forceRecache = false;
-
- /**
- * The cache data. 3-d array, where the first key is the language code,
- * the second key is the item key e.g. 'messages', and the third key is
- * an item specific subkey index. Some items are not arrays and so for those
- * items, there are no subkeys.
- */
- protected $data = [];
-
- /**
- * The persistent store object. An instance of LCStore.
- *
- * @var LCStore
- */
- private $store;
-
- /**
- * A 2-d associative array, code/key, where presence indicates that the item
- * is loaded. Value arbitrary.
- *
- * For split items, if set, this indicates that all of the subitems have been
- * loaded.
- */
- private $loadedItems = [];
-
- /**
- * A 3-d associative array, code/key/subkey, where presence indicates that
- * the subitem is loaded. Only used for the split items, i.e. messages.
- */
- private $loadedSubitems = [];
-
- /**
- * An array where presence of a key indicates that that language has been
- * initialised. Initialisation includes checking for cache expiry and doing
- * any necessary updates.
- */
- private $initialisedLangs = [];
-
- /**
- * An array mapping non-existent pseudo-languages to fallback languages. This
- * is filled by initShallowFallback() when data is requested from a language
- * that lacks a Messages*.php file.
- */
- private $shallowFallbacks = [];
-
- /**
- * An array where the keys are codes that have been recached by this instance.
- */
- private $recachedLangs = [];
-
- /**
- * All item keys
- */
- static public $allKeys = [
- 'fallback', 'namespaceNames', 'bookstoreList',
- 'magicWords', 'messages', 'rtl', 'capitalizeAllNouns', 'digitTransformTable',
- 'separatorTransformTable', 'fallback8bitEncoding', 'linkPrefixExtension',
- 'linkTrail', 'linkPrefixCharset', 'namespaceAliases',
- 'dateFormats', 'datePreferences', 'datePreferenceMigrationMap',
- 'defaultDateFormat', 'extraUserToggles', 'specialPageAliases',
- 'imageFiles', 'preloadedMessages', 'namespaceGenderAliases',
- 'digitGroupingPattern', 'pluralRules', 'pluralRuleTypes', 'compiledPluralRules',
- ];
-
- /**
- * Keys for items which consist of associative arrays, which may be merged
- * by a fallback sequence.
- */
- static public $mergeableMapKeys = [ 'messages', 'namespaceNames',
- 'namespaceAliases', 'dateFormats', 'imageFiles', 'preloadedMessages'
- ];
-
- /**
- * Keys for items which are a numbered array.
- */
- static public $mergeableListKeys = [ 'extraUserToggles' ];
-
- /**
- * Keys for items which contain an array of arrays of equivalent aliases
- * for each subitem. The aliases may be merged by a fallback sequence.
- */
- static public $mergeableAliasListKeys = [ 'specialPageAliases' ];
-
- /**
- * Keys for items which contain an associative array, and may be merged if
- * the primary value contains the special array key "inherit". That array
- * key is removed after the first merge.
- */
- static public $optionalMergeKeys = [ 'bookstoreList' ];
-
- /**
- * Keys for items that are formatted like $magicWords
- */
- static public $magicWordKeys = [ 'magicWords' ];
-
- /**
- * Keys for items where the subitems are stored in the backend separately.
- */
- static public $splitKeys = [ 'messages' ];
-
- /**
- * Keys which are loaded automatically by initLanguage()
- */
- static public $preloadedKeys = [ 'dateFormats', 'namespaceNames' ];
-
- /**
- * Associative array of cached plural rules. The key is the language code,
- * the value is an array of plural rules for that language.
- */
- private $pluralRules = null;
-
- /**
- * Associative array of cached plural rule types. The key is the language
- * code, the value is an array of plural rule types for that language. For
- * example, $pluralRuleTypes['ar'] = ['zero', 'one', 'two', 'few', 'many'].
- * The index for each rule type matches the index for the rule in
- * $pluralRules, thus allowing correlation between the two. The reason we
- * don't just use the type names as the keys in $pluralRules is because
- * Language::convertPlural applies the rules based on numeric order (or
- * explicit numeric parameter), not based on the name of the rule type. For
- * example, {{plural:count|wordform1|wordform2|wordform3}}, rather than
- * {{plural:count|one=wordform1|two=wordform2|many=wordform3}}.
- */
- private $pluralRuleTypes = null;
-
- private $mergeableKeys = null;
-
- /**
- * Constructor.
- * For constructor parameters, see the documentation in DefaultSettings.php
- * for $wgLocalisationCacheConf.
- *
- * @param array $conf
- * @throws MWException
- */
- function __construct( $conf ) {
- global $wgCacheDirectory;
-
- $this->conf = $conf;
- $storeConf = [];
- if ( !empty( $conf['storeClass'] ) ) {
- $storeClass = $conf['storeClass'];
- } else {
- switch ( $conf['store'] ) {
- case 'files':
- case 'file':
- $storeClass = 'LCStoreCDB';
- break;
- case 'db':
- $storeClass = 'LCStoreDB';
- break;
- case 'array':
- $storeClass = 'LCStoreStaticArray';
- break;
- case 'detect':
- if ( !empty( $conf['storeDirectory'] ) ) {
- $storeClass = 'LCStoreCDB';
- } else {
- $cacheDir = $wgCacheDirectory ?: wfTempDir();
- if ( $cacheDir ) {
- $storeConf['directory'] = $cacheDir;
- $storeClass = 'LCStoreCDB';
- } else {
- $storeClass = 'LCStoreDB';
- }
- }
- break;
- default:
- throw new MWException(
- 'Please set $wgLocalisationCacheConf[\'store\'] to something sensible.' );
- }
- }
-
- wfDebugLog( 'caches', get_class( $this ) . ": using store $storeClass" );
- if ( !empty( $conf['storeDirectory'] ) ) {
- $storeConf['directory'] = $conf['storeDirectory'];
- }
-
- $this->store = new $storeClass( $storeConf );
- foreach ( [ 'manualRecache', 'forceRecache' ] as $var ) {
- if ( isset( $conf[$var] ) ) {
- $this->$var = $conf[$var];
- }
- }
- }
-
- /**
- * Returns true if the given key is mergeable, that is, if it is an associative
- * array which can be merged through a fallback sequence.
- * @param string $key
- * @return bool
- */
- public function isMergeableKey( $key ) {
- if ( $this->mergeableKeys === null ) {
- $this->mergeableKeys = array_flip( array_merge(
- self::$mergeableMapKeys,
- self::$mergeableListKeys,
- self::$mergeableAliasListKeys,
- self::$optionalMergeKeys,
- self::$magicWordKeys
- ) );
- }
-
- return isset( $this->mergeableKeys[$key] );
- }
-
- /**
- * Get a cache item.
- *
- * Warning: this may be slow for split items (messages), since it will
- * need to fetch all of the subitems from the cache individually.
- * @param string $code
- * @param string $key
- * @return mixed
- */
- public function getItem( $code, $key ) {
- if ( !isset( $this->loadedItems[$code][$key] ) ) {
- $this->loadItem( $code, $key );
- }
-
- if ( $key === 'fallback' && isset( $this->shallowFallbacks[$code] ) ) {
- return $this->shallowFallbacks[$code];
- }
-
- return $this->data[$code][$key];
- }
-
- /**
- * Get a subitem, for instance a single message for a given language.
- * @param string $code
- * @param string $key
- * @param string $subkey
- * @return mixed|null
- */
- public function getSubitem( $code, $key, $subkey ) {
- if ( !isset( $this->loadedSubitems[$code][$key][$subkey] ) &&
- !isset( $this->loadedItems[$code][$key] )
- ) {
- $this->loadSubitem( $code, $key, $subkey );
- }
-
- if ( isset( $this->data[$code][$key][$subkey] ) ) {
- return $this->data[$code][$key][$subkey];
- } else {
- return null;
- }
- }
-
- /**
- * Get the list of subitem keys for a given item.
- *
- * This is faster than array_keys($lc->getItem(...)) for the items listed in
- * self::$splitKeys.
- *
- * Will return null if the item is not found, or false if the item is not an
- * array.
- * @param string $code
- * @param string $key
- * @return bool|null|string
- */
- public function getSubitemList( $code, $key ) {
- if ( in_array( $key, self::$splitKeys ) ) {
- return $this->getSubitem( $code, 'list', $key );
- } else {
- $item = $this->getItem( $code, $key );
- if ( is_array( $item ) ) {
- return array_keys( $item );
- } else {
- return false;
- }
- }
- }
-
- /**
- * Load an item into the cache.
- * @param string $code
- * @param string $key
- */
- protected function loadItem( $code, $key ) {
- if ( !isset( $this->initialisedLangs[$code] ) ) {
- $this->initLanguage( $code );
- }
-
- // Check to see if initLanguage() loaded it for us
- if ( isset( $this->loadedItems[$code][$key] ) ) {
- return;
- }
-
- if ( isset( $this->shallowFallbacks[$code] ) ) {
- $this->loadItem( $this->shallowFallbacks[$code], $key );
-
- return;
- }
-
- if ( in_array( $key, self::$splitKeys ) ) {
- $subkeyList = $this->getSubitem( $code, 'list', $key );
- foreach ( $subkeyList as $subkey ) {
- if ( isset( $this->data[$code][$key][$subkey] ) ) {
- continue;
- }
- $this->data[$code][$key][$subkey] = $this->getSubitem( $code, $key, $subkey );
- }
- } else {
- $this->data[$code][$key] = $this->store->get( $code, $key );
- }
-
- $this->loadedItems[$code][$key] = true;
- }
-
- /**
- * Load a subitem into the cache
- * @param string $code
- * @param string $key
- * @param string $subkey
- */
- protected function loadSubitem( $code, $key, $subkey ) {
- if ( !in_array( $key, self::$splitKeys ) ) {
- $this->loadItem( $code, $key );
-
- return;
- }
-
- if ( !isset( $this->initialisedLangs[$code] ) ) {
- $this->initLanguage( $code );
- }
-
- // Check to see if initLanguage() loaded it for us
- if ( isset( $this->loadedItems[$code][$key] ) ||
- isset( $this->loadedSubitems[$code][$key][$subkey] )
- ) {
- return;
- }
-
- if ( isset( $this->shallowFallbacks[$code] ) ) {
- $this->loadSubitem( $this->shallowFallbacks[$code], $key, $subkey );
-
- return;
- }
-
- $value = $this->store->get( $code, "$key:$subkey" );
- $this->data[$code][$key][$subkey] = $value;
- $this->loadedSubitems[$code][$key][$subkey] = true;
- }
-
- /**
- * Returns true if the cache identified by $code is missing or expired.
- *
- * @param string $code
- *
- * @return bool
- */
- public function isExpired( $code ) {
- if ( $this->forceRecache && !isset( $this->recachedLangs[$code] ) ) {
- wfDebug( __METHOD__ . "($code): forced reload\n" );
-
- return true;
- }
-
- $deps = $this->store->get( $code, 'deps' );
- $keys = $this->store->get( $code, 'list' );
- $preload = $this->store->get( $code, 'preload' );
- // Different keys may expire separately for some stores
- if ( $deps === null || $keys === null || $preload === null ) {
- wfDebug( __METHOD__ . "($code): cache missing, need to make one\n" );
-
- return true;
- }
-
- foreach ( $deps as $dep ) {
- // Because we're unserializing stuff from cache, we
- // could receive objects of classes that don't exist
- // anymore (e.g. uninstalled extensions)
- // When this happens, always expire the cache
- if ( !$dep instanceof CacheDependency || $dep->isExpired() ) {
- wfDebug( __METHOD__ . "($code): cache for $code expired due to " .
- get_class( $dep ) . "\n" );
-
- return true;
- }
- }
-
- return false;
- }
-
- /**
- * Initialise a language in this object. Rebuild the cache if necessary.
- * @param string $code
- * @throws MWException
- */
- protected function initLanguage( $code ) {
- if ( isset( $this->initialisedLangs[$code] ) ) {
- return;
- }
-
- $this->initialisedLangs[$code] = true;
-
- # If the code is of the wrong form for a Messages*.php file, do a shallow fallback
- if ( !Language::isValidBuiltInCode( $code ) ) {
- $this->initShallowFallback( $code, 'en' );
-
- return;
- }
-
- # Recache the data if necessary
- if ( !$this->manualRecache && $this->isExpired( $code ) ) {
- if ( Language::isSupportedLanguage( $code ) ) {
- $this->recache( $code );
- } elseif ( $code === 'en' ) {
- throw new MWException( 'MessagesEn.php is missing.' );
- } else {
- $this->initShallowFallback( $code, 'en' );
- }
-
- return;
- }
-
- # Preload some stuff
- $preload = $this->getItem( $code, 'preload' );
- if ( $preload === null ) {
- if ( $this->manualRecache ) {
- // No Messages*.php file. Do shallow fallback to en.
- if ( $code === 'en' ) {
- throw new MWException( 'No localisation cache found for English. ' .
- 'Please run maintenance/rebuildLocalisationCache.php.' );
- }
- $this->initShallowFallback( $code, 'en' );
-
- return;
- } else {
- throw new MWException( 'Invalid or missing localisation cache.' );
- }
- }
- $this->data[$code] = $preload;
- foreach ( $preload as $key => $item ) {
- if ( in_array( $key, self::$splitKeys ) ) {
- foreach ( $item as $subkey => $subitem ) {
- $this->loadedSubitems[$code][$key][$subkey] = true;
- }
- } else {
- $this->loadedItems[$code][$key] = true;
- }
- }
- }
-
- /**
- * Create a fallback from one language to another, without creating a
- * complete persistent cache.
- * @param string $primaryCode
- * @param string $fallbackCode
- */
- public function initShallowFallback( $primaryCode, $fallbackCode ) {
- $this->data[$primaryCode] =& $this->data[$fallbackCode];
- $this->loadedItems[$primaryCode] =& $this->loadedItems[$fallbackCode];
- $this->loadedSubitems[$primaryCode] =& $this->loadedSubitems[$fallbackCode];
- $this->shallowFallbacks[$primaryCode] = $fallbackCode;
- }
-
- /**
- * Read a PHP file containing localisation data.
- * @param string $_fileName
- * @param string $_fileType
- * @throws MWException
- * @return array
- */
- protected function readPHPFile( $_fileName, $_fileType ) {
- // Disable APC caching
- MediaWiki\suppressWarnings();
- $_apcEnabled = ini_set( 'apc.cache_by_default', '0' );
- MediaWiki\restoreWarnings();
-
- include $_fileName;
-
- MediaWiki\suppressWarnings();
- ini_set( 'apc.cache_by_default', $_apcEnabled );
- MediaWiki\restoreWarnings();
-
- if ( $_fileType == 'core' || $_fileType == 'extension' ) {
- $data = compact( self::$allKeys );
- } elseif ( $_fileType == 'aliases' ) {
- $data = compact( 'aliases' );
- } else {
- throw new MWException( __METHOD__ . ": Invalid file type: $_fileType" );
- }
-
- return $data;
- }
-
- /**
- * Read a JSON file containing localisation messages.
- * @param string $fileName Name of file to read
- * @throws MWException If there is a syntax error in the JSON file
- * @return array Array with a 'messages' key, or empty array if the file doesn't exist
- */
- public function readJSONFile( $fileName ) {
-
- if ( !is_readable( $fileName ) ) {
- return [];
- }
-
- $json = file_get_contents( $fileName );
- if ( $json === false ) {
- return [];
- }
-
- $data = FormatJson::decode( $json, true );
- if ( $data === null ) {
-
- throw new MWException( __METHOD__ . ": Invalid JSON file: $fileName" );
- }
-
- // Remove keys starting with '@', they're reserved for metadata and non-message data
- foreach ( $data as $key => $unused ) {
- if ( $key === '' || $key[0] === '@' ) {
- unset( $data[$key] );
- }
- }
-
- // The JSON format only supports messages, none of the other variables, so wrap the data
- return [ 'messages' => $data ];
- }
-
- /**
- * Get the compiled plural rules for a given language from the XML files.
- * @since 1.20
- * @param string $code
- * @return array|null
- */
- public function getCompiledPluralRules( $code ) {
- $rules = $this->getPluralRules( $code );
- if ( $rules === null ) {
- return null;
- }
- try {
- $compiledRules = Evaluator::compile( $rules );
- } catch ( CLDRPluralRuleError $e ) {
- wfDebugLog( 'l10n', $e->getMessage() );
-
- return [];
- }
-
- return $compiledRules;
- }
-
- /**
- * Get the plural rules for a given language from the XML files.
- * Cached.
- * @since 1.20
- * @param string $code
- * @return array|null
- */
- public function getPluralRules( $code ) {
- if ( $this->pluralRules === null ) {
- $this->loadPluralFiles();
- }
- if ( !isset( $this->pluralRules[$code] ) ) {
- return null;
- } else {
- return $this->pluralRules[$code];
- }
- }
-
- /**
- * Get the plural rule types for a given language from the XML files.
- * Cached.
- * @since 1.22
- * @param string $code
- * @return array|null
- */
- public function getPluralRuleTypes( $code ) {
- if ( $this->pluralRuleTypes === null ) {
- $this->loadPluralFiles();
- }
- if ( !isset( $this->pluralRuleTypes[$code] ) ) {
- return null;
- } else {
- return $this->pluralRuleTypes[$code];
- }
- }
-
- /**
- * Load the plural XML files.
- */
- protected function loadPluralFiles() {
- global $IP;
- $cldrPlural = "$IP/languages/data/plurals.xml";
- $mwPlural = "$IP/languages/data/plurals-mediawiki.xml";
- // Load CLDR plural rules
- $this->loadPluralFile( $cldrPlural );
- if ( file_exists( $mwPlural ) ) {
- // Override or extend
- $this->loadPluralFile( $mwPlural );
- }
- }
-
- /**
- * Load a plural XML file with the given filename, compile the relevant
- * rules, and save the compiled rules in a process-local cache.
- *
- * @param string $fileName
- * @throws MWException
- */
- protected function loadPluralFile( $fileName ) {
- // Use file_get_contents instead of DOMDocument::load (T58439)
- $xml = file_get_contents( $fileName );
- if ( !$xml ) {
- throw new MWException( "Unable to read plurals file $fileName" );
- }
- $doc = new DOMDocument;
- $doc->loadXML( $xml );
- $rulesets = $doc->getElementsByTagName( "pluralRules" );
- foreach ( $rulesets as $ruleset ) {
- $codes = $ruleset->getAttribute( 'locales' );
- $rules = [];
- $ruleTypes = [];
- $ruleElements = $ruleset->getElementsByTagName( "pluralRule" );
- foreach ( $ruleElements as $elt ) {
- $ruleType = $elt->getAttribute( 'count' );
- if ( $ruleType === 'other' ) {
- // Don't record "other" rules, which have an empty condition
- continue;
- }
- $rules[] = $elt->nodeValue;
- $ruleTypes[] = $ruleType;
- }
- foreach ( explode( ' ', $codes ) as $code ) {
- $this->pluralRules[$code] = $rules;
- $this->pluralRuleTypes[$code] = $ruleTypes;
- }
- }
- }
-
- /**
- * Read the data from the source files for a given language, and register
- * the relevant dependencies in the $deps array. If the localisation
- * exists, the data array is returned, otherwise false is returned.
- *
- * @param string $code
- * @param array $deps
- * @return array
- */
- protected function readSourceFilesAndRegisterDeps( $code, &$deps ) {
- global $IP;
-
- // This reads in the PHP i18n file with non-messages l10n data
- $fileName = Language::getMessagesFileName( $code );
- if ( !file_exists( $fileName ) ) {
- $data = [];
- } else {
- $deps[] = new FileDependency( $fileName );
- $data = $this->readPHPFile( $fileName, 'core' );
- }
-
- # Load CLDR plural rules for JavaScript
- $data['pluralRules'] = $this->getPluralRules( $code );
- # And for PHP
- $data['compiledPluralRules'] = $this->getCompiledPluralRules( $code );
- # Load plural rule types
- $data['pluralRuleTypes'] = $this->getPluralRuleTypes( $code );
-
- $deps['plurals'] = new FileDependency( "$IP/languages/data/plurals.xml" );
- $deps['plurals-mw'] = new FileDependency( "$IP/languages/data/plurals-mediawiki.xml" );
-
- return $data;
- }
-
- /**
- * Merge two localisation values, a primary and a fallback, overwriting the
- * primary value in place.
- * @param string $key
- * @param mixed $value
- * @param mixed $fallbackValue
- */
- protected function mergeItem( $key, &$value, $fallbackValue ) {
- if ( !is_null( $value ) ) {
- if ( !is_null( $fallbackValue ) ) {
- if ( in_array( $key, self::$mergeableMapKeys ) ) {
- $value = $value + $fallbackValue;
- } elseif ( in_array( $key, self::$mergeableListKeys ) ) {
- $value = array_unique( array_merge( $fallbackValue, $value ) );
- } elseif ( in_array( $key, self::$mergeableAliasListKeys ) ) {
- $value = array_merge_recursive( $value, $fallbackValue );
- } elseif ( in_array( $key, self::$optionalMergeKeys ) ) {
- if ( !empty( $value['inherit'] ) ) {
- $value = array_merge( $fallbackValue, $value );
- }
-
- if ( isset( $value['inherit'] ) ) {
- unset( $value['inherit'] );
- }
- } elseif ( in_array( $key, self::$magicWordKeys ) ) {
- $this->mergeMagicWords( $value, $fallbackValue );
- }
- }
- } else {
- $value = $fallbackValue;
- }
- }
-
- /**
- * @param mixed $value
- * @param mixed $fallbackValue
- */
- protected function mergeMagicWords( &$value, $fallbackValue ) {
- foreach ( $fallbackValue as $magicName => $fallbackInfo ) {
- if ( !isset( $value[$magicName] ) ) {
- $value[$magicName] = $fallbackInfo;
- } else {
- $oldSynonyms = array_slice( $fallbackInfo, 1 );
- $newSynonyms = array_slice( $value[$magicName], 1 );
- $synonyms = array_values( array_unique( array_merge(
- $newSynonyms, $oldSynonyms ) ) );
- $value[$magicName] = array_merge( [ $fallbackInfo[0] ], $synonyms );
- }
- }
- }
-
- /**
- * Given an array mapping language code to localisation value, such as is
- * found in extension *.i18n.php files, iterate through a fallback sequence
- * to merge the given data with an existing primary value.
- *
- * Returns true if any data from the extension array was used, false
- * otherwise.
- * @param array $codeSequence
- * @param string $key
- * @param mixed $value
- * @param mixed $fallbackValue
- * @return bool
- */
- protected function mergeExtensionItem( $codeSequence, $key, &$value, $fallbackValue ) {
- $used = false;
- foreach ( $codeSequence as $code ) {
- if ( isset( $fallbackValue[$code] ) ) {
- $this->mergeItem( $key, $value, $fallbackValue[$code] );
- $used = true;
- }
- }
-
- return $used;
- }
-
- /**
- * Gets the combined list of messages dirs from
- * core and extensions
- *
- * @since 1.25
- * @return array
- */
- public function getMessagesDirs() {
- global $wgMessagesDirs, $IP;
- return [
- 'core' => "$IP/languages/i18n",
- 'api' => "$IP/includes/api/i18n",
- 'oojs-ui' => "$IP/resources/lib/oojs-ui/i18n",
- ] + $wgMessagesDirs;
- }
-
- /**
- * Load localisation data for a given language for both core and extensions
- * and save it to the persistent cache store and the process cache
- * @param string $code
- * @throws MWException
- */
- public function recache( $code ) {
- global $wgExtensionMessagesFiles;
-
- if ( !$code ) {
- throw new MWException( "Invalid language code requested" );
- }
- $this->recachedLangs[$code] = true;
-
- # Initial values
- $initialData = array_fill_keys( self::$allKeys, null );
- $coreData = $initialData;
- $deps = [];
-
- # Load the primary localisation from the source file
- $data = $this->readSourceFilesAndRegisterDeps( $code, $deps );
- if ( $data === false ) {
- wfDebug( __METHOD__ . ": no localisation file for $code, using fallback to en\n" );
- $coreData['fallback'] = 'en';
- } else {
- wfDebug( __METHOD__ . ": got localisation for $code from source\n" );
-
- # Merge primary localisation
- foreach ( $data as $key => $value ) {
- $this->mergeItem( $key, $coreData[$key], $value );
- }
- }
-
- # Fill in the fallback if it's not there already
- if ( is_null( $coreData['fallback'] ) ) {
- $coreData['fallback'] = $code === 'en' ? false : 'en';
- }
- if ( $coreData['fallback'] === false ) {
- $coreData['fallbackSequence'] = [];
- } else {
- $coreData['fallbackSequence'] = array_map( 'trim', explode( ',', $coreData['fallback'] ) );
- $len = count( $coreData['fallbackSequence'] );
-
- # Ensure that the sequence ends at en
- if ( $coreData['fallbackSequence'][$len - 1] !== 'en' ) {
- $coreData['fallbackSequence'][] = 'en';
- }
- }
-
- $codeSequence = array_merge( [ $code ], $coreData['fallbackSequence'] );
- $messageDirs = $this->getMessagesDirs();
-
- # Load non-JSON localisation data for extensions
- $extensionData = array_fill_keys( $codeSequence, $initialData );
- foreach ( $wgExtensionMessagesFiles as $extension => $fileName ) {
- if ( isset( $messageDirs[$extension] ) ) {
- # This extension has JSON message data; skip the PHP shim
- continue;
- }
-
- $data = $this->readPHPFile( $fileName, 'extension' );
- $used = false;
-
- foreach ( $data as $key => $item ) {
- foreach ( $codeSequence as $csCode ) {
- if ( isset( $item[$csCode] ) ) {
- $this->mergeItem( $key, $extensionData[$csCode][$key], $item[$csCode] );
- $used = true;
- }
- }
- }
-
- if ( $used ) {
- $deps[] = new FileDependency( $fileName );
- }
- }
-
- # Load the localisation data for each fallback, then merge it into the full array
- $allData = $initialData;
- foreach ( $codeSequence as $csCode ) {
- $csData = $initialData;
-
- # Load core messages and the extension localisations.
- foreach ( $messageDirs as $dirs ) {
- foreach ( (array)$dirs as $dir ) {
- $fileName = "$dir/$csCode.json";
- $data = $this->readJSONFile( $fileName );
-
- foreach ( $data as $key => $item ) {
- $this->mergeItem( $key, $csData[$key], $item );
- }
-
- $deps[] = new FileDependency( $fileName );
- }
- }
-
- # Merge non-JSON extension data
- if ( isset( $extensionData[$csCode] ) ) {
- foreach ( $extensionData[$csCode] as $key => $item ) {
- $this->mergeItem( $key, $csData[$key], $item );
- }
- }
-
- if ( $csCode === $code ) {
- # Merge core data into extension data
- foreach ( $coreData as $key => $item ) {
- $this->mergeItem( $key, $csData[$key], $item );
- }
- } else {
- # Load the secondary localisation from the source file to
- # avoid infinite cycles on cyclic fallbacks
- $fbData = $this->readSourceFilesAndRegisterDeps( $csCode, $deps );
- if ( $fbData !== false ) {
- # Only merge the keys that make sense to merge
- foreach ( self::$allKeys as $key ) {
- if ( !isset( $fbData[$key] ) ) {
- continue;
- }
-
- if ( is_null( $coreData[$key] ) || $this->isMergeableKey( $key ) ) {
- $this->mergeItem( $key, $csData[$key], $fbData[$key] );
- }
- }
- }
- }
-
- # Allow extensions an opportunity to adjust the data for this
- # fallback
- Hooks::run( 'LocalisationCacheRecacheFallback', [ $this, $csCode, &$csData ] );
-
- # Merge the data for this fallback into the final array
- if ( $csCode === $code ) {
- $allData = $csData;
- } else {
- foreach ( self::$allKeys as $key ) {
- if ( !isset( $csData[$key] ) ) {
- continue;
- }
-
- if ( is_null( $allData[$key] ) || $this->isMergeableKey( $key ) ) {
- $this->mergeItem( $key, $allData[$key], $csData[$key] );
- }
- }
- }
- }
-
- # Add cache dependencies for any referenced globals
- $deps['wgExtensionMessagesFiles'] = new GlobalDependency( 'wgExtensionMessagesFiles' );
- // $wgMessagesDirs is used in LocalisationCache::getMessagesDirs()
- $deps['wgMessagesDirs'] = new GlobalDependency( 'wgMessagesDirs' );
- $deps['version'] = new ConstantDependency( 'LocalisationCache::VERSION' );
-
- # Add dependencies to the cache entry
- $allData['deps'] = $deps;
-
- # Replace spaces with underscores in namespace names
- $allData['namespaceNames'] = str_replace( ' ', '_', $allData['namespaceNames'] );
-
- # And do the same for special page aliases. $page is an array.
- foreach ( $allData['specialPageAliases'] as &$page ) {
- $page = str_replace( ' ', '_', $page );
- }
- # Decouple the reference to prevent accidental damage
- unset( $page );
-
- # If there were no plural rules, return an empty array
- if ( $allData['pluralRules'] === null ) {
- $allData['pluralRules'] = [];
- }
- if ( $allData['compiledPluralRules'] === null ) {
- $allData['compiledPluralRules'] = [];
- }
- # If there were no plural rule types, return an empty array
- if ( $allData['pluralRuleTypes'] === null ) {
- $allData['pluralRuleTypes'] = [];
- }
-
- # Set the list keys
- $allData['list'] = [];
- foreach ( self::$splitKeys as $key ) {
- $allData['list'][$key] = array_keys( $allData[$key] );
- }
- # Run hooks
- $purgeBlobs = true;
- Hooks::run( 'LocalisationCacheRecache', [ $this, $code, &$allData, &$purgeBlobs ] );
-
- if ( is_null( $allData['namespaceNames'] ) ) {
- throw new MWException( __METHOD__ . ': Localisation data failed sanity check! ' .
- 'Check that your languages/messages/MessagesEn.php file is intact.' );
- }
-
- # Set the preload key
- $allData['preload'] = $this->buildPreload( $allData );
-
- # Save to the process cache and register the items loaded
- $this->data[$code] = $allData;
- foreach ( $allData as $key => $item ) {
- $this->loadedItems[$code][$key] = true;
- }
-
- # Save to the persistent cache
- $this->store->startWrite( $code );
- foreach ( $allData as $key => $value ) {
- if ( in_array( $key, self::$splitKeys ) ) {
- foreach ( $value as $subkey => $subvalue ) {
- $this->store->set( "$key:$subkey", $subvalue );
- }
- } else {
- $this->store->set( $key, $value );
- }
- }
- $this->store->finishWrite();
-
- # Clear out the MessageBlobStore
- # HACK: If using a null (i.e. disabled) storage backend, we
- # can't write to the MessageBlobStore either
- if ( $purgeBlobs && !$this->store instanceof LCStoreNull ) {
- $blobStore = new MessageBlobStore();
- $blobStore->clear();
- }
-
- }
-
- /**
- * Build the preload item from the given pre-cache data.
- *
- * The preload item will be loaded automatically, improving performance
- * for the commonly-requested items it contains.
- * @param array $data
- * @return array
- */
- protected function buildPreload( $data ) {
- $preload = [ 'messages' => [] ];
- foreach ( self::$preloadedKeys as $key ) {
- $preload[$key] = $data[$key];
- }
-
- foreach ( $data['preloadedMessages'] as $subkey ) {
- if ( isset( $data['messages'][$subkey] ) ) {
- $subitem = $data['messages'][$subkey];
- } else {
- $subitem = null;
- }
- $preload['messages'][$subkey] = $subitem;
- }
-
- return $preload;
- }
-
- /**
- * Unload the data for a given language from the object cache.
- * Reduces memory usage.
- * @param string $code
- */
- public function unload( $code ) {
- unset( $this->data[$code] );
- unset( $this->loadedItems[$code] );
- unset( $this->loadedSubitems[$code] );
- unset( $this->initialisedLangs[$code] );
- unset( $this->shallowFallbacks[$code] );
-
- foreach ( $this->shallowFallbacks as $shallowCode => $fbCode ) {
- if ( $fbCode === $code ) {
- $this->unload( $shallowCode );
- }
- }
- }
-
- /**
- * Unload all data
- */
- public function unloadAll() {
- foreach ( $this->initialisedLangs as $lang => $unused ) {
- $this->unload( $lang );
- }
- }
-
- /**
- * Disable the storage backend
- */
- public function disableBackend() {
- $this->store = new LCStoreNull;
- $this->manualRecache = false;
- }
-}
-
-/**
- * Interface for the persistence layer of LocalisationCache.
- *
- * The persistence layer is two-level hierarchical cache. The first level
- * is the language, the second level is the item or subitem.
- *
- * Since the data for a whole language is rebuilt in one operation, it needs
- * to have a fast and atomic method for deleting or replacing all of the
- * current data for a given language. The interface reflects this bulk update
- * operation. Callers writing to the cache must first call startWrite(), then
- * will call set() a couple of thousand times, then will call finishWrite()
- * to commit the operation. When finishWrite() is called, the cache is
- * expected to delete all data previously stored for that language.
- *
- * The values stored are PHP variables suitable for serialize(). Implementations
- * of LCStore are responsible for serializing and unserializing.
- */
-interface LCStore {
- /**
- * Get a value.
- * @param string $code Language code
- * @param string $key Cache key
- */
- function get( $code, $key );
-
- /**
- * Start a write transaction.
- * @param string $code Language code
- */
- function startWrite( $code );
-
- /**
- * Finish a write transaction.
- */
- function finishWrite();
-
- /**
- * Set a key to a given value. startWrite() must be called before this
- * is called, and finishWrite() must be called afterwards.
- * @param string $key
- * @param mixed $value
- */
- function set( $key, $value );
-}
-
-/**
- * LCStore implementation which uses the standard DB functions to store data.
- * This will work on any MediaWiki installation.
- */
-class LCStoreDB implements LCStore {
- /** @var string */
- private $currentLang;
- /** @var bool */
- private $writesDone = false;
- /** @var IDatabase */
- private $dbw;
- /** @var array */
- private $batch = [];
- /** @var bool */
- private $readOnly = false;
-
- public function get( $code, $key ) {
- if ( $this->writesDone && $this->dbw ) {
- $db = $this->dbw; // see the changes in finishWrite()
- } else {
- $db = wfGetDB( DB_SLAVE );
- }
-
- $value = $db->selectField(
- 'l10n_cache',
- 'lc_value',
- [ 'lc_lang' => $code, 'lc_key' => $key ],
- __METHOD__
- );
-
- return ( $value !== false ) ? unserialize( $db->decodeBlob( $value ) ) : null;
- }
-
- public function startWrite( $code ) {
- if ( $this->readOnly ) {
- return;
- } elseif ( !$code ) {
- throw new MWException( __METHOD__ . ": Invalid language \"$code\"" );
- }
-
- $this->dbw = wfGetDB( DB_MASTER );
- $this->readOnly = $this->dbw->isReadOnly();
-
- $this->currentLang = $code;
- $this->batch = [];
- }
-
- public function finishWrite() {
- if ( $this->readOnly ) {
- return;
- } elseif ( is_null( $this->currentLang ) ) {
- throw new MWException( __CLASS__ . ': must call startWrite() before finishWrite()' );
- }
-
- $this->dbw->startAtomic( __METHOD__ );
- try {
- $this->dbw->delete(
- 'l10n_cache',
- [ 'lc_lang' => $this->currentLang ],
- __METHOD__
- );
- foreach ( array_chunk( $this->batch, 500 ) as $rows ) {
- $this->dbw->insert( 'l10n_cache', $rows, __METHOD__ );
- }
- $this->writesDone = true;
- } catch ( DBQueryError $e ) {
- if ( $this->dbw->wasReadOnlyError() ) {
- $this->readOnly = true; // just avoid site down time
- } else {
- throw $e;
- }
- }
- $this->dbw->endAtomic( __METHOD__ );
-
- $this->currentLang = null;
- $this->batch = [];
- }
-
- public function set( $key, $value ) {
- if ( $this->readOnly ) {
- return;
- } elseif ( is_null( $this->currentLang ) ) {
- throw new MWException( __CLASS__ . ': must call startWrite() before set()' );
- }
-
- $this->batch[] = [
- 'lc_lang' => $this->currentLang,
- 'lc_key' => $key,
- 'lc_value' => $this->dbw->encodeBlob( serialize( $value ) )
- ];
- }
-}
-
-/**
- * LCStore implementation which stores data as a collection of CDB files in the
- * directory given by $wgCacheDirectory. If $wgCacheDirectory is not set, this
- * will throw an exception.
- *
- * Profiling indicates that on Linux, this implementation outperforms MySQL if
- * the directory is on a local filesystem and there is ample kernel cache
- * space. The performance advantage is greater when the DBA extension is
- * available than it is with the PHP port.
- *
- * See Cdb.php and http://cr.yp.to/cdb.html
- */
-class LCStoreCDB implements LCStore {
- /** @var CdbReader[] */
- private $readers;
-
- /** @var CdbWriter */
- private $writer;
-
- /** @var string Current language code */
- private $currentLang;
-
- /** @var bool|string Cache directory. False if not set */
- private $directory;
-
- function __construct( $conf = [] ) {
- global $wgCacheDirectory;
-
- if ( isset( $conf['directory'] ) ) {
- $this->directory = $conf['directory'];
- } else {
- $this->directory = $wgCacheDirectory;
- }
- }
-
- public function get( $code, $key ) {
- if ( !isset( $this->readers[$code] ) ) {
- $fileName = $this->getFileName( $code );
-
- $this->readers[$code] = false;
- if ( file_exists( $fileName ) ) {
- try {
- $this->readers[$code] = CdbReader::open( $fileName );
- } catch ( CdbException $e ) {
- wfDebug( __METHOD__ . ": unable to open cdb file for reading\n" );
- }
- }
- }
-
- if ( !$this->readers[$code] ) {
- return null;
- } else {
- $value = false;
- try {
- $value = $this->readers[$code]->get( $key );
- } catch ( CdbException $e ) {
- wfDebug( __METHOD__ . ": CdbException caught, error message was "
- . $e->getMessage() . "\n" );
- }
- if ( $value === false ) {
- return null;
- }
-
- return unserialize( $value );
- }
- }
-
- public function startWrite( $code ) {
- if ( !file_exists( $this->directory ) ) {
- if ( !wfMkdirParents( $this->directory, null, __METHOD__ ) ) {
- throw new MWException( "Unable to create the localisation store " .
- "directory \"{$this->directory}\"" );
- }
- }
-
- // Close reader to stop permission errors on write
- if ( !empty( $this->readers[$code] ) ) {
- $this->readers[$code]->close();
- }
-
- try {
- $this->writer = CdbWriter::open( $this->getFileName( $code ) );
- } catch ( CdbException $e ) {
- throw new MWException( $e->getMessage() );
- }
- $this->currentLang = $code;
- }
-
- public function finishWrite() {
- // Close the writer
- try {
- $this->writer->close();
- } catch ( CdbException $e ) {
- throw new MWException( $e->getMessage() );
- }
- $this->writer = null;
- unset( $this->readers[$this->currentLang] );
- $this->currentLang = null;
- }
-
- public function set( $key, $value ) {
- if ( is_null( $this->writer ) ) {
- throw new MWException( __CLASS__ . ': must call startWrite() before calling set()' );
- }
- try {
- $this->writer->set( $key, serialize( $value ) );
- } catch ( CdbException $e ) {
- throw new MWException( $e->getMessage() );
- }
- }
-
- protected function getFileName( $code ) {
- if ( strval( $code ) === '' || strpos( $code, '/' ) !== false ) {
- throw new MWException( __METHOD__ . ": Invalid language \"$code\"" );
- }
-
- return "{$this->directory}/l10n_cache-$code.cdb";
- }
-}
-
-/**
- * Null store backend, used to avoid DB errors during install
- */
-class LCStoreNull implements LCStore {
- public function get( $code, $key ) {
- return null;
- }
-
- public function startWrite( $code ) {
- }
-
- public function finishWrite() {
- }
-
- public function set( $key, $value ) {
- }
-}
-
-/**
- * A localisation cache optimised for loading large amounts of data for many
- * languages. Used by rebuildLocalisationCache.php.
- */
-class LocalisationCacheBulkLoad extends LocalisationCache {
- /**
- * A cache of the contents of data files.
- * Core files are serialized to avoid using ~1GB of RAM during a recache.
- */
- private $fileCache = [];
-
- /**
- * Most recently used languages. Uses the linked-list aspect of PHP hashtables
- * to keep the most recently used language codes at the end of the array, and
- * the language codes that are ready to be deleted at the beginning.
- */
- private $mruLangs = [];
-
- /**
- * Maximum number of languages that may be loaded into $this->data
- */
- private $maxLoadedLangs = 10;
-
- /**
- * @param string $fileName
- * @param string $fileType
- * @return array|mixed
- */
- protected function readPHPFile( $fileName, $fileType ) {
- $serialize = $fileType === 'core';
- if ( !isset( $this->fileCache[$fileName][$fileType] ) ) {
- $data = parent::readPHPFile( $fileName, $fileType );
-
- if ( $serialize ) {
- $encData = serialize( $data );
- } else {
- $encData = $data;
- }
-
- $this->fileCache[$fileName][$fileType] = $encData;
-
- return $data;
- } elseif ( $serialize ) {
- return unserialize( $this->fileCache[$fileName][$fileType] );
- } else {
- return $this->fileCache[$fileName][$fileType];
- }
- }
-
- /**
- * @param string $code
- * @param string $key
- * @return mixed
- */
- public function getItem( $code, $key ) {
- unset( $this->mruLangs[$code] );
- $this->mruLangs[$code] = true;
-
- return parent::getItem( $code, $key );
- }
-
- /**
- * @param string $code
- * @param string $key
- * @param string $subkey
- * @return mixed
- */
- public function getSubitem( $code, $key, $subkey ) {
- unset( $this->mruLangs[$code] );
- $this->mruLangs[$code] = true;
-
- return parent::getSubitem( $code, $key, $subkey );
- }
-
- /**
- * @param string $code
- */
- public function recache( $code ) {
- parent::recache( $code );
- unset( $this->mruLangs[$code] );
- $this->mruLangs[$code] = true;
- $this->trimCache();
- }
-
- /**
- * @param string $code
- */
- public function unload( $code ) {
- unset( $this->mruLangs[$code] );
- parent::unload( $code );
- }
-
- /**
- * Unload cached languages until there are less than $this->maxLoadedLangs
- */
- protected function trimCache() {
- while ( count( $this->data ) > $this->maxLoadedLangs && count( $this->mruLangs ) ) {
- reset( $this->mruLangs );
- $code = key( $this->mruLangs );
- wfDebug( __METHOD__ . ": unloading $code\n" );
- $this->unload( $code );
- }
- }
-}
diff --git a/includes/cache/MessageCache.php b/includes/cache/MessageCache.php
index b26dc8da2f..62fab5fc50 100644
--- a/includes/cache/MessageCache.php
+++ b/includes/cache/MessageCache.php
@@ -51,7 +51,7 @@ class MessageCache {
protected $mCache;
/**
- * Should mean that database cannot be used, but check
+ * Should mean that database cannot be used, but check
* @var bool $mDisable
*/
protected $mDisable;
@@ -355,6 +355,7 @@ class MessageCache {
$where[] = 'loading FAILED - cache is disabled';
$this->mDisable = true;
$this->mCache = false;
+ wfDebugLog( 'MessageCacheError', __METHOD__ . ": Failed to load $code\n" );
# This used to throw an exception, but that led to nasty side effects like
# the whole wiki being instantly down if the memcached server died
} else {
@@ -818,84 +819,96 @@ class MessageCache {
* @return string|bool The message, or false if not found
*/
protected function getMessageFromFallbackChain( $lang, $lckey, $useDB ) {
- global $wgLanguageCode, $wgContLang;
-
- $uckey = $wgContLang->ucfirst( $lckey );
- $langcode = $lang->getCode();
- $message = false;
+ global $wgContLang;
- // First try the requested language.
- if ( $useDB ) {
- if ( $langcode === $wgLanguageCode ) {
- // Messages created in the content language will not have the /lang extension
- $message = $this->getMsgFromNamespace( $uckey, $langcode );
- } else {
- $message = $this->getMsgFromNamespace( "$uckey/$langcode", $langcode );
- }
- }
+ $alreadyTried = [];
+ // First try the requested language.
+ $message = $this->getMessageForLang( $lang, $lckey, $useDB, $alreadyTried );
if ( $message !== false ) {
return $message;
}
- // Check the CDB cache
- $message = $lang->getMessage( $lckey );
- if ( $message !== null ) {
- return $message;
- }
+ // Now try checking the site language.
+ $message = $this->getMessageForLang( $wgContLang, $lckey, $useDB, $alreadyTried );
+ return $message;
+ }
- list( $fallbackChain, $siteFallbackChain ) =
- Language::getFallbacksIncludingSiteLanguage( $langcode );
+ /**
+ * Given a language, try and fetch messages from that language and its fallbacks.
+ *
+ * @see MessageCache::get
+ * @param Language|StubObject $lang Preferred language
+ * @param string $lckey Lowercase key for the message (as for localisation cache)
+ * @param bool $useDB Whether to include messages from the wiki database
+ * @param bool[] $alreadyTried Contains true for each language that has been tried already
+ * @return string|bool The message, or false if not found
+ */
+ private function getMessageForLang( $lang, $lckey, $useDB, &$alreadyTried ) {
+ global $wgContLang;
+ $langcode = $lang->getCode();
- // Next try checking the database for all of the fallback languages of the requested language.
+ // Try checking the database for the requested language
if ( $useDB ) {
- foreach ( $fallbackChain as $code ) {
- if ( $code === $wgLanguageCode ) {
- // Messages created in the content language will not have the /lang extension
- $message = $this->getMsgFromNamespace( $uckey, $code );
- } else {
- $message = $this->getMsgFromNamespace( "$uckey/$code", $code );
- }
+ $uckey = $wgContLang->ucfirst( $lckey );
+
+ if ( !isset( $alreadyTried[ $langcode ] ) ) {
+ $message = $this->getMsgFromNamespace(
+ $this->getMessagePageName( $langcode, $uckey ),
+ $langcode
+ );
if ( $message !== false ) {
- // Found the message.
return $message;
}
+ $alreadyTried[ $langcode ] = true;
}
}
- // Now try checking the site language.
- if ( $useDB ) {
- $message = $this->getMsgFromNamespace( $uckey, $wgLanguageCode );
- if ( $message !== false ) {
- return $message;
- }
- }
-
- $message = $wgContLang->getMessage( $lckey );
+ // Check the CDB cache
+ $message = $lang->getMessage( $lckey );
if ( $message !== null ) {
return $message;
}
- // Finally try the DB for the site language's fallbacks.
+ // Try checking the database for all of the fallback languages
if ( $useDB ) {
- foreach ( $siteFallbackChain as $code ) {
- $message = $this->getMsgFromNamespace( "$uckey/$code", $code );
- if ( $message === false && $code === $wgLanguageCode ) {
- // Messages created in the content language will not have the /lang extension
- $message = $this->getMsgFromNamespace( $uckey, $code );
+ $fallbackChain = Language::getFallbacksFor( $langcode );
+
+ foreach ( $fallbackChain as $code ) {
+ if ( isset( $alreadyTried[ $code ] ) ) {
+ continue;
}
+ $message = $this->getMsgFromNamespace( $this->getMessagePageName( $code, $uckey ), $code );
+
if ( $message !== false ) {
- // Found the message.
return $message;
}
+ $alreadyTried[ $code ] = true;
}
}
return false;
}
+ /**
+ * Get the message page name for a given language
+ *
+ * @param string $langcode
+ * @param string $uckey Uppercase key for the message
+ * @return string The page name
+ */
+ private function getMessagePageName( $langcode, $uckey ) {
+ global $wgLanguageCode;
+ if ( $langcode === $wgLanguageCode ) {
+ // Messages created in the content language will not have the /lang extension
+ return $uckey;
+ } else {
+ return "$uckey/$langcode";
+ }
+ }
+
/**
* Get a message from the MediaWiki namespace, with caching. The key must
* first be converted to two-part lang/msg form if necessary.
@@ -1101,6 +1114,22 @@ class MessageCache {
$this->mDisable = false;
}
+ /**
+ * Whether DB/cache usage is disabled for determining messages
+ *
+ * If so, this typically indicates either:
+ * - a) load() failed to find a cached copy nor query the DB
+ * - b) we are in a special context or error mode that cannot use the DB
+ * If the DB is ignored, any derived HTML output or cached objects may be wrong.
+ * To avoid long-term cache pollution, TTLs can be adjusted accordingly.
+ *
+ * @return bool
+ * @since 1.27
+ */
+ public function isDisabled() {
+ return $this->mDisable;
+ }
+
/**
* Clear all stored messages. Mainly used after a mass rebuild.
*/
diff --git a/includes/cache/localisation/LCStore.php b/includes/cache/localisation/LCStore.php
new file mode 100644
index 0000000000..cb1e261256
--- /dev/null
+++ b/includes/cache/localisation/LCStore.php
@@ -0,0 +1,66 @@
+directory = $conf['directory'];
+ } else {
+ $this->directory = $wgCacheDirectory;
+ }
+ }
+
+ public function get( $code, $key ) {
+ if ( !isset( $this->readers[$code] ) ) {
+ $fileName = $this->getFileName( $code );
+
+ $this->readers[$code] = false;
+ if ( file_exists( $fileName ) ) {
+ try {
+ $this->readers[$code] = Reader::open( $fileName );
+ } catch ( Exception $e ) {
+ wfDebug( __METHOD__ . ": unable to open cdb file for reading\n" );
+ }
+ }
+ }
+
+ if ( !$this->readers[$code] ) {
+ return null;
+ } else {
+ $value = false;
+ try {
+ $value = $this->readers[$code]->get( $key );
+ } catch ( Exception $e ) {
+ wfDebug( __METHOD__ . ": \Cdb\Exception caught, error message was "
+ . $e->getMessage() . "\n" );
+ }
+ if ( $value === false ) {
+ return null;
+ }
+
+ return unserialize( $value );
+ }
+ }
+
+ public function startWrite( $code ) {
+ if ( !file_exists( $this->directory ) ) {
+ if ( !wfMkdirParents( $this->directory, null, __METHOD__ ) ) {
+ throw new MWException( "Unable to create the localisation store " .
+ "directory \"{$this->directory}\"" );
+ }
+ }
+
+ // Close reader to stop permission errors on write
+ if ( !empty( $this->readers[$code] ) ) {
+ $this->readers[$code]->close();
+ }
+
+ try {
+ $this->writer = Writer::open( $this->getFileName( $code ) );
+ } catch ( Exception $e ) {
+ throw new MWException( $e->getMessage() );
+ }
+ $this->currentLang = $code;
+ }
+
+ public function finishWrite() {
+ // Close the writer
+ try {
+ $this->writer->close();
+ } catch ( Exception $e ) {
+ throw new MWException( $e->getMessage() );
+ }
+ $this->writer = null;
+ unset( $this->readers[$this->currentLang] );
+ $this->currentLang = null;
+ }
+
+ public function set( $key, $value ) {
+ if ( is_null( $this->writer ) ) {
+ throw new MWException( __CLASS__ . ': must call startWrite() before calling set()' );
+ }
+ try {
+ $this->writer->set( $key, serialize( $value ) );
+ } catch ( Exception $e ) {
+ throw new MWException( $e->getMessage() );
+ }
+ }
+
+ protected function getFileName( $code ) {
+ if ( strval( $code ) === '' || strpos( $code, '/' ) !== false ) {
+ throw new MWException( __METHOD__ . ": Invalid language \"$code\"" );
+ }
+
+ return "{$this->directory}/l10n_cache-$code.cdb";
+ }
+
+}
diff --git a/includes/cache/localisation/LCStoreDB.php b/includes/cache/localisation/LCStoreDB.php
new file mode 100644
index 0000000000..c3501782b4
--- /dev/null
+++ b/includes/cache/localisation/LCStoreDB.php
@@ -0,0 +1,114 @@
+writesDone && $this->dbw ) {
+ $db = $this->dbw; // see the changes in finishWrite()
+ } else {
+ $db = wfGetDB( DB_SLAVE );
+ }
+
+ $value = $db->selectField(
+ 'l10n_cache',
+ 'lc_value',
+ [ 'lc_lang' => $code, 'lc_key' => $key ],
+ __METHOD__
+ );
+
+ return ( $value !== false ) ? unserialize( $db->decodeBlob( $value ) ) : null;
+ }
+
+ public function startWrite( $code ) {
+ if ( $this->readOnly ) {
+ return;
+ } elseif ( !$code ) {
+ throw new MWException( __METHOD__ . ": Invalid language \"$code\"" );
+ }
+
+ $this->dbw = wfGetDB( DB_MASTER );
+ $this->readOnly = $this->dbw->isReadOnly();
+
+ $this->currentLang = $code;
+ $this->batch = [];
+ }
+
+ public function finishWrite() {
+ if ( $this->readOnly ) {
+ return;
+ } elseif ( is_null( $this->currentLang ) ) {
+ throw new MWException( __CLASS__ . ': must call startWrite() before finishWrite()' );
+ }
+
+ $this->dbw->startAtomic( __METHOD__ );
+ try {
+ $this->dbw->delete(
+ 'l10n_cache',
+ [ 'lc_lang' => $this->currentLang ],
+ __METHOD__
+ );
+ foreach ( array_chunk( $this->batch, 500 ) as $rows ) {
+ $this->dbw->insert( 'l10n_cache', $rows, __METHOD__ );
+ }
+ $this->writesDone = true;
+ } catch ( DBQueryError $e ) {
+ if ( $this->dbw->wasReadOnlyError() ) {
+ $this->readOnly = true; // just avoid site down time
+ } else {
+ throw $e;
+ }
+ }
+ $this->dbw->endAtomic( __METHOD__ );
+
+ $this->currentLang = null;
+ $this->batch = [];
+ }
+
+ public function set( $key, $value ) {
+ if ( $this->readOnly ) {
+ return;
+ } elseif ( is_null( $this->currentLang ) ) {
+ throw new MWException( __CLASS__ . ': must call startWrite() before set()' );
+ }
+
+ $this->batch[] = [
+ 'lc_lang' => $this->currentLang,
+ 'lc_key' => $key,
+ 'lc_value' => $this->dbw->encodeBlob( serialize( $value ) )
+ ];
+ }
+
+}
diff --git a/includes/cache/localisation/LCStoreNull.php b/includes/cache/localisation/LCStoreNull.php
new file mode 100644
index 0000000000..62f88ebf2d
--- /dev/null
+++ b/includes/cache/localisation/LCStoreNull.php
@@ -0,0 +1,39 @@
+directory = $conf['directory'];
+ } else {
+ $this->directory = $wgCacheDirectory;
+ }
+ }
+
+ public function startWrite( $code ) {
+ $this->currentLang = $code;
+ $this->fname = $this->directory . '/' . $code . '.l10n.php';
+ $this->data[$code] = [];
+ if ( file_exists( $this->fname ) ) {
+ $this->data[$code] = require $this->fname;
+ }
+ }
+
+ public function set( $key, $value ) {
+ $this->data[$this->currentLang][$key] = self::encode( $value );
+ }
+
+ /**
+ * Encodes a value into an array format
+ *
+ * @param mixed $value
+ * @return array
+ * @throws RuntimeException
+ */
+ public static function encode( $value ) {
+ if ( is_scalar( $value ) || $value === null ) {
+ // [V]alue
+ return [ 'v', $value ];
+ }
+ if ( is_object( $value ) ) {
+ // [S]erialized
+ return [ 's', serialize( $value ) ];
+ }
+ if ( is_array( $value ) ) {
+ // [A]rray
+ return [ 'a', array_map( function ( $v ) {
+ return LCStoreStaticArray::encode( $v );
+ }, $value ) ];
+ }
+
+ throw new RuntimeException( 'Cannot encode ' . var_export( $value, true ) );
+ }
+
+ /**
+ * Decode something that was encoded with encode
+ *
+ * @param array $encoded
+ * @return array|mixed
+ * @throws RuntimeException
+ */
+ public static function decode( array $encoded ) {
+ $type = $encoded[0];
+ $data = $encoded[1];
+
+ switch ( $type ) {
+ case 'v':
+ return $data;
+ case 's':
+ return unserialize( $data );
+ case 'a':
+ return array_map( function ( $v ) {
+ return LCStoreStaticArray::decode( $v );
+ }, $data );
+ default:
+ throw new RuntimeException(
+ 'Unable to decode ' . var_export( $encoded, true ) );
+ }
+ }
+
+ public function finishWrite() {
+ file_put_contents(
+ $this->fname,
+ "data[$this->currentLang], true ) . ';'
+ );
+ $this->currentLang = null;
+ $this->fname = null;
+ }
+
+ public function get( $code, $key ) {
+ if ( !array_key_exists( $code, $this->data ) ) {
+ $fname = $this->directory . '/' . $code . '.l10n.php';
+ if ( !file_exists( $fname ) ) {
+ return null;
+ }
+ $this->data[$code] = require $fname;
+ }
+ $data = $this->data[$code];
+ if ( array_key_exists( $key, $data ) ) {
+ return self::decode( $data[$key] );
+ }
+ return null;
+ }
+}
diff --git a/includes/cache/localisation/LocalisationCache.php b/includes/cache/localisation/LocalisationCache.php
new file mode 100644
index 0000000000..dd7d81a33c
--- /dev/null
+++ b/includes/cache/localisation/LocalisationCache.php
@@ -0,0 +1,1098 @@
+
+ * zh-hans -> en ). Some common errors are corrected, for example namespace
+ * names with spaces instead of underscores, but heavyweight processing, such
+ * as grammatical transformation, is done by the caller.
+ */
+class LocalisationCache {
+ const VERSION = 4;
+
+ /** Configuration associative array */
+ private $conf;
+
+ /**
+ * True if recaching should only be done on an explicit call to recache().
+ * Setting this reduces the overhead of cache freshness checking, which
+ * requires doing a stat() for every extension i18n file.
+ */
+ private $manualRecache = false;
+
+ /**
+ * True to treat all files as expired until they are regenerated by this object.
+ */
+ private $forceRecache = false;
+
+ /**
+ * The cache data. 3-d array, where the first key is the language code,
+ * the second key is the item key e.g. 'messages', and the third key is
+ * an item specific subkey index. Some items are not arrays and so for those
+ * items, there are no subkeys.
+ */
+ protected $data = [];
+
+ /**
+ * The persistent store object. An instance of LCStore.
+ *
+ * @var LCStore
+ */
+ private $store;
+
+ /**
+ * A 2-d associative array, code/key, where presence indicates that the item
+ * is loaded. Value arbitrary.
+ *
+ * For split items, if set, this indicates that all of the subitems have been
+ * loaded.
+ */
+ private $loadedItems = [];
+
+ /**
+ * A 3-d associative array, code/key/subkey, where presence indicates that
+ * the subitem is loaded. Only used for the split items, i.e. messages.
+ */
+ private $loadedSubitems = [];
+
+ /**
+ * An array where presence of a key indicates that that language has been
+ * initialised. Initialisation includes checking for cache expiry and doing
+ * any necessary updates.
+ */
+ private $initialisedLangs = [];
+
+ /**
+ * An array mapping non-existent pseudo-languages to fallback languages. This
+ * is filled by initShallowFallback() when data is requested from a language
+ * that lacks a Messages*.php file.
+ */
+ private $shallowFallbacks = [];
+
+ /**
+ * An array where the keys are codes that have been recached by this instance.
+ */
+ private $recachedLangs = [];
+
+ /**
+ * All item keys
+ */
+ static public $allKeys = [
+ 'fallback', 'namespaceNames', 'bookstoreList',
+ 'magicWords', 'messages', 'rtl', 'capitalizeAllNouns', 'digitTransformTable',
+ 'separatorTransformTable', 'fallback8bitEncoding', 'linkPrefixExtension',
+ 'linkTrail', 'linkPrefixCharset', 'namespaceAliases',
+ 'dateFormats', 'datePreferences', 'datePreferenceMigrationMap',
+ 'defaultDateFormat', 'extraUserToggles', 'specialPageAliases',
+ 'imageFiles', 'preloadedMessages', 'namespaceGenderAliases',
+ 'digitGroupingPattern', 'pluralRules', 'pluralRuleTypes', 'compiledPluralRules',
+ ];
+
+ /**
+ * Keys for items which consist of associative arrays, which may be merged
+ * by a fallback sequence.
+ */
+ static public $mergeableMapKeys = [ 'messages', 'namespaceNames',
+ 'namespaceAliases', 'dateFormats', 'imageFiles', 'preloadedMessages'
+ ];
+
+ /**
+ * Keys for items which are a numbered array.
+ */
+ static public $mergeableListKeys = [ 'extraUserToggles' ];
+
+ /**
+ * Keys for items which contain an array of arrays of equivalent aliases
+ * for each subitem. The aliases may be merged by a fallback sequence.
+ */
+ static public $mergeableAliasListKeys = [ 'specialPageAliases' ];
+
+ /**
+ * Keys for items which contain an associative array, and may be merged if
+ * the primary value contains the special array key "inherit". That array
+ * key is removed after the first merge.
+ */
+ static public $optionalMergeKeys = [ 'bookstoreList' ];
+
+ /**
+ * Keys for items that are formatted like $magicWords
+ */
+ static public $magicWordKeys = [ 'magicWords' ];
+
+ /**
+ * Keys for items where the subitems are stored in the backend separately.
+ */
+ static public $splitKeys = [ 'messages' ];
+
+ /**
+ * Keys which are loaded automatically by initLanguage()
+ */
+ static public $preloadedKeys = [ 'dateFormats', 'namespaceNames' ];
+
+ /**
+ * Associative array of cached plural rules. The key is the language code,
+ * the value is an array of plural rules for that language.
+ */
+ private $pluralRules = null;
+
+ /**
+ * Associative array of cached plural rule types. The key is the language
+ * code, the value is an array of plural rule types for that language. For
+ * example, $pluralRuleTypes['ar'] = ['zero', 'one', 'two', 'few', 'many'].
+ * The index for each rule type matches the index for the rule in
+ * $pluralRules, thus allowing correlation between the two. The reason we
+ * don't just use the type names as the keys in $pluralRules is because
+ * Language::convertPlural applies the rules based on numeric order (or
+ * explicit numeric parameter), not based on the name of the rule type. For
+ * example, {{plural:count|wordform1|wordform2|wordform3}}, rather than
+ * {{plural:count|one=wordform1|two=wordform2|many=wordform3}}.
+ */
+ private $pluralRuleTypes = null;
+
+ private $mergeableKeys = null;
+
+ /**
+ * Constructor.
+ * For constructor parameters, see the documentation in DefaultSettings.php
+ * for $wgLocalisationCacheConf.
+ *
+ * @param array $conf
+ * @throws MWException
+ */
+ function __construct( $conf ) {
+ global $wgCacheDirectory;
+
+ $this->conf = $conf;
+ $storeConf = [];
+ if ( !empty( $conf['storeClass'] ) ) {
+ $storeClass = $conf['storeClass'];
+ } else {
+ switch ( $conf['store'] ) {
+ case 'files':
+ case 'file':
+ $storeClass = 'LCStoreCDB';
+ break;
+ case 'db':
+ $storeClass = 'LCStoreDB';
+ break;
+ case 'array':
+ $storeClass = 'LCStoreStaticArray';
+ break;
+ case 'detect':
+ if ( !empty( $conf['storeDirectory'] ) ) {
+ $storeClass = 'LCStoreCDB';
+ } else {
+ $cacheDir = $wgCacheDirectory ?: wfTempDir();
+ if ( $cacheDir ) {
+ $storeConf['directory'] = $cacheDir;
+ $storeClass = 'LCStoreCDB';
+ } else {
+ $storeClass = 'LCStoreDB';
+ }
+ }
+ break;
+ default:
+ throw new MWException(
+ 'Please set $wgLocalisationCacheConf[\'store\'] to something sensible.' );
+ }
+ }
+
+ wfDebugLog( 'caches', get_class( $this ) . ": using store $storeClass" );
+ if ( !empty( $conf['storeDirectory'] ) ) {
+ $storeConf['directory'] = $conf['storeDirectory'];
+ }
+
+ $this->store = new $storeClass( $storeConf );
+ foreach ( [ 'manualRecache', 'forceRecache' ] as $var ) {
+ if ( isset( $conf[$var] ) ) {
+ $this->$var = $conf[$var];
+ }
+ }
+ }
+
+ /**
+ * Returns true if the given key is mergeable, that is, if it is an associative
+ * array which can be merged through a fallback sequence.
+ * @param string $key
+ * @return bool
+ */
+ public function isMergeableKey( $key ) {
+ if ( $this->mergeableKeys === null ) {
+ $this->mergeableKeys = array_flip( array_merge(
+ self::$mergeableMapKeys,
+ self::$mergeableListKeys,
+ self::$mergeableAliasListKeys,
+ self::$optionalMergeKeys,
+ self::$magicWordKeys
+ ) );
+ }
+
+ return isset( $this->mergeableKeys[$key] );
+ }
+
+ /**
+ * Get a cache item.
+ *
+ * Warning: this may be slow for split items (messages), since it will
+ * need to fetch all of the subitems from the cache individually.
+ * @param string $code
+ * @param string $key
+ * @return mixed
+ */
+ public function getItem( $code, $key ) {
+ if ( !isset( $this->loadedItems[$code][$key] ) ) {
+ $this->loadItem( $code, $key );
+ }
+
+ if ( $key === 'fallback' && isset( $this->shallowFallbacks[$code] ) ) {
+ return $this->shallowFallbacks[$code];
+ }
+
+ return $this->data[$code][$key];
+ }
+
+ /**
+ * Get a subitem, for instance a single message for a given language.
+ * @param string $code
+ * @param string $key
+ * @param string $subkey
+ * @return mixed|null
+ */
+ public function getSubitem( $code, $key, $subkey ) {
+ if ( !isset( $this->loadedSubitems[$code][$key][$subkey] ) &&
+ !isset( $this->loadedItems[$code][$key] )
+ ) {
+ $this->loadSubitem( $code, $key, $subkey );
+ }
+
+ if ( isset( $this->data[$code][$key][$subkey] ) ) {
+ return $this->data[$code][$key][$subkey];
+ } else {
+ return null;
+ }
+ }
+
+ /**
+ * Get the list of subitem keys for a given item.
+ *
+ * This is faster than array_keys($lc->getItem(...)) for the items listed in
+ * self::$splitKeys.
+ *
+ * Will return null if the item is not found, or false if the item is not an
+ * array.
+ * @param string $code
+ * @param string $key
+ * @return bool|null|string
+ */
+ public function getSubitemList( $code, $key ) {
+ if ( in_array( $key, self::$splitKeys ) ) {
+ return $this->getSubitem( $code, 'list', $key );
+ } else {
+ $item = $this->getItem( $code, $key );
+ if ( is_array( $item ) ) {
+ return array_keys( $item );
+ } else {
+ return false;
+ }
+ }
+ }
+
+ /**
+ * Load an item into the cache.
+ * @param string $code
+ * @param string $key
+ */
+ protected function loadItem( $code, $key ) {
+ if ( !isset( $this->initialisedLangs[$code] ) ) {
+ $this->initLanguage( $code );
+ }
+
+ // Check to see if initLanguage() loaded it for us
+ if ( isset( $this->loadedItems[$code][$key] ) ) {
+ return;
+ }
+
+ if ( isset( $this->shallowFallbacks[$code] ) ) {
+ $this->loadItem( $this->shallowFallbacks[$code], $key );
+
+ return;
+ }
+
+ if ( in_array( $key, self::$splitKeys ) ) {
+ $subkeyList = $this->getSubitem( $code, 'list', $key );
+ foreach ( $subkeyList as $subkey ) {
+ if ( isset( $this->data[$code][$key][$subkey] ) ) {
+ continue;
+ }
+ $this->data[$code][$key][$subkey] = $this->getSubitem( $code, $key, $subkey );
+ }
+ } else {
+ $this->data[$code][$key] = $this->store->get( $code, $key );
+ }
+
+ $this->loadedItems[$code][$key] = true;
+ }
+
+ /**
+ * Load a subitem into the cache
+ * @param string $code
+ * @param string $key
+ * @param string $subkey
+ */
+ protected function loadSubitem( $code, $key, $subkey ) {
+ if ( !in_array( $key, self::$splitKeys ) ) {
+ $this->loadItem( $code, $key );
+
+ return;
+ }
+
+ if ( !isset( $this->initialisedLangs[$code] ) ) {
+ $this->initLanguage( $code );
+ }
+
+ // Check to see if initLanguage() loaded it for us
+ if ( isset( $this->loadedItems[$code][$key] ) ||
+ isset( $this->loadedSubitems[$code][$key][$subkey] )
+ ) {
+ return;
+ }
+
+ if ( isset( $this->shallowFallbacks[$code] ) ) {
+ $this->loadSubitem( $this->shallowFallbacks[$code], $key, $subkey );
+
+ return;
+ }
+
+ $value = $this->store->get( $code, "$key:$subkey" );
+ $this->data[$code][$key][$subkey] = $value;
+ $this->loadedSubitems[$code][$key][$subkey] = true;
+ }
+
+ /**
+ * Returns true if the cache identified by $code is missing or expired.
+ *
+ * @param string $code
+ *
+ * @return bool
+ */
+ public function isExpired( $code ) {
+ if ( $this->forceRecache && !isset( $this->recachedLangs[$code] ) ) {
+ wfDebug( __METHOD__ . "($code): forced reload\n" );
+
+ return true;
+ }
+
+ $deps = $this->store->get( $code, 'deps' );
+ $keys = $this->store->get( $code, 'list' );
+ $preload = $this->store->get( $code, 'preload' );
+ // Different keys may expire separately for some stores
+ if ( $deps === null || $keys === null || $preload === null ) {
+ wfDebug( __METHOD__ . "($code): cache missing, need to make one\n" );
+
+ return true;
+ }
+
+ foreach ( $deps as $dep ) {
+ // Because we're unserializing stuff from cache, we
+ // could receive objects of classes that don't exist
+ // anymore (e.g. uninstalled extensions)
+ // When this happens, always expire the cache
+ if ( !$dep instanceof CacheDependency || $dep->isExpired() ) {
+ wfDebug( __METHOD__ . "($code): cache for $code expired due to " .
+ get_class( $dep ) . "\n" );
+
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ /**
+ * Initialise a language in this object. Rebuild the cache if necessary.
+ * @param string $code
+ * @throws MWException
+ */
+ protected function initLanguage( $code ) {
+ if ( isset( $this->initialisedLangs[$code] ) ) {
+ return;
+ }
+
+ $this->initialisedLangs[$code] = true;
+
+ # If the code is of the wrong form for a Messages*.php file, do a shallow fallback
+ if ( !Language::isValidBuiltInCode( $code ) ) {
+ $this->initShallowFallback( $code, 'en' );
+
+ return;
+ }
+
+ # Recache the data if necessary
+ if ( !$this->manualRecache && $this->isExpired( $code ) ) {
+ if ( Language::isSupportedLanguage( $code ) ) {
+ $this->recache( $code );
+ } elseif ( $code === 'en' ) {
+ throw new MWException( 'MessagesEn.php is missing.' );
+ } else {
+ $this->initShallowFallback( $code, 'en' );
+ }
+
+ return;
+ }
+
+ # Preload some stuff
+ $preload = $this->getItem( $code, 'preload' );
+ if ( $preload === null ) {
+ if ( $this->manualRecache ) {
+ // No Messages*.php file. Do shallow fallback to en.
+ if ( $code === 'en' ) {
+ throw new MWException( 'No localisation cache found for English. ' .
+ 'Please run maintenance/rebuildLocalisationCache.php.' );
+ }
+ $this->initShallowFallback( $code, 'en' );
+
+ return;
+ } else {
+ throw new MWException( 'Invalid or missing localisation cache.' );
+ }
+ }
+ $this->data[$code] = $preload;
+ foreach ( $preload as $key => $item ) {
+ if ( in_array( $key, self::$splitKeys ) ) {
+ foreach ( $item as $subkey => $subitem ) {
+ $this->loadedSubitems[$code][$key][$subkey] = true;
+ }
+ } else {
+ $this->loadedItems[$code][$key] = true;
+ }
+ }
+ }
+
+ /**
+ * Create a fallback from one language to another, without creating a
+ * complete persistent cache.
+ * @param string $primaryCode
+ * @param string $fallbackCode
+ */
+ public function initShallowFallback( $primaryCode, $fallbackCode ) {
+ $this->data[$primaryCode] =& $this->data[$fallbackCode];
+ $this->loadedItems[$primaryCode] =& $this->loadedItems[$fallbackCode];
+ $this->loadedSubitems[$primaryCode] =& $this->loadedSubitems[$fallbackCode];
+ $this->shallowFallbacks[$primaryCode] = $fallbackCode;
+ }
+
+ /**
+ * Read a PHP file containing localisation data.
+ * @param string $_fileName
+ * @param string $_fileType
+ * @throws MWException
+ * @return array
+ */
+ protected function readPHPFile( $_fileName, $_fileType ) {
+ // Disable APC caching
+ MediaWiki\suppressWarnings();
+ $_apcEnabled = ini_set( 'apc.cache_by_default', '0' );
+ MediaWiki\restoreWarnings();
+
+ include $_fileName;
+
+ MediaWiki\suppressWarnings();
+ ini_set( 'apc.cache_by_default', $_apcEnabled );
+ MediaWiki\restoreWarnings();
+
+ if ( $_fileType == 'core' || $_fileType == 'extension' ) {
+ $data = compact( self::$allKeys );
+ } elseif ( $_fileType == 'aliases' ) {
+ $data = compact( 'aliases' );
+ } else {
+ throw new MWException( __METHOD__ . ": Invalid file type: $_fileType" );
+ }
+
+ return $data;
+ }
+
+ /**
+ * Read a JSON file containing localisation messages.
+ * @param string $fileName Name of file to read
+ * @throws MWException If there is a syntax error in the JSON file
+ * @return array Array with a 'messages' key, or empty array if the file doesn't exist
+ */
+ public function readJSONFile( $fileName ) {
+
+ if ( !is_readable( $fileName ) ) {
+ return [];
+ }
+
+ $json = file_get_contents( $fileName );
+ if ( $json === false ) {
+ return [];
+ }
+
+ $data = FormatJson::decode( $json, true );
+ if ( $data === null ) {
+
+ throw new MWException( __METHOD__ . ": Invalid JSON file: $fileName" );
+ }
+
+ // Remove keys starting with '@', they're reserved for metadata and non-message data
+ foreach ( $data as $key => $unused ) {
+ if ( $key === '' || $key[0] === '@' ) {
+ unset( $data[$key] );
+ }
+ }
+
+ // The JSON format only supports messages, none of the other variables, so wrap the data
+ return [ 'messages' => $data ];
+ }
+
+ /**
+ * Get the compiled plural rules for a given language from the XML files.
+ * @since 1.20
+ * @param string $code
+ * @return array|null
+ */
+ public function getCompiledPluralRules( $code ) {
+ $rules = $this->getPluralRules( $code );
+ if ( $rules === null ) {
+ return null;
+ }
+ try {
+ $compiledRules = Evaluator::compile( $rules );
+ } catch ( CLDRPluralRuleError $e ) {
+ wfDebugLog( 'l10n', $e->getMessage() );
+
+ return [];
+ }
+
+ return $compiledRules;
+ }
+
+ /**
+ * Get the plural rules for a given language from the XML files.
+ * Cached.
+ * @since 1.20
+ * @param string $code
+ * @return array|null
+ */
+ public function getPluralRules( $code ) {
+ if ( $this->pluralRules === null ) {
+ $this->loadPluralFiles();
+ }
+ if ( !isset( $this->pluralRules[$code] ) ) {
+ return null;
+ } else {
+ return $this->pluralRules[$code];
+ }
+ }
+
+ /**
+ * Get the plural rule types for a given language from the XML files.
+ * Cached.
+ * @since 1.22
+ * @param string $code
+ * @return array|null
+ */
+ public function getPluralRuleTypes( $code ) {
+ if ( $this->pluralRuleTypes === null ) {
+ $this->loadPluralFiles();
+ }
+ if ( !isset( $this->pluralRuleTypes[$code] ) ) {
+ return null;
+ } else {
+ return $this->pluralRuleTypes[$code];
+ }
+ }
+
+ /**
+ * Load the plural XML files.
+ */
+ protected function loadPluralFiles() {
+ global $IP;
+ $cldrPlural = "$IP/languages/data/plurals.xml";
+ $mwPlural = "$IP/languages/data/plurals-mediawiki.xml";
+ // Load CLDR plural rules
+ $this->loadPluralFile( $cldrPlural );
+ if ( file_exists( $mwPlural ) ) {
+ // Override or extend
+ $this->loadPluralFile( $mwPlural );
+ }
+ }
+
+ /**
+ * Load a plural XML file with the given filename, compile the relevant
+ * rules, and save the compiled rules in a process-local cache.
+ *
+ * @param string $fileName
+ * @throws MWException
+ */
+ protected function loadPluralFile( $fileName ) {
+ // Use file_get_contents instead of DOMDocument::load (T58439)
+ $xml = file_get_contents( $fileName );
+ if ( !$xml ) {
+ throw new MWException( "Unable to read plurals file $fileName" );
+ }
+ $doc = new DOMDocument;
+ $doc->loadXML( $xml );
+ $rulesets = $doc->getElementsByTagName( "pluralRules" );
+ foreach ( $rulesets as $ruleset ) {
+ $codes = $ruleset->getAttribute( 'locales' );
+ $rules = [];
+ $ruleTypes = [];
+ $ruleElements = $ruleset->getElementsByTagName( "pluralRule" );
+ foreach ( $ruleElements as $elt ) {
+ $ruleType = $elt->getAttribute( 'count' );
+ if ( $ruleType === 'other' ) {
+ // Don't record "other" rules, which have an empty condition
+ continue;
+ }
+ $rules[] = $elt->nodeValue;
+ $ruleTypes[] = $ruleType;
+ }
+ foreach ( explode( ' ', $codes ) as $code ) {
+ $this->pluralRules[$code] = $rules;
+ $this->pluralRuleTypes[$code] = $ruleTypes;
+ }
+ }
+ }
+
+ /**
+ * Read the data from the source files for a given language, and register
+ * the relevant dependencies in the $deps array. If the localisation
+ * exists, the data array is returned, otherwise false is returned.
+ *
+ * @param string $code
+ * @param array $deps
+ * @return array
+ */
+ protected function readSourceFilesAndRegisterDeps( $code, &$deps ) {
+ global $IP;
+
+ // This reads in the PHP i18n file with non-messages l10n data
+ $fileName = Language::getMessagesFileName( $code );
+ if ( !file_exists( $fileName ) ) {
+ $data = [];
+ } else {
+ $deps[] = new FileDependency( $fileName );
+ $data = $this->readPHPFile( $fileName, 'core' );
+ }
+
+ # Load CLDR plural rules for JavaScript
+ $data['pluralRules'] = $this->getPluralRules( $code );
+ # And for PHP
+ $data['compiledPluralRules'] = $this->getCompiledPluralRules( $code );
+ # Load plural rule types
+ $data['pluralRuleTypes'] = $this->getPluralRuleTypes( $code );
+
+ $deps['plurals'] = new FileDependency( "$IP/languages/data/plurals.xml" );
+ $deps['plurals-mw'] = new FileDependency( "$IP/languages/data/plurals-mediawiki.xml" );
+
+ return $data;
+ }
+
+ /**
+ * Merge two localisation values, a primary and a fallback, overwriting the
+ * primary value in place.
+ * @param string $key
+ * @param mixed $value
+ * @param mixed $fallbackValue
+ */
+ protected function mergeItem( $key, &$value, $fallbackValue ) {
+ if ( !is_null( $value ) ) {
+ if ( !is_null( $fallbackValue ) ) {
+ if ( in_array( $key, self::$mergeableMapKeys ) ) {
+ $value = $value + $fallbackValue;
+ } elseif ( in_array( $key, self::$mergeableListKeys ) ) {
+ $value = array_unique( array_merge( $fallbackValue, $value ) );
+ } elseif ( in_array( $key, self::$mergeableAliasListKeys ) ) {
+ $value = array_merge_recursive( $value, $fallbackValue );
+ } elseif ( in_array( $key, self::$optionalMergeKeys ) ) {
+ if ( !empty( $value['inherit'] ) ) {
+ $value = array_merge( $fallbackValue, $value );
+ }
+
+ if ( isset( $value['inherit'] ) ) {
+ unset( $value['inherit'] );
+ }
+ } elseif ( in_array( $key, self::$magicWordKeys ) ) {
+ $this->mergeMagicWords( $value, $fallbackValue );
+ }
+ }
+ } else {
+ $value = $fallbackValue;
+ }
+ }
+
+ /**
+ * @param mixed $value
+ * @param mixed $fallbackValue
+ */
+ protected function mergeMagicWords( &$value, $fallbackValue ) {
+ foreach ( $fallbackValue as $magicName => $fallbackInfo ) {
+ if ( !isset( $value[$magicName] ) ) {
+ $value[$magicName] = $fallbackInfo;
+ } else {
+ $oldSynonyms = array_slice( $fallbackInfo, 1 );
+ $newSynonyms = array_slice( $value[$magicName], 1 );
+ $synonyms = array_values( array_unique( array_merge(
+ $newSynonyms, $oldSynonyms ) ) );
+ $value[$magicName] = array_merge( [ $fallbackInfo[0] ], $synonyms );
+ }
+ }
+ }
+
+ /**
+ * Given an array mapping language code to localisation value, such as is
+ * found in extension *.i18n.php files, iterate through a fallback sequence
+ * to merge the given data with an existing primary value.
+ *
+ * Returns true if any data from the extension array was used, false
+ * otherwise.
+ * @param array $codeSequence
+ * @param string $key
+ * @param mixed $value
+ * @param mixed $fallbackValue
+ * @return bool
+ */
+ protected function mergeExtensionItem( $codeSequence, $key, &$value, $fallbackValue ) {
+ $used = false;
+ foreach ( $codeSequence as $code ) {
+ if ( isset( $fallbackValue[$code] ) ) {
+ $this->mergeItem( $key, $value, $fallbackValue[$code] );
+ $used = true;
+ }
+ }
+
+ return $used;
+ }
+
+ /**
+ * Gets the combined list of messages dirs from
+ * core and extensions
+ *
+ * @since 1.25
+ * @return array
+ */
+ public function getMessagesDirs() {
+ global $wgMessagesDirs, $IP;
+ return [
+ 'core' => "$IP/languages/i18n",
+ 'api' => "$IP/includes/api/i18n",
+ 'oojs-ui' => "$IP/resources/lib/oojs-ui/i18n",
+ ] + $wgMessagesDirs;
+ }
+
+ /**
+ * Load localisation data for a given language for both core and extensions
+ * and save it to the persistent cache store and the process cache
+ * @param string $code
+ * @throws MWException
+ */
+ public function recache( $code ) {
+ global $wgExtensionMessagesFiles;
+
+ if ( !$code ) {
+ throw new MWException( "Invalid language code requested" );
+ }
+ $this->recachedLangs[$code] = true;
+
+ # Initial values
+ $initialData = array_fill_keys( self::$allKeys, null );
+ $coreData = $initialData;
+ $deps = [];
+
+ # Load the primary localisation from the source file
+ $data = $this->readSourceFilesAndRegisterDeps( $code, $deps );
+ if ( $data === false ) {
+ wfDebug( __METHOD__ . ": no localisation file for $code, using fallback to en\n" );
+ $coreData['fallback'] = 'en';
+ } else {
+ wfDebug( __METHOD__ . ": got localisation for $code from source\n" );
+
+ # Merge primary localisation
+ foreach ( $data as $key => $value ) {
+ $this->mergeItem( $key, $coreData[$key], $value );
+ }
+ }
+
+ # Fill in the fallback if it's not there already
+ if ( is_null( $coreData['fallback'] ) ) {
+ $coreData['fallback'] = $code === 'en' ? false : 'en';
+ }
+ if ( $coreData['fallback'] === false ) {
+ $coreData['fallbackSequence'] = [];
+ } else {
+ $coreData['fallbackSequence'] = array_map( 'trim', explode( ',', $coreData['fallback'] ) );
+ $len = count( $coreData['fallbackSequence'] );
+
+ # Ensure that the sequence ends at en
+ if ( $coreData['fallbackSequence'][$len - 1] !== 'en' ) {
+ $coreData['fallbackSequence'][] = 'en';
+ }
+ }
+
+ $codeSequence = array_merge( [ $code ], $coreData['fallbackSequence'] );
+ $messageDirs = $this->getMessagesDirs();
+
+ # Load non-JSON localisation data for extensions
+ $extensionData = array_fill_keys( $codeSequence, $initialData );
+ foreach ( $wgExtensionMessagesFiles as $extension => $fileName ) {
+ if ( isset( $messageDirs[$extension] ) ) {
+ # This extension has JSON message data; skip the PHP shim
+ continue;
+ }
+
+ $data = $this->readPHPFile( $fileName, 'extension' );
+ $used = false;
+
+ foreach ( $data as $key => $item ) {
+ foreach ( $codeSequence as $csCode ) {
+ if ( isset( $item[$csCode] ) ) {
+ $this->mergeItem( $key, $extensionData[$csCode][$key], $item[$csCode] );
+ $used = true;
+ }
+ }
+ }
+
+ if ( $used ) {
+ $deps[] = new FileDependency( $fileName );
+ }
+ }
+
+ # Load the localisation data for each fallback, then merge it into the full array
+ $allData = $initialData;
+ foreach ( $codeSequence as $csCode ) {
+ $csData = $initialData;
+
+ # Load core messages and the extension localisations.
+ foreach ( $messageDirs as $dirs ) {
+ foreach ( (array)$dirs as $dir ) {
+ $fileName = "$dir/$csCode.json";
+ $data = $this->readJSONFile( $fileName );
+
+ foreach ( $data as $key => $item ) {
+ $this->mergeItem( $key, $csData[$key], $item );
+ }
+
+ $deps[] = new FileDependency( $fileName );
+ }
+ }
+
+ # Merge non-JSON extension data
+ if ( isset( $extensionData[$csCode] ) ) {
+ foreach ( $extensionData[$csCode] as $key => $item ) {
+ $this->mergeItem( $key, $csData[$key], $item );
+ }
+ }
+
+ if ( $csCode === $code ) {
+ # Merge core data into extension data
+ foreach ( $coreData as $key => $item ) {
+ $this->mergeItem( $key, $csData[$key], $item );
+ }
+ } else {
+ # Load the secondary localisation from the source file to
+ # avoid infinite cycles on cyclic fallbacks
+ $fbData = $this->readSourceFilesAndRegisterDeps( $csCode, $deps );
+ if ( $fbData !== false ) {
+ # Only merge the keys that make sense to merge
+ foreach ( self::$allKeys as $key ) {
+ if ( !isset( $fbData[$key] ) ) {
+ continue;
+ }
+
+ if ( is_null( $coreData[$key] ) || $this->isMergeableKey( $key ) ) {
+ $this->mergeItem( $key, $csData[$key], $fbData[$key] );
+ }
+ }
+ }
+ }
+
+ # Allow extensions an opportunity to adjust the data for this
+ # fallback
+ Hooks::run( 'LocalisationCacheRecacheFallback', [ $this, $csCode, &$csData ] );
+
+ # Merge the data for this fallback into the final array
+ if ( $csCode === $code ) {
+ $allData = $csData;
+ } else {
+ foreach ( self::$allKeys as $key ) {
+ if ( !isset( $csData[$key] ) ) {
+ continue;
+ }
+
+ if ( is_null( $allData[$key] ) || $this->isMergeableKey( $key ) ) {
+ $this->mergeItem( $key, $allData[$key], $csData[$key] );
+ }
+ }
+ }
+ }
+
+ # Add cache dependencies for any referenced globals
+ $deps['wgExtensionMessagesFiles'] = new GlobalDependency( 'wgExtensionMessagesFiles' );
+ // $wgMessagesDirs is used in LocalisationCache::getMessagesDirs()
+ $deps['wgMessagesDirs'] = new GlobalDependency( 'wgMessagesDirs' );
+ $deps['version'] = new ConstantDependency( 'LocalisationCache::VERSION' );
+
+ # Add dependencies to the cache entry
+ $allData['deps'] = $deps;
+
+ # Replace spaces with underscores in namespace names
+ $allData['namespaceNames'] = str_replace( ' ', '_', $allData['namespaceNames'] );
+
+ # And do the same for special page aliases. $page is an array.
+ foreach ( $allData['specialPageAliases'] as &$page ) {
+ $page = str_replace( ' ', '_', $page );
+ }
+ # Decouple the reference to prevent accidental damage
+ unset( $page );
+
+ # If there were no plural rules, return an empty array
+ if ( $allData['pluralRules'] === null ) {
+ $allData['pluralRules'] = [];
+ }
+ if ( $allData['compiledPluralRules'] === null ) {
+ $allData['compiledPluralRules'] = [];
+ }
+ # If there were no plural rule types, return an empty array
+ if ( $allData['pluralRuleTypes'] === null ) {
+ $allData['pluralRuleTypes'] = [];
+ }
+
+ # Set the list keys
+ $allData['list'] = [];
+ foreach ( self::$splitKeys as $key ) {
+ $allData['list'][$key] = array_keys( $allData[$key] );
+ }
+ # Run hooks
+ $purgeBlobs = true;
+ Hooks::run( 'LocalisationCacheRecache', [ $this, $code, &$allData, &$purgeBlobs ] );
+
+ if ( is_null( $allData['namespaceNames'] ) ) {
+ throw new MWException( __METHOD__ . ': Localisation data failed sanity check! ' .
+ 'Check that your languages/messages/MessagesEn.php file is intact.' );
+ }
+
+ # Set the preload key
+ $allData['preload'] = $this->buildPreload( $allData );
+
+ # Save to the process cache and register the items loaded
+ $this->data[$code] = $allData;
+ foreach ( $allData as $key => $item ) {
+ $this->loadedItems[$code][$key] = true;
+ }
+
+ # Save to the persistent cache
+ $this->store->startWrite( $code );
+ foreach ( $allData as $key => $value ) {
+ if ( in_array( $key, self::$splitKeys ) ) {
+ foreach ( $value as $subkey => $subvalue ) {
+ $this->store->set( "$key:$subkey", $subvalue );
+ }
+ } else {
+ $this->store->set( $key, $value );
+ }
+ }
+ $this->store->finishWrite();
+
+ # Clear out the MessageBlobStore
+ # HACK: If using a null (i.e. disabled) storage backend, we
+ # can't write to the MessageBlobStore either
+ if ( $purgeBlobs && !$this->store instanceof LCStoreNull ) {
+ $blobStore = new MessageBlobStore();
+ $blobStore->clear();
+ }
+
+ }
+
+ /**
+ * Build the preload item from the given pre-cache data.
+ *
+ * The preload item will be loaded automatically, improving performance
+ * for the commonly-requested items it contains.
+ * @param array $data
+ * @return array
+ */
+ protected function buildPreload( $data ) {
+ $preload = [ 'messages' => [] ];
+ foreach ( self::$preloadedKeys as $key ) {
+ $preload[$key] = $data[$key];
+ }
+
+ foreach ( $data['preloadedMessages'] as $subkey ) {
+ if ( isset( $data['messages'][$subkey] ) ) {
+ $subitem = $data['messages'][$subkey];
+ } else {
+ $subitem = null;
+ }
+ $preload['messages'][$subkey] = $subitem;
+ }
+
+ return $preload;
+ }
+
+ /**
+ * Unload the data for a given language from the object cache.
+ * Reduces memory usage.
+ * @param string $code
+ */
+ public function unload( $code ) {
+ unset( $this->data[$code] );
+ unset( $this->loadedItems[$code] );
+ unset( $this->loadedSubitems[$code] );
+ unset( $this->initialisedLangs[$code] );
+ unset( $this->shallowFallbacks[$code] );
+
+ foreach ( $this->shallowFallbacks as $shallowCode => $fbCode ) {
+ if ( $fbCode === $code ) {
+ $this->unload( $shallowCode );
+ }
+ }
+ }
+
+ /**
+ * Unload all data
+ */
+ public function unloadAll() {
+ foreach ( $this->initialisedLangs as $lang => $unused ) {
+ $this->unload( $lang );
+ }
+ }
+
+ /**
+ * Disable the storage backend
+ */
+ public function disableBackend() {
+ $this->store = new LCStoreNull;
+ $this->manualRecache = false;
+ }
+
+}
diff --git a/includes/cache/localisation/LocalisationCacheBulkLoad.php b/includes/cache/localisation/LocalisationCacheBulkLoad.php
new file mode 100644
index 0000000000..30c7d37516
--- /dev/null
+++ b/includes/cache/localisation/LocalisationCacheBulkLoad.php
@@ -0,0 +1,126 @@
+data
+ */
+ private $maxLoadedLangs = 10;
+
+ /**
+ * @param string $fileName
+ * @param string $fileType
+ * @return array|mixed
+ */
+ protected function readPHPFile( $fileName, $fileType ) {
+ $serialize = $fileType === 'core';
+ if ( !isset( $this->fileCache[$fileName][$fileType] ) ) {
+ $data = parent::readPHPFile( $fileName, $fileType );
+
+ if ( $serialize ) {
+ $encData = serialize( $data );
+ } else {
+ $encData = $data;
+ }
+
+ $this->fileCache[$fileName][$fileType] = $encData;
+
+ return $data;
+ } elseif ( $serialize ) {
+ return unserialize( $this->fileCache[$fileName][$fileType] );
+ } else {
+ return $this->fileCache[$fileName][$fileType];
+ }
+ }
+
+ /**
+ * @param string $code
+ * @param string $key
+ * @return mixed
+ */
+ public function getItem( $code, $key ) {
+ unset( $this->mruLangs[$code] );
+ $this->mruLangs[$code] = true;
+
+ return parent::getItem( $code, $key );
+ }
+
+ /**
+ * @param string $code
+ * @param string $key
+ * @param string $subkey
+ * @return mixed
+ */
+ public function getSubitem( $code, $key, $subkey ) {
+ unset( $this->mruLangs[$code] );
+ $this->mruLangs[$code] = true;
+
+ return parent::getSubitem( $code, $key, $subkey );
+ }
+
+ /**
+ * @param string $code
+ */
+ public function recache( $code ) {
+ parent::recache( $code );
+ unset( $this->mruLangs[$code] );
+ $this->mruLangs[$code] = true;
+ $this->trimCache();
+ }
+
+ /**
+ * @param string $code
+ */
+ public function unload( $code ) {
+ unset( $this->mruLangs[$code] );
+ parent::unload( $code );
+ }
+
+ /**
+ * Unload cached languages until there are less than $this->maxLoadedLangs
+ */
+ protected function trimCache() {
+ while ( count( $this->data ) > $this->maxLoadedLangs && count( $this->mruLangs ) ) {
+ reset( $this->mruLangs );
+ $code = key( $this->mruLangs );
+ wfDebug( __METHOD__ . ": unloading $code\n" );
+ $this->unload( $code );
+ }
+ }
+
+}
diff --git a/includes/changes/CategoryMembershipChange.php b/includes/changes/CategoryMembershipChange.php
index 1ff6f85237..64d8139eb9 100644
--- a/includes/changes/CategoryMembershipChange.php
+++ b/includes/changes/CategoryMembershipChange.php
@@ -127,10 +127,11 @@ class CategoryMembershipChange {
$this->timestamp,
$categoryTitle,
$this->getUser(),
- $this->getChangeMessageText( $type, [
- 'prefixedText' => $this->pageTitle->getPrefixedText(),
- 'numTemplateLinks' => $this->numTemplateLinks
- ] ),
+ $this->getChangeMessageText(
+ $type,
+ [ 'prefixedText' => $this->pageTitle->getPrefixedText() ],
+ $this->numTemplateLinks
+ ),
$this->pageTitle,
$this->getPreviousRevisionTimestamp(),
$this->revision
@@ -246,10 +247,11 @@ class CategoryMembershipChange {
* or CategoryMembershipChange::CATEGORY_REMOVAL
* @param array $params
* - prefixedText: result of Title::->getPrefixedText()
+ * @param int $numTemplateLinks
*
* @return string
*/
- private function getChangeMessageText( $type, array $params ) {
+ private function getChangeMessageText( $type, array $params, $numTemplateLinks ) {
$array = [
self::CATEGORY_ADDITION => 'recentchanges-page-added-to-category',
self::CATEGORY_REMOVAL => 'recentchanges-page-removed-from-category',
@@ -257,7 +259,7 @@ class CategoryMembershipChange {
$msgKey = $array[$type];
- if ( intval( $params['numTemplateLinks'] ) > 0 ) {
+ if ( intval( $numTemplateLinks ) > 0 ) {
$msgKey .= '-bundled';
}
diff --git a/includes/changes/EnhancedChangesList.php b/includes/changes/EnhancedChangesList.php
index 946c6d1cc6..a808516162 100644
--- a/includes/changes/EnhancedChangesList.php
+++ b/includes/changes/EnhancedChangesList.php
@@ -157,8 +157,10 @@ class EnhancedChangesList extends ChangesList {
* Enhanced RC group
* @param RCCacheEntry[] $block
* @return string
+ * @throws DomainException
*/
protected function recentChangesBlockGroup( $block ) {
+ $recentChangesFlags = $this->getConfig()->get( 'RecentChangesFlags' );
# Add the namespace and title of the block as part of the class
$tableClasses = [ 'mw-collapsible', 'mw-collapsed', 'mw-enhanced-rc' ];
@@ -186,20 +188,24 @@ class EnhancedChangesList extends ChangesList {
$namehidden = true;
$allLogs = true;
$RCShowChangedSize = $this->getConfig()->get( 'RCShowChangedSize' );
- $collectedRcFlags = [
- // All are by bots?
- 'bot' => true,
- // Includes a new page?
- 'newpage' => false,
- // All are minor edits?
- 'minor' => true,
- // Contains an unpatrolled edit?
- 'unpatrolled' => false,
- ];
- foreach ( $block as $rcObj ) {
- if ( $rcObj->mAttribs['rc_type'] == RC_NEW ) {
- $collectedRcFlags['newpage'] = true;
+
+ # Default values for RC flags
+ $collectedRcFlags = [];
+ foreach ( $recentChangesFlags as $key => $value ) {
+ $flagGrouping = ( isset( $recentChangesFlags[$key]['grouping'] ) ?
+ $recentChangesFlags[$key]['grouping'] : 'any' );
+ switch ( $flagGrouping ) {
+ case 'all':
+ $collectedRcFlags[$key] = true;
+ break;
+ case 'any':
+ $collectedRcFlags[$key] = false;
+ break;
+ default:
+ throw new DomainException( "Unknown grouping type \"{$flagGrouping}\"" );
}
+ }
+ foreach ( $block as $rcObj ) {
// If all log actions to this page were hidden, then don't
// give the name of the affected page for this block!
if ( !$this->isDeleted( $rcObj, LogPage::DELETED_ACTION ) ) {
@@ -209,9 +215,6 @@ class EnhancedChangesList extends ChangesList {
if ( !isset( $userlinks[$u] ) ) {
$userlinks[$u] = 0;
}
- if ( $rcObj->unpatrolled ) {
- $collectedRcFlags['unpatrolled'] = true;
- }
if ( $rcObj->mAttribs['rc_type'] != RC_LOG ) {
$allLogs = false;
}
@@ -221,13 +224,6 @@ class EnhancedChangesList extends ChangesList {
$curId = $rcObj->mAttribs['rc_cur_id'];
}
- if ( !$rcObj->mAttribs['rc_bot'] ) {
- $collectedRcFlags['bot'] = false;
- }
- if ( !$rcObj->mAttribs['rc_minor'] ) {
- $collectedRcFlags['minor'] = false;
- }
-
$userlinks[$u]++;
}
@@ -267,6 +263,27 @@ class EnhancedChangesList extends ChangesList {
// completely ignore this RC entry if we don't want to render it
unset( $block[$i] );
}
+
+ // Roll up flags
+ foreach ( $line['recentChangesFlagsRaw'] as $key => $value ) {
+ $flagGrouping = ( isset( $recentChangesFlags[$key]['grouping'] ) ?
+ $recentChangesFlags[$key]['grouping'] : 'any' );
+ switch ( $flagGrouping ) {
+ case 'all':
+ if ( !$value ) {
+ $collectedRcFlags[$key] = false;
+ }
+ break;
+ case 'any':
+ if ( $value ) {
+ $collectedRcFlags[$key] = true;
+ }
+ break;
+ default:
+ throw new DomainException( "Unknown grouping type \"{$flagGrouping}\"" );
+ }
+ }
+
$lines[] = $line;
}
// Further down are some assumptions that $block is a 0-indexed array
@@ -288,18 +305,10 @@ class EnhancedChangesList extends ChangesList {
$last = 0;
$first = count( $block ) - 1;
# Some events (like logs and category changes) have an "empty" size, so we need to skip those...
- while ( $last < $first && (
- $block[$last]->mAttribs['rc_new_len'] === null ||
- # TODO kill the below check after March 2016 - https://phabricator.wikimedia.org/T126428
- $block[$last]->mAttribs['rc_type'] == RC_CATEGORIZE
- ) ) {
+ while ( $last < $first && $block[$last]->mAttribs['rc_new_len'] === null ) {
$last++;
}
- while ( $last < $first && (
- $block[$first]->mAttribs['rc_old_len'] === null ||
- # TODO kill the below check after March 2016 - https://phabricator.wikimedia.org/T126428
- $block[$first]->mAttribs['rc_type'] == RC_CATEGORIZE
- ) ) {
+ while ( $last < $first && $block[$first]->mAttribs['rc_old_len'] === null ) {
$first--;
}
# Get net change
@@ -436,8 +445,11 @@ class EnhancedChangesList extends ChangesList {
return [];
}
+ $lineParams['recentChangesFlagsRaw'] = [];
if ( isset( $data['recentChangesFlags'] ) ) {
$lineParams['recentChangesFlags'] = $this->recentChangesFlags( $data['recentChangesFlags'] );
+ # FIXME: This is used by logic, don't return it in the template params.
+ $lineParams['recentChangesFlagsRaw'] = $data['recentChangesFlags'];
unset( $data['recentChangesFlags'] );
}
diff --git a/includes/changes/RecentChange.php b/includes/changes/RecentChange.php
index b6a086805e..159cfd93de 100644
--- a/includes/changes/RecentChange.php
+++ b/includes/changes/RecentChange.php
@@ -461,6 +461,7 @@ class RecentChange {
*/
public function doMarkPatrolled( User $user, $auto = false, $tags = null ) {
global $wgUseRCPatrol, $wgUseNPPatrol, $wgUseFilePatrol;
+
$errors = [];
// If recentchanges patrol is disabled, only new pages or new file versions
// can be patrolled, provided the appropriate config variable is set
@@ -497,8 +498,8 @@ class RecentChange {
PatrolLog::record( $this, $auto, $user, $tags );
Hooks::run(
- 'MarkPatrolledComplete',
- [ $this->getAttribute( 'rc_id' ), &$user, false, $auto ]
+ 'MarkPatrolledComplete',
+ [ $this->getAttribute( 'rc_id' ), &$user, false, $auto ]
);
return [];
@@ -719,11 +720,12 @@ class RecentChange {
* @param int $newId
* @param string $actionCommentIRC
* @param int $revId Id of associated revision, if any
+ * @param bool $isPatrollable Whether this log entry is patrollable
* @return RecentChange
*/
public static function newLogEntry( $timestamp, &$title, &$user, $actionComment, $ip,
$type, $action, $target, $logComment, $params, $newId = 0, $actionCommentIRC = '',
- $revId = 0 ) {
+ $revId = 0, $isPatrollable = false ) {
global $wgRequest;
# # Get pageStatus for email notification
@@ -747,9 +749,8 @@ class RecentChange {
break;
}
- // Allow unpatrolled status when an associated rev id is passed
- // May be used in core by moves and uploads
- $markPatrolled = ( $revId > 0 ) ? $user->isAllowed( 'autopatrol' ) : true;
+ // Allow unpatrolled status for patrollable log entries
+ $markPatrolled = $isPatrollable ? $user->isAllowed( 'autopatrol' ) : true;
$rc = new RecentChange;
$rc->mTitle = $target;
@@ -850,7 +851,9 @@ class RecentChange {
'rc_logid' => 0,
'rc_log_type' => null,
'rc_log_action' => '',
- 'rc_params' => ''
+ 'rc_params' => serialize( [
+ 'hidden-cat' => WikiCategoryPage::factory( $categoryTitle )->isHidden()
+ ] )
];
$rc->mExtra = [
@@ -864,6 +867,19 @@ class RecentChange {
return $rc;
}
+ /**
+ * Get a parameter value
+ *
+ * @since 1.27
+ *
+ * @param string $name parameter name
+ * @return mixed
+ */
+ public function getParam( $name ) {
+ $params = $this->parseParams();
+ return isset( $params[$name] ) ? $params[$name] : null;
+ }
+
/**
* Initialises the members of this object from a mysql row object
*
@@ -972,7 +988,7 @@ class RecentChange {
*
* @since 1.26
*
- * @return array|null
+ * @return mixed|bool false on failed unserialization
*/
public function parseParams() {
$rcParams = $this->getAttribute( 'rc_params' );
diff --git a/includes/collation/Collation.php b/includes/collation/Collation.php
new file mode 100644
index 0000000000..9fb06604f8
--- /dev/null
+++ b/includes/collation/Collation.php
@@ -0,0 +1,121 @@
+digitTransformLanguage = Language::factory( 'ckb' );
+ }
+}
diff --git a/includes/collation/CollationEt.php b/includes/collation/CollationEt.php
new file mode 100644
index 0000000000..5dc9fa29ec
--- /dev/null
+++ b/includes/collation/CollationEt.php
@@ -0,0 +1,60 @@
+ [ "Ð" ],
+ 'be-tarask' => [ "Ð" ],
+ 'cy' => [ "Ch", "Dd", "Ff", "Ng", "Ll", "Ph", "Rh", "Th" ],
+ 'en' => [],
+ 'fa' => [ "Ø¢", "Ø¡", "Ù" ],
+ 'fi' => [ "Ã
", "Ã", "Ã" ],
+ 'fr' => [],
+ 'hu' => [ "Cs", "Dz", "Dzs", "Gy", "Ly", "Ny", "Ã", "Sz", "Ty", "Ã", "Zs" ],
+ 'is' => [ "Ã", "Ã", "Ã", "Ã", "Ã", "Ã", "Ã", "Ã", "Ã", "Ã", "Ã
" ],
+ 'it' => [],
+ 'lv' => [ "Ä", "Ä¢", "Ķ", "Ä»", "Å
", "Š", "Ž" ],
+ 'pl' => [ "Ä", "Ä", "Ä", "Å", "Å", "Ã", "Å", "Ź", "Å»" ],
+ 'pt' => [],
+ 'ru' => [],
+ 'sv' => [ "Ã
", "Ã", "Ã" ],
+ 'sv@collation=standard' => [ "Ã
", "Ã", "Ã" ],
+ 'uk' => [ "Ò", "Ь" ],
+ 'vi' => [ "Ä", "Ã", "Ä", "Ã", "Ã", "Æ ", "Ư" ],
+ // Not verified, but likely correct
+ 'af' => [],
+ 'ast' => [ "Ch", "Ll", "Ã" ],
+ 'az' => [ "Ã", "Æ", "Ä", "Ä°", "Ã", "Å", "Ã" ],
+ 'bg' => [],
+ 'br' => [ "Ch", "C'h" ],
+ 'bs' => [ "Ä", "Ä", "Dž", "Ä", "Lj", "Nj", "Å ", "Ž" ],
+ 'ca' => [],
+ 'co' => [],
+ 'cs' => [ "Ä", "Ch", "Å", "Å ", "Ž" ],
+ 'da' => [ "Ã", "Ã", "Ã
" ],
+ 'de' => [],
+ 'dsb' => [ "Ä", "Ä", "Dź", "Ä", "Ch", "Å", "Å", "Å", "Å ", "Å", "Ž", "Ź" ],
+ 'el' => [],
+ 'eo' => [ "Ä", "Ä", "Ĥ", "Ä´", "Å", "Ŭ" ],
+ 'es' => [ "Ã" ],
+ 'et' => [ "Å ", "Ž", "Ã", "Ã", "Ã", "Ã", "W" ], // added W for CollationEt (xx-uca-et)
+ 'eu' => [ "Ã" ],
+ 'fo' => [ "Ã", "Ã", "Ã", "Ã", "Ã", "Ã", "Ã", "Ã", "Ã
" ],
+ 'fur' => [ "Ã", "Ã", "Ã", "Ã", "Ã", "Ã", "Ã" ],
+ 'fy' => [],
+ 'ga' => [],
+ 'gd' => [],
+ 'gl' => [ "Ch", "Ll", "Ã" ],
+ 'hr' => [ "Ä", "Ä", "Dž", "Ä", "Lj", "Nj", "Å ", "Ž" ],
+ 'hsb' => [ "Ä", "Dź", "Ä", "Ch", "Å", "Å", "Å", "Å ", "Ä", "Ž" ],
+ 'kk' => [ "Ò®", "Ð" ],
+ 'kl' => [ "Ã", "Ã", "Ã
" ],
+ 'ku' => [ "Ã", "Ã", "Ã", "Å", "Ã" ],
+ 'ky' => [ "Ð" ],
+ 'la' => [],
+ 'lb' => [],
+ 'lt' => [ "Ä", "Å ", "Ž" ],
+ 'mk' => [],
+ 'mo' => [ "Ä", "Ã", "Ã", "Å", "Å¢" ],
+ 'mt' => [ "Ä", "Ä ", "Għ", "Ħ", "Å»" ],
+ 'nl' => [],
+ 'no' => [ "Ã", "Ã", "Ã
" ],
+ 'oc' => [],
+ 'rm' => [],
+ 'ro' => [ "Ä", "Ã", "Ã", "Å", "Å¢" ],
+ 'rup' => [ "Ä", "Ã", "Ã", "Ľ", "Å", "Å", "Å¢" ],
+ 'sco' => [],
+ 'sk' => [ "Ã", "Ä", "Ch", "Ã", "Å ", "Ž" ],
+ 'sl' => [ "Ä", "Å ", "Ž" ],
+ 'smn' => [ "Ã", "Ä", "Ä", "Å", "Å ", "Ŧ", "Ž", "Ã", "Ã", "Ã
", "Ã", "Ã" ],
+ 'sq' => [ "Ã", "Dh", "Ã", "Gj", "Ll", "Nj", "Rr", "Sh", "Th", "Xh", "Zh" ],
+ 'sr' => [],
+ 'tk' => [ "Ã", "Ã", "Ž", "Å", "Ã", "Å", "Ã", "Ã" ],
+ 'tl' => [ "Ã", "Ng" ],
+ 'tr' => [ "Ã", "Ä", "Ä°", "Ã", "Å", "Ã" ],
+ 'tt' => [ "Ó", "Ó¨", "Ò®", "Ò", "Ò¢", "Òº" ],
+ 'uz' => [ "Ch", "G'", "Ng", "O'", "Sh" ],
+ ];
+
+ /**
+ * @since 1.16.3
+ */
+ const RECORD_LENGTH = 14;
+
+ public function __construct( $locale ) {
+ if ( !extension_loaded( 'intl' ) ) {
+ throw new MWException( 'An ICU collation was requested, ' .
+ 'but the intl extension is not available.' );
+ }
+
+ $this->locale = $locale;
+ // Drop everything after the '@' in locale's name
+ $localeParts = explode( '@', $locale );
+ $this->digitTransformLanguage = Language::factory( $locale === 'root' ? 'en' : $localeParts[0] );
+
+ $this->mainCollator = Collator::create( $locale );
+ if ( !$this->mainCollator ) {
+ throw new MWException( "Invalid ICU locale specified for collation: $locale" );
+ }
+
+ $this->primaryCollator = Collator::create( $locale );
+ $this->primaryCollator->setStrength( Collator::PRIMARY );
+ }
+
+ public function getSortKey( $string ) {
+ // intl extension produces non null-terminated
+ // strings. Appending '' fixes it so that it doesn't generate
+ // a warning on each access in debug php.
+ MediaWiki\suppressWarnings();
+ $key = $this->mainCollator->getSortKey( $string ) . '';
+ MediaWiki\restoreWarnings();
+ return $key;
+ }
+
+ public function getPrimarySortKey( $string ) {
+ MediaWiki\suppressWarnings();
+ $key = $this->primaryCollator->getSortKey( $string ) . '';
+ MediaWiki\restoreWarnings();
+ return $key;
+ }
+
+ public function getFirstLetter( $string ) {
+ $string = strval( $string );
+ if ( $string === '' ) {
+ return '';
+ }
+
+ // Check for CJK
+ $firstChar = mb_substr( $string, 0, 1, 'UTF-8' );
+ if ( ord( $firstChar ) > 0x7f && self::isCjk( UtfNormal\Utils::utf8ToCodepoint( $firstChar ) ) ) {
+ return $firstChar;
+ }
+
+ $sortKey = $this->getPrimarySortKey( $string );
+
+ // Do a binary search to find the correct letter to sort under
+ $min = ArrayUtils::findLowerBound(
+ [ $this, 'getSortKeyByLetterIndex' ],
+ $this->getFirstLetterCount(),
+ 'strcmp',
+ $sortKey );
+
+ if ( $min === false ) {
+ // Before the first letter
+ return '';
+ }
+ return $this->getLetterByIndex( $min );
+ }
+
+ /**
+ * @since 1.16.3
+ */
+ public function getFirstLetterData() {
+ if ( $this->firstLetterData !== null ) {
+ return $this->firstLetterData;
+ }
+
+ $cache = ObjectCache::getLocalServerInstance( CACHE_ANYTHING );
+ $cacheKey = $cache->makeKey(
+ 'first-letters',
+ $this->locale,
+ $this->digitTransformLanguage->getCode(),
+ self::getICUVersion()
+ );
+ $cacheEntry = $cache->get( $cacheKey );
+
+ if ( $cacheEntry && isset( $cacheEntry['version'] )
+ && $cacheEntry['version'] == self::FIRST_LETTER_VERSION
+ ) {
+ $this->firstLetterData = $cacheEntry;
+ return $this->firstLetterData;
+ }
+
+ // Generate data from serialized data file
+
+ if ( isset( self::$tailoringFirstLetters[$this->locale] ) ) {
+ $letters = wfGetPrecompiledData( "first-letters-root.ser" );
+ // Append additional characters
+ $letters = array_merge( $letters, self::$tailoringFirstLetters[$this->locale] );
+ // Remove unnecessary ones, if any
+ if ( isset( self::$tailoringFirstLetters['-' . $this->locale] ) ) {
+ $letters = array_diff( $letters, self::$tailoringFirstLetters['-' . $this->locale] );
+ }
+ // Apply digit transforms
+ $digits = [ '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' ];
+ $letters = array_diff( $letters, $digits );
+ foreach ( $digits as $digit ) {
+ $letters[] = $this->digitTransformLanguage->formatNum( $digit, true );
+ }
+ } else {
+ $letters = wfGetPrecompiledData( "first-letters-{$this->locale}.ser" );
+ if ( $letters === false ) {
+ throw new MWException( "MediaWiki does not support ICU locale " .
+ "\"{$this->locale}\"" );
+ }
+ }
+
+ /* Sort the letters.
+ *
+ * It's impossible to have the precompiled data file properly sorted,
+ * because the sort order changes depending on ICU version. If the
+ * array is not properly sorted, the binary search will return random
+ * results.
+ *
+ * We also take this opportunity to remove primary collisions.
+ */
+ $letterMap = [];
+ foreach ( $letters as $letter ) {
+ $key = $this->getPrimarySortKey( $letter );
+ if ( isset( $letterMap[$key] ) ) {
+ // Primary collision
+ // Keep whichever one sorts first in the main collator
+ if ( $this->mainCollator->compare( $letter, $letterMap[$key] ) < 0 ) {
+ $letterMap[$key] = $letter;
+ }
+ } else {
+ $letterMap[$key] = $letter;
+ }
+ }
+ ksort( $letterMap, SORT_STRING );
+
+ /* Remove duplicate prefixes. Basically if something has a sortkey
+ * which is a prefix of some other sortkey, then it is an
+ * expansion and probably should not be considered a section
+ * header.
+ *
+ * For example 'þ' is sometimes sorted as if it is the letters
+ * 'th'. Other times it is its own primary element. Another
+ * example is 'â¨'. Sometimes its a currency symbol. Sometimes it
+ * is an 'R' followed by an 's'.
+ *
+ * Additionally an expanded element should always sort directly
+ * after its first element due to they way sortkeys work.
+ *
+ * UCA sortkey elements are of variable length but no collation
+ * element should be a prefix of some other element, so I think
+ * this is safe. See:
+ * - https://ssl.icu-project.org/repos/icu/icuhtml/trunk/design/collation/ICU_collation_design.htm
+ * - http://site.icu-project.org/design/collation/uca-weight-allocation
+ *
+ * Additionally, there is something called primary compression to
+ * worry about. Basically, if you have two primary elements that
+ * are more than one byte and both start with the same byte then
+ * the first byte is dropped on the second primary. Additionally
+ * either \x03 or \xFF may be added to mean that the next primary
+ * does not start with the first byte of the first primary.
+ *
+ * This shouldn't matter much, as the first primary is not
+ * changed, and that is what we are comparing against.
+ *
+ * tl;dr: This makes some assumptions about how icu implements
+ * collations. It seems incredibly unlikely these assumptions
+ * will change, but nonetheless they are assumptions.
+ */
+
+ $prev = false;
+ $duplicatePrefixes = [];
+ foreach ( $letterMap as $key => $value ) {
+ // Remove terminator byte. Otherwise the prefix
+ // comparison will get hung up on that.
+ $trimmedKey = rtrim( $key, "\0" );
+ if ( $prev === false || $prev === '' ) {
+ $prev = $trimmedKey;
+ // We don't yet have a collation element
+ // to compare against, so continue.
+ continue;
+ }
+
+ // Due to the fact the array is sorted, we only have
+ // to compare with the element directly previous
+ // to the current element (skipping expansions).
+ // An element "X" will always sort directly
+ // before "XZ" (Unless we have "XY", but we
+ // do not update $prev in that case).
+ if ( substr( $trimmedKey, 0, strlen( $prev ) ) === $prev ) {
+ $duplicatePrefixes[] = $key;
+ // If this is an expansion, we don't want to
+ // compare the next element to this element,
+ // but to what is currently $prev
+ continue;
+ }
+ $prev = $trimmedKey;
+ }
+ foreach ( $duplicatePrefixes as $badKey ) {
+ wfDebug( "Removing '{$letterMap[$badKey]}' from first letters.\n" );
+ unset( $letterMap[$badKey] );
+ // This code assumes that unsetting does not change sort order.
+ }
+ $data = [
+ 'chars' => array_values( $letterMap ),
+ 'keys' => array_keys( $letterMap ),
+ 'version' => self::FIRST_LETTER_VERSION,
+ ];
+
+ // Reduce memory usage before caching
+ unset( $letterMap );
+
+ // Save to cache
+ $this->firstLetterData = $data;
+ $cache->set( $cacheKey, $data, $cache::TTL_WEEK );
+ return $data;
+ }
+
+ /**
+ * @since 1.16.3
+ */
+ public function getLetterByIndex( $index ) {
+ if ( $this->firstLetterData === null ) {
+ $this->getFirstLetterData();
+ }
+ return $this->firstLetterData['chars'][$index];
+ }
+
+ /**
+ * @since 1.16.3
+ */
+ public function getSortKeyByLetterIndex( $index ) {
+ if ( $this->firstLetterData === null ) {
+ $this->getFirstLetterData();
+ }
+ return $this->firstLetterData['keys'][$index];
+ }
+
+ /**
+ * @since 1.16.3
+ */
+ public function getFirstLetterCount() {
+ if ( $this->firstLetterData === null ) {
+ $this->getFirstLetterData();
+ }
+ return count( $this->firstLetterData['chars'] );
+ }
+
+ /**
+ * @since 1.16.3
+ */
+ public static function isCjk( $codepoint ) {
+ foreach ( self::$cjkBlocks as $block ) {
+ if ( $codepoint >= $block[0] && $codepoint <= $block[1] ) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ /**
+ * Return the version of ICU library used by PHP's intl extension,
+ * or false when the extension is not installed of the version
+ * can't be determined.
+ *
+ * The constant INTL_ICU_VERSION this function refers to isn't really
+ * documented. It is available since PHP 5.3.7 (see PHP bug 54561).
+ * This function will return false on older PHPs.
+ *
+ * @since 1.21
+ * @return string|bool
+ */
+ static function getICUVersion() {
+ return defined( 'INTL_ICU_VERSION' ) ? INTL_ICU_VERSION : false;
+ }
+
+ /**
+ * Return the version of Unicode appropriate for the version of ICU library
+ * currently in use, or false when it can't be determined.
+ *
+ * @since 1.21
+ * @return string|bool
+ */
+ static function getUnicodeVersionForICU() {
+ $icuVersion = IcuCollation::getICUVersion();
+ if ( !$icuVersion ) {
+ return false;
+ }
+
+ $versionPrefix = substr( $icuVersion, 0, 3 );
+ // Source: http://site.icu-project.org/download
+ $map = [
+ '50.' => '6.2',
+ '49.' => '6.1',
+ '4.8' => '6.0',
+ '4.6' => '6.0',
+ '4.4' => '5.2',
+ '4.2' => '5.1',
+ '4.0' => '5.1',
+ '3.8' => '5.0',
+ '3.6' => '5.0',
+ '3.4' => '4.1',
+ ];
+
+ if ( isset( $map[$versionPrefix] ) ) {
+ return $map[$versionPrefix];
+ } else {
+ return false;
+ }
+ }
+}
diff --git a/includes/collation/IdentityCollation.php b/includes/collation/IdentityCollation.php
new file mode 100644
index 0000000000..46e7f38f5b
--- /dev/null
+++ b/includes/collation/IdentityCollation.php
@@ -0,0 +1,44 @@
+firstChar( $string );
+ }
+}
diff --git a/includes/collation/UppercaseCollation.php b/includes/collation/UppercaseCollation.php
new file mode 100644
index 0000000000..92a4c3b47a
--- /dev/null
+++ b/includes/collation/UppercaseCollation.php
@@ -0,0 +1,44 @@
+lang = Language::factory( 'en' );
+ }
+
+ public function getSortKey( $string ) {
+ return $this->lang->uc( $string );
+ }
+
+ public function getFirstLetter( $string ) {
+ if ( $string[0] == "\0" ) {
+ $string = substr( $string, 1 );
+ }
+ return $this->lang->ucfirst( $this->lang->firstChar( $string ) );
+ }
+
+}
diff --git a/includes/config/ConfigFactory.php b/includes/config/ConfigFactory.php
index d52103cf28..4b803d8eaf 100644
--- a/includes/config/ConfigFactory.php
+++ b/includes/config/ConfigFactory.php
@@ -42,36 +42,12 @@ class ConfigFactory {
protected $configs = [];
/**
- * @var ConfigFactory
- */
- private static $self;
-
- /**
+ * @deprecated since 1.27, use MediaWikiServices::getConfigFactory() instead.
+ *
* @return ConfigFactory
*/
public static function getDefaultInstance() {
- if ( !self::$self ) {
- self::$self = new self;
- global $wgConfigRegistry;
- foreach ( $wgConfigRegistry as $name => $callback ) {
- self::$self->register( $name, $callback );
- }
- }
- return self::$self;
- }
-
- /**
- * Destroy the default instance
- * Should only be called inside unit tests
- * @throws MWException
- * @codeCoverageIgnore
- */
- public static function destroyDefaultInstance() {
- if ( !defined( 'MW_PHPUNIT_TEST' ) ) {
- throw new MWException( __METHOD__ . ' was called outside of unit tests' );
- }
-
- self::$self = null;
+ return \MediaWiki\MediaWikiServices::getInstance()->getConfigFactory();
}
/**
diff --git a/includes/context/ContextSource.php b/includes/context/ContextSource.php
index 911ecdd5ab..b61787169c 100644
--- a/includes/context/ContextSource.php
+++ b/includes/context/ContextSource.php
@@ -18,6 +18,8 @@
* @author Happy-melon
* @file
*/
+use Liuggio\StatsdClient\Factory\StatsdDataFactory;
+use MediaWiki\MediaWikiServices;
/**
* The simplest way of implementing IContextSource is to hold a RequestContext as a
@@ -165,8 +167,10 @@ abstract class ContextSource implements IContextSource {
/**
* Get the Stats object
*
+ * @deprecated since 1.27 use a StatsdDataFactory from MediaWikiServices (preferably injected)
+ *
* @since 1.25
- * @return BufferingStatsdDataFactory
+ * @return StatsdDataFactory
*/
public function getStats() {
return $this->getContext()->getStats();
diff --git a/includes/context/DerivativeContext.php b/includes/context/DerivativeContext.php
index 1b881e49dd..e77a058d1d 100644
--- a/includes/context/DerivativeContext.php
+++ b/includes/context/DerivativeContext.php
@@ -18,6 +18,8 @@
* @author Daniel Friesen
* @file
*/
+use Liuggio\StatsdClient\Factory\StatsdDataFactory;
+use MediaWiki\MediaWikiServices;
/**
* An IContextSource implementation which will inherit context from another source
@@ -67,11 +69,6 @@ class DerivativeContext extends ContextSource implements MutableContext {
*/
private $config;
- /**
- * @var Stats
- */
- private $stats;
-
/**
* @var Timing
*/
@@ -110,14 +107,12 @@ class DerivativeContext extends ContextSource implements MutableContext {
/**
* Get the stats object
*
- * @return BufferingStatsdDataFactory
+ * @deprecated since 1.27 use a StatsdDataFactory from MediaWikiServices (preferably injected)
+ *
+ * @return StatsdDataFactory
*/
public function getStats() {
- if ( !is_null( $this->stats ) ) {
- return $this->stats;
- } else {
- return $this->getContext()->getStats();
- }
+ return MediaWikiServices::getInstance()->getStatsdDataFactory();
}
/**
diff --git a/includes/context/IContextSource.php b/includes/context/IContextSource.php
index 750389ddd5..ccefc72f1b 100644
--- a/includes/context/IContextSource.php
+++ b/includes/context/IContextSource.php
@@ -21,6 +21,8 @@
* @file
*/
+use Liuggio\StatsdClient\Factory\StatsdDataFactory;
+
/**
* Interface for objects which can provide a MediaWiki context on request
*
@@ -126,8 +128,10 @@ interface IContextSource {
/**
* Get the stats object
*
+ * @deprecated since 1.27 use a StatsdDataFactory from MediaWikiServices (preferably injected)
+ *
* @since 1.25
- * @return BufferingStatsdDataFactory
+ * @return StatsdDataFactory
*/
public function getStats();
diff --git a/includes/context/RequestContext.php b/includes/context/RequestContext.php
index c8b8108830..c87798eab0 100644
--- a/includes/context/RequestContext.php
+++ b/includes/context/RequestContext.php
@@ -22,7 +22,9 @@
* @file
*/
+use Liuggio\StatsdClient\Factory\StatsdDataFactory;
use MediaWiki\Logger\LoggerFactory;
+use MediaWiki\MediaWikiServices;
/**
* Group all the pieces relevant to the context of a request into one instance
@@ -63,11 +65,6 @@ class RequestContext implements IContextSource, MutableContext {
*/
private $skin;
- /**
- * @var \Liuggio\StatsdClient\Factory\StatsdDataFactory
- */
- private $stats;
-
/**
* @var Timing
*/
@@ -138,14 +135,12 @@ class RequestContext implements IContextSource, MutableContext {
/**
* Get the Stats object
*
- * @return BufferingStatsdDataFactory
+ * @deprecated since 1.27 use a StatsdDataFactory from MediaWikiServices (preferably injected)
+ *
+ * @return StatsdDataFactory
*/
public function getStats() {
- if ( $this->stats === null ) {
- $prefix = rtrim( $this->getConfig()->get( 'StatsdMetricPrefix' ), '.' );
- $this->stats = new BufferingStatsdDataFactory( $prefix );
- }
- return $this->stats;
+ return MediaWikiServices::getInstance()->getStatsdDataFactory();
}
/**
diff --git a/includes/db/Database.php b/includes/db/Database.php
index c065ee952a..c36cfdb453 100644
--- a/includes/db/Database.php
+++ b/includes/db/Database.php
@@ -1226,6 +1226,7 @@ abstract class DatabaseBase implements IDatabase {
return '';
}
+ // See IDatabase::select for the docs for this function
public function select( $table, $vars, $conds = '', $fname = __METHOD__,
$options = [], $join_conds = [] ) {
$sql = $this->selectSQLText( $table, $vars, $conds, $fname, $options, $join_conds );
@@ -1668,6 +1669,8 @@ abstract class DatabaseBase implements IDatabase {
* themselves. Pass the canonical name to such functions. This is only needed
* when calling query() directly.
*
+ * @note This function does not sanitize user input. It is not safe to use
+ * this function to escape user input.
* @param string $name Database table name
* @param string $format One of:
* quoted - Automatically pass the table name through addIdentifierQuotes()
@@ -1981,6 +1984,8 @@ abstract class DatabaseBase implements IDatabase {
* Returns if the given identifier looks quoted or not according to
* the database convention for quoting identifiers .
*
+ * @note Do not use this to determine if untrusted input is safe.
+ * A malicious user can trick this function.
* @param string $name
* @return bool
*/
diff --git a/includes/db/DatabaseMssql.php b/includes/db/DatabaseMssql.php
index ce34537aee..5c46c1a91a 100644
--- a/includes/db/DatabaseMssql.php
+++ b/includes/db/DatabaseMssql.php
@@ -1131,6 +1131,35 @@ class DatabaseMssql extends Database {
return strlen( $name ) && $name[0] == '[' && substr( $name, -1, 1 ) == ']';
}
+ /**
+ * MS SQL supports more pattern operators than other databases (ex: [,],^)
+ *
+ * @param string $s
+ * @return string
+ */
+ protected function escapeLikeInternal( $s ) {
+ return addcslashes( $s, '\%_[]^' );
+ }
+
+ /**
+ * MS SQL requires specifying the escape character used in a LIKE query
+ * or using Square brackets to surround characters that are to be escaped
+ * http://msdn.microsoft.com/en-us/library/ms179859.aspx
+ * Here we take the Specify-Escape-Character approach since it's less
+ * invasive, renders a query that is closer to other DB's and better at
+ * handling square bracket escaping
+ *
+ * @return string Fully built LIKE statement
+ */
+ public function buildLike() {
+ $params = func_get_args();
+ if ( count( $params ) > 0 && is_array( $params[0] ) ) {
+ $params = $params[0];
+ }
+
+ return parent::buildLike( $params ) . " ESCAPE '\' ";
+ }
+
/**
* @param string $db
* @return bool
diff --git a/includes/db/DatabaseMysqlBase.php b/includes/db/DatabaseMysqlBase.php
index 1e2720504c..13be911686 100644
--- a/includes/db/DatabaseMysqlBase.php
+++ b/includes/db/DatabaseMysqlBase.php
@@ -34,6 +34,8 @@ abstract class DatabaseMysqlBase extends Database {
protected $lastKnownSlavePos;
/** @var string Method to detect slave lag */
protected $lagDetectionMethod;
+ /** @var array Method to detect slave lag */
+ protected $lagDetectionOptions = [];
/** @var string|null */
private $serverVersion = null;
@@ -44,6 +46,10 @@ abstract class DatabaseMysqlBase extends Database {
* pt-heartbeat assumes the table is at heartbeat.heartbeat
* and uses UTC timestamps in the heartbeat.ts column.
* (https://www.percona.com/doc/percona-toolkit/2.2/pt-heartbeat.html)
+ * - lagDetectionOptions : if using pt-heartbeat, this can be set to an array map to change
+ * the default behavior. Normally, the heartbeat row with the server
+ * ID of this server's master will be used. Set the "conds" field to
+ * override the query conditions, e.g. ['shard' => 's1'].
* @param array $params
*/
function __construct( array $params ) {
@@ -52,6 +58,9 @@ abstract class DatabaseMysqlBase extends Database {
$this->lagDetectionMethod = isset( $params['lagDetectionMethod'] )
? $params['lagDetectionMethod']
: 'Seconds_Behind_Master';
+ $this->lagDetectionOptions = isset( $params['lagDetectionOptions'] )
+ ? $params['lagDetectionOptions']
+ : [];
}
/**
@@ -652,19 +661,30 @@ abstract class DatabaseMysqlBase extends Database {
* @return bool|float
*/
protected function getLagFromPtHeartbeat() {
- $masterInfo = $this->getMasterServerInfo();
- if ( !$masterInfo ) {
- wfLogDBError(
- "Unable to query master of {db_server} for server ID",
- $this->getLogContext( [
- 'method' => __METHOD__
- ] )
- );
+ $options = $this->lagDetectionOptions;
+
+ if ( isset( $options['conds'] ) ) {
+ // Best method for multi-DC setups: use logical channel names
+ $data = $this->getHeartbeatData( $options['conds'] );
+ } else {
+ // Standard method: use master server ID (works with stock pt-heartbeat)
+ $masterInfo = $this->getMasterServerInfo();
+ if ( !$masterInfo ) {
+ wfLogDBError(
+ "Unable to query master of {db_server} for server ID",
+ $this->getLogContext( [
+ 'method' => __METHOD__
+ ] )
+ );
+
+ return false; // could not get master server ID
+ }
- return false; // could not get master server ID
+ $conds = [ 'server_id' => intval( $masterInfo['serverId'] ) ];
+ $data = $this->getHeartbeatData( $conds );
}
- list( $time, $nowUnix ) = $this->getHeartbeatData( $masterInfo['serverId'] );
+ list( $time, $nowUnix ) = $data;
if ( $time !== null ) {
// @time is in ISO format like "2015-09-25T16:48:10.000510"
$dateTime = new DateTime( $time, new DateTimeZone( 'UTC' ) );
@@ -722,17 +742,17 @@ abstract class DatabaseMysqlBase extends Database {
}
/**
- * @param string $masterId Server ID
- * @return array (heartbeat `ts` column value or null, UNIX timestamp)
+ * @param array $conds WHERE clause conditions to find a row
+ * @return array (heartbeat `ts` column value or null, UNIX timestamp) for the newest beat
* @see https://www.percona.com/doc/percona-toolkit/2.1/pt-heartbeat.html
*/
- protected function getHeartbeatData( $masterId ) {
- // Get the status row for this master; use the oldest for sanity in case the master
- // has entries listed under different server IDs (which should really not happen).
- // Note: this would use "MAX(TIMESTAMPDIFF(MICROSECOND,ts,UTC_TIMESTAMP(6)))" but the
+ protected function getHeartbeatData( array $conds ) {
+ $whereSQL = $this->makeList( $conds, LIST_AND );
+ // Use ORDER BY for channel based queries since that field might not be UNIQUE.
+ // Note: this would use "TIMESTAMPDIFF(MICROSECOND,ts,UTC_TIMESTAMP(6))" but the
// percision field is not supported in MySQL <= 5.5.
$res = $this->query(
- "SELECT ts FROM heartbeat.heartbeat WHERE server_id=" . intval( $masterId )
+ "SELECT ts FROM heartbeat.heartbeat WHERE $whereSQL ORDER BY ts DESC LIMIT 1"
);
$row = $res ? $res->fetchObject() : false;
diff --git a/includes/db/DatabasePostgres.php b/includes/db/DatabasePostgres.php
index d42871057c..839d6a0ec2 100644
--- a/includes/db/DatabasePostgres.php
+++ b/includes/db/DatabasePostgres.php
@@ -392,9 +392,7 @@ class DatabasePostgres extends Database {
}
public function doQuery( $sql ) {
- if ( function_exists( 'mb_convert_encoding' ) ) {
- $sql = mb_convert_encoding( $sql, 'UTF-8' );
- }
+ $sql = mb_convert_encoding( $sql, 'UTF-8' );
// Clear previously left over PQresult
while ( $res = pg_get_result( $this->mConn ) ) {
pg_free_result( $res );
@@ -840,7 +838,7 @@ __INDEXATTR__;
$tempres = (bool)$this->query( $tempsql, $fname, $savepoint );
if ( $savepoint ) {
- $bar = pg_last_error();
+ $bar = pg_result_error( $this->mLastResult );
if ( $bar != false ) {
$savepoint->rollback();
} else {
@@ -865,7 +863,7 @@ __INDEXATTR__;
$sql .= '(' . $this->makeList( $args ) . ')';
$res = (bool)$this->query( $sql, $fname, $savepoint );
if ( $savepoint ) {
- $bar = pg_last_error();
+ $bar = pg_result_error( $this->mLastResult );
if ( $bar != false ) {
$savepoint->rollback();
} else {
@@ -948,7 +946,7 @@ __INDEXATTR__;
$res = (bool)$this->query( $sql, $fname, $savepoint );
if ( $savepoint ) {
- $bar = pg_last_error();
+ $bar = pg_result_error( $this->mLastResult );
if ( $bar != false ) {
$savepoint->rollback();
} else {
diff --git a/includes/db/IDatabase.php b/includes/db/IDatabase.php
index 8b1c3dff22..710efb2ca6 100644
--- a/includes/db/IDatabase.php
+++ b/includes/db/IDatabase.php
@@ -520,9 +520,11 @@ interface IDatabase {
* for use in field names (e.g. a.user_name).
*
* All of the table names given here are automatically run through
- * IDatabase::tableName(), which causes the table prefix (if any) to be
+ * DatabaseBase::tableName(), which causes the table prefix (if any) to be
* added, and various other table name mappings to be performed.
*
+ * Do not use untrusted user input as a table name. Alias names should
+ * not have characters outside of the Basic multilingual plane.
*
* @param string|array $vars
*
@@ -537,6 +539,7 @@ interface IDatabase {
* If an expression is given, care must be taken to ensure that it is
* DBMS-independent.
*
+ * Untrusted user input must not be passed to this parameter.
*
* @param string|array $conds
*
@@ -563,6 +566,10 @@ interface IDatabase {
* - IDatabase::buildLike()
* - IDatabase::conditional()
*
+ * Untrusted user input is safe in the values of string keys, however untrusted
+ * input must not be used in the array key names or in the values of numeric keys.
+ * Escaping of untrusted input used in values of numeric keys should be done via
+ * IDatabase::addQuotes()
*
* @param string|array $options
*
@@ -628,8 +635,9 @@ interface IDatabase {
*
* The key of the array contains the table name or alias. The value is an
* array with two elements, numbered 0 and 1. The first gives the type of
- * join, the second is an SQL fragment giving the join condition for that
- * table. For example:
+ * join, the second is the same as the $conds parameter. Thus it can be
+ * an SQL fragment, or an array where the string keys are equality and the
+ * numeric keys are SQL fragments all AND'd together. For example:
*
* array( 'page' => array( 'LEFT JOIN', 'page_latest=rev_id' ) )
*
@@ -794,7 +802,7 @@ interface IDatabase {
* IDatabase::affectedRows().
*
* @param string $table Table name. This will be passed through
- * IDatabase::tableName().
+ * DatabaseBase::tableName().
* @param array $a Array of rows to insert
* @param string $fname Calling function name (use __METHOD__) for logs/profiling
* @param array $options Array of options
@@ -807,7 +815,7 @@ interface IDatabase {
* UPDATE wrapper. Takes a condition array and a SET array.
*
* @param string $table Name of the table to UPDATE. This will be passed through
- * IDatabase::tableName().
+ * DatabaseBase::tableName().
* @param array $values An array of values to SET. For each array element,
* the key gives the field name, and the value gives the data to set
* that field to. The data will be quoted by IDatabase::addQuotes().
@@ -1020,7 +1028,7 @@ interface IDatabase {
*
* @since 1.22
*
- * @param string $table Table name. This will be passed through IDatabase::tableName().
+ * @param string $table Table name. This will be passed through DatabaseBase::tableName().
* @param array $rows A single row or list of rows to insert
* @param array $uniqueIndexes List of single field names or field name tuples
* @param array $set An array of values to SET. For each array element, the
diff --git a/includes/db/loadbalancer/LBFactory.php b/includes/db/loadbalancer/LBFactory.php
index a484bb44bd..f39596b75e 100644
--- a/includes/db/loadbalancer/LBFactory.php
+++ b/includes/db/loadbalancer/LBFactory.php
@@ -247,11 +247,7 @@ abstract class LBFactory {
} );
} );
- $start = microtime( true );
$this->forEachLBCallMethod( 'commitMasterChanges', [ $fname ] );
- $timeMs = 1000 * ( microtime( true ) - $start );
-
- RequestContext::getMain()->getStats()->timing( "db.commit-masters", $timeMs );
}
/**
diff --git a/includes/db/loadbalancer/LBFactoryMulti.php b/includes/db/loadbalancer/LBFactoryMulti.php
index f8ddd123f2..3a543acc5b 100644
--- a/includes/db/loadbalancer/LBFactoryMulti.php
+++ b/includes/db/loadbalancer/LBFactoryMulti.php
@@ -23,7 +23,15 @@
/**
* A multi-wiki, multi-master factory for Wikimedia and similar installations.
- * Ignores the old configuration globals
+ * Ignores the old configuration globals.
+ *
+ * Template override precedence (highest => lowest):
+ * - templateOverridesByServer
+ * - masterTemplateOverrides
+ * - templateOverridesBySection/templateOverridesByCluster
+ * - externalTemplateOverrides
+ * - serverTemplate
+ * Overrides only work on top level keys (so nested values will not be merged).
*
* Configuration:
* sectionsByDB A map of database names to section names.
@@ -63,7 +71,7 @@
* templateOverridesByServer A 2-d map overriding serverTemplate and
* externalTemplateOverrides on a server-by-server basis. Applies
* to both core and external storage.
- *
+ * templateOverridesBySection A 2-d map overriding the server info by section.
* templateOverridesByCluster A 2-d map overriding the server info by external storage cluster.
*
* masterTemplateOverrides An override array for all master servers.
@@ -119,6 +127,9 @@ class LBFactoryMulti extends LBFactory {
*/
private $templateOverridesByServer;
+ /** @var array A 2-d map overriding the server info by section */
+ private $templateOverridesBySection;
+
/** @var array A 2-d map overriding the server info by external storage cluster */
private $templateOverridesByCluster;
@@ -162,7 +173,7 @@ class LBFactoryMulti extends LBFactory {
$required = [ 'sectionsByDB', 'sectionLoads', 'serverTemplate' ];
$optional = [ 'groupLoadsBySection', 'groupLoadsByDB', 'hostsByName',
'externalLoads', 'externalTemplateOverrides', 'templateOverridesByServer',
- 'templateOverridesByCluster', 'masterTemplateOverrides',
+ 'templateOverridesByCluster', 'templateOverridesBySection', 'masterTemplateOverrides',
'readOnlyBySection', 'loadMonitorClass' ];
foreach ( $required as $key ) {
@@ -222,8 +233,13 @@ class LBFactoryMulti extends LBFactory {
$readOnlyReason = $this->readOnlyBySection[$section];
}
+ $template = $this->serverTemplate;
+ if ( isset( $this->templateOverridesBySection[$section] ) ) {
+ $template = $this->templateOverridesBySection[$section] + $template;
+ }
+
return $this->newLoadBalancer(
- $this->serverTemplate,
+ $template,
$this->sectionLoads[$section],
$groupLoads,
$readOnlyReason
diff --git a/includes/db/loadbalancer/LoadBalancer.php b/includes/db/loadbalancer/LoadBalancer.php
index 997efa672a..741999c53d 100644
--- a/includes/db/loadbalancer/LoadBalancer.php
+++ b/includes/db/loadbalancer/LoadBalancer.php
@@ -161,19 +161,6 @@ class LoadBalancer {
return wfSetVar( $this->mParentInfo, $x );
}
- /**
- * Given an array of non-normalised probabilities, this function will select
- * an element and return the appropriate key
- *
- * @deprecated since 1.21, use ArrayUtils::pickRandom()
- *
- * @param array $weights
- * @return bool|int|string
- */
- public function pickRandom( array $weights ) {
- return ArrayUtils::pickRandom( $weights );
- }
-
/**
* @param array $loads
* @param bool|string $wiki Wiki to get non-lagged for
diff --git a/includes/debug/MWDebug.php b/includes/debug/MWDebug.php
index 81770d53cb..13d25a86b4 100644
--- a/includes/debug/MWDebug.php
+++ b/includes/debug/MWDebug.php
@@ -368,6 +368,9 @@ class MWDebug {
$sql
);
+ // last check for invalid utf8
+ $sql = UtfNormal\Validator::cleanUp( $sql );
+
self::$query[] = [
'sql' => $sql,
'function' => $function,
diff --git a/includes/debug/logger/monolog/LineFormatter.php b/includes/debug/logger/monolog/LineFormatter.php
index 13b80beafe..0ad9b159fa 100644
--- a/includes/debug/logger/monolog/LineFormatter.php
+++ b/includes/debug/logger/monolog/LineFormatter.php
@@ -99,7 +99,7 @@ class LineFormatter extends MonologLineFormatter {
* @param Exception $e
* @return string
*/
- protected function normalizeException( Exception $e ) {
+ protected function normalizeException( $e ) {
return $this->normalizeExceptionArray( $this->exceptionAsArray( $e ) );
}
diff --git a/includes/debug/logger/monolog/WikiProcessor.php b/includes/debug/logger/monolog/WikiProcessor.php
index 7f60f2e2e7..ad939a0932 100644
--- a/includes/debug/logger/monolog/WikiProcessor.php
+++ b/includes/debug/logger/monolog/WikiProcessor.php
@@ -21,7 +21,8 @@
namespace MediaWiki\Logger\Monolog;
/**
- * Injects `wfHostname()`, `wfWikiID()` and `$wgVersion` in all records.
+ * Annotate log records with request-global metadata, such as the hostname,
+ * wiki / request ID, and MediaWiki version.
*
* @since 1.25
* @author Bryan Davis
@@ -41,6 +42,7 @@ class WikiProcessor {
'host' => wfHostname(),
'wiki' => wfWikiID(),
'mwversion' => $wgVersion,
+ 'reqId' => \WebRequest::getRequestId(),
]
);
return $record;
diff --git a/includes/deferred/CdnCacheUpdate.php b/includes/deferred/CdnCacheUpdate.php
index 32f6adc642..65ff9f307d 100644
--- a/includes/deferred/CdnCacheUpdate.php
+++ b/includes/deferred/CdnCacheUpdate.php
@@ -22,6 +22,7 @@
*/
use Wikimedia\Assert\Assert;
+use MediaWiki\MediaWikiServices;
/**
* Handles purging appropriate CDN URLs given a title (or titles)
@@ -109,7 +110,8 @@ class CdnCacheUpdate implements DeferrableUpdate, MergeableUpdate {
wfDebugLog( 'squid', __METHOD__ . ': ' . implode( ' ', $urlArr ) );
// Reliably broadcast the purge to all edge nodes
- $relayer = EventRelayerGroup::singleton()->getRelayer( 'cdn-url-purges' );
+ $relayer = MediaWikiServices::getInstance()->getEventRelayerGroup()
+ ->getRelayer( 'cdn-url-purges' );
$relayer->notify(
'cdn-url-purges',
[
diff --git a/includes/deferred/SearchUpdate.php b/includes/deferred/SearchUpdate.php
index 2abf02875e..62c8b00f39 100644
--- a/includes/deferred/SearchUpdate.php
+++ b/includes/deferred/SearchUpdate.php
@@ -23,6 +23,8 @@
* @ingroup Search
*/
+use MediaWiki\MediaWikiServices;
+
/**
* Database independant search index updater
*
@@ -75,14 +77,15 @@ class SearchUpdate implements DeferrableUpdate {
* Perform actual update for the entry
*/
public function doUpdate() {
- global $wgDisableSearchUpdate;
+ $config = MediaWikiServices::getInstance()->getSearchEngineConfig();
- if ( $wgDisableSearchUpdate || !$this->id ) {
+ if ( $config->getConfig()->get( 'DisableSearchUpdate' ) || !$this->id ) {
return;
}
- foreach ( SearchEngine::getSearchTypes() as $type ) {
- $search = SearchEngine::create( $type );
+ $seFactory = MediaWikiServices::getInstance()->getSearchEngineFactory();
+ foreach ( $config->getSearchTypes() as $type ) {
+ $search = $seFactory->create( $type );
if ( !$search->supports( 'search-update' ) ) {
continue;
}
@@ -99,7 +102,7 @@ class SearchUpdate implements DeferrableUpdate {
$text = $search->getTextFromContent( $this->title, $this->content );
if ( !$search->textAlreadyUpdatedForIndex() ) {
- $text = self::updateText( $text );
+ $text = $this->updateText( $text, $search );
}
# Perform the actual update
@@ -113,14 +116,16 @@ class SearchUpdate implements DeferrableUpdate {
* If you're using a real search engine, you'll probably want to override
* this behavior and do something nicer with the original wikitext.
* @param string $text
+ * @param SearchEngine $se Search engine
* @return string
*/
- public static function updateText( $text ) {
+ public function updateText( $text, SearchEngine $se = null ) {
global $wgContLang;
# Language-specific strip/conversion
$text = $wgContLang->normalizeForSearch( $text );
- $lc = SearchEngine::legalSearchChars() . '';
+ $se = $se ?: MediaWikiServices::getInstance()->newSearchEngine();
+ $lc = $se->legalSearchChars() . '';
$text = preg_replace( "/<\\/?\\s*[A-Za-z][^>]*?>/",
' ', $wgContLang->lc( " " . $text . " " ) ); # Strip HTML markup
diff --git a/includes/diff/DifferenceEngine.php b/includes/diff/DifferenceEngine.php
index 4fdacc544e..1508cf1e83 100644
--- a/includes/diff/DifferenceEngine.php
+++ b/includes/diff/DifferenceEngine.php
@@ -1152,19 +1152,6 @@ class DifferenceEngine extends ContextSource {
return $header . $diff . "";
}
- /**
- * Use specified text instead of loading from the database
- * @deprecated since 1.21, use setContent() instead.
- */
- public function setText( $oldText, $newText ) {
- ContentHandler::deprecated( __METHOD__, "1.21" );
-
- $oldContent = ContentHandler::makeContent( $oldText, $this->getTitle() );
- $newContent = ContentHandler::makeContent( $newText, $this->getTitle() );
-
- $this->setContent( $oldContent, $newContent );
- }
-
/**
* Use specified text instead of loading from the database
* @param Content $oldContent
diff --git a/includes/diff/TableDiffFormatter.php b/includes/diff/TableDiffFormatter.php
index f1826edc5e..bcae7467f7 100644
--- a/includes/diff/TableDiffFormatter.php
+++ b/includes/diff/TableDiffFormatter.php
@@ -204,16 +204,13 @@ class TableDiffFormatter extends DiffFormatter {
# Notice that WordLevelDiff returns HTML-escaped output.
# Hence, we will be calling addedLine/deletedLine without HTML-escaping.
- $line = array_shift( $del );
- while ( $line ) {
- $aline = array_shift( $add );
- $this->writeOutput( '' . $this->deletedLine( $line ) .
- $this->addedLine( $aline ) . " \n" );
- $line = array_shift( $del );
- }
- foreach ( $add as $line ) { # If any leftovers
- $this->writeOutput( '' . $this->emptyLine() .
- $this->addedLine( $line ) . " \n" );
+ $ndel = count( $del );
+ $nadd = count( $add );
+ $n = max( $ndel, $nadd );
+ for ( $i = 0; $i < $n; $i++ ) {
+ $delLine = $i < $ndel ? $this->deletedLine( $del[$i] ) : $this->emptyLine();
+ $addLine = $i < $nadd ? $this->addedLine( $add[$i] ) : $this->emptyLine();
+ $this->writeOutput( "{$delLine}{$addLine} \n" );
}
}
diff --git a/includes/exception/MWException.php b/includes/exception/MWException.php
index e1d7e6cb4b..bebd91580f 100644
--- a/includes/exception/MWException.php
+++ b/includes/exception/MWException.php
@@ -141,7 +141,7 @@ class MWException extends Exception {
nl2br( htmlspecialchars( MWExceptionHandler::getRedactedTraceAsString( $this ) ) ) .
"
\n";
} else {
- $logId = MWExceptionHandler::getLogId( $this );
+ $logId = WebRequest::getRequestId();
$type = get_class( $this );
return "" .
'[' . $logId . '] ' .
diff --git a/includes/exception/MWExceptionHandler.php b/includes/exception/MWExceptionHandler.php
index b71f92c599..63adc29bfd 100644
--- a/includes/exception/MWExceptionHandler.php
+++ b/includes/exception/MWExceptionHandler.php
@@ -445,14 +445,13 @@ TXT;
* $wgShowExceptionDetails is set to false), to the entry in the debug log.
*
* @since 1.22
+ * @deprecated since 1.27: Exception IDs are synonymous with request IDs.
* @param Exception|Throwable $e
* @return string
*/
public static function getLogId( $e ) {
- if ( !isset( $e->_mwLogId ) ) {
- $e->_mwLogId = wfRandomString( 8 );
- }
- return $e->_mwLogId;
+ wfDeprecated( __METHOD__, '1.27' );
+ return WebRequest::getRequestId();
}
/**
@@ -478,7 +477,7 @@ TXT;
* @return string
*/
public static function getLogMessage( $e ) {
- $id = self::getLogId( $e );
+ $id = WebRequest::getRequestId();
$type = get_class( $e );
$file = $e->getFile();
$line = $e->getLine();
@@ -489,9 +488,9 @@ TXT;
}
public static function getPublicLogMessage( Exception $e ) {
- $logId = self::getLogId( $e );
+ $reqId = WebRequest::getRequestId();
$type = get_class( $e );
- return '[' . $logId . '] '
+ return '[' . $reqId . '] '
. gmdate( 'Y-m-d H:i:s' ) . ': '
. 'Fatal exception of type ' . $type;
}
@@ -509,7 +508,7 @@ TXT;
public static function getLogContext( $e ) {
return [
'exception' => $e,
- 'exception_id' => static::getLogId( $e ),
+ 'exception_id' => WebRequest::getRequestId(),
];
}
@@ -527,7 +526,7 @@ TXT;
public static function getStructuredExceptionData( $e ) {
global $wgLogExceptionBacktrace;
$data = [
- 'id' => self::getLogId( $e ),
+ 'id' => WebRequest::getRequestId(),
'type' => get_class( $e ),
'file' => $e->getFile(),
'line' => $e->getLine(),
diff --git a/includes/exception/PermissionsError.php b/includes/exception/PermissionsError.php
index 6ad2e37f10..bd0b1204d4 100644
--- a/includes/exception/PermissionsError.php
+++ b/includes/exception/PermissionsError.php
@@ -28,6 +28,10 @@
class PermissionsError extends ErrorPageError {
public $permission, $errors;
+ /**
+ * @param string $permission A permission name.
+ * @param string[] $errors Error message keys
+ */
public function __construct( $permission, $errors = [] ) {
global $wgLang;
diff --git a/includes/externalstore/ExternalStoreDB.php b/includes/externalstore/ExternalStoreDB.php
index a75ed27b08..b45457720e 100644
--- a/includes/externalstore/ExternalStoreDB.php
+++ b/includes/externalstore/ExternalStoreDB.php
@@ -33,6 +33,8 @@ class ExternalStoreDB extends ExternalStoreMedium {
* The provided URL is in the form of DB://cluster/id
* or DB://cluster/id/itemid for concatened storage.
*
+ * @param string $url
+ * @return string|bool False if missing
* @see ExternalStoreMedium::fetchFromURL()
*/
public function fetchFromURL( $url ) {
@@ -83,11 +85,8 @@ class ExternalStoreDB extends ExternalStoreMedium {
return $ret;
}
- /**
- * @see ExternalStoreMedium::store()
- */
- public function store( $cluster, $data ) {
- $dbw = $this->getMaster( $cluster );
+ public function store( $location, $data ) {
+ $dbw = $this->getMaster( $location );
$id = $dbw->nextSequenceValue( 'blob_blob_id_seq' );
$dbw->insert( $this->getTable( $dbw ),
[ 'blob_id' => $id, 'blob_text' => $data ],
@@ -97,7 +96,7 @@ class ExternalStoreDB extends ExternalStoreMedium {
throw new MWException( __METHOD__ . ': no insert ID' );
}
- return "DB://$cluster/$id";
+ return "DB://$location/$id";
}
/**
@@ -175,7 +174,7 @@ class ExternalStoreDB extends ExternalStoreMedium {
* @param string $cluster
* @param string $id
* @param string $itemID
- * @return mixed
+ * @return HistoryBlob|bool Returns false if missing
* @private
*/
function fetchBlob( $cluster, $id, $itemID ) {
diff --git a/includes/filebackend/FSFile.php b/includes/filebackend/FSFile.php
index 6311f766da..8aa11b6565 100644
--- a/includes/filebackend/FSFile.php
+++ b/includes/filebackend/FSFile.php
@@ -98,9 +98,22 @@ class FSFile {
* Get an associative array containing information about
* a file with the given storage path.
*
+ * Resulting array fields include:
+ * - fileExists
+ * - size (filesize in bytes)
+ * - mime (as major/minor)
+ * - media_type (value to be used with the MEDIATYPE_xxx constants)
+ * - metadata (handler specific)
+ * - sha1 (in base 36)
+ * - width
+ * - height
+ * - bits (bitrate)
+ * - file-mime
+ * - major_mime
+ * - minor_mime
+ *
* @param string|bool $ext The file extension, or true to extract it from the filename.
* Set it to false to ignore the extension.
- *
* @return array
*/
public function getProps( $ext = true ) {
@@ -151,6 +164,16 @@ class FSFile {
/**
* Placeholder file properties to use for files that don't exist
*
+ * Resulting array fields include:
+ * - fileExists
+ * - mime (as major/minor)
+ * - media_type (value to be used with the MEDIATYPE_xxx constants)
+ * - metadata (handler specific)
+ * - sha1 (in base 36)
+ * - width
+ * - height
+ * - bits (bitrate)
+ *
* @return array
*/
public static function placeholderProps() {
@@ -198,7 +221,6 @@ class FSFile {
* @return bool|string False on failure
*/
public function getSha1Base36( $recache = false ) {
-
if ( $this->sha1Base36 !== null && !$recache ) {
return $this->sha1Base36;
}
diff --git a/includes/filebackend/FileBackendMultiWrite.php b/includes/filebackend/FileBackendMultiWrite.php
index 6f40bda945..0d7bf6696a 100644
--- a/includes/filebackend/FileBackendMultiWrite.php
+++ b/includes/filebackend/FileBackendMultiWrite.php
@@ -178,7 +178,9 @@ class FileBackendMultiWrite extends FileBackend {
wfDebugLog( 'FileOperation', get_class( $this ) .
" failed sync check: " . FormatJson::encode( $relevantPaths ) );
// Try to resync the clone backends to the master on the spot...
- if ( !$this->autoResync || !$this->resyncFiles( $relevantPaths )->isOK() ) {
+ if ( $this->autoResync === false
+ || !$this->resyncFiles( $relevantPaths, $this->autoResync )->isOK()
+ ) {
$status->merge( $syncStatus );
return $status; // abort
@@ -322,9 +324,10 @@ class FileBackendMultiWrite extends FileBackend {
* and re-synchronize those files against the "multi master" if needed.
*
* @param array $paths List of storage paths
+ * @param string|bool $resyncMode False, True, or "conservative"; see __construct()
* @return Status
*/
- public function resyncFiles( array $paths ) {
+ public function resyncFiles( array $paths, $resyncMode = true ) {
$status = Status::newGood();
$mBackend = $this->backends[$this->masterIndex];
@@ -355,7 +358,7 @@ class FileBackendMultiWrite extends FileBackend {
if ( $mSha1 === $cSha1 ) {
// already synced; nothing to do
} elseif ( $mSha1 !== false ) { // file is in master
- if ( $this->autoResync === 'conservative'
+ if ( $resyncMode === 'conservative'
&& $cStat && $cStat['mtime'] > $mStat['mtime']
) {
$status->fatal( 'backend-fail-synced', $path );
@@ -367,7 +370,7 @@ class FileBackendMultiWrite extends FileBackend {
[ 'src' => $fsFile->getPath(), 'dst' => $cPath ]
) );
} elseif ( $mStat === false ) { // file is not in master
- if ( $this->autoResync === 'conservative' ) {
+ if ( $resyncMode === 'conservative' ) {
$status->fatal( 'backend-fail-synced', $path );
continue; // don't delete data
}
diff --git a/includes/filebackend/SwiftFileBackend.php b/includes/filebackend/SwiftFileBackend.php
index 1f2cb06181..0f7e4b569e 100644
--- a/includes/filebackend/SwiftFileBackend.php
+++ b/includes/filebackend/SwiftFileBackend.php
@@ -153,7 +153,7 @@ class SwiftFileBackend extends FileBackendStore {
}
protected function resolveContainerPath( $container, $relStoragePath ) {
- if ( !mb_check_encoding( $relStoragePath, 'UTF-8' ) ) { // mb_string required by CF
+ if ( !mb_check_encoding( $relStoragePath, 'UTF-8' ) ) {
return null; // not UTF-8, makes it hard to use CF and the swift HTTP API
} elseif ( strlen( urlencode( $relStoragePath ) ) > 1024 ) {
return null; // too long for Swift
diff --git a/includes/filerepo/ForeignAPIRepo.php b/includes/filerepo/ForeignAPIRepo.php
index cc9099c6c0..b48191fd1c 100644
--- a/includes/filerepo/ForeignAPIRepo.php
+++ b/includes/filerepo/ForeignAPIRepo.php
@@ -527,7 +527,10 @@ class ForeignAPIRepo extends FileRepo {
return $req->getContent();
} else {
$logger = LoggerFactory::getInstance( 'http' );
- $logger->warning( $status->getWikiText(), [ 'caller' => 'ForeignAPIRepo::httpGet' ] );
+ $logger->warning(
+ $status->getWikiText( false, false, 'en' ),
+ [ 'caller' => 'ForeignAPIRepo::httpGet' ]
+ );
return false;
}
}
diff --git a/includes/filerepo/LocalRepo.php b/includes/filerepo/LocalRepo.php
index d24aa24cba..82486993ad 100644
--- a/includes/filerepo/LocalRepo.php
+++ b/includes/filerepo/LocalRepo.php
@@ -226,7 +226,8 @@ class LocalRepo extends FileRepo {
return ( $row && $row->rd_namespace == NS_FILE )
? Title::makeTitle( $row->rd_namespace, $row->rd_title )->getDBkey()
: ''; // negative cache
- }
+ },
+ [ 'pcTTL' => 30 ]
);
// @note: also checks " " for b/c
diff --git a/includes/filerepo/file/File.php b/includes/filerepo/file/File.php
index 7e007937c3..c037516568 100644
--- a/includes/filerepo/file/File.php
+++ b/includes/filerepo/file/File.php
@@ -2046,34 +2046,29 @@ abstract class File implements IDBAccessObject {
$renderUrl = $this->repo->getDescriptionRenderUrl( $this->getName(), $lang->getCode() );
if ( $renderUrl ) {
$cache = ObjectCache::getMainWANInstance();
+ $key = $this->repo->getLocalCacheKey(
+ 'RemoteFileDescription',
+ 'url',
+ $lang->getCode(),
+ $this->getName()
+ );
- $key = null;
- if ( $this->repo->descriptionCacheExpiry > 0 ) {
- wfDebug( "Attempting to get the description from cache..." );
- $key = $this->repo->getLocalCacheKey(
- 'RemoteFileDescription',
- 'url',
- $lang->getCode(),
- $this->getName()
- );
- $obj = $cache->get( $key );
- if ( $obj ) {
- wfDebug( "success!\n" );
-
- return $obj;
- }
- wfDebug( "miss\n" );
- }
- wfDebug( "Fetching shared description from $renderUrl\n" );
- $res = Http::get( $renderUrl, [], __METHOD__ );
- if ( $res && $key ) {
- $cache->set( $key, $res, $this->repo->descriptionCacheExpiry );
- }
+ return $cache->getWithSetCallback(
+ $key,
+ $this->repo->descriptionCacheExpiry ?: $cache::TTL_UNCACHEABLE,
+ function ( $oldValue, &$ttl, array &$setOpts ) use ( $renderUrl ) {
+ wfDebug( "Fetching shared description from $renderUrl\n" );
+ $res = Http::get( $renderUrl, [], __METHOD__ );
+ if ( !$res ) {
+ $ttl = WANObjectCache::TTL_UNCACHEABLE;
+ }
- return $res;
- } else {
- return false;
+ return $res;
+ }
+ );
}
+
+ return false;
}
/**
diff --git a/includes/filerepo/file/ForeignDBFile.php b/includes/filerepo/file/ForeignDBFile.php
index f38248b52b..cf0045e43f 100644
--- a/includes/filerepo/file/ForeignDBFile.php
+++ b/includes/filerepo/file/ForeignDBFile.php
@@ -124,8 +124,51 @@ class ForeignDBFile extends LocalFile {
* @return string
*/
function getDescriptionText( $lang = false ) {
- // Restore remote behavior
- return File::getDescriptionText( $lang );
+ global $wgLang;
+
+ if ( !$this->repo->fetchDescription ) {
+ return false;
+ }
+
+ $lang = $lang ?: $wgLang;
+ $renderUrl = $this->repo->getDescriptionRenderUrl( $this->getName(), $lang->getCode() );
+ if ( !$renderUrl ) {
+ return false;
+ }
+
+ $touched = $this->repo->getSlaveDB()->selectField(
+ 'page',
+ 'page_touched',
+ [
+ 'page_namespace' => NS_FILE,
+ 'page_title' => $this->title->getDBkey()
+ ]
+ );
+ if ( $touched === false ) {
+ return false; // no description page
+ }
+
+ $cache = ObjectCache::getMainWANInstance();
+
+ return $cache->getWithSetCallback(
+ $this->repo->getLocalCacheKey(
+ 'RemoteFileDescription',
+ 'url',
+ $lang->getCode(),
+ $this->getName(),
+ $touched
+ ),
+ $this->repo->descriptionCacheExpiry ?: $cache::TTL_UNCACHEABLE,
+ function ( $oldValue, &$ttl, array &$setOpts ) use ( $renderUrl ) {
+ wfDebug( "Fetching shared description from $renderUrl\n" );
+ $res = Http::get( $renderUrl, [], __METHOD__ );
+ if ( !$res ) {
+ $ttl = WANObjectCache::TTL_UNCACHEABLE;
+ }
+
+ return $res;
+ }
+ );
}
/**
@@ -137,10 +180,14 @@ class ForeignDBFile extends LocalFile {
*/
public function getDescriptionShortUrl() {
$dbr = $this->repo->getSlaveDB();
- $pageId = $dbr->selectField( 'page', 'page_id', [
- 'page_namespace' => NS_FILE,
- 'page_title' => $this->title->getDBkey()
- ] );
+ $pageId = $dbr->selectField(
+ 'page',
+ 'page_id',
+ [
+ 'page_namespace' => NS_FILE,
+ 'page_title' => $this->title->getDBkey()
+ ]
+ );
if ( $pageId !== false ) {
$url = $this->repo->makeUrl( [ 'curid' => $pageId ] );
diff --git a/includes/filerepo/file/LocalFile.php b/includes/filerepo/file/LocalFile.php
index 609a8fb5af..aa278aadf9 100644
--- a/includes/filerepo/file/LocalFile.php
+++ b/includes/filerepo/file/LocalFile.php
@@ -242,7 +242,7 @@ class LocalFile extends File {
* Try to load file metadata from memcached. Returns true on success.
* @return bool
*/
- function loadFromCache() {
+ private function loadFromCache() {
$this->dataLoaded = false;
$this->extraDataLoaded = false;
$key = $this->getCacheKey();
@@ -267,19 +267,13 @@ class LocalFile extends File {
}
}
- if ( $this->dataLoaded ) {
- wfIncrStats( 'image_cache.hit' );
- } else {
- wfIncrStats( 'image_cache.miss' );
- }
-
return $this->dataLoaded;
}
/**
* Save the file metadata to memcached
*/
- function saveToCache() {
+ private function saveToCache() {
$this->load();
$key = $this->getCacheKey();
@@ -1486,6 +1480,9 @@ class LocalFile extends File {
$logEntry->setTags( $tags );
}
+ # Uploads can be patrolled
+ $logEntry->setIsPatrollable( true );
+
# Now that the log entry is up-to-date, make an RC entry.
$logEntry->publish( $logId );
@@ -2878,7 +2875,8 @@ class LocalFileMoveBatch {
$this->cleanupTarget( $triplets );
$destFile->unlock();
$this->file->unlockAndRollback(); // unlocks the destination
- wfDebugLog( 'imagemove', "Error in moving files: " . $statusMove->getWikiText() );
+ wfDebugLog( 'imagemove', "Error in moving files: "
+ . $statusMove->getWikiText( false, false, 'en' ) );
$statusMove->ok = false;
return $statusMove;
diff --git a/includes/htmlform/HTMLAutoCompleteSelectField.php b/includes/htmlform/HTMLAutoCompleteSelectField.php
index 6606ca3833..76a88d5121 100644
--- a/includes/htmlform/HTMLAutoCompleteSelectField.php
+++ b/includes/htmlform/HTMLAutoCompleteSelectField.php
@@ -53,7 +53,7 @@ class HTMLAutoCompleteSelectField extends HTMLTextField {
$this->getOptions();
if ( $this->mOptions && !in_array( 'other', $this->mOptions, true ) ) {
if ( isset( $params['other-message'] ) ) {
- $msg = wfMessage( $params['other-message'] )->text();
+ $msg = $this->getMessage( $params['other-message'] )->text();
} elseif ( isset( $params['other'] ) ) {
$msg = $params['other'];
} else {
diff --git a/includes/htmlform/HTMLButtonField.php b/includes/htmlform/HTMLButtonField.php
index 16417fc4b5..64fe7eda9b 100644
--- a/includes/htmlform/HTMLButtonField.php
+++ b/includes/htmlform/HTMLButtonField.php
@@ -6,7 +6,7 @@
* wish to add a submit button to a form.
*
* Additional recognized configuration parameters include:
- * - flags: OOUI flags for the button, see OOUI\\FlaggedElement
+ * - flags: OOUI flags for the button, see OOUI\FlaggedElement
* - buttonlabel-message: Message to use for the button display text, instead
* of the value from 'default'. Overrides 'buttonlabel' and 'buttonlabel-raw'.
* - buttonlabel: Text to display for the button display text, instead
@@ -35,16 +35,7 @@ class HTMLButtonField extends HTMLFormField {
# Generate the label from a message, if possible
if ( isset( $info['buttonlabel-message'] ) ) {
- $msgInfo = $info['buttonlabel-message'];
-
- if ( is_array( $msgInfo ) ) {
- $msg = array_shift( $msgInfo );
- } else {
- $msg = $msgInfo;
- $msgInfo = [];
- }
-
- $this->buttonLabel = $this->msg( $msg, $msgInfo )->parse();
+ $this->buttonLabel = $this->getMessage( $info['buttonlabel-message'] )->parse();
} elseif ( isset( $info['buttonlabel'] ) ) {
if ( $info['buttonlabel'] === ' ' ) {
// Apparently some things set   directly and in an odd format
@@ -79,13 +70,14 @@ class HTMLButtonField extends HTMLFormField {
'id' => $this->mID,
'type' => $this->buttonType,
'name' => $this->mName,
- 'value' => $value,
+ 'value' => $this->getDefault(),
] + $this->getAttributes( [ 'disabled', 'tabindex' ] );
if ( $this->isBadIE() ) {
return Html::element( 'input', $attr );
} else {
- return Html::rawElement( 'button', $attr, $this->buttonLabel ?: htmlspecialchars( $value ) );
+ return Html::rawElement( 'button', $attr,
+ $this->buttonLabel ?: htmlspecialchars( $this->getDefault() ) );
}
}
@@ -97,10 +89,10 @@ class HTMLButtonField extends HTMLFormField {
public function getInputOOUI( $value ) {
return new OOUI\ButtonInputWidget( [
'name' => $this->mName,
- 'value' => $value,
+ 'value' => $this->getDefault(),
'label' => !$this->isBadIE() && $this->buttonLabel
? new OOUI\HtmlSnippet( $this->buttonLabel )
- : $value,
+ : $this->getDefault(),
'type' => $this->buttonType,
'classes' => [ 'mw-htmlform-submit', $this->mClass ],
'id' => $this->mID,
diff --git a/includes/htmlform/HTMLCheckField.php b/includes/htmlform/HTMLCheckField.php
index a59b15e828..4a6b804730 100644
--- a/includes/htmlform/HTMLCheckField.php
+++ b/includes/htmlform/HTMLCheckField.php
@@ -111,7 +111,7 @@ class HTMLCheckField extends HTMLFormField {
/**
* @param WebRequest $request
*
- * @return string
+ * @return bool
*/
function loadDataFromRequest( $request ) {
$invert = isset( $this->mParams['invert'] ) && $this->mParams['invert'];
@@ -125,7 +125,7 @@ class HTMLCheckField extends HTMLFormField {
? !$request->getBool( $this->mName )
: $request->getBool( $this->mName );
} else {
- return $this->getDefault();
+ return (bool)$this->getDefault();
}
}
}
diff --git a/includes/htmlform/HTMLEditTools.php b/includes/htmlform/HTMLEditTools.php
index 77924ef24e..1b5d1fb4ea 100644
--- a/includes/htmlform/HTMLEditTools.php
+++ b/includes/htmlform/HTMLEditTools.php
@@ -39,7 +39,7 @@ class HTMLEditTools extends HTMLFormField {
if ( empty( $this->mParams['message'] ) ) {
$msg = $this->msg( 'edittools' );
} else {
- $msg = $this->msg( $this->mParams['message'] );
+ $msg = $this->getMessage( $this->mParams['message'] );
if ( $msg->isDisabled() ) {
$msg = $this->msg( 'edittools' );
}
diff --git a/includes/htmlform/HTMLForm.php b/includes/htmlform/HTMLForm.php
index ba432442f9..8f8caf2b1b 100644
--- a/includes/htmlform/HTMLForm.php
+++ b/includes/htmlform/HTMLForm.php
@@ -56,25 +56,25 @@
* Some field types support multi-level arrays.
* 'options-messages' -- associative array mapping message keys to values.
* Some field types support multi-level arrays.
- * 'options-message' -- message key to be parsed to extract the list of
+ * 'options-message' -- message key or object to be parsed to extract the list of
* options (like 'ipbreason-dropdown').
- * 'label-message' -- message key for a message to use as the label.
+ * 'label-message' -- message key or object for a message to use as the label.
* can be an array of msg key and then parameters to
* the message.
* 'label' -- alternatively, a raw text message. Overridden by
* label-message
* 'help' -- message text for a message to use as a help text.
- * 'help-message' -- message key for a message to use as a help text.
+ * 'help-message' -- message key or object for a message to use as a help text.
* can be an array of msg key and then parameters to
* the message.
* Overwrites 'help-messages' and 'help'.
- * 'help-messages' -- array of message key. As above, each item can
+ * 'help-messages' -- array of message keys/objects. As above, each item can
* be an array of msg key and then parameters.
* Overwrites 'help'.
* 'required' -- passed through to the object, indicating that it
* is a required field.
* 'size' -- the length of text fields
- * 'filter-callback -- a function name to give you the chance to
+ * 'filter-callback' -- a function name to give you the chance to
* massage the inputted value before it's processed.
* @see HTMLFormField::filter()
* 'validation-callback' -- a function name to give you the chance
@@ -180,6 +180,7 @@ class HTMLForm extends ContextSource {
protected $mSectionFooters = [];
protected $mPost = '';
protected $mId;
+ protected $mName;
protected $mTableId = '';
protected $mSubmitID;
@@ -198,6 +199,13 @@ class HTMLForm extends ContextSource {
*/
protected $mAction = false;
+ /**
+ * Form attribute autocomplete. false does not set the attribute
+ * @since 1.27
+ * @var bool|string
+ */
+ protected $mAutocomplete = false;
+
protected $mUseMultipart = false;
protected $mHiddenFields = [];
protected $mButtons = [];
@@ -287,7 +295,7 @@ class HTMLForm extends ContextSource {
$this->setContext( $context );
$this->mTitle = false; // We don't need them to set a title
$this->mMessagePrefix = $messagePrefix;
- } elseif ( is_null( $context ) && $messagePrefix !== '' ) {
+ } elseif ( $context === null && $messagePrefix !== '' ) {
$this->mMessagePrefix = $messagePrefix;
} elseif ( is_string( $context ) && $messagePrefix === '' ) {
// B/C since 1.18
@@ -312,7 +320,7 @@ class HTMLForm extends ContextSource {
? $info['section']
: '';
- if ( isset( $info['type'] ) && $info['type'] == 'file' ) {
+ if ( isset( $info['type'] ) && $info['type'] === 'file' ) {
$this->mUseMultipart = true;
}
@@ -352,14 +360,14 @@ class HTMLForm extends ContextSource {
*/
public function setDisplayFormat( $format ) {
if (
- in_array( $format, $this->availableSubclassDisplayFormats ) ||
- in_array( $this->displayFormat, $this->availableSubclassDisplayFormats )
+ in_array( $format, $this->availableSubclassDisplayFormats, true ) ||
+ in_array( $this->displayFormat, $this->availableSubclassDisplayFormats, true )
) {
throw new MWException( 'Cannot change display format after creation, ' .
'use HTMLForm::factory() instead' );
}
- if ( !in_array( $format, $this->availableDisplayFormats ) ) {
+ if ( !in_array( $format, $this->availableDisplayFormats, true ) ) {
throw new MWException( 'Display format must be one of ' .
print_r( $this->availableDisplayFormats, true ) );
}
@@ -451,9 +459,7 @@ class HTMLForm extends ContextSource {
# @todo This will throw a fatal error whenever someone try to use
# 'class' to feed a CSS class instead of 'cssclass'. Would be
# great to avoid the fatal error and show a nice error.
- $obj = new $class( $descriptor );
-
- return $obj;
+ return new $class( $descriptor );
}
/**
@@ -465,10 +471,10 @@ class HTMLForm extends ContextSource {
* @throws MWException
* @return HTMLForm $this for chaining calls (since 1.20)
*/
- function prepareForm() {
+ public function prepareForm() {
# Check if we have the info we need
if ( !$this->mTitle instanceof Title && $this->mTitle !== false ) {
- throw new MWException( "You must call setTitle() on an HTMLForm" );
+ throw new MWException( 'You must call setTitle() on an HTMLForm' );
}
# Load data from the request.
@@ -481,15 +487,15 @@ class HTMLForm extends ContextSource {
* Try submitting, with edit token check first
* @return Status|bool
*/
- function tryAuthorizedSubmit() {
+ public function tryAuthorizedSubmit() {
$result = false;
$submit = false;
- if ( $this->getMethod() != 'post' ) {
+ if ( $this->getMethod() !== 'post' ) {
$submit = true; // no session check needed
} elseif ( $this->getRequest()->wasPosted() ) {
$editToken = $this->getRequest()->getVal( 'wpEditToken' );
- if ( $this->getUser()->isLoggedIn() || $editToken != null ) {
+ if ( $this->getUser()->isLoggedIn() || $editToken !== null ) {
// Session tokens for logged-out users have no security value.
// However, if the user gave one, check it in order to give a nice
// "session expired" error instead of "permission denied" or such.
@@ -513,7 +519,7 @@ class HTMLForm extends ContextSource {
* errors
* @return bool|Status Whether submission was successful.
*/
- function show() {
+ public function show() {
$this->prepareForm();
$result = $this->tryAuthorizedSubmit();
@@ -531,7 +537,7 @@ class HTMLForm extends ContextSource {
* added to the output, no matter, if the validation was good or not.
* @return bool|Status Whether submission was successful.
*/
- function showAlways() {
+ public function showAlways() {
$this->prepareForm();
$result = $this->tryAuthorizedSubmit();
@@ -552,7 +558,7 @@ class HTMLForm extends ContextSource {
* object, an HTML string, or an array of arrays (message keys and
* params) or strings (message keys)
*/
- function trySubmit() {
+ public function trySubmit() {
$valid = true;
$hoistedErrors = [];
$hoistedErrors[] = isset( $this->mValidationErrorMessage )
@@ -623,7 +629,7 @@ class HTMLForm extends ContextSource {
* @since 1.23
* @return bool
*/
- function wasSubmitted() {
+ public function wasSubmitted() {
return $this->mWasSubmitted;
}
@@ -637,7 +643,7 @@ class HTMLForm extends ContextSource {
*
* @return HTMLForm $this for chaining calls (since 1.20)
*/
- function setSubmitCallback( $cb ) {
+ public function setSubmitCallback( $cb ) {
$this->mSubmitCallback = $cb;
return $this;
@@ -651,7 +657,7 @@ class HTMLForm extends ContextSource {
*
* @return HTMLForm $this for chaining calls (since 1.20)
*/
- function setValidationErrorMessage( $msg ) {
+ public function setValidationErrorMessage( $msg ) {
$this->mValidationErrorMessage = $msg;
return $this;
@@ -664,7 +670,7 @@ class HTMLForm extends ContextSource {
*
* @return HTMLForm $this for chaining calls (since 1.20)
*/
- function setIntro( $msg ) {
+ public function setIntro( $msg ) {
$this->setPreText( $msg );
return $this;
@@ -678,7 +684,7 @@ class HTMLForm extends ContextSource {
*
* @return HTMLForm $this for chaining calls (since 1.20)
*/
- function setPreText( $msg ) {
+ public function setPreText( $msg ) {
$this->mPre = $msg;
return $this;
@@ -691,7 +697,7 @@ class HTMLForm extends ContextSource {
*
* @return HTMLForm $this for chaining calls (since 1.20)
*/
- function addPreText( $msg ) {
+ public function addPreText( $msg ) {
$this->mPre .= $msg;
return $this;
@@ -705,8 +711,8 @@ class HTMLForm extends ContextSource {
*
* @return HTMLForm $this for chaining calls (since 1.20)
*/
- function addHeaderText( $msg, $section = null ) {
- if ( is_null( $section ) ) {
+ public function addHeaderText( $msg, $section = null ) {
+ if ( $section === null ) {
$this->mHeader .= $msg;
} else {
if ( !isset( $this->mSectionHeaders[$section] ) ) {
@@ -727,8 +733,8 @@ class HTMLForm extends ContextSource {
*
* @return HTMLForm $this for chaining calls (since 1.20)
*/
- function setHeaderText( $msg, $section = null ) {
- if ( is_null( $section ) ) {
+ public function setHeaderText( $msg, $section = null ) {
+ if ( $section === null ) {
$this->mHeader = $msg;
} else {
$this->mSectionHeaders[$section] = $msg;
@@ -744,8 +750,8 @@ class HTMLForm extends ContextSource {
* @since 1.26
* @return string HTML
*/
- function getHeaderText( $section = null ) {
- if ( is_null( $section ) ) {
+ public function getHeaderText( $section = null ) {
+ if ( $section === null ) {
return $this->mHeader;
} else {
return isset( $this->mSectionHeaders[$section] ) ? $this->mSectionHeaders[$section] : '';
@@ -760,8 +766,8 @@ class HTMLForm extends ContextSource {
*
* @return HTMLForm $this for chaining calls (since 1.20)
*/
- function addFooterText( $msg, $section = null ) {
- if ( is_null( $section ) ) {
+ public function addFooterText( $msg, $section = null ) {
+ if ( $section === null ) {
$this->mFooter .= $msg;
} else {
if ( !isset( $this->mSectionFooters[$section] ) ) {
@@ -782,8 +788,8 @@ class HTMLForm extends ContextSource {
*
* @return HTMLForm $this for chaining calls (since 1.20)
*/
- function setFooterText( $msg, $section = null ) {
- if ( is_null( $section ) ) {
+ public function setFooterText( $msg, $section = null ) {
+ if ( $section === null ) {
$this->mFooter = $msg;
} else {
$this->mSectionFooters[$section] = $msg;
@@ -799,8 +805,8 @@ class HTMLForm extends ContextSource {
* @since 1.26
* @return string
*/
- function getFooterText( $section = null ) {
- if ( is_null( $section ) ) {
+ public function getFooterText( $section = null ) {
+ if ( $section === null ) {
return $this->mFooter;
} else {
return isset( $this->mSectionFooters[$section] ) ? $this->mSectionFooters[$section] : '';
@@ -814,7 +820,7 @@ class HTMLForm extends ContextSource {
*
* @return HTMLForm $this for chaining calls (since 1.20)
*/
- function addPostText( $msg ) {
+ public function addPostText( $msg ) {
$this->mPost .= $msg;
return $this;
@@ -827,7 +833,7 @@ class HTMLForm extends ContextSource {
*
* @return HTMLForm $this for chaining calls (since 1.20)
*/
- function setPostText( $msg ) {
+ public function setPostText( $msg ) {
$this->mPost = $msg;
return $this;
@@ -842,7 +848,7 @@ class HTMLForm extends ContextSource {
*
* @return HTMLForm $this for chaining calls (since 1.20)
*/
- public function addHiddenField( $name, $value, $attribs = [] ) {
+ public function addHiddenField( $name, $value, array $attribs = [] ) {
$attribs += [ 'name' => $name ];
$this->mHiddenFields[] = [ $value, $attribs ];
@@ -948,7 +954,7 @@ class HTMLForm extends ContextSource {
*
* @return void Nothing, should be last call
*/
- function displayForm( $submitResult ) {
+ public function displayForm( $submitResult ) {
$this->getOutput()->addHTML( $this->getHTML( $submitResult ) );
}
@@ -959,7 +965,7 @@ class HTMLForm extends ContextSource {
*
* @return string HTML
*/
- function getHTML( $submitResult ) {
+ public function getHTML( $submitResult ) {
# For good measure (it is the default)
$this->getOutput()->preventClickjacking();
$this->getOutput()->addModules( 'mediawiki.htmlform' );
@@ -993,9 +999,15 @@ class HTMLForm extends ContextSource {
'method' => $this->getMethod(),
'enctype' => $encType,
];
- if ( !empty( $this->mId ) ) {
+ if ( $this->mId ) {
$attribs['id'] = $this->mId;
}
+ if ( $this->mAutocomplete ) {
+ $attribs['autocomplete'] = $this->mAutocomplete;
+ }
+ if ( $this->mName ) {
+ $attribs['name'] = $this->mName;
+ }
return $attribs;
}
@@ -1006,7 +1018,7 @@ class HTMLForm extends ContextSource {
*
* @return string Wrapped HTML.
*/
- function wrapForm( $html ) {
+ public function wrapForm( $html ) {
# Include a
wrapper for style, if requested.
if ( $this->mWrapperLegend !== false ) {
$legend = is_string( $this->mWrapperLegend ) ? $this->mWrapperLegend : false;
@@ -1024,9 +1036,9 @@ class HTMLForm extends ContextSource {
* Get the hidden fields that should go inside the form.
* @return string HTML.
*/
- function getHiddenFields() {
+ public function getHiddenFields() {
$html = '';
- if ( $this->getMethod() == 'post' ) {
+ if ( $this->getMethod() === 'post' ) {
$html .= Html::hidden(
'wpEditToken',
$this->getUser()->getEditToken( $this->mTokenSalt ),
@@ -1036,7 +1048,7 @@ class HTMLForm extends ContextSource {
}
$articlePath = $this->getConfig()->get( 'ArticlePath' );
- if ( strpos( $articlePath, '?' ) !== false && $this->getMethod() == 'get' ) {
+ if ( strpos( $articlePath, '?' ) !== false && $this->getMethod() === 'get' ) {
$html .= Html::hidden( 'title', $this->getTitle()->getPrefixedText() ) . "\n";
}
@@ -1052,7 +1064,7 @@ class HTMLForm extends ContextSource {
* Get the submit and (potentially) reset buttons.
* @return string HTML.
*/
- function getButtons() {
+ public function getButtons() {
$buttons = '';
$useMediaWikiUIEverywhere = $this->getConfig()->get( 'UseMediaWikiUIEverywhere' );
@@ -1075,9 +1087,9 @@ class HTMLForm extends ContextSource {
if ( $useMediaWikiUIEverywhere ) {
foreach ( $this->mSubmitFlags as $flag ) {
- array_push( $attribs['class'], 'mw-ui-' . $flag );
+ $attribs['class'][] = 'mw-ui-' . $flag;
}
- array_push( $attribs['class'], 'mw-ui-button' );
+ $attribs['class'][] = 'mw-ui-button';
}
$buttons .= Xml::submitButton( $this->getSubmitText(), $attribs ) . "\n";
@@ -1089,7 +1101,7 @@ class HTMLForm extends ContextSource {
[
'type' => 'reset',
'value' => $this->msg( 'htmlform-reset' )->text(),
- 'class' => ( $useMediaWikiUIEverywhere ? 'mw-ui-button' : null ),
+ 'class' => $useMediaWikiUIEverywhere ? 'mw-ui-button' : null,
]
) . "\n";
}
@@ -1134,17 +1146,19 @@ class HTMLForm extends ContextSource {
}
}
- $html = Html::rawElement( 'span',
- [ 'class' => 'mw-htmlform-submit-buttons' ], "\n$buttons" ) . "\n";
+ if ( !$buttons ) {
+ return '';
+ }
- return $html;
+ return Html::rawElement( 'span',
+ [ 'class' => 'mw-htmlform-submit-buttons' ], "\n$buttons" ) . "\n";
}
/**
* Get the whole body of the form.
* @return string
*/
- function getBody() {
+ public function getBody() {
return $this->displaySection( $this->mFieldTree, $this->mTableId );
}
@@ -1155,7 +1169,7 @@ class HTMLForm extends ContextSource {
*
* @return string
*/
- function getErrors( $errors ) {
+ public function getErrors( $errors ) {
if ( $errors instanceof Status ) {
if ( $errors->isOK() ) {
$errorstr = '';
@@ -1210,7 +1224,7 @@ class HTMLForm extends ContextSource {
*
* @return HTMLForm $this for chaining calls (since 1.20)
*/
- function setSubmitText( $t ) {
+ public function setSubmitText( $t ) {
$this->mSubmitText = $t;
return $this;
@@ -1253,10 +1267,8 @@ class HTMLForm extends ContextSource {
* Get the text for the submit button, either customised or a default.
* @return string
*/
- function getSubmitText() {
- return $this->mSubmitText
- ? $this->mSubmitText
- : $this->msg( 'htmlform-submit' )->text();
+ public function getSubmitText() {
+ return $this->mSubmitText ?: $this->msg( 'htmlform-submit' )->text();
}
/**
@@ -1289,7 +1301,7 @@ class HTMLForm extends ContextSource {
* @todo FIXME: Integrity of $t is *not* validated
* @return HTMLForm $this for chaining calls (since 1.20)
*/
- function setSubmitID( $t ) {
+ public function setSubmitID( $t ) {
$this->mSubmitID = $t;
return $this;
@@ -1305,7 +1317,7 @@ class HTMLForm extends ContextSource {
*
* @return HTMLForm $this for chaining calls
*/
- function suppressDefaultSubmit( $suppressSubmit = true ) {
+ public function suppressDefaultSubmit( $suppressSubmit = true ) {
$this->mShowSubmit = !$suppressSubmit;
return $this;
@@ -1337,6 +1349,16 @@ class HTMLForm extends ContextSource {
return $this;
}
+ /**
+ * @param string $name 'name' attribute for the form
+ * @return HTMLForm $this for chaining calls
+ */
+ public function setName( $name ) {
+ $this->mName = $name;
+
+ return $this;
+ }
+
/**
* Prompt the whole form to be wrapped in a "", with
* this text as its "" element.
@@ -1381,7 +1403,7 @@ class HTMLForm extends ContextSource {
*
* @return HTMLForm $this for chaining calls (since 1.20)
*/
- function setMessagePrefix( $p ) {
+ public function setMessagePrefix( $p ) {
$this->mMessagePrefix = $p;
return $this;
@@ -1394,7 +1416,7 @@ class HTMLForm extends ContextSource {
*
* @return HTMLForm $this for chaining calls (since 1.20)
*/
- function setTitle( $t ) {
+ public function setTitle( $t ) {
$this->mTitle = $t;
return $this;
@@ -1404,7 +1426,7 @@ class HTMLForm extends ContextSource {
* Get the title
* @return Title
*/
- function getTitle() {
+ public function getTitle() {
return $this->mTitle === false
? $this->getContext()->getTitle()
: $this->mTitle;
@@ -1467,11 +1489,11 @@ class HTMLForm extends ContextSource {
// Conveniently, PHP method names are case-insensitive.
// For grep: this can call getDiv, getRaw, getInline, getVForm, getOOUI
- $getFieldHtmlMethod = $displayFormat == 'table' ? 'getTableRow' : ( 'get' . $displayFormat );
+ $getFieldHtmlMethod = $displayFormat === 'table' ? 'getTableRow' : ( 'get' . $displayFormat );
foreach ( $fields as $key => $value ) {
if ( $value instanceof HTMLFormField ) {
- $v = empty( $value->mParams['nodata'] )
+ $v = array_key_exists( $key, $this->mFieldData )
? $this->mFieldData[$key]
: $value->getDefault();
@@ -1483,7 +1505,7 @@ class HTMLForm extends ContextSource {
$html[] = $retval;
$labelValue = trim( $value->getLabel() );
- if ( $labelValue != ' ' && $labelValue !== '' ) {
+ if ( $labelValue !== ' ' && $labelValue !== '' ) {
$hasLabel = true;
}
@@ -1576,16 +1598,17 @@ class HTMLForm extends ContextSource {
/**
* Construct the form fields from the Descriptor array
*/
- function loadData() {
+ public function loadData() {
$fieldData = [];
foreach ( $this->mFlatFields as $fieldname => $field ) {
- if ( !empty( $field->mParams['nodata'] ) ) {
+ $request = $this->getRequest();
+ if ( $field->skipLoadData( $request ) ) {
continue;
} elseif ( !empty( $field->mParams['disabled'] ) ) {
$fieldData[$fieldname] = $field->getDefault();
} else {
- $fieldData[$fieldname] = $field->loadDataFromRequest( $this->getRequest() );
+ $fieldData[$fieldname] = $field->loadDataFromRequest( $request );
}
}
@@ -1605,7 +1628,7 @@ class HTMLForm extends ContextSource {
*
* @return HTMLForm $this for chaining calls (since 1.20)
*/
- function suppressReset( $suppressReset = true ) {
+ public function suppressReset( $suppressReset = true ) {
$this->mShowReset = !$suppressReset;
return $this;
@@ -1620,7 +1643,7 @@ class HTMLForm extends ContextSource {
*
* @return array
*/
- function filterDataForSubmit( $data ) {
+ public function filterDataForSubmit( $data ) {
return $data;
}
@@ -1677,4 +1700,20 @@ class HTMLForm extends ContextSource {
return $this->getTitle()->getLocalURL();
}
+
+ /**
+ * Set the value for the autocomplete attribute of the form.
+ * When set to false (which is the default state), the attribute get not set.
+ *
+ * @since 1.27
+ *
+ * @param string|bool $autocomplete
+ *
+ * @return HTMLForm $this for chaining calls
+ */
+ public function setAutocomplete( $autocomplete ) {
+ $this->mAutocomplete = $autocomplete;
+
+ return $this;
+ }
}
diff --git a/includes/htmlform/HTMLFormField.php b/includes/htmlform/HTMLFormField.php
index a9c76321d7..d14fa90d94 100644
--- a/includes/htmlform/HTMLFormField.php
+++ b/includes/htmlform/HTMLFormField.php
@@ -117,8 +117,8 @@ abstract class HTMLFormField {
$tmp = $m[1];
}
if ( substr( $tmp, 0, 2 ) == 'wp' &&
- !isset( $alldata[$tmp] ) &&
- isset( $alldata[substr( $tmp, 2 )] )
+ !array_key_exists( $tmp, $alldata ) &&
+ array_key_exists( substr( $tmp, 2 ), $alldata )
) {
// Adjust for name mangling.
$tmp = substr( $tmp, 2 );
@@ -139,7 +139,7 @@ abstract class HTMLFormField {
$data = $alldata;
while ( $keys ) {
$key = array_shift( $keys );
- if ( !is_array( $data ) || !isset( $data[$key] ) ) {
+ if ( !is_array( $data ) || !array_key_exists( $key, $data ) ) {
continue 2;
}
$data = $data[$key];
@@ -179,7 +179,7 @@ abstract class HTMLFormField {
return true;
case 'OR':
- foreach ( $params as $p ) {
+ foreach ( $params as $i => $p ) {
if ( !is_array( $p ) ) {
throw new MWException(
"Expected array, found " . gettype( $p ) . " at index $i"
@@ -205,7 +205,7 @@ abstract class HTMLFormField {
return false;
case 'NOR':
- foreach ( $params as $p ) {
+ foreach ( $params as $i => $p ) {
if ( !is_array( $p ) ) {
throw new MWException(
"Expected array, found " . gettype( $p ) . " at index $i"
@@ -381,16 +381,7 @@ abstract class HTMLFormField {
# Generate the label from a message, if possible
if ( isset( $params['label-message'] ) ) {
- $msgInfo = $params['label-message'];
-
- if ( is_array( $msgInfo ) ) {
- $msg = array_shift( $msgInfo );
- } else {
- $msg = $msgInfo;
- $msgInfo = [];
- }
-
- $this->mLabel = $this->msg( $msg, $msgInfo )->parse();
+ $this->mLabel = $this->getMessage( $params['label-message'] )->parse();
} elseif ( isset( $params['label'] ) ) {
if ( $params['label'] === ' ' ) {
// Apparently some things set   directly and in an odd format
@@ -783,9 +774,8 @@ abstract class HTMLFormField {
}
if ( isset( $this->mParams['help-messages'] ) ) {
- foreach ( $this->mParams['help-messages'] as $name ) {
- $helpMessage = (array)$name;
- $msg = $this->msg( array_shift( $helpMessage ), $helpMessage );
+ foreach ( $this->mParams['help-messages'] as $msg ) {
+ $msg = $this->getMessage( $msg );
if ( $msg->exists() ) {
if ( is_null( $helptext ) ) {
@@ -988,7 +978,7 @@ abstract class HTMLFormField {
$this->mOptions = self::forceToStringRecursive( $this->mParams['options'] );
} elseif ( array_key_exists( 'options-message', $this->mParams ) ) {
/** @todo This is copied from Xml::listDropDown(), deprecate/avoid duplication? */
- $message = $this->msg( $this->mParams['options-message'] )->inContentLanguage()->plain();
+ $message = $this->getMessage( $this->mParams['options-message'] )->inContentLanguage()->plain();
$optgroup = false;
$this->mOptions = [];
@@ -1097,4 +1087,33 @@ abstract class HTMLFormField {
return Html::rawElement( 'span', [ 'class' => 'error' ], $errors );
}
}
+
+ /**
+ * Turns a *-message parameter (which could be a MessageSpecifier, or a message name, or a
+ * name + parameters array) into a Message.
+ * @param mixed $value
+ * @return Message
+ */
+ protected function getMessage( $value ) {
+ if ( $value instanceof Message ) {
+ return $value;
+ } elseif ( $value instanceof MessageSpecifier ) {
+ return Message::newFromKey( $value );
+ } elseif ( is_array( $value ) ) {
+ $msg = array_shift( $value );
+ return $this->msg( $msg, $value );
+ } else {
+ return $this->msg( $value, [] );
+ }
+ }
+
+ /**
+ * Skip this field when collecting data.
+ * @param WebRequest $request
+ * @return bool
+ * @since 1.27
+ */
+ public function skipLoadData( $request ) {
+ return !empty( $this->mParams['nodata'] );
+ }
}
diff --git a/includes/htmlform/HTMLFormFieldCloner.php b/includes/htmlform/HTMLFormFieldCloner.php
index 6553b561bc..3f80884bff 100644
--- a/includes/htmlform/HTMLFormFieldCloner.php
+++ b/includes/htmlform/HTMLFormFieldCloner.php
@@ -14,9 +14,9 @@
* 'table', 'div', or 'raw'.
* row-legend - If non-empty, each group of subfields will be enclosed in a
* fieldset. The value is the name of a message key to use as the legend.
- * create-button-message - Message key to use as the text of the button to
+ * create-button-message - Message to use as the text of the button to
* add an additional group of fields.
- * delete-button-message - Message key to use as the text of automatically-
+ * delete-button-message - Message to use as the text of automatically-
* generated 'delete' button. Ignored if 'delete' is included in 'fields'.
*
* In the generated HTML, the subfields will be named along the lines of
@@ -150,7 +150,7 @@ class HTMLFormFieldCloner extends HTMLFormField {
$subrequest = new DerivativeRequest( $request, $data, $request->wasPosted() );
$row = [];
foreach ( $fields as $fieldname => $field ) {
- if ( !empty( $field->mParams['nodata'] ) ) {
+ if ( $field->skipLoadData( $subrequest ) ) {
continue;
} elseif ( !empty( $field->mParams['disabled'] ) ) {
$row[$fieldname] = $field->getDefault();
@@ -271,7 +271,7 @@ class HTMLFormFieldCloner extends HTMLFormField {
$fields = $this->createFieldsForKey( $key );
foreach ( $fields as $fieldname => $field ) {
- $v = ( empty( $field->mParams['nodata'] ) && $values !== null )
+ $v = array_key_exists( $fieldname, $values )
? $values[$fieldname]
: $field->getDefault();
@@ -299,7 +299,7 @@ class HTMLFormFieldCloner extends HTMLFormField {
'name' => $name,
'id' => Sanitizer::escapeId( "{$this->mID}--$key--delete" ),
'cssclass' => 'mw-htmlform-cloner-delete-button',
- 'default' => $this->msg( $label )->text(),
+ 'default' => $this->getMessage( $label )->text(),
], $this->mParent );
$v = $field->getDefault();
@@ -371,7 +371,7 @@ class HTMLFormFieldCloner extends HTMLFormField {
'name' => $name,
'id' => Sanitizer::escapeId( "{$this->mID}--create" ),
'cssclass' => 'mw-htmlform-cloner-create-button',
- 'default' => $this->msg( $label )->text(),
+ 'default' => $this->getMessage( $label )->text(),
], $this->mParent );
$html .= $field->getInputHTML( $field->getDefault() );
diff --git a/includes/htmlform/HTMLSelectAndOtherField.php b/includes/htmlform/HTMLSelectAndOtherField.php
index e44ffa3083..e75c2b2507 100644
--- a/includes/htmlform/HTMLSelectAndOtherField.php
+++ b/includes/htmlform/HTMLSelectAndOtherField.php
@@ -15,9 +15,9 @@ class HTMLSelectAndOtherField extends HTMLSelectField {
if ( array_key_exists( 'other', $params ) ) {
// Do nothing
} elseif ( array_key_exists( 'other-message', $params ) ) {
- $params['other'] = wfMessage( $params['other-message'] )->plain();
+ $params['other'] = $this->getMessage( $params['other-message'] )->plain();
} else {
- $params['other'] = wfMessage( 'htmlform-selectorother-other' )->plain();
+ $params['other'] = $this->msg( 'htmlform-selectorother-other' )->plain();
}
parent::__construct( $params );
diff --git a/includes/htmlform/HTMLSubmitField.php b/includes/htmlform/HTMLSubmitField.php
index 7f90100944..cb98549efe 100644
--- a/includes/htmlform/HTMLSubmitField.php
+++ b/includes/htmlform/HTMLSubmitField.php
@@ -8,4 +8,12 @@ class HTMLSubmitField extends HTMLButtonField {
protected $buttonType = 'submit';
protected $mFlags = [ 'primary', 'constructive' ];
+
+ public function skipLoadData( $request ) {
+ return !$request->getCheck( $this->mName );
+ }
+
+ public function loadDataFromRequest( $request ) {
+ return $request->getCheck( $this->mName );
+ }
}
diff --git a/includes/htmlform/HTMLTextAreaField.php b/includes/htmlform/HTMLTextAreaField.php
index 973f1cb8d8..8ffff43888 100644
--- a/includes/htmlform/HTMLTextAreaField.php
+++ b/includes/htmlform/HTMLTextAreaField.php
@@ -4,6 +4,24 @@ class HTMLTextAreaField extends HTMLFormField {
const DEFAULT_COLS = 80;
const DEFAULT_ROWS = 25;
+ protected $mPlaceholder = '';
+
+ /**
+ * @param array $params
+ * - cols, rows: textarea size
+ * - placeholder/placeholder-message: set HTML placeholder attribute
+ * - spellcheck: set HTML spellcheck attribute
+ */
+ public function __construct( $params ) {
+ parent::__construct( $params );
+
+ if ( isset( $params['placeholder-message'] ) ) {
+ $this->mPlaceholder = $this->getMessage( $params['placeholder-message'] )->parse();
+ } elseif ( isset( $params['placeholder'] ) ) {
+ $this->mPlaceholder = $params['placeholder'];
+ }
+ }
+
function getCols() {
return isset( $this->mParams['cols'] ) ? $this->mParams['cols'] : static::DEFAULT_COLS;
}
@@ -32,9 +50,11 @@ class HTMLTextAreaField extends HTMLFormField {
if ( $this->mClass !== '' ) {
$attribs['class'] = $this->mClass;
}
+ if ( $this->mPlaceholder !== '' ) {
+ $attribs['placeholder'] = $this->mPlaceholder;
+ }
$allowedParams = [
- 'placeholder',
'tabindex',
'disabled',
'readonly',
@@ -56,9 +76,11 @@ class HTMLTextAreaField extends HTMLFormField {
if ( $this->mClass !== '' ) {
$attribs['classes'] = [ $this->mClass ];
}
+ if ( $this->mPlaceholder !== '' ) {
+ $attribs['placeholder'] = $this->mPlaceholder;
+ }
$allowedParams = [
- 'placeholder',
'tabindex',
'disabled',
'readonly',
diff --git a/includes/htmlform/HTMLTextField.php b/includes/htmlform/HTMLTextField.php
index 4d5bcabbc8..3ab7176696 100644
--- a/includes/htmlform/HTMLTextField.php
+++ b/includes/htmlform/HTMLTextField.php
@@ -1,6 +1,27 @@
mPlaceholder = $this->getMessage( $params['placeholder-message'] )->parse();
+ } elseif ( isset( $params['placeholder'] ) ) {
+ $this->mPlaceholder = $params['placeholder'];
+ }
+ }
+
function getSize() {
return isset( $this->mParams['size'] ) ? $this->mParams['size'] : 45;
}
@@ -14,7 +35,19 @@ class HTMLTextField extends HTMLFormField {
return null;
}
+ public function isPersistent() {
+ if ( isset( $this->mParams['persistent'] ) ) {
+ return $this->mParams['persistent'];
+ }
+ // don't put passwords into the HTML body, they could get cached or otherwise leaked
+ return !( isset( $this->mParams['type'] ) && $this->mParams['type'] === 'password' );
+ }
+
function getInputHTML( $value ) {
+ if ( !$this->isPersistent() ) {
+ $value = '';
+ }
+
$attribs = [
'id' => $this->mID,
'name' => $this->mName,
@@ -27,6 +60,9 @@ class HTMLTextField extends HTMLFormField {
if ( $this->mClass !== '' ) {
$attribs['class'] = $this->mClass;
}
+ if ( $this->mPlaceholder !== '' ) {
+ $attribs['placeholder'] = $this->mPlaceholder;
+ }
# @todo Enforce pattern, step, required, readonly on the server side as
# well
@@ -37,7 +73,6 @@ class HTMLTextField extends HTMLFormField {
'pattern',
'title',
'step',
- 'placeholder',
'list',
'maxlength',
'tabindex',
@@ -85,11 +120,18 @@ class HTMLTextField extends HTMLFormField {
}
function getInputOOUI( $value ) {
+ if ( !$this->isPersistent() ) {
+ $value = '';
+ }
+
$attribs = $this->getTooltipAndAccessKey();
if ( $this->mClass !== '' ) {
$attribs['classes'] = [ $this->mClass ];
}
+ if ( $this->mPlaceholder !== '' ) {
+ $attribs['placeholder'] = $this->mPlaceholder;
+ }
# @todo Enforce pattern, step, required, readonly on the server side as
# well
@@ -100,7 +142,6 @@ class HTMLTextField extends HTMLFormField {
'flags',
'indicator',
'maxlength',
- 'placeholder',
'readonly',
'required',
'tabindex',
diff --git a/includes/htmlform/OOUIHTMLForm.php b/includes/htmlform/OOUIHTMLForm.php
index 4f8365e019..278d4532aa 100644
--- a/includes/htmlform/OOUIHTMLForm.php
+++ b/includes/htmlform/OOUIHTMLForm.php
@@ -121,10 +121,12 @@ class OOUIHTMLForm extends HTMLForm {
] + $attrs );
}
- $html = Html::rawElement( 'div',
- [ 'class' => 'mw-htmlform-submit-buttons' ], "\n$buttons" ) . "\n";
+ if ( !$buttons ) {
+ return '';
+ }
- return $html;
+ return Html::rawElement( 'div',
+ [ 'class' => 'mw-htmlform-submit-buttons' ], "\n$buttons" ) . "\n";
}
protected function wrapFieldSetSection( $legend, $section, $attributes ) {
diff --git a/includes/htmlform/VFormHTMLForm.php b/includes/htmlform/VFormHTMLForm.php
index c4466153a5..f3cba487a2 100644
--- a/includes/htmlform/VFormHTMLForm.php
+++ b/includes/htmlform/VFormHTMLForm.php
@@ -137,9 +137,11 @@ class VFormHTMLForm extends HTMLForm {
$buttons .= Html::element( 'input', $attrs ) . "\n";
}
- $html = Html::rawElement( 'div',
- [ 'class' => 'mw-htmlform-submit-buttons' ], "\n$buttons" ) . "\n";
+ if ( !$buttons ) {
+ return '';
+ }
- return $html;
+ return Html::rawElement( 'div',
+ [ 'class' => 'mw-htmlform-submit-buttons' ], "\n$buttons" ) . "\n";
}
}
diff --git a/includes/installer/Installer.php b/includes/installer/Installer.php
index 442baf76a0..3d1c8600bd 100644
--- a/includes/installer/Installer.php
+++ b/includes/installer/Installer.php
@@ -757,6 +757,12 @@ abstract class Installer {
return false;
}
+ if ( !function_exists( 'mb_substr' ) ) {
+ $this->showError( 'config-mbstring-absent' );
+
+ return false;
+ }
+
return true;
}
diff --git a/includes/installer/i18n/ba.json b/includes/installer/i18n/ba.json
index 6d6b1c6841..80105f26f8 100644
--- a/includes/installer/i18n/ba.json
+++ b/includes/installer/i18n/ba.json
@@ -213,7 +213,7 @@
"config-admin-error-bademail": "ÐлекÑÑон поÑÑа адÑеÑÑ Ð´Ó©ÑÓ©Ò« Ñүгел",
"config-subscribe": "[https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki ÑÒ£Ñ Ð²ÐµÑÑиÑлаÑÑ Ð±Ð°ÑлÑҡҡа килеүен ÑаÑаÑÑÑ ÑÒ£ÑлÑÒ¡ÑаÑÑна] ÑÒÑлÑÑÒа.",
"config-subscribe-help": "ÐÑл Ñ
ÓбÓÑÒÓÑе Ð°Ò Ð±ÑлÒан ÑаÑаÑÑÑ Ð¸Ñемлеге Ñ
ÓүеÑһеÒлек пÑоблемалаÑÑ ÑÑÑаһÑнда Ñ
ÓбÓÑÒÓÑ Ò»Óм ÑÒÑ ÑÑÒаÑÑлÑÑÑÐ°Ñ Ó©Ñөн Ð°Ð½Ð¾Ð½Ñ Ð±ÑлаÑаҡ ÑайÒаланÑла. \nҺеÒÐ³Ó ÑÒа ÑÒÑлÑÑÒа Ò»Óм ÑÒ£Ñ Ð²ÐµÑÑиÑÐ»Ð°Ñ ÑÑҡҡан һайÑн MediaWiki-ÒÑ ÑÒ£ÑÑÑÑп ÑоÑоÑÒа кÓÑÓк.",
- "config-subscribe-noemail": "ÒºÐµÒ ÑÒ£Ñ ÑÑÒаÑÑлÑÑÑÐ°Ñ ÑÑÑаһÑнда Ñ
ÓбÓÑ ÐµÐ±ÓÑеү иÑÐµÐ¼Ð»ÐµÐ³ÐµÐ½Ó ÑлекÑÑон адÑеÑÑÒÑÒÒÑ ÐºÒ¯ÑÒ»ÓÑмÓй Ð³ÐµÐ½Ó ÑÒÑлÑÑÒа ÑÑÑÑÑÑÑÒÑÒ. \nÓгÓÑ Ñ
ÓбÓÑ Ð°Ð»ÒÑÒÑÒ ÐºÐ¸Ð»Ò»Ó, ÑлекÑÑон адÑеÑÑÒÑÒÒÑ ÐºÒ¯ÑÒ»ÓÑегеÒ. \nУкажиÑе адÑÐµÑ ÑлекÑÑонной поÑÑÑ, еÑли Ð²Ñ Ñ
оÑиÑе подпиÑаÑÑÑÑ Ð½Ð° ÑпиÑок ÑаÑÑÑлки.",
+ "config-subscribe-noemail": "ÒºÐµÒ ÑÒ£Ñ ÑÑÒаÑÑлÑÑÑÐ°Ñ ÑÑÑаһÑнда Ñ
ÓбÓÑ ÐµÐ±ÓÑеү иÑÐµÐ¼Ð»ÐµÐ³ÐµÐ½Ó ÑлекÑÑон адÑеÑÑÒÑÒÒÑ ÐºÒ¯ÑÒ»ÓÑмÓй Ð³ÐµÐ½Ó ÑÒÑлÑÑÒа ÑÑÑÑÑÑÑÒÑÒ. \nÓгÓÑ Ñ
ÓбÓÑ ÐµÐ±ÓÑеү ÑеÒмÓÒ»ÐµÐ½Ó ÑÒÑлÑÑÒа ÑелÓÒ»ÓгеÒ,ÑлекÑÑон адÑеÑÑÒÑÒÒÑ ÐºÒ¯ÑÒ»ÓÑегеÒ.",
"config-almost-done": "ÒºÐµÒ Ð¼Ð°Ò¡ÑаÑҡа ÑÒ¡Ñн!\nÒ Ð°Ð»Òан көйлÓÒ¯ÒÓÑÒе ÑÓ©ÑÓ©Ñөп ҡалдÑÑÑп, вики Ò¡ÑÑ Ð°Ð»Ð°Ò»ÑÒÑÒ.",
"config-optional-continue": "ТөплөÑÓк көйлÓÑгÓ",
"config-optional-skip": "ÐÑÓÑ, вики Ò¡ÑйÑÒÑÒ",
diff --git a/includes/installer/i18n/be-tarask.json b/includes/installer/i18n/be-tarask.json
index b68e244eee..1b42cddb90 100644
--- a/includes/installer/i18n/be-tarask.json
+++ b/includes/installer/i18n/be-tarask.json
@@ -68,6 +68,7 @@
"config-ctype": "'''ФаÑалÑÐ½Ð°Ñ Ð¿Ð°Ð¼Ñлка''': PHP мÑÑÑÑÑ Ð±ÑÑÑ ÑкампÑлÑÐ²Ð°Ð½Ñ Ð· падÑÑÑмкай [http://www.php.net/manual/en/ctype.installation.php паÑÑÑÑнÑÐ½Ñ Ctype].",
"config-iconv": "ÐепапÑаÑÐ½Ð°Ñ Ð¿Ð°Ð¼Ñлка: 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] пеÑад ÑÑÑалÑÑкай MediaWiki.\n* ÐаÑÑÑÑнÑне PHP ÑваÑ
одзÑÑÑ Ñ Red Hat Enterprise Linux (CentOS) 5 Ñ 6, пÑÑ Ð³ÑÑÑм павÑнна бÑÑÑ Ð¿Ð°Ð´ÐºÐ»ÑÑана Ñ /etc/php.ini
або /etc/php.d/json.ini
.\n* ÐекаÑоÑÑÑ Ð´ÑÑÑÑÑбÑÑÑÐ²Ñ Linux, вÑдадзенÑÑ Ð¿Ð°ÑÑÐ»Ñ ÑÑаÑÐ½Ñ 2013 годÑ, Ð½Ñ Ð¼Ð°ÑÑÑ Ð¿Ð°ÑÑÑÑнÑÐ½Ñ PHP, замеÑÑ Ñго пакÑÑÑÑ Ð¿Ð°ÑÑÑÑнÑне PECL Ñк php5-json
або php-pecl-jsonc
.",
+ "config-mbstring-absent": "ÐепапÑаÑÐ½Ð°Ñ Ð¿Ð°Ð¼Ñлка: PHP мÑÑÑÑÑ Ð±ÑÑÑ ÑкампÑлÑÐ²Ð°Ð½Ñ Ð· падÑÑÑмкай [http://www.php.net/manual/en/mbstring.setup.php паÑÑÑÑнÑÐ½Ñ mbstring].",
"config-xcache": "[http://xcache.lighttpd.net/ XCache] ÑÑÑалÑванÑ",
"config-apc": "[http://www.php.net/apc APC] ÑÑÑалÑванÑ",
"config-wincache": "[http://www.iis.net/download/WinCacheForPhp WinCache] ÑÑÑалÑванÑ",
@@ -315,12 +316,12 @@
"config-install-mainpage": "СÑваÑÑнÑне галоÑнай ÑÑаÑÐ¾Ð½ÐºÑ Ñа зÑмеÑÑам па змоÑÑванÑнÑ",
"config-install-extension-tables": "СÑваÑÑнÑне ÑаблÑÑÐ°Ñ Ð´Ð»Ñ ÑклÑÑанÑÑ
паÑÑÑÑнÑнÑÑ",
"config-install-mainpage-failed": "ÐемагÑÑма ÑÑÑавÑÑÑ Ð³Ð°Ð»Ð¾ÑнÑÑ ÑÑаÑонкÑ: $1",
- "config-install-done": "'''ÐÑнÑÑем!'''\nÐÑ Ð¿Ð°ÑÑпÑÑ
ова ÑÑÑалÑÐ²Ð°Ð»Ñ MediaWiki.\n\nÐÑагÑама ÑÑÑалÑванÑÐ½Ñ ÑÑваÑÑла Ñайл LocalSettings.php
.\nÐн ÑÑÑÑмлÑвае ÑÑе ÐаÑÑÑ Ð½Ð°Ð»Ð°Ð´Ñ.\n\nÐам неабÑ
одна загÑÑзÑÑÑ Ñго Ñ Ð·Ð°Ñ
аваÑÑ Ñ ÐºÐ°ÑÑннÑÑ Ð´ÑÑÑкÑоÑÑÑ ÐаÑай вÑÐºÑ (Ñ ÑÑÑ Ð¶ ÑамÑÑ Ð´ÑÑÑкÑоÑÑÑ, дзе знаÑ
одзÑÑÑа index.php). ÐагÑÑзка павÑнна паÑаÑÑа аÑÑамаÑÑÑна.\n\nÐÐ°Ð»Ñ Ð·Ð°Ð³ÑÑзка не паÑалаÑÑ, ÑÑ ÐÑ Ñе адмÑнÑлÑ, ÐÑ Ð¼Ð¾Ð¶Ð°Ñе пеÑазапÑÑÑÑÑÑÑ Ñе наÑÑÑнÑÑÑÑ Ð½Ð° ÑпаÑÑÐ»ÐºÑ Ð½ÑжÑй:\n\n$3\n\n'''ÐаÑвага''': ÐºÐ°Ð»Ñ ÐÑ Ð³ÑÑага Ð½Ñ Ð·ÑобÑÑе заÑаз, Ñо ÑÑвоÑÐ°Ð½Ñ Ñайл Ð½Ñ Ð±Ñдзе даÑÑÑÐ¿Ð½Ñ Ðам поÑÑм, ÐºÐ°Ð»Ñ ÐÑ Ð²ÑйдзеÑе з пÑагÑÐ°Ð¼Ñ ÑÑÑалÑванÑÐ½Ñ Ð±ÐµÐ· Ñго загÑÑзкÑ.\n\nÐÐ°Ð»Ñ ÐÑ Ð³ÑÑа зÑобÑÑе, ÐÑ Ð¼Ð¾Ð¶Ð°Ñе '''[$2 ÑвайÑÑÑÑ Ñ ÐаÑÑÑ Ð²ÑкÑ]'''.",
+ "config-install-done": "ÐÑнÑÑем! \nÐÑ ÑÑÑалÑÐ²Ð°Ð»Ñ MediaWiki.\n\nÐÑагÑама ÑÑÑалÑванÑÐ½Ñ ÑÑваÑÑла Ñайл LocalSettings.php
.\nÐн ÑÑÑÑмлÑвае ÑÑе ÐаÑÑÑ Ð½Ð°Ð»Ð°Ð´Ñ.\n\nÐам неабÑ
одна загÑÑзÑÑÑ Ñго Ñ Ð·Ð°Ñ
аваÑÑ Ñ ÐºÐ°ÑÑннÑÑ Ð´ÑÑÑкÑоÑÑÑ ÐаÑай вÑÐºÑ (Ñ ÑÑÑ Ð¶ ÑамÑÑ Ð´ÑÑÑкÑоÑÑÑ, дзе знаÑ
одзÑÑÑа index.php). ÐагÑÑзка павÑнна паÑаÑÑа аÑÑамаÑÑÑна.\n\nÐÐ°Ð»Ñ Ð·Ð°Ð³ÑÑзка не паÑалаÑÑ, ÑÑ ÐÑ Ñе адмÑнÑлÑ, ÐÑ Ð¼Ð¾Ð¶Ð°Ñе пеÑазапÑÑÑÑÑÑÑ Ñе наÑÑÑнÑÑÑÑ Ð½Ð° ÑпаÑÑÐ»ÐºÑ Ð½ÑжÑй:\n\n$3\n\nÐаÑвага : ÐºÐ°Ð»Ñ ÐÑ Ð³ÑÑага Ð½Ñ Ð·ÑобÑÑе заÑаз, Ñо ÑÑвоÑÐ°Ð½Ñ Ñайл Ð½Ñ Ð±Ñдзе даÑÑÑÐ¿Ð½Ñ Ðам поÑÑм, ÐºÐ°Ð»Ñ ÐÑ Ð²ÑйдзеÑе з пÑагÑÐ°Ð¼Ñ ÑÑÑалÑванÑÐ½Ñ Ð±ÐµÐ·Ñ Ñго загÑÑзкÑ.\n\nÐÐ°Ð»Ñ ÐÑ Ð³ÑÑа зÑобÑÑе, ÐÑ Ð¼Ð¾Ð¶Ð°Ñе [$2 ÑвайÑÑÑÑ Ñ ÐаÑÑÑ Ð²ÑкÑ] .",
"config-download-localsettings": "ÐагÑÑзÑÑÑ LocalSettings.php
",
"config-help": "дапамога",
"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": "'''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 ÐеÑаклад MediaWiki на ваÑÑÑ Ð¼Ð¾Ð²Ñ]\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam ÐаведайÑеÑÑ, Ñк змагаÑÑа з Ñпамам Ñ Ð²Ð°Ñай вÑкÑ]"
}
diff --git a/includes/installer/i18n/bn.json b/includes/installer/i18n/bn.json
index c9e96ed1e5..02e840b211 100644
--- a/includes/installer/i18n/bn.json
+++ b/includes/installer/i18n/bn.json
@@ -73,6 +73,7 @@
"config-missing-db-host": "à¦à¦ªà¦¨à¦¾à¦à§ à¦
বশà§à¦¯à¦ \"{{int:config-db-host}}\"-à¦à¦° à¦à¦¨à§à¦¯ à¦à¦à¦à¦¿ মান পà§à¦°à¦¬à§à¦¶ à¦à¦°à¦¾à¦¤à§ হবà§à¥¤",
"config-missing-db-server-oracle": "à¦à¦ªà¦¨à¦¾à¦à§ à¦
বশà§à¦¯à¦ \"{{int:config-db-host-oracle}}\"-à¦à¦° à¦à¦¨à§à¦¯ à¦à¦à¦à¦¿ মান পà§à¦°à¦¬à§à¦¶ à¦à¦°à¦¾à¦¤à§ হবà§à¥¤",
"config-connection-error": "$1।\n\n\nদয়া à¦à¦°à§ পà§à¦°à¦¸à§à¦¤à¦¾à¦¬à¦à¦¾à¦°à§, বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦à¦¾à¦°à§ নাম ঠপাসà¦à¦¯à¦¼à¦¾à¦°à§à¦¡ দà§à¦à§à¦¨ à¦à¦¬à¦ পà§à¦¨à¦°à¦¾à¦¯à¦¼ à¦à§à¦·à§à¦à¦¾ à¦à¦°à§à¦¨à¥¤",
+ "config-regenerate": "LocalSettings.php পà§à¦¨à¦°à§à¦¤à§à¦ªà¦¾à¦¦à¦¿à¦¤ à¦à¦°à§à¦¨ â",
"config-mysql-engine": "সà¦à¦°à¦à§à¦·à¦£ à¦à¦à§à¦à¦¿à¦¨:",
"config-mysql-innodb": "à¦à¦¨à§à¦¡à¦¿à¦¬à¦¿",
"config-mysql-myisam": "মাà¦à¦à¦à¦à¦¸à¦à¦à¦®",
diff --git a/includes/installer/i18n/cs.json b/includes/installer/i18n/cs.json
index ddbaa19675..905e3266af 100644
--- a/includes/installer/i18n/cs.json
+++ b/includes/installer/i18n/cs.json
@@ -55,37 +55,38 @@
"config-env-php": "Je nainstalováno PHP $1.",
"config-env-hhvm": "Je nainstalováno HHVM $1.",
"config-unicode-using-intl": "Pro normalizaci Unicode se použÃvá [http://pecl.php.net/intl PECL rozÅ¡ÃÅenà intl].",
- "config-unicode-pure-php-warning": "'''UpozornÄnÃ''': Nenà dostupné [http://pecl.php.net/intl PECL rozÅ¡ÃÅenà intl] pro normalizaci Unicode, bude se využÃvat pomalá implementace v Äistém PHP.\nPokud provozujete wiki s velkou návÅ¡tÄvnostÃ, mÄli byste si pÅeÄÃst nÄco o [//www.mediawiki.org/wiki/Special:MyLanguage/Unicode_normalization_considerations normalizaci Unicode].",
- "config-unicode-update-warning": "'''UpozornÄnÃ''': Nainstalovaná verze vrstvy pro normalizaci Unicode použÃvá starÅ¡Ã verzi knihovny [http://site.icu-project.org/ projektu ICU].\nPokud vám aspoÅ trochu záležà na použÃvánà Unicode, mÄli byste [//www.mediawiki.org/wiki/Special:MyLanguage/Unicode_normalization_considerations ji aktualizovat].",
+ "config-unicode-pure-php-warning": "UpozornÄnÃ: Nenà dostupné [http://pecl.php.net/intl PECL rozÅ¡ÃÅenà intl] pro normalizaci Unicode, bude se využÃvat pomalá implementace v Äistém PHP.\nPokud provozujete wiki s velkou návÅ¡tÄvnostÃ, mÄli byste si pÅeÄÃst nÄco o [//www.mediawiki.org/wiki/Special:MyLanguage/Unicode_normalization_considerations normalizaci Unicode].",
+ "config-unicode-update-warning": "UpozornÄnÃ: Nainstalovaná verze vrstvy pro normalizaci Unicode použÃvá starÅ¡Ã verzi knihovny [http://site.icu-project.org/ projektu ICU].\nPokud vám aspoÅ trochu záležà na použÃvánà Unicode, mÄli byste [//www.mediawiki.org/wiki/Special:MyLanguage/Unicode_normalization_considerations ji aktualizovat].",
"config-no-db": "NepodaÅilo se nalézt vhodný databázový ovladaÄ! MusÃte nainstalovat databázový ovladaÄ pro PHP.\n{{PLURAL:$2|Je podporován následujÃcà typ databáze|Jsou podporovány následujÃcà typy databázÃ}}: $1.\n\nPokud jste si PHP pÅeložili sami, pÅekonfigurujte ho se zapnutým databázovým klientem, napÅÃklad pomocà ./configure --with-mysql
.\nPokud jste PHP nainstalovali z balÃÄku Debian Äi Ubuntu, potÅebujete nainstalovat také modul php5-mysql
.",
- "config-outdated-sqlite": "'''UpozornÄnÃ''': Máte SQLite $1, které je starÅ¡Ã než minimálnÄ vyžadovaná verze $2. SQLite nebude dostupné.",
- "config-no-fts3": "'''UpozornÄnÃ''': SQLite bylo pÅeloženo bez [//sqlite.org/fts3.html modulu FTS3], funkce pro vyhledávánà zde nebudou dostupné.",
- "config-mbstring": "'''Kritická chyba: Je zapnuto [http://www.php.net/manual/en/ref.mbstring.php#mbstring.overload mbstring.func_overload]!'''\nToto nastavenà způsobuje chyby a může nepÅedvÃdatelnÄ poÅ¡kozovat vstupnà data.\nMediaWiki nelze nainstalovat ani použÃvat, dokud nenà toto nastavenà vypnuto.",
+ "config-outdated-sqlite": "UpozornÄnÃ: Máte SQLite $1, které je starÅ¡Ã než minimálnÄ vyžadovaná verze $2. SQLite nebude dostupné.",
+ "config-no-fts3": "UpozornÄnÃ: SQLite bylo pÅeloženo bez [//sqlite.org/fts3.html modulu FTS3], funkce pro vyhledávánà zde nebudou dostupné.",
+ "config-mbstring": "Kritická chyba: Je zapnuto [http://www.php.net/manual/en/ref.mbstring.php#mbstring.overload mbstring.func_overload]! \nToto nastavenà způsobuje chyby a může nepÅedvÃdatelnÄ poÅ¡kozovat vstupnà data.\nMediaWiki nelze nainstalovat ani použÃvat, dokud nenà toto nastavenà vypnuto.",
"config-xml-bad": "Chybà XML modul pro PHP.\nMediaWiki potÅebuje funkce v tomto modulu a v této konfiguraci nebude fungovat.\nMožná si budete muset nainstalovat RPM balÃÄek php-xml.",
- "config-pcre-old": "'''Kritická chyba:''' Je vyžadováno PCRE verze $1 nebo novÄjÅ¡Ã.\nVaÅ¡e binárka PHP obsahuje PCRE $2.\n[https://www.mediawiki.org/wiki/Manual:Errors_and_symptoms/PCRE VÃce informacÃ.]",
- "config-pcre-no-utf8": "'''Kritická chyba''': PHP modul PCRE byl zÅejmÄ pÅeložen bez podpory PCRE_UTF8.\nMediaWiki vyžaduje ke správné funkci podporu UTF-8.",
+ "config-pcre-old": "Kritická chyba: Je vyžadováno PCRE verze $1 nebo novÄjÅ¡Ã.\nVaÅ¡e binárka PHP obsahuje PCRE $2.\n[https://www.mediawiki.org/wiki/Manual:Errors_and_symptoms/PCRE VÃce informacÃ.]",
+ "config-pcre-no-utf8": "Kritická chyba: PHP modul PCRE byl zÅejmÄ pÅeložen bez podpory PCRE_UTF8.\nMediaWiki vyžaduje ke správné funkci podporu UTF-8.",
"config-memory-raised": "memory_limit
v PHP byl nastaven na $1, zvýšen na $2.",
- "config-memory-bad": "'''UpozornÄnÃ:''' memory_limit
je v PHP nastaven na $1.\nTo je pravdÄpodobnÄ pÅÃliÅ¡ málo.\nInstalace může selhat!",
- "config-ctype": "'''Kritická chyba''': PHP musà být pÅeloženo s podporou pro [http://www.php.net/manual/en/ctype.installation.php rozÅ¡ÃÅenà Ctype].",
- "config-iconv": "'''Kritická chyba''': PHP musà být pÅeloženo s podporou pro [http://www.php.net/manual/en/iconv.installation.php rozÅ¡ÃÅenà iconv].",
- "config-json": "'''Kritická chyba:''' PHP bylo pÅeloženo bez podpory JSON.\nPÅed instalacà MediaWiki musÃte buÄ nainstalovat rozÅ¡ÃÅenà PHP JSON nebo rozÅ¡ÃÅenà [http://pecl.php.net/package/jsonc PECL jsonc].\n* RozÅ¡ÃÅenà PHP je souÄástà Red Hat Enterprise Linux (CentOS) 5 a 6, avÅ¡ak musà se povolit v /etc/php.ini
nebo /etc/php.d/json.ini
.\n* V nÄkterých linuxových distribucÃch vydaných po kvÄtnu 2013 může toto rozÅ¡ÃÅenà PHP chybÄt a mÃsto toho mohou použÃvat rozÅ¡ÃÅenà PECL jako php5-json
nebo php-pecl-jsonc
.",
+ "config-memory-bad": "UpozornÄnÃ: memory_limit
je v PHP nastaven na $1.\nTo je pravdÄpodobnÄ pÅÃliÅ¡ málo.\nInstalace může selhat!",
+ "config-ctype": "Kritická chyba: PHP musà být pÅeloženo s podporou pro [http://www.php.net/manual/en/ctype.installation.php rozÅ¡ÃÅenà Ctype].",
+ "config-iconv": "Kritická chyba: PHP musà být pÅeloženo s podporou pro [http://www.php.net/manual/en/iconv.installation.php rozÅ¡ÃÅenà iconv].",
+ "config-json": "Kritická chyba: PHP bylo pÅeloženo bez podpory JSON.\nPÅed instalacà MediaWiki musÃte buÄ nainstalovat rozÅ¡ÃÅenà PHP JSON nebo rozÅ¡ÃÅenà [http://pecl.php.net/package/jsonc PECL jsonc].\n* RozÅ¡ÃÅenà PHP je souÄástà Red Hat Enterprise Linux (CentOS) 5 a 6, avÅ¡ak musà se povolit v /etc/php.ini
nebo /etc/php.d/json.ini
.\n* V nÄkterých linuxových distribucÃch vydaných po kvÄtnu 2013 může toto rozÅ¡ÃÅenà PHP chybÄt a mÃsto toho mohou použÃvat rozÅ¡ÃÅenà PECL jako php5-json
nebo php-pecl-jsonc
.",
+ "config-mbstring-absent": "Kritická chyba: PHP musà být pÅeloženo s podporou pro [http://www.php.net/manual/en/mbstring.setup.php rozÅ¡ÃÅenà mbstring].",
"config-xcache": "Je nainstalována [http://xcache.lighttpd.net/ XCache]",
"config-apc": "Je nainstalováno [http://www.php.net/apc APC]",
"config-wincache": "Je nainstalována [http://www.iis.net/download/WinCacheForPhp WinCache]",
"config-no-cache-apcu": "UpozornÄnÃ: Nebylo nalezeno [http://www.php.net/apcu APCu], [http://xcache.lighttpd.net/ XCache], ani [http://www.iis.net/download/WinCacheForPhp WinCache].\nKeÅ¡ovánà objektů bude vypnuto.",
- "config-mod-security": "'''UpozornÄnÃ''': váš webový server má zapnuto [http://modsecurity.org/ mod_security]. PÅi chybné konfiguraci může způsobovat potÞe MediaWiki Äi dalÅ¡Ãm programům, které umožÅujà ukládat libovolný obsah.\nPokud narazÃte na náhodné chyby, podÃvejte se do [http://modsecurity.org/documentation/ dokumentace mod_security] nebo kontaktujte technickou podporu vaÅ¡eho poskytovatele.",
+ "config-mod-security": "UpozornÄnÃ: váš webový server má zapnuto [http://modsecurity.org/ mod_security]/mod_security2. Mnoho bÄžných konfiguracà bude způsobovat potÞe MediaWiki a dalÅ¡Ãm programům, které umožÅujà ukládat libovolný obsah.\nPokud je to možné, mÄlo by se to vypnout. Jinak se v pÅÃpadÄ, že narazÃte na náhodné chyby, podÃvejte do [http://modsecurity.org/documentation/ dokumentace mod_security] nebo kontaktujte technickou podporu vaÅ¡eho poskytovatele.",
"config-diff3-bad": "Nebyl nalezen GNU diff3.",
"config-git": "Nalezen software pro správu verzà Git: $1
.",
"config-git-bad": "Software pro správu verzà Git nebyl nalezen.",
"config-imagemagick": "Nalezen ImageMagick: $1
.\nPokud povolÃte naÄÃtánà souborů, bude zapnuto vytváÅenà náhledů.",
"config-gd": "Nalezena vestavÄná grafická knihovna GD.\nPokud povolÃte naÄÃtánà souborů, bude zapnuto vytváÅenà náhledů.",
"config-no-scaling": "Nebyla nalezena knihovna GD ani ImageMagick.\nVytváÅenà náhledů bude vypnuto.",
- "config-no-uri": "'''Chyba:''' NepodaÅilo se urÄit aktuálnà URI.\nInstalace pÅeruÅ¡ena.",
- "config-no-cli-uri": "UpozornÄnà : Nebylo uvedeno --scriptpath
, použÃvá se implicitnà hodnota: $1
.",
+ "config-no-uri": "Chyba: NepodaÅilo se urÄit aktuálnà URI.\nInstalace pÅeruÅ¡ena.",
+ "config-no-cli-uri": "UpozornÄnÃ: Nebylo uvedeno --scriptpath
, použÃvá se implicitnà hodnota: $1
.",
"config-using-server": "Použito jméno serveru â$1 â.",
"config-using-uri": "Použito URL serveru â$1$2 â.",
- "config-uploads-not-safe": "'''UpozornÄnÃ:''' Váš výchozà adresáŠpro naÄÃtánà souborů $1
umožÅuje spouÅ¡tÄnà libovolných skriptů.\nPÅestože MediaWiki vÅ¡echny naÄÃtané soubory kontroluje proti bezpeÄnostnÃm hrozbám, je důraznÄ doporuÄeno [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Security#Upload_security tuto bezpeÄnostnà dÃru zacelit] pÅed povolenÃm naÄÃtánà souborů.",
- "config-no-cli-uploads-check": "'''UpozornÄnÃ:''' Váš výchozà adresáŠpro naÄÃtané soubory ($1
) se pÅi instalaci z pÅÃkazového Åádku nekontroluje na bezpeÄnostnà hrozbu provádÄnà libovolných skriptů.",
+ "config-uploads-not-safe": "UpozornÄnÃ: Váš výchozà adresáŠpro naÄÃtánà souborů $1
umožÅuje spouÅ¡tÄnà libovolných skriptů.\nPÅestože MediaWiki vÅ¡echny naÄÃtané soubory kontroluje proti bezpeÄnostnÃm hrozbám, je důraznÄ doporuÄeno [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Security#Upload_security tuto bezpeÄnostnà dÃru zacelit] pÅed povolenÃm naÄÃtánà souborů.",
+ "config-no-cli-uploads-check": "UpozornÄnÃ: Váš výchozà adresáŠpro naÄÃtané soubory ($1
) se pÅi instalaci z pÅÃkazového Åádku nekontroluje na bezpeÄnostnà hrozbu provádÄnà libovolných skriptů.",
"config-brokenlibxml": "Váš systém obsahuje kombinaci verzà PHP a libxml2, která je chybná a může v MediaWiki a dalÅ¡Ãch webových aplikacÃch způsobovat skryté poÅ¡kozovánà dat.\nAktualizujte na libxml2 2.7.3 nebo novÄjÅ¡Ã ([https://bugs.php.net/bug.php?id=45996 chyba evidovaná u PHP]).\nInstalace pÅeruÅ¡ena.",
"config-suhosin-max-value-length": "Je nainstalován Suhosin, který omezuje délku parametrů GET na $1 bajtů.\nKomponenta ResourceLoader z MediaWiki dokáže s tÃmto omezenÃm pracovat, ale snÞà to výkon.\nPokud to je alespoÅ trochu možné, mÄli byste v php.ini
nastavit suhosin.get.max_value_length
na 1024 nebo vyššà a na stejnou hodnotu nastavit v LocalSettings.php
promÄnnou $wgResourceLoaderMaxQueryLength
.",
"config-db-type": "Typ databáze:",
@@ -113,8 +114,8 @@
"config-charset-mysql5-binary": "MySQL 4.1/5.0 binárnÃ",
"config-charset-mysql5": "MySQL 4.1/5.0 UTF-8",
"config-charset-mysql4": "MySQL 4.0 zpÄtnÄ kompatibilnà UTF-8",
- "config-charset-help": "'''UpozornÄnÃ:''' Pokud použijete '''zpÄtnÄ kompatibilnà UTF-8''' na MySQL 4.1+ a následnÄ zazálohujete databázi pomocà mysqldump
, může to zniÄit vÅ¡echny ne-ASCII znaky, což nevratnÄ poÅ¡kodà vaÅ¡e zálohy!\n\nV '''binárnÃm režimu''' ukládá MediaWiki text v UTF-8 do databáze v binárnÃch sloupcÃch.\nTo je výkonnÄjÅ¡Ã než UTF-8 režim MySQL a umožÅuje využÃt plný rozsah znaků Unicode.\nV '''režimu UTF-8''' bude MySQL znát znakovou sadu vaÅ¡ich dat a může je pÅÃsluÅ¡nÄ zobrazovat a pÅevádÄt,\nale neumožnà vám uložit znaky mimo [//en.wikipedia.org/wiki/Mapping_of_Unicode_character_planes Basic Multilingual Plane].",
- "config-mysql-old": "Je vyžadováno MySQL $1 nebo novÄjÅ¡Ã, vy máte $2.",
+ "config-charset-help": "UpozornÄnÃ: Pokud použijete zpÄtnÄ kompatibilnà UTF-8 na MySQL 4.1+ a následnÄ zazálohujete databázi pomocà mysqldump
, může to zniÄit vÅ¡echny ne-ASCII znaky, což nevratnÄ poÅ¡kodà vaÅ¡e zálohy!\n\nV binárnÃm režimu ukládá MediaWiki text v UTF-8 do databáze v binárnÃch sloupcÃch.\nTo je výkonnÄjÅ¡Ã než UTF-8 režim MySQL a umožÅuje využÃt plný rozsah znaků Unicode.\nV režimu UTF-8 bude MySQL znát znakovou sadu vaÅ¡ich dat a může je pÅÃsluÅ¡nÄ zobrazovat a pÅevádÄt,\nale neumožnà vám uložit znaky mimo [//en.wikipedia.org/wiki/Mapping_of_Unicode_character_planes Basic Multilingual Plane].",
+ "config-mysql-old": "Je vyžadováno MySQL $1 nebo novÄjÅ¡Ã. Vy máte $2.",
"config-db-port": "Databázový port:",
"config-db-schema": "Schéma pro MediaWiki:",
"config-db-schema-help": "Toto schéma zpravidla staÄÃ.\nMÄÅte ho, jen pokud vÃte, že je to potÅeba.",
@@ -166,7 +167,7 @@
"config-upgrade-done-no-regenerate": "Aktualizace byla dokonÄena.\n\nSvou wiki teÄ můžete [$1 zaÄÃt použÃvat].",
"config-regenerate": "PÅegenerovat LocalSettings.php â",
"config-show-table-status": "Dotaz SHOW TABLE STATUS
se nezdaÅil!",
- "config-unknown-collation": "'''UpozornÄnÃ:''' Databáze použÃvá nerozpoznané ÅazenÃ.",
+ "config-unknown-collation": "UpozornÄnÃ: Databáze použÃvá nerozpoznané ÅazenÃ.",
"config-db-web-account": "Databázový úÄet pro webový pÅÃstup",
"config-db-web-help": "Zvolte uživatelské jméno a heslo, které bude webový server použÃvat pro pÅipojenà k databázovému serveru pÅi bÄžném provozu wiki.",
"config-db-web-account-same": "PoužÃt stejný úÄet jako pro instalaci",
@@ -175,8 +176,8 @@
"config-mysql-engine": "Typ úložiÅ¡tÄ:",
"config-mysql-innodb": "InnoDB",
"config-mysql-myisam": "MyISAM",
- "config-mysql-myisam-dep": "'''UpozornÄnÃ''': Jako typ úložiÅ¡tÄ pro MySQL jste zvolili MyISAM, které nenà pro použità v MediaWiki doporuÄeno, neboÅ¥:\n* stÄžà podporuje souÄasný pÅÃstup kvůli zamykánà tabulek,\n* je náchylnÄjÅ¡Ã na poÅ¡kozenà dat než jiná úložiÅ¡tÄ,\n* kód MediaWiki nepodporuje MyISAM vždy tak dobÅe, jak by mÄl.\n\nPokud vaÅ¡e instalace MySQL podporuje InnoDB, důraznÄ doporuÄujeme použÃt spÃÅ¡e to.\nPokud vaÅ¡e instalace MySQL InnoDB nepodporuje, možná je Äas na aktualizaci.",
- "config-mysql-only-myisam-dep": "'''UpozornÄnÃ:''' Jediným dostupným úložiÅ¡tÄm dat pro MySQL je MyISAM, který se k užità s MediaWiki nedoporuÄuje, neboÅ¥:\n* témÄÅ nepodporuje paralelnà pÅÃstup kvůli zamykánà tabulek,\n* oproti jiným formátům je náchylnÄjÅ¡Ã k poÅ¡kozenÃ,\n* MediaWiki nepodporuje MyISAM tak dobÅe, jak by bylo tÅeba.\n\nVaÅ¡e instalace MySQL nepodporuje InnoDB, možná je na Äase upgradovat.",
+ "config-mysql-myisam-dep": "UpozornÄnÃ: Jako typ úložiÅ¡tÄ pro MySQL jste zvolili MyISAM, které nenà pro použità v MediaWiki doporuÄeno, neboÅ¥:\n* stÄžà podporuje souÄasný pÅÃstup kvůli zamykánà tabulek,\n* je náchylnÄjÅ¡Ã na poÅ¡kozenà dat než jiná úložiÅ¡tÄ,\n* kód MediaWiki nepodporuje MyISAM vždy tak dobÅe, jak by mÄl.\n\nPokud vaÅ¡e instalace MySQL podporuje InnoDB, důraznÄ doporuÄujeme použÃt spÃÅ¡e to.\nPokud vaÅ¡e instalace MySQL InnoDB nepodporuje, možná je Äas na aktualizaci.",
+ "config-mysql-only-myisam-dep": "UpozornÄnÃ: Jediným dostupným úložiÅ¡tÄm dat pro MySQL je MyISAM, který se k užità s MediaWiki nedoporuÄuje, neboÅ¥:\n* témÄÅ nepodporuje paralelnà pÅÃstup kvůli zamykánà tabulek,\n* oproti jiným formátům je náchylnÄjÅ¡Ã k poÅ¡kozenÃ,\n* MediaWiki nepodporuje MyISAM tak dobÅe, jak by bylo tÅeba.\n\nVaÅ¡e instalace MySQL nepodporuje InnoDB, možná je na Äase upgradovat.",
"config-mysql-engine-help": "'''InnoDB''' je témÄÅ vždy nejlepÅ¡Ã volba, neboÅ¥ má dobrou podporu souÄasného pÅÃstupu.\n\n'''MyISAM''' může být rychlejÅ¡Ã u instalacà pro jednoho uživatele nebo jen pro ÄtenÃ.\nDatabáze MyISAM bývajà poÅ¡kozeny ÄastÄji než databáze InnoDB.",
"config-mysql-charset": "Znaková sada databáze:",
"config-mysql-binary": "BinárnÃ",
diff --git a/includes/installer/i18n/de.json b/includes/installer/i18n/de.json
index 2516a16e2d..5a1e1c42fa 100644
--- a/includes/installer/i18n/de.json
+++ b/includes/installer/i18n/de.json
@@ -76,6 +76,7 @@
"config-ctype": "'''Fataler Fehler:''' PHP muss mit Unterstützung für das [http://www.php.net/manual/de/ctype.installation.php Modul ctype] kompiliert werden.",
"config-iconv": "Fatal: PHP muss mit Support für die [http://www.php.net/manual/en/iconv.installation.php iconv-Erweiterung] kompiliert werden.",
"config-json": "Fataler Fehler: PHP wurde ohne Unterstützung für JSON kompiliert.\nVor der Installation von MediaWiki muss entweder die PHP-JSON- oder die [http://pecl.php.net/package/jsonc PECL-jsonc]-Erweiterung installieren werden.\n* Die PHP-Erweiterung ist in Red Hat Enterprise Linux (CentOS) 5 und 6 enthalten, muss jedoch in /etc/php.ini
oder /etc/php.d/json.ini
aktiviert werden.\n* Einige Linux-Distributionen, die nach Mai 2013 veröffentlicht wurden, nutzen nicht mehr die PHP-Erweiterung, sondern stattdessen die PECL-Erweiterung als php5-json
oder php-pecl-jsonc
.",
+ "config-mbstring-absent": "Fatal: PHP muss mit Unterstützung für die [http://www.php.net/manual/de/mbstring.setup.php mbstring-Erweiterung] kompiliert werden.",
"config-xcache": "[http://xcache.lighttpd.net/ XCache] ist installiert",
"config-apc": "[http://www.php.net/apc APC] ist installiert",
"config-wincache": "[http://www.iis.net/download/WinCacheForPhp WinCache] ist installiert",
diff --git a/includes/installer/i18n/en.json b/includes/installer/i18n/en.json
index 6fa59306b4..b97cc961db 100644
--- a/includes/installer/i18n/en.json
+++ b/includes/installer/i18n/en.json
@@ -60,6 +60,7 @@
"config-ctype": "Fatal: PHP must be compiled with support for the [http://www.php.net/manual/en/ctype.installation.php Ctype extension].",
"config-iconv": "Fatal: PHP must be compiled with support for the [http://www.php.net/manual/en/iconv.installation.php iconv extension].",
"config-json": "Fatal: PHP was compiled without JSON support.\nYou must install either the PHP JSON extension or the [http://pecl.php.net/package/jsonc PECL jsonc] extension before installing MediaWiki.\n* The PHP extension is included in Red Hat Enterprise Linux (CentOS) 5 and 6, though must be enabled in /etc/php.ini
or /etc/php.d/json.ini
.\n* Some Linux distributions released after May 2013 omit the PHP extension, instead packaging the PECL extension as php5-json
or php-pecl-jsonc
.",
+ "config-mbstring-absent": "Fatal: PHP must be compiled with support for the [http://www.php.net/manual/en/mbstring.setup.php mbstring extension].",
"config-xcache": "[http://xcache.lighttpd.net/ XCache] is installed",
"config-apc": "[http://www.php.net/apc APC] is installed",
"config-wincache": "[http://www.iis.net/download/WinCacheForPhp WinCache] is installed",
diff --git a/includes/installer/i18n/es.json b/includes/installer/i18n/es.json
index 3090edcc0f..9ea112be57 100644
--- a/includes/installer/i18n/es.json
+++ b/includes/installer/i18n/es.json
@@ -27,7 +27,8 @@
"AVIADOR",
"FuzzyDice",
"Legoktm",
- "Matiia"
+ "Matiia",
+ "AlvaroMolina"
]
},
"config-desc": "El instalador de MediaWiki",
@@ -88,6 +89,7 @@
"config-ctype": "'''Fatal''': Se necesita compilar PHP con compatibilidad para la [http://www.php.net/manual/en/ctype.installation.php extensión Ctype].",
"config-iconv": "Fatal: PHP debe ser compilado con soporte para la [http://www.php.net/manual/en/iconv.installation.php extensión iconv].",
"config-json": "'''Fatal:''' PHP fue compilado sin soporte para JSON.\nDebes instalar la extensión JSON o la extensión [http://pecl.php.net/package/jsonc PECL jsonc] antes de instalar MediaWiki.\n* La extensión PHP se incluye en Red Hat Enterprise Linux (CentOS) 5 y 6, aunque debe habilitarse en /etc/php.ini
o /etc/php.d/json.ini
.\n* Algunas distribuciones Linux liberadas después de mayo del 2013 omiten la extensión PHP, y en su lugar disponen de la extensión PECL en el paquete php5-json
o php-pecl-jsonc
.",
+ "config-mbstring-absent": "'''Fatal''': Se necesita compilar PHP con compatibilidad para la [http://www.php.net/manual/en/ctype.installation.php extensión Ctype].",
"config-xcache": "[http://xcache.lighttpd.net/ XCache] está instalado",
"config-apc": "[http://www.php.net/apc APC] está instalado",
"config-wincache": "[http://www.iis.net/download/WinCacheForPhp WinCache] está instalado",
@@ -205,7 +207,7 @@
"config-mssql-install-auth": "Selecciona el tipo de autenticación que se utilizará para conectarse a la base de datos durante el proceso de instalación.\nSi seleccionas \"{{int:config-mssql-windowsauth}}\", se usarán las credenciales del usuario con el que se ejecuta el servidor web.",
"config-mssql-web-auth": "Selecciona el tipo de autenticación que utilizará el servidor web para conectarse al servidor de base de datos, durante el funcionamiento normal de la wiki.\nSi seleccionas \"{{int:config-mssql-windowsauth}}\", se usarán las credenciales del usuario con el cual se ejecuta el servidor web.",
"config-mssql-sqlauth": "Autenticación de SQL Server",
- "config-mssql-windowsauth": "Autentificación de Windows",
+ "config-mssql-windowsauth": "Autenticación de Windows",
"config-site-name": "Nombre del wiki:",
"config-site-name-help": "Esto aparecerá en la barra de tÃtulo del navegador y en varios otros lugares.",
"config-site-name-blank": "Escribe un nombre de sitio.",
@@ -242,7 +244,7 @@
"config-profile-no-anon": "Creación de cuenta requerida",
"config-profile-fishbowl": "Sólo editores autorizados",
"config-profile-private": "Wiki privado",
- "config-profile-help": "Los wikis funcionan mejor cuando dejas que los edite tanta gente como sea posible.\nEn MediaWiki, es fácil revisar los cambios recientes y revertir los daños realizados por usuarios malintencionados o novatos.\nSin embargo, muchos han encontrado que MediaWiki es útil para una amplia variedad de funciones, y a veces no es fácil convencer a todos de los beneficios de la forma wiki.\nPor lo tanto tienes la elección.\n\nEl modelo '''{{int:config-profile-wiki}}''' permite que cualquiera pueda editar, sin siquiera iniciar sesión.\nUn wiki con '''{{int:config-profile-no-anon}}''' ofrece rendición de cuentas adicional, pero puede disuadir a colaboradores.\n\nEl modelo '''{{int:config-profile-fishbowl}}''' permite editar a los usuarios autorizados, pero el público puede ver las páginas, incluyendo el historial.\nUn '''{{int:config-profile-private}}''' sólo permite ver páginas a los usuarios autorizados, el mismo grupo al que le está permitido editar.\n\nConfiguraciones más complejas de derechos de usuario están disponibles después de la instalación, consulte [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:User_rights esta entrada en el manual].",
+ "config-profile-help": "Los wikis funcionan mejor cuando dejas que los edite tanta gente como sea posible.\nEn MediaWiki, es fácil revisar los cambios recientes y revertir los daños realizados por usuarios malintencionados o novatos.\nSin embargo, muchos han encontrado que MediaWiki es útil para una amplia variedad de funciones, y a veces no es fácil convencer a todos de los beneficios de la forma wiki.\nPor lo tanto tienes la elección.\n\nEl modelo {{int:config-profile-wiki}} permite que cualquiera pueda editar, sin siquiera iniciar sesión.\nUn wiki con {{int:config-profile-no-anon}} ofrece rendición de cuentas adicional, pero puede disuadir a colaboradores casuales.\n\nEl modelo {{int:config-profile-fishbowl}} permite editar a los usuarios autorizados, pero el público puede ver las páginas, incluyendo el historial.\nUn {{int:config-profile-private}} sólo permite ver páginas a los usuarios autorizados, el mismo grupo al que le está permitido editar.\n\nConfiguraciones más complejas de permisos de usuario están disponibles después de la instalación. Consulta [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:User_rights la entrada correspondiente del manual].",
"config-license": "Derechos de autor y licencia:",
"config-license-none": "Pie sin licencia",
"config-license-cc-by-sa": "Creative Commons Atribución-CompartirIgual",
diff --git a/includes/installer/i18n/fa.json b/includes/installer/i18n/fa.json
index b5ed996c3b..7d756eae1f 100644
--- a/includes/installer/i18n/fa.json
+++ b/includes/installer/i18n/fa.json
@@ -11,7 +11,9 @@
"Danialbehzadi",
"Leyth",
"Huji",
- "Macofe"
+ "Macofe",
+ "درÙØ´ کاÙÛاÙÛ",
+ "Hamisun"
]
},
"config-desc": "Ùصب Ú©ÙÙدÙÙ ÙÛÚ©ÛâÙ
دÛا",
@@ -72,10 +74,10 @@
"config-ctype": "'''Ù
خرب:''' Ù¾ÛâاÚâÙ¾Û Ø¨Ø§Ûد با پشتÛباÙÛ Ø¨Ø±Ø§Û [http://www.php.net/manual/en/ctype.installation.php Ctype extension] تÙÛ٠شدÙâباشد.",
"config-iconv": "Ø®Ø·Ø§Û Ø§Ø³Ø§Ø³Û: Ù¾ÛâاÚâÙ¾Û Ø¨Ø§Ûد کاÙ
پاÛÙâشد٠باشد Ø¨Ø±Ø§Û Ù¾Ø´ØªÛباÙÛ Ø§Ø² [http://www.php.net/manual/en/iconv.installation.php اÙزÙÙÙÙ iconv].",
"config-json": "'''Ù
خرب:''' Ù¾ÛâاÚâÙ¾Û Ø¨Ø¯Ù٠پشتÛباÙÛ Ø¬ÙÛâاسâاÙâا٠تÙÛ٠شدÙâبÙد.\nØ´Ù
ا باÛد Ùب٠از Ùصب Ù
دÛاÙÛÚ©Û Ûا بسط جÙÛâاسâاÙâا٠پÛâاÚâÙ¾Û Ûا بسط [http://pecl.php.net/package/jsonc PECL jsonc] را Ùصب Ú©ÙÛد.\n* بسط Ù¾ÛâاÚâÙ¾Û Ø´Ø§Ù
Ù ÙÛÙÙکس اÛÙترپراÛز رد Ùت (سÙÙتâاÙاÙس) 5 Ûا 6 Ø§Ø³ØªØ ÙرÚÙد باÛد در /etc/php.ini
Ûا /etc/php.d/json.ini
Ùعا٠باشد.\n* بÙâØ¬Ø§Û Ø¨Ø³ØªÙâبÙØ¯Û Ú©Ø±Ø¯Ù Ø¨Ø³Ø· Ù¾ÛâاÛÛâسÛâاÙÙ Ù
اÙÙد php5-json
Ûا php-pecl-jsonc
Ø ØªÙزÛعâÙØ§Û Ø¨Ø±Ø®Û ÙÛÙÙکس پس از Ù
ا٠Ù
Û Û²Û°Û±Û³ با Øذ٠بسط Ù¾ÛâاÚâÙ¾Û Ø§ÙزاÛØ´ Ù¾Ûدا کرد.",
+ "config-mbstring-absent": "Ø®Ø·Ø§Û Ø§Ø³Ø§Ø³Û: Ù¾ÛâاÚâÙ¾Û Ø¨Ø§Ûد با پشتÛباÙÛ [http://www.php.net/manual/en/mbstring.setup.php mbstring extension] تÙÛ٠شد٠باشد.",
"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-no-cache-apcu": "Ùشدار: Ù¾ÛÙÙد [http://www.php.net/apcu APCu]Ø [http://xcache.lighttpd.net/ XCache] Ûا [http://www.iis.net/download/WinCacheForPhp WinCache] ÛاÙت Ùشد. ذخÛØ±Ù Ø´Û Ùعا٠ÙÛست.",
"config-mod-security": "'''Ùشدار:''' Ùب سرÙر Ø´Ù
ا [http://modsecurity.org/ mod_security] Ùعا٠است.اگر اشتبا٠پÛکربÙØ¯Û Ø´Ø¯Ùââ باشدØÙ
Û ØªÙاÙد باعث اÛجاد Ù
Ø´Ú©ÙØ§ØªÛ Ø¨Ø±Ø§Û Ù
دÛاÙÛÚ©Û Ûا دÛگر ÙرÙ
âاÙØ²Ø§Ø±Û Ø´Ùد ک٠ب٠کاربرا٠اجاز٠Ù
ÛâدÙد Ù¾ÛاÙ
دÙØ®Ùا٠ارسا٠کÙÙد.\nب٠[http://modsecurity.org/documentation/ mod_security documentation] Ù
راجع٠کÙÛد Ûا اگر با خطاÙØ§Û Ø§ØªÙاÙÛ Ù
Ùاج٠شدÛد با پشتÛباÙÛ Ù
Ûزبا٠خÙد در تÙ
اس باشÛد.",
"config-diff3-bad": "جÛâاÙâÛ٠دÛÙÛ³ Ù¾Ûدا Ùشد.",
@@ -323,6 +325,6 @@
"config-help-tooltip": "Ø¨Ø±Ø§Û Ú¯Ø³ØªØ±Ø´ Ú©ÙÛÚ© Ú©ÙÛد",
"config-nofile": "پرÙÙدÙ٠«$1» ÛاÙت Ùشد. Ø¢Ûا Øذ٠شدÙâاستØ",
"config-extension-link": "Ø¢Ûا Ù
ÛâداÙستÛد Ú©Ù ÙÛÚ©Û Ø´Ù
ا [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Extensions extensions] را پشتÛباÙÛ Ù
ÛâÚ©ÙدØ\nØ´Ù
ا Ù
ÛâتÙاÙÛد [//www.mediawiki.org/wiki/Special:MyLanguage/Category:Extensions_by_category extensions by category]",
- "mainpagetext": "'''ÙرÙ
âاÙزار ÙÛÚ©Û Ø¨Ø§ Ù
ÙÙÙÛت Ùصب شد.'''",
+ "mainpagetext": "'''Ù
دÛاÙÛÚ©Û Ø¨Ø§ Ù
ÙÙÙÛت Ùصب شد.'''",
"mainpagedocfooter": "از [//meta.wikimedia.org/wiki/Help:Contents راÙÙÙ
Ø§Û Ú©Ø§Ø±Ø¨Ø±Ø§Ù]\nØ¨Ø±Ø§Û Ø§Ø³ØªÙاد٠از ÙرÙ
âاÙزار ÙÛÚ©Û Ú©Ù
Ú© بگÛرÛد.\n\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 ÙÙرست ارسا٠ÙسخÙâÙØ§Û Ù
دÛاÙÛÚ©Û]\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Localise Ù
دÛاÙÛÚ©Û Ø¨Ø±Ø§Û Ø²Ø¨Ø§Ù Ø´Ù
ا]\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Ø¢Ù
Ùزش Ù
ÙابÙ٠ب٠ÙرزÙÚ¯Ø§Ø±Û Ø¯Ø± ÙÛÚ©Û Ø´Ù
ا]"
}
diff --git a/includes/installer/i18n/fi.json b/includes/installer/i18n/fi.json
index a083210f31..866ec1011d 100644
--- a/includes/installer/i18n/fi.json
+++ b/includes/installer/i18n/fi.json
@@ -18,7 +18,9 @@
"SuperPete",
"McSalama",
"Jaakkoh",
- "Mikahama"
+ "Mikahama",
+ "Olimar",
+ "01miki10"
]
},
"config-desc": "MediaWiki-asennin",
@@ -58,14 +60,17 @@
"config-help-restart": "Haluatko poistaa kaikki annetut tiedot ja aloittaa asennuksen alusta?",
"config-restart": "Kyllä",
"config-welcome": "=== Ympäristön tarkistukset ===\nVarmistetaan MediaWikin asennettavuus tähän ympäristöön.\nMuista antaa nämä tiedot, jos tarvitset apua asennuksen aikana.",
+ "config-copyright": "=== Tekijänoikeudet ja käyttöehdot ===\n\n$1\n\nTämä ohjelma on vapaa ohjelmisto; voit levittää sitä ja/tai muokata sitä Free Software Foundationin GNU General Public Licensen ehdoilla, joko version 2 tai (halutessasi) minkä tahansa myöhemmän version mukaisesti.\n\nTätä ohjelmaa levitetään siinä toivossa, että se olisi hyödyllinen, mutta ilman mitään takuuta ; ilman edes hiljaista takuuta kaupallisesti hyväksyttävästä laadusta tai soveltuvuudesta tiettyyn tarkoitukseen. kopio GNU General Public Licensestä tämän ohjelman mukana; jos et, kirjoita siitä osoitteeseen Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA tai [http://www.gnu.org/copyleft/gpl.html lue se verkossa].",
"config-sidebar": "* [//www.mediawiki.org MediaWikin kotisivu]\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents Käyttöopas]\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Contents Hallintaopas]\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ UKK]\n----\n* Lue minut \n* Julkaisutiedot \n* Kopiointi \n* Päivittäminen ",
"config-env-good": "Asennusympäristö on tarkastettu.\nVoit asentaa MediaWikin.",
"config-env-bad": "Asennusympäristö on tarkastettu.\nEt voi asentaa MediaWikiä.",
"config-env-php": "PHP $1 on asennettu.",
"config-env-hhvm": "HHVM $1 on asennettu.",
+ "config-unicode-using-intl": "Käyttää [http://pecl.php.net/intl intl PECL-laajennusta] Unicode-normalisaatioon.",
"config-no-db": "Sopivaa tietokanta-ajuria ei löytynyt! Sinun täytyy asentaa tietokanta-ajurit PHP:lle.\nSeuraavat tietokantatyypit ovat tuettuja: $1.",
"config-outdated-sqlite": "Varoitus: sinulla on käytössä SQLite $1, joke on vanhempi kuin vähintään vaadittava versio $2. SQLite ei ole saatavilla.",
"config-xml-bad": "PHP:n XML-moduulia ei löydy.\nMediaWiki käyttää tämän moduulin funktioita, eikä toimi tässä kokoonpanossa.\nJos käytät Mandrakea, asenna php-xml paketti.",
+ "config-pcre-old": "Tärkeää: PCRE $1 tai uudempi versio tarvitaan.\nPHP-binäärisi on linkitetty versiolla PCRE $2.\n[https://www.mediawiki.org/wiki/Manual:Errors_and_symptoms/PCRE Lisätietoja].",
"config-memory-raised": "PHP:n memory_limit
on $1, nostetaan arvoon $2.",
"config-memory-bad": "'''Varoitus:''' PHP:n memory_limit
on $1.\nTämä on luultavasti liian alhainen.\nAsennus saattaa epäonnistua!",
"config-xcache": "[http://xcache.lighttpd.net/ XCache] on asennettu",
@@ -185,6 +190,8 @@
"config-admin-password-mismatch": "Antamasi salasanat eivät täsmää.",
"config-admin-email": "Sähköpostiosoite",
"config-admin-email-help": "Syötä sähköpostiosoite johon vastaanotetaan viestit muilta wikin käyttäjiltä, nollataan salasana ja ilmoitetaan tarkkailulistalla olevista sivuista. Kenttä voidaan jättää myös tyhjäksi.",
+ "config-admin-error-user": "Sisäinen virhe luodessa ylläpitäjää nimellä \"$1 \".",
+ "config-admin-error-password": "Sisäinen virhe asetettaessa salasanaa ylläpitäjälle \"$1 \":\n$2 ",
"config-admin-error-bademail": "Annoit virheellisen sähköpostiosoitteen.",
"config-subscribe": "Liity [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce päivityssähköpostilistalle].",
"config-subscribe-help": "Tällä harvoin käytettävällä sähköpostilistalla julkaistaan päivitysilmoituksia ja turvallisuuspäivityksiä.\nLiittymistä listalle suositellaan samoin kuin päivittämään MediaWiki kun uusi versio julkaistaan.",
@@ -205,6 +212,7 @@
"config-license-gfdl": "GNU Free Documentation -lisenssi 1.3 tai uudempi",
"config-license-pd": "Public domain",
"config-license-cc-choose": "Valitse mukautettu Creative Commons -lisenssi",
+ "config-license-help": "Monet julkiset wikit käyttävät muokkauksiin [http://freedomdefined.org/Definition vapaata lisenssiä].\nTämä auttaa luomaan yhteisöllisen omistajuuden tunteen ja kannustaa pitkäkestoiseen muokkaamiseen.\nSe ei ole yleensä tarpeen yksityiselle tai yrityksen wikille.\n\nJos haluat pystyä käyttämään tekstiä Wikipediasta, ja haluat Wikipedian pystyvän hyväksymään wikistäsi kopioitua tekstiä, sinun tulisi valita {{int:config-license-cc-by-sa}} .\n\nWikipedia käytti aiemmin GNU Free Documentation Licenseä.\nGFDL on kelvollinen lisenssi, mutta vaikea ymmärtää.\nOn myös vaikeaa käyttää uudelleen GFDL-lisensöityä sisältöä.",
"config-email-settings": "Sähköpostiasetukset",
"config-enable-email": "Ota käyttöön sähköpostien lähetys",
"config-enable-email-help": "Jotta sähköposti toimii, [http://www.php.net/manual/en/mail.configuration.php PHP:n sähköpostiasetukset] täytyy asettaa oikein.\nJos et halua käyttää sähköpostiominaisuuksia, ne voi kytkeä pois päältä tästä.",
@@ -222,8 +230,20 @@
"config-upload-deleted": "Poistettujen tiedostojen hakemisto:",
"config-upload-deleted-help": "Valitse hakemisto johon poistetut tiedostot arkistoidaan.\nHakemiston ei tulisi olla käytettävissä internetverkosta.",
"config-logo": "Logon URL-osoite",
+ "config-instantcommons": "Aktivoi Instant Commons",
+ "config-instantcommons-help": "[//www.mediawiki.org/wiki/InstantCommons Instant Commons] on ominaisuus, joka antaa wikien käyttää kuvia, ääniä ja muuta mediaa [//commons.wikimedia.org/ Wikimedia Commons] -sivustolta.\nTehdäkseen tämän MediaWiki tarvitsee Internet-yhteyden.\n\nLisätietoja tästä ominaisuudesta, mukaan lukien ohjeet, kuinka sen voi asettaa muille wikeille kuin Wikimedia Commons, löytyy [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgForeignFileRepos ohjeista].",
+ "config-cc-error": "Creative Commons -lisenssinvalitsija ei antanut tulosta.\nSyötä lisenssin nimi manuaalisesti.",
"config-cc-again": "Valitse uudelleen...",
+ "config-cc-not-chosen": "Valitse, minkä Creative Commons -lisenssin haluat ja paina \"proceed\".",
"config-advanced-settings": "Lisäasetukset",
+ "config-cache-none": "Ei välimuistia (toimintoja ei poisteta, mutta voi vaikuttaa nopeuteen suuremmilla wiki-sivustoilla)",
+ "config-cache-memcached": "Käytä Memcachedia (vaatii ylimääräistä asennusta ja konfigurointia)",
+ "config-memcached-servers": "Memcached-palvelimet:",
+ "config-memcached-help": "Luettelo IP-osoitteista Memcachedin käyttöön.\nPitäisi määrittää yksi osoite riviä kohden ja käytettävä portti. Esimerkiksi:\n 127.0.0.1:11211\n 192.168.1.25:1234",
+ "config-memcache-needservers": "Valitsit Memcachedin välimuistin tyypiksi, mutta et määrittänyt palvelimia.",
+ "config-memcache-badip": "Olet antanut virheellisen IP-osoitteen Memcachedille: $1.",
+ "config-memcache-noport": "Et määrittänyt porttia käytettäväksi Memcached-palvelimelle: $1\nJos et tiedä porttia, oletus on 11211.",
+ "config-memcache-badport": "Memcachedin porttien numeroiden pitäisi olla välillä $1-$2.",
"config-extensions": "Laajennukset",
"config-extensions-help": "Yllä luetellut laajennukset löytyvät ./extensions
hakemistosta.\n\nNe saattavat vaatia lisäasetuksia, mutta voit ottaa ne käyttöön nyt.",
"config-skins": "Ulkoasut",
@@ -267,12 +287,12 @@
"config-install-mainpage": "Luodaan etusivu oletussisällöllä",
"config-install-extension-tables": "Luodaan tauluja käyttöönotetuille laajuennuksille",
"config-install-mainpage-failed": "Etusivun lisääminen ei onnistunut: $1",
- "config-install-done": "Onnittelut! \nMediaWiki on asennettu onnistuneesti\n\nAsennusohjelma on luonut LocalSettings.php
-tiedoston.\nSiinä on kaikki MediaWikin asetukset.\n\nLataa tiedosto ja laita se MediaWikin asennushakemistoon (sama kuin missä on index.php). Lataamisen olisi pitänyt alkaa automaattisesti.\n\nMikäli keskeytit latauksen, käynnistä se uudestaan tästä linkistä:\n\n$3\n\nHUOM! Mikäli et nyt lataa tiedostoa, joudut aloittamaan asennuksen alusta.\n\nKun olet laittanut tiedoston oikeaan paikkaan voit [$2 mennä wikiisi] .",
+ "config-install-done": "Onnittelut! \nOlet asentanut MediaWikin.\n\nAsennusohjelma on luonut LocalSettings.php
-tiedoston.\nSiinä on kaikki MediaWikin asetukset.\n\nLataa tiedosto ja laita se MediaWikin asennushakemistoon (sama kuin missä on index.php). Lataamisen olisi pitänyt alkaa automaattisesti.\n\nMikäli latausta ei tarjottu tai keskeytit latauksen, käynnistä se uudestaan tästä linkistä:\n\n$3\n\nHuom: Mikäli et nyt lataa tiedostoa, luotu tiedosto ei ole saatavissa myöhemmin, jos poistut asennuksesta lataamatta sitä.\n\nKun olet laittanut tiedoston oikeaan paikkaan, voit [$2 mennä wikiisi] .",
"config-download-localsettings": "Lataa LocalSettings.php
",
"config-help": "ohje",
"config-help-tooltip": "Klikkaa laajentaaksesi",
"config-nofile": "Tiedostoa \"$1\" ei löytynyt. Onko se poistettu?",
"config-extension-link": "Tiesitkö että wiki tukee [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Extensions laajennuksia]?\n\nLaajennuksia voi hakea myös [//www.mediawiki.org/wiki/Special:MyLanguage/Category:Extensions_by_category luokittain].",
- "mainpagetext": "'''MediaWiki on onnistuneesti asennettu.'''",
- "mainpagedocfooter": "Lisätietoja käytöstä on sivulla [//meta.wikimedia.org/wiki/Help:Contents User's Guide].\n\n=== Lisäohjeita ===\n\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Asetusten teko-ohjeita]\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ MediaWikin FAQ]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Sähköpostilista, jolla tiedotetaan MediaWikin uusista versioista]\n\n=== Asetukset ===\n\nTarkista, että alla olevat taivutusmuodot ovat oikein. Jos eivät, tee tarvittavat muutokset tiedostoon LocalSettings.php seuraavasti:\n $wgGrammarForms['fi']['genitive']['{{SITENAME}}'] = '...';\n $wgGrammarForms['fi']['partitive']['{{SITENAME}}'] = '...';\n $wgGrammarForms['fi']['elative']['{{SITENAME}}'] = '...';\n $wgGrammarForms['fi']['inessive']['{{SITENAME}}'] = '...';\n $wgGrammarForms['fi']['illative']['{{SITENAME}}'] = '...';\nTaivutusmuodot: {{GRAMMAR:genitive|{{SITENAME}}}} (yön) â {{GRAMMAR:partitive|{{SITENAME}}}} (yötä) â {{GRAMMAR:elative|{{SITENAME}}}} (yöstä) â {{GRAMMAR:inessive|{{SITENAME}}}} (yössä) â {{GRAMMAR:illative|{{SITENAME}}}} (yöhön)."
+ "mainpagetext": "MediaWiki on onnistuneesti asennettu. ",
+ "mainpagedocfooter": "Lisätietoja wiki-ohjelmiston käytöstä on [//meta.wikimedia.org/wiki/Help:Contents käyttöoppaassa].\n\n=== Aloittaminen ===\n\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Asetusten teko-ohjeita]\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ MediaWikin FAQ]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Sähköpostilista, jolla tiedotetaan MediaWikin uusista versioista]\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Käännä MediaWikiä kielellesi]\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Katso, kuinka torjua spämmiä wikissäsi]\n\n=== Asetukset ===\n\nTarkista, että alla olevat taivutusmuodot ovat oikein. Jos eivät, tee tarvittavat muutokset tiedostoon LocalSettings.php seuraavasti:\n $wgGrammarForms['fi']['genitive']['{{SITENAME}}'] = '...';\n $wgGrammarForms['fi']['partitive']['{{SITENAME}}'] = '...';\n $wgGrammarForms['fi']['elative']['{{SITENAME}}'] = '...';\n $wgGrammarForms['fi']['inessive']['{{SITENAME}}'] = '...';\n $wgGrammarForms['fi']['illative']['{{SITENAME}}'] = '...';\nTaivutusmuodot: {{GRAMMAR:genitive|{{SITENAME}}}} (yön) â {{GRAMMAR:partitive|{{SITENAME}}}} (yötä) â {{GRAMMAR:elative|{{SITENAME}}}} (yöstä) â {{GRAMMAR:inessive|{{SITENAME}}}} (yössä) â {{GRAMMAR:illative|{{SITENAME}}}} (yöhön)."
}
diff --git a/includes/installer/i18n/fr.json b/includes/installer/i18n/fr.json
index aa2f31e3d4..70ceed1509 100644
--- a/includes/installer/i18n/fr.json
+++ b/includes/installer/i18n/fr.json
@@ -87,6 +87,7 @@
"config-ctype": "'''Fatal ''': PHP doit être compilé avec le support pour l'[http://www.php.net/manual/en/ctype.installation.php extension Ctype].",
"config-iconv": "Erreur critique : PHP doit être compilé avec le support de lâ[http://www.php.net/manual/en/iconv.installation.php extension iconv].",
"config-json": "'''Erreur fatale :''' PHP a été compilé sans le support de JSON.\nVous devez soit installez lâextension JSON de PHP ou lâextension [http://pecl.php.net/package/jsonc PECL jsonc] avant dâinstaller MediaWiki.\n* Lâextension PHP est comprise dans Red Hat Enterprise Linux (CentOS) 5 et 6, mais doit être activée dans /etc/php.ini
ou /etc/php.d/json.ini
.\n* Certaines distributions Linux après mai 2013 ne comprennent pas lâextension PHP, mais ont mis à la place lâextension PECL sous la forme php5-json
ou php-pecl-jsonc
.",
+ "config-mbstring-absent": "Fatal : PHP doit être compilé avec la prise en charge de [http://www.php.net/manual/en/mbstring.setup.php lâextension mbstring].",
"config-xcache": "[http://xcache.lighttpd.net/ XCache] est installé",
"config-apc": "[http://www.php.net/apc APC] est installé",
"config-wincache": "[http://www.iis.net/download/WinCacheForPhp WinCache] est installé",
diff --git a/includes/installer/i18n/gl.json b/includes/installer/i18n/gl.json
index 7b9abdbc01..a1e97308f2 100644
--- a/includes/installer/i18n/gl.json
+++ b/includes/installer/i18n/gl.json
@@ -52,7 +52,7 @@
"config-env-php": "Está instalado o PHP $1.",
"config-env-hhvm": "Está instalado o HHVM $1.",
"config-unicode-using-intl": "Usando a [http://pecl.php.net/intl extensión intl PECL] para a normalización Unicode.",
- "config-unicode-pure-php-warning": "Atención: A [http://pecl.php.net/intl extensión intl PECL] non está dispoñible para manexar a normalización Unicode; volvendo á implementación lenta de PHP puro.\nSe o seu sitio posúe un alto tráfico de visitantes, deberÃa ler un chisco sobre a [//www.mediawiki.org/wiki/Special:MyLanguage/Unicode_normalization_considerations normalización Unicode].",
+ "config-unicode-pure-php-warning": "Atención: A [http://pecl.php.net/intl extensión intl PECL] non está dispoñible para manexar a normalización Unicode; volvendo á execución lenta de PHP puro.\nSe o seu sitio posúe un alto tráfico de visitantes, deberÃa ler un chisco sobre a [//www.mediawiki.org/wiki/Special:MyLanguage/Unicode_normalization_considerations normalización Unicode].",
"config-unicode-update-warning": "Atención: A versión instalada da envoltura de normalización Unicode emprega unha versión vella da biblioteca [http://site.icu-project.org/ do proxecto ICU].\nDeberÃa [//www.mediawiki.org/wiki/Special:MyLanguage/Unicode_normalization_considerations actualizar] se o uso de Unicode é importante para vostede.",
"config-no-db": "Non se puido atopar un controlador axeitado para a base de datos! Necesita instalar un controlador de base de datos para PHP.\n{{PLURAL:$2|Acéptase o seguinte tipo|Acéptanse os seguintes tipos}} de base de datos: $1.\n\nSe compilou o PHP vostede mesmo, reconfigúreo activando un cliente de base de datos, por exemplo, usando ./configure --with-mysql
.\nSe instalou o PHP desde un paquete Debian ou Ubuntu, entón tamén necesita instalar, por exemplo, o módulo php5-mysql
.",
"config-outdated-sqlite": "Atención: Ten o SQLite $1, que é inferior á versión mÃnima necesaria: $2. O SQLite non estará dispoñible.",
@@ -66,6 +66,7 @@
"config-ctype": "Erro fatal: O PHP debe compilarse co soporte para a [http://www.php.net/manual/en/ctype.installation.php extensión Ctype].",
"config-iconv": "Erro fatal: O PHP debe compilarse co soporte para a [http://www.php.net/manual/en/iconv.installation.php extensión iconv].",
"config-json": "Erro fatal: O PHP compilouse sen o soporte de JSON.\nDebe instalar ben a extensión JSON do PHP ou a extensión [http://pecl.php.net/package/jsonc PECL jsonc] antes de instalar MediaWiki.\n* A extensión do PHP está incluÃda en Red Hat Enterprise Linux (CentOS) 5 e 6, mais debe activarse /etc/php.ini
ou /etc/php.d/json.ini
.\n* Algunhas distribucións do Linux lanzadas despois de maio de 2013 omiten a extensión do PHP, pero inclúen a extensión PECL como php5-json
ou php-pecl-jsonc
.",
+ "config-mbstring-absent": "Erro fatal: O PHP debe compilarse co soporte para a [http://www.php.net/manual/en/mbstring.setup.php extensión mbstring].",
"config-xcache": "[http://xcache.lighttpd.net/ XCache] está instalado",
"config-apc": "[http://www.php.net/apc APC] está instalado",
"config-wincache": "[http://www.iis.net/download/WinCacheForPhp WinCache] está instalado",
diff --git a/includes/installer/i18n/he.json b/includes/installer/i18n/he.json
index 1c9fe792f9..6bc3fd905d 100644
--- a/includes/installer/i18n/he.json
+++ b/includes/installer/i18n/he.json
@@ -59,20 +59,20 @@
"config-unicode-update-warning": "'''×××ר×''': ×××¨×¡× ××××ª×§× ×ª ×©× ××¢×פת × ×¨××× ××× ×ק×× ×שת×שת ×××¨×¡× ××©× × ×©× ×ספר××× ×©× [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\n×× ×§Ö´×פ×ת ×ת PHP ×עצ××, ×ש ×××××ר ×××ª× ×××ש ×××פע×× ×ת ×ק×× ××¡× × ×ª×× ××, ×××©× ×××צע×ת ./configure --with-mysqli
.\n×× ××ª×§× ×ª ×ת PHP ×××××× ×©× ××××× ×× ×©× ××××× ××, ×ש ××תק××, ××ש×, ×× ×ת ×××××× php5-mysql
.",
"config-outdated-sqlite": "'''×××ר×''': ××ער×ת ×ת××§× SQLite $1. ××¨×¡× ×× ×× × ×ª××ת ××ש×××ש ×Ö¾SQLite × ×רשת ××¨×¡× $2 ×פ××ת. SQLlite ×× ×××× ××××.",
- "config-no-fts3": "'''×××ר×''': SQLite ×ק×××¤× ××× [//sqlite.org/fts3.html ××××× FTS]. ×××××ת ××פ×ש ×× ×××× ×××× ×ת ×××ª×§× × ×××ת.",
+ "config-no-fts3": "'''×××ר×''': SQLite ××××ר ××× [//sqlite.org/fts3.html ××××× FTS]. ×××××ת ××פ×ש ×× ×××× ×××× ×ת ×××ª×§× × ×××ת.",
"config-mbstring": "'''ש×××× ×¡××¤× ×ת''': ××פשר×ת [http://www.php.net/manual/en/ref.mbstring.php#mbstring.overload mbstring.func_overload] פע×××!'''\n××פשר×ת ×××ת ××ר×ת ×ש××××ת ×××¢××תת ×ת × ×ª×× × ×ק×× ××××¤× ××ת×־צפ××.\n×× × ××ª× ××תק×× ×ת ××××Ö¾×××§× ×× ××שת×ש ×× ××× ×× ××פשר×ת ×××ת ת××××.",
"config-xml-bad": "××××× XML ×©× PHP ×סר.\n××××Ö¾×××§× ××רשת פ×× ×§×¦××ת ×©× ×××××× ××× ×ª×¢××× ×¢× ×××ר×ת ××××.\n××ת×× ×©×¦×¨×× ××תק×× ×××צע×ת RPM ×ת ××××ת php-xml.",
"config-pcre-old": "ש×××× ×¡××¤× ×ת: ×××× ××תק×× PCRE ×××¨×¡× $1 ×× ××¨×¡× ×××©× ××תר.\nק×××¥ ×רצת ×Ö¾PHP ש×× ×ק×שר ×¢× PCRE ×××¨×¡× $2.\n[https://www.mediawiki.org/wiki/Manual:Errors_and_symptoms/PCRE ××××¢ × ×סף].",
- "config-pcre-no-utf8": "'''ש×××× ×¡××¤× ×ת''': × ×¨×× ×©××××× PCRE ×©× PHP ×ק×××¤× ××× ×ª×××× ×Ö¾PCRE_UTF8.\n××××Ö¾×××§× ××רשת ת×××× ×Ö¾UTF-8 ×פע×××ת × ××× ×.",
+ "config-pcre-no-utf8": "ש×××× ×¡××¤× ×ת : × ×¨×× ×©××××× PCRE ×©× PHP ××××ר ××× ×ª×××× ×Ö¾PCRE_UTF8.\n××××Ö¾×××§× ××רשת ת×××× ×Ö¾UTF-8 ×פע×××ת × ××× ×.",
"config-memory-raised": "×¢×¨× ××פשר×ת memory_limit
×©× PHP ××× $1, ×××¢×× ×Ö¾$2.",
"config-memory-bad": "'''×××ר×:''' ×¢×¨× ××פשר×ת memory_limit
×©× PHP ××× $1.\n×× ×× ×¨×× × ××× ×××.\n×××ª×§× × ×¢×©××× ××××ש×!",
"config-ctype": "ש×××× ×¡××¤× ×ת : × ×רשת ×רסת PHP שת×××ת ××ר××× [http://www.php.net/manual/en/ctype.installation.php Ctype].",
- "config-iconv": "ס××¤× ×: ×××× ×ק××¤× ×ת PHP ×¢× ×ª×××× ×[×ר××× http://www.php.net/manual/en/iconv.installation.php iconv].",
+ "config-iconv": "ס××¤× ×: ×××× ×××ר ×ת PHP ×¢× ×ª×××× ×[×ר××× http://www.php.net/manual/en/iconv.installation.php iconv].",
"config-json": "'''ש×××× ×¡××¤× ×ת:''' PHP ק×××¤× ××× ×ª×××× ×Ö¾JSON.\n×ש ××תק×× ×ת ××ר××× JSON ×Ö¾PHP ×× ×ת ××ר××× [http://pecl.php.net/package/jsonc PECL jsonc] ××¤× × ××ª×§× ×ª ××××Ö¾××ק×.\n* ××ר××× ×Ö¾PHP ××××× ×Ö¾Red Hat Enterprise Linux (×Ö¾CentOS), ×× ×ש ××פע×× ×××ª× ×Ö¾/etc/php.ini
×× ×Ö¾/etc/php.d/json.ini
.",
+ "config-mbstring-absent": "ס××¤× ×: ×××× ×××ר ×ת PHP ×¢× ×ª×××× ×[×ר××× http://www.php.net/manual/en/mbstring.setup.php mbstring].",
"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-no-cache-apcu": "×××ר×: ×× × ××¦× [http://www.php.net/apcu APCu]â, [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-diff3-bad": "GNU diff3 ×× × ×צ×.",
@@ -193,7 +193,7 @@
"config-ns-site-name": "××× ××©× ××××ק×: $1",
"config-ns-other": "××ר (×צ×××)",
"config-ns-other-default": "×××××§× ×©××",
- "config-project-namespace-help": "××ת×× ×××××× ×©× ××ק×פ×××, ××ª×¨× ×××§× ×¨××× ×©××ר×× ×¢× ××¤× ××××× ××ת ש××× ×× ×¤×¨× ×××¤× ×ת××× ×©××× ×\"'''×ר×× ×ש××ת ×©× ×××××'''\" (\"'''project namespace'''\").\n×× ×©××ת ××פ×× ××ר×× ×ש××ת ××× ×ת××××× ×ת××××ת ×ס×××ת ש×פשר ×××××ר ×××.\n×××¨× ××× ×ת××××ת ×××ת ×××ססת ×¢× ×©× ××××ק×, ×××× ××× × ××××× ××××× ×ª××× ×¤×ס×ק ×××× \"#\" ×× \":\".",
+ "config-project-namespace-help": "××ת×× ×××××× ×©× ××ק×פ×××, ××ª×¨× ×××§× ×¨××× ×©××ר×× ×¢× ××¤× ××××× ××ת ש××× ×× ×¤×¨× ×××¤× ×ת××× ×©××× ×'''×ר×× ×ש××ת ×©× ×××××''' (××× ×××ת: '''project namespace''').\n×× ×©××ת ××פ×× ××ר×× ×ש××ת ××× ×ת××××× ×ת××××ת ×ס×××ת ש×פשר ×××××ר ×××.\n×××¨× ××× ×ת××××ת ×××ת ×××ססת ×¢× ×©× ××××ק×, ×××× ××× × ××××× ××××× ×ª××× ×¤×ס×ק ×××× \"#\" ×× \":\".",
"config-ns-invalid": "×ר×× ×ש××ת \"$1 \" ××× × ×ª×§××.\n×ש ××ק××× ×©× ××ר ××ר×× ×ש××ת ×©× ×××××.",
"config-ns-conflict": "×ר×× ×ש××ת ש×××רת \"$1 \" ××ª× ×ש ×¢× ×ר×× ×©××ת ×××× × ×©× ××××Ö¾××ק×.\n×××××¨× ×ר×× ×©××ת ×××× ×©×× ×.",
"config-admin-box": "×ש××× ×פע××",
@@ -314,12 +314,12 @@
"config-install-mainpage": "×צ×רת ××£ ר××©× ×¢× ×ª××× ×ת××ת×",
"config-install-extension-tables": "×צ×רת ×××××ת ××ר×××ת ××פע××ת",
"config-install-mainpage-failed": "×× ×צ×××× ××× ×¡×ª ××£ ר×ש×: $1.",
- "config-install-done": "'''××× ×××!'''\n××ª×§× ×ª× ××צ××× ×ת ××××Ö¾××ק×.\n\nת××× ×ª ×××ª×§× × ××¦×¨× ×ת ×ק×××¥ LocalSettings.php
.\n××× ×××× ×ת ×× ××××ר×ת ש×××.\n\nתצ×ר×× ×××ר×× ×××ª× ××ש×× ×××ª× ××ס×ס ×××ª×§× × ×©× ×××××§× ×©××× (×××ª× ×ת×ק××× ×©×× × ××¦× ×ק×××¥ index.php). ×××ר×× ××××ª× ××××¨× ××ת××× ××××¤× ×××××××.\n\n×× ×××ר×× ×× ×ת××××, ×× ×× ×××××ª× ××ת×, ×פשר ××ת××× ×××ª× ×××ש ×××××¦× ×¢× ×ק×ש×ר ×××:\n\n$3\n\n'''ש××× ××''': ×× ×× ×ª×¢×©× ××ת ×¢×ש××, ק×××¥ ××××ר×ת ××××Ö¼×× ×× ×××× ×××× ××× ×©××.\n\n×××¨× ×©×ª×¢×©× ×ת ××, ת×××× '''[$2 ××××× ×¡ ×××××§× ×©×××]'''.",
+ "config-install-done": " ××× ×××! \n××ª×§× ×ª× ××צ××× ×ת ××××Ö¾××ק×.\n\nת××× ×ª ×××ª×§× × ××¦×¨× ×ת ×ק×××¥ LocalSettings.php
.\n××× ×××× ×ת ×× ××××ר×ת ש×××.\n\nתצ×ר×× ×××ר×× ×××ª× ××ש×× ×××ª× ××ס×ס ×××ª×§× × ×©× ×××××§× ×©××× (×××ª× ×ת×ק××× ×©×× × ××¦× ×ק×××¥ index.php). ×××ר×× ××××ª× ××××¨× ××ת××× ××××¤× ×××××××.\n\n×× ×××ר×× ×× ×ת××××, ×× ×× ×××××ª× ××ת×, ×פשר ××ת××× ×××ª× ×××ש ×××××¦× ×¢× ×ק×ש×ר ×××:\n\n$3\n\nש××× ××: ×× ×× ×ª×¢×©× ××ת ×¢×ש××, ק×××¥ ××××ר×ת ××××Ö¼×× ×× ×××× ×××× ××× ×©××.\n\n×××¨× ×©×ª×¢×©× ×ת ××, ת×××× [$2 ××××× ×¡ ×××××§× ×©×××].",
"config-download-localsettings": "××ר×ת LocalSettings.php
",
"config-help": "×¢×ר×",
"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": "ת××× ×ª ××××Ö¾×××§× ×××ª×§× × ××צ×××. ",
"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 ש×××ת ×תש×××ת ×¢× ××××Ö¾××ק×]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce רש××ת ×תפ××¦× ×¢× ×שקת ×רס××ת]\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources תר××× ××××Ö¾×××§× ××©×¤× ×©××]\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam ××× ×××××ק × ×× ×¡×¤×× ××תר ×××××§× ×©××]"
}
diff --git a/includes/installer/i18n/hsn.json b/includes/installer/i18n/hsn.json
new file mode 100644
index 0000000000..cebc97989d
--- /dev/null
+++ b/includes/installer/i18n/hsn.json
@@ -0,0 +1,35 @@
+{
+ "@metadata": {
+ "authors": [
+ "SolidBlock"
+ ]
+ },
+ "config-desc": "MediaWikiå®è£
ç¨åº",
+ "config-title": "MediaWiki $1é
ç½®",
+ "config-information": "ä¿¡æ¯",
+ "config-localsettings-upgrade": "åç°åLocalSettings.php
æ件ãè¦æåå¯æé
ç½®ï¼å°±äºå¯ææ¡æ¡ä¸è¾å
¥$wgUpgradeKey
çå¼ãæ¨å¯ä»¥å¨LocalSettings.php
ä¸å¯»å®ã",
+ "config-localsettings-cli-upgrade": "æ¥å¶LocalSettings.php
æ件ãè¦å级å¯æé
ç½®ï¼è¯·ç´æ¥èµ°update.php
ã",
+ "config-localsettings-key": "å级å¯é¥ï¼",
+ "config-localsettings-badkey": "å¯æå¯é¥æ¯éçã",
+ "config-session-error": "æä¼è¯ç¢°å鬼ï¼$1",
+ "config-your-language": "æ¨ä½¿ç¨çè¯è¨ï¼",
+ "config-wiki-language": "Wikiè¯è¨ï¼",
+ "config-back": "â åé",
+ "config-continue": "è¡å
â",
+ "config-page-language": "è¯è¨",
+ "config-page-welcome": "欢è¿ä½¿ç¨MediaWikiï¼",
+ "config-page-name": "åå",
+ "config-page-options": "é项",
+ "config-page-install": "è£
ä¸å
",
+ "config-page-complete": "æ好åï¼",
+ "config-page-readme": "èªè¿°",
+ "config-page-copying": "å¤å¶",
+ "config-page-upgradedoc": "å级",
+ "config-page-existingwiki": "ç°æçwiki",
+ "config-help-restart": "è¦ä¸è¦åæ¶åè¾å
¥ä¸å好çä¸è¥¿ï¼å¹¶ä¸éæ°å¼å§è£
ï¼",
+ "config-restart": "å¯ï¼éæ",
+ "config-env-good": "ç¯å¢æ£æ¥å好åãä½ å¯ä»¥å®è£
MediaWikiåã",
+ "config-env-bad": "ç¯å¢æ£æ¥å¥½åï¼å¯æä½ æä¸äºMediaWikiã",
+ "config-env-php": "PHP $1è£
åã",
+ "config-env-hhvm": "HHVM $1è£
åã"
+}
diff --git a/includes/installer/i18n/is.json b/includes/installer/i18n/is.json
index e0a79753fe..50cbc32308 100644
--- a/includes/installer/i18n/is.json
+++ b/includes/installer/i18n/is.json
@@ -9,6 +9,7 @@
"config-title": "MediaWiki $1 uppsetning",
"config-information": "Upplýsingar",
"config-localsettings-key": "Uppfærslulykill:",
+ "config-session-error": "Villa við að ræsa setu: $1",
"config-your-language": "Tungumálið þitt:",
"config-your-language-help": "Veldu tungumál að nota við uppsetninguna.",
"config-wiki-language": "Tungumál á wiki:",
@@ -30,21 +31,35 @@
"config-page-upgradedoc": "Uppfærsla",
"config-page-existingwiki": "Fyrirliggjandi wiki",
"config-restart": "Já, endurræsa",
+ "config-copyright": "=== Höfundarréttur og skilmálar ===\n\n$1\n\nÃetta er frjáls hugbúnaður; þú mátt dreifa honum og/eða breyta samkvæmt skilmálum à almenna GNU GPL notkunarleyfinu eins og það er gefið út af Frjálsu hugbúnaðarstofnuninni; annaðhvort útgáfu 2 af GPL-leyfinu, eða (ef þér sýnist svo) einhverri nýrri útgáfu leyfisins.\n\nHugbúnaði þessum er dreift à þeirri von að hann geti verið gagnlegur, en ÃN ALLRAR ÃBYRGÃAR ; einnig án þeirrar ábyrgðar sem gefin er à skyn með SELJANLEIKA eða EIGINLEIKUM TIL TILTEKINNA NOTA . Sjá almenna GNU GPL notkunarleyfið fyrir nánari upplýsingar.\n\nÃað ætti að hafa fylgt afrit af almenna GNU GPL notkunarleyfinu með forritinu; ef ekki skrifið þá Fjálsu hugbúnarstofnuninni: Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA, eða [http://www.gnu.org/copyleft/gpl.html lestu það á netinu].",
"config-env-php": "PHP $1 er uppsett.",
"config-env-hhvm": "HHVM $1 er uppsett.",
+ "config-xcache": "[http://xcache.lighttpd.net/ XCache] er uppsett",
+ "config-apc": "[http://www.php.net/apc APC] er uppsett",
+ "config-wincache": "[http://www.iis.net/download/WinCacheForPhp WinCache] er uppsett",
"config-diff3-bad": "GNU diff3 fannst ekki.",
+ "config-using-server": "Nota \"$1 \" sem heiti á þjóni.",
+ "config-using-uri": "Nota \"$1$2 \" sem slóð á þjón.",
"config-db-type": "Tegund gagnagrunns:",
"config-db-host": "Netþjónn gagnagrunns:",
"config-db-name": "Heiti gagnagrunns:",
"config-db-name-oracle": "Gagnagrunnsskema:",
"config-db-username": "Notandanafn á gagnagrunni:",
"config-db-password": "Lykilorð gagnagrunns:",
+ "config-charset-mysql5-binary": "MySQL 4.1/5.0 keyrsluskrá",
"config-charset-mysql5": "MySQL 4.1/5.0 UTF-8",
+ "config-db-port": "Gátt gagnagrunns:",
+ "config-sqlite-dir": "Gagnamappa SQLite:",
"config-type-mysql": "MySQL (eða samhæft)",
"config-type-postgres": "PostgreSQL",
"config-type-sqlite": "SQLite",
"config-type-oracle": "Oracle",
"config-type-mssql": "Microsoft SQL Server",
+ "config-header-mysql": "Stillingar MySQL",
+ "config-header-postgres": "Stillingar PostgreSQL",
+ "config-header-sqlite": "Stillingar SQLite",
+ "config-header-oracle": "Stillingar Oracle",
+ "config-header-mssql": "Stillingar Microsoft SQL Server",
"config-regenerate": "Endurgera LocalSettings.php â",
"config-show-table-status": "SHOW TABLE STATUS
beiðni mistókst!",
"config-db-web-account": "Gagnagrunnsreikningur fyrir vefaðgang",
diff --git a/includes/installer/i18n/it.json b/includes/installer/i18n/it.json
index 79a1f56c66..42159bccc0 100644
--- a/includes/installer/i18n/it.json
+++ b/includes/installer/i18n/it.json
@@ -74,9 +74,10 @@
"config-pcre-no-utf8": "'''Errore''': Il modulo PCRE di PHP sembra essere stato compilato senza il supporto PCRE_UTF8, ma MediaWiki lo richiede per funzionare correttamente.",
"config-memory-raised": "Il valore memory_limit
di PHP è $1, aumentato a $2.",
"config-memory-bad": "''Attenzione:''' Il valore di memory_limit
di PHP è $1.\nProbabilmente è troppo basso.\nL'installazione potrebbe non riuscire!",
- "config-ctype": "'''Errore''': PHP deve essere compilato con il supporto per l'[http://www.php.net/manual/it/ctype.installation.php estensione Ctype].",
+ "config-ctype": "Fatale: PHP deve essere compilato con il supporto per l'[http://www.php.net/manual/it/ctype.installation.php estensione Ctype].",
"config-iconv": "Fatale: PHP deve essere compilato con il supporto per l'[http://www.php.net/manual/en/iconv.installation.php estensione iconv].",
"config-json": "'''Errore:''' PHP è stato compilato senza il supporto per JSON. E' necessario installare l'estensione PHP per JSON o l'estensione [http://pecl.php.net/package/jsonc PECL jsonc] prima di installare MediaWiki.\n* L'estensione PHP è inclusa in Red Hat Enterprise Linux (CentOS) 5 e 6, ma deve essere abilitata in /etc/php.ini
o /etc/php.d/json.ini
.\n* Alcune distribuzioni di Linux pubblicate dopo il maggio 2013 omettono l'estensione PHP, e al posto utilizzano l'estensione PECL come php5-json
o php-pecl-jsonc
",
+ "config-mbstring-absent": "Fatale: PHP deve essere compilato con il supporto per l'[http://www.php.net/manual/en/mbstring.setup.php estensione mbstring].",
"config-xcache": "[http://xcache.lighttpd.net/ XCache] è installato",
"config-apc": "[http://www.php.net/apc APC] è installato",
"config-wincache": "[http://www.iis.net/download/WinCacheForPhp WinCache] è installato",
diff --git a/includes/installer/i18n/ja.json b/includes/installer/i18n/ja.json
index dd576ca5a5..5a79940e23 100644
--- a/includes/installer/i18n/ja.json
+++ b/includes/installer/i18n/ja.json
@@ -79,6 +79,7 @@
"config-ctype": "è´å½çã¨ã©ã¼: PHP 㯠[http://www.php.net/manual/en/ctype.installation.php Ctype æ¡å¼µã¢ã¸ã¥ã¼ã«]ã®ãµãã¼ãä»ãã§ã³ã³ãã¤ã«ããã¦ããå¿
è¦ãããã¾ãã",
"config-iconv": "è´å½çãªã¨ã©ã¼: PHPã¯[http://www.php.net/manual/en/iconv.installation.php iconv æ¡å¼µæ©è½]ã®ãµãã¼ããæå¹ã«ãã¦ã³ã³ãã¤ã«ããã¦ããå¿
è¦ãããã¾ãã",
"config-json": "è´å½çã¨ã©ã¼: PHP 㯠JSON ãµãã¼ããªãã§ã³ã³ãã¤ã«ããã¦ãã¾ãã\nPHP ã« JSON æ¡å¼µã¢ã¸ã¥ã¼ã«ã¾ã㯠[http://pecl.php.net/package/jsonc PECL jsonc] æ¡å¼µã¢ã¸ã¥ã¼ã«ãã¤ã³ã¹ãã¼ã«ãã¦ãããMediaWiki ãã¤ã³ã¹ãã¼ã«ãã¦ãã ããã\n* Red Hat Enterprise Linux (CentOS) 5 ããã³ 6ã«ã¯ PHP ã®æ¡å¼µæ©è½ãå«ã¾ãã¦ããããã/etc/php.ini
ã¾ã㯠/etc/php.d/json.ini
ããæå¹ã«ãã¦ãã ããã\n* 2013å¹´5æ以éã«ãªãªã¼ã¹ãããä¸é¨ã® Linux ãã£ã¹ããªãã¥ã¼ã·ã§ã³ã§ã¯ãPHP æ¡å¼µã¢ã¸ã¥ã¼ã«ã®ä»£ããã«ãphp5-json
ã¾ã㯠php-pecl-jsonc
ã¨ã㦠PECL ãå梱ããã¦ãã¾ãã",
+ "config-mbstring-absent": "è´å½çã¨ã©ã¼: PHP 㯠[http://www.php.net/manual/en/mbstring.setup.php mbstring æ¡å¼µã¢ã¸ã¥ã¼ã«]ã®ãµãã¼ããæå¹ã«ãã¦ã³ã³ãã¤ã«ããã¦ããå¿
è¦ãããã¾ãã",
"config-xcache": "[http://xcache.lighttpd.net/ XCache] ãã¤ã³ã¹ãã¼ã«æ¸ã¿",
"config-apc": "[http://www.php.net/apc APC] ãã¤ã³ã¹ãã¼ã«æ¸ã¿",
"config-wincache": "[http://www.iis.net/download/WinCacheForPhp WinCache] ãã¤ã³ã¹ãã¼ã«æ¸ã¿",
diff --git a/includes/installer/i18n/ko.json b/includes/installer/i18n/ko.json
index 09a926487a..f621fe481d 100644
--- a/includes/installer/i18n/ko.json
+++ b/includes/installer/i18n/ko.json
@@ -316,12 +316,12 @@
"config-install-mainpage": "기본 ë´ì©ì¼ë¡ ë문ì ë§ëë ì¤",
"config-install-extension-tables": "íì±íë íì¥ ê¸°ë¥ì ìí í
ì´ë¸ì ë§ëë ì¤",
"config-install-mainpage-failed": "ë문ì ì½ì
í ì ììµëë¤: $1",
- "config-install-done": "ì¶íí©ëë¤! \n미ëì´ìí¤ê° ì±ê³µì ì¼ë¡ ì¤ì¹ëììµëë¤.\n\nì¤ì¹ ê´ë¦¬ìê° LocalSettings.php
íì¼ì ë§ë¤ììµëë¤.\n모ë ì¤ì ì´ í¬í¨ëì´ ììµëë¤.\n\níì¼ì ë¤ì´ë¡ëíì¬ ìí¤ ì¤ì¹ì ê±°ì ì ë£ì´ì¼ í©ëë¤. (index.phpì ê°ì ëë í°ë¦¬) ë¤ì´ë¡ëê° ìëì¼ë¡ ììë©ëë¤.\n\në¤ì´ë¡ëê° ì ê³µëì§ ìì ê²½ì°ë ê·¸ê²ì ì·¨ìí ê²½ì°ìë ìëì ë§í¬ë¥¼ í´ë¦íì¬ ë¤ì´ë¡ë를 ë¤ì ììí ì ììµëë¤:\n\n$3\n\nì°¸ê³ : ì´ ìì±í ì¤ì íì¼ì ë¤ì´ë¡ëíì§ ìê³ ì¤ì¹ë¥¼ ëë´ë©´ ì´ íì¼ì ëì¤ì ì¬ì©í ì ììµëë¤.\n\nìë£ëìì¼ë©´ [$2 ìí¤ì ë¤ì´ê° ì ììµëë¤] .",
+ "config-install-done": "ì¶íí©ëë¤! \n미ëì´ìí¤ë¥¼ ì¤ì¹íìµëë¤.\n\nì¤ì¹ ê´ë¦¬ìê° LocalSettings.php
íì¼ì ë§ë¤ììµëë¤.\nì¬ê¸°ì 모ë ì¤ì ì´ í¬í¨ëì´ ììµëë¤.\n\níì¼ì ë¤ì´ë¡ëíì¬ ìí¤ ì¤ì¹ì ê±°ì ì ë£ì´ì¼ í©ëë¤. (index.phpì ê°ì ëë í°ë¦¬) ë¤ì´ë¡ëê° ìëì¼ë¡ ììë©ëë¤.\n\në¤ì´ë¡ëê° ì ê³µëì§ ìì ê²½ì°ë ê·¸ê²ì ì·¨ìí ê²½ì°ìë ìëì ë§í¬ë¥¼ í´ë¦íì¬ ë¤ì´ë¡ë를 ë¤ì ììí ì ììµëë¤:\n\n$3\n\nì°¸ê³ : ì´ ìì±í ì¤ì íì¼ì ë¤ì´ë¡ëíì§ ìê³ ì¤ì¹ë¥¼ ëë´ë©´ ì´ íì¼ì ëì¤ì ì¬ì©í ì ììµëë¤.\n\nìë£ëìì¼ë©´ [$2 ìí¤ì ë¤ì´ê° ì ììµëë¤] .",
"config-download-localsettings": "LocalSettings.php
ë¤ì´ë¡ë",
"config-help": "ëìë§",
"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": "미ëì´ìí¤ê° ì¤ì¹ëììµëë¤. ",
"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 ë´ ì¸ì´ë¡ 미ëì´ìí¤ ì§ìí]\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam ë¹ì ì ìí¤ìì ì¤í¸ì ëì²íë ë²ì ë°°ì°ì¸ì]"
}
diff --git a/includes/installer/i18n/lv.json b/includes/installer/i18n/lv.json
index 69bbc835a6..b3aaef1a62 100644
--- a/includes/installer/i18n/lv.json
+++ b/includes/installer/i18n/lv.json
@@ -27,6 +27,7 @@
"config-restart": "JÄ, restartÄt",
"config-env-php": "PHP $1 ir uzstÄdÄ«ts.",
"config-diff3-bad": "GNU diff3 nav atrasts.",
+ "config-db-name": "DatubÄzes nosaukums:",
"config-db-username": "DatubÄzes lietotÄjvÄrds:",
"config-db-password": "DatubÄzes parole:",
"config-db-charset": "DatubÄzes rakstzÄ«mju kopa",
@@ -44,15 +45,23 @@
"config-header-mssql": "Microsoft SQL servera iestatījumi",
"config-mysql-innodb": "InnoDB",
"config-mysql-myisam": "MyISAM",
+ "config-mysql-utf8": "UTF-8",
+ "config-ns-generic": "Projekts",
+ "config-ns-site-name": "TÄds pats kÄ viki nosaukums: $1",
+ "config-ns-other": "Cits (jÄnorÄda)",
+ "config-ns-other-default": "MansViki",
+ "config-admin-box": "Administratora konts",
"config-admin-name": "Tavs lietotÄjvÄrds:",
"config-admin-password": "Parole:",
"config-admin-password-confirm": "Parole vÄlreiz:",
"config-admin-name-blank": "Ievadiet administratora lietotÄjvÄrdu.",
"config-admin-email": "E-pasta adrese:",
+ "config-logo": "Logo URL:",
"config-cc-again": "IzvÄlies vÄlreiz...",
+ "config-extensions": "PaplaÅ¡inÄjumi",
"config-install-step-done": "Gatavs",
"config-help": "palīdzība",
"config-help-tooltip": "uzspiediet, lai izvÄrstu",
- "mainpagetext": "'''MediaWiki veiksmÄ«gi ieinstalÄts'''",
+ "mainpagetext": "MediaWiki veiksmÄ«gi instalÄ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]"
}
diff --git a/includes/installer/i18n/mai.json b/includes/installer/i18n/mai.json
index 8c6cb8bafc..e3f800ecbf 100644
--- a/includes/installer/i18n/mai.json
+++ b/includes/installer/i18n/mai.json
@@ -3,7 +3,8 @@
"authors": [
"Umeshberma",
"बिपà¥à¤²à¤¬ à¤à¤¨à¤¨à¥à¤¦",
- "Bijay chaurasia"
+ "Bijay chaurasia",
+ "Tulsi Bhagat"
]
},
"config-desc": "मà¥à¤¡à¤¿à¤¯à¤¾-विà¤à¥ à¤à¥ लà¥à¤² à¤à¤à¤¸à¥à¤à¥à¤²à¤°",
@@ -24,8 +25,15 @@
"config-page-complete": "पà¥à¤°à¥à¤£!",
"config-page-restart": "सà¥à¤¥à¤¾à¤ªà¤¨à¤¾à¤à¥ पà¥à¤¨à¤¾à¤°à¤®à¥à¤ à¤à¤°à¥",
"config-page-readme": "पढà¥",
+ "config-page-releasenotes": "रिलà¥à¤ नà¥à¤à¥à¤¸",
+ "config-page-copying": "à¤
नà¥à¤à¤°à¤£",
+ "config-page-upgradedoc": "à¤à¤ªà¤¾à¤°à¥à¤ªà¤£ à¤à¤½ रहल à¤
à¤à¤¿à¥¤",
"config-page-existingwiki": "रहल विà¤à¥",
"config-restart": "हà¤, à¤à¤à¤°à¤¾ पà¥à¤¨: सà¥à¤°à¥ à¤à¤à¤² à¤à¤¾à¤",
+ "config-sidebar": "* [//www.mediawiki.org MediaWiki home]\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents User's Guide]\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Contents Administrator's Guide]\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ FAQ]\n----\n* Read me \n* Release notes \n* Copying \n* Upgrading ",
+ "config-env-good": "परà¥à¤¯à¤¾à¤µà¤°à¤£ ठà¤à¤¾à¤à¤ à¤à¤à¤² à¤à¥à¤² à¤
à¤à¤¿à¥¤\nà¤à¤¹à¤¾à¤ मà¥à¤¡à¤¿à¤¯à¤¾à¤µà¤¿à¤à¤¿ सà¥à¤¥à¤¾à¤ªà¤¿à¤¤ à¤à¤° सà¤à¥ à¤à¤¿à¤à¥¤",
+ "config-env-bad": "परà¥à¤¯à¤¾à¤µà¤°à¤£ ठà¤à¤¾à¤à¤ à¤à¤à¤² à¤à¥à¤² à¤
à¤à¤¿à¥¤\nà¤à¤¹à¤¾à¤ मà¥à¤¡à¤¿à¤¯à¤¾à¤µà¤¿à¤à¤¿ सà¥à¤¥à¤¾à¤ªà¤¿à¤¤ नॠà¤à¤° सà¤à¥ à¤à¤¿à¤à¥¤",
+ "config-env-php": "PHP $1 सà¥à¤¥à¤¾à¤ªà¤¿à¤¤ à¤à¤à¤² à¤à¥à¤¯à¤¾à¤² à¤
à¤à¤¿à¥¤",
"mainpagetext": "'''मà¥à¤¡à¤¿à¤¯à¤¾à¤µà¤¿à¤à¥ नà¥à¤ à¤à¤à¤¾à¤ पà¥à¤°à¤¸à¥à¤¥à¤¾à¤ªà¤¿à¤¤ à¤à¥à¤²à¥¤'''",
"mainpagedocfooter": "समà¥à¤ªà¤°à¥à¤ à¤à¤°à¥ [//meta.wikimedia.org/wiki/Help:Contents User's Guide] विà¤à¤¿ तà¤à¤¤à¥à¤°à¤¾à¤à¤¶à¤ पà¥à¤°à¤¯à¥à¤à¤ à¤à¤¾à¤¨à¤à¤¾à¤°à¥ लà¥à¤²à¥¤\n\n==पà¥à¤°à¤¾à¤°à¤®à¥à¤ à¤à¥à¤¨à¤¾ à¤à¤°à¥==\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Configuration settings list]\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ MediaWiki FAQ]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]"
}
diff --git a/includes/installer/i18n/mk.json b/includes/installer/i18n/mk.json
index 3377afb8fe..7deead3b53 100644
--- a/includes/installer/i18n/mk.json
+++ b/includes/installer/i18n/mk.json
@@ -55,24 +55,19 @@
"config-no-db": "Ðе можев да наÑдам ÑоодвеÑен двигаÑел за базаÑа на подаÑоÑи! Ðе ÑÑеба да воÑпоÑÑавиÑе двигаÑел за PHP-база.\n{{PLURAL:$2|ÐоддÑжан Ñе Ñледниов вид|ÐоддÑжани Ñе Ñледниве видови}} бази: $1.\n\nÐÐ¾ÐºÐ¾Ð»ÐºÑ ÑамиÑе го ÑÑоÑивÑе Ð¾Ð²Ð¾Ñ PHP, овозможеÑе го Ð±Ð°Ð·Ð½Ð¸Ð¾Ñ ÐºÐ»Ð¸ÐµÐ½Ñ Ð²Ð¾ поÑÑавкиÑе â на пÑ. Ñо ./configure --with-mysqli
.\nÐко Ð¾Ð²Ð¾Ñ PHP го воÑпоÑÑавиÑе од Ð¿Ð°ÐºÐµÑ Ð½Ð° Debian или Ubuntu, ÑÐ¾Ð³Ð°Ñ Ñе ÑÑеба иÑÑо Ñака да го воÑпоÑÑавиÑе, на пÑ., пакеÑÐ¾Ñ php5-mysql
.",
"config-outdated-sqlite": "'''ÐÑедÑпÑедÑваÑе''': имаÑе SQLite $1. ÐаÑÑÑаÑаÑа допÑÑÑена веÑзиÑа е $2. ÐаÑоа, SQLite Ñе биде недоÑÑапен.",
"config-no-fts3": "'''ÐÑедÑпÑедÑваÑе''': SQLite iе ÑоÑÑавен без модÑÐ»Ð¾Ñ [//sqlite.org/fts3.html FTS3] - за оваа база нема да има можноÑÑ Ð·Ð° пÑебаÑÑваÑе.",
- "config-register-globals-error": "ÐÑеÑка: ÐклÑÑена е можноÑÑа [http://php.net/register_globals register_globals]
за PHP.\nÐоÑа да Ñе иÑклÑÑи за да пÑодолжиÑе Ñо воÑпоÑÑавкаÑа. \nÐако да го напÑавиÑе Ñоа можеÑе да пÑоÑиÑаÑе на [https://www.mediawiki.org/wiki/register_globals https://www.mediawiki.org/wiki/register_globals].",
- "config-magic-quotes-gpc": "Ðобно: [http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-gpc magic_quotes_gpc] е екÑивно! \nÐваа можноÑÑ Ð½ÐµÐ¿Ñедвидливо го ÑаÑипÑва вноÑÐ¾Ñ Ð½Ð° подаÑоÑи.\nÐваа можноÑÑ Ð¼Ð¾Ñа да е иÑклÑÑена. Ðо ÑпÑоÑивно нема да можеÑе да го воÑпоÑÑавиÑе и коÑиÑÑиÑе ÐедиÑаÐики.",
- "config-magic-quotes-runtime": "'''Ðобно: [http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-runtime magic_quotes_runtime] е акÑивно!'''\nÐваа можноÑÑ Ð½ÐµÐ¿Ñедвидливо го ÑаÑипÑва вноÑÐ¾Ñ Ð½Ð° подаÑоÑи.\nÐваа можноÑÑ Ð¼Ð¾Ñа да е иÑклÑÑена. Ðо ÑпÑоÑивно нема да можеÑе да го воÑпоÑÑавиÑе и коÑиÑÑиÑе ÐедиÑаÐики.",
- "config-magic-quotes-sybase": "'''Ðобно: [http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-sybase magic_quotes_sybase] е акÑивно!'''\nÐваа можноÑÑ Ð½ÐµÐ¿Ñедвидливо го ÑаÑипÑва вноÑÐ¾Ñ Ð½Ð° подаÑоÑи.\nÐваа можноÑÑ Ð¼Ð¾Ñа да е иÑклÑÑена. Ðо ÑпÑоÑивно нема да можеÑе да го воÑпоÑÑавиÑе и коÑиÑÑиÑе ÐедиÑаÐики.",
"config-mbstring": "'''Ðобно: [http://www.php.net/manual/en/ref.mbstring.php#mbstring.overload mbstring.func_overload] е акÑивно!'''\nÐваа можноÑÑ Ð¿ÑедизвикÑва гÑеÑки и може непÑедвидиво да го ÑаÑипÑва вноÑÐ¾Ñ Ð½Ð° подаÑоÑи.\nÐваа можноÑÑ Ð¼Ð¾Ñа да е иÑклÑÑена. Ðо ÑпÑоÑивно нема да можеÑе да го воÑпоÑÑавиÑе и коÑиÑÑиÑе ÐедиÑаÐики.",
- "config-safe-mode": "'''ÐÑедÑпÑедÑваÑе:''' [http://www.php.net/features.safe-mode Ð±ÐµÐ·Ð±ÐµÐ´Ð½Ð¸Ð¾Ñ Ñежим] на PHP е акÑивен.\nÐва може да пÑедизвика пÑоблеми, оÑобено ако коÑиÑÑиÑе подигаÑа и поддÑÑка за math
.",
"config-xml-bad": "XML-модÑÐ»Ð¾Ñ Ð·Ð° PHP недоÑÑаÑÑва.\nÐедиÑаÐики има поÑÑеба од ÑÑнкÑии во Ð¾Ð²Ð¾Ñ Ð¼Ð¾Ð´Ñл и нема да ÑабоÑи Ñо овие поÑÑавки.\nÐоже да ÑÑеба да го воÑпоÑÑавиÑе RPM-пакеÑÐ¾Ñ âphp-xmlâ.",
"config-pcre-old": "'''Ðобно:''' Се баÑа PCRE $1 или понова веÑзиÑа.\nÐаÑÐ¸Ð¾Ñ PHP-бинаÑен е ÑвÑзан Ñо PCRE $2.\n[https://www.mediawiki.org/wiki/Manual:Errors_and_symptoms/PCRE ÐовеÑе инÑоÑмаÑии].",
- "config-pcre-no-utf8": "'''ФаÑално''': PCRE-модÑÐ»Ð¾Ñ Ð½Ð° PHP е ÑоÑÑавен без поддÑÑка за PCRE_UTF8.\nÐедиÑаÐики баÑа поддÑÑка за UTF-8 за да може да ÑабоÑи пÑавилно.",
+ "config-pcre-no-utf8": "Ðобно : PCRE-модÑÐ»Ð¾Ñ Ð½Ð° PHP е ÑÑоÑен без поддÑÑка за PCRE_UTF8.\nÐедиÑаÐики баÑа поддÑÑка за UTF-8 за да може да ÑабоÑи пÑавилно.",
"config-memory-raised": "memory_limit
за PHP изнеÑÑва $1, зголемен на $2.",
"config-memory-bad": "'''ÐÑедÑпÑедÑваÑе:''' memory_limit
за PHP изнеÑÑва $1.\nÐва е веÑоÑаÑно пÑемалкÑ.\nÐоÑпоÑÑавкаÑа може да не ÑÑпее!",
- "config-ctype": "'''ФаÑална гÑеÑка''': PHP моÑа да Ñе ÑоÑÑави Ñо поддÑÑка за [http://www.php.net/manual/en/ctype.installation.php додаÑÐ¾ÐºÐ¾Ñ Ctype].",
+ "config-ctype": "Ðобно: PHP моÑа да Ñе ÑÑоÑи Ñо поддÑÑка за додаÑÐ¾ÐºÐ¾Ñ [http://www.php.net/manual/en/ctype.installation.php Ctype].",
"config-iconv": "Ðобно: PHP моÑа да Ñе ÑÑоÑÑва Ñо поддÑÑка за [http://www.php.net/manual/en/iconv.installation.php додаÑÐ¾ÐºÐ¾Ñ iconv].",
"config-json": "'''Ðобно:''' PHP беÑе ÑÑоÑен без поддÑÑка од JSON.\nÐе моÑа да го воÑпоÑÑавиÑе додаÑÐ¾ÐºÐ¾Ñ Ð·Ð° JSON во PHP, или додаÑÐ¾ÐºÐ¾Ñ [http://pecl.php.net/package/jsonc PECL jsonc] пÑед да го воÑпоÑÑавиÑе ÐедиÑаÐики.\n* ÐодаÑÐ¾ÐºÐ¾Ñ Ð·Ð° PHP е вклÑÑен во веÑзииÑе 5 и 6 на Linux (од Red Hat Enterprise) (CentOS), но моÑа да Ñе акÑивиÑа во /etc/php.ini
или /etc/php.d/json.ini
.\n* Ðекои ваÑиÑанÑи на Linux излезени по Ð¼Ð°Ñ 2013 г. не го ÑодÑÐ¶Ð°Ñ Ð´Ð¾Ð´Ð°ÑÐ¾ÐºÐ¾Ñ Ð·Ð° PHP, ÑÑÐºÑ Ð³Ð¾ пакÑÐ²Ð°Ð°Ñ Ð´Ð¾Ð´Ð°ÑÐ¾ÐºÐ¾Ñ PECL како php5-json
или php-pecl-jsonc
.",
+ "config-mbstring-absent": "Ðобно: PHP моÑа да Ñе ÑÑоÑÑва Ñо поддÑÑка за додаÑÐ¾ÐºÐ¾Ñ [http://www.php.net/manual/en/mbstring.setup.php mbstring].",
"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-no-cache-apcu": "ÐÑедÑпÑедÑваÑе: Ðе можев да го наÑдам [http://www.php.net/apcu APCu], [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-diff3-bad": "GNU diff3 не е пÑонаÑден.",
@@ -317,12 +312,12 @@
"config-install-mainpage": "Создавам главна ÑÑÑаниÑа Ñо ÑÑандаÑдна ÑодÑжина",
"config-install-extension-tables": "ÐзÑабоÑка на Ñабели за овозможени додаÑоÑи",
"config-install-mainpage-failed": "Ðе можев да вмеÑнам главна ÑÑÑаниÑа: $1",
- "config-install-done": "'''ЧеÑÑиÑаме!'''\nУÑпеÑно го воÑпоÑÑавивÑе ÐедиÑаÐики.\n\nÐоÑпоÑÑавÑваÑÐ¾Ñ Ñоздаде подаÑоÑека LocalSettings.php
.\nÐ¢Ð°Ð¼Ñ Ñе ÑодÑÐ¶Ð°Ñ ÑиÑе ваÑи нагодÑваÑа.\n\nÐе ÑÑеба да Ñа пÑеземеÑе и да Ñа ÑÑавиÑе во оÑноваÑа на воÑпоÑÑавкаÑа (иÑÑаÑа папка во коÑа Ñе наоÑа index.php). ÐÑеземаÑеÑо ÑÑеба да е запоÑнаÑо авÑомаÑÑки.\n\nÐко не ви е понÑдено пÑеземаÑе, или пак ако ÑÑе го оÑкажале, можеÑе да го поÑнеÑе одново ÑÑиÑкаÑÑи на Ñледнава вÑÑка:\n\n$3\n\n'''Ðапомена''': Ðко ова не го напÑавиÑе Ñега, подаÑоÑекаÑа Ñо поÑÑавки повеÑе нема да биде на доÑÑапна.\n\nÐÑкога Ñе завÑÑиÑе Ñо Ñоа, можеÑе да '''[$2 влезеÑе на ваÑеÑо вики]'''.",
+ "config-install-done": "ЧеÑÑиÑаме! \nУÑпеÑно го воÑпоÑÑавивÑе ÐедиÑаÐики.\n\nÐоÑпоÑÑавÑваÑÐ¾Ñ Ñоздаде подаÑоÑека LocalSettings.php
.\nÐ¢Ð°Ð¼Ñ Ñе ÑодÑÐ¶Ð°Ñ ÑиÑе ваÑи нагодÑваÑа.\n\nÐе ÑÑеба да Ñа пÑеземеÑе и да Ñа ÑÑавиÑе во оÑноваÑа на воÑпоÑÑавкаÑа (иÑÑаÑа папка во коÑа Ñе наоÑа index.php). ÐÑеземаÑеÑо ÑÑеба да е запоÑнаÑо авÑомаÑÑки.\n\nÐко не ви е понÑдено пÑеземаÑе, или пак ако ÑÑе го оÑкажале, можеÑе да го поÑнеÑе одново ÑÑиÑкаÑÑи на Ñледнава вÑÑка:\n\n$3\n\nÐапомена : Ðко ова не го напÑавиÑе Ñега, подаÑоÑекаÑа Ñо поÑÑавки повеÑе нема да биде на доÑÑапна.\n\nÐÑкога Ñе завÑÑиÑе Ñо Ñоа, можеÑе да [$2 влезеÑе на ваÑеÑо вики] .",
"config-download-localsettings": "ÐÑеземи го LocalSettings.php
",
"config-help": "помоÑ",
"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": "ÐедиÑаÐики е ÑÑпеÑно воÑпоÑÑавен. ",
"mainpagedocfooter": "ÐогледнеÑе го [//meta.wikimedia.org/wiki/Help:Contents УпаÑÑÑвоÑо за коÑиÑниÑи] за подеÑални иÑоÑмаÑии како Ñе коÑиÑÑи вики-пÑогÑамоÑ.\n\n==Ðд каде да поÑнеÑе==\n* [//meta.wikimedia.org/wiki/Manual:Configuration_settings СпиÑок на нагодÑваÑа]\n* [//meta.wikimedia.org/wiki/Manual:FAQ ЧÐÐ (ÑеÑÑо поÑÑавÑвани пÑаÑаÑа) за ÐедиÑаÐики].\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce ÐоÑÑенÑки ÑпиÑок на ÐедиÑаÐики за нови веÑзии]\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources ÐокализиÑаÑÑе го ÐедиÑаÐики на ваÑÐ¸Ð¾Ñ Ñазик]\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam ÐознаÑÑе како да Ñе боÑиÑе пÑоÑив Ñпам на ваÑеÑо вики]"
}
diff --git a/includes/installer/i18n/pl.json b/includes/installer/i18n/pl.json
index 6251c03eb2..7422a66985 100644
--- a/includes/installer/i18n/pl.json
+++ b/includes/installer/i18n/pl.json
@@ -20,7 +20,8 @@
"Pio387",
"Darellur",
"The Polish",
- "Macofe"
+ "Macofe",
+ "Sethakill"
]
},
"config-desc": "Instalator MediaWiki",
@@ -30,9 +31,9 @@
"config-localsettings-cli-upgrade": "Wykryto obecnoÅÄ pliku LocalSettings.php
.\nAktualizacjÄ należy wykonaÄ poprzez uruchomienie update.php
",
"config-localsettings-key": "Klucz aktualizacji:",
"config-localsettings-badkey": "Podany klucz aktualizacji jest nieprawidÅowy.",
- "config-upgrade-key-missing": "Wykryto zainstalowane wczeÅniej MediaWiki.\nJeÅli chcesz je zaktualizowaÄ dodaj na koniec pliku LocalSettings.php
poniższÄ
liniÄ tekstu.\n\n$1",
+ "config-upgrade-key-missing": "Wykryto zainstalowane wczeÅniej MediaWiki.\nJeÅli chcesz je zaktualizowaÄ, dodaj na koniec pliku LocalSettings.php
poniższÄ
liniÄ tekstu:\n\n$1",
"config-localsettings-incomplete": "IstniejÄ
cy plik LocalSettings.php
wyglÄ
da na niekompletny.\nBrak wartoÅci zmiennej $1.\nZmieÅ plik LocalSettings.php
, tak by zawieraÅ deklaracjÄ wartoÅci tej zmiennej, a nastÄpnie kliknij â{{int:Config-continue}}â.",
- "config-localsettings-connection-error": "WystÄ
piÅ bÅÄ
d podczas ÅÄ
czenia z bazÄ
danych używajÄ
c ustawieÅ podanych w LocalSettings.php
\nNapraw te ustawienia i spróbuj ponownie.\n\n$1",
+ "config-localsettings-connection-error": "WystÄ
piÅ bÅÄ
d podczas ÅÄ
czenia z bazÄ
danych używajÄ
c ustawieÅ podanych w LocalSettings.php
.\nNapraw te ustawienia i spróbuj ponownie.\n\n$1",
"config-session-error": "BÅÄ
d uruchomienia sesji â $1",
"config-session-expired": "WyglÄ
da na to, że Twoja sesja wygasÅa.\nCzas życia sesji zostaÅ skonfigurowany na $1.\nMożesz go wydÅużyÄ zmieniajÄ
c session.gc_maxlifetime
w pliku php.ini.\nUruchom ponownie proces instalacji.",
"config-no-session": "Dane sesji zostaÅy utracone.\nSprawdź plik php.ini i upewnij siÄ, że session.save_path
wskazuje na odpowiedni katalog.",
@@ -81,9 +82,11 @@
"config-ctype": "''' Krytyczny ''': PHP musi byÄ skompilowany z obsÅugÄ
[http://www.php.net/manual/en/ctype.installation.php rozszerzenia Ctype].",
"config-iconv": "BÅÄ
d krytyczny: PHP musi byÄ skompilowane z obsÅugÄ
[http://www.php.net/manual/en/iconv.installation.php rozszerzenia iconv].",
"config-json": "'''BÅÄ
d krytyczny:''' PHP skompilowano bez obsÅuga JSON.\nPrzed zainstalowaniem oprogramowania MediaWiki musisz zainstalowaÄ rozszerzenie PHP JSON albo rozszerzenie [http://pecl.php.net/package/jsonc PECL jsonc].\n* Rozszerzenie PHP jest zawarte w Red Hat Enterprise Linux (CentOS) 5 i 6, jednak musi zostaÄ wÅÄ
czone w /etc/php.ini
or /etc/php.d/json.ini
.\n* Niektóre dystrybucje Linuksa, wydane po maju 2013, nie używajÄ
rozszerzenia PHP, lecz rozszerzenie PECL, jako php5-json
lub php-pecl-jsonc
.",
+ "config-mbstring-absent": "BÅÄ
d krytyczny: PHP musi byÄ skompilowany z obsÅugÄ
[http://www.php.net/manual/en/mbstring.setup.php rozszerzenia mbstring].",
"config-xcache": "[Http://trac.lighttpd.net/xcache/ XCache] jest zainstalowany",
"config-apc": "[Http://www.php.net/apc APC] jest zainstalowany",
"config-wincache": "[http://www.iis.net/download/WinCacheForPhp WinCache] jest zainstalowany",
+ "config-no-cache-apcu": "Ostrzeżenie: Nie można znaleÅºÄ [http://www.php.net/apcu APCu], [http://xcache.lighttpd.net/ XCache] lub [http://www.iis.net/download/WinCacheForPhp WinCache].\nPamiÄÄ podrÄczna obiektów nie zostanie wÅÄ
czona.",
"config-mod-security": "''' Ostrzeżenie ''': Serwer sieci web ma wÅÄ
czone [http://modsecurity.org/ mod_security]. JeÅli jest niepoprawnie skonfigurowane, może byÄ przyczynÄ
problemów MediaWiki lub innego oprogramowania, które pozwala użytkownikom na wysyÅanie dowolnej zawartoÅci.\nSprawdź w [http://modsecurity.org/documentation/ dokumentacji mod_security] lub skontaktuj siÄ z obsÅuga hosta, jeÅli wystÄ
piÄ
losowe bÅÄdy.",
"config-diff3-bad": "Nie znaleziono GNU diff3.",
"config-git": "Znaleziono oprogramowanie kontroli wersji Git: $1
.",
@@ -203,7 +206,7 @@
"config-ns-site-name": "Taka sama jak nazwa wiki: $1",
"config-ns-other": "Inna (należy okreÅliÄ)",
"config-ns-other-default": "MojaWiki",
- "config-project-namespace-help": "WedÅug przykÅadu Wikipedii wiele wiki przechowuje swoje strony zasad oddzielnie od stron z zawartoÅciÄ
, w \"'''przestrzeni nazw projektu'''\".\nWszystkie tytuÅy stron w tej przestrzeni nazw zaczynajÄ
siÄ od pewnego przedrostka, który można tutaj okreÅliÄ.\nTradycyjnie ten przedrostek wywodzi siÄ od nazwy wiki, ale nie może zawieraÄ pewnych znaków przestankowych takich jak \"#\" lub \":\".",
+ "config-project-namespace-help": "WedÅug przykÅadu Wikipedii wiele wiki przechowuje swoje strony zasad oddzielnie od stron z zawartoÅciÄ
, w '''przestrzeni nazw projektu'''.\nWszystkie tytuÅy stron w tej przestrzeni nazw zaczynajÄ
siÄ od pewnego przedrostka, który można tutaj okreÅliÄ.\nZazwyczaj ten przedrostek wywodzi siÄ od nazwy wiki, ale nie może zawieraÄ pewnych znaków przestankowych takich jak \"#\" lub \":\".",
"config-ns-invalid": "Podana przestrzeÅ nazw â$1 â jest nieprawidÅowa.\nPodaj innÄ
przestrzeÅ nazw projektu.",
"config-ns-conflict": "OkreÅlona przestrzeÅ nazw \"$1 \" powoduje konflikt z domyÅlnÄ
przestrzeniÄ
nazw MediaWiki.\nWskaż innÄ
przestrzeÅ nazw projektu.",
"config-admin-box": "Konto administratora",
@@ -324,7 +327,7 @@
"config-install-mainpage": "Tworzenie strony gÅównej z domyÅlnÄ
zawartoÅciÄ
",
"config-install-extension-tables": "Tworzenie tabel dla aktywnych rozszerzeÅ",
"config-install-mainpage-failed": "Nie udaÅo siÄ wstawiÄ strony gÅównej: $1",
- "config-install-done": "'''Gratulacje!'''\nUdaÅo Ci siÄ zainstalowaÄ MediaWiki.\n\nInstalator wygenerowaÅ plik konfiguracyjny LocalSettings.php
.\n\nMusisz go pobraÄ i umieÅciÄ w katalogu gÅównym Twojej instalacji wiki (tym samym katalogu co index.php). Pobieranie powinno zaczÄ
Ä siÄ automatycznie.\n\nJeżeli pobieranie nie zostaÅo zaproponowane lub jeÅli użytkownik je anulowaÅ, można ponownie uruchomiÄ pobranie klikajÄ
c poniższe ÅÄ
cze:\n\n$3\n\n'''Uwaga''': JeÅli nie zrobisz tego teraz, wygenerowany plik konfiguracyjny nie bÄdzie już dostÄpny po zakoÅczeniu instalacji.\n\nPo zaÅadowaniu pliku konfiguracyjnego możesz '''[$2 wejÅÄ na wiki]'''.",
+ "config-install-done": "'''Gratulacje! \nUdaÅo Ci siÄ zainstalowaÄ MediaWiki.\n\nInstalator wygenerowaÅ plik konfiguracyjny LocalSettings.php
.\n\nMusisz go pobraÄ i umieÅciÄ w katalogu gÅównym Twojej instalacji wiki (tym samym katalogu co index.php). Pobieranie powinno zaczÄ
Ä siÄ automatycznie.\n\nJeżeli pobieranie nie zostaÅo zaproponowane lub jeÅli użytkownik je anulowaÅ, można ponownie uruchomiÄ pobranie klikajÄ
c poniższe ÅÄ
cze:\n\n$3\n\nUwaga : JeÅli nie zrobisz tego teraz, wygenerowany plik konfiguracyjny nie bÄdzie już dostÄpny po zakoÅczeniu instalacji.\n\nPo zaÅadowaniu pliku konfiguracyjnego możesz [$2 wejÅÄ na wiki] .",
"config-download-localsettings": "Pobierz LocalSettings.php
",
"config-help": "pomoc",
"config-help-tooltip": "kliknij, aby rozwinÄ
Ä",
diff --git a/includes/installer/i18n/pt-br.json b/includes/installer/i18n/pt-br.json
index e41c1f77f1..677908bcfa 100644
--- a/includes/installer/i18n/pt-br.json
+++ b/includes/installer/i18n/pt-br.json
@@ -18,7 +18,8 @@
"TheEduGobi",
"Dianakc",
"Walesson",
- "Almondega"
+ "Almondega",
+ "Luk3"
]
},
"config-desc": "O instalador do MediaWiki",
@@ -27,7 +28,7 @@
"config-localsettings-upgrade": "Foi detectada a existência do arquivo LocalSettings.php
.\nPara atualizar esta instalação, insira na caixa abaixo o valor de $wgUpgradeKey
.\nEssa informação pode ser encontrada no arquivo LocalSettings.php
",
"config-localsettings-cli-upgrade": "Foi detectada a existência do arquivo LocalSettings.php
.\nAtualize esta instalação executando o arquivo update.php
",
"config-localsettings-key": "Chave de atualização:",
- "config-localsettings-badkey": "A chave fornecida está incorreta.",
+ "config-localsettings-badkey": "A chave de atualização que você forneceu está incorreta.",
"config-upgrade-key-missing": "Foi detectada uma instalação existente do MediaWiki.\nPara atualizar esta instalação, insira a seguinte linha ao final do seu LocalSettings.php
:\n\n$1",
"config-localsettings-incomplete": "O arquivo LocalSettings.php
parece incompleto.\nA variável $1 não está definida.\nPor favor, altere seu LocalSettings.php
e defina esta variável e clique em \"{{int:Config-continue}}\".",
"config-localsettings-connection-error": "Ocorreu um erro ao conectar ao banco de dados através das configurações presentes no arquivo LocalSettings.php
. Por favor, corrija essas configurações e tente novamente.\n\n$1",
@@ -70,12 +71,7 @@
"config-no-db": "Não foi possÃvel encontrar um driver apropriado para a banco de dados! Você precisa instalar um driver de banco de dados para PHP. {{PLURAL:$2|à aceite o seguinte tipo|São aceites os seguintes tipos}} de banco de dados: $1.\n\nSe compilou o PHP você mesmo, reconfigure-o com um cliente de banco de dados ativado, por exemplo, usando ./configure --with-mysqli
.\nSe instalou o PHP a partir de um pacote Debian ou Ubuntu, então também precisa instalar, por exemplo, o pacote php5-mysql
.",
"config-outdated-sqlite": "Aviso: você tem o SQLite versão $1, que é menor do que a versão mÃnima necessária $2. O SQLite não estará disponÃvel.",
"config-no-fts3": "Aviso O SQLite foi compilado sem o [//sqlite.org/fts3.html módulo FTS3], as funcionalidades de pesquisa não estarão disponÃveis nesta instalação.",
- "config-register-globals-error": "Erro: a opção [http://php.net/register_globals register_globals]
do PHP está ativada.\nA mesma deve ser desativada para continuar a instalação. \nVeja [https://www.mediawiki.org/wiki/register_globals https://www.mediawiki.org/wiki/register_globals] para obter ajuda com isto.",
- "config-magic-quotes-gpc": "Fatal: [http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-gpc magic_quotes_gpc] está ativa! \nEsta opção corrompe a entrada de dados imprevisivelmente.\nVocê não pode instalar ou usar a MediaWiki a menos que esta opção seja desativada.",
- "config-magic-quotes-runtime": "Erro fatal: A opção [http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-runtime magic_quotes_runtime] está ativada! \nEsta opção causa corrupção dos dados de entrada de forma imprevisÃvel.\nVocê não pode instalar ou utilizar o MediaWiki a menos que esta opção seja desativada.",
- "config-magic-quotes-sybase": "Erro fatal: A opção [http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-sybase magic_quotes_sybase] está ativada! \nEsta opção corrompe os dados de entrada de forma imprevisÃvel.\nVocê não pode instalar ou utilizar o MediaWiki a menos que esta opção seja desativada.",
"config-mbstring": "Erro fatal: A opção [http://www.php.net/manual/en/ref.mbstring.php#mbstring.overload mbstring.func_overload] está ativada! \nEsta opção causa erros e pode corromper os dados de forma imprevisÃvel.\nVocê não pode instalar ou utilizar o MediaWiki a menos que esta opção seja desativada.",
- "config-safe-mode": "Aviso: O [http://www.php.net/features.safe-mode safe mode] do PHP está ativado.\nEste modo pode causar problemas, especialmente no upload de arquivos e no suporte a math
.",
"config-xml-bad": "Falta o módulo XML do PHP.\nO MediaWiki necessita de funções deste módulo e não funcionará com esta configuração.\nPode precisar de instalar o pacote RPM chamado php-xml.",
"config-pcre-old": "Erro fatal: à necessário o PCRE $1 ou versão posterior.\nO binário do seu PHP foi vinculado com o PCRE $2.\n[https://www.mediawiki.org/wiki/Manual:Errors_and_symptoms/PCRE Mais informações].",
"config-pcre-no-utf8": "Erro fatal: O módulo PCRE do PHP parece ser compilado sem suporte a PCRE_UTF8.\nO MediaWiki requer suporte a UTF-8 para funcionar corretamente.",
@@ -87,7 +83,7 @@
"config-xcache": "[http://xcache.lighttpd.net/ XCache] está instalado",
"config-apc": "[http://www.php.net/apc APC] está instalado",
"config-wincache": "[http://www.iis.net/download/WinCacheForPhp WinCache] está instalado",
- "config-no-cache": "Aviso: Não foi possÃvel encontrar o [http://www.php.net/apc APC], [http://xcache.lighttpd.net/ XCache] ou [http://www.iis.net/download/WinCacheForPhp WinCache].\nO cache de objetos não está habilitado.",
+ "config-no-cache-apcu": "Aviso: Não se pode encontrar [http://www.php.net/apcu APCu], [http://xcache.lighttpd.net/ XCache] ou [http://www.iis.net/download/WinCacheForPhp WinCache].\nO caching de objetos não foi ativado.",
"config-mod-security": "Aviso: Seu servidor web tem [http://modsecurity.org/ mod_security] habilitado. Se configurado incorretamente, pode causar problemas para o MediaWiki ou outro software que permite aos usuários postar conteúdo arbitrário.\nConsulte a [http://modsecurity.org/documentation/ documentação do mod_security] ou entre em contato com o suporte do seu host se você encontrar erros aleatórios.",
"config-diff3-bad": "O GNU diff3 não foi encontrado.",
"config-git": "Foi encontrado o software de controle de versão Git: $1
.",
diff --git a/includes/installer/i18n/pt.json b/includes/installer/i18n/pt.json
index 39ce4b16b5..e0affaf3d0 100644
--- a/includes/installer/i18n/pt.json
+++ b/includes/installer/i18n/pt.json
@@ -15,7 +15,8 @@
"Imperadeiro98",
"Cainamarques",
"Vitorvicentevalente",
- "Macofe"
+ "Macofe",
+ "Diniscoelho"
]
},
"config-desc": "O instalador do MediaWiki",
@@ -326,5 +327,5 @@
"config-nofile": "Não foi possÃvel encontrar o ficheiro \"$1\". Terá sido apagado?",
"config-extension-link": "Sabia que a sua wiki suporta [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Extensions extensões]?\n\nPode procurar [//www.mediawiki.org/wiki/Special:MyLanguage/Category:Extensions_by_category extensões por categoria].",
"mainpagetext": "MediaWiki instalado. ",
- "mainpagedocfooter": "Consulte o [//meta.wikimedia.org/wiki/Help:Contents Guia de Utilizadores] para informações sobre o uso do software wiki.\n\n== Onde começar ==\n\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Lista de opções de configuração]\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ Perguntas e respostas frequentes sobre o MediaWiki]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Subscreva a lista de divulgação de novas versões do MediaWiki]\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Regionalize MediaWiki para seu idioma]"
+ "mainpagedocfooter": "Consulte o [//meta.wikimedia.org/wiki/Help:Contents Guia de Utilizadores] para informações sobre o uso do software wiki.\n\n== Onde começar ==\n\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Lista de opções de configuração]\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ Perguntas e respostas frequentes sobre o MediaWiki]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Subscreva a lista de divulgação de novas versões do MediaWiki]\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Regionalize o MediaWiki para seu idioma]\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Aprenda a combater spam na sua wiki]"
}
diff --git a/includes/installer/i18n/qqq.json b/includes/installer/i18n/qqq.json
index e73480134d..7010be0383 100644
--- a/includes/installer/i18n/qqq.json
+++ b/includes/installer/i18n/qqq.json
@@ -78,6 +78,7 @@
"config-ctype": "Message if support for [http://www.php.net/manual/en/ctype.installation.php Ctype] is missing from PHP.\n{{Related|Config-fatal}}",
"config-iconv": "Message if support for [http://www.php.net/manual/en/iconv.installation.php iconv] is missing from PHP.\n{{Related|Config-fatal}}",
"config-json": "Message if support for [[wikipedia:JSON|JSON]] is missing from PHP.\n* \"[[wikipedia:Red Hat Enterprise Linux|Red Hat Enterprise Linux]]\" (RHEL) and \"[[wikipedia:CentOS|CentOS]]\" refer to two almost-identical Linux distributions. \"5 and 6\" refers to version 5 or 6 of either distribution. Because RHEL 7 likely will not include the PHP extension, do not translate as \"5 or newer\".\n* \"The [http://www.php.net/json PHP extension]\" is the JSON extension included with PHP 5.2 and newer.\n* \"The [http://pecl.php.net/package/jsonc PECL extension]\" is based on the PHP extension, though excludes code some distributions have found unacceptable (see [[phab:T49431]]).\n{{Related|Config-fatal}}",
+ "config-mbstring-absent": "Message if support for [http://www.php.net/manual/en/mbstring.installation.php mbstring] is missing from PHP.\n{{Related|Config-fatal}}",
"config-xcache": "Message indicates if this program is available",
"config-apc": "Message indicates if this program is available",
"config-wincache": "Message indicates if this program is available",
diff --git a/includes/installer/i18n/ru.json b/includes/installer/i18n/ru.json
index f966b443d7..21f0cb0239 100644
--- a/includes/installer/i18n/ru.json
+++ b/includes/installer/i18n/ru.json
@@ -81,6 +81,7 @@
"config-ctype": "'''ФаÑалÑÐ½Ð°Ñ Ð¾Ñибка:''' PHP должен бÑÑÑ ÑкомпилиÑован Ñ Ð¿Ð¾Ð´Ð´ÐµÑжкой [http://www.php.net/manual/ru/ctype.installation.php ÑаÑÑиÑÐµÐ½Ð¸Ñ Ctype].",
"config-iconv": "ФаÑалÑÐ½Ð°Ñ Ð¾Ñибка: 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] пеÑед ÑÑÑановкой MediaWiki.\n* PHP-ÑаÑÑиÑение вÑ
Ð¾Ð´Ð¸Ñ Ð² ÑоÑÑав Red Hat Enterprise Linux (CentOS) 5 и 6, Ñ
оÑÑ Ð´Ð¾Ð»Ð¶Ð½Ð° бÑÑÑ Ð²ÐºÐ»ÑÑено в /etc/php.ini
или /etc/php.d/json.ini
.\n* ÐекоÑоÑÑе диÑÑÑибÑÑÐ¸Ð²Ñ Linux, вÑпÑÑеннÑе поÑле Ð¼Ð°Ñ 2013 года, не вклÑÑаÑÑ ÑаÑÑиÑение PHP, вмеÑÑо Ñого, ÑÑÐ¾Ð±Ñ ÑпаковÑваÑÑ ÑаÑÑиÑение PECL как php5-json
или php-pecl-jsonc
.",
+ "config-mbstring-absent": "ФаÑалÑÐ½Ð°Ñ Ð¾Ñибка: PHP должен бÑÑÑ ÑкомпилиÑован Ñ Ð¿Ð¾Ð´Ð´ÐµÑжкой [http://www.php.net/manual/en/mbstring.setup.php ÑаÑÑиÑÐµÐ½Ð¸Ñ mbstring].",
"config-xcache": "[http://xcache.lighttpd.net/ XCache] ÑÑÑановлен",
"config-apc": "[http://www.php.net/apc APC] ÑÑÑановлен",
"config-wincache": "[http://www.iis.net/download/WinCacheForPhp WinCache] ÑÑÑановлен",
diff --git a/includes/installer/i18n/sv.json b/includes/installer/i18n/sv.json
index b54c65a436..3ab0c806d5 100644
--- a/includes/installer/i18n/sv.json
+++ b/includes/installer/i18n/sv.json
@@ -61,12 +61,7 @@
"config-no-db": "Kunde inte hitta en lämplig databasdrivrutin! Du måste installera en databasdrivrutin för PHP.\nFöljande databas{{PLURAL:$2|typ |typer}} stöds: $1.\n\nI du själv kompilerat din PHP, konfigurera den med en databasklient aktiverad genom att t.ex. använda ./configure --with-mysqli
.\nOm du installerade PHP från ett Debian- eller Ubuntupaket måste du även installera, t.ex. php5-mysql
-paketet.",
"config-outdated-sqlite": "'''Varning:''' du har SQLite $1, vilket är lägre än minimikravet version $2. SQLite kommer inte att vara tillgänglig.",
"config-no-fts3": "'''Varning:''' SQLite kompileras utan [//sqlite.org/fts3.html FTS3-modulen], sökfunktioner kommer att vara otillgängliga på denna backend.",
- "config-register-globals-error": "Fel: PHP-alternativet [http://php.net/register_globals register_globals]
är aktiverad.\nDen måste vara inaktiverad för att fortsätta med installationen. \nSe [https://www.mediawiki.org/wiki/register_globals https://www.mediawiki.org/wiki/register_globals] för hjälp om hur man gör så.",
- "config-magic-quotes-gpc": "Kritiskt: [http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-sybase magic_quotes_gpc är aktiv! \nDetta alternativ korrumperar inmatad data oförutsägbart.\nDu kan inte installera eller använda MediaWiki om detta alternativ är aktiverat.",
- "config-magic-quotes-runtime": "'''Kritiskt: [http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-runtime magic_quotes_runtime] är aktiv!'''\nDetta alternativ korrumperar inmatad data oförutsägbart.\nDu kan inte installera eller använda MediaWiki om detta alternativ är aktiverat.",
- "config-magic-quotes-sybase": "'''Kritiskt: [http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-sybase magic_quotes_sybase] är aktiv!'''\nDetta alternativ korrumperar inmatad data oförutsägbart.\nDu kan inte installera eller använda MediaWiki om detta alternativ är aktiverat.",
"config-mbstring": "'''Kritiskt: [http://www.php.net/manual/en/ref.mbstring.php#mbstring.overload mbstring.func_overload] är aktiv!'''\nDetta alternativ orsakar fel och kan korrumpera data oförutsägbart.\nDu kan inte installera eller använda MediaWiki om detta alternativ är aktiverat.",
- "config-safe-mode": "''' Varning:''' PHP:s [http://www.php.net/features.safe-mode felsäkra läge] är aktivt.\nDet kan orsaka problem, särskilt om du använder filuppladdningar och math
-stöd.",
"config-xml-bad": "PHP:s XML-modul saknas.\nMediaWiki kräver funktioner i denna modul och kommer inte att fungera i den här konfigurationen.\nDu kan behöva installera RPM-paketet för php-xml.",
"config-pcre-old": "'''Kritiskt:''' PCRE $1 eller senare krävs.\nDin PHP-binär är länkad till PCRE $2.\n[https://www.mediawiki.org/wiki/Manual:Errors_and_symptoms/PCRE Mer information].",
"config-pcre-no-utf8": "'''Kritiskt:''' PHP:s PCRE-modul verkar vara kompilerat utan PCRE_UTF8-stöd.\nMediaWiki kräver stöd för UTF-8 för att fungera korrekt.",
@@ -75,10 +70,10 @@
"config-ctype": "'''Kritiskt:''' PHP måste kompileras med stöd för [http://www.php.net/manual/en/ctype.installation.php Ctype-tillägget].",
"config-iconv": "Kritiskt: PHP måste kompileras med stöd för [http://www.php.net/manual/en/iconv.installation.php iconv-tillägget].",
"config-json": "'''Varning:''' PHP kompilerades utan JSON-stöd.\nDu måste antingen installera PHP JSON-tillägget eller [http://pecl.php.net/package/jsonc PECL jsonc]-tillägget före installationen av MediaWiki.\n* PHP-tillägget är inkluderat i Red Hat Enterprise Linux (CentOS) 5 och 6, men måste aktiveras i /etc/php.ini
eller /etc/php.d/json.ini
.\n* Vissa Linux-distributioner släppta efter maj 2013 har utelämnat PHP-tillägget och har istället inkluderat PECL-tillägget som php5-json
eller php-pecl-jsonc
.",
+ "config-mbstring-absent": "'''Kritiskt:''' PHP måste kompileras med stöd för tillägget [http://www.php.net/manual/en/mbstring.setup.php mbstring mbstring].",
"config-xcache": "[http://xcache.lighttpd.net/ XCache] är installerat",
"config-apc": "[http://www.php.net/apc APC] är installerat",
"config-wincache": "[http://www.iis.net/download/WinCacheForPhp WinCache] är installerat",
- "config-no-cache": "'''Varning:''' Kunde inte hitta [http://www.php.net/apc APC], [http://xcache.lighttpd.net/ XCache] eller [http://www.iis.net/download/WinCacheForPhp WinCache].\nCachelagring av objekt är inte aktiverat.",
"config-no-cache-apcu": "'''Varning:''' Kunde inte hitta [http://www.php.net/apcu APCu], [http://xcache.lighttpd.net/ XCache] eller [http://www.iis.net/download/WinCacheForPhp WinCache].\nCachelagring av objekt är inte aktiverat.",
"config-mod-security": "'''Varning:''' Din webbserver har [http://modsecurity.org/ mod_security] aktiverat. Om felaktigt konfigurerat kan den skapa problem för MediaWiki eller annan programvara som tillåter användaren att posta godtyckligt innehåll.\nTitta på [http://modsecurity.org/documentation/ mod_security-dokumentationen] eller kontakta din värd om du påträffar slumpmässiga fel.",
"config-diff3-bad": "GNU diff3 hittades inte.",
@@ -199,7 +194,7 @@
"config-ns-site-name": "Samma som wikinamnet: $1",
"config-ns-other": "Annan (specificera)",
"config-ns-other-default": "MinWiki",
- "config-project-namespace-help": "Per Wikipedias exempel håller många wikis sina policy-sidor separata från innehållssidorna i en \"'''projektnamnrymd'''\".\nAlla sidtitlar i denna namnrymd startar med ett visst prefix vilket du specificerar här.\nVanligtvis kan detta namn härledas från namnet på wikin, men den får inte innehålla interpunktionstecken som exempelvis \"#\" eller \":\".",
+ "config-project-namespace-help": "Per Wikipedias exempel håller många wikis sina policy-sidor separata från innehållssidorna i en '''projektnamnrymd'''.\nAlla sidtitlar i denna namnrymd startar med ett visst prefix vilket du specificerar här.\nVanligtvis kan detta namn härledas från namnet på wikin, men den får inte innehålla interpunktionstecken som exempelvis \"#\" eller \":\".",
"config-ns-invalid": "Den angivna namnrymden \"$1 \" är ogiltig.\nAnge en annan namnrymd för projektet.",
"config-ns-conflict": "Den angivna namnrymden \"$1 \" står i konflikt med en standardnamnrymd för MediaWiki.\nAnge en annan namnrymd för projektet.",
"config-admin-box": "Administratörskonto",
@@ -320,12 +315,12 @@
"config-install-mainpage": "Skapa huvudsida med standardinnehåll",
"config-install-extension-tables": "Skapar tabeller för aktiverade tillägg",
"config-install-mainpage-failed": "Kunde inte infoga huvudsidan: $1",
- "config-install-done": "'''Grattis!'''\nDu har installerat MediaWiki.\n\nInstallationsprogrammet har genererat filen LocalSettings.php
.\nDet innehåller alla dina konfigurationer.\n\nDu kommer att behöva ladda ner den och placera den i roten för din wiki-installation (samma katalog som index.php). Nedladdningen borde ha startats automatiskt.\n\nOm ingen nedladdning erbjöds, eller om du har avbrutit det kan du starta om nedladdningen genom att klicka på länken nedan:\n\n$3\n\n'''OBS''': Om du inte gör detta nu, kommer denna genererade konfigurationsfil inte vara tillgänglig för dig senare om du avslutar installationen utan att ladda ned den.\n\nNär det är klart, kan du '''[$2 gå in på din wiki]'''.",
+ "config-install-done": "Grattis! \nDu har installerat MediaWiki.\n\nInstallationsprogrammet har genererat filen LocalSettings.php
.\nDet innehåller alla dina konfigurationer.\n\nDu kommer att behöva ladda ner den och placera den i roten för din wiki-installation (samma katalog som index.php). Nedladdningen borde ha startats automatiskt.\n\nOm ingen nedladdning erbjöds, eller om du har avbrutit det kan du starta om nedladdningen genom att klicka på länken nedan:\n\n$3\n\nOBS : Om du inte gör detta nu, kommer denna genererade konfigurationsfil inte vara tillgänglig för dig senare om du avslutar installationen utan att ladda ned den.\n\nNär det är klart, kan du [$2 gå in på din wiki] ",
"config-download-localsettings": "Ladda ner LocalSettings.php
",
"config-help": "hjälp",
"config-help-tooltip": "klicka för att expandera",
"config-nofile": "Filen \"$1\" kunde inte hittas. Har den raderats?",
"config-extension-link": "Visste du att din wiki stödjer [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Extensions tillägg]?\n\nDu kan bläddra [//www.mediawiki.org/wiki/Special:MyLanguage/Category:Extensions_by_category tillägg efter kategori].",
- "mainpagetext": "'''MediaWiki har installerats utan problem.'''",
+ "mainpagetext": "MediaWiki har installerats utan problem. ",
"mainpagedocfooter": "Information om hur wiki-programvaran används finns i [//meta.wikimedia.org/wiki/Help:Contents användarguiden].\n\n== Att komma igång ==\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Lista över konfigurationsinställningar]\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ MediaWiki FAQ]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce E-postlista för nya versioner av MediaWiki]\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Lokalisera MediaWiki för ditt språk]\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Läs om hur du bekämpar spam på din wiki]"
}
diff --git a/includes/installer/i18n/uk.json b/includes/installer/i18n/uk.json
index 07939189e9..991e7c3a2e 100644
--- a/includes/installer/i18n/uk.json
+++ b/includes/installer/i18n/uk.json
@@ -73,6 +73,7 @@
"config-ctype": "'''Ðомилка''': PHP Ð¼Ð°Ñ Ð±ÑÑи зÑбÑаним з пÑдÑÑÐ¸Ð¼ÐºÐ¾Ñ [http://www.php.net/manual/en/ctype.installation.php ÑозÑиÑÐµÐ½Ð½Ñ Ctype].",
"config-iconv": "'''ФаÑалÑна помилка''': PHP Ð¼Ð°Ñ Ð±ÑÑи зÑбÑаним з пÑдÑÑÐ¸Ð¼ÐºÐ¾Ñ [http://www.php.net/manual/en/iconv.installation.php ÑозÑиÑÐµÐ½Ð½Ñ iconv].",
"config-json": "'''Fatal:''' PHP бÑв ÑкомпÑлÑований без пÑдÑÑимки JSON.\nÐам поÑÑÑбно вÑÑановиÑи або ÑозÑиÑÐµÐ½Ð½Ñ PHP JSON або ÑозÑиÑеннÑ[http://pecl.php.net/package/jsonc PECL jsonc] пеÑед вÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ ÐедÑавÑкÑ.\n* РозÑиÑÐµÐ½Ð½Ñ PHP вклÑÑено Ñ Red Hat Enterprise Linux (CentOS) 5 Ñа 6, Ñ
оÑа Ð¼Ð°Ñ Ð±ÑÑи доÑÑÑпним Ñ /etc/php.ini
або /etc/php.d/json.ini
.\n* ÐеÑÐºÑ Ð´Ð¸ÑÑÑибÑÑиви ÐÑнÑкÑа, випÑÑÐµÐ½Ñ Ð¿ÑÑÐ»Ñ ÑÑÐ°Ð²Ð½Ñ 2013, пÑопÑÑÑили ÑозÑиÑÐµÐ½Ð½Ñ PHP, наÑомÑÑÑÑ ÑпакÑвали ÑозÑиÑÐµÐ½Ð½Ñ PECL Ñк php5-json
або php-pecl-jsonc
.",
+ "config-mbstring-absent": "ФаÑалÑна помилка: PHP Ð¼Ð°Ñ Ð±ÑÑи ÑкомпÑлÑовано з пÑдÑÑÐ¸Ð¼ÐºÐ¾Ñ [http://www.php.net/manual/en/mbstring.setup.php ÑозÑиÑÐµÐ½Ð½Ñ mbstring].",
"config-xcache": "[http://xcache.lighttpd.net/ XCache] вÑÑановлено",
"config-apc": "[http://www.php.net/apc APC] вÑÑановлено",
"config-wincache": "[http://www.iis.net/download/WinCacheForPhp WinCache] вÑÑановлено",
@@ -205,7 +206,7 @@
"config-admin-password-confirm": "ÐаÑÐ¾Ð»Ñ Ñе Ñаз:",
"config-admin-help": "ÐведÑÑÑ Ð±Ð°Ð¶Ð°Ð½Ðµ Ñм'Ñ ÐºÐ¾ÑиÑÑÑваÑа ÑÑÑ, напÑиклад \"Ðавло ÐÐÐ\".\nЦе Ñм'Ñ Ð²Ð¸ бÑдеÑе викоÑиÑÑовÑваÑи пÑо вÑ
Ð¾Ð´Ñ Ñ Ð²ÑкÑ.",
"config-admin-name-blank": "ÐведÑÑÑ Ñм'Ñ ÐºÐ¾ÑиÑÑÑваÑа адмÑнÑÑÑÑаÑоÑа.",
- "config-admin-name-invalid": "Ðказане Ñм'Ñ ÐºÐ¾ÑиÑÑÑваÑа \"$1 \" не пÑипÑÑÑиме.\nÐкажÑÑÑ ÑнÑе Ñм'Ñ ÐºÐ¾ÑиÑÑÑваÑа.",
+ "config-admin-name-invalid": "Ðказане Ñм'Ñ ÐºÐ¾ÑиÑÑÑваÑа «$1 » не пÑипÑÑÑиме.\nÐкажÑÑÑ ÑнÑе Ñм'Ñ ÐºÐ¾ÑиÑÑÑваÑа.",
"config-admin-password-blank": "ÐведÑÑÑ Ð¿Ð°ÑÐ¾Ð»Ñ Ð´Ð¾ облÑкового запиÑÑ Ð°Ð´Ð¼ÑнÑÑÑÑаÑоÑа.",
"config-admin-password-mismatch": "Ðва Ð²Ð²ÐµÐ´ÐµÐ½Ñ Ð²Ð°Ð¼Ð¸ паÑÐ¾Ð»Ñ Ð½Ðµ збÑгаÑÑÑÑÑ.",
"config-admin-email": "ÐдÑеÑа елекÑÑÐ¾Ð½Ð½Ð¾Ñ Ð¿Ð¾ÑÑи:",
diff --git a/includes/installer/i18n/zh-hans.json b/includes/installer/i18n/zh-hans.json
index 8c6988b757..7d2926ca09 100644
--- a/includes/installer/i18n/zh-hans.json
+++ b/includes/installer/i18n/zh-hans.json
@@ -83,6 +83,7 @@
"config-ctype": "è´å½éè¯¯ï¼ PHPå¿
é¡»æ[http://www.php.net/manual/en/ctype.installation.php Ctype æ©å±]æ¥æ¯æç¼è¯ã",
"config-iconv": "è´å½éè¯¯ï¼ PHPå¿
é¡»ç¼è¯æ¯æ[http://www.php.net/manual/en/iconv.installation.php iconvæå±]ã",
"config-json": "è´å½éè¯¯ï¼ PHPç¼è¯æ²¡æé带JSONæ¯æã\nå¨å®è£
MediaWikiåï¼ä½ å¿
é¡»å®è£
PHP JSONæ©å±æè
[http://pecl.php.net/package/jsonc PECL jsonc]æ©å±ã\n* PHPæ©å±å·²å
å«å¨Red Hat Enterprise Linux (CentOS) 5å6ä¸ï¼ä½å¿
é¡»å¨/etc/php.ini
æ/etc/php.d/json.ini
ä¸å¯ç¨ã\n* é¨åå¨2013å¹´5æååè¡çLinuxåè¡ççç¥äºPHPæ©å±ï¼èå°PECLæ©å±æå
æäºphp5-json
æphp-pecl-jsonc
ã",
+ "config-mbstring-absent": "è´å½éè¯¯ï¼ PHPå¿
é¡»æ[http://www.php.net/manual/en/mbstring.setup.php mbstringæ©å±]æ¥æ¯æç¼è¯ã",
"config-xcache": "[http://xcache.lighttpd.net/ XCache]å·²å®è£
",
"config-apc": "[http://www.php.net/apc APC]å·²å®è£
",
"config-wincache": "[http://www.iis.net/download/WinCacheForPhp WinCache]å·²å®è£
",
@@ -219,7 +220,7 @@
"config-admin-password-blank": "è¾å
¥ç®¡çåå¸å·çå¯ç ã",
"config-admin-password-mismatch": "两次è¾å
¥çå¯ç 并ä¸ç¸åã",
"config-admin-email": "çµåé®ä»¶å°åï¼",
- "config-admin-email-help": "å¨è¿éè¾å
¥çµåé®ä»¶å°åå¯ä»¥å
è®¸ä½ æ¶å°æ¥èªæ¬wikiå
¶ä»ç¨æ·ççµåé®ä»¶ï¼éç½®ä½ çå¯ç åæ¶å°ä½ ççè§å表ä¸ç页é¢çæ´æ¹éç¥ãä½ å¯ä»¥å°è¯¥å段ç空ã",
+ "config-admin-email-help": "å¨è¿éè¾å
¥çµåé®ä»¶å°åå¯ä»¥å
许æ¨æ¶å°æ¥èªæ¬wikiå
¶ä»ç¨æ·ççµåé®ä»¶ï¼éç½®æ¨çå¯ç åæ¶å°æ¨ççè§å表ä¸ç页é¢çæ´æ¹éç¥ãæ¨å¯ä»¥å°è¯¥å段ç空ã",
"config-admin-error-user": "å¨å建ç¨æ·å为â$1 âç管çåå¸å·æ¶åçå
é¨é误ã",
"config-admin-error-password": "å¨ä¸ºç®¡çåâ$1 â设置å¯ç æ¶åçå
é¨é误ï¼$2 ",
"config-admin-error-bademail": "æ¨è¾å
¥äºæ æççµåé®ä»¶å°åã",
@@ -234,7 +235,7 @@
"config-profile-no-anon": "éè¦æ³¨åå¸å·",
"config-profile-fishbowl": "ç¼è¾åé",
"config-profile-private": "éå
¬å¼wiki",
- "config-profile-help": "å¦ææ¨å
许尽éå¤ç人ç¼åwikiï¼ç½ç«ä¸çå
容ä¼æ´å 丰å¯ãå¨MediaWikiä¸ï¼æ¨å¯ä»¥è½»æ¾å°å®¡æ¥æè¿æ´æ¹ï¼å¹¶è½»æåéææ°ææç ´åè
é æçæ害ã\n\nç¶èï¼è®¸å¤äººè§å¾è®©MediaWikiåå¨å¤ç§è§è²å°æ´å 好ç¨ï¼åæ¶ï¼è¦è¯´æææ人é½æ¿ä»¥wikiçæ¹å¼ä½è´¡ç®å¹¶éä¸ä»¶æäºãå æ¤ï¼æ¨å¯ä»¥æ以ä¸éæ©ï¼\n\n'''{{int:config-profile-wiki}}'''å
许å
æ¬æªç»å½ç¨æ·å¨å
çææ人ç¼è¾ã'''{{int:config-profile-no-anon}}'''çwikiéè¦é¢å¤ç注åæµç¨ï¼è¿æå¯è½ä¼é»ç¢éæè´¡ç®è
ã\n\n'''{{int:config-profile-fishbowl}}'''模å¼åªå
许è·æ¹åçç¨æ·ç¼è¾ï¼ä½å¯¹å
¬ä¼å¼æ¾é¡µé¢æµè§ï¼å
æ¬åå²è®°å½ï¼ã'''{{int:config-profile-private}}'''ååªå
许è·æ¹åçç¨æ·æµè§ãç¼è¾é¡µé¢ã\n\nå®è£
å®æåï¼æ¨è¿å¯ä»¥å¯¹ç¨æ·æéè¿è¡æ´å¤ãæ´å¤æçé
ç½®ï¼åè§[//www.mediawiki.org/wiki/Special:MyLanguage/Manual:User_rights ç¸å
³ç使ç¨æå]ã",
+ "config-profile-help": "å¦ææ¨å
许尽éå¤ç人ç¼åwikiï¼ç½ç«ä¸çå
容ä¼æ´å 丰å¯ãå¨MediaWikiä¸ï¼æ¨å¯ä»¥è½»æ¾å°å®¡æ¥æè¿æ´æ¹ï¼å¹¶è½»æåéææ°ææç ´åè
é æçæ害ã\n\nç¶èï¼è®¸å¤äººè§å¾è®©MediaWikiåå¨å¤ç§è§è²å°æ´å 好ç¨ï¼åæ¶ï¼è¦è¯´æææ人é½æ¿ä»¥wikiçæ¹å¼ä½è´¡ç®å¹¶éä¸ä»¶æäºãå æ¤ï¼æ¨å¯ä»¥æ以ä¸éæ©ï¼\n\n{{int:config-profile-wiki}} 模å¼å
许å
æ¬æªç»å½ç¨æ·å¨å
çææ人ç¼è¾ã{{int:config-profile-no-anon}} çwikiéè¦é¢å¤ç注åæµç¨ï¼è¿æå¯è½ä¼é»ç¢éæè´¡ç®è
ã\n\n{{int:config-profile-fishbowl}} æ¹æ¡åªå
许è·æ¹åçç¨æ·ç¼è¾ï¼ä½å¯¹å
¬ä¼å¼æ¾é¡µé¢æµè§ï¼å
æ¬åå²è®°å½ï¼ã{{int:config-profile-private}} ååªå
许è·æ¹åçç¨æ·æµè§ãç¼è¾é¡µé¢ã\n\nå®è£
å®æåï¼æ¨è¿å¯ä»¥å¯¹ç¨æ·æéè¿è¡æ´å¤ãæ´å¤æçé
ç½®ï¼åè§[//www.mediawiki.org/wiki/Special:MyLanguage/Manual:User_rights ç¸å
³ç使ç¨æå]ã",
"config-license": "çæå许å¯è¯ï¼",
"config-license-none": "页èæ 许å¯è¯",
"config-license-cc-by-sa": "ç¥è¯å
±äº«âç½²å-ç¸åæ¹å¼å
±äº«â",
diff --git a/includes/jobqueue/Job.php b/includes/jobqueue/Job.php
index 9ccf6f8465..bbd0ddb5f8 100644
--- a/includes/jobqueue/Job.php
+++ b/includes/jobqueue/Job.php
@@ -92,6 +92,10 @@ abstract class Job implements IJobSpecification {
// expensive jobs may set this to true
$this->removeDuplicates = false;
+
+ if ( !isset( $this->params['requestId'] ) ) {
+ $this->params['requestId'] = WebRequest::getRequestId();
+ }
}
/**
@@ -152,6 +156,18 @@ abstract class Job implements IJobSpecification {
: null;
}
+ /**
+ * @return string|null Id of the request that created this job. Follows
+ * jobs recursively, allowing to track the id of the request that started a
+ * job when jobs insert jobs which insert other jobs.
+ * @since 1.27
+ */
+ public function getRequestId() {
+ return isset( $this->params['requestId'] )
+ ? $this->params['requestId']
+ : null;
+ }
+
/**
* @return int|null UNIX timestamp of when the job was runnable, or null
* @since 1.26
@@ -214,6 +230,8 @@ abstract class Job implements IJobSpecification {
unset( $info['params']['rootJobTimestamp'] );
// Likewise for jobs with different delay times
unset( $info['params']['jobReleaseTimestamp'] );
+ // Identical jobs from different requests should count as duplicates
+ unset( $info['params']['requestId'] );
// Queues pack and hash this array, so normalize the order
ksort( $info['params'] );
}
diff --git a/includes/jobqueue/JobQueue.php b/includes/jobqueue/JobQueue.php
index 5b7193856d..d64be3c409 100644
--- a/includes/jobqueue/JobQueue.php
+++ b/includes/jobqueue/JobQueue.php
@@ -31,18 +31,16 @@
abstract class JobQueue {
/** @var string Wiki ID */
protected $wiki;
-
/** @var string Job type */
protected $type;
-
/** @var string Job priority for pop() */
protected $order;
-
/** @var int Time to live in seconds */
protected $claimTTL;
-
/** @var int Maximum number of times to try a job */
protected $maxTries;
+ /** @var string|bool Read only rationale (or false if r/w) */
+ protected $readOnlyReason;
/** @var BagOStuff */
protected $dupCache;
@@ -74,6 +72,9 @@ abstract class JobQueue {
$this->aggr = isset( $params['aggregator'] )
? $params['aggregator']
: new JobQueueAggregatorNull( [] );
+ $this->readOnlyReason = isset( $params['readOnlyReason'] )
+ ? $params['readOnlyReason']
+ : false;
}
/**
@@ -96,6 +97,7 @@ abstract class JobQueue {
* but not acknowledged as completed after this many seconds. Recycling
* of jobs simply means re-inserting them into the queue. Jobs can be
* attempted up to three times before being discarded.
+ * - readOnlyReason : Set this to a string to make the queue read-only.
*
* Queue classes should throw an exception if they do not support the options given.
*
@@ -168,6 +170,14 @@ abstract class JobQueue {
return $this->supportsDelayedJobs();
}
+ /**
+ * @return string|bool Read-only rational or false if r/w
+ * @since 1.27
+ */
+ public function getReadOnlyReason() {
+ return $this->readOnlyReason;
+ }
+
/**
* Quickly check if the queue has no available (unacquired, non-delayed) jobs.
* Queue classes should use caching if they are any slower without memcached.
@@ -307,6 +317,8 @@ abstract class JobQueue {
* @throws MWException
*/
final public function batchPush( array $jobs, $flags = 0 ) {
+ $this->assertNotReadOnly();
+
if ( !count( $jobs ) ) {
return; // nothing to do
}
@@ -349,6 +361,7 @@ abstract class JobQueue {
final public function pop() {
global $wgJobClasses;
+ $this->assertNotReadOnly();
if ( $this->wiki !== wfWikiID() ) {
throw new MWException( "Cannot pop '{$this->type}' job off foreign wiki queue." );
} elseif ( !isset( $wgJobClasses[$this->type] ) ) {
@@ -392,9 +405,11 @@ abstract class JobQueue {
* @throws MWException
*/
final public function ack( Job $job ) {
+ $this->assertNotReadOnly();
if ( $job->getType() !== $this->type ) {
throw new MWException( "Got '{$job->getType()}' job; expected '{$this->type}'." );
}
+
$this->doAck( $job );
}
@@ -436,12 +451,12 @@ abstract class JobQueue {
* @return bool
*/
final public function deduplicateRootJob( IJobSpecification $job ) {
+ $this->assertNotReadOnly();
if ( $job->getType() !== $this->type ) {
throw new MWException( "Got '{$job->getType()}' job; expected '{$this->type}'." );
}
- $ok = $this->doDeduplicateRootJob( $job );
- return $ok;
+ return $this->doDeduplicateRootJob( $job );
}
/**
@@ -524,6 +539,8 @@ abstract class JobQueue {
* @return void
*/
final public function delete() {
+ $this->assertNotReadOnly();
+
$this->doDelete();
}
@@ -672,6 +689,15 @@ abstract class JobQueue {
return null; // not supported
}
+ /**
+ * @throws JobQueueReadOnlyError
+ */
+ protected function assertNotReadOnly() {
+ if ( $this->readOnlyReason !== false ) {
+ throw new JobQueueReadOnlyError( "Job queue is read-only: {$this->readOnlyReason}" );
+ }
+ }
+
/**
* Call wfIncrStats() for the queue overall and for the queue type
*
@@ -699,3 +725,7 @@ class JobQueueError extends MWException {
class JobQueueConnectionError extends JobQueueError {
}
+
+class JobQueueReadOnlyError extends JobQueueError {
+
+}
diff --git a/includes/jobqueue/JobQueueGroup.php b/includes/jobqueue/JobQueueGroup.php
index 8b6c7f08f2..2dd0615a22 100644
--- a/includes/jobqueue/JobQueueGroup.php
+++ b/includes/jobqueue/JobQueueGroup.php
@@ -36,6 +36,8 @@ class JobQueueGroup {
/** @var string Wiki ID */
protected $wiki;
+ /** @var string|bool Read only rationale (or false if r/w) */
+ protected $readOnlyReason;
/** @var array Map of (bucket => (queue => JobQueue, types => list of types) */
protected $coalescedQueues;
@@ -54,9 +56,11 @@ class JobQueueGroup {
/**
* @param string $wiki Wiki ID
+ * @param string|bool $readOnlyReason Read-only reason or false
*/
- protected function __construct( $wiki ) {
+ protected function __construct( $wiki, $readOnlyReason ) {
$this->wiki = $wiki;
+ $this->readOnlyReason = $readOnlyReason;
$this->cache = new ProcessCacheLRU( 10 );
}
@@ -67,7 +71,7 @@ class JobQueueGroup {
public static function singleton( $wiki = false ) {
$wiki = ( $wiki === false ) ? wfWikiID() : $wiki;
if ( !isset( self::$instances[$wiki] ) ) {
- self::$instances[$wiki] = new self( $wiki );
+ self::$instances[$wiki] = new self( $wiki, wfConfiguredReadOnlyReason() );
}
return self::$instances[$wiki];
@@ -98,6 +102,9 @@ class JobQueueGroup {
$conf = $conf + $wgJobTypeConf['default'];
}
$conf['aggregator'] = JobQueueAggregator::singleton();
+ if ( $this->readOnlyReason !== false ) {
+ $conf['readOnlyReason'] = $this->readOnlyReason;
+ }
return JobQueue::factory( $conf );
}
@@ -168,8 +175,13 @@ class JobQueueGroup {
*/
public static function pushLazyJobs() {
foreach ( self::$instances as $group ) {
- $group->push( $group->bufferedJobs );
- $group->bufferedJobs = [];
+ try {
+ $group->push( $group->bufferedJobs );
+ $group->bufferedJobs = [];
+ } catch ( Exception $e ) {
+ // Get in as many jobs as possible and let other post-send updates happen
+ MWExceptionHandler::logException( $e );
+ }
}
}
diff --git a/includes/jobqueue/JobQueueRedis.php b/includes/jobqueue/JobQueueRedis.php
index d4a5334324..a356e84c65 100644
--- a/includes/jobqueue/JobQueueRedis.php
+++ b/includes/jobqueue/JobQueueRedis.php
@@ -72,11 +72,6 @@ class JobQueueRedis extends JobQueue {
/** @var string Compression method to use */
protected $compression;
- const MAX_AGE_PRUNE = 604800; // integer; seconds a job can live once claimed (7 days)
-
- /** @var string Key to prefix the queue keys with (used for testing) */
- protected $key;
-
/**
* @param array $params Possible keys:
* - redisConfig : An array of parameters to RedisConnectionPool::__construct().
@@ -393,12 +388,17 @@ LUA;
static $script =
<<luaEval( $script,
[
diff --git a/includes/jobqueue/JobRunner.php b/includes/jobqueue/JobRunner.php
index 0a0a7a2b79..a2f55b9e04 100644
--- a/includes/jobqueue/JobRunner.php
+++ b/includes/jobqueue/JobRunner.php
@@ -163,6 +163,8 @@ class JobRunner implements LoggerAwareInterface {
$popTime = time();
$jType = $job->getType();
+ WebRequest::overrideRequestId( $job->getRequestId() );
+
// Back off of certain jobs for a while (for throttling and for errors)
$ttw = $this->getBackoffTimeToWait( $job );
if ( $ttw > 0 ) {
diff --git a/includes/jobqueue/jobs/AssembleUploadChunksJob.php b/includes/jobqueue/jobs/AssembleUploadChunksJob.php
index bc2f7c458a..16e35f1eab 100644
--- a/includes/jobqueue/jobs/AssembleUploadChunksJob.php
+++ b/includes/jobqueue/jobs/AssembleUploadChunksJob.php
@@ -69,7 +69,7 @@ class AssembleUploadChunksJob extends Job {
$this->params['filekey'],
[ 'result' => 'Failure', 'stage' => 'assembling', 'status' => $status ]
);
- $this->setLastError( $status->getWikiText() );
+ $this->setLastError( $status->getWikiText( false, false, 'en' ) );
return false;
}
diff --git a/includes/jobqueue/jobs/PublishStashedFileJob.php b/includes/jobqueue/jobs/PublishStashedFileJob.php
index a6d2f70f4d..d2825a8b91 100644
--- a/includes/jobqueue/jobs/PublishStashedFileJob.php
+++ b/includes/jobqueue/jobs/PublishStashedFileJob.php
@@ -92,7 +92,7 @@ class PublishStashedFileJob extends Job {
$this->params['filekey'],
[ 'result' => 'Failure', 'stage' => 'publish', 'status' => $status ]
);
- $this->setLastError( $status->getWikiText() );
+ $this->setLastError( $status->getWikiText( false, false, 'en' ) );
return false;
}
diff --git a/includes/libs/ArrayUtils.php b/includes/libs/ArrayUtils.php
index fb35801130..2156bd7f1d 100644
--- a/includes/libs/ArrayUtils.php
+++ b/includes/libs/ArrayUtils.php
@@ -28,7 +28,7 @@
class ArrayUtils {
/**
* Sort the given array in a pseudo-random order which depends only on the
- * given key and each element value. This is typically used for load
+ * given key and each element value in $array. This is typically used for load
* balancing between servers each with a local cache.
*
* Keys are preserved. The input array is modified in place.
diff --git a/includes/libs/BufferingStatsdDataFactory.php b/includes/libs/BufferingStatsdDataFactory.php
deleted file mode 100644
index 9c18b10f10..0000000000
--- a/includes/libs/BufferingStatsdDataFactory.php
+++ /dev/null
@@ -1,87 +0,0 @@
-prefix = $prefix;
- }
-
- /**
- * Normalize a metric key for StatsD
- *
- * Replace occurences of '::' with dots and any other non-alphanumeric
- * characters with underscores. Combine runs of dots or underscores.
- * Then trim leading or trailing dots or underscores.
- *
- * @param string $key
- * @since 1.26
- */
- private static function normalizeMetricKey( $key ) {
- $key = preg_replace( '/[:.]+/', '.', $key );
- $key = preg_replace( '/[^a-z0-9.]+/i', '_', $key );
- $key = trim( $key, '_.' );
- return str_replace( [ '._', '_.' ], '.', $key );
- }
-
- public function produceStatsdData(
- $key, $value = 1, $metric = StatsdDataInterface::STATSD_METRIC_COUNT
- ) {
- $entity = $this->produceStatsdDataEntity();
- if ( $key !== null ) {
- $key = self::normalizeMetricKey( "{$this->prefix}.{$key}" );
- $entity->setKey( $key );
- }
- if ( $value !== null ) {
- $entity->setValue( $value );
- }
- if ( $metric !== null ) {
- $entity->setMetric( $metric );
- }
- // Don't bother buffering a counter update with a delta of zero.
- if ( !( $metric === StatsdDataInterface::STATSD_METRIC_COUNT && !$value ) ) {
- $this->buffer[] = $entity;
- }
- return $entity;
- }
-
- /**
- * @return StatsdData[]
- */
- public function getBuffer() {
- return $this->buffer;
- }
-}
diff --git a/includes/libs/Cookie.php b/includes/libs/Cookie.php
index cc236e289c..a67b919f47 100644
--- a/includes/libs/Cookie.php
+++ b/includes/libs/Cookie.php
@@ -206,86 +206,3 @@ class Cookie {
return $this->isSessionKey || $this->expires > time();
}
}
-
-class CookieJar {
- private $cookie = [];
-
- /**
- * Set a cookie in the cookie jar. Make sure only one cookie per-name exists.
- * @see Cookie::set()
- * @param string $name
- * @param string $value
- * @param array $attr
- */
- public function setCookie( $name, $value, $attr ) {
- /* cookies: case insensitive, so this should work.
- * We'll still send the cookies back in the same case we got them, though.
- */
- $index = strtoupper( $name );
-
- if ( isset( $this->cookie[$index] ) ) {
- $this->cookie[$index]->set( $value, $attr );
- } else {
- $this->cookie[$index] = new Cookie( $name, $value, $attr );
- }
- }
-
- /**
- * @see Cookie::serializeToHttpRequest
- * @param string $path
- * @param string $domain
- * @return string
- */
- public function serializeToHttpRequest( $path, $domain ) {
- $cookies = [];
-
- foreach ( $this->cookie as $c ) {
- $serialized = $c->serializeToHttpRequest( $path, $domain );
-
- if ( $serialized ) {
- $cookies[] = $serialized;
- }
- }
-
- return implode( '; ', $cookies );
- }
-
- /**
- * Parse the content of an Set-Cookie HTTP Response header.
- *
- * @param string $cookie
- * @param string $domain Cookie's domain
- * @return null
- */
- public function parseCookieResponseHeader( $cookie, $domain ) {
- $len = strlen( 'Set-Cookie:' );
-
- if ( substr_compare( 'Set-Cookie:', $cookie, 0, $len, true ) === 0 ) {
- $cookie = substr( $cookie, $len );
- }
-
- $bit = array_map( 'trim', explode( ';', $cookie ) );
-
- if ( count( $bit ) >= 1 ) {
- list( $name, $value ) = explode( '=', array_shift( $bit ), 2 );
- $attr = [];
-
- foreach ( $bit as $piece ) {
- $parts = explode( '=', $piece );
- if ( count( $parts ) > 1 ) {
- $attr[strtolower( $parts[0] )] = $parts[1];
- } else {
- $attr[strtolower( $parts[0] )] = true;
- }
- }
-
- if ( !isset( $attr['domain'] ) ) {
- $attr['domain'] = $domain;
- } elseif ( !Cookie::validateCookieDomain( $attr['domain'], $domain ) ) {
- return null;
- }
-
- $this->setCookie( $name, $value, $attr );
- }
- }
-}
diff --git a/includes/libs/CookieJar.php b/includes/libs/CookieJar.php
new file mode 100644
index 0000000000..910a7ca82d
--- /dev/null
+++ b/includes/libs/CookieJar.php
@@ -0,0 +1,103 @@
+cookie[$index] ) ) {
+ $this->cookie[$index]->set( $value, $attr );
+ } else {
+ $this->cookie[$index] = new Cookie( $name, $value, $attr );
+ }
+ }
+
+ /**
+ * @see Cookie::serializeToHttpRequest
+ * @param string $path
+ * @param string $domain
+ * @return string
+ */
+ public function serializeToHttpRequest( $path, $domain ) {
+ $cookies = [];
+
+ foreach ( $this->cookie as $c ) {
+ $serialized = $c->serializeToHttpRequest( $path, $domain );
+
+ if ( $serialized ) {
+ $cookies[] = $serialized;
+ }
+ }
+
+ return implode( '; ', $cookies );
+ }
+
+ /**
+ * Parse the content of an Set-Cookie HTTP Response header.
+ *
+ * @param string $cookie
+ * @param string $domain Cookie's domain
+ * @return null
+ */
+ public function parseCookieResponseHeader( $cookie, $domain ) {
+ $len = strlen( 'Set-Cookie:' );
+
+ if ( substr_compare( 'Set-Cookie:', $cookie, 0, $len, true ) === 0 ) {
+ $cookie = substr( $cookie, $len );
+ }
+
+ $bit = array_map( 'trim', explode( ';', $cookie ) );
+
+ if ( count( $bit ) >= 1 ) {
+ list( $name, $value ) = explode( '=', array_shift( $bit ), 2 );
+ $attr = [];
+
+ foreach ( $bit as $piece ) {
+ $parts = explode( '=', $piece );
+ if ( count( $parts ) > 1 ) {
+ $attr[strtolower( $parts[0] )] = $parts[1];
+ } else {
+ $attr[strtolower( $parts[0] )] = true;
+ }
+ }
+
+ if ( !isset( $attr['domain'] ) ) {
+ $attr['domain'] = $domain;
+ } elseif ( !Cookie::validateCookieDomain( $attr['domain'], $domain ) ) {
+ return null;
+ }
+
+ $this->setCookie( $name, $value, $attr );
+ }
+ }
+}
diff --git a/includes/libs/StatusValue.php b/includes/libs/StatusValue.php
index b4206a21fc..1d23f9d368 100644
--- a/includes/libs/StatusValue.php
+++ b/includes/libs/StatusValue.php
@@ -58,7 +58,7 @@ class StatusValue {
* Factory function for fatal errors
*
* @param string|MessageSpecifier $message Message key or object
- * @return Status
+ * @return StatusValue
*/
public static function newFatal( $message /*, parameters...*/ ) {
$params = func_get_args();
@@ -71,7 +71,7 @@ class StatusValue {
* Factory function for good results
*
* @param mixed $value
- * @return Status
+ * @return StatusValue
*/
public static function newGood( $value = null ) {
$result = new static();
@@ -197,7 +197,9 @@ class StatusValue {
/**
* Returns a list of status messages of the given type
*
- * Each entry is a map of (message:string or MessageSpecifier,params:array))
+ * Each entry is a map of:
+ * - message: string message key or MessageSpecifier
+ * - params: array list of parameters
*
* @param string $type
* @return array
diff --git a/includes/libs/StringUtils.php b/includes/libs/StringUtils.php
index d2226b6daa..6b10c0998b 100644
--- a/includes/libs/StringUtils.php
+++ b/includes/libs/StringUtils.php
@@ -30,83 +30,28 @@ class StringUtils {
* The function check for invalid byte sequences, overlong encoding but
* not for different normalisations.
*
- * This relies internally on the mbstring function mb_check_encoding()
- * hardcoded to check against UTF-8. Whenever the function is not available
- * we fallback to a pure PHP implementation. Setting $disableMbstring to
- * true will skip the use of mb_check_encoding, this is mostly intended for
- * unit testing our internal implementation.
- *
* @note In MediaWiki 1.21, this function did not provide proper UTF-8 validation.
* In particular, the pure PHP code path did not in fact check for overlong forms.
* Beware of this when backporting code to that version of MediaWiki.
*
* @since 1.21
* @param string $value String to check
- * @param bool $disableMbstring Whether to use the pure PHP
- * implementation instead of trying mb_check_encoding. Intended for unit
- * testing. Default: false
* @return bool Whether the given $value is a valid UTF-8 encoded string
*/
- static function isUtf8( $value, $disableMbstring = false ) {
+ static function isUtf8( $value ) {
$value = (string)$value;
- // If the mbstring extension is loaded, use it. However, before PHP 5.4, values above
- // U+10FFFF are incorrectly allowed, so we have to check for them separately.
- if ( !$disableMbstring && function_exists( 'mb_check_encoding' ) ) {
- static $newPHP;
- if ( $newPHP === null ) {
- $newPHP = !mb_check_encoding( "\xf4\x90\x80\x80", 'UTF-8' );
- }
-
- return mb_check_encoding( $value, 'UTF-8' ) &&
- ( $newPHP || preg_match( "/\xf4[\x90-\xbf]|[\xf5-\xff]/S", $value ) === 0 );
- }
-
- if ( preg_match( "/[\x80-\xff]/S", $value ) === 0 ) {
- // String contains only ASCII characters, has to be valid
- return true;
+ // HHVM 3.4 and older come with an outdated version of libmbfl that
+ // incorrectly allows values above U+10FFFF, so we have to check
+ // for them separately. (This issue also exists in PHP 5.3 and
+ // older, which are no longer supported.)
+ static $newPHP;
+ if ( $newPHP === null ) {
+ $newPHP = !mb_check_encoding( "\xf4\x90\x80\x80", 'UTF-8' );
}
- // PCRE implements repetition using recursion; to avoid a stack overflow (and segfault)
- // for large input, we check for invalid sequences (<= 5 bytes) rather than valid
- // sequences, which can be as long as the input string is. Multiple short regexes are
- // used rather than a single long regex for performance.
- static $regexes;
- if ( $regexes === null ) {
- $cont = "[\x80-\xbf]";
- $after = "(?!$cont)"; // "(?:[^\x80-\xbf]|$)" would work here
- $regexes = [
- // Continuation byte at the start
- "/^$cont/",
-
- // ASCII byte followed by a continuation byte
- "/[\\x00-\x7f]$cont/S",
-
- // Illegal byte
- "/[\xc0\xc1\xf5-\xff]/S",
-
- // Invalid 2-byte sequence, or valid one then an extra continuation byte
- "/[\xc2-\xdf](?!$cont$after)/S",
-
- // Invalid 3-byte sequence, or valid one then an extra continuation byte
- "/\xe0(?![\xa0-\xbf]$cont$after)/",
- "/[\xe1-\xec\xee\xef](?!$cont{2}$after)/S",
- "/\xed(?![\x80-\x9f]$cont$after)/",
-
- // Invalid 4-byte sequence, or valid one then an extra continuation byte
- "/\xf0(?![\x90-\xbf]$cont{2}$after)/",
- "/[\xf1-\xf3](?!$cont{3}$after)/S",
- "/\xf4(?![\x80-\x8f]$cont{2}$after)/",
- ];
- }
-
- foreach ( $regexes as $regex ) {
- if ( preg_match( $regex, $value ) !== 0 ) {
- return false;
- }
- }
-
- return true;
+ return mb_check_encoding( $value, 'UTF-8' ) &&
+ ( $newPHP || preg_match( "/\xf4[\x90-\xbf]|[\xf5-\xff]/S", $value ) === 0 );
}
/**
@@ -288,6 +233,31 @@ class StringUtils {
return $items;
}
+ /**
+ * More or less "markup-safe" str_replace()
+ * Ignores any instances of the separator inside `<...>`
+ * @param string $search
+ * @param string $replace
+ * @param string $text
+ * @return string
+ */
+ static function replaceMarkup( $search, $replace, $text ) {
+ $placeholder = "\x00";
+
+ // Remove placeholder instances
+ $text = str_replace( $placeholder, '', $text );
+
+ // Replace instances of the separator inside HTML-like tags with the placeholder
+ $replacer = new DoubleReplacer( $search, $placeholder );
+ $cleaned = StringUtils::delimiterReplaceCallback( '<', '>', $replacer->cb(), $text );
+
+ // Explode, then put the replaced separators back in
+ $cleaned = str_replace( $search, $replace, $cleaned );
+ $text = str_replace( $placeholder, $search, $cleaned );
+
+ return $text;
+ }
+
/**
* Escape a string to make it suitable for inclusion in a preg_replace()
* replacement parameter.
diff --git a/includes/libs/eventrelayer/EventRelayer.php b/includes/libs/eventrelayer/EventRelayer.php
index c385c38dfb..b0cd413699 100644
--- a/includes/libs/eventrelayer/EventRelayer.php
+++ b/includes/libs/eventrelayer/EventRelayer.php
@@ -18,15 +18,22 @@
* @file
* @author Aaron Schulz
*/
+use Psr\Log\LoggerInterface;
+use Psr\Log\LoggerAwareInterface;
+use Psr\Log\NullLogger;
/**
* Base class for reliable event relays
*/
-abstract class EventRelayer {
+abstract class EventRelayer implements LoggerAwareInterface {
+ /** @var LoggerInterface */
+ protected $logger;
+
/**
* @param array $params
*/
public function __construct( array $params ) {
+ $this->logger = new NullLogger();
}
/**
@@ -47,6 +54,10 @@ abstract class EventRelayer {
return $this->doNotify( $channel, $events );
}
+ public function setLogger( LoggerInterface $logger ) {
+ $this->logger = $logger;
+ }
+
/**
* @param string $channel
* @param array $events List of event data maps
@@ -55,11 +66,3 @@ abstract class EventRelayer {
abstract protected function doNotify( $channel, array $events );
}
-/**
- * No-op class for publishing messages into a PubSub system
- */
-class EventRelayerNull extends EventRelayer {
- public function doNotify( $channel, array $events ) {
- return true;
- }
-}
diff --git a/includes/libs/eventrelayer/EventRelayerKafka.php b/includes/libs/eventrelayer/EventRelayerKafka.php
new file mode 100644
index 0000000000..999eb43935
--- /dev/null
+++ b/includes/libs/eventrelayer/EventRelayerKafka.php
@@ -0,0 +1,62 @@
+ [ 'class' => 'EventRelayerKafka', 'KafkaEventHost' => 'localhost:9092' ],
+ */
+class EventRelayerKafka extends EventRelayer {
+ /**
+ * Configuration.
+ *
+ * @var Config
+ */
+ protected $config;
+
+ /**
+ * Kafka producer.
+ *
+ * @var Produce
+ */
+ protected $producer;
+
+ /**
+ * Create Kafka producer.
+ *
+ * @param array $params
+ */
+ public function __construct( array $params ) {
+ parent::__construct( $params );
+
+ $this->config = new HashConfig( $params );
+ if ( !$this->config->has( 'KafkaEventHost' ) ) {
+ throw new InvalidArgumentException( "KafkaEventHost must be configured" );
+ }
+ }
+
+ /**
+ * Get the producer object from kafka-php.
+ * @return Produce
+ */
+ protected function getKafkaProducer() {
+ if ( !$this->producer ) {
+ $this->producer = Produce::getInstance(
+ null, null, $this->config->get( 'KafkaEventHost' ) );
+ }
+ return $this->producer;
+ }
+
+ protected function doNotify( $channel, array $events ) {
+ $jsonEvents = array_map( 'json_encode', $events );
+ try {
+ $producer = $this->getKafkaProducer();
+ $producer->setMessages( $channel, 0, $jsonEvents );
+ $producer->send();
+ } catch ( \Kafka\Exception $e ) {
+ $this->logger->warning( "Sending events failed: $e" );
+ return false;
+ }
+ return true;
+ }
+}
diff --git a/includes/libs/eventrelayer/EventRelayerMCRD.php b/includes/libs/eventrelayer/EventRelayerMCRD.php
deleted file mode 100644
index 4bcdf123ab..0000000000
--- a/includes/libs/eventrelayer/EventRelayerMCRD.php
+++ /dev/null
@@ -1,66 +0,0 @@
-baseUrl = $params['mcrdConfig']['url'];
-
- $httpConfig = isset( $params['httpConfig'] ) ? $params['httpConfig'] : [];
- if ( !isset( $httpConfig['connTimeout'] ) ) {
- $httpConfig['connTimeout'] = 1;
- }
- if ( !isset( $httpConfig['reqTimeout'] ) ) {
- $httpConfig['reqTimeout'] = .25;
- }
-
- $this->http = new MultiHttpClient( $httpConfig );
- }
-
- protected function doNotify( $channel, array $events ) {
- if ( !count( $events ) ) {
- return true;
- }
-
- $response = $this->http->run( [
- 'url' => "{$this->baseUrl}/relayer/api/v1.0/" . rawurlencode( $channel ),
- 'method' => 'POST',
- 'body' => json_encode( [ 'events' => $events ] ),
- 'headers' => [ 'content-type' => 'application/json' ]
- ] );
-
- return $response['code'] == 201;
- }
-}
diff --git a/includes/libs/eventrelayer/EventRelayerNull.php b/includes/libs/eventrelayer/EventRelayerNull.php
new file mode 100644
index 0000000000..b8ec55fc5d
--- /dev/null
+++ b/includes/libs/eventrelayer/EventRelayerNull.php
@@ -0,0 +1,29 @@
+makeKey()
+ * - asyncHandler: Callable to use for scheduling tasks after the web request ends.
+ * In CLI mode, it should run the task immediately.
+ * - reportDupes: Whether to emit warning log messages for all keys that were
+ * requested more than once (requires an asyncHandler).
+ * @param array $params
+ */
public function __construct( array $params = [] ) {
if ( isset( $params['logger'] ) ) {
$this->setLogger( $params['logger'] );
@@ -81,6 +103,14 @@ abstract class BagOStuff implements IExpiringStore, LoggerAwareInterface {
if ( isset( $params['keyspace'] ) ) {
$this->keyspace = $params['keyspace'];
}
+
+ $this->asyncHandler = isset( $params['asyncHandler'] )
+ ? $params['asyncHandler']
+ : null;
+
+ if ( !empty( $params['reportDupes'] ) && is_callable( $this->asyncHandler ) ) {
+ $this->reportDupes = true;
+ }
}
/**
@@ -144,9 +174,44 @@ abstract class BagOStuff implements IExpiringStore, LoggerAwareInterface {
// B/C for ( $key, &$casToken = null, $flags = 0 )
$flags = is_int( $oldFlags ) ? $oldFlags : $flags;
+ $this->trackDuplicateKeys( $key );
+
return $this->doGet( $key, $flags );
}
+ /**
+ * Track the number of times that a given key has been used.
+ * @param string $key
+ */
+ private function trackDuplicateKeys( $key ) {
+ if ( !$this->reportDupes ) {
+ return;
+ }
+
+ if ( !isset( $this->duplicateKeyLookups[$key] ) ) {
+ // Track that we have seen this key. This N-1 counting style allows
+ // easy filtering with array_filter() later.
+ $this->duplicateKeyLookups[$key] = 0;
+ } else {
+ $this->duplicateKeyLookups[$key] += 1;
+
+ if ( $this->dupeTrackScheduled === false ) {
+ $this->dupeTrackScheduled = true;
+ // Schedule a callback that logs keys processed more than once by get().
+ call_user_func( $this->asyncHandler, function () {
+ $dups = array_filter( $this->duplicateKeyLookups );
+ foreach ( $dups as $key => $count ) {
+ $this->logger->warning(
+ 'Duplicate get(): "{key}" fetched {count} times',
+ // Count is N-1 of the actual lookup count
+ [ 'key' => $key, 'count' => $count + 1, ]
+ );
+ }
+ } );
+ }
+ }
+ }
+
/**
* @param string $key
* @param integer $flags Bitfield of BagOStuff::READ_* constants [optional]
diff --git a/includes/libs/objectcache/MultiWriteBagOStuff.php b/includes/libs/objectcache/MultiWriteBagOStuff.php
index 3e88cb19ed..fe61470284 100644
--- a/includes/libs/objectcache/MultiWriteBagOStuff.php
+++ b/includes/libs/objectcache/MultiWriteBagOStuff.php
@@ -33,8 +33,6 @@ class MultiWriteBagOStuff extends BagOStuff {
protected $caches;
/** @var bool Use async secondary writes */
protected $asyncWrites = false;
- /** @var callback|null */
- protected $asyncHandler;
/** Idiom for "write to all backends" */
const ALL = INF;
@@ -58,8 +56,6 @@ class MultiWriteBagOStuff extends BagOStuff {
* safe to use for modules when cached values: are immutable,
* invalidation uses logical TTLs, invalidation uses etag/timestamp
* validation against the DB, or merge() is used to handle races.
- * - asyncHandler: callable that takes a callback and runs it after the
- * current web request ends. In CLI mode, it should run it immediately.
* @param array $params
* @throws InvalidArgumentException
*/
@@ -88,9 +84,6 @@ class MultiWriteBagOStuff extends BagOStuff {
}
}
- $this->asyncHandler = isset( $params['asyncHandler'] )
- ? $params['asyncHandler']
- : null;
$this->asyncWrites = (
isset( $params['replication'] ) &&
$params['replication'] === 'async' &&
diff --git a/includes/libs/objectcache/WANObjectCache.php b/includes/libs/objectcache/WANObjectCache.php
index e43d37b8ca..18cc10e43c 100644
--- a/includes/libs/objectcache/WANObjectCache.php
+++ b/includes/libs/objectcache/WANObjectCache.php
@@ -69,10 +69,10 @@ class WANObjectCache implements IExpiringStore, LoggerAwareInterface {
protected $cache;
/** @var HashBagOStuff Script instance PHP cache */
protected $procCache;
- /** @var string Cache pool name */
- protected $pool;
+ /** @var string Purge channel name */
+ protected $purgeChannel;
/** @var EventRelayer Bus that handles purge broadcasts */
- protected $relayer;
+ protected $purgeRelayer;
/** @var LoggerInterface */
protected $logger;
@@ -134,18 +134,24 @@ class WANObjectCache implements IExpiringStore, LoggerAwareInterface {
const MAX_PC_KEYS = 1000; // max keys to keep in process cache
+ const DEFAULT_PURGE_CHANNEL = 'wancache-purge';
+
/**
* @param array $params
- * - cache : BagOStuff object
- * - pool : pool name
- * - relayer : EventRelayer object
- * - logger : LoggerInterface object
+ * - cache : BagOStuff object for a persistent cache
+ * - channels : Map of (action => channel string). Actions include "purge".
+ * - relayers : Map of (action => EventRelayer object). Actions include "purge".
+ * - logger : LoggerInterface object
*/
public function __construct( array $params ) {
$this->cache = $params['cache'];
- $this->pool = $params['pool'];
- $this->relayer = $params['relayer'];
$this->procCache = new HashBagOStuff( [ 'maxKeys' => self::MAX_PC_KEYS ] );
+ $this->purgeChannel = isset( $params['channels']['purge'] )
+ ? $params['channels']['purge']
+ : self::DEFAULT_PURGE_CHANNEL;
+ $this->purgeRelayer = isset( $params['relayers']['purge'] )
+ ? $params['relayers']['purge']
+ : new EventRelayerNull( [] );
$this->setLogger( isset( $params['logger'] ) ? $params['logger'] : new NullLogger() );
}
@@ -669,12 +675,12 @@ class WANObjectCache implements IExpiringStore, LoggerAwareInterface {
*
* return CatConfig::newFromRow( $dbr->selectRow( ... ) );
* },
- * array(
+ * [
* // Calling touchCheckKey() on this key invalidates the cache
- * 'checkKeys' => array( $cache->makeKey( 'site-cat-config' ) ),
+ * 'checkKeys' => [ $cache->makeKey( 'site-cat-config' ) ],
* // Try to only let one datacenter thread manage cache updates at a time
* 'lockTSE' => 30
- * )
+ * ]
* );
* @endcode
*
@@ -694,15 +700,15 @@ class WANObjectCache implements IExpiringStore, LoggerAwareInterface {
*
* return CatState::newFromResults( $dbr->select( ... ) );
* },
- * array(
+ * [
* // The "check" keys that represent things the value depends on;
* // Calling touchCheckKey() on any of them invalidates the cache
- * 'checkKeys' => array(
+ * 'checkKeys' => [
* $cache->makeKey( 'sustenance-bowls', $cat->getRoomId() ),
* $cache->makeKey( 'people-present', $cat->getHouseId() ),
* $cache->makeKey( 'cat-laws', $cat->getCityId() ),
- * )
- * )
+ * ]
+ * ]
* );
* @endcode
*
@@ -720,7 +726,7 @@ class WANObjectCache implements IExpiringStore, LoggerAwareInterface {
* $setOpts += Database::getCacheSetOptions( $dbr );
*
* // Start off with the last cached list
- * $list = $oldValue ?: array();
+ * $list = $oldValue ?: [];
* // Fetch the last 100 relevant rows in descending order;
* // only fetch rows newer than $list[0] to reduce scanning
* $rows = iterator_to_array( $dbr->select( ... ) );
@@ -728,7 +734,7 @@ class WANObjectCache implements IExpiringStore, LoggerAwareInterface {
* return array_slice( array_merge( $new, $list ), 0, 100 );
* },
* // Try to only let one datacenter thread manage cache updates at a time
- * array( 'lockTSE' => 30 )
+ * [ 'lockTSE' => 30 ]
* );
* @endcode
*
@@ -918,6 +924,15 @@ class WANObjectCache implements IExpiringStore, LoggerAwareInterface {
$this->lastRelayError = self::ERR_NONE;
}
+ /**
+ * Clear the in-process caches; useful for testing
+ *
+ * @since 1.27
+ */
+ public function clearProcessCache() {
+ $this->procCache->clear();
+ }
+
/**
* Do the actual async bus purge of a key
*
@@ -937,7 +952,7 @@ class WANObjectCache implements IExpiringStore, LoggerAwareInterface {
'sbt' => true, // substitute $UNIXTIME$ with actual microtime
] );
- $ok = $this->relayer->notify( "{$this->pool}:purge", $event );
+ $ok = $this->purgeRelayer->notify( $this->purgeChannel, $event );
if ( !$ok ) {
$this->lastRelayError = self::ERR_RELAY;
}
@@ -957,7 +972,7 @@ class WANObjectCache implements IExpiringStore, LoggerAwareInterface {
'key' => $key,
] );
- $ok = $this->relayer->notify( "{$this->pool}:purge", $event );
+ $ok = $this->purgeRelayer->notify( $this->purgeChannel, $event );
if ( !$ok ) {
$this->lastRelayError = self::ERR_RELAY;
}
diff --git a/includes/libs/stats/BufferingStatsdDataFactory.php b/includes/libs/stats/BufferingStatsdDataFactory.php
new file mode 100644
index 0000000000..9c18b10f10
--- /dev/null
+++ b/includes/libs/stats/BufferingStatsdDataFactory.php
@@ -0,0 +1,87 @@
+prefix = $prefix;
+ }
+
+ /**
+ * Normalize a metric key for StatsD
+ *
+ * Replace occurences of '::' with dots and any other non-alphanumeric
+ * characters with underscores. Combine runs of dots or underscores.
+ * Then trim leading or trailing dots or underscores.
+ *
+ * @param string $key
+ * @since 1.26
+ */
+ private static function normalizeMetricKey( $key ) {
+ $key = preg_replace( '/[:.]+/', '.', $key );
+ $key = preg_replace( '/[^a-z0-9.]+/i', '_', $key );
+ $key = trim( $key, '_.' );
+ return str_replace( [ '._', '_.' ], '.', $key );
+ }
+
+ public function produceStatsdData(
+ $key, $value = 1, $metric = StatsdDataInterface::STATSD_METRIC_COUNT
+ ) {
+ $entity = $this->produceStatsdDataEntity();
+ if ( $key !== null ) {
+ $key = self::normalizeMetricKey( "{$this->prefix}.{$key}" );
+ $entity->setKey( $key );
+ }
+ if ( $value !== null ) {
+ $entity->setValue( $value );
+ }
+ if ( $metric !== null ) {
+ $entity->setMetric( $metric );
+ }
+ // Don't bother buffering a counter update with a delta of zero.
+ if ( !( $metric === StatsdDataInterface::STATSD_METRIC_COUNT && !$value ) ) {
+ $this->buffer[] = $entity;
+ }
+ return $entity;
+ }
+
+ /**
+ * @return StatsdData[]
+ */
+ public function getBuffer() {
+ return $this->buffer;
+ }
+}
diff --git a/includes/libs/stats/NullStatsdDataFactory.php b/includes/libs/stats/NullStatsdDataFactory.php
new file mode 100644
index 0000000000..3b272e216e
--- /dev/null
+++ b/includes/libs/stats/NullStatsdDataFactory.php
@@ -0,0 +1,111 @@
+setKey( $key );
+ $data->setValue( $value );
+ $data->setMetric( $metric );
+ return $data;
+ }
+
+}
diff --git a/includes/libs/stats/StatsdAwareInterface.php b/includes/libs/stats/StatsdAwareInterface.php
new file mode 100644
index 0000000000..b0b941ae66
--- /dev/null
+++ b/includes/libs/stats/StatsdAwareInterface.php
@@ -0,0 +1,21 @@
+ VirtualRESTService) */
+ /** @var VirtualRESTService[] Map of (prefix => VirtualRESTService) */
protected $instances = [];
const VALID_MOUNT_REGEX = '#^/[0-9a-z]+/([0-9a-z]+/)*$#';
diff --git a/includes/linker/LinkTarget.php b/includes/linker/LinkTarget.php
new file mode 100644
index 0000000000..2764f461ff
--- /dev/null
+++ b/includes/linker/LinkTarget.php
@@ -0,0 +1,76 @@
+" .
- $this->context->getLanguage()->translateBlockExpiry( $params[4] ) . '' );
+ $this->context->getLanguage()->translateBlockExpiry( $params[4],
+ $this->context->getUser() ) . '' );
$params[5] = isset( $params[5] ) ?
self::formatBlockFlags( $params[5], $this->context->getLanguage() ) : '';
}
diff --git a/includes/logging/LogEntry.php b/includes/logging/LogEntry.php
index 1d0a54361f..20d0217baa 100644
--- a/includes/logging/LogEntry.php
+++ b/includes/logging/LogEntry.php
@@ -428,6 +428,9 @@ class ManualLogEntry extends LogEntryBase {
/** @var int ID of the log entry */
protected $id;
+ /** @var Can this log entry be patrolled? */
+ protected $isPatrollable = false;
+
/** @var bool Whether this is a legacy log entry */
protected $legacy = false;
@@ -545,6 +548,19 @@ class ManualLogEntry extends LogEntryBase {
$this->tags = $tags;
}
+ /**
+ * Set whether this log entry should be made patrollable
+ * This shouldn't depend on config, only on whether there is full support
+ * in the software for patrolling this log entry.
+ * False by default
+ *
+ * @since 1.27
+ * @param bool $patrollable
+ */
+ public function setIsPatrollable( $patrollable ) {
+ $this->isPatrollable = (bool)$patrollable;
+ }
+
/**
* Set the 'legacy' flag
*
@@ -679,7 +695,8 @@ class ManualLogEntry extends LogEntryBase {
LogEntryBase::makeParamBlob( $this->getParameters() ),
$newId,
$formatter->getIRCActionComment(), // Used for IRC feeds
- $this->getAssociatedRevId() // Used for e.g. moves and uploads
+ $this->getAssociatedRevId(), // Used for e.g. moves and uploads
+ $this->getIsPatrollable()
);
}
@@ -706,8 +723,8 @@ class ManualLogEntry extends LogEntryBase {
$rc->notifyRCFeeds();
}
- // Log the autopatrol if an associated rev id was passed
- if ( $this->getAssociatedRevId() > 0 &&
+ // Log the autopatrol if the log entry is patrollable
+ if ( $this->getIsPatrollable() &&
$rc->getAttribute( 'rc_patrolled' ) === 1 ) {
PatrolLog::record( $rc, true, $this->getPerformer() );
}
@@ -775,6 +792,16 @@ class ManualLogEntry extends LogEntryBase {
return $this->tags;
}
+ /**
+ * Whether this log entry is patrollable
+ *
+ * @since 1.27
+ * @return bool
+ */
+ public function getIsPatrollable() {
+ return $this->isPatrollable;
+ }
+
/**
* @since 1.25
* @return bool
diff --git a/includes/logging/LogEventsList.php b/includes/logging/LogEventsList.php
index 039161aa9d..da5527eb9a 100644
--- a/includes/logging/LogEventsList.php
+++ b/includes/logging/LogEventsList.php
@@ -40,6 +40,11 @@ class LogEventsList extends ContextSource {
*/
protected $showTagEditUI;
+ /**
+ * @var array
+ */
+ protected $allowedActions = null;
+
/**
* Constructor.
* The first two parameters used to be $skin and $out, but now only a context
@@ -74,9 +79,10 @@ class LogEventsList extends ContextSource {
* @param int $month Month
* @param array $filter
* @param string $tagFilter Tag to select by default
+ * @param string $action
*/
public function showOptions( $types = [], $user = '', $page = '', $pattern = '', $year = 0,
- $month = 0, $filter = null, $tagFilter = ''
+ $month = 0, $filter = null, $tagFilter = '', $action = null
) {
global $wgScript, $wgMiserMode;
@@ -113,6 +119,11 @@ class LogEventsList extends ContextSource {
$html .= Xml::tags( 'p', null, $this->getFilterLinks( $filter ) );
}
+ // Action filter
+ if ( $action !== null ) {
+ $html .= Xml::tags( 'p', null, $this->getActionSelector( $types, $action ) );
+ }
+
// Submit button
$html .= Xml::submitButton( $this->msg( 'logeventslist-submit' )->text() );
@@ -287,6 +298,41 @@ class LogEventsList extends ContextSource {
return '';
}
+ /**
+ * Drop down menu for selection of actions that can be used to filter the log
+ * @param array $types
+ * @param string $action
+ * @return string
+ * @since 1.27
+ */
+ private function getActionSelector( $types, $action ) {
+ if ( $this->allowedActions === null || !count( $this->allowedActions ) ) {
+ return '';
+ }
+ $html = '';
+ $html .= xml::label( wfMessage( 'log-action-filter-' . $types[0] )->text(),
+ 'action-filter-' .$types[0] ) . "\n";
+ $select = new XmlSelect( 'subtype' );
+ $select->addOption( wfMessage( 'log-action-filter-all' )->text(), '' );
+ foreach ( $this->allowedActions as $value ) {
+ $msgKey = 'log-action-filter-' . $types[0] . '-' . $value;
+ $select->addOption( wfMessage( $msgKey )->text(), $value );
+ }
+ $select->setDefault( $action );
+ $html .= $select->getHtml();
+ return $html;
+ }
+
+ /**
+ * Sets the action types allowed for log filtering
+ * To one action type may correspond several log_actions
+ * @param array $actions
+ * @since 1.27
+ */
+ public function setAllowedActions( $actions ) {
+ $this->allowedActions = $actions;
+ }
+
/**
* @return string
*/
diff --git a/includes/logging/LogPager.php b/includes/logging/LogPager.php
index 8518c910ff..3d04641c73 100644
--- a/includes/logging/LogPager.php
+++ b/includes/logging/LogPager.php
@@ -42,6 +42,9 @@ class LogPager extends ReverseChronologicalPager {
/** @var string */
private $typeCGI = '';
+ /** @var string */
+ private $action = '';
+
/** @var LogEventsList */
public $mLogEventsList;
@@ -57,9 +60,12 @@ class LogPager extends ReverseChronologicalPager {
* @param int|bool $year The year to start from. Default: false
* @param int|bool $month The month to start from. Default: false
* @param string $tagFilter Tag
+ * @param string $action Specific action (subtype) requested
*/
- public function __construct( $list, $types = [], $performer = '', $title = '', $pattern = '',
- $conds = [], $year = false, $month = false, $tagFilter = '' ) {
+ public function __construct( $list, $types = [], $performer = '', $title = '',
+ $pattern = '', $conds = [], $year = false, $month = false, $tagFilter = '',
+ $action = ''
+ ) {
parent::__construct( $list->getContext() );
$this->mConds = $conds;
@@ -68,6 +74,7 @@ class LogPager extends ReverseChronologicalPager {
$this->limitType( $types ); // also excludes hidden types
$this->limitPerformer( $performer );
$this->limitTitle( $title, $pattern );
+ $this->limitAction( $action );
$this->getDateCond( $year, $month );
$this->mTagFilter = $tagFilter;
@@ -256,6 +263,31 @@ class LogPager extends ReverseChronologicalPager {
}
}
+ /**
+ * Set the log_action field to a specified value (or values)
+ *
+ * @param string $action
+ */
+ private function limitAction( $action ) {
+ global $wgActionFilteredLogs;
+ // Allow to filter the log by actions
+ $type = $this->typeCGI;
+ if ( $type === '' ) {
+ // nothing to do
+ return;
+ }
+ $actions = $wgActionFilteredLogs;
+ if ( isset( $actions[$type] ) ) {
+ // log type can be filtered by actions
+ $this->mLogEventsList->setAllowedActions( array_keys( $actions[$type] ) );
+ if ( $action !== '' && isset( $actions[$type][$action] ) ) {
+ // add condition to query
+ $this->mConds['log_action'] = $actions[$type][$action];
+ $this->action = $action;
+ }
+ }
+ }
+
/**
* Constructs the most part of the query. Extra conditions are sprinkled in
* all over this class.
@@ -352,6 +384,8 @@ class LogPager extends ReverseChronologicalPager {
}
/**
+ * Guaranteed to either return a valid title string or a Zero-Length String
+ *
* @return string
*/
public function getPerformer() {
@@ -381,6 +415,10 @@ class LogPager extends ReverseChronologicalPager {
return $this->mTagFilter;
}
+ public function getAction() {
+ return $this->action;
+ }
+
public function doQuery() {
// Workaround MySQL optimizer bug
$this->mDb->setBigSelects();
diff --git a/includes/logging/PatrolLog.php b/includes/logging/PatrolLog.php
index f6ecc501a3..d1de2cd3ae 100644
--- a/includes/logging/PatrolLog.php
+++ b/includes/logging/PatrolLog.php
@@ -58,7 +58,9 @@ class PatrolLog {
$user = $wgUser;
}
- $entry = new ManualLogEntry( 'patrol', 'patrol' );
+ $action = $auto ? 'autopatrol' : 'patrol';
+
+ $entry = new ManualLogEntry( 'patrol', $action );
$entry->setTarget( $rc->getTitle() );
$entry->setParameters( self::buildParams( $rc, $auto ) );
$entry->setPerformer( $user );
diff --git a/includes/logging/PatrolLogFormatter.php b/includes/logging/PatrolLogFormatter.php
index e6f9fb64cd..5b933ce269 100644
--- a/includes/logging/PatrolLogFormatter.php
+++ b/includes/logging/PatrolLogFormatter.php
@@ -30,11 +30,11 @@
*/
class PatrolLogFormatter extends LogFormatter {
protected function getMessageKey() {
- $key = parent::getMessageKey();
$params = $this->getMessageParameters();
if ( isset( $params[5] ) && $params[5] ) {
- // Messages: logentry-patrol-patrol-auto
- $key .= '-auto';
+ $key = 'logentry-patrol-patrol-auto';
+ } else {
+ $key = 'logentry-patrol-patrol';
}
return $key;
diff --git a/includes/logging/RightsLogFormatter.php b/includes/logging/RightsLogFormatter.php
index b9dfb6c044..be73c86495 100644
--- a/includes/logging/RightsLogFormatter.php
+++ b/includes/logging/RightsLogFormatter.php
@@ -33,12 +33,19 @@ class RightsLogFormatter extends LogFormatter {
global $wgContLang, $wgUserrightsInterwikiDelimiter;
if ( !$this->plaintext ) {
- $text = $wgContLang->ucfirst( $title->getText() );
+ $text = $wgContLang->ucfirst( $title->getDBkey() );
$parts = explode( $wgUserrightsInterwikiDelimiter, $text, 2 );
if ( count( $parts ) === 2 ) {
- $titleLink = WikiMap::foreignUserLink( $parts[1], $parts[0],
- htmlspecialchars( $title->getText() ) );
+ $titleLink = WikiMap::foreignUserLink(
+ $parts[1],
+ $parts[0],
+ htmlspecialchars(
+ strtr( $parts[0], '_', ' ' ) .
+ $wgUserrightsInterwikiDelimiter .
+ $parts[1]
+ )
+ );
if ( $titleLink !== false ) {
return $titleLink;
@@ -90,13 +97,15 @@ class RightsLogFormatter extends LogFormatter {
$params[3] = $this->msg( 'rightsnone' )->text();
}
if ( count( $newGroups ) ) {
- // Array_values is used here because of bug 42211
+ // Array_values is used here because of T44211
// see use of array_unique in UserrightsPage::doSaveUserGroups on $newGroups.
$params[4] = $lang->listToText( array_values( $newGroups ) );
} else {
$params[4] = $this->msg( 'rightsnone' )->text();
}
+ $params[5] = $userName;
+
return $params;
}
diff --git a/includes/mail/EmailNotification.php b/includes/mail/EmailNotification.php
index fe24c34ac2..664c1116eb 100644
--- a/includes/mail/EmailNotification.php
+++ b/includes/mail/EmailNotification.php
@@ -23,6 +23,7 @@
* @author Tim Starling
* @author Luke Welling lwelling@wikimedia.org
*/
+use MediaWiki\Linker\LinkTarget;
/**
* This module processes the email notifications when the current page is
diff --git a/includes/mail/UserMailer.php b/includes/mail/UserMailer.php
index 1c7fb9857b..1059d7bce2 100644
--- a/includes/mail/UserMailer.php
+++ b/includes/mail/UserMailer.php
@@ -107,9 +107,6 @@ class UserMailer {
* '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.
- *
* @throws MWException
* @throws Exception
* @return Status
@@ -117,14 +114,6 @@ class UserMailer {
public static function send( $to, $from, $subject, $body, $options = [] ) {
global $wgAllowHTMLEmail;
- if ( !is_array( $options ) ) {
- // Old calling style
- wfDeprecated( __METHOD__ . ' with $replyto as 5th parameter', '1.26' );
- $options = [ 'replyTo' => $options ];
- if ( func_num_args() === 6 ) {
- $options['contentType'] = func_get_arg( 5 );
- }
- }
if ( !isset( $options['contentType'] ) ) {
$options['contentType'] = 'text/plain; charset=UTF-8';
}
diff --git a/includes/media/Bitmap.php b/includes/media/Bitmap.php
index b055d16fc0..4da41c8de4 100644
--- a/includes/media/Bitmap.php
+++ b/includes/media/Bitmap.php
@@ -115,7 +115,7 @@ class BitmapHandler extends TransformationalImageHandler {
protected function transformImageMagick( $image, $params ) {
# use ImageMagick
global $wgSharpenReductionThreshold, $wgSharpenParameter, $wgMaxAnimatedGifArea,
- $wgImageMagickTempDir, $wgImageMagickConvertCommand, $wgMaxInterlacingAreas;
+ $wgImageMagickTempDir, $wgImageMagickConvertCommand;
$quality = [];
$sharpen = [];
diff --git a/includes/media/DjVu.php b/includes/media/DjVu.php
index cd249a86f6..9add138da0 100644
--- a/includes/media/DjVu.php
+++ b/includes/media/DjVu.php
@@ -393,25 +393,24 @@ class DjVuHandler extends ImageHandler {
}
protected function getDimensionInfo( File $file ) {
- $that = $this;
-
- return ObjectCache::getMainWANInstance()->getWithSetCallback(
- wfMemcKey( 'file-djvu', 'dimensions', $file->getSha1() ),
- WANObjectCache::TTL_INDEFINITE,
- function () use ( $that, $file ) {
- $tree = $that->getMetaTree( $file );
+ $cache = ObjectCache::getMainWANInstance();
+ return $cache->getWithSetCallback(
+ $cache->makeKey( 'file-djvu', 'dimensions', $file->getSha1() ),
+ $cache::TTL_INDEFINITE,
+ function () use ( $file ) {
+ $tree = $this->getMetaTree( $file );
if ( !$tree ) {
return false;
}
$dimsByPage = [];
$count = count( $tree->xpath( '//OBJECT' ) );
- for ( $i = 0; $i < $count; ++$i ) {
+ for ( $i = 0; $i < $count; $i++ ) {
$o = $tree->BODY[0]->OBJECT[$i];
if ( $o ) {
$dimsByPage[$i] = [
'width' => (int)$o['width'],
- 'height' => (int)$o['height']
+ 'height' => (int)$o['height'],
];
} else {
$dimsByPage[$i] = false;
@@ -420,7 +419,7 @@ class DjVuHandler extends ImageHandler {
return [ 'pageCount' => $count, 'dimensionsByPage' => $dimsByPage ];
},
- [ 'pcTTL' => WANObjectCache::TTL_INDEFINITE ]
+ [ 'pcTTL' => $cache::TTL_INDEFINITE ]
);
}
diff --git a/includes/media/Exif.php b/includes/media/Exif.php
index 11178f42cc..95fa8594fc 100644
--- a/includes/media/Exif.php
+++ b/includes/media/Exif.php
@@ -174,8 +174,8 @@ class Exif {
# Tags relating to image configuration
'ComponentsConfiguration' => Exif::UNDEFINED, # Meaning of each component #p33
'CompressedBitsPerPixel' => Exif::RATIONAL, # Image compression mode
- 'PixelYDimension' => Exif::SHORT_OR_LONG, # Valid image width
- 'PixelXDimension' => Exif::SHORT_OR_LONG, # Valid image height
+ 'PixelYDimension' => Exif::SHORT_OR_LONG, # Valid image height
+ 'PixelXDimension' => Exif::SHORT_OR_LONG, # Valid image width
# Tags relating to related user information
'MakerNote' => Exif::IGNORE, # Manufacturer notes
diff --git a/includes/media/WebP.php b/includes/media/WebP.php
index 6a01e8781c..35e885f1ca 100644
--- a/includes/media/WebP.php
+++ b/includes/media/WebP.php
@@ -63,9 +63,9 @@ class WebPHandler extends BitmapHandler {
return self::METADATA_GOOD;
}
- wfSuppressWarnings();
+ MediaWiki\suppressWarnings();
$data = unserialize( $metadata );
- wfRestoreWarnings();
+ MediaWiki\restoreWarnings();
if ( !$data || !is_array( $data ) ) {
wfDebug( __METHOD__ . " invalid WebP metadata\n" );
@@ -234,9 +234,9 @@ class WebPHandler extends BitmapHandler {
$metadata = $file->getMetadata();
}
- wfSuppressWarnings();
+ MediaWiki\suppressWarnings();
$metadata = unserialize( $metadata );
- wfRestoreWarnings();
+ MediaWiki\restoreWarnings();
if ( $metadata == false ) {
return false;
diff --git a/includes/objectcache/ObjectCache.php b/includes/objectcache/ObjectCache.php
index 6d26419a6b..24846e6ed6 100644
--- a/includes/objectcache/ObjectCache.php
+++ b/includes/objectcache/ObjectCache.php
@@ -22,6 +22,7 @@
*/
use MediaWiki\Logger\LoggerFactory;
+use MediaWiki\MediaWikiServices;
/**
* Functions to get cache objects
@@ -174,11 +175,13 @@ class ObjectCache {
} elseif ( isset( $params['class'] ) ) {
$class = $params['class'];
// Automatically set the 'async' update handler
- if ( $class === 'MultiWriteBagOStuff' ) {
- $params['asyncHandler'] = isset( $params['asyncHandler'] )
- ? $params['asyncHandler']
- : 'DeferredUpdates::addCallableUpdate';
- }
+ $params['asyncHandler'] = isset( $params['asyncHandler'] )
+ ? $params['asyncHandler']
+ : 'DeferredUpdates::addCallableUpdate';
+ // Enable reportDupes by default
+ $params['reportDupes'] = isset( $params['reportDupes'] )
+ ? $params['reportDupes']
+ : true;
// Do b/c logic for MemcachedBagOStuff
if ( is_subclass_of( $class, 'MemcachedBagOStuff' ) ) {
if ( !isset( $params['servers'] ) ) {
@@ -296,8 +299,11 @@ class ObjectCache {
}
$params = $wgWANObjectCaches[$id];
- $class = $params['relayerConfig']['class'];
- $params['relayer'] = new $class( $params['relayerConfig'] );
+ foreach ( $params['channels'] as $action => $channel ) {
+ $params['relayers'][$action] = MediaWikiServices::getInstance()->getEventRelayerGroup()
+ ->getRelayer( $channel );
+ $params['channels'][$action] = $channel;
+ }
$params['cache'] = self::newFromId( $params['cacheId'] );
if ( isset( $params['loggroup'] ) ) {
$params['logger'] = LoggerFactory::getInstance( $params['loggroup'] );
diff --git a/includes/objectcache/SqlBagOStuff.php b/includes/objectcache/SqlBagOStuff.php
index 39450941e3..a1394c13f8 100644
--- a/includes/objectcache/SqlBagOStuff.php
+++ b/includes/objectcache/SqlBagOStuff.php
@@ -27,10 +27,10 @@
* @ingroup Cache
*/
class SqlBagOStuff extends BagOStuff {
- /** @var array */
+ /** @var array[] (server index => server config) */
protected $serverInfos;
- /** @var array */
- protected $serverNames;
+ /** @var string[] (server index => tag/host name) */
+ protected $serverTags;
/** @var int */
protected $numServers;
/** @var int */
@@ -58,9 +58,12 @@ class SqlBagOStuff extends BagOStuff {
* - server: A server info structure in the format required by each
* element in $wgDBServers.
*
- * - servers: An array of server info structures describing a set of
- * database servers to distribute keys to. If this is
- * specified, the "server" option will be ignored.
+ * - servers: An array of server info structures describing a set of database servers
+ * to distribute keys to. If this is specified, the "server" option will be
+ * ignored. If string keys are used, then they will be used for consistent
+ * hashing *instead* of the host name (from the server config). This is useful
+ * when a cluster is replicated to another site (with different host names)
+ * but each server has a corresponding replica in the other cluster.
*
* - purgePeriod: The average number of object cache requests in between
* garbage collection operations, where expired entries
@@ -89,11 +92,18 @@ class SqlBagOStuff extends BagOStuff {
public function __construct( $params ) {
parent::__construct( $params );
if ( isset( $params['servers'] ) ) {
- $this->serverInfos = $params['servers'];
- $this->numServers = count( $this->serverInfos );
- $this->serverNames = [];
- foreach ( $this->serverInfos as $i => $info ) {
- $this->serverNames[$i] = isset( $info['host'] ) ? $info['host'] : "#$i";
+ $this->serverInfos = [];
+ $this->serverTags = [];
+ $this->numServers = count( $params['servers'] );
+ $index = 0;
+ foreach ( $params['servers'] as $tag => $info ) {
+ $this->serverInfos[$index] = $info;
+ if ( is_string( $tag ) ) {
+ $this->serverTags[$index] = $tag;
+ } else {
+ $this->serverTags[$index] = isset( $info['host'] ) ? $info['host'] : "#$index";
+ }
+ ++$index;
}
} elseif ( isset( $params['server'] ) ) {
$this->serverInfos = [ $params['server'] ];
@@ -180,7 +190,7 @@ class SqlBagOStuff extends BagOStuff {
$tableIndex = 0;
}
if ( $this->numServers > 1 ) {
- $sortedServers = $this->serverNames;
+ $sortedServers = $this->serverTags;
ArrayUtils::consistentHashSort( $sortedServers, $key );
reset( $sortedServers );
$serverIndex = key( $sortedServers );
diff --git a/includes/page/Article.php b/includes/page/Article.php
index b561407694..6c42e3427e 100644
--- a/includes/page/Article.php
+++ b/includes/page/Article.php
@@ -1572,9 +1572,8 @@ class Article implements Page {
$title,
htmlspecialchars( $title->getFullText() ),
[],
- // Automatically append redirect=no to each link, since most of them are
- // redirect pages themselves.
- [ 'redirect' => 'no' ],
+ // Make sure wiki page redirects are not followed
+ $title->isRedirect() ? [ 'redirect' => 'no' ] : [],
( $forceKnown ? [ 'known', 'noclasses' ] : [] )
) . '';
}
@@ -1644,6 +1643,7 @@ class Article implements Page {
$title = $this->getTitle();
$context = $this->getContext();
$user = $context->getUser();
+ $request = $context->getRequest();
# Check permissions
$permissionErrors = $title->getUserPermissionsErrors( 'delete', $user );
@@ -1657,7 +1657,9 @@ class Article implements Page {
}
# Better double-check that it hasn't been deleted yet!
- $this->mPage->loadPageData( 'fromdbmaster' );
+ $this->mPage->loadPageData(
+ $request->wasPosted() ? WikiPage::READ_LATEST : WikiPage::READ_NORMAL
+ );
if ( !$this->mPage->exists() ) {
$deleteLogPage = new LogPage( 'delete' );
$outputPage = $context->getOutput();
@@ -1677,7 +1679,6 @@ class Article implements Page {
return;
}
- $request = $context->getRequest();
$deleteReasonList = $request->getText( 'wpDeleteReasonList', 'other' );
$deleteReason = $request->getText( 'wpReason' );
@@ -2378,15 +2379,6 @@ class Article implements Page {
return $this->mPage->getUndoContent( $undo, $undoafter );
}
- /**
- * Call to WikiPage function for backwards compatibility.
- * @see WikiPage::getUndoText
- */
- public function getUndoText( Revision $undo, Revision $undoafter = null ) {
- ContentHandler::deprecated( __METHOD__, '1.21' );
- return $this->mPage->getUndoText( $undo, $undoafter );
- }
-
/**
* Call to WikiPage function for backwards compatibility.
* @see WikiPage::getUser
@@ -2549,19 +2541,6 @@ class Article implements Page {
return $this->mPage->protectDescriptionLog( $limit, $expiry );
}
- /**
- * Call to WikiPage function for backwards compatibility.
- * @see WikiPage::replaceSection
- */
- public function replaceSection( $sectionId, $text, $sectionTitle = '',
- $edittime = null
- ) {
- ContentHandler::deprecated( __METHOD__, '1.21' );
- return $this->mPage->replaceSection( $sectionId, $text, $sectionTitle,
- $edittime
- );
- }
-
/**
* Call to WikiPage function for backwards compatibility.
* @see WikiPage::replaceSectionAtRev
diff --git a/includes/page/Page.php b/includes/page/Page.php
new file mode 100644
index 0000000000..2cb1fc0389
--- /dev/null
+++ b/includes/page/Page.php
@@ -0,0 +1,25 @@
+getTitle()->getArticleID();
+ $pageProps = PageProps::getInstance()->getProperties( $this->getTitle(), 'hiddencat' );
+
+ return isset( $pageProps[$pageId] ) ? true : false;
+ }
}
diff --git a/includes/page/WikiPage.php b/includes/page/WikiPage.php
index 0e3512b5ae..06785b70e3 100644
--- a/includes/page/WikiPage.php
+++ b/includes/page/WikiPage.php
@@ -20,12 +20,6 @@
* @file
*/
-/**
- * Interface for type hinting (accepts WikiPage, Article, ImagePage, CategoryPage)
- */
-interface Page {
-}
-
/**
* Class representing a MediaWiki article and history.
*
@@ -100,7 +94,7 @@ class WikiPage implements Page, IDBAccessObject {
* @param Title $title
*
* @throws MWException
- * @return WikiPage Object of the appropriate type
+ * @return WikiPage|WikiCategoryPage|WikiFilePage
*/
public static function factory( Title $title ) {
$ns = $title->getNamespace();
@@ -1351,76 +1345,6 @@ class WikiPage implements Page, IDBAccessObject {
return $handler->getUndoContent( $this->getRevision(), $undo, $undoafter );
}
- /**
- * Get the text that needs to be saved in order to undo all revisions
- * between $undo and $undoafter. Revisions must belong to the same page,
- * must exist and must not be deleted
- * @param Revision $undo
- * @param Revision $undoafter Must be an earlier revision than $undo
- * @return string|bool String on success, false on failure
- * @deprecated since 1.21: use ContentHandler::getUndoContent() instead.
- */
- public function getUndoText( Revision $undo, Revision $undoafter = null ) {
- ContentHandler::deprecated( __METHOD__, '1.21' );
-
- $this->loadLastEdit();
-
- if ( $this->mLastRevision ) {
- if ( is_null( $undoafter ) ) {
- $undoafter = $undo->getPrevious();
- }
-
- $handler = $this->getContentHandler();
- $undone = $handler->getUndoContent( $this->mLastRevision, $undo, $undoafter );
-
- if ( !$undone ) {
- return false;
- } else {
- return ContentHandler::getContentText( $undone );
- }
- }
-
- return false;
- }
-
- /**
- * @param string|number|null|bool $sectionId Section identifier as a number or string
- * (e.g. 0, 1 or 'T-1'), null/false or an empty string for the whole page
- * or 'new' for a new section.
- * @param string $text New text of the section.
- * @param string $sectionTitle New section's subject, only if $section is "new".
- * @param string $edittime Revision timestamp or null to use the current revision.
- *
- * @throws MWException
- * @return string|null New complete article text, or null if error.
- *
- * @deprecated since 1.21, use replaceSectionAtRev() instead
- */
- public function replaceSection( $sectionId, $text, $sectionTitle = '',
- $edittime = null
- ) {
- ContentHandler::deprecated( __METHOD__, '1.21' );
-
- // NOTE: keep condition in sync with condition in replaceSectionContent!
- if ( strval( $sectionId ) === '' ) {
- // Whole-page edit; let the whole text through
- return $text;
- }
-
- if ( !$this->supportsSections() ) {
- throw new MWException( "sections not supported for content model " .
- $this->getContentHandler()->getModelID() );
- }
-
- // could even make section title, but that's not required.
- $sectionContent = ContentHandler::makeContent( $text, $this->getTitle() );
-
- $newContent = $this->replaceSectionContent( $sectionId, $sectionContent, $sectionTitle,
- $edittime );
-
- return ContentHandler::getContentText( $newContent );
- }
-
/**
* Returns true if this page's content model supports sections.
*
@@ -3579,6 +3503,8 @@ class WikiPage implements Page, IDBAccessObject {
return;
}
+ $config = RequestContext::getMain()->getConfig();
+
$params = [
'isOpportunistic' => true,
'rootJobTimestamp' => $parserOutput->getCacheTime()
@@ -3589,7 +3515,7 @@ class WikiPage implements Page, IDBAccessObject {
JobQueueGroup::singleton()->lazyPush(
RefreshLinksJob::newPrioritized( $this->mTitle, $params )
);
- } elseif ( $parserOutput->hasDynamicContent() ) {
+ } elseif ( !$config->get( 'MiserMode' ) && $parserOutput->hasDynamicContent() ) {
// Assume the output contains "dynamic" time/random based magic words.
// Only update pages that expired due to dynamic content and NOT due to edits
// to referenced templates/files. When the cache expires due to dynamic content,
@@ -3601,7 +3527,8 @@ class WikiPage implements Page, IDBAccessObject {
// Although it would be de-duplicated, it would still waste I/O.
$cache = ObjectCache::getLocalClusterInstance();
$key = $cache->makeKey( 'dynamic-linksupdate', 'last', $this->getId() );
- if ( $cache->add( $key, time(), 60 ) ) {
+ $ttl = max( $parserOutput->getCacheExpiry(), 3600 );
+ if ( $cache->add( $key, time(), $ttl ) ) {
JobQueueGroup::singleton()->lazyPush(
RefreshLinksJob::newDynamic( $this->mTitle, $params )
);
diff --git a/includes/pager/TablePager.php b/includes/pager/TablePager.php
index e22cebad87..0a89e4e15b 100644
--- a/includes/pager/TablePager.php
+++ b/includes/pager/TablePager.php
@@ -264,26 +264,23 @@ abstract class TablePager extends IndexPager {
}
/**
- * @protected
* @return string
*/
- function getTableClass() {
+ protected function getTableClass() {
return 'TablePager';
}
/**
- * @protected
* @return string
*/
- function getNavClass() {
+ protected function getNavClass() {
return 'TablePager_nav';
}
/**
- * @protected
* @return string
*/
- function getSortHeaderClass() {
+ protected function getSortHeaderClass() {
return 'TablePager_sort';
}
diff --git a/includes/parser/Parser.php b/includes/parser/Parser.php
index 5ee0c5a6a1..a1d62e57bc 100644
--- a/includes/parser/Parser.php
+++ b/includes/parser/Parser.php
@@ -739,8 +739,7 @@ class Parser {
if ( $t->hasFragment() ) {
# Strip the fragment to avoid various odd effects
- $this->mTitle = clone $t;
- $this->mTitle->setFragment( '' );
+ $this->mTitle = $t->createFragmentTarget( '' );
} else {
$this->mTitle = $t;
}
@@ -1115,7 +1114,7 @@ class Parser {
// Implies both are valid for table headings.
if ( $first_character === '!' ) {
- $line = str_replace( '!!', '||', $line );
+ $line = StringUtils::replaceMarkup( '!!', '||', $line );
}
# Split up multiple cells on the same line.
@@ -1213,9 +1212,9 @@ class Parser {
*
* @private
*
- * @param string $text
- * @param bool $isMain
- * @param PPFrame|bool $frame
+ * @param string $text The text to parse
+ * @param bool $isMain Whether this is being called from the main parse() function
+ * @param PPFrame|bool $frame A pre-processor frame
*
* @return string
*/
diff --git a/includes/parser/Preprocessor.php b/includes/parser/Preprocessor.php
index 368d79ef49..cc98abd5c0 100644
--- a/includes/parser/Preprocessor.php
+++ b/includes/parser/Preprocessor.php
@@ -260,8 +260,8 @@ interface PPFrame {
/**
* Get an argument to this frame by name
- * @param string $name
- * @return bool
+ * @param int|string $name
+ * @return string|bool
*/
public function getArgument( $name );
diff --git a/includes/parser/Preprocessor_DOM.php b/includes/parser/Preprocessor_DOM.php
index 79a66e05e8..a28c0aa439 100644
--- a/includes/parser/Preprocessor_DOM.php
+++ b/includes/parser/Preprocessor_DOM.php
@@ -196,6 +196,7 @@ class Preprocessor_DOM extends Preprocessor {
$forInclusion = $flags & Parser::PTD_FOR_INCLUSION;
$xmlishElements = $this->parser->getStripList();
+ $xmlishAllowMissingEndTag = [ 'includeonly', 'noinclude', 'onlyinclude' ];
$enableOnlyinclude = false;
if ( $forInclusion ) {
$ignoredTags = [ 'includeonly', '/includeonly' ];
@@ -237,6 +238,8 @@ class Preprocessor_DOM extends Preprocessor {
$inHeading = false;
// True if there are no more greater-than (>) signs right of $i
$noMoreGT = false;
+ // Map of tag name => true if there are no more closing tags of given type right of $i
+ $noMoreClosingTag = [];
// True to ignore all input up to the next
$findOnlyinclude = $enableOnlyinclude;
// Do a line-start run without outputting an LF character
@@ -457,17 +460,29 @@ class Preprocessor_DOM extends Preprocessor {
} else {
$attrEnd = $tagEndPos;
// Find closing tag
- if ( preg_match( "/<\/" . preg_quote( $name, '/' ) . "\s*>/i",
+ if (
+ !isset( $noMoreClosingTag[$name] ) &&
+ preg_match( "/<\/" . preg_quote( $name, '/' ) . "\s*>/i",
$text, $matches, PREG_OFFSET_CAPTURE, $tagEndPos + 1 )
) {
$inner = substr( $text, $tagEndPos + 1, $matches[0][1] - $tagEndPos - 1 );
$i = $matches[0][1] + strlen( $matches[0][0] );
$close = '' . htmlspecialchars( $matches[0][0] ) . ' ';
} else {
- // No end tag -- let it run out to the end of the text.
- $inner = substr( $text, $tagEndPos + 1 );
- $i = $lengthText;
- $close = '';
+ // No end tag
+ if ( in_array( $name, $xmlishAllowMissingEndTag ) ) {
+ // Let it run out to the end of the text.
+ $inner = substr( $text, $tagEndPos + 1 );
+ $i = $lengthText;
+ $close = '';
+ } else {
+ // Don't match the tag, treat opening tag as literal and resume parsing.
+ $i = $tagEndPos + 1;
+ $accum .= htmlspecialchars( substr( $text, $tagStartPos, $tagEndPos + 1 - $tagStartPos ) );
+ // Cache results, otherwise we have O(N^2) performance for input like ...
+ $noMoreClosingTag[$name] = true;
+ continue;
+ }
}
}
// and just become tags
@@ -1462,6 +1477,10 @@ class PPFrame_DOM implements PPFrame {
return true;
}
+ /**
+ * @param int|string $name
+ * @return bool Always false in this implementation.
+ */
public function getArgument( $name ) {
return false;
}
@@ -1646,6 +1665,10 @@ class PPTemplateFrame_DOM extends PPFrame_DOM {
return $arguments;
}
+ /**
+ * @param int $index
+ * @return string|bool
+ */
public function getNumberedArgument( $index ) {
if ( !isset( $this->numberedArgs[$index] ) ) {
return false;
@@ -1660,6 +1683,10 @@ class PPTemplateFrame_DOM extends PPFrame_DOM {
return $this->numberedExpansionCache[$index];
}
+ /**
+ * @param string $name
+ * @return string|bool
+ */
public function getNamedArgument( $name ) {
if ( !isset( $this->namedArgs[$name] ) ) {
return false;
@@ -1672,6 +1699,10 @@ class PPTemplateFrame_DOM extends PPFrame_DOM {
return $this->namedExpansionCache[$name];
}
+ /**
+ * @param int|string $name
+ * @return string|bool
+ */
public function getArgument( $name ) {
$text = $this->getNumberedArgument( $name );
if ( $text === false ) {
@@ -1738,6 +1769,10 @@ class PPCustomFrame_DOM extends PPFrame_DOM {
return !count( $this->args );
}
+ /**
+ * @param int|string $index
+ * @return string|bool
+ */
public function getArgument( $index ) {
if ( !isset( $this->args[$index] ) ) {
return false;
diff --git a/includes/parser/Preprocessor_Hash.php b/includes/parser/Preprocessor_Hash.php
index 24baae43d5..0e1196793c 100644
--- a/includes/parser/Preprocessor_Hash.php
+++ b/includes/parser/Preprocessor_Hash.php
@@ -120,6 +120,7 @@ class Preprocessor_Hash extends Preprocessor {
$forInclusion = $flags & Parser::PTD_FOR_INCLUSION;
$xmlishElements = $this->parser->getStripList();
+ $xmlishAllowMissingEndTag = [ 'includeonly', 'noinclude', 'onlyinclude' ];
$enableOnlyinclude = false;
if ( $forInclusion ) {
$ignoredTags = [ 'includeonly', '/includeonly' ];
@@ -160,6 +161,8 @@ class Preprocessor_Hash extends Preprocessor {
$inHeading = false;
// True if there are no more greater-than (>) signs right of $i
$noMoreGT = false;
+ // Map of tag name => true if there are no more closing tags of given type right of $i
+ $noMoreClosingTag = [];
// True to ignore all input up to the next
$findOnlyinclude = $enableOnlyinclude;
// Do a line-start run without outputting an LF character
@@ -380,17 +383,29 @@ class Preprocessor_Hash extends Preprocessor {
} else {
$attrEnd = $tagEndPos;
// Find closing tag
- if ( preg_match( "/<\/" . preg_quote( $name, '/' ) . "\s*>/i",
+ if (
+ !isset( $noMoreClosingTag[$name] ) &&
+ preg_match( "/<\/" . preg_quote( $name, '/' ) . "\s*>/i",
$text, $matches, PREG_OFFSET_CAPTURE, $tagEndPos + 1 )
) {
$inner = substr( $text, $tagEndPos + 1, $matches[0][1] - $tagEndPos - 1 );
$i = $matches[0][1] + strlen( $matches[0][0] );
$close = $matches[0][0];
} else {
- // No end tag -- let it run out to the end of the text.
- $inner = substr( $text, $tagEndPos + 1 );
- $i = $lengthText;
- $close = null;
+ // No end tag
+ if ( in_array( $name, $xmlishAllowMissingEndTag ) ) {
+ // Let it run out to the end of the text.
+ $inner = substr( $text, $tagEndPos + 1 );
+ $i = $lengthText;
+ $close = null;
+ } else {
+ // Don't match the tag, treat opening tag as literal and resume parsing.
+ $i = $tagEndPos + 1;
+ $accum->addLiteral( substr( $text, $tagStartPos, $tagEndPos + 1 - $tagStartPos ) );
+ // Cache results, otherwise we have O(N^2) performance for input like ...
+ $noMoreClosingTag[$name] = true;
+ continue;
+ }
}
}
// and just become tags
@@ -1355,8 +1370,8 @@ class PPFrame_Hash implements PPFrame {
}
/**
- * @param string $name
- * @return bool
+ * @param int|string $name
+ * @return bool Always false in this implementation.
*/
public function getArgument( $name ) {
return false;
@@ -1549,7 +1564,7 @@ class PPTemplateFrame_Hash extends PPFrame_Hash {
/**
* @param int $index
- * @return array|bool
+ * @return string|bool
*/
public function getNumberedArgument( $index ) {
if ( !isset( $this->numberedArgs[$index] ) ) {
@@ -1567,7 +1582,7 @@ class PPTemplateFrame_Hash extends PPFrame_Hash {
/**
* @param string $name
- * @return bool
+ * @return string|bool
*/
public function getNamedArgument( $name ) {
if ( !isset( $this->namedArgs[$name] ) ) {
@@ -1582,8 +1597,8 @@ class PPTemplateFrame_Hash extends PPFrame_Hash {
}
/**
- * @param string $name
- * @return array|bool
+ * @param int|string $name
+ * @return string|bool
*/
public function getArgument( $name ) {
$text = $this->getNumberedArgument( $name );
@@ -1652,8 +1667,8 @@ class PPCustomFrame_Hash extends PPFrame_Hash {
}
/**
- * @param int $index
- * @return bool
+ * @param int|string $index
+ * @return string|bool
*/
public function getArgument( $index ) {
if ( !isset( $this->args[$index] ) ) {
diff --git a/includes/registration/ExtensionProcessor.php b/includes/registration/ExtensionProcessor.php
index 7c60aa5af8..f977124cd4 100644
--- a/includes/registration/ExtensionProcessor.php
+++ b/includes/registration/ExtensionProcessor.php
@@ -34,6 +34,7 @@ class ExtensionProcessor implements Processor {
'LogTypes',
'LogRestrictions',
'FilterLogTypes',
+ 'ActionFilteredLogs',
'LogNames',
'LogHeaders',
'LogActions',
diff --git a/includes/registration/ExtensionRegistry.php b/includes/registration/ExtensionRegistry.php
index 33395f74ad..dc53ca455a 100644
--- a/includes/registration/ExtensionRegistry.php
+++ b/includes/registration/ExtensionRegistry.php
@@ -274,13 +274,12 @@ class ExtensionRegistry {
foreach ( $info['defines'] as $name => $val ) {
define( $name, $val );
}
- foreach ( $info['callbacks'] as $cb ) {
- call_user_func( $cb );
- }
-
foreach ( $info['autoloaderPaths'] as $path ) {
require_once $path;
}
+ foreach ( $info['callbacks'] as $cb ) {
+ call_user_func( $cb );
+ }
$this->loaded += $info['credits'];
if ( $info['attributes'] ) {
diff --git a/includes/resourceloader/ResourceLoader.php b/includes/resourceloader/ResourceLoader.php
index 0aa08bece7..086ab17cdb 100644
--- a/includes/resourceloader/ResourceLoader.php
+++ b/includes/resourceloader/ResourceLoader.php
@@ -1098,7 +1098,7 @@ MESSAGE;
$scripts = self::filter( 'minify-js', $scripts );
}
} else {
- $scripts = new XmlJsCode( "function ( $, jQuery ) {\n{$scripts}\n}" );
+ $scripts = new XmlJsCode( "function ( $, jQuery, require, module ) {\n{$scripts}\n}" );
}
} elseif ( !is_array( $scripts ) ) {
throw new MWException( 'Invalid scripts error. Array of URLs or string of code expected.' );
diff --git a/includes/resourceloader/ResourceLoaderImage.php b/includes/resourceloader/ResourceLoaderImage.php
index f784d0346c..87e5fd7b82 100644
--- a/includes/resourceloader/ResourceLoaderImage.php
+++ b/includes/resourceloader/ResourceLoaderImage.php
@@ -179,7 +179,7 @@ class ResourceLoaderImage {
'version' => $context->getVersion(),
];
- return wfExpandUrl( wfAppendQuery( $script, $query ), PROTO_RELATIVE );
+ return wfAppendQuery( $script, $query );
}
/**
diff --git a/includes/resourceloader/ResourceLoaderSpecialCharacterDataModule.php b/includes/resourceloader/ResourceLoaderSpecialCharacterDataModule.php
index 222135cbfc..44371bbee2 100644
--- a/includes/resourceloader/ResourceLoaderSpecialCharacterDataModule.php
+++ b/includes/resourceloader/ResourceLoaderSpecialCharacterDataModule.php
@@ -78,6 +78,7 @@ class ResourceLoaderSpecialCharacterDataModule extends ResourceLoaderModule {
'special-characters-group-ipa',
'special-characters-group-symbols',
'special-characters-group-greek',
+ 'special-characters-group-greekextended',
'special-characters-group-cyrillic',
'special-characters-group-arabic',
'special-characters-group-arabicextended',
diff --git a/includes/resourceloader/ResourceLoaderStartUpModule.php b/includes/resourceloader/ResourceLoaderStartUpModule.php
index d7651378a3..34866f3635 100644
--- a/includes/resourceloader/ResourceLoaderStartUpModule.php
+++ b/includes/resourceloader/ResourceLoaderStartUpModule.php
@@ -40,8 +40,17 @@ class ResourceLoaderStartUpModule extends ResourceLoaderModule {
}
global $wgContLang;
+ $conf = $this->getConfig();
- $mainPage = Title::newMainPage();
+ // We can't use Title::newMainPage() if 'mainpage' is in
+ // $wgForceUIMsgAsContentMsg because that will try to use the session
+ // user's language and we have no session user. This does the
+ // equivalent but falling back to our ResourceLoaderContext language
+ // instead.
+ $mainPage = Title::newFromText( $context->msg( 'mainpage' )->inContentLanguage()->text() );
+ if ( !$mainPage ) {
+ $mainPage = Title::newFromText( 'Main Page' );
+ }
/**
* Namespace related preparation
@@ -57,7 +66,6 @@ class ResourceLoaderStartUpModule extends ResourceLoaderModule {
}
}
- $conf = $this->getConfig();
// Build list of variables
$vars = [
'wgLoadScript' => wfScript( 'load' ),
diff --git a/includes/resourceloader/ResourceLoaderWikiModule.php b/includes/resourceloader/ResourceLoaderWikiModule.php
index 7b0d93a6c5..796dc20d87 100644
--- a/includes/resourceloader/ResourceLoaderWikiModule.php
+++ b/includes/resourceloader/ResourceLoaderWikiModule.php
@@ -298,7 +298,8 @@ class ResourceLoaderWikiModule extends ResourceLoaderModule {
if ( !$batch->isEmpty() ) {
$res = $dbr->select( [ 'page', 'revision' ],
- [ 'page_namespace', 'page_title', 'rev_len', 'rev_sha1' ],
+ // Include page_touched to allow purging if cache is poisoned (T117587, T113916)
+ [ 'page_namespace', 'page_title', 'page_touched', 'rev_len', 'rev_sha1' ],
$batch->constructSet( 'page', $dbr ),
__METHOD__,
[],
@@ -311,6 +312,7 @@ class ResourceLoaderWikiModule extends ResourceLoaderModule {
$this->titleInfo[$key][$title->getPrefixedText()] = [
'rev_len' => $row->rev_len,
'rev_sha1' => $row->rev_sha1,
+ 'page_touched' => $row->page_touched,
];
}
}
diff --git a/includes/search/SearchEngine.php b/includes/search/SearchEngine.php
index b263fb39e9..3d2057c528 100644
--- a/includes/search/SearchEngine.php
+++ b/includes/search/SearchEngine.php
@@ -25,11 +25,13 @@
* @defgroup Search Search
*/
+use MediaWiki\MediaWikiServices;
+
/**
* Contain a class for special pages
* @ingroup Search
*/
-class SearchEngine {
+abstract class SearchEngine {
/** @var string */
public $prefix = '';
@@ -124,155 +126,55 @@ class SearchEngine {
* @param string $term
* @return string
*/
- function transformSearchTerm( $term ) {
+ public function transformSearchTerm( $term ) {
return $term;
}
+ /**
+ * Get service class to finding near matches.
+ * @param Config $config Configuration to use for the matcher.
+ * @return SearchNearMatcher
+ */
+ public function getNearMatcher( Config $config ) {
+ return new SearchNearMatcher( $config );
+ }
+
+ /**
+ * Get near matcher for default SearchEngine.
+ * @return SearchNearMatcher
+ */
+ protected static function defaultNearMatcher() {
+ $config = MediaWikiServices::getInstance()->getMainConfig();
+ return MediaWikiServices::getInstance()->newSearchEngine()->getNearMatcher( $config );
+ }
+
/**
* If an exact title match can be found, or a very slightly close match,
* return the title. If no match, returns NULL.
- *
+ * @deprecated since 1.27; Use SearchEngine::getNearMatcher()
* @param string $searchterm
* @return Title
*/
public static function getNearMatch( $searchterm ) {
- $title = self::getNearMatchInternal( $searchterm );
-
- Hooks::run( 'SearchGetNearMatchComplete', [ $searchterm, &$title ] );
- return $title;
+ return static::defaultNearMatcher()->getNearMatch( $searchterm );
}
/**
* Do a near match (see SearchEngine::getNearMatch) and wrap it into a
* SearchResultSet.
- *
+ * @deprecated since 1.27; Use SearchEngine::getNearMatcher()
* @param string $searchterm
* @return SearchResultSet
*/
public static function getNearMatchResultSet( $searchterm ) {
- return new SearchNearMatchResultSet( self::getNearMatch( $searchterm ) );
+ return static::defaultNearMatcher()->getNearMatchResultSet( $searchterm );
}
/**
- * Really find the title match.
- * @param string $searchterm
- * @return null|Title
+ * Get chars legal for search.
+ * NOTE: usage as static is deprecated and preserved only as BC measure
+ * @return string
*/
- private static function getNearMatchInternal( $searchterm ) {
- global $wgContLang, $wgEnableSearchContributorsByIP;
-
- $allSearchTerms = [ $searchterm ];
-
- if ( $wgContLang->hasVariants() ) {
- $allSearchTerms = array_unique( array_merge(
- $allSearchTerms,
- $wgContLang->autoConvertToAllVariants( $searchterm )
- ) );
- }
-
- $titleResult = null;
- if ( !Hooks::run( 'SearchGetNearMatchBefore', [ $allSearchTerms, &$titleResult ] ) ) {
- return $titleResult;
- }
-
- foreach ( $allSearchTerms as $term ) {
-
- # Exact match? No need to look further.
- $title = Title::newFromText( $term );
- if ( is_null( $title ) ) {
- return null;
- }
-
- # Try files if searching in the Media: namespace
- if ( $title->getNamespace() == NS_MEDIA ) {
- $title = Title::makeTitle( NS_FILE, $title->getText() );
- }
-
- if ( $title->isSpecialPage() || $title->isExternal() || $title->exists() ) {
- return $title;
- }
-
- # See if it still otherwise has content is some sane sense
- $page = WikiPage::factory( $title );
- if ( $page->hasViewableContent() ) {
- return $title;
- }
-
- if ( !Hooks::run( 'SearchAfterNoDirectMatch', [ $term, &$title ] ) ) {
- return $title;
- }
-
- # Now try all lower case (i.e. first letter capitalized)
- $title = Title::newFromText( $wgContLang->lc( $term ) );
- if ( $title && $title->exists() ) {
- return $title;
- }
-
- # Now try capitalized string
- $title = Title::newFromText( $wgContLang->ucwords( $term ) );
- if ( $title && $title->exists() ) {
- return $title;
- }
-
- # Now try all upper case
- $title = Title::newFromText( $wgContLang->uc( $term ) );
- if ( $title && $title->exists() ) {
- return $title;
- }
-
- # Now try Word-Caps-Breaking-At-Word-Breaks, for hyphenated names etc
- $title = Title::newFromText( $wgContLang->ucwordbreaks( $term ) );
- if ( $title && $title->exists() ) {
- return $title;
- }
-
- // Give hooks a chance at better match variants
- $title = null;
- if ( !Hooks::run( 'SearchGetNearMatch', [ $term, &$title ] ) ) {
- return $title;
- }
- }
-
- $title = Title::newFromText( $searchterm );
-
- # Entering an IP address goes to the contributions page
- if ( $wgEnableSearchContributorsByIP ) {
- if ( ( $title->getNamespace() == NS_USER && User::isIP( $title->getText() ) )
- || User::isIP( trim( $searchterm ) ) ) {
- return SpecialPage::getTitleFor( 'Contributions', $title->getDBkey() );
- }
- }
-
- # Entering a user goes to the user page whether it's there or not
- if ( $title->getNamespace() == NS_USER ) {
- return $title;
- }
-
- # Go to images that exist even if there's no local page.
- # There may have been a funny upload, or it may be on a shared
- # file repository such as Wikimedia Commons.
- if ( $title->getNamespace() == NS_FILE ) {
- $image = wfFindFile( $title );
- if ( $image ) {
- return $title;
- }
- }
-
- # MediaWiki namespace? Page may be "implied" if not customized.
- # Just return it, with caps forced as the message system likes it.
- if ( $title->getNamespace() == NS_MEDIAWIKI ) {
- return Title::makeTitle( NS_MEDIAWIKI, $wgContLang->ucfirst( $title->getText() ) );
- }
-
- # Quoted term? Try without the quotes...
- $matches = [];
- if ( preg_match( '/^"([^"]+)"$/', $searchterm, $matches ) ) {
- return SearchEngine::getNearMatch( $matches[1] );
- }
-
- return null;
- }
-
public static function legalSearchChars() {
return "A-Za-z_'.0-9\\x80-\\xFF\\-";
}
@@ -390,44 +292,8 @@ class SearchEngine {
return $parsed;
}
- /**
- * Make a list of searchable namespaces and their canonical names.
- * @return array
- */
- public static function searchableNamespaces() {
- global $wgContLang;
- $arr = [];
- foreach ( $wgContLang->getNamespaces() as $ns => $name ) {
- if ( $ns >= NS_MAIN ) {
- $arr[$ns] = $name;
- }
- }
-
- Hooks::run( 'SearchableNamespaces', [ &$arr ] );
- return $arr;
- }
-
- /**
- * Extract default namespaces to search from the given user's
- * settings, returning a list of index numbers.
- *
- * @param user $user
- * @return array
- */
- public static function userNamespaces( $user ) {
- $arr = [];
- foreach ( SearchEngine::searchableNamespaces() as $ns => $name ) {
- if ( $user->getOption( 'searchNs' . $ns ) ) {
- $arr[] = $ns;
- }
- }
-
- return $arr;
- }
-
/**
* Find snippet highlight settings for all users
- *
* @return array Contextlines, contextchars
*/
public static function userHighlightPrefs() {
@@ -436,77 +302,6 @@ class SearchEngine {
return [ $contextlines, $contextchars ];
}
- /**
- * An array of namespaces indexes to be searched by default
- *
- * @return array
- */
- public static function defaultNamespaces() {
- global $wgNamespacesToBeSearchedDefault;
-
- return array_keys( $wgNamespacesToBeSearchedDefault, true );
- }
-
- /**
- * Get a list of namespace names useful for showing in tooltips
- * and preferences
- *
- * @param array $namespaces
- * @return array
- */
- public static function namespacesAsText( $namespaces ) {
- global $wgContLang;
-
- $formatted = array_map( [ $wgContLang, 'getFormattedNsText' ], $namespaces );
- foreach ( $formatted as $key => $ns ) {
- if ( empty( $ns ) ) {
- $formatted[$key] = wfMessage( 'blanknamespace' )->text();
- }
- }
- return $formatted;
- }
-
- /**
- * Load up the appropriate search engine class for the currently
- * active database backend, and return a configured instance.
- *
- * @param string $type Type of search backend, if not the default
- * @return SearchEngine
- */
- public static function create( $type = null ) {
- global $wgSearchType;
- $dbr = null;
-
- $alternatives = self::getSearchTypes();
-
- if ( $type && in_array( $type, $alternatives ) ) {
- $class = $type;
- } elseif ( $wgSearchType !== null ) {
- $class = $wgSearchType;
- } else {
- $dbr = wfGetDB( DB_SLAVE );
- $class = $dbr->getSearchEngine();
- }
-
- $search = new $class( $dbr );
- return $search;
- }
-
- /**
- * Return the search engines we support. If only $wgSearchType
- * is set, it'll be an array of just that one item.
- *
- * @return array
- */
- public static function getSearchTypes() {
- global $wgSearchType, $wgSearchTypeAlternatives;
-
- $alternatives = $wgSearchTypeAlternatives ?: [];
- array_unshift( $alternatives, $wgSearchType );
-
- return $alternatives;
- }
-
/**
* Create or update the search index record for the given page.
* Title and text should be pre-processed.
@@ -774,6 +569,67 @@ class SearchEngine {
return $backend->defaultSearchBackend( $this->namespaces, $search, $this->limit, $this->offset );
}
+ /**
+ * Make a list of searchable namespaces and their canonical names.
+ * @deprecated since 1.27; use SearchEngineConfig::searchableNamespaces()
+ * @return array
+ */
+ public static function searchableNamespaces() {
+ return MediaWikiServices::getInstance()->getSearchEngineConfig()->searchableNamespaces();
+ }
+
+ /**
+ * Extract default namespaces to search from the given user's
+ * settings, returning a list of index numbers.
+ * @deprecated since 1.27; use SearchEngineConfig::userNamespaces()
+ * @param user $user
+ * @return array
+ */
+ public static function userNamespaces( $user ) {
+ return MediaWikiServices::getInstance()->getSearchEngineConfig()->userNamespaces( $user );
+ }
+
+ /**
+ * An array of namespaces indexes to be searched by default
+ * @deprecated since 1.27; use SearchEngineConfig::defaultNamespaces()
+ * @return array
+ */
+ public static function defaultNamespaces() {
+ return MediaWikiServices::getInstance()->getSearchEngineConfig()->defaultNamespaces();
+ }
+
+ /**
+ * Get a list of namespace names useful for showing in tooltips
+ * and preferences
+ * @deprecated since 1.27; use SearchEngineConfig::namespacesAsText()
+ * @param array $namespaces
+ * @return array
+ */
+ public static function namespacesAsText( $namespaces ) {
+ return MediaWikiServices::getInstance()->getSearchEngineConfig()->namespacesAsText();
+ }
+
+ /**
+ * Load up the appropriate search engine class for the currently
+ * active database backend, and return a configured instance.
+ * @deprecated since 1.27; Use SearchEngineFactory::create
+ * @param string $type Type of search backend, if not the default
+ * @return SearchEngine
+ */
+ public static function create( $type = null ) {
+ return MediaWikiServices::getInstance()->getSearchEngineFactory()->create( $type );
+ }
+
+ /**
+ * Return the search engines we support. If only $wgSearchType
+ * is set, it'll be an array of just that one item.
+ * @deprecated since 1.27; use SearchEngineConfig::getSearchTypes()
+ * @return array
+ */
+ public static function getSearchTypes() {
+ return MediaWikiServices::getInstance()->getSearchEngineConfig()->getSearchTypes();
+ }
+
}
/**
diff --git a/includes/search/SearchEngineConfig.php b/includes/search/SearchEngineConfig.php
new file mode 100644
index 0000000000..3d996baa6a
--- /dev/null
+++ b/includes/search/SearchEngineConfig.php
@@ -0,0 +1,110 @@
+config = $config;
+ }
+
+ /**
+ * Retrieve original config.
+ * @return Config
+ */
+ public function getConfig() {
+ return $this->config;
+ }
+
+ /**
+ * Make a list of searchable namespaces and their canonical names.
+ * @return array Namespace ID => name
+ */
+ public function searchableNamespaces() {
+ $arr = [];
+ foreach ( $this->config->get( 'ContLang' )->getNamespaces() as $ns => $name ) {
+ if ( $ns >= NS_MAIN ) {
+ $arr[$ns] = $name;
+ }
+ }
+
+ Hooks::run( 'SearchableNamespaces', [ &$arr ] );
+ return $arr;
+ }
+
+ /**
+ * Extract default namespaces to search from the given user's
+ * settings, returning a list of index numbers.
+ *
+ * @param user $user
+ * @return int[]
+ */
+ public function userNamespaces( $user ) {
+ $arr = [];
+ foreach ( $this->searchableNamespaces() as $ns => $name ) {
+ if ( $user->getOption( 'searchNs' . $ns ) ) {
+ $arr[] = $ns;
+ }
+ }
+
+ return $arr;
+ }
+
+ /**
+ * An array of namespaces indexes to be searched by default
+ *
+ * @return int[] Namespace IDs
+ */
+ public function defaultNamespaces() {
+ return array_keys( $this->config->get( 'NamespacesToBeSearchedDefault' ), true );
+ }
+
+ /**
+ * Return the search engines we support. If only $wgSearchType
+ * is set, it'll be an array of just that one item.
+ *
+ * @return array
+ */
+ public function getSearchTypes() {
+ $alternatives = $this->config->get( 'SearchTypeAlternatives' ) ?: [];
+ array_unshift( $alternatives, $this->config->get( 'SearchType' ) );
+
+ return $alternatives;
+ }
+
+ /**
+ * Return the search engine configured in $wgSearchType, etc.
+ *
+ * @return string|null
+ */
+ public function getSearchType() {
+ return $this->config->get( 'SearchType' );
+ }
+
+ /**
+ * Get a list of namespace names useful for showing in tooltips
+ * and preferences.
+ *
+ * @param int[] $namespaces
+ * @return string[] List of names
+ */
+ public function namespacesAsText( $namespaces ) {
+ $formatted = array_map( [ $this->config->get( 'ContLang' ), 'getFormattedNsText' ], $namespaces );
+ foreach ( $formatted as $key => $ns ) {
+ if ( empty( $ns ) ) {
+ $formatted[$key] = wfMessage( 'blanknamespace' )->text();
+ }
+ }
+ return $formatted;
+ }
+}
diff --git a/includes/search/SearchEngineFactory.php b/includes/search/SearchEngineFactory.php
new file mode 100644
index 0000000000..67f500c1ce
--- /dev/null
+++ b/includes/search/SearchEngineFactory.php
@@ -0,0 +1,42 @@
+config = $config;
+ }
+
+ /**
+ * Create SearchEngine of the given type.
+ * @param string $type
+ * @return SearchEngine
+ */
+ public function create( $type = null ) {
+ $dbr = null;
+
+ $configType = $this->config->getSearchType();
+ $alternatives = $this->config->getSearchTypes();
+
+ if ( $type && in_array( $type, $alternatives ) ) {
+ $class = $type;
+ } elseif ( $configType !== null ) {
+ $class = $configType;
+ } else {
+ $dbr = wfGetDB( DB_SLAVE );
+ $class = $dbr->getSearchEngine();
+ }
+
+ $search = new $class( $dbr );
+ return $search;
+ }
+}
diff --git a/includes/search/SearchExactMatchRescorer.php b/includes/search/SearchExactMatchRescorer.php
index d3b9d5cb0f..40cfe39305 100644
--- a/includes/search/SearchExactMatchRescorer.php
+++ b/includes/search/SearchExactMatchRescorer.php
@@ -41,7 +41,7 @@ class SearchExactMatchRescorer {
*/
public function rescore( $search, $namespaces, $srchres, $limit ) {
// Pick namespace (based on PrefixSearch::defaultSearchBackend)
- $ns = in_array( NS_MAIN, $namespaces ) ? NS_MAIN : $namespaces[0];
+ $ns = in_array( NS_MAIN, $namespaces ) ? NS_MAIN : reset( $namespaces );
$t = Title::newFromText( $search, $ns );
if ( !$t || !$t->exists() ) {
// No exact match so just return the search results
diff --git a/includes/search/SearchNearMatchResultSet.php b/includes/search/SearchNearMatchResultSet.php
index cb4f81d8b8..6d667074ee 100644
--- a/includes/search/SearchNearMatchResultSet.php
+++ b/includes/search/SearchNearMatchResultSet.php
@@ -1,6 +1,6 @@
fetched = true;
return SearchResult::newFromTitle( $this->result );
}
+
+ public function rewind() {
+ $this->fetched = false;
+ }
}
diff --git a/includes/search/SearchNearMatcher.php b/includes/search/SearchNearMatcher.php
new file mode 100644
index 0000000000..bb7cd579be
--- /dev/null
+++ b/includes/search/SearchNearMatcher.php
@@ -0,0 +1,163 @@
+config = $config;
+ }
+
+ /**
+ * If an exact title match can be found, or a very slightly close match,
+ * return the title. If no match, returns NULL.
+ *
+ * @param string $searchterm
+ * @return Title
+ */
+ public function getNearMatch( $searchterm ) {
+ $title = $this->getNearMatchInternal( $searchterm );
+
+ Hooks::run( 'SearchGetNearMatchComplete', [ $searchterm, &$title ] );
+ return $title;
+ }
+
+ /**
+ * Do a near match (see SearchEngine::getNearMatch) and wrap it into a
+ * SearchResultSet.
+ *
+ * @param string $searchterm
+ * @return SearchResultSet
+ */
+ public function getNearMatchResultSet( $searchterm ) {
+ return new SearchNearMatchResultSet( $this->getNearMatch( $searchterm ) );
+ }
+
+ /**
+ * Really find the title match.
+ * @param string $searchterm
+ * @return null|Title
+ */
+ protected function getNearMatchInternal( $searchterm ) {
+ $lang = $this->config->get( 'ContLang' );
+
+ $allSearchTerms = [ $searchterm ];
+
+ if ( $lang->hasVariants() ) {
+ $allSearchTerms = array_unique( array_merge(
+ $allSearchTerms,
+ $lang->autoConvertToAllVariants( $searchterm )
+ ) );
+ }
+
+ $titleResult = null;
+ if ( !Hooks::run( 'SearchGetNearMatchBefore', [ $allSearchTerms, &$titleResult ] ) ) {
+ return $titleResult;
+ }
+
+ foreach ( $allSearchTerms as $term ) {
+
+ # Exact match? No need to look further.
+ $title = Title::newFromText( $term );
+ if ( is_null( $title ) ) {
+ return null;
+ }
+
+ # Try files if searching in the Media: namespace
+ if ( $title->getNamespace() == NS_MEDIA ) {
+ $title = Title::makeTitle( NS_FILE, $title->getText() );
+ }
+
+ if ( $title->isSpecialPage() || $title->isExternal() || $title->exists() ) {
+ return $title;
+ }
+
+ # See if it still otherwise has content is some sane sense
+ $page = WikiPage::factory( $title );
+ if ( $page->hasViewableContent() ) {
+ return $title;
+ }
+
+ if ( !Hooks::run( 'SearchAfterNoDirectMatch', [ $term, &$title ] ) ) {
+ return $title;
+ }
+
+ # Now try all lower case (i.e. first letter capitalized)
+ $title = Title::newFromText( $lang->lc( $term ) );
+ if ( $title && $title->exists() ) {
+ return $title;
+ }
+
+ # Now try capitalized string
+ $title = Title::newFromText( $lang->ucwords( $term ) );
+ if ( $title && $title->exists() ) {
+ return $title;
+ }
+
+ # Now try all upper case
+ $title = Title::newFromText( $lang->uc( $term ) );
+ if ( $title && $title->exists() ) {
+ return $title;
+ }
+
+ # Now try Word-Caps-Breaking-At-Word-Breaks, for hyphenated names etc
+ $title = Title::newFromText( $lang->ucwordbreaks( $term ) );
+ if ( $title && $title->exists() ) {
+ return $title;
+ }
+
+ // Give hooks a chance at better match variants
+ $title = null;
+ if ( !Hooks::run( 'SearchGetNearMatch', [ $term, &$title ] ) ) {
+ return $title;
+ }
+ }
+
+ $title = Title::newFromText( $searchterm );
+
+ # Entering an IP address goes to the contributions page
+ if ( $this->config->get( 'EnableSearchContributorsByIP' ) ) {
+ if ( ( $title->getNamespace() == NS_USER && User::isIP( $title->getText() ) )
+ || User::isIP( trim( $searchterm ) ) ) {
+ return SpecialPage::getTitleFor( 'Contributions', $title->getDBkey() );
+ }
+ }
+
+ # Entering a user goes to the user page whether it's there or not
+ if ( $title->getNamespace() == NS_USER ) {
+ return $title;
+ }
+
+ # Go to images that exist even if there's no local page.
+ # There may have been a funny upload, or it may be on a shared
+ # file repository such as Wikimedia Commons.
+ if ( $title->getNamespace() == NS_FILE ) {
+ $image = wfFindFile( $title );
+ if ( $image ) {
+ return $title;
+ }
+ }
+
+ # MediaWiki namespace? Page may be "implied" if not customized.
+ # Just return it, with caps forced as the message system likes it.
+ if ( $title->getNamespace() == NS_MEDIAWIKI ) {
+ return Title::makeTitle( NS_MEDIAWIKI, $lang->ucfirst( $title->getText() ) );
+ }
+
+ # Quoted term? Try without the quotes...
+ $matches = [];
+ if ( preg_match( '/^"([^"]+)"$/', $searchterm, $matches ) ) {
+ return self::getNearMatch( $matches[1] );
+ }
+
+ return null;
+ }
+}
diff --git a/includes/search/SearchResult.php b/includes/search/SearchResult.php
index 6c406e7e16..21effbbc98 100644
--- a/includes/search/SearchResult.php
+++ b/includes/search/SearchResult.php
@@ -21,6 +21,8 @@
* @ingroup Search
*/
+use MediaWiki\MediaWikiServices;
+
/**
* @todo FIXME: This class is horribly factored. It would probably be better to
* have a useful base class to which you pass some standard information, then
@@ -49,6 +51,11 @@ class SearchResult {
*/
protected $mText;
+ /**
+ * @var SearchEngine
+ */
+ protected $searchEngine;
+
/**
* Return a new SearchResult and initializes it with a title.
*
@@ -56,7 +63,7 @@ class SearchResult {
* @return SearchResult
*/
public static function newFromTitle( $title ) {
- $result = new self();
+ $result = new static();
$result->initFromTitle( $title );
return $result;
}
@@ -78,6 +85,7 @@ class SearchResult {
$this->mImage = wfFindFile( $this->mTitle );
}
}
+ $this->searchEngine = MediaWikiServices::getInstance()->newSearchEngine();
}
/**
@@ -119,8 +127,8 @@ class SearchResult {
protected function initText() {
if ( !isset( $this->mText ) ) {
if ( $this->mRevision != null ) {
- $this->mText = SearchEngine::create()
- ->getTextFromContent( $this->mTitle, $this->mRevision->getContent() );
+ $this->mText = $this->searchEngine->getTextFromContent(
+ $this->mTitle, $this->mRevision->getContent() );
} else { // TODO: can we fetch raw wikitext for commons images?
$this->mText = '';
}
@@ -136,7 +144,7 @@ class SearchResult {
$this->initText();
// TODO: make highliter take a content object. Make ContentHandler a factory for SearchHighliter.
- list( $contextlines, $contextchars ) = SearchEngine::userHighlightPrefs();
+ list( $contextlines, $contextchars ) = $this->searchEngine->userHighlightPrefs();
$h = new SearchHighlighter();
if ( count( $terms ) > 0 ) {
diff --git a/includes/search/SearchResultSet.php b/includes/search/SearchResultSet.php
index bfee698f12..69795e792b 100644
--- a/includes/search/SearchResultSet.php
+++ b/includes/search/SearchResultSet.php
@@ -129,7 +129,7 @@ class SearchResultSet {
/**
* Return a result set of hits on other (multiple) wikis associated with this one
*
- * @return SearchResultSet
+ * @return SearchResultSet[]
*/
function getInterwikiResults( $type = self::SECONDARY_RESULTS ) {
return null;
@@ -154,6 +154,12 @@ class SearchResultSet {
return false;
}
+ /**
+ * Rewind result set back to begining
+ */
+ function rewind() {
+ }
+
/**
* Frees the result set, if applicable.
*/
diff --git a/includes/search/SearchSuggestion.php b/includes/search/SearchSuggestion.php
index cd9062b16f..80a437b6c9 100644
--- a/includes/search/SearchSuggestion.php
+++ b/includes/search/SearchSuggestion.php
@@ -84,7 +84,7 @@ class SearchSuggestion {
*/
public function setText( $text, $setTitle = true ) {
$this->text = $text;
- if ( $setTitle && $text ) {
+ if ( $setTitle && $text !== '' && $text !== null ) {
$this->setSuggestedTitle( Title::makeTitle( 0, $text ) );
}
}
diff --git a/includes/search/SqlSearchResultSet.php b/includes/search/SqlSearchResultSet.php
index 7a6aaf75f0..6b60899f10 100644
--- a/includes/search/SqlSearchResultSet.php
+++ b/includes/search/SqlSearchResultSet.php
@@ -8,7 +8,7 @@ class SqlSearchResultSet extends SearchResultSet {
protected $terms;
protected $totalHits;
- function __construct( $resultSet, $terms, $total = null ) {
+ function __construct( ResultWrapper $resultSet, $terms, $total = null ) {
$this->resultSet = $resultSet;
$this->terms = $terms;
$this->totalHits = $total;
@@ -41,6 +41,12 @@ class SqlSearchResultSet extends SearchResultSet {
);
}
+ function rewind() {
+ if ( $this->resultSet ) {
+ $this->resultSet->rewind();
+ }
+ }
+
function free() {
if ( $this->resultSet === false ) {
return false;
diff --git a/includes/session/Session.php b/includes/session/Session.php
index 0fd8fa8a31..4188f4f308 100644
--- a/includes/session/Session.php
+++ b/includes/session/Session.php
@@ -335,7 +335,7 @@ final class Session implements \Countable, \Iterator, \ArrayAccess {
*
* @param string|string[] $salt Token salt
* @param string $key Token key
- * @return MediaWiki\\Session\\SessionToken
+ * @return Token
*/
public function getToken( $salt = '', $key = 'default' ) {
$new = false;
diff --git a/includes/session/SessionBackend.php b/includes/session/SessionBackend.php
index 1e2b476baf..264e1ae0ef 100644
--- a/includes/session/SessionBackend.php
+++ b/includes/session/SessionBackend.php
@@ -31,7 +31,7 @@ use WebRequest;
/**
* This is the actual workhorse for Session.
*
- * Most code does not need to use this class, you want \\MediaWiki\\Session\\Session.
+ * Most code does not need to use this class, you want \MediaWiki\Session\Session.
* The exceptions are SessionProviders and SessionMetadata hook functions,
* which get an instance of this class rather than Session.
*
@@ -94,6 +94,8 @@ final class SessionBackend {
private $usePhpSessionHandling = true;
private $checkPHPSessionRecursionGuard = false;
+ private $shutdown = false;
+
/**
* @param SessionId $id Session ID object
* @param SessionInfo $info Session info to populate from
@@ -176,17 +178,26 @@ final class SessionBackend {
/**
* Deregister a Session
- * @private For use by \\MediaWiki\\Session\\Session::__destruct() only
+ * @private For use by \MediaWiki\Session\Session::__destruct() only
* @param int $index
*/
public function deregisterSession( $index ) {
unset( $this->requests[$index] );
- if ( !count( $this->requests ) ) {
+ if ( !$this->shutdown && !count( $this->requests ) ) {
$this->save( true );
$this->provider->getManager()->deregisterSessionBackend( $this );
}
}
+ /**
+ * Shut down a session
+ * @private For use by \MediaWiki\Session\SessionManager::shutdown() only
+ */
+ public function shutdown() {
+ $this->save( true );
+ $this->shutdown = true;
+ }
+
/**
* Returns the session ID.
* @return string
@@ -498,7 +509,7 @@ final class SessionBackend {
* Note the caller is responsible for calling $this->dirty() if anything in
* the array is changed.
*
- * @private For use by \\MediaWiki\\Session\\Session only.
+ * @private For use by \MediaWiki\Session\Session only.
* @return array
*/
public function &getData() {
@@ -530,7 +541,7 @@ final class SessionBackend {
/**
* Mark data as dirty
- * @private For use by \\MediaWiki\\Session\\Session only.
+ * @private For use by \MediaWiki\Session\Session only.
*/
public function dirty() {
$this->dataDirty = true;
diff --git a/includes/session/SessionId.php b/includes/session/SessionId.php
index 0669100784..33ea046ce4 100644
--- a/includes/session/SessionId.php
+++ b/includes/session/SessionId.php
@@ -56,7 +56,7 @@ final class SessionId {
/**
* Set the ID
- * @private For use by \\MediaWiki\\Session\\SessionManager only
+ * @private For use by \MediaWiki\Session\SessionManager only
* @param string $id
*/
public function setId( $id ) {
diff --git a/includes/session/SessionManager.php b/includes/session/SessionManager.php
index da7bc57334..a364045aae 100644
--- a/includes/session/SessionManager.php
+++ b/includes/session/SessionManager.php
@@ -23,6 +23,7 @@
namespace MediaWiki\Session;
+use MWException;
use Psr\Log\LoggerInterface;
use BagOStuff;
use CachedBagOStuff;
@@ -498,10 +499,12 @@ final class SessionManager implements SessionManagerInterface {
'username' => $userName,
] );
} else {
- $logger->error( __METHOD__ . ': failed with message ' . $status->getWikiText(),
+ $logger->error(
+ __METHOD__ . ': failed with message ' . $status->getWikiText( false, false, 'en' ),
[
'username' => $userName,
- ] );
+ ]
+ );
}
$user->setId( $id );
$user->loadFromId( User::READ_LATEST );
@@ -552,7 +555,7 @@ final class SessionManager implements SessionManagerInterface {
* The intention is that the named account will never again be usable for
* normal login (i.e. there is no way to undo the prevention of access).
*
- * @private For use from \\User::newSystemUser only
+ * @private For use from \User::newSystemUser only
* @param string $username
*/
public function preventSessionsForUser( $username ) {
@@ -623,7 +626,7 @@ final class SessionManager implements SessionManagerInterface {
}
// @codeCoverageIgnoreEnd
foreach ( $this->allSessionBackends as $backend ) {
- $backend->save( true );
+ $backend->shutdown();
}
}
}
@@ -1026,7 +1029,7 @@ final class SessionManager implements SessionManagerInterface {
/**
* Deregister a SessionBackend
- * @private For use from \\MediaWiki\\Session\\SessionBackend only
+ * @private For use from \MediaWiki\Session\SessionBackend only
* @param SessionBackend $backend
*/
public function deregisterSessionBackend( SessionBackend $backend ) {
@@ -1044,7 +1047,7 @@ final class SessionManager implements SessionManagerInterface {
/**
* Change a SessionBackend's ID
- * @private For use from \\MediaWiki\\Session\\SessionBackend only
+ * @private For use from \MediaWiki\Session\SessionBackend only
* @param SessionBackend $backend
*/
public function changeBackendId( SessionBackend $backend ) {
diff --git a/includes/session/SessionManagerInterface.php b/includes/session/SessionManagerInterface.php
index 14af630bc0..b3e28fe127 100644
--- a/includes/session/SessionManagerInterface.php
+++ b/includes/session/SessionManagerInterface.php
@@ -43,7 +43,7 @@ interface SessionManagerInterface extends LoggerAwareInterface {
* @param WebRequest $request Any existing associated session will be reset
* to the session corresponding to the data in the request itself.
* @return Session
- * @throws \\OverflowException if there are multiple sessions tied for top
+ * @throws \OverflowException if there are multiple sessions tied for top
* priority in the request. Exception has a property "sessionInfos"
* holding the SessionInfo objects for the sessions involved.
*/
diff --git a/includes/session/SessionProvider.php b/includes/session/SessionProvider.php
index 1975ee8344..8ee1272294 100644
--- a/includes/session/SessionProvider.php
+++ b/includes/session/SessionProvider.php
@@ -145,7 +145,7 @@ abstract class SessionProvider implements SessionProviderInterface, LoggerAwareI
* @note The SessionProvider must not attempt to auto-create users.
* MediaWiki will do this later (when it's safe) if the chosen session has
* a user with a valid name but no ID.
- * @protected For use by \\MediaWiki\\Session\\SessionManager only
+ * @protected For use by \MediaWiki\Session\SessionManager only
* @param WebRequest $request
* @return SessionInfo|null
*/
@@ -158,7 +158,7 @@ abstract class SessionProvider implements SessionProviderInterface, LoggerAwareI
* implementation assumes that it only makes sense if a session ID can be
* persisted and changing users is allowed.
*
- * @protected For use by \\MediaWiki\\Session\\SessionManager only
+ * @protected For use by \MediaWiki\Session\SessionManager only
* @param string|null $id ID to force for the new session
* @return SessionInfo|null
* If non-null, must return true for $info->isIdSafe(); pass true for
@@ -182,7 +182,7 @@ abstract class SessionProvider implements SessionProviderInterface, LoggerAwareI
* The default implementation checks that anything in both arrays is
* identical, then returns $providedMetadata.
*
- * @protected For use by \\MediaWiki\\Session\\SessionManager only
+ * @protected For use by \MediaWiki\Session\SessionManager only
* @param array $savedMetadata Saved provider metadata
* @param array $providedMetadata Provided provider metadata
* @return array Resulting metadata
@@ -209,7 +209,7 @@ abstract class SessionProvider implements SessionProviderInterface, LoggerAwareI
* allows for updating the provider metadata. On failure, the provider is
* expected to write an appropriate message to its logger.
*
- * @protected For use by \\MediaWiki\\Session\\SessionManager only
+ * @protected For use by \MediaWiki\Session\SessionManager only
* @param SessionInfo $info
* @param WebRequest $request
* @param array|null &$metadata Provider metadata, may be altered.
@@ -242,7 +242,7 @@ abstract class SessionProvider implements SessionProviderInterface, LoggerAwareI
* the session ID into a cookie can easily just set the cookie to a
* different value.
*
- * @protected For use by \\MediaWiki\\Session\\SessionBackend only
+ * @protected For use by \MediaWiki\Session\SessionBackend only
* @return bool
*/
abstract public function persistsSessionId();
@@ -269,7 +269,7 @@ abstract class SessionProvider implements SessionProviderInterface, LoggerAwareI
* different user. A session provider that shoves information into cookies,
* on the other hand, could easily do so.
*
- * @protected For use by \\MediaWiki\\Session\\SessionBackend only
+ * @protected For use by \MediaWiki\Session\SessionBackend only
* @return bool
*/
abstract public function canChangeUser();
@@ -279,7 +279,7 @@ abstract class SessionProvider implements SessionProviderInterface, LoggerAwareI
*
* No need to persist here, persistSession() will be called if appropriate.
*
- * @protected For use by \\MediaWiki\\Session\\SessionBackend only
+ * @protected For use by \MediaWiki\Session\SessionBackend only
* @param SessionBackend $session Session to persist
* @param string $oldId Old session ID
* @codeCoverageIgnore
@@ -310,7 +310,7 @@ abstract class SessionProvider implements SessionProviderInterface, LoggerAwareI
* A backend that cannot persist sesison ID or user info should implement
* this as a no-op.
*
- * @protected For use by \\MediaWiki\\Session\\SessionBackend only
+ * @protected For use by \MediaWiki\Session\SessionBackend only
* @param SessionBackend $session Session to persist
* @param WebRequest $request Request into which to persist the session
*/
@@ -324,7 +324,7 @@ abstract class SessionProvider implements SessionProviderInterface, LoggerAwareI
* A backend that cannot persist sesison ID or user info should implement
* this as a no-op.
*
- * @protected For use by \\MediaWiki\\Session\\SessionManager only
+ * @protected For use by \MediaWiki\Session\SessionManager only
* @param WebRequest $request Request from which to remove any session data
*/
abstract public function unpersistSession( WebRequest $request );
@@ -347,7 +347,7 @@ abstract class SessionProvider implements SessionProviderInterface, LoggerAwareI
* User::idFromName( $username ) === 0); the name should still be
* prevented, if applicable.
*
- * @protected For use by \\MediaWiki\\Session\\SessionManager only
+ * @protected For use by \MediaWiki\Session\SessionManager only
* @param string $username
*/
public function preventSessionsForUser( $username ) {
@@ -368,7 +368,7 @@ abstract class SessionProvider implements SessionProviderInterface, LoggerAwareI
* }
* @endcode
*
- * @protected For use by \\MediaWiki\\Session\\SessionManager only
+ * @protected For use by \MediaWiki\Session\SessionManager only
* @return array
*/
public function getVaryHeaders() {
@@ -377,7 +377,7 @@ abstract class SessionProvider implements SessionProviderInterface, LoggerAwareI
/**
* Return the list of cookies that need varying on.
- * @protected For use by \\MediaWiki\\Session\\SessionManager only
+ * @protected For use by \MediaWiki\Session\SessionManager only
* @return string[]
*/
public function getVaryCookies() {
@@ -386,7 +386,7 @@ abstract class SessionProvider implements SessionProviderInterface, LoggerAwareI
/**
* Get a suggested username for the login form
- * @protected For use by \\MediaWiki\\Session\\SessionBackend only
+ * @protected For use by \MediaWiki\Session\SessionBackend only
* @param WebRequest $request
* @return string|null
*/
@@ -424,7 +424,7 @@ abstract class SessionProvider implements SessionProviderInterface, LoggerAwareI
*
* This default implementation takes the class name, lowercases it,
* replaces backslashes with dashes, and prefixes 'sessionprovider-' to
- * determine the message key. For example, MediaWiki\\Session\\CookieSessionProvider
+ * determine the message key. For example, MediaWiki\Session\CookieSessionProvider
* produces 'sessionprovider-mediawiki-session-cookiesessionprovider'.
*
* @note If self::__toString() is overridden, this will likely need to be
diff --git a/includes/site/DBSiteStore.php b/includes/site/DBSiteStore.php
index 756bb5140b..974789f94f 100644
--- a/includes/site/DBSiteStore.php
+++ b/includes/site/DBSiteStore.php
@@ -26,6 +26,7 @@
*
* @license GNU GPL v2+
* @author Jeroen De Dauw < jeroendedauw@gmail.com >
+ * @author Daniel Kinzler
*/
class DBSiteStore implements SiteStore {
@@ -35,15 +36,20 @@ class DBSiteStore implements SiteStore {
protected $sites = null;
/**
- * @since 1.25
- * @param null $sitesTable Unused since 1.27
+ * @var LoadBalancer
*/
- public function __construct( $sitesTable = null ) {
- if ( $sitesTable !== null ) {
- throw new InvalidArgumentException(
- __METHOD__ . ': $sitesTable parameter must be null'
- );
- }
+ private $dbLoadBalancer;
+
+ /**
+ * @since 1.27
+ *
+ * @todo: inject some kind of connection manager that is aware of the target wiki,
+ * instead of injecting a LoadBalancer.
+ *
+ * @param LoadBalancer $dbLoadBalancer
+ */
+ public function __construct( LoadBalancer $dbLoadBalancer ) {
+ $this->dbLoadBalancer = $dbLoadBalancer;
}
/**
@@ -67,7 +73,7 @@ class DBSiteStore implements SiteStore {
protected function loadSites() {
$this->sites = new SiteList();
- $dbr = wfGetDB( DB_SLAVE );
+ $dbr = $this->dbLoadBalancer->getConnection( DB_SLAVE );
$res = $dbr->select(
'sites',
@@ -124,6 +130,8 @@ class DBSiteStore implements SiteStore {
$this->sites->setSite( $site );
}
}
+
+ $this->dbLoadBalancer->reuseConnection( $dbr );
}
/**
@@ -170,7 +178,7 @@ class DBSiteStore implements SiteStore {
return true;
}
- $dbw = wfGetDB( DB_MASTER );
+ $dbw = $this->dbLoadBalancer->getConnection( DB_MASTER );
$dbw->startAtomic( __METHOD__ );
@@ -241,6 +249,8 @@ class DBSiteStore implements SiteStore {
$dbw->endAtomic( __METHOD__ );
+ $this->dbLoadBalancer->reuseConnection( $dbw );
+
$this->reset();
return $success;
@@ -263,13 +273,15 @@ class DBSiteStore implements SiteStore {
* @return bool Success
*/
public function clear() {
- $dbw = wfGetDB( DB_MASTER );
+ $dbw = $this->dbLoadBalancer->getConnection( DB_MASTER );
$dbw->startAtomic( __METHOD__ );
$ok = $dbw->delete( 'sites', '*', __METHOD__ );
$ok = $dbw->delete( 'site_identifiers', '*', __METHOD__ ) && $ok;
$dbw->endAtomic( __METHOD__ );
+ $this->dbLoadBalancer->reuseConnection( $dbw );
+
$this->reset();
return $ok;
diff --git a/includes/site/MediaWikiSite.php b/includes/site/MediaWikiSite.php
index 0f7e5d7e7c..6734d5f70c 100644
--- a/includes/site/MediaWikiSite.php
+++ b/includes/site/MediaWikiSite.php
@@ -39,20 +39,6 @@ class MediaWikiSite extends Site {
const PATH_FILE = 'file_path';
const PATH_PAGE = 'page_path';
- /**
- * @since 1.21
- * @deprecated since 1.21 Just use the constructor or the factory Site::newForType
- *
- * @param int $globalId
- *
- * @return MediaWikiSite
- */
- public static function newFromGlobalId( $globalId ) {
- $site = new static();
- $site->setGlobalId( $globalId );
- return $site;
- }
-
/**
* Constructor.
*
diff --git a/includes/site/SiteSQLStore.php b/includes/site/SiteSQLStore.php
index e61179b02e..a4116aea0f 100644
--- a/includes/site/SiteSQLStore.php
+++ b/includes/site/SiteSQLStore.php
@@ -1,9 +1,7 @@
+ * @author Daniel Kinzler
*/
-class SiteSQLStore extends CachingSiteStore {
+class SiteSQLStore {
/**
+ * Returns the global SiteStore instance. This is a relict of the first implementation
+ * of SiteStore, and is kept around for compatibility.
+ *
+ * @note This does not return an instance of SiteSQLStore!
+ *
* @since 1.21
- * @deprecated 1.25 Construct a SiteStore instance directly instead.
+ * @deprecated 1.27 use MediaWikiServices::getSiteStore() or MediaWikiServices::getSiteLookup()
+ * instead.
*
- * @param null $sitesTable Unused
- * @param BagOStuff|null $cache
+ * @param null $sitesTable IGNORED
+ * @param null $cache IGNORED
*
* @return SiteStore
*/
@@ -46,13 +50,11 @@ class SiteSQLStore extends CachingSiteStore {
);
}
- if ( $cache === null ) {
- $cache = wfGetCache( wfIsHHVM() ? CACHE_ACCEL : CACHE_ANYTHING );
- }
-
- $siteStore = new DBSiteStore();
+ // NOTE: we silently ignore $cache for now, since some existing callers
+ // specify it. If we break compatibility with them, we could just as
+ // well just remove this class.
- return new static( $siteStore, $cache );
+ return \MediaWiki\MediaWikiServices::getInstance()->getSiteStore();
}
}
diff --git a/includes/skins/Skin.php b/includes/skins/Skin.php
index 3cc1d8f98e..97fffdabb5 100644
--- a/includes/skins/Skin.php
+++ b/includes/skins/Skin.php
@@ -81,15 +81,6 @@ abstract class Skin extends ContextSource {
return $allowedSkins;
}
- /**
- * @deprecated since 1.23, use getAllowedSkins
- * @return string[]
- */
- public static function getUsableSkins() {
- wfDeprecated( __METHOD__, '1.23' );
- return self::getAllowedSkins();
- }
-
/**
* Normalize a skin preference value to a form that can be loaded.
*
@@ -140,23 +131,6 @@ abstract class Skin extends ContextSource {
}
}
- /**
- * Factory method for loading a skin of a given type
- * @param string $key 'monobook', 'vector', etc.
- * @return Skin
- * @deprecated since 1.24; Use SkinFactory instead
- */
- static function &newFromKey( $key ) {
- wfDeprecated( __METHOD__, '1.24' );
-
- $key = Skin::normalizeKey( $key );
- $factory = SkinFactory::getDefaultInstance();
-
- // normalizeKey() guarantees that a skin with this key will exist.
- $skin = $factory->makeSkin( $key );
- return $skin;
- }
-
/**
* @return string Skin name
*/
@@ -413,8 +387,9 @@ abstract class Skin extends ContextSource {
}
$name = Sanitizer::escapeClass( 'page-' . $title->getPrefixedText() );
+ $root = Sanitizer::escapeClass( 'rootpage-' . $title->getRootTitle()->getPrefixedText() );
- return "$numeric $type $name";
+ return "$numeric $type $name $root";
}
/**
@@ -801,12 +776,12 @@ abstract class Skin extends ContextSource {
* @return null|string
*/
function getCopyrightIcon() {
- global $wgRightsUrl, $wgRightsText, $wgRightsIcon, $wgCopyrightIcon;
+ global $wgRightsUrl, $wgRightsText, $wgRightsIcon, $wgFooterIcons;
$out = '';
- if ( $wgCopyrightIcon ) {
- $out = $wgCopyrightIcon;
+ if ( $wgFooterIcons['copyright']['copyright'] ) {
+ $out = $wgFooterIcons['copyright']['copyright'];
} elseif ( $wgRightsIcon ) {
$icon = htmlspecialchars( $wgRightsIcon );
@@ -1024,21 +999,6 @@ abstract class Skin extends ContextSource {
$targetUser->canReceiveEmail();
}
- /**
- * This function previously returned a fully resolved style path URL to images or styles stored in
- * the legacy skins/common/ directory.
- *
- * That directory has been removed in 1.24 and the function always returns an empty string.
- *
- * @deprecated since 1.24
- * @param string $name The name or path of a skin resource file
- * @return string Empty string
- */
- function getCommonStylePath( $name ) {
- wfDeprecated( __METHOD__, '1.24' );
- return '';
- }
-
/**
* Return a fully resolved style path url to images or styles stored in the current skins's folder.
* This method returns a url resolved using the configured skin style path
@@ -1240,7 +1200,9 @@ abstract class Skin extends ContextSource {
$cache = ObjectCache::getMainWANInstance();
$sidebar = $cache->getWithSetCallback(
$cache->makeKey( 'sidebar', $this->getLanguage()->getCode() ),
- $wgSidebarCacheExpiry,
+ MessageCache::singleton()->isDisabled()
+ ? $cache::TTL_UNCACHEABLE // bug T133069
+ : $wgSidebarCacheExpiry,
$callback,
[ 'lockTSE' => 30 ]
);
@@ -1359,22 +1321,6 @@ abstract class Skin extends ContextSource {
return $bar;
}
- /**
- * This function previously controlled whether the 'mediawiki.legacy.wikiprintable' module
- * should be loaded by OutputPage. That module no longer exists and the return value of this
- * method is ignored.
- *
- * If your skin doesn't provide its own print styles, the 'mediawiki.legacy.commonPrint' module
- * can be used instead (SkinTemplate-based skins do it automatically).
- *
- * @deprecated since 1.22
- * @return bool
- */
- public function commonPrintStylesheet() {
- wfDeprecated( __METHOD__, '1.22' );
- return false;
- }
-
/**
* Gets new talk page messages for the current user and returns an
* appropriate alert message (or an empty string if there are no messages)
@@ -1617,24 +1563,56 @@ abstract class Skin extends ContextSource {
return $result;
}
- /**
- * Use PHP's magic __call handler to intercept legacy calls to the linker
- * for backwards compatibility.
- *
- * @param string $fname Name of called method
- * @param array $args Arguments to the method
- * @throws MWException
- * @return mixed
- */
- function __call( $fname, $args ) {
- $realFunction = [ 'Linker', $fname ];
- if ( is_callable( $realFunction ) ) {
- wfDeprecated( get_class( $this ) . '::' . $fname, '1.21' );
- return call_user_func_array( $realFunction, $args );
- } else {
- $className = get_class( $this );
- throw new MWException( "Call to undefined method $className::$fname" );
- }
+ /** @deprecated in 1.21 */
+ public function commentBlock( $comment, $title = null, $local = false, $wikiId = null ) {
+ wfDeprecated( __METHOD__, '1.21' );
+ return Linker::commentBlock( $comment, $title, $local, $wikiId );
+ }
+
+ /** @deprecated in 1.21 */
+ public function generateRollback(
+ $rev,
+ IContextSource $context = null,
+ $options = [ 'verify' ]
+ ) {
+ wfDeprecated( __METHOD__, '1.21' );
+ return Linker::generateRollback( $rev, $context, $options );
+ }
+
+ /** @deprecated in 1.21 */
+ public function link( $target, $html = null, $customAttribs = [], $query = [], $options = [] ) {
+ wfDeprecated( __METHOD__, '1.21' );
+ return Linker::link( $target, $html, $customAttribs, $query, $options );
+ }
+
+ /** @deprecated in 1.21 */
+ public function linkKnown(
+ $target,
+ $html = null,
+ $customAttribs = [ ],
+ $query = [ ],
+ $options = [ 'known', 'noclasses' ]
+ ) {
+ wfDeprecated( __METHOD__, '1.21' );
+ return Linker::linkKnown( $target, $html, $customAttribs, $query, $options );
+ }
+
+ /** @deprecated in 1.21 */
+ public function userLink( $userId, $userName, $altUserName = false ) {
+ wfDeprecated( __METHOD__, '1.21' );
+ return Linker::userLink( $userId, $userName, $altUserName );
+ }
+
+ /** @deprecated in 1.21 */
+ public function userToolLinks(
+ $userId,
+ $userText,
+ $redContribsWhenNoEdits = false,
+ $flags = 0,
+ $edits = null
+ ) {
+ wfDeprecated( __METHOD__, '1.21' );
+ return Linker::userToolLinks( $userId, $userText, $redContribsWhenNoEdits, $flags, $edits );
}
}
diff --git a/includes/skins/SkinTemplate.php b/includes/skins/SkinTemplate.php
index 92311b54d8..e5dc59f35e 100644
--- a/includes/skins/SkinTemplate.php
+++ b/includes/skins/SkinTemplate.php
@@ -45,6 +45,14 @@ class SkinTemplate extends Skin {
*/
public $template = 'QuickTemplate';
+ public $thispage;
+ public $titletxt;
+ public $userpage;
+ public $thisquery;
+ public $loggedin;
+ public $username;
+ public $userpageUrlDetails;
+
/**
* Add specific styles for this skin
*
@@ -252,6 +260,7 @@ class SkinTemplate extends Skin {
* Wrap the body text with language information and identifiable element
*
* @param Title $title
+ * @param string $html body text
* @return string html
*/
protected function wrapHTML( $title, $html ) {
diff --git a/includes/specialpage/SpecialPage.php b/includes/specialpage/SpecialPage.php
index 6a04c6a754..6ca7a1331d 100644
--- a/includes/specialpage/SpecialPage.php
+++ b/includes/specialpage/SpecialPage.php
@@ -1,4 +1,6 @@
setLimitOffset( $limit, $offset );
- $search->setNamespaces( [] );
- $result = $search->defaultPrefixSearch( $search );
+ $searchEngine = MediaWikiServices::getInstance()->newSearchEngine();
+ $searchEngine->setLimitOffset( $limit, $offset );
+ $searchEngine->setNamespaces( [] );
+ $result = $searchEngine->defaultPrefixSearch( $search );
return array_map( function( Title $t ) {
return $t->getPrefixedText();
}, $result );
@@ -395,15 +400,20 @@ class SpecialPage {
final public function run( $subPage ) {
/**
* Gets called before @see SpecialPage::execute.
+ * Return false to prevent calling execute() (since 1.27+).
*
* @since 1.20
*
* @param SpecialPage $this
* @param string|null $subPage
*/
- Hooks::run( 'SpecialPageBeforeExecute', [ $this, $subPage ] );
+ if ( !Hooks::run( 'SpecialPageBeforeExecute', [ $this, $subPage ] ) ) {
+ return;
+ }
- $this->beforeExecute( $subPage );
+ if ( $this->beforeExecute( $subPage ) === false ) {
+ return;
+ }
$this->execute( $subPage );
$this->afterExecute( $subPage );
@@ -420,10 +430,12 @@ class SpecialPage {
/**
* Gets called before @see SpecialPage::execute.
+ * Return false to prevent calling execute() (since 1.27+).
*
* @since 1.20
*
* @param string|null $subPage
+ * @return bool|void
*/
protected function beforeExecute( $subPage ) {
// No-op
diff --git a/includes/specialpage/SpecialPageFactory.php b/includes/specialpage/SpecialPageFactory.php
index 8ce480e123..725c4fc581 100644
--- a/includes/specialpage/SpecialPageFactory.php
+++ b/includes/specialpage/SpecialPageFactory.php
@@ -182,6 +182,7 @@ class SpecialPageFactory {
private static $list;
private static $aliases;
+ private static $pageObjectCache = [];
/**
* Reset the internal list of special pages. Useful when changing $wgSpecialPages after
@@ -190,6 +191,7 @@ class SpecialPageFactory {
public static function resetList() {
self::$list = null;
self::$aliases = null;
+ self::$pageObjectCache = [];
}
/**
@@ -373,6 +375,10 @@ class SpecialPageFactory {
public static function getPage( $name ) {
list( $realName, /*...*/ ) = self::resolveAlias( $name );
+ if ( isset( self::$pageObjectCache[$realName] ) ) {
+ return self::$pageObjectCache[$realName];
+ }
+
$specialPageList = self::getPageList();
if ( isset( $specialPageList[$realName] ) ) {
@@ -400,6 +406,7 @@ class SpecialPageFactory {
$page = null;
}
+ self::$pageObjectCache[$realName] = $page;
if ( $page instanceof SpecialPage ) {
return $page;
} else {
diff --git a/includes/specials/SpecialActiveusers.php b/includes/specials/SpecialActiveusers.php
index 9c5fc2f973..d6d4500972 100644
--- a/includes/specials/SpecialActiveusers.php
+++ b/includes/specials/SpecialActiveusers.php
@@ -23,235 +23,6 @@
* @ingroup SpecialPage
*/
-/**
- * This class is used to get a list of active users. The ones with specials
- * rights (sysop, bureaucrat, developer) will have them displayed
- * next to their names.
- *
- * @ingroup SpecialPage
- */
-class ActiveUsersPager extends UsersPager {
- /**
- * @var FormOptions
- */
- protected $opts;
-
- /**
- * @var array
- */
- protected $hideGroups = [];
-
- /**
- * @var array
- */
- protected $hideRights = [];
-
- /**
- * @var array
- */
- private $blockStatusByUid;
-
- /**
- * @param IContextSource $context
- * @param null $group Unused
- * @param string $par Parameter passed to the page
- */
- function __construct( IContextSource $context = null, $group = null, $par = null ) {
- parent::__construct( $context );
-
- $this->RCMaxAge = $this->getConfig()->get( 'ActiveUserDays' );
- $un = $this->getRequest()->getText( 'username', $par );
- $this->requestedUser = '';
- if ( $un != '' ) {
- $username = Title::makeTitleSafe( NS_USER, $un );
- if ( !is_null( $username ) ) {
- $this->requestedUser = $username->getText();
- }
- }
-
- $this->setupOptions();
- }
-
- public function setupOptions() {
- $this->opts = new FormOptions();
-
- $this->opts->add( 'hidebots', false, FormOptions::BOOL );
- $this->opts->add( 'hidesysops', false, FormOptions::BOOL );
-
- $this->opts->fetchValuesFromRequest( $this->getRequest() );
-
- if ( $this->opts->getValue( 'hidebots' ) == 1 ) {
- $this->hideRights[] = 'bot';
- }
- if ( $this->opts->getValue( 'hidesysops' ) == 1 ) {
- $this->hideGroups[] = 'sysop';
- }
- }
-
- function getIndexField() {
- return 'qcc_title';
- }
-
- function getQueryInfo() {
- $dbr = $this->getDatabase();
-
- $activeUserSeconds = $this->getConfig()->get( 'ActiveUserDays' ) * 86400;
- $timestamp = $dbr->timestamp( wfTimestamp( TS_UNIX ) - $activeUserSeconds );
- $conds = [
- 'qcc_type' => 'activeusers',
- 'qcc_namespace' => NS_USER,
- 'user_name = qcc_title',
- 'rc_user_text = qcc_title',
- 'rc_type != ' . $dbr->addQuotes( RC_EXTERNAL ), // Don't count wikidata.
- 'rc_log_type IS NULL OR rc_log_type != ' . $dbr->addQuotes( 'newusers' ),
- 'rc_timestamp >= ' . $dbr->addQuotes( $timestamp ),
- ];
- if ( $this->requestedUser != '' ) {
- $conds[] = 'qcc_title >= ' . $dbr->addQuotes( $this->requestedUser );
- }
- if ( !$this->getUser()->isAllowed( 'hideuser' ) ) {
- $conds[] = 'NOT EXISTS (' . $dbr->selectSQLText(
- 'ipblocks', '1', [ 'ipb_user=user_id', 'ipb_deleted' => 1 ]
- ) . ')';
- }
-
- if ( $dbr->implicitGroupby() ) {
- $options = [ 'GROUP BY' => [ 'qcc_title' ] ];
- } else {
- $options = [ 'GROUP BY' => [ 'user_name', 'user_id', 'qcc_title' ] ];
- }
-
- return [
- 'tables' => [ 'querycachetwo', 'user', 'recentchanges' ],
- 'fields' => [ 'user_name', 'user_id', 'recentedits' => 'COUNT(*)', 'qcc_title' ],
- 'options' => $options,
- 'conds' => $conds
- ];
- }
-
- function doBatchLookups() {
- parent::doBatchLookups();
-
- $uids = [];
- foreach ( $this->mResult as $row ) {
- $uids[] = $row->user_id;
- }
- // Fetch the block status of the user for showing "(blocked)" text and for
- // striking out names of suppressed users when privileged user views the list.
- // Although the first query already hits the block table for un-privileged, this
- // is done in two queries to avoid huge quicksorts and to make COUNT(*) correct.
- $dbr = $this->getDatabase();
- $res = $dbr->select( 'ipblocks',
- [ 'ipb_user', 'MAX(ipb_deleted) AS block_status' ],
- [ 'ipb_user' => $uids ],
- __METHOD__,
- [ 'GROUP BY' => [ 'ipb_user' ] ]
- );
- $this->blockStatusByUid = [];
- foreach ( $res as $row ) {
- $this->blockStatusByUid[$row->ipb_user] = $row->block_status; // 0 or 1
- }
- $this->mResult->seek( 0 );
- }
-
- function formatRow( $row ) {
- $userName = $row->user_name;
-
- $ulinks = Linker::userLink( $row->user_id, $userName );
- $ulinks .= Linker::userToolLinks( $row->user_id, $userName );
-
- $lang = $this->getLanguage();
-
- $list = [];
- $user = User::newFromId( $row->user_id );
-
- // User right filter
- foreach ( $this->hideRights as $right ) {
- // Calling User::getRights() within the loop so that
- // if the hideRights() filter is empty, we don't have to
- // trigger the lazy-init of the big userrights array in the
- // User object
- if ( in_array( $right, $user->getRights() ) ) {
- return '';
- }
- }
-
- // User group filter
- // Note: This is a different loop than for user rights,
- // because we're reusing it to build the group links
- // at the same time
- $groups_list = self::getGroups( intval( $row->user_id ), $this->userGroupCache );
- foreach ( $groups_list as $group ) {
- if ( in_array( $group, $this->hideGroups ) ) {
- return '';
- }
- $list[] = self::buildGroupLink( $group, $userName );
- }
-
- $groups = $lang->commaList( $list );
-
- $item = $lang->specialList( $ulinks, $groups );
-
- $isBlocked = isset( $this->blockStatusByUid[$row->user_id] );
- if ( $isBlocked && $this->blockStatusByUid[$row->user_id] == 1 ) {
- $item = "$item ";
- }
- $count = $this->msg( 'activeusers-count' )->numParams( $row->recentedits )
- ->params( $userName )->numParams( $this->RCMaxAge )->escaped();
- $blocked = $isBlocked ? ' ' . $this->msg( 'listusers-blocked', $userName )->escaped() : '';
-
- return Html::rawElement( 'li', [], "{$item} [{$count}]{$blocked}" );
- }
-
- function getPageHeader() {
- $self = $this->getTitle();
- $limit = $this->mLimit ? Html::hidden( 'limit', $this->mLimit ) : '';
-
- # Form tag
- $out = Xml::openElement( 'form', [ 'method' => 'get', 'action' => wfScript() ] );
- $out .= Xml::fieldset( $this->msg( 'activeusers' )->text() ) . "\n";
- $out .= Html::hidden( 'title', $self->getPrefixedDBkey() ) . $limit . "\n";
-
- # Username field (with autocompletion support)
- $this->getOutput()->addModules( 'mediawiki.userSuggest' );
- $out .= Xml::inputLabel(
- $this->msg( 'activeusers-from' )->text(),
- 'username',
- 'offset',
- 20,
- $this->requestedUser,
- [
- 'class' => 'mw-ui-input-inline mw-autocomplete-user',
- 'tabindex' => 1,
- ] + (
- // Set autofocus on blank input
- $this->requestedUser === '' ? [ 'autofocus' => '' ] : []
- )
- ) . ' ';
-
- $out .= Xml::checkLabel( $this->msg( 'activeusers-hidebots' )->text(),
- 'hidebots', 'hidebots', $this->opts->getValue( 'hidebots' ), [ 'tabindex' => 2 ] );
-
- $out .= Xml::checkLabel(
- $this->msg( 'activeusers-hidesysops' )->text(),
- 'hidesysops',
- 'hidesysops',
- $this->opts->getValue( 'hidesysops' ),
- [ 'tabindex' => 3 ]
- ) . ' ';
-
- # Submit button and form bottom
- $out .= Xml::submitButton(
- $this->msg( 'activeusers-submit' )->text(),
- [ 'tabindex' => 4 ]
- ) . "\n";
- $out .= Xml::closeElement( 'fieldset' );
- $out .= Xml::closeElement( 'form' );
-
- return $out;
- }
-}
-
/**
* @ingroup SpecialPage
*/
diff --git a/includes/specials/SpecialAllMessages.php b/includes/specials/SpecialAllMessages.php
index 49d5d6e596..49ca9f45de 100644
--- a/includes/specials/SpecialAllMessages.php
+++ b/includes/specials/SpecialAllMessages.php
@@ -77,403 +77,3 @@ class SpecialAllMessages extends SpecialPage {
return 'wiki';
}
}
-
-/**
- * Use TablePager for prettified output. We have to pretend that we're
- * getting data from a table when in fact not all of it comes from the database.
- */
-class AllMessagesTablePager extends TablePager {
- protected $filter, $prefix, $langcode, $displayPrefix;
-
- public $mLimitsShown;
-
- /**
- * @var Language
- */
- public $lang;
-
- /**
- * @var null|bool
- */
- public $custom;
-
- function __construct( $page, $conds, $langObj = null ) {
- parent::__construct( $page->getContext() );
- $this->mIndexField = 'am_title';
- $this->mPage = $page;
- $this->mConds = $conds;
- // FIXME: Why does this need to be set to DIR_DESCENDING to produce ascending ordering?
- $this->mDefaultDirection = IndexPager::DIR_DESCENDING;
- $this->mLimitsShown = [ 20, 50, 100, 250, 500, 5000 ];
-
- global $wgContLang;
-
- $this->talk = $this->msg( 'talkpagelinktext' )->escaped();
-
- $this->lang = ( $langObj ? $langObj : $wgContLang );
- $this->langcode = $this->lang->getCode();
- $this->foreign = $this->langcode !== $wgContLang->getCode();
-
- $request = $this->getRequest();
-
- $this->filter = $request->getVal( 'filter', 'all' );
- if ( $this->filter === 'all' ) {
- $this->custom = null; // So won't match in either case
- } else {
- $this->custom = ( $this->filter === 'unmodified' );
- }
-
- $prefix = $this->getLanguage()->ucfirst( $request->getVal( 'prefix', '' ) );
- $prefix = $prefix !== '' ?
- Title::makeTitleSafe( NS_MEDIAWIKI, $request->getVal( 'prefix', null ) ) :
- null;
-
- if ( $prefix !== null ) {
- $this->displayPrefix = $prefix->getDBkey();
- $this->prefix = '/^' . preg_quote( $this->displayPrefix, '/' ) . '/i';
- } else {
- $this->displayPrefix = false;
- $this->prefix = false;
- }
-
- // The suffix that may be needed for message names if we're in a
- // different language (eg [[MediaWiki:Foo/fr]]: $suffix = '/fr'
- if ( $this->foreign ) {
- $this->suffix = '/' . $this->langcode;
- } else {
- $this->suffix = '';
- }
- }
-
- function buildForm() {
- $attrs = [ 'id' => 'mw-allmessages-form-lang', 'name' => 'lang' ];
- $msg = wfMessage( 'allmessages-language' );
- $langSelect = Xml::languageSelector( $this->langcode, false, null, $attrs, $msg );
-
- $out = Xml::openElement( 'form', [
- 'method' => 'get',
- 'action' => $this->getConfig()->get( 'Script' ),
- 'id' => 'mw-allmessages-form'
- ] ) .
- Xml::fieldset( $this->msg( 'allmessages-filter-legend' )->text() ) .
- Html::hidden( 'title', $this->getTitle()->getPrefixedText() ) .
- Xml::openElement( 'table', [ 'class' => 'mw-allmessages-table' ] ) . "\n" .
- '
- ' .
- Xml::label( $this->msg( 'allmessages-prefix' )->text(), 'mw-allmessages-form-prefix' ) .
- " \n
- " .
- Xml::input(
- 'prefix',
- 20,
- str_replace( '_', ' ', $this->displayPrefix ),
- [ 'id' => 'mw-allmessages-form-prefix' ]
- ) .
- " \n
-
- \n
- " .
- $this->msg( 'allmessages-filter' )->escaped() .
- " \n
- " .
- Xml::radioLabel( $this->msg( 'allmessages-filter-unmodified' )->text(),
- 'filter',
- 'unmodified',
- 'mw-allmessages-form-filter-unmodified',
- ( $this->filter === 'unmodified' )
- ) .
- Xml::radioLabel( $this->msg( 'allmessages-filter-all' )->text(),
- 'filter',
- 'all',
- 'mw-allmessages-form-filter-all',
- ( $this->filter === 'all' )
- ) .
- Xml::radioLabel( $this->msg( 'allmessages-filter-modified' )->text(),
- 'filter',
- 'modified',
- 'mw-allmessages-form-filter-modified',
- ( $this->filter === 'modified' )
- ) .
- " \n
-
- \n
- " . $langSelect[0] . " \n
- " . $langSelect[1] . " \n
- " .
-
- '
- ' .
- Xml::label( $this->msg( 'table_pager_limit_label' )->text(), 'mw-table_pager_limit_label' ) .
- '
- ' .
- $this->getLimitSelect( [ 'id' => 'mw-table_pager_limit_label' ] ) .
- '
-
-
- ' .
- Xml::submitButton( $this->msg( 'allmessages-filter-submit' )->text() ) .
- " \n
- " .
-
- Xml::closeElement( 'table' ) .
- $this->getHiddenFields( [ 'title', 'prefix', 'filter', 'lang', 'limit' ] ) .
- Xml::closeElement( 'fieldset' ) .
- Xml::closeElement( 'form' );
-
- return $out;
- }
-
- function getAllMessages( $descending ) {
- $messageNames = Language::getLocalisationCache()->getSubitemList( 'en', 'messages' );
-
- // Normalise message names so they look like page titles and sort correctly - T86139
- $messageNames = array_map( [ $this->lang, 'ucfirst' ], $messageNames );
-
- if ( $descending ) {
- rsort( $messageNames );
- } else {
- asort( $messageNames );
- }
-
- return $messageNames;
- }
-
- /**
- * Determine which of the MediaWiki and MediaWiki_talk namespace pages exist.
- * Returns array( 'pages' => ..., 'talks' => ... ), where the subarrays have
- * an entry for each existing page, with the key being the message name and
- * value arbitrary.
- *
- * @param array $messageNames
- * @param string $langcode What language code
- * @param bool $foreign Whether the $langcode is not the content language
- * @return array A 'pages' and 'talks' array with the keys of existing pages
- */
- public static function getCustomisedStatuses( $messageNames, $langcode = 'en', $foreign = false ) {
- // FIXME: This function should be moved to Language:: or something.
-
- $dbr = wfGetDB( DB_SLAVE );
- $res = $dbr->select( 'page',
- [ 'page_namespace', 'page_title' ],
- [ 'page_namespace' => [ NS_MEDIAWIKI, NS_MEDIAWIKI_TALK ] ],
- __METHOD__,
- [ 'USE INDEX' => 'name_title' ]
- );
- $xNames = array_flip( $messageNames );
-
- $pageFlags = $talkFlags = [];
-
- foreach ( $res as $s ) {
- $exists = false;
-
- if ( $foreign ) {
- $titleParts = explode( '/', $s->page_title );
- if ( count( $titleParts ) === 2 &&
- $langcode === $titleParts[1] &&
- isset( $xNames[$titleParts[0]] )
- ) {
- $exists = $titleParts[0];
- }
- } elseif ( isset( $xNames[$s->page_title] ) ) {
- $exists = $s->page_title;
- }
-
- $title = Title::newFromRow( $s );
- if ( $exists && $title->inNamespace( NS_MEDIAWIKI ) ) {
- $pageFlags[$exists] = true;
- } elseif ( $exists && $title->inNamespace( NS_MEDIAWIKI_TALK ) ) {
- $talkFlags[$exists] = true;
- }
- }
-
- return [ 'pages' => $pageFlags, 'talks' => $talkFlags ];
- }
-
- /**
- * This function normally does a database query to get the results; we need
- * to make a pretend result using a FakeResultWrapper.
- * @param string $offset
- * @param int $limit
- * @param bool $descending
- * @return FakeResultWrapper
- */
- function reallyDoQuery( $offset, $limit, $descending ) {
- $result = new FakeResultWrapper( [] );
-
- $messageNames = $this->getAllMessages( $descending );
- $statuses = self::getCustomisedStatuses( $messageNames, $this->langcode, $this->foreign );
-
- $count = 0;
- foreach ( $messageNames as $key ) {
- $customised = isset( $statuses['pages'][$key] );
- if ( $customised !== $this->custom &&
- ( $descending && ( $key < $offset || !$offset ) || !$descending && $key > $offset ) &&
- ( ( $this->prefix && preg_match( $this->prefix, $key ) ) || $this->prefix === false )
- ) {
- $actual = wfMessage( $key )->inLanguage( $this->langcode )->plain();
- $default = wfMessage( $key )->inLanguage( $this->langcode )->useDatabase( false )->plain();
- $result->result[] = [
- 'am_title' => $key,
- 'am_actual' => $actual,
- 'am_default' => $default,
- 'am_customised' => $customised,
- 'am_talk_exists' => isset( $statuses['talks'][$key] )
- ];
- $count++;
- }
-
- if ( $count === $limit ) {
- break;
- }
- }
-
- return $result;
- }
-
- function getStartBody() {
- $tableClass = $this->getTableClass();
- return Xml::openElement( 'table', [
- 'class' => "mw-datatable $tableClass",
- 'id' => 'mw-allmessagestable'
- ] ) .
- "\n" .
- "
- " .
- $this->msg( 'allmessagesname' )->escaped() . "
-
- " .
- $this->msg( 'allmessagesdefault' )->escaped() .
- "
- \n
-
- " .
- $this->msg( 'allmessagescurrent' )->escaped() .
- "
- \n";
- }
-
- function formatValue( $field, $value ) {
- switch ( $field ) {
- case 'am_title' :
- $title = Title::makeTitle( NS_MEDIAWIKI, $value . $this->suffix );
- $talk = Title::makeTitle( NS_MEDIAWIKI_TALK, $value . $this->suffix );
- $translation = Linker::makeExternalLink(
- 'https://translatewiki.net/w/i.php?' . wfArrayToCgi( [
- 'title' => 'Special:SearchTranslations',
- 'group' => 'mediawiki',
- 'grouppath' => 'mediawiki',
- 'query' => 'language:' . $this->getLanguage()->getCode() . '^25 ' .
- 'messageid:"MediaWiki:' . $value . '"^10 "' .
- $this->msg( $value )->inLanguage( 'en' )->plain() . '"'
- ] ),
- $this->msg( 'allmessages-filter-translate' )->text()
- );
-
- if ( $this->mCurrentRow->am_customised ) {
- $title = Linker::linkKnown( $title, $this->getLanguage()->lcfirst( $value ) );
- } else {
- $title = Linker::link(
- $title,
- $this->getLanguage()->lcfirst( $value ),
- [],
- [],
- [ 'broken' ]
- );
- }
- if ( $this->mCurrentRow->am_talk_exists ) {
- $talk = Linker::linkKnown( $talk, $this->talk );
- } else {
- $talk = Linker::link(
- $talk,
- $this->talk,
- [],
- [],
- [ 'broken' ]
- );
- }
-
- return $title . ' ' .
- $this->msg( 'parentheses' )->rawParams( $talk )->escaped() .
- ' ' .
- $this->msg( 'parentheses' )->rawParams( $translation )->escaped();
-
- case 'am_default' :
- case 'am_actual' :
- return Sanitizer::escapeHtmlAllowEntities( $value );
- }
-
- return '';
- }
-
- function formatRow( $row ) {
- // Do all the normal stuff
- $s = parent::formatRow( $row );
-
- // But if there's a customised message, add that too.
- if ( $row->am_customised ) {
- $s .= Xml::openElement( 'tr', $this->getRowAttrs( $row, true ) );
- $formatted = strval( $this->formatValue( 'am_actual', $row->am_actual ) );
-
- if ( $formatted === '' ) {
- $formatted = ' ';
- }
-
- $s .= Xml::tags( 'td', $this->getCellAttrs( 'am_actual', $row->am_actual ), $formatted )
- . "\n";
- }
-
- return $s;
- }
-
- function getRowAttrs( $row, $isSecond = false ) {
- $arr = [];
-
- if ( $row->am_customised ) {
- $arr['class'] = 'allmessages-customised';
- }
-
- if ( !$isSecond ) {
- $arr['id'] = Sanitizer::escapeId( 'msg_' . $this->getLanguage()->lcfirst( $row->am_title ) );
- }
-
- return $arr;
- }
-
- function getCellAttrs( $field, $value ) {
- if ( $this->mCurrentRow->am_customised && $field === 'am_title' ) {
- return [ 'rowspan' => '2', 'class' => $field ];
- } elseif ( $field === 'am_title' ) {
- return [ 'class' => $field ];
- } else {
- return [
- 'lang' => $this->lang->getHtmlCode(),
- 'dir' => $this->lang->getDir(),
- 'class' => $field
- ];
- }
- }
-
- // This is not actually used, as getStartBody is overridden above
- function getFieldNames() {
- return [
- 'am_title' => $this->msg( 'allmessagesname' )->text(),
- 'am_default' => $this->msg( 'allmessagesdefault' )->text()
- ];
- }
-
- function getTitle() {
- return SpecialPage::getTitleFor( 'Allmessages', false );
- }
-
- function isFieldSortable( $x ) {
- return false;
- }
-
- function getDefaultSort() {
- return '';
- }
-
- function getQueryInfo() {
- return '';
- }
-}
diff --git a/includes/specials/SpecialBlockList.php b/includes/specials/SpecialBlockList.php
index e589ecb00a..dbbee71453 100644
--- a/includes/specials/SpecialBlockList.php
+++ b/includes/specials/SpecialBlockList.php
@@ -222,244 +222,3 @@ class SpecialBlockList extends SpecialPage {
return 'users';
}
}
-
-class BlockListPager extends TablePager {
- protected $conds;
- protected $page;
-
- /**
- * @param SpecialPage $page
- * @param array $conds
- */
- function __construct( $page, $conds ) {
- $this->page = $page;
- $this->conds = $conds;
- $this->mDefaultDirection = IndexPager::DIR_DESCENDING;
- parent::__construct( $page->getContext() );
- }
-
- function getFieldNames() {
- static $headers = null;
-
- if ( $headers === null ) {
- $headers = [
- 'ipb_timestamp' => 'blocklist-timestamp',
- 'ipb_target' => 'blocklist-target',
- 'ipb_expiry' => 'blocklist-expiry',
- 'ipb_by' => 'blocklist-by',
- 'ipb_params' => 'blocklist-params',
- 'ipb_reason' => 'blocklist-reason',
- ];
- foreach ( $headers as $key => $val ) {
- $headers[$key] = $this->msg( $val )->text();
- }
- }
-
- return $headers;
- }
-
- function formatValue( $name, $value ) {
- static $msg = null;
- if ( $msg === null ) {
- $keys = [
- 'anononlyblock',
- 'createaccountblock',
- 'noautoblockblock',
- 'emailblock',
- 'blocklist-nousertalk',
- 'unblocklink',
- 'change-blocklink',
- ];
-
- 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 = htmlspecialchars( $language->userTimeAndDate( $value, $this->getUser() ) );
- break;
-
- case 'ipb_target':
- if ( $row->ipb_auto ) {
- $formatted = $this->msg( 'autoblockid', $row->ipb_id )->parse();
- } else {
- list( $target, $type ) = Block::parseTarget( $row->ipb_address );
- switch ( $type ) {
- case Block::TYPE_USER:
- case Block::TYPE_IP:
- $formatted = Linker::userLink( $target->getId(), $target );
- $formatted .= Linker::userToolLinks(
- $target->getId(),
- $target,
- false,
- Linker::TOOL_LINKS_NOBLOCK
- );
- break;
- case Block::TYPE_RANGE:
- $formatted = htmlspecialchars( $target );
- }
- }
- break;
-
- case 'ipb_expiry':
- $formatted = htmlspecialchars( $language->formatExpiry(
- $value,
- /* User preference timezone */true
- ) );
- if ( $this->getUser()->isAllowed( 'block' ) ) {
- if ( $row->ipb_auto ) {
- $links[] = Linker::linkKnown(
- SpecialPage::getTitleFor( 'Unblock' ),
- $msg['unblocklink'],
- [],
- [ 'wpTarget' => "#{$row->ipb_id}" ]
- );
- } else {
- $links[] = Linker::linkKnown(
- SpecialPage::getTitleFor( 'Unblock', $row->ipb_address ),
- $msg['unblocklink']
- );
- $links[] = Linker::linkKnown(
- SpecialPage::getTitleFor( 'Block', $row->ipb_address ),
- $msg['change-blocklink']
- );
- }
- $formatted .= ' ' . Html::rawElement(
- 'span',
- [ 'class' => 'mw-blocklist-actions' ],
- $this->msg( 'parentheses' )->rawParams(
- $language->pipeList( $links ) )->escaped()
- );
- }
- break;
-
- case 'ipb_by':
- if ( isset( $row->by_user_name ) ) {
- $formatted = Linker::userLink( $value, $row->by_user_name );
- $formatted .= Linker::userToolLinks( $value, $row->by_user_name );
- } else {
- $formatted = htmlspecialchars( $row->ipb_by_text ); // foreign user?
- }
- break;
-
- case 'ipb_reason':
- $formatted = Linker::formatComment( $value );
- break;
-
- case 'ipb_params':
- $properties = [];
- if ( $row->ipb_anon_only ) {
- $properties[] = $msg['anononlyblock'];
- }
- if ( $row->ipb_create_account ) {
- $properties[] = $msg['createaccountblock'];
- }
- if ( $row->ipb_user && !$row->ipb_enable_autoblock ) {
- $properties[] = $msg['noautoblockblock'];
- }
-
- if ( $row->ipb_block_email ) {
- $properties[] = $msg['emailblock'];
- }
-
- if ( !$row->ipb_allow_usertalk ) {
- $properties[] = $msg['blocklist-nousertalk'];
- }
-
- $formatted = $language->commaList( $properties );
- break;
-
- default:
- $formatted = "Unable to format $name";
- break;
- }
-
- return $formatted;
- }
-
- function getQueryInfo() {
- $info = [
- 'tables' => [ 'ipblocks', 'user' ],
- 'fields' => [
- 'ipb_id',
- 'ipb_address',
- 'ipb_user',
- 'ipb_by',
- 'ipb_by_text',
- 'by_user_name' => 'user_name',
- 'ipb_reason',
- 'ipb_timestamp',
- 'ipb_auto',
- 'ipb_anon_only',
- 'ipb_create_account',
- 'ipb_enable_autoblock',
- 'ipb_expiry',
- 'ipb_range_start',
- 'ipb_range_end',
- 'ipb_deleted',
- 'ipb_block_email',
- 'ipb_allow_usertalk',
- ],
- 'conds' => $this->conds,
- 'join_conds' => [ 'user' => [ 'LEFT JOIN', 'user_id = ipb_by' ] ]
- ];
-
- # Filter out any expired blocks
- $db = $this->getDatabase();
- $info['conds'][] = 'ipb_expiry > ' . $db->addQuotes( $db->timestamp() );
-
- # Is the user allowed to see hidden blocks?
- if ( !$this->getUser()->isAllowed( 'hideuser' ) ) {
- $info['conds']['ipb_deleted'] = 0;
- }
-
- return $info;
- }
-
- public function getTableClass() {
- return parent::getTableClass() . ' mw-blocklist';
- }
-
- function getIndexField() {
- return 'ipb_timestamp';
- }
-
- function getDefaultSort() {
- return 'ipb_timestamp';
- }
-
- function isFieldSortable( $name ) {
- return false;
- }
-
- /**
- * Do a LinkBatch query to minimise database load when generating all these links
- * @param ResultWrapper $result
- */
- function preprocessResults( $result ) {
- # Do a link batch query
- $lb = new LinkBatch;
- $lb->setCaller( __METHOD__ );
-
- foreach ( $result as $row ) {
- $lb->add( NS_USER, $row->ipb_address );
- $lb->add( NS_USER_TALK, $row->ipb_address );
-
- if ( isset( $row->by_user_name ) ) {
- $lb->add( NS_USER, $row->by_user_name );
- $lb->add( NS_USER_TALK, $row->by_user_name );
- }
- }
-
- $lb->execute();
- }
-}
diff --git a/includes/specials/SpecialBotPasswords.php b/includes/specials/SpecialBotPasswords.php
index bcba190570..1027f1f6e8 100644
--- a/includes/specials/SpecialBotPasswords.php
+++ b/includes/specials/SpecialBotPasswords.php
@@ -84,9 +84,6 @@ class SpecialBotPasswords extends FormSpecialPage {
}
protected function getFormFields() {
- $user = $this->getUser();
- $request = $this->getRequest();
-
$fields = [];
if ( $this->par !== null ) {
diff --git a/includes/specials/SpecialCategories.php b/includes/specials/SpecialCategories.php
index 5314f63489..d7d338ccf9 100644
--- a/includes/specials/SpecialCategories.php
+++ b/includes/specials/SpecialCategories.php
@@ -92,109 +92,3 @@ class SpecialCategories extends SpecialPage {
return 'pages';
}
}
-
-/**
- * TODO: Allow sorting by count. We need to have a unique index to do this
- * properly.
- *
- * @ingroup SpecialPage Pager
- */
-class CategoryPager extends AlphabeticPager {
-
- /**
- * @var PageLinkRenderer
- */
- protected $linkRenderer;
-
- /**
- * @param IContextSource $context
- * @param string $from
- * @param PageLinkRenderer $linkRenderer
- */
- public function __construct( IContextSource $context, $from, PageLinkRenderer $linkRenderer
- ) {
- parent::__construct( $context );
- $from = str_replace( ' ', '_', $from );
- if ( $from !== '' ) {
- $from = Title::capitalize( $from, NS_CATEGORY );
- $this->setOffset( $from );
- $this->setIncludeOffset( true );
- }
-
- $this->linkRenderer = $linkRenderer;
- }
-
- function getQueryInfo() {
- return [
- 'tables' => [ 'category' ],
- 'fields' => [ 'cat_title', 'cat_pages' ],
- 'conds' => [ 'cat_pages > 0' ],
- 'options' => [ 'USE INDEX' => 'cat_title' ],
- ];
- }
-
- function getIndexField() {
-# return array( 'abc' => 'cat_title', 'count' => 'cat_pages' );
- return 'cat_title';
- }
-
- function getDefaultQuery() {
- parent::getDefaultQuery();
- unset( $this->mDefaultQuery['from'] );
-
- return $this->mDefaultQuery;
- }
-
-# protected function getOrderTypeMessages() {
-# return array( 'abc' => 'special-categories-sort-abc',
-# 'count' => 'special-categories-sort-count' );
-# }
-
- protected function getDefaultDirections() {
-# return array( 'abc' => false, 'count' => true );
- return false;
- }
-
- /* Override getBody to apply LinksBatch on resultset before actually outputting anything. */
- public function getBody() {
- $batch = new LinkBatch;
-
- $this->mResult->rewind();
-
- foreach ( $this->mResult as $row ) {
- $batch->addObj( Title::makeTitleSafe( NS_CATEGORY, $row->cat_title ) );
- }
- $batch->execute();
- $this->mResult->rewind();
-
- return parent::getBody();
- }
-
- function formatRow( $result ) {
- $title = new TitleValue( NS_CATEGORY, $result->cat_title );
- $text = $title->getText();
- $link = $this->linkRenderer->renderHtmlLink( $title, $text );
-
- $count = $this->msg( 'nmembers' )->numParams( $result->cat_pages )->escaped();
- return Html::rawElement( 'li', null, $this->getLanguage()->specialList( $link, $count ) ) . "\n";
- }
-
- public function getStartForm( $from ) {
- return Xml::tags(
- 'form',
- [ 'method' => 'get', 'action' => wfScript() ],
- Html::hidden( 'title', $this->getTitle()->getPrefixedText() ) .
- Xml::fieldset(
- $this->msg( 'categories' )->text(),
- Xml::inputLabel(
- $this->msg( 'categoriesfrom' )->text(),
- 'from', 'from', 20, $from, [ 'class' => 'mw-ui-input-inline' ] ) .
- ' ' .
- Html::submitButton(
- $this->msg( 'categories-submit' )->text(),
- [], [ 'mw-ui-progressive' ]
- )
- )
- );
- }
-}
diff --git a/includes/specials/SpecialConfirmemail.php b/includes/specials/SpecialConfirmemail.php
index 914781c16a..a656c2ea11 100644
--- a/includes/specials/SpecialConfirmemail.php
+++ b/includes/specials/SpecialConfirmemail.php
@@ -56,8 +56,6 @@ class EmailConfirmation extends UnlistedSpecialPage {
$this->checkReadOnly();
$this->checkPermissions();
- $this->requireLogin( 'confirmemail_needlogin' );
-
// This could also let someone check the current email address, so
// require both permissions.
if ( !$this->getUser()->isAllowed( 'viewmyprivateinfo' ) ) {
@@ -65,6 +63,7 @@ class EmailConfirmation extends UnlistedSpecialPage {
}
if ( $code === null || $code === '' ) {
+ $this->requireLogin( 'confirmemail_needlogin' );
if ( Sanitizer::validateEmail( $this->getUser()->getEmail() ) ) {
$this->showRequestForm();
} else {
diff --git a/includes/specials/SpecialContributions.php b/includes/specials/SpecialContributions.php
index 7b8aa4c5f8..431b556cb3 100644
--- a/includes/specials/SpecialContributions.php
+++ b/includes/specials/SpecialContributions.php
@@ -673,508 +673,3 @@ class SpecialContributions extends IncludableSpecialPage {
return 'users';
}
}
-
-/**
- * Pager for Special:Contributions
- * @ingroup SpecialPage Pager
- */
-class ContribsPager extends ReverseChronologicalPager {
- public $mDefaultDirection = IndexPager::DIR_DESCENDING;
- public $messages;
- public $target;
- public $namespace = '';
- public $mDb;
- public $preventClickjacking = false;
-
- /** @var IDatabase */
- public $mDbSecondary;
-
- /**
- * @var array
- */
- protected $mParentLens;
-
- function __construct( IContextSource $context, array $options ) {
- parent::__construct( $context );
-
- $msgs = [
- 'diff',
- 'hist',
- 'pipe-separator',
- 'uctop'
- ];
-
- foreach ( $msgs as $msg ) {
- $this->messages[$msg] = $this->msg( $msg )->escaped();
- }
-
- $this->target = isset( $options['target'] ) ? $options['target'] : '';
- $this->contribs = isset( $options['contribs'] ) ? $options['contribs'] : 'users';
- $this->namespace = isset( $options['namespace'] ) ? $options['namespace'] : '';
- $this->tagFilter = isset( $options['tagfilter'] ) ? $options['tagfilter'] : false;
- $this->nsInvert = isset( $options['nsInvert'] ) ? $options['nsInvert'] : false;
- $this->associated = isset( $options['associated'] ) ? $options['associated'] : false;
-
- $this->deletedOnly = !empty( $options['deletedOnly'] );
- $this->topOnly = !empty( $options['topOnly'] );
- $this->newOnly = !empty( $options['newOnly'] );
-
- $year = isset( $options['year'] ) ? $options['year'] : false;
- $month = isset( $options['month'] ) ? $options['month'] : false;
- $this->getDateCond( $year, $month );
-
- // Most of this code will use the 'contributions' group DB, which can map to slaves
- // with extra user based indexes or partioning by user. The additional metadata
- // queries should use a regular slave since the lookup pattern is not all by user.
- $this->mDbSecondary = wfGetDB( DB_SLAVE ); // any random slave
- $this->mDb = wfGetDB( DB_SLAVE, 'contributions' );
- }
-
- function getDefaultQuery() {
- $query = parent::getDefaultQuery();
- $query['target'] = $this->target;
-
- return $query;
- }
-
- /**
- * This method basically executes the exact same code as the parent class, though with
- * a hook added, to allow extensions to add additional queries.
- *
- * @param string $offset Index offset, inclusive
- * @param int $limit Exact query limit
- * @param bool $descending Query direction, false for ascending, true for descending
- * @return ResultWrapper
- */
- function reallyDoQuery( $offset, $limit, $descending ) {
- list( $tables, $fields, $conds, $fname, $options, $join_conds ) = $this->buildQueryInfo(
- $offset,
- $limit,
- $descending
- );
-
- /*
- * This hook will allow extensions to add in additional queries, so they can get their data
- * in My Contributions as well. Extensions should append their results to the $data array.
- *
- * Extension queries have to implement the navbar requirement as well. They should
- * - have a column aliased as $pager->getIndexField()
- * - have LIMIT set
- * - have a WHERE-clause that compares the $pager->getIndexField()-equivalent column to the offset
- * - have the ORDER BY specified based upon the details provided by the navbar
- *
- * See includes/Pager.php buildQueryInfo() method on how to build LIMIT, WHERE & ORDER BY
- *
- * &$data: an array of results of all contribs queries
- * $pager: the ContribsPager object hooked into
- * $offset: see phpdoc above
- * $limit: see phpdoc above
- * $descending: see phpdoc above
- */
- $data = [ $this->mDb->select(
- $tables, $fields, $conds, $fname, $options, $join_conds
- ) ];
- Hooks::run(
- 'ContribsPager::reallyDoQuery',
- [ &$data, $this, $offset, $limit, $descending ]
- );
-
- $result = [];
-
- // loop all results and collect them in an array
- foreach ( $data as $query ) {
- foreach ( $query as $i => $row ) {
- // use index column as key, allowing us to easily sort in PHP
- $result[$row->{$this->getIndexField()} . "-$i"] = $row;
- }
- }
-
- // sort results
- if ( $descending ) {
- ksort( $result );
- } else {
- krsort( $result );
- }
-
- // enforce limit
- $result = array_slice( $result, 0, $limit );
-
- // get rid of array keys
- $result = array_values( $result );
-
- return new FakeResultWrapper( $result );
- }
-
- function getQueryInfo() {
- list( $tables, $index, $userCond, $join_cond ) = $this->getUserCond();
-
- $user = $this->getUser();
- $conds = array_merge( $userCond, $this->getNamespaceCond() );
-
- // Paranoia: avoid brute force searches (bug 17342)
- if ( !$user->isAllowed( 'deletedhistory' ) ) {
- $conds[] = $this->mDb->bitAnd( 'rev_deleted', Revision::DELETED_USER ) . ' = 0';
- } elseif ( !$user->isAllowedAny( 'suppressrevision', 'viewsuppressed' ) ) {
- $conds[] = $this->mDb->bitAnd( 'rev_deleted', Revision::SUPPRESSED_USER ) .
- ' != ' . Revision::SUPPRESSED_USER;
- }
-
- # Don't include orphaned revisions
- $join_cond['page'] = Revision::pageJoinCond();
- # Get the current user name for accounts
- $join_cond['user'] = Revision::userJoinCond();
-
- $options = [];
- if ( $index ) {
- $options['USE INDEX'] = [ 'revision' => $index ];
- }
-
- $queryInfo = [
- 'tables' => $tables,
- 'fields' => array_merge(
- Revision::selectFields(),
- Revision::selectUserFields(),
- [ 'page_namespace', 'page_title', 'page_is_new',
- 'page_latest', 'page_is_redirect', 'page_len' ]
- ),
- 'conds' => $conds,
- 'options' => $options,
- 'join_conds' => $join_cond
- ];
-
- ChangeTags::modifyDisplayQuery(
- $queryInfo['tables'],
- $queryInfo['fields'],
- $queryInfo['conds'],
- $queryInfo['join_conds'],
- $queryInfo['options'],
- $this->tagFilter
- );
-
- Hooks::run( 'ContribsPager::getQueryInfo', [ &$this, &$queryInfo ] );
-
- return $queryInfo;
- }
-
- function getUserCond() {
- $condition = [];
- $join_conds = [];
- $tables = [ 'revision', 'page', 'user' ];
- $index = false;
- if ( $this->contribs == 'newbie' ) {
- $max = $this->mDb->selectField( 'user', 'max(user_id)', false, __METHOD__ );
- $condition[] = 'rev_user >' . (int)( $max - $max / 100 );
- # ignore local groups with the bot right
- # @todo FIXME: Global groups may have 'bot' rights
- $groupsWithBotPermission = User::getGroupsWithPermission( 'bot' );
- if ( count( $groupsWithBotPermission ) ) {
- $tables[] = 'user_groups';
- $condition[] = 'ug_group IS NULL';
- $join_conds['user_groups'] = [
- 'LEFT JOIN', [
- 'ug_user = rev_user',
- 'ug_group' => $groupsWithBotPermission
- ]
- ];
- }
- } else {
- $uid = User::idFromName( $this->target );
- if ( $uid ) {
- $condition['rev_user'] = $uid;
- $index = 'user_timestamp';
- } else {
- $condition['rev_user_text'] = $this->target;
- $index = 'usertext_timestamp';
- }
- }
-
- if ( $this->deletedOnly ) {
- $condition[] = 'rev_deleted != 0';
- }
-
- if ( $this->topOnly ) {
- $condition[] = 'rev_id = page_latest';
- }
-
- if ( $this->newOnly ) {
- $condition[] = 'rev_parent_id = 0';
- }
-
- return [ $tables, $index, $condition, $join_conds ];
- }
-
- function getNamespaceCond() {
- if ( $this->namespace !== '' ) {
- $selectedNS = $this->mDb->addQuotes( $this->namespace );
- $eq_op = $this->nsInvert ? '!=' : '=';
- $bool_op = $this->nsInvert ? 'AND' : 'OR';
-
- if ( !$this->associated ) {
- return [ "page_namespace $eq_op $selectedNS" ];
- }
-
- $associatedNS = $this->mDb->addQuotes(
- MWNamespace::getAssociated( $this->namespace )
- );
-
- return [
- "page_namespace $eq_op $selectedNS " .
- $bool_op .
- " page_namespace $eq_op $associatedNS"
- ];
- }
-
- return [];
- }
-
- function getIndexField() {
- return 'rev_timestamp';
- }
-
- function doBatchLookups() {
- # Do a link batch query
- $this->mResult->seek( 0 );
- $parentRevIds = [];
- $this->mParentLens = [];
- $batch = new LinkBatch();
- # Give some pointers to make (last) links
- foreach ( $this->mResult as $row ) {
- if ( isset( $row->rev_parent_id ) && $row->rev_parent_id ) {
- $parentRevIds[] = $row->rev_parent_id;
- }
- if ( isset( $row->rev_id ) ) {
- $this->mParentLens[$row->rev_id] = $row->rev_len;
- if ( $this->contribs === 'newbie' ) { // multiple users
- $batch->add( NS_USER, $row->user_name );
- $batch->add( NS_USER_TALK, $row->user_name );
- }
- $batch->add( $row->page_namespace, $row->page_title );
- }
- }
- # Fetch rev_len for revisions not already scanned above
- $this->mParentLens += Revision::getParentLengths(
- $this->mDbSecondary,
- array_diff( $parentRevIds, array_keys( $this->mParentLens ) )
- );
- $batch->execute();
- $this->mResult->seek( 0 );
- }
-
- /**
- * @return string
- */
- function getStartBody() {
- return "\n";
- }
-
- /**
- * @return string
- */
- function getEndBody() {
- return " \n";
- }
-
- /**
- * Generates each row in the contributions list.
- *
- * Contributions which are marked "top" are currently on top of the history.
- * For these contributions, a [rollback] link is shown for users with roll-
- * back privileges. The rollback link restores the most recent version that
- * was not written by the target user.
- *
- * @todo This would probably look a lot nicer in a table.
- * @param object $row
- * @return string
- */
- function formatRow( $row ) {
-
- $ret = '';
- $classes = [];
-
- /*
- * There may be more than just revision rows. To make sure that we'll only be processing
- * revisions here, let's _try_ to build a revision out of our row (without displaying
- * notices though) and then trying to grab data from the built object. If we succeed,
- * we're definitely dealing with revision data and we may proceed, if not, we'll leave it
- * to extensions to subscribe to the hook to parse the row.
- */
- MediaWiki\suppressWarnings();
- try {
- $rev = new Revision( $row );
- $validRevision = (bool)$rev->getId();
- } catch ( Exception $e ) {
- $validRevision = false;
- }
- MediaWiki\restoreWarnings();
-
- if ( $validRevision ) {
- $classes = [];
-
- $page = Title::newFromRow( $row );
- $link = Linker::link(
- $page,
- htmlspecialchars( $page->getPrefixedText() ),
- [ 'class' => 'mw-contributions-title' ],
- $page->isRedirect() ? [ 'redirect' => 'no' ] : []
- );
- # Mark current revisions
- $topmarktext = '';
- $user = $this->getUser();
- if ( $row->rev_id == $row->page_latest ) {
- $topmarktext .= '' . $this->messages['uctop'] . ' ';
- # Add rollback link
- if ( !$row->page_is_new && $page->quickUserCan( 'rollback', $user )
- && $page->quickUserCan( 'edit', $user )
- ) {
- $this->preventClickjacking();
- $topmarktext .= ' ' . Linker::generateRollback( $rev, $this->getContext() );
- }
- }
- # Is there a visible previous revision?
- if ( $rev->userCan( Revision::DELETED_TEXT, $user ) && $rev->getParentId() !== 0 ) {
- $difftext = Linker::linkKnown(
- $page,
- $this->messages['diff'],
- [],
- [
- 'diff' => 'prev',
- 'oldid' => $row->rev_id
- ]
- );
- } else {
- $difftext = $this->messages['diff'];
- }
- $histlink = Linker::linkKnown(
- $page,
- $this->messages['hist'],
- [],
- [ 'action' => 'history' ]
- );
-
- if ( $row->rev_parent_id === null ) {
- // For some reason rev_parent_id isn't populated for this row.
- // Its rumoured this is true on wikipedia for some revisions (bug 34922).
- // Next best thing is to have the total number of bytes.
- $chardiff = ' . . ';
- $chardiff .= Linker::formatRevisionSize( $row->rev_len );
- $chardiff .= ' . . ';
- } else {
- $parentLen = 0;
- if ( isset( $this->mParentLens[$row->rev_parent_id] ) ) {
- $parentLen = $this->mParentLens[$row->rev_parent_id];
- }
-
- $chardiff = ' . . ';
- $chardiff .= ChangesList::showCharacterDifference(
- $parentLen,
- $row->rev_len,
- $this->getContext()
- );
- $chardiff .= ' . . ';
- }
-
- $lang = $this->getLanguage();
- $comment = $lang->getDirMark() . Linker::revComment( $rev, false, true );
- $date = $lang->userTimeAndDate( $row->rev_timestamp, $user );
- if ( $rev->userCan( Revision::DELETED_TEXT, $user ) ) {
- $d = Linker::linkKnown(
- $page,
- htmlspecialchars( $date ),
- [ 'class' => 'mw-changeslist-date' ],
- [ 'oldid' => intval( $row->rev_id ) ]
- );
- } else {
- $d = htmlspecialchars( $date );
- }
- if ( $rev->isDeleted( Revision::DELETED_TEXT ) ) {
- $d = '' . $d . ' ';
- }
-
- # Show user names for /newbies as there may be different users.
- # Note that we already excluded rows with hidden user names.
- if ( $this->contribs == 'newbie' ) {
- $userlink = ' . . ' . $lang->getDirMark()
- . Linker::userLink( $rev->getUser(), $rev->getUserText() );
- $userlink .= ' ' . $this->msg( 'parentheses' )->rawParams(
- Linker::userTalkLink( $rev->getUser(), $rev->getUserText() ) )->escaped() . ' ';
- } else {
- $userlink = '';
- }
-
- if ( $rev->getParentId() === 0 ) {
- $nflag = ChangesList::flag( 'newpage' );
- } else {
- $nflag = '';
- }
-
- if ( $rev->isMinor() ) {
- $mflag = ChangesList::flag( 'minor' );
- } else {
- $mflag = '';
- }
-
- $del = Linker::getRevDeleteLink( $user, $rev, $page );
- if ( $del !== '' ) {
- $del .= ' ';
- }
-
- $diffHistLinks = $this->msg( 'parentheses' )
- ->rawParams( $difftext . $this->messages['pipe-separator'] . $histlink )
- ->escaped();
- $ret = "{$del}{$d} {$diffHistLinks}{$chardiff}{$nflag}{$mflag} ";
- $ret .= "{$link}{$userlink} {$comment} {$topmarktext}";
-
- # Denote if username is redacted for this edit
- if ( $rev->isDeleted( Revision::DELETED_USER ) ) {
- $ret .= " " .
- $this->msg( 'rev-deleted-user-contribs' )->escaped() .
- " ";
- }
-
- # Tags, if any.
- list( $tagSummary, $newClasses ) = ChangeTags::formatSummaryRow(
- $row->ts_tags,
- 'contributions',
- $this->getContext()
- );
- $classes = array_merge( $classes, $newClasses );
- $ret .= " $tagSummary";
- }
-
- // Let extensions add data
- Hooks::run( 'ContributionsLineEnding', [ $this, &$ret, $row, &$classes ] );
-
- if ( $classes === [] && $ret === '' ) {
- wfDebug( "Dropping Special:Contribution row that could not be formatted\n" );
- $ret = "\n";
- } else {
- $ret = Html::rawElement( 'li', [ 'class' => $classes ], $ret ) . "\n";
- }
-
- return $ret;
- }
-
- /**
- * Overwrite Pager function and return a helpful comment
- * @return string
- */
- function getSqlComment() {
- if ( $this->namespace || $this->deletedOnly ) {
- // potentially slow, see CR r58153
- return 'contributions page filtered for namespace or RevisionDeleted edits';
- } else {
- return 'contributions page unfiltered';
- }
- }
-
- protected function preventClickjacking() {
- $this->preventClickjacking = true;
- }
-
- /**
- * @return bool
- */
- public function getPreventClickjacking() {
- return $this->preventClickjacking;
- }
-}
diff --git a/includes/specials/SpecialDeletedContributions.php b/includes/specials/SpecialDeletedContributions.php
index 6256bbf21a..190bf9f981 100644
--- a/includes/specials/SpecialDeletedContributions.php
+++ b/includes/specials/SpecialDeletedContributions.php
@@ -25,337 +25,6 @@
* Implements Special:DeletedContributions to display archived revisions
* @ingroup SpecialPage
*/
-class DeletedContribsPager extends IndexPager {
- public $mDefaultDirection = IndexPager::DIR_DESCENDING;
- public $messages;
- public $target;
- public $namespace = '';
- public $mDb;
-
- /**
- * @var string Navigation bar with paging links.
- */
- protected $mNavigationBar;
-
- function __construct( IContextSource $context, $target, $namespace = false ) {
- parent::__construct( $context );
- $msgs = [ 'deletionlog', 'undeleteviewlink', 'diff' ];
- foreach ( $msgs as $msg ) {
- $this->messages[$msg] = $this->msg( $msg )->escaped();
- }
- $this->target = $target;
- $this->namespace = $namespace;
- $this->mDb = wfGetDB( DB_SLAVE, 'contributions' );
- }
-
- function getDefaultQuery() {
- $query = parent::getDefaultQuery();
- $query['target'] = $this->target;
-
- return $query;
- }
-
- function getQueryInfo() {
- list( $index, $userCond ) = $this->getUserCond();
- $conds = array_merge( $userCond, $this->getNamespaceCond() );
- $user = $this->getUser();
- // Paranoia: avoid brute force searches (bug 17792)
- if ( !$user->isAllowed( 'deletedhistory' ) ) {
- $conds[] = $this->mDb->bitAnd( 'ar_deleted', Revision::DELETED_USER ) . ' = 0';
- } elseif ( !$user->isAllowedAny( 'suppressrevision', 'viewsuppressed' ) ) {
- $conds[] = $this->mDb->bitAnd( 'ar_deleted', Revision::SUPPRESSED_USER ) .
- ' != ' . Revision::SUPPRESSED_USER;
- }
-
- return [
- 'tables' => [ 'archive' ],
- 'fields' => [
- 'ar_rev_id', 'ar_namespace', 'ar_title', 'ar_timestamp', 'ar_comment',
- 'ar_minor_edit', 'ar_user', 'ar_user_text', 'ar_deleted'
- ],
- 'conds' => $conds,
- 'options' => [ 'USE INDEX' => $index ]
- ];
- }
-
- /**
- * This method basically executes the exact same code as the parent class, though with
- * a hook added, to allow extensions to add additional queries.
- *
- * @param string $offset Index offset, inclusive
- * @param int $limit Exact query limit
- * @param bool $descending Query direction, false for ascending, true for descending
- * @return ResultWrapper
- */
- function reallyDoQuery( $offset, $limit, $descending ) {
- $data = [ parent::reallyDoQuery( $offset, $limit, $descending ) ];
-
- // This hook will allow extensions to add in additional queries, nearly
- // identical to ContribsPager::reallyDoQuery.
- Hooks::run(
- 'DeletedContribsPager::reallyDoQuery',
- [ &$data, $this, $offset, $limit, $descending ]
- );
-
- $result = [];
-
- // loop all results and collect them in an array
- foreach ( $data as $query ) {
- foreach ( $query as $i => $row ) {
- // use index column as key, allowing us to easily sort in PHP
- $result[$row->{$this->getIndexField()} . "-$i"] = $row;
- }
- }
-
- // sort results
- if ( $descending ) {
- ksort( $result );
- } else {
- krsort( $result );
- }
-
- // enforce limit
- $result = array_slice( $result, 0, $limit );
-
- // get rid of array keys
- $result = array_values( $result );
-
- return new FakeResultWrapper( $result );
- }
-
- function getUserCond() {
- $condition = [];
-
- $condition['ar_user_text'] = $this->target;
- $index = 'usertext_timestamp';
-
- return [ $index, $condition ];
- }
-
- function getIndexField() {
- return 'ar_timestamp';
- }
-
- function getStartBody() {
- return "\n";
- }
-
- function getEndBody() {
- return " \n";
- }
-
- function getNavigationBar() {
- if ( isset( $this->mNavigationBar ) ) {
- return $this->mNavigationBar;
- }
-
- $linkTexts = [
- 'prev' => $this->msg( 'pager-newer-n' )->numParams( $this->mLimit )->escaped(),
- 'next' => $this->msg( 'pager-older-n' )->numParams( $this->mLimit )->escaped(),
- 'first' => $this->msg( 'histlast' )->escaped(),
- 'last' => $this->msg( 'histfirst' )->escaped()
- ];
-
- $pagingLinks = $this->getPagingLinks( $linkTexts );
- $limitLinks = $this->getLimitLinks();
- $lang = $this->getLanguage();
- $limits = $lang->pipeList( $limitLinks );
-
- $firstLast = $lang->pipeList( [ $pagingLinks['first'], $pagingLinks['last'] ] );
- $firstLast = $this->msg( 'parentheses' )->rawParams( $firstLast )->escaped();
- $prevNext = $this->msg( 'viewprevnext' )
- ->rawParams(
- $pagingLinks['prev'],
- $pagingLinks['next'],
- $limits
- )->escaped();
- $separator = $this->msg( 'word-separator' )->escaped();
- $this->mNavigationBar = $firstLast . $separator . $prevNext;
-
- return $this->mNavigationBar;
- }
-
- function getNamespaceCond() {
- if ( $this->namespace !== '' ) {
- return [ 'ar_namespace' => (int)$this->namespace ];
- } else {
- return [];
- }
- }
-
- /**
- * Generates each row in the contributions list.
- *
- * @todo This would probably look a lot nicer in a table.
- * @param stdClass $row
- * @return string
- */
- function formatRow( $row ) {
- $ret = '';
- $classes = [];
-
- /*
- * There may be more than just revision rows. To make sure that we'll only be processing
- * revisions here, let's _try_ to build a revision out of our row (without displaying
- * notices though) and then trying to grab data from the built object. If we succeed,
- * we're definitely dealing with revision data and we may proceed, if not, we'll leave it
- * to extensions to subscribe to the hook to parse the row.
- */
- MediaWiki\suppressWarnings();
- try {
- $rev = Revision::newFromArchiveRow( $row );
- $validRevision = (bool)$rev->getId();
- } catch ( Exception $e ) {
- $validRevision = false;
- }
- MediaWiki\restoreWarnings();
-
- if ( $validRevision ) {
- $ret = $this->formatRevisionRow( $row );
- }
-
- // Let extensions add data
- Hooks::run( 'DeletedContributionsLineEnding', [ $this, &$ret, $row, &$classes ] );
-
- if ( $classes === [] && $ret === '' ) {
- wfDebug( "Dropping Special:DeletedContribution row that could not be formatted\n" );
- $ret = "\n";
- } else {
- $ret = Html::rawElement( 'li', [ 'class' => $classes ], $ret ) . "\n";
- }
-
- return $ret;
- }
-
- /**
- * Generates each row in the contributions list for archive entries.
- *
- * Contributions which are marked "top" are currently on top of the history.
- * For these contributions, a [rollback] link is shown for users with sysop
- * privileges. The rollback link restores the most recent version that was not
- * written by the target user.
- *
- * @todo This would probably look a lot nicer in a table.
- * @param stdClass $row
- * @return string
- */
- function formatRevisionRow( $row ) {
- $page = Title::makeTitle( $row->ar_namespace, $row->ar_title );
-
- $rev = new Revision( [
- 'title' => $page,
- 'id' => $row->ar_rev_id,
- 'comment' => $row->ar_comment,
- 'user' => $row->ar_user,
- 'user_text' => $row->ar_user_text,
- 'timestamp' => $row->ar_timestamp,
- 'minor_edit' => $row->ar_minor_edit,
- 'deleted' => $row->ar_deleted,
- ] );
-
- $undelete = SpecialPage::getTitleFor( 'Undelete' );
-
- $logs = SpecialPage::getTitleFor( 'Log' );
- $dellog = Linker::linkKnown(
- $logs,
- $this->messages['deletionlog'],
- [],
- [
- 'type' => 'delete',
- 'page' => $page->getPrefixedText()
- ]
- );
-
- $reviewlink = Linker::linkKnown(
- SpecialPage::getTitleFor( 'Undelete', $page->getPrefixedDBkey() ),
- $this->messages['undeleteviewlink']
- );
-
- $user = $this->getUser();
-
- if ( $user->isAllowed( 'deletedtext' ) ) {
- $last = Linker::linkKnown(
- $undelete,
- $this->messages['diff'],
- [],
- [
- 'target' => $page->getPrefixedText(),
- 'timestamp' => $rev->getTimestamp(),
- 'diff' => 'prev'
- ]
- );
- } else {
- $last = $this->messages['diff'];
- }
-
- $comment = Linker::revComment( $rev );
- $date = $this->getLanguage()->userTimeAndDate( $rev->getTimestamp(), $user );
- $date = htmlspecialchars( $date );
-
- if ( !$user->isAllowed( 'undelete' ) || !$rev->userCan( Revision::DELETED_TEXT, $user ) ) {
- $link = $date; // unusable link
- } else {
- $link = Linker::linkKnown(
- $undelete,
- $date,
- [ 'class' => 'mw-changeslist-date' ],
- [
- 'target' => $page->getPrefixedText(),
- 'timestamp' => $rev->getTimestamp()
- ]
- );
- }
- // Style deleted items
- if ( $rev->isDeleted( Revision::DELETED_TEXT ) ) {
- $link = '' . $link . ' ';
- }
-
- $pagelink = Linker::link(
- $page,
- null,
- [ 'class' => 'mw-changeslist-title' ]
- );
-
- if ( $rev->isMinor() ) {
- $mflag = ChangesList::flag( 'minor' );
- } else {
- $mflag = '';
- }
-
- // Revision delete link
- $del = Linker::getRevDeleteLink( $user, $rev, $page );
- if ( $del ) {
- $del .= ' ';
- }
-
- $tools = Html::rawElement(
- 'span',
- [ 'class' => 'mw-deletedcontribs-tools' ],
- $this->msg( 'parentheses' )->rawParams( $this->getLanguage()->pipeList(
- [ $last, $dellog, $reviewlink ] ) )->escaped()
- );
-
- $separator = '. . ';
- $ret = "{$del}{$link} {$tools} {$separator} {$mflag} {$pagelink} {$comment}";
-
- # Denote if username is redacted for this edit
- if ( $rev->isDeleted( Revision::DELETED_USER ) ) {
- $ret .= " " . $this->msg( 'rev-deleted-user-contribs' )->escaped() . " ";
- }
-
- return $ret;
- }
-
- /**
- * Get the Database object in use
- *
- * @return IDatabase
- */
- public function getDatabase() {
- return $this->mDb;
- }
-}
-
class DeletedContributionsPage extends SpecialPage {
function __construct() {
parent::__construct( 'DeletedContributions', 'deletedhistory',
diff --git a/includes/specials/SpecialEditWatchlist.php b/includes/specials/SpecialEditWatchlist.php
index 9c1f224391..f2fa9214ee 100644
--- a/includes/specials/SpecialEditWatchlist.php
+++ b/includes/specials/SpecialEditWatchlist.php
@@ -2,6 +2,7 @@
/**
* @defgroup Watchlist Users watchlist handling
*/
+use MediaWiki\Linker\LinkTarget;
/**
* Implements Special:EditWatchlist
@@ -49,10 +50,26 @@ class SpecialEditWatchlist extends UnlistedSpecialPage {
private $badItems = [];
+ /**
+ * @var TitleParser
+ */
+ private $titleParser;
+
public function __construct() {
parent::__construct( 'EditWatchlist', 'editmywatchlist' );
}
+ /**
+ * Initialize any services we'll need (unless it has already been provided via a setter).
+ * This allows for dependency injection even though we don't control object creation.
+ */
+ private function initServices() {
+ if ( !$this->titleParser ) {
+ $lang = $this->getContext()->getLanguage();
+ $this->titleParser = new MediaWikiTitleCodec( $lang, GenderCache::singleton() );
+ }
+ }
+
public function doesWrites() {
return true;
}
@@ -63,6 +80,7 @@ class SpecialEditWatchlist extends UnlistedSpecialPage {
* @param int $mode
*/
public function execute( $mode ) {
+ $this->initServices();
$this->setHeaders();
# Anons don't get a watchlist
@@ -347,22 +365,18 @@ class SpecialEditWatchlist extends UnlistedSpecialPage {
*/
protected function getWatchlistInfo() {
$titles = [];
- $dbr = wfGetDB( DB_SLAVE );
- $res = $dbr->select(
- [ 'watchlist' ],
- [ 'wl_namespace', 'wl_title' ],
- [ 'wl_user' => $this->getUser()->getId() ],
- __METHOD__,
- [ 'ORDER BY' => [ 'wl_namespace', 'wl_title' ] ]
- );
+ $watchedItems = WatchedItemStore::getDefaultInstance()
+ ->getWatchedItemsForUser( $this->getUser(), [ 'sort' => WatchedItemStore::SORT_ASC ] );
$lb = new LinkBatch();
- foreach ( $res as $row ) {
- $lb->add( $row->wl_namespace, $row->wl_title );
- if ( !MWNamespace::isTalk( $row->wl_namespace ) ) {
- $titles[$row->wl_namespace][$row->wl_title] = 1;
+ foreach ( $watchedItems as $watchedItem ) {
+ $namespace = $watchedItem->getLinkTarget()->getNamespace();
+ $dbKey = $watchedItem->getLinkTarget()->getDBkey();
+ $lb->add( $namespace, $dbKey );
+ if ( !MWNamespace::isTalk( $namespace ) ) {
+ $titles[$namespace][$dbKey] = 1;
}
}
@@ -436,39 +450,32 @@ class SpecialEditWatchlist extends UnlistedSpecialPage {
}
/**
- * Add a list of titles to a user's watchlist
+ * Add a list of targets to a user's watchlist
*
- * $titles can be an array of strings or Title objects; the former
- * is preferred, since Titles are very memory-heavy
- *
- * @param array $titles Array of strings, or Title objects
+ * @param string[]|LinkTarget[] $targets
*/
- private function watchTitles( $titles ) {
- $dbw = wfGetDB( DB_MASTER );
- $rows = [];
-
- foreach ( $titles as $title ) {
- if ( !$title instanceof Title ) {
- $title = Title::newFromText( $title );
+ private function watchTitles( $targets ) {
+ $expandedTargets = [];
+ foreach ( $targets as $target ) {
+ if ( !$target instanceof LinkTarget ) {
+ try {
+ $target = $this->titleParser->parseTitle( $target, NS_MAIN );
+ }
+ catch ( MalformedTitleException $e ) {
+ continue;
+ }
}
- if ( $title instanceof Title ) {
- $rows[] = [
- 'wl_user' => $this->getUser()->getId(),
- 'wl_namespace' => MWNamespace::getSubject( $title->getNamespace() ),
- 'wl_title' => $title->getDBkey(),
- 'wl_notificationtimestamp' => null,
- ];
- $rows[] = [
- 'wl_user' => $this->getUser()->getId(),
- 'wl_namespace' => MWNamespace::getTalk( $title->getNamespace() ),
- 'wl_title' => $title->getDBkey(),
- 'wl_notificationtimestamp' => null,
- ];
- }
+ $ns = $target->getNamespace();
+ $dbKey = $target->getDBkey();
+ $expandedTargets[] = new TitleValue( MWNamespace::getSubject( $ns ), $dbKey );
+ $expandedTargets[] = new TitleValue( MWNamespace::getTalk( $ns ), $dbKey );
}
- $dbw->insert( 'watchlist', $rows, __METHOD__, 'IGNORE' );
+ WatchedItemStore::getDefaultInstance()->addWatchBatchForUser(
+ $this->getUser(),
+ $expandedTargets
+ );
}
/**
diff --git a/includes/specials/SpecialExport.php b/includes/specials/SpecialExport.php
index ede367ee08..3e66ab08d3 100644
--- a/includes/specials/SpecialExport.php
+++ b/includes/specials/SpecialExport.php
@@ -168,6 +168,7 @@ class SpecialExport extends SpecialPage {
// This should provide safer streaming for pages with history
wfResetOutputBuffers();
$request->response()->header( "Content-type: application/xml; charset=utf-8" );
+ $request->response()->header( "X-Robots-Tag: noindex,nofollow" );
if ( $request->getCheck( 'wpDownload' ) ) {
// Provide a sane filename suggestion
diff --git a/includes/specials/SpecialFileDuplicateSearch.php b/includes/specials/SpecialFileDuplicateSearch.php
index 68960d3aad..6de127d3b8 100644
--- a/includes/specials/SpecialFileDuplicateSearch.php
+++ b/includes/specials/SpecialFileDuplicateSearch.php
@@ -1,4 +1,6 @@
'filename',
'size' => 50,
'value' => $this->filename,
- 'cssclass' => 'mw-ui-input-inline'
],
];
$hiddenFields = [
'title' => $this->getPageTitle()->getPrefixedDBkey(),
];
- $htmlForm = HTMLForm::factory( 'inline', $formFields, $this->getContext() );
+ $htmlForm = HTMLForm::factory( 'ooui', $formFields, $this->getContext() );
$htmlForm->addHiddenFields( $hiddenFields );
$htmlForm->setAction( wfScript() );
$htmlForm->setMethod( 'get' );
$htmlForm->setSubmitProgressive();
$htmlForm->setSubmitTextMsg( $this->msg( 'fileduplicatesearch-submit' ) );
- $htmlForm->setWrapperLegendMsg( 'fileduplicatesearch-legend' );
// The form should be visible always, even if it was submitted (e.g. to perform another action).
// To bypass the callback validation of HTMLForm, use prepareForm() and displayForm().
@@ -246,11 +246,11 @@ class FileDuplicateSearchPage extends QueryPage {
// No prefix suggestion outside of file namespace
return [];
}
- $search = SearchEngine::create();
- $search->setLimitOffset( $limit, $offset );
+ $searchEngine = MediaWikiServices::getInstance()->newSearchEngine();
+ $searchEngine->setLimitOffset( $limit, $offset );
// Autocomplete subpage the same as a normal search, but just for files
- $search->setNamespaces( [ NS_FILE ] );
- $result = $search->defaultPrefixSearch( $search );
+ $searchEngine->setNamespaces( [ NS_FILE ] );
+ $result = $searchEngine->defaultPrefixSearch( $search );
return array_map( function ( Title $t ) {
// Remove namespace in search suggestion
diff --git a/includes/specials/SpecialJavaScriptTest.php b/includes/specials/SpecialJavaScriptTest.php
index 37dba53774..5d36a3c676 100644
--- a/includes/specials/SpecialJavaScriptTest.php
+++ b/includes/specials/SpecialJavaScriptTest.php
@@ -25,12 +25,6 @@
* @ingroup SpecialPage
*/
class SpecialJavaScriptTest extends SpecialPage {
- /**
- * @var array Supported frameworks.
- */
- private static $frameworks = [
- 'qunit',
- ];
public function __construct() {
parent::__construct( 'JavaScriptTest' );
@@ -42,102 +36,33 @@ class SpecialJavaScriptTest extends SpecialPage {
$this->setHeaders();
$out->disallowUserJs();
- if ( $par === null ) {
- // No framework specified
- // If only one framework is configured, redirect to it. Otherwise display a list.
- if ( count( self::$frameworks ) === 1 ) {
- $out->redirect( $this->getPageTitle( self::$frameworks[0] . '/plain' )->getLocalURL() );
- return;
- }
- $out->setStatusCode( 404 );
- $out->setPageTitle( $this->msg( 'javascripttest' ) );
- $out->addHTML(
- $this->msg( 'javascripttest-pagetext-noframework' )->parseAsBlock()
- . $this->getFrameworkListHtml()
- );
- return;
- }
-
- // Determine framework and mode
- $pars = explode( '/', $par, 2 );
-
- $framework = $pars[0];
- if ( !in_array( $framework, self::$frameworks ) ) {
- // Framework not found
- $out->setStatusCode( 404 );
- $out->addHTML(
- ''
- . $this->msg( 'javascripttest-pagetext-unknownframework' )
- ->plaintextParams( $par )->parseAsBlock()
- . '
'
- . $this->getFrameworkListHtml()
- );
- return;
- }
-
// This special page is disabled by default ($wgEnableJavaScriptTest), and contains
// no sensitive data. In order to allow TestSwarm to embed it into a test client window,
// we need to allow iframing of this page.
$out->allowClickjacking();
- if ( count( self::$frameworks ) !== 1 ) {
- // If there's only one framework, don't set the subtitle since it
- // is going to redirect back to this page
- $out->setSubtitle(
- $this->msg( 'javascripttest-backlink' )
- ->rawParams( Linker::linkKnown( $this->getPageTitle() ) )
- );
- }
- // Custom actions
- if ( isset( $pars[1] ) ) {
- $action = $pars[1];
- if ( !in_array( $action, [ 'export', 'plain' ] ) ) {
- $out->setStatusCode( 404 );
- $out->addHTML(
- ''
- . $this->msg( 'javascripttest-pagetext-unknownaction' )
- ->plaintextParams( $action )->parseAsBlock()
- . '
'
- );
- return;
- }
- $method = $action . ucfirst( $framework );
- $this->$method();
+ // Sub resource: Internal JavaScript export bundle for QUnit
+ if ( $par === 'qunit/export' ) {
+ $this->exportQUnit();
return;
}
- $method = 'view' . ucfirst( $framework );
- $this->$method();
- $out->setPageTitle( $this->msg(
- 'javascripttest-title',
- // Messages: javascripttest-qunit-name
- $this->msg( "javascripttest-$framework-name" )->plain()
- ) );
- }
-
- /**
- * Get a list of frameworks (including introduction paragraph and links
- * to the framework run pages)
- *
- * @return string HTML
- */
- private function getFrameworkListHtml() {
- $list = '';
- foreach ( self::$frameworks as $framework ) {
- $list .= Html::rawElement(
- 'li',
- [],
- Linker::link(
- $this->getPageTitle( $framework ),
- // Message: javascripttest-qunit-name
- $this->msg( "javascripttest-$framework-name" )->escaped()
- )
- );
+ // Regular view: QUnit test runner
+ // (Support "/qunit" and "/qunit/plain" for backwards compatibility)
+ if ( $par === null || $par === '' || $par === 'qunit' || $par === 'qunit/plain' ) {
+ $this->plainQUnit();
+ return;
}
- $list .= ' ';
- return $this->msg( 'javascripttest-pagetext-frameworks' )->rawParams( $list )
- ->parseAsBlock();
+ // Unknown action
+ $out->setStatusCode( 404 );
+ $out->setPageTitle( $this->msg( 'javascripttest' ) );
+ $out->addHTML(
+ ''
+ . $this->msg( 'javascripttest-pagetext-unknownaction' )
+ ->plaintextParams( $par )->parseAsBlock()
+ . '
'
+ );
}
/**
@@ -152,37 +77,6 @@ class SpecialJavaScriptTest extends SpecialPage {
return "$summary
";
}
- /**
- * Run the test suite on the Special page.
- *
- * Rendered by OutputPage and Skin.
- */
- private function viewQUnit() {
- $out = $this->getOutput();
-
- $modules = $out->getResourceLoader()->getTestModuleNames( 'qunit' );
-
- $baseHtml = <<
-
-
-HTML;
-
- $out->addHTML( $this->getSummaryHtml() . $baseHtml );
-
- // The testrunner configures QUnit and essentially depends on it. However, test suites
- // are reusable in environments that preload QUnit (or a compatibility interface to
- // another framework). Therefore we have to load it ourselves.
- $out->addHTML( ResourceLoader::makeInlineScript(
- Xml::encodeJsCall( 'mw.loader.using', [
- [ 'jquery.qunit', 'jquery.qunit.completenessTest' ],
- new XmlJsCode(
- 'function () {' . Xml::encodeJsCall( 'mw.loader.load', [ $modules ] ) . '}'
- )
- ] )
- ) );
- }
-
/**
* Generate self-sufficient JavaScript payload to run the tests elsewhere.
*
diff --git a/includes/specials/SpecialLinkSearch.php b/includes/specials/SpecialLinkSearch.php
index 2a7046ecbd..1ecbee007e 100644
--- a/includes/specials/SpecialLinkSearch.php
+++ b/includes/specials/SpecialLinkSearch.php
@@ -299,4 +299,14 @@ class LinkSearchPage extends QueryPage {
protected function getGroupName() {
return 'redirects';
}
+
+ /**
+ * enwiki complained about low limits on this special page
+ *
+ * @see T130058
+ * @todo FIXME This special page should not use LIMIT for paging
+ */
+ protected function getMaxResults() {
+ return max( parent::getMaxResults(), 60000 );
+ }
}
diff --git a/includes/specials/SpecialListfiles.php b/includes/specials/SpecialListfiles.php
index 6c856e98af..e6e1048cd6 100644
--- a/includes/specials/SpecialListfiles.php
+++ b/includes/specials/SpecialListfiles.php
@@ -81,584 +81,3 @@ class SpecialListFiles extends IncludableSpecialPage {
return 'media';
}
}
-
-/**
- * @ingroup SpecialPage Pager
- */
-class ImageListPager extends TablePager {
- protected $mFieldNames = null;
-
- // Subclasses should override buildQueryConds instead of using $mQueryConds variable.
- protected $mQueryConds = [];
-
- protected $mUserName = null;
-
- /**
- * The relevant user
- *
- * @var User|null
- */
- protected $mUser = null;
-
- protected $mSearch = '';
-
- protected $mIncluding = false;
-
- protected $mShowAll = false;
-
- protected $mTableName = 'image';
-
- function __construct( IContextSource $context, $userName = null, $search = '',
- $including = false, $showAll = false
- ) {
- $this->setContext( $context );
- $this->mIncluding = $including;
- $this->mShowAll = $showAll;
-
- if ( $userName !== null && $userName !== '' ) {
- $nt = Title::newFromText( $userName, NS_USER );
- if ( is_null( $nt ) ) {
- $this->outputUserDoesNotExist( $userName );
- } else {
- $this->mUserName = $nt->getText();
- $user = User::newFromName( $this->mUserName, false );
- if ( $user ) {
- $this->mUser = $user;
- }
- if ( !$user || ( $user->isAnon() && !User::isIP( $user->getName() ) ) ) {
- $this->outputUserDoesNotExist( $userName );
- }
- }
- }
-
- if ( $search !== '' && !$this->getConfig()->get( 'MiserMode' ) ) {
- $this->mSearch = $search;
- $nt = Title::newFromText( $this->mSearch );
-
- if ( $nt ) {
- $dbr = wfGetDB( DB_SLAVE );
- $this->mQueryConds[] = 'LOWER(img_name)' .
- $dbr->buildLike( $dbr->anyString(),
- strtolower( $nt->getDBkey() ), $dbr->anyString() );
- }
- }
-
- if ( !$including ) {
- if ( $this->getRequest()->getText( 'sort', 'img_date' ) == 'img_date' ) {
- $this->mDefaultDirection = IndexPager::DIR_DESCENDING;
- } else {
- $this->mDefaultDirection = IndexPager::DIR_ASCENDING;
- }
- } else {
- $this->mDefaultDirection = IndexPager::DIR_DESCENDING;
- }
-
- parent::__construct( $context );
- }
-
- /**
- * Get the user relevant to the ImageList
- *
- * @return User|null
- */
- function getRelevantUser() {
- return $this->mUser;
- }
-
- /**
- * Add a message to the output stating that the user doesn't exist
- *
- * @param string $userName Unescaped user name
- */
- protected function outputUserDoesNotExist( $userName ) {
- $this->getOutput()->wrapWikiMsg(
- "\n$1\n
",
- [
- 'listfiles-userdoesnotexist',
- wfEscapeWikiText( $userName ),
- ]
- );
- }
-
- /**
- * Build the where clause of the query.
- *
- * Replaces the older mQueryConds member variable.
- * @param string $table Either "image" or "oldimage"
- * @return array The query conditions.
- */
- protected function buildQueryConds( $table ) {
- $prefix = $table === 'image' ? 'img' : 'oi';
- $conds = [];
-
- if ( !is_null( $this->mUserName ) ) {
- $conds[$prefix . '_user_text'] = $this->mUserName;
- }
-
- if ( $this->mSearch !== '' ) {
- $nt = Title::newFromText( $this->mSearch );
- if ( $nt ) {
- $dbr = wfGetDB( DB_SLAVE );
- $conds[] = 'LOWER(' . $prefix . '_name)' .
- $dbr->buildLike( $dbr->anyString(),
- strtolower( $nt->getDBkey() ), $dbr->anyString() );
- }
- }
-
- if ( $table === 'oldimage' ) {
- // Don't want to deal with revdel.
- // Future fixme: Show partial information as appropriate.
- // Would have to be careful about filtering by username when username is deleted.
- $conds['oi_deleted'] = 0;
- }
-
- // Add mQueryConds in case anyone was subclassing and using the old variable.
- return $conds + $this->mQueryConds;
- }
-
- /**
- * @return array
- */
- function getFieldNames() {
- if ( !$this->mFieldNames ) {
- $this->mFieldNames = [
- 'img_timestamp' => $this->msg( 'listfiles_date' )->text(),
- 'img_name' => $this->msg( 'listfiles_name' )->text(),
- 'thumb' => $this->msg( 'listfiles_thumb' )->text(),
- 'img_size' => $this->msg( 'listfiles_size' )->text(),
- ];
- if ( is_null( $this->mUserName ) ) {
- // Do not show username if filtering by username
- $this->mFieldNames['img_user_text'] = $this->msg( 'listfiles_user' )->text();
- }
- // img_description down here, in order so that its still after the username field.
- $this->mFieldNames['img_description'] = $this->msg( 'listfiles_description' )->text();
-
- if ( !$this->getConfig()->get( 'MiserMode' ) && !$this->mShowAll ) {
- $this->mFieldNames['count'] = $this->msg( 'listfiles_count' )->text();
- }
- if ( $this->mShowAll ) {
- $this->mFieldNames['top'] = $this->msg( 'listfiles-latestversion' )->text();
- }
- }
-
- return $this->mFieldNames;
- }
-
- function isFieldSortable( $field ) {
- if ( $this->mIncluding ) {
- return false;
- }
- $sortable = [ 'img_timestamp', 'img_name', 'img_size' ];
- /* For reference, the indicies we can use for sorting are:
- * On the image table: img_usertext_timestamp, img_size, img_timestamp
- * On oldimage: oi_usertext_timestamp, oi_name_timestamp
- *
- * In particular that means we cannot sort by timestamp when not filtering
- * by user and including old images in the results. Which is sad.
- */
- if ( $this->getConfig()->get( 'MiserMode' ) && !is_null( $this->mUserName ) ) {
- // If we're sorting by user, the index only supports sorting by time.
- if ( $field === 'img_timestamp' ) {
- return true;
- } else {
- return false;
- }
- } elseif ( $this->getConfig()->get( 'MiserMode' )
- && $this->mShowAll /* && mUserName === null */
- ) {
- // no oi_timestamp index, so only alphabetical sorting in this case.
- if ( $field === 'img_name' ) {
- return true;
- } else {
- return false;
- }
- }
-
- return in_array( $field, $sortable );
- }
-
- function getQueryInfo() {
- // Hacky Hacky Hacky - I want to get query info
- // for two different tables, without reimplementing
- // the pager class.
- $qi = $this->getQueryInfoReal( $this->mTableName );
-
- return $qi;
- }
-
- /**
- * Actually get the query info.
- *
- * This is to allow displaying both stuff from image and oldimage table.
- *
- * This is a bit hacky.
- *
- * @param string $table Either 'image' or 'oldimage'
- * @return array Query info
- */
- protected function getQueryInfoReal( $table ) {
- $prefix = $table === 'oldimage' ? 'oi' : 'img';
-
- $tables = [ $table ];
- $fields = array_keys( $this->getFieldNames() );
-
- if ( $table === 'oldimage' ) {
- foreach ( $fields as $id => &$field ) {
- if ( substr( $field, 0, 4 ) !== 'img_' ) {
- continue;
- }
- $field = $prefix . substr( $field, 3 ) . ' AS ' . $field;
- }
- $fields[array_search( 'top', $fields )] = "'no' AS top";
- } else {
- if ( $this->mShowAll ) {
- $fields[array_search( 'top', $fields )] = "'yes' AS top";
- }
- }
- $fields[] = $prefix . '_user AS img_user';
- $fields[array_search( 'thumb', $fields )] = $prefix . '_name AS thumb';
-
- $options = $join_conds = [];
-
- # Depends on $wgMiserMode
- # Will also not happen if mShowAll is true.
- if ( isset( $this->mFieldNames['count'] ) ) {
- $tables[] = 'oldimage';
-
- # Need to rewrite this one
- foreach ( $fields as &$field ) {
- if ( $field == 'count' ) {
- $field = 'COUNT(oi_archive_name) AS count';
- }
- }
- unset( $field );
-
- $dbr = wfGetDB( DB_SLAVE );
- if ( $dbr->implicitGroupby() ) {
- $options = [ 'GROUP BY' => 'img_name' ];
- } else {
- $columnlist = preg_grep( '/^img/', array_keys( $this->getFieldNames() ) );
- $options = [ 'GROUP BY' => array_merge( [ 'img_user' ], $columnlist ) ];
- }
- $join_conds = [ 'oldimage' => [ 'LEFT JOIN', 'oi_name = img_name' ] ];
- }
-
- return [
- 'tables' => $tables,
- 'fields' => $fields,
- 'conds' => $this->buildQueryConds( $table ),
- 'options' => $options,
- 'join_conds' => $join_conds
- ];
- }
-
- /**
- * Override reallyDoQuery to mix together two queries.
- *
- * @note $asc is named $descending in IndexPager base class. However
- * it is true when the order is ascending, and false when the order
- * is descending, so I renamed it to $asc here.
- * @param int $offset
- * @param int $limit
- * @param bool $asc
- * @return array
- * @throws MWException
- */
- function reallyDoQuery( $offset, $limit, $asc ) {
- $prevTableName = $this->mTableName;
- $this->mTableName = 'image';
- list( $tables, $fields, $conds, $fname, $options, $join_conds ) =
- $this->buildQueryInfo( $offset, $limit, $asc );
- $imageRes = $this->mDb->select( $tables, $fields, $conds, $fname, $options, $join_conds );
- $this->mTableName = $prevTableName;
-
- if ( !$this->mShowAll ) {
- return $imageRes;
- }
-
- $this->mTableName = 'oldimage';
-
- # Hacky...
- $oldIndex = $this->mIndexField;
- if ( substr( $this->mIndexField, 0, 4 ) !== 'img_' ) {
- throw new MWException( "Expected to be sorting on an image table field" );
- }
- $this->mIndexField = 'oi_' . substr( $this->mIndexField, 4 );
-
- list( $tables, $fields, $conds, $fname, $options, $join_conds ) =
- $this->buildQueryInfo( $offset, $limit, $asc );
- $oldimageRes = $this->mDb->select( $tables, $fields, $conds, $fname, $options, $join_conds );
-
- $this->mTableName = $prevTableName;
- $this->mIndexField = $oldIndex;
-
- return $this->combineResult( $imageRes, $oldimageRes, $limit, $asc );
- }
-
- /**
- * Combine results from 2 tables.
- *
- * Note: This will throw away some results
- *
- * @param ResultWrapper $res1
- * @param ResultWrapper $res2
- * @param int $limit
- * @param bool $ascending See note about $asc in $this->reallyDoQuery
- * @return FakeResultWrapper $res1 and $res2 combined
- */
- protected function combineResult( $res1, $res2, $limit, $ascending ) {
- $res1->rewind();
- $res2->rewind();
- $topRes1 = $res1->next();
- $topRes2 = $res2->next();
- $resultArray = [];
- for ( $i = 0; $i < $limit && $topRes1 && $topRes2; $i++ ) {
- if ( strcmp( $topRes1->{$this->mIndexField}, $topRes2->{$this->mIndexField} ) > 0 ) {
- if ( !$ascending ) {
- $resultArray[] = $topRes1;
- $topRes1 = $res1->next();
- } else {
- $resultArray[] = $topRes2;
- $topRes2 = $res2->next();
- }
- } else {
- if ( !$ascending ) {
- $resultArray[] = $topRes2;
- $topRes2 = $res2->next();
- } else {
- $resultArray[] = $topRes1;
- $topRes1 = $res1->next();
- }
- }
- }
-
- // @codingStandardsIgnoreStart Squiz.WhiteSpace.SemicolonSpacing.Incorrect
- for ( ; $i < $limit && $topRes1; $i++ ) {
- // @codingStandardsIgnoreEnd
- $resultArray[] = $topRes1;
- $topRes1 = $res1->next();
- }
-
- // @codingStandardsIgnoreStart Squiz.WhiteSpace.SemicolonSpacing.Incorrect
- for ( ; $i < $limit && $topRes2; $i++ ) {
- // @codingStandardsIgnoreEnd
- $resultArray[] = $topRes2;
- $topRes2 = $res2->next();
- }
-
- return new FakeResultWrapper( $resultArray );
- }
-
- function getDefaultSort() {
- if ( $this->mShowAll && $this->getConfig()->get( 'MiserMode' ) && is_null( $this->mUserName ) ) {
- // Unfortunately no index on oi_timestamp.
- return 'img_name';
- } else {
- return 'img_timestamp';
- }
- }
-
- function doBatchLookups() {
- $userIds = [];
- $this->mResult->seek( 0 );
- foreach ( $this->mResult as $row ) {
- $userIds[] = $row->img_user;
- }
- # Do a link batch query for names and userpages
- UserCache::singleton()->doQuery( $userIds, [ 'userpage' ], __METHOD__ );
- }
-
- /**
- * @param string $field
- * @param string $value
- * @return Message|string|int The return type depends on the value of $field:
- * - thumb: string
- * - img_timestamp: string
- * - img_name: string
- * - img_user_text: string
- * - img_size: string
- * - img_description: string
- * - count: int
- * - top: Message
- * @throws MWException
- */
- function formatValue( $field, $value ) {
- switch ( $field ) {
- case 'thumb':
- $opt = [ 'time' => wfTimestamp( TS_MW, $this->mCurrentRow->img_timestamp ) ];
- $file = RepoGroup::singleton()->getLocalRepo()->findFile( $value, $opt );
- // If statement for paranoia
- if ( $file ) {
- $thumb = $file->transform( [ 'width' => 180, 'height' => 360 ] );
-
- return $thumb->toHtml( [ 'desc-link' => true ] );
- } else {
- return htmlspecialchars( $value );
- }
- case 'img_timestamp':
- // We may want to make this a link to the "old" version when displaying old files
- return htmlspecialchars( $this->getLanguage()->userTimeAndDate( $value, $this->getUser() ) );
- case 'img_name':
- static $imgfile = null;
- if ( $imgfile === null ) {
- $imgfile = $this->msg( 'imgfile' )->text();
- }
-
- // Weird files can maybe exist? Bug 22227
- $filePage = Title::makeTitleSafe( NS_FILE, $value );
- if ( $filePage ) {
- $link = Linker::linkKnown(
- $filePage,
- htmlspecialchars( $filePage->getText() )
- );
- $download = Xml::element( 'a',
- [ 'href' => wfLocalFile( $filePage )->getUrl() ],
- $imgfile
- );
- $download = $this->msg( 'parentheses' )->rawParams( $download )->escaped();
-
- // Add delete links if allowed
- // From https://github.com/Wikia/app/pull/3859
- if ( $filePage->userCan( 'delete', $this->getUser() ) ) {
- $deleteMsg = $this->msg( 'listfiles-delete' )->escaped();
-
- $delete = Linker::linkKnown(
- $filePage, $deleteMsg, [], [ 'action' => 'delete' ]
- );
- $delete = $this->msg( 'parentheses' )->rawParams( $delete )->escaped();
-
- return "$link $download $delete";
- }
-
- return "$link $download";
- } else {
- return htmlspecialchars( $value );
- }
- case 'img_user_text':
- if ( $this->mCurrentRow->img_user ) {
- $name = User::whoIs( $this->mCurrentRow->img_user );
- $link = Linker::link(
- Title::makeTitle( NS_USER, $name ),
- htmlspecialchars( $name )
- );
- } else {
- $link = htmlspecialchars( $value );
- }
-
- return $link;
- case 'img_size':
- return htmlspecialchars( $this->getLanguage()->formatSize( $value ) );
- case 'img_description':
- return Linker::formatComment( $value );
- case 'count':
- return intval( $value ) + 1;
- case 'top':
- // Messages: listfiles-latestversion-yes, listfiles-latestversion-no
- return $this->msg( 'listfiles-latestversion-' . $value );
- default:
- throw new MWException( "Unknown field '$field'" );
- }
- }
-
- function getForm() {
- $fields = [];
- $fields['limit'] = [
- 'type' => 'select',
- 'name' => 'limit',
- 'label-message' => 'table_pager_limit_label',
- 'options' => $this->getLimitSelectList(),
- 'default' => $this->mLimit,
- ];
-
- if ( !$this->getConfig()->get( 'MiserMode' ) ) {
- $fields['ilsearch'] = [
- 'type' => 'text',
- 'name' => 'ilsearch',
- 'id' => 'mw-ilsearch',
- 'label-message' => 'listfiles_search_for',
- 'default' => $this->mSearch,
- 'size' => '40',
- 'maxlength' => '255',
- ];
- }
-
- $this->getOutput()->addModules( 'mediawiki.userSuggest' );
- $fields['user'] = [
- 'type' => 'text',
- 'name' => 'user',
- 'id' => 'mw-listfiles-user',
- 'label-message' => 'username',
- 'default' => $this->mUserName,
- 'size' => '40',
- 'maxlength' => '255',
- 'cssclass' => 'mw-autocomplete-user', // used by mediawiki.userSuggest
- ];
-
- $fields['ilshowall'] = [
- 'type' => 'check',
- 'name' => 'ilshowall',
- 'id' => 'mw-listfiles-show-all',
- 'label-message' => 'listfiles-show-all',
- 'default' => $this->mShowAll,
- ];
-
- $query = $this->getRequest()->getQueryValues();
- unset( $query['title'] );
- unset( $query['limit'] );
- unset( $query['ilsearch'] );
- unset( $query['ilshowall'] );
- unset( $query['user'] );
-
- $form = new HTMLForm( $fields, $this->getContext() );
-
- $form->setMethod( 'get' );
- $form->setTitle( $this->getTitle() );
- $form->setId( 'mw-listfiles-form' );
- $form->setWrapperLegendMsg( 'listfiles' );
- $form->setSubmitTextMsg( 'table_pager_limit_submit' );
- $form->addHiddenFields( $query );
-
- $form->prepareForm();
- $form->displayForm( '' );
- }
-
- function getTableClass() {
- return parent::getTableClass() . ' listfiles';
- }
-
- function getNavClass() {
- return parent::getNavClass() . ' listfiles_nav';
- }
-
- function getSortHeaderClass() {
- return parent::getSortHeaderClass() . ' listfiles_sort';
- }
-
- function getPagingQueries() {
- $queries = parent::getPagingQueries();
- if ( !is_null( $this->mUserName ) ) {
- # Append the username to the query string
- foreach ( $queries as &$query ) {
- if ( $query !== false ) {
- $query['user'] = $this->mUserName;
- }
- }
- }
-
- return $queries;
- }
-
- function getDefaultQuery() {
- $queries = parent::getDefaultQuery();
- if ( !isset( $queries['user'] ) && !is_null( $this->mUserName ) ) {
- $queries['user'] = $this->mUserName;
- }
-
- return $queries;
- }
-
- function getTitle() {
- return SpecialPage::getTitleFor( 'Listfiles' );
- }
-}
diff --git a/includes/specials/SpecialListusers.php b/includes/specials/SpecialListusers.php
index 7eb3757a3d..1a8dccf4de 100644
--- a/includes/specials/SpecialListusers.php
+++ b/includes/specials/SpecialListusers.php
@@ -25,376 +25,6 @@
* @ingroup SpecialPage
*/
-/**
- * This class is used to get a list of user. The ones with specials
- * rights (sysop, bureaucrat, developer) will have them displayed
- * next to their names.
- *
- * @ingroup SpecialPage
- */
-class UsersPager extends AlphabeticPager {
-
- /**
- * @var array A array with user ids as key and a array of groups as value
- */
- protected $userGroupCache;
-
- /**
- * @param IContextSource $context
- * @param array $par (Default null)
- * @param bool $including Whether this page is being transcluded in
- * another page
- */
- function __construct( IContextSource $context = null, $par = null, $including = null ) {
- if ( $context ) {
- $this->setContext( $context );
- }
-
- $request = $this->getRequest();
- $par = ( $par !== null ) ? $par : '';
- $parms = explode( '/', $par );
- $symsForAll = [ '*', 'user' ];
-
- if ( $parms[0] != '' &&
- ( in_array( $par, User::getAllGroups() ) || in_array( $par, $symsForAll ) )
- ) {
- $this->requestedGroup = $par;
- $un = $request->getText( 'username' );
- } elseif ( count( $parms ) == 2 ) {
- $this->requestedGroup = $parms[0];
- $un = $parms[1];
- } else {
- $this->requestedGroup = $request->getVal( 'group' );
- $un = ( $par != '' ) ? $par : $request->getText( 'username' );
- }
-
- if ( in_array( $this->requestedGroup, $symsForAll ) ) {
- $this->requestedGroup = '';
- }
- $this->editsOnly = $request->getBool( 'editsOnly' );
- $this->creationSort = $request->getBool( 'creationSort' );
- $this->including = $including;
- $this->mDefaultDirection = $request->getBool( 'desc' )
- ? IndexPager::DIR_DESCENDING
- : IndexPager::DIR_ASCENDING;
-
- $this->requestedUser = '';
-
- if ( $un != '' ) {
- $username = Title::makeTitleSafe( NS_USER, $un );
-
- if ( !is_null( $username ) ) {
- $this->requestedUser = $username->getText();
- }
- }
-
- parent::__construct();
- }
-
- /**
- * @return string
- */
- function getIndexField() {
- return $this->creationSort ? 'user_id' : 'user_name';
- }
-
- /**
- * @return array
- */
- function getQueryInfo() {
- $dbr = wfGetDB( DB_SLAVE );
- $conds = [];
-
- // Don't show hidden names
- if ( !$this->getUser()->isAllowed( 'hideuser' ) ) {
- $conds[] = 'ipb_deleted IS NULL OR ipb_deleted = 0';
- }
-
- $options = [];
-
- if ( $this->requestedGroup != '' ) {
- $conds['ug_group'] = $this->requestedGroup;
- }
-
- if ( $this->requestedUser != '' ) {
- # Sorted either by account creation or name
- if ( $this->creationSort ) {
- $conds[] = 'user_id >= ' . intval( User::idFromName( $this->requestedUser ) );
- } else {
- $conds[] = 'user_name >= ' . $dbr->addQuotes( $this->requestedUser );
- }
- }
-
- if ( $this->editsOnly ) {
- $conds[] = 'user_editcount > 0';
- }
-
- $options['GROUP BY'] = $this->creationSort ? 'user_id' : 'user_name';
-
- $query = [
- 'tables' => [ 'user', 'user_groups', 'ipblocks' ],
- 'fields' => [
- 'user_name' => $this->creationSort ? 'MAX(user_name)' : 'user_name',
- 'user_id' => $this->creationSort ? 'user_id' : 'MAX(user_id)',
- 'edits' => 'MAX(user_editcount)',
- 'creation' => 'MIN(user_registration)',
- 'ipb_deleted' => 'MAX(ipb_deleted)' // block/hide status
- ],
- 'options' => $options,
- 'join_conds' => [
- 'user_groups' => [ 'LEFT JOIN', 'user_id=ug_user' ],
- 'ipblocks' => [
- 'LEFT JOIN', [
- 'user_id=ipb_user',
- 'ipb_auto' => 0
- ]
- ],
- ],
- 'conds' => $conds
- ];
-
- Hooks::run( 'SpecialListusersQueryInfo', [ $this, &$query ] );
-
- return $query;
- }
-
- /**
- * @param stdClass $row
- * @return string
- */
- function formatRow( $row ) {
- if ( $row->user_id == 0 ) { # Bug 16487
- return '';
- }
-
- $userName = $row->user_name;
-
- $ulinks = Linker::userLink( $row->user_id, $userName );
- $ulinks .= Linker::userToolLinksRedContribs(
- $row->user_id,
- $userName,
- (int)$row->edits
- );
-
- $lang = $this->getLanguage();
-
- $groups = '';
- $groups_list = self::getGroups( intval( $row->user_id ), $this->userGroupCache );
-
- if ( !$this->including && count( $groups_list ) > 0 ) {
- $list = [];
- foreach ( $groups_list as $group ) {
- $list[] = self::buildGroupLink( $group, $userName );
- }
- $groups = $lang->commaList( $list );
- }
-
- $item = $lang->specialList( $ulinks, $groups );
-
- if ( $row->ipb_deleted ) {
- $item = "$item ";
- }
-
- $edits = '';
- if ( !$this->including && $this->getConfig()->get( 'Edititis' ) ) {
- $count = $this->msg( 'usereditcount' )->numParams( $row->edits )->escaped();
- $edits = $this->msg( 'word-separator' )->escaped() . $this->msg( 'brackets', $count )->escaped();
- }
-
- $created = '';
- # Some rows may be null
- if ( !$this->including && $row->creation ) {
- $user = $this->getUser();
- $d = $lang->userDate( $row->creation, $user );
- $t = $lang->userTime( $row->creation, $user );
- $created = $this->msg( 'usercreated', $d, $t, $row->user_name )->escaped();
- $created = ' ' . $this->msg( 'parentheses' )->rawParams( $created )->escaped();
- }
- $blocked = !is_null( $row->ipb_deleted ) ?
- ' ' . $this->msg( 'listusers-blocked', $userName )->escaped() :
- '';
-
- Hooks::run( 'SpecialListusersFormatRow', [ &$item, $row ] );
-
- return Html::rawElement( 'li', [], "{$item}{$edits}{$created}{$blocked}" );
- }
-
- function doBatchLookups() {
- $batch = new LinkBatch();
- $userIds = [];
- # Give some pointers to make user links
- foreach ( $this->mResult as $row ) {
- $batch->add( NS_USER, $row->user_name );
- $batch->add( NS_USER_TALK, $row->user_name );
- $userIds[] = $row->user_id;
- }
-
- // Lookup groups for all the users
- $dbr = wfGetDB( DB_SLAVE );
- $groupRes = $dbr->select(
- 'user_groups',
- [ 'ug_user', 'ug_group' ],
- [ 'ug_user' => $userIds ],
- __METHOD__
- );
- $cache = [];
- $groups = [];
- foreach ( $groupRes as $row ) {
- $cache[intval( $row->ug_user )][] = $row->ug_group;
- $groups[$row->ug_group] = true;
- }
- $this->userGroupCache = $cache;
-
- // Add page of groups to link batch
- foreach ( $groups as $group => $unused ) {
- $groupPage = User::getGroupPage( $group );
- if ( $groupPage ) {
- $batch->addObj( $groupPage );
- }
- }
-
- $batch->execute();
- $this->mResult->rewind();
- }
-
- /**
- * @return string
- */
- function getPageHeader() {
- list( $self ) = explode( '/', $this->getTitle()->getPrefixedDBkey() );
-
- $this->getOutput()->addModules( 'mediawiki.userSuggest' );
-
- # Form tag
- $out = Xml::openElement(
- 'form',
- [ 'method' => 'get', 'action' => wfScript(), 'id' => 'mw-listusers-form' ]
- ) .
- Xml::fieldset( $this->msg( 'listusers' )->text() ) .
- Html::hidden( 'title', $self );
-
- # Username field (with autocompletion support)
- $out .= Xml::label( $this->msg( 'listusersfrom' )->text(), 'offset' ) . ' ' .
- Html::input(
- 'username',
- $this->requestedUser,
- 'text',
- [
- 'class' => 'mw-autocomplete-user',
- 'id' => 'offset',
- 'size' => 20,
- 'autofocus' => $this->requestedUser === ''
- ]
- ) . ' ';
-
- # Group drop-down list
- $sel = new XmlSelect( 'group', 'group', $this->requestedGroup );
- $sel->addOption( $this->msg( 'group-all' )->text(), '' );
- foreach ( $this->getAllGroups() as $group => $groupText ) {
- $sel->addOption( $groupText, $group );
- }
-
- $out .= Xml::label( $this->msg( 'group' )->text(), 'group' ) . ' ';
- $out .= $sel->getHTML() . ' ';
- $out .= Xml::checkLabel(
- $this->msg( 'listusers-editsonly' )->text(),
- 'editsOnly',
- 'editsOnly',
- $this->editsOnly
- );
- $out .= ' ';
- $out .= Xml::checkLabel(
- $this->msg( 'listusers-creationsort' )->text(),
- 'creationSort',
- 'creationSort',
- $this->creationSort
- );
- $out .= ' ';
- $out .= Xml::checkLabel(
- $this->msg( 'listusers-desc' )->text(),
- 'desc',
- 'desc',
- $this->mDefaultDirection
- );
- $out .= ' ';
-
- Hooks::run( 'SpecialListusersHeaderForm', [ $this, &$out ] );
-
- # Submit button and form bottom
- $out .= Html::hidden( 'limit', $this->mLimit );
- $out .= Xml::submitButton( $this->msg( 'listusers-submit' )->text() );
- Hooks::run( 'SpecialListusersHeader', [ $this, &$out ] );
- $out .= Xml::closeElement( 'fieldset' ) .
- Xml::closeElement( 'form' );
-
- return $out;
- }
-
- /**
- * Get a list of all explicit groups
- * @return array
- */
- function getAllGroups() {
- $result = [];
- foreach ( User::getAllGroups() as $group ) {
- $result[$group] = User::getGroupName( $group );
- }
- asort( $result );
-
- return $result;
- }
-
- /**
- * Preserve group and username offset parameters when paging
- * @return array
- */
- function getDefaultQuery() {
- $query = parent::getDefaultQuery();
- if ( $this->requestedGroup != '' ) {
- $query['group'] = $this->requestedGroup;
- }
- if ( $this->requestedUser != '' ) {
- $query['username'] = $this->requestedUser;
- }
- Hooks::run( 'SpecialListusersDefaultQuery', [ $this, &$query ] );
-
- return $query;
- }
-
- /**
- * Get a list of groups the specified user belongs to
- *
- * @param int $uid User id
- * @param array|null $cache
- * @return array
- */
- protected static function getGroups( $uid, $cache = null ) {
- if ( $cache === null ) {
- $user = User::newFromId( $uid );
- $effectiveGroups = $user->getEffectiveGroups();
- } else {
- $effectiveGroups = isset( $cache[$uid] ) ? $cache[$uid] : [];
- }
- $groups = array_diff( $effectiveGroups, User::getImplicitGroups() );
-
- return $groups;
- }
-
- /**
- * Format a link to a group description page
- *
- * @param string $group Group name
- * @param string $username Username
- * @return string
- */
- protected static function buildGroupLink( $group, $username ) {
- return User::makeGroupLinkHTML(
- $group,
- User::getGroupMember( $group, $username )
- );
- }
-}
-
/**
* @ingroup SpecialPage
*/
diff --git a/includes/specials/SpecialLog.php b/includes/specials/SpecialLog.php
index d4c7c6ad2b..af087a667b 100644
--- a/includes/specials/SpecialLog.php
+++ b/includes/specials/SpecialLog.php
@@ -49,6 +49,7 @@ class SpecialLog extends SpecialPage {
$opts->add( 'offset', '' );
$opts->add( 'dir', '' );
$opts->add( 'offender', '' );
+ $opts->add( 'subtype', '' );
// Set values
$opts->fetchValuesFromRequest( $this->getRequest() );
@@ -146,7 +147,8 @@ class SpecialLog extends SpecialPage {
private function parseParams( FormOptions $opts, $par ) {
# Get parameters
- $parms = explode( '/', ( $par = ( $par !== null ) ? $par : '' ) );
+ $par = $par !== null ? $par : '';
+ $parms = explode( '/', $par );
$symsForAll = [ '*', 'all' ];
if ( $parms[0] != '' &&
( in_array( $par, $this->getConfig()->get( 'LogTypes' ) ) || in_array( $par, $symsForAll ) )
@@ -167,6 +169,7 @@ class SpecialLog extends SpecialPage {
null,
LogEventsList::USE_CHECKBOXES
);
+
$pager = new LogPager(
$loglist,
$opts->getValue( 'type' ),
@@ -176,26 +179,29 @@ class SpecialLog extends SpecialPage {
$extraConds,
$opts->getValue( 'year' ),
$opts->getValue( 'month' ),
- $opts->getValue( 'tagfilter' )
+ $opts->getValue( 'tagfilter' ),
+ $opts->getValue( 'subtype' )
);
$this->addHeader( $opts->getValue( 'type' ) );
# Set relevant user
if ( $pager->getPerformer() ) {
- $this->getSkin()->setRelevantUser( User::newFromName( $pager->getPerformer() ) );
+ $performerUser = User::newFromName( $pager->getPerformer(), false );
+ $this->getSkin()->setRelevantUser( $performerUser );
}
# Show form options
$loglist->showOptions(
$pager->getType(),
- $opts->getValue( 'user' ),
+ $pager->getPerformer(),
$pager->getPage(),
$pager->getPattern(),
$pager->getYear(),
$pager->getMonth(),
$pager->getFilterParams(),
- $opts->getValue( 'tagfilter' )
+ $pager->getTagFilter(),
+ $pager->getAction()
);
# Insert list
diff --git a/includes/specials/SpecialMergeHistory.php b/includes/specials/SpecialMergeHistory.php
index 3310538a59..b916c1fc78 100644
--- a/includes/specials/SpecialMergeHistory.php
+++ b/includes/specials/SpecialMergeHistory.php
@@ -379,78 +379,3 @@ class SpecialMergeHistory extends SpecialPage {
return 'pagetools';
}
}
-
-class MergeHistoryPager extends ReverseChronologicalPager {
- /** @var SpecialMergeHistory */
- public $mForm;
-
- /** @var array */
- public $mConds;
-
- function __construct( SpecialMergeHistory $form, $conds, Title $source, Title $dest ) {
- $this->mForm = $form;
- $this->mConds = $conds;
- $this->title = $source;
- $this->articleID = $source->getArticleID();
-
- $dbr = wfGetDB( DB_SLAVE );
- $maxtimestamp = $dbr->selectField(
- 'revision',
- 'MIN(rev_timestamp)',
- [ 'rev_page' => $dest->getArticleID() ],
- __METHOD__
- );
- $this->maxTimestamp = $maxtimestamp;
-
- parent::__construct( $form->getContext() );
- }
-
- function getStartBody() {
- # Do a link batch query
- $this->mResult->seek( 0 );
- $batch = new LinkBatch();
- # Give some pointers to make (last) links
- $this->mForm->prevId = [];
- foreach ( $this->mResult as $row ) {
- $batch->addObj( Title::makeTitleSafe( NS_USER, $row->user_name ) );
- $batch->addObj( Title::makeTitleSafe( NS_USER_TALK, $row->user_name ) );
-
- $rev_id = isset( $rev_id ) ? $rev_id : $row->rev_id;
- if ( $rev_id > $row->rev_id ) {
- $this->mForm->prevId[$rev_id] = $row->rev_id;
- } elseif ( $rev_id < $row->rev_id ) {
- $this->mForm->prevId[$row->rev_id] = $rev_id;
- }
-
- $rev_id = $row->rev_id;
- }
-
- $batch->execute();
- $this->mResult->seek( 0 );
-
- return '';
- }
-
- function formatRow( $row ) {
- return $this->mForm->formatRevisionRow( $row );
- }
-
- function getQueryInfo() {
- $conds = $this->mConds;
- $conds['rev_page'] = $this->articleID;
- $conds[] = "rev_timestamp < " . $this->mDb->addQuotes( $this->maxTimestamp );
-
- return [
- 'tables' => [ 'revision', 'page', 'user' ],
- 'fields' => array_merge( Revision::selectFields(), Revision::selectUserFields() ),
- 'conds' => $conds,
- 'join_conds' => [
- 'page' => Revision::pageJoinCond(),
- 'user' => Revision::userJoinCond() ]
- ];
- }
-
- function getIndexField() {
- return 'rev_timestamp';
- }
-}
diff --git a/includes/specials/SpecialNewimages.php b/includes/specials/SpecialNewimages.php
index 629a50875b..14391d2459 100644
--- a/includes/specials/SpecialNewimages.php
+++ b/includes/specials/SpecialNewimages.php
@@ -71,189 +71,3 @@ class SpecialNewFiles extends IncludableSpecialPage {
}
}
}
-
-/**
- * @ingroup SpecialPage Pager
- */
-class NewFilesPager extends ReverseChronologicalPager {
- /**
- * @var ImageGallery
- */
- protected $gallery;
-
- /**
- * @var bool
- */
- protected $showBots;
-
- /**
- * @var bool
- */
- protected $hidePatrolled;
-
- function __construct( IContextSource $context, $par = null ) {
- $this->like = $context->getRequest()->getText( 'like' );
- $this->showBots = $context->getRequest()->getBool( 'showbots', 0 );
- $this->hidePatrolled = $context->getRequest()->getBool( 'hidepatrolled', 0 );
- if ( is_numeric( $par ) ) {
- $this->setLimit( $par );
- }
-
- parent::__construct( $context );
- }
-
- function getQueryInfo() {
- $conds = $jconds = [];
- $tables = [ 'image' ];
- $fields = [ 'img_name', 'img_user', 'img_timestamp' ];
- $options = [];
-
- if ( !$this->showBots ) {
- $groupsWithBotPermission = User::getGroupsWithPermission( 'bot' );
-
- if ( count( $groupsWithBotPermission ) ) {
- $tables[] = 'user_groups';
- $conds[] = 'ug_group IS NULL';
- $jconds['user_groups'] = [
- 'LEFT JOIN',
- [
- 'ug_group' => $groupsWithBotPermission,
- 'ug_user = img_user'
- ]
- ];
- }
- }
-
- if ( $this->hidePatrolled ) {
- $tables[] = 'recentchanges';
- $conds['rc_type'] = RC_LOG;
- $conds['rc_log_type'] = 'upload';
- $conds['rc_patrolled'] = 0;
- $conds['rc_namespace'] = NS_FILE;
- $jconds['recentchanges'] = [
- 'INNER JOIN',
- [
- 'rc_title = img_name',
- 'rc_user = img_user',
- 'rc_timestamp = img_timestamp'
- ]
- ];
- // We're ordering by img_timestamp, so we have to make sure MariaDB queries `image` first.
- // It sometimes decides to query `recentchanges` first and filesort the result set later
- // to get the right ordering. T124205 / https://mariadb.atlassian.net/browse/MDEV-8880
- $options[] = 'STRAIGHT_JOIN';
- }
-
- if ( !$this->getConfig()->get( 'MiserMode' ) && $this->like !== null ) {
- $dbr = wfGetDB( DB_SLAVE );
- $likeObj = Title::newFromText( $this->like );
- if ( $likeObj instanceof Title ) {
- $like = $dbr->buildLike(
- $dbr->anyString(),
- strtolower( $likeObj->getDBkey() ),
- $dbr->anyString()
- );
- $conds[] = "LOWER(img_name) $like";
- }
- }
-
- $query = [
- 'tables' => $tables,
- 'fields' => $fields,
- 'join_conds' => $jconds,
- 'conds' => $conds,
- 'options' => $options,
- ];
-
- return $query;
- }
-
- function getIndexField() {
- return 'img_timestamp';
- }
-
- function getStartBody() {
- if ( !$this->gallery ) {
- // Note that null for mode is taken to mean use default.
- $mode = $this->getRequest()->getVal( 'gallerymode', null );
- try {
- $this->gallery = ImageGalleryBase::factory( $mode, $this->getContext() );
- } catch ( Exception $e ) {
- // User specified something invalid, fallback to default.
- $this->gallery = ImageGalleryBase::factory( false, $this->getContext() );
- }
- }
-
- return '';
- }
-
- function getEndBody() {
- return $this->gallery->toHTML();
- }
-
- function formatRow( $row ) {
- $name = $row->img_name;
- $user = User::newFromId( $row->img_user );
-
- $title = Title::makeTitle( NS_FILE, $name );
- $ul = Linker::link( $user->getUserPage(), $user->getName() );
- $time = $this->getLanguage()->userTimeAndDate( $row->img_timestamp, $this->getUser() );
-
- $this->gallery->add(
- $title,
- "$ul \n"
- . htmlspecialchars( $time )
- . " \n"
- );
- }
-
- function getForm() {
- $fields = [
- 'like' => [
- 'type' => 'text',
- 'label-message' => 'newimages-label',
- 'name' => 'like',
- ],
- 'showbots' => [
- 'type' => 'check',
- 'label-message' => 'newimages-showbots',
- 'name' => 'showbots',
- ],
- 'hidepatrolled' => [
- 'type' => 'check',
- 'label-message' => 'newimages-hidepatrolled',
- 'name' => 'hidepatrolled',
- ],
- 'limit' => [
- 'type' => 'hidden',
- 'default' => $this->mLimit,
- 'name' => 'limit',
- ],
- 'offset' => [
- 'type' => 'hidden',
- 'default' => $this->getRequest()->getText( 'offset' ),
- 'name' => 'offset',
- ],
- ];
-
- if ( $this->getConfig()->get( 'MiserMode' ) ) {
- unset( $fields['like'] );
- }
-
- if ( !$this->getUser()->useFilePatrol() ) {
- unset( $fields['hidepatrolled'] );
- }
-
- $context = new DerivativeContext( $this->getContext() );
- $context->setTitle( $this->getTitle() ); // Remove subpage
- $form = new HTMLForm( $fields, $context );
-
- $form->setSubmitTextMsg( 'ilsubmit' );
- $form->setSubmitProgressive();
-
- $form->setMethod( 'get' );
- $form->setWrapperLegendMsg( 'newimages-legend' );
-
- return $form;
- }
-}
diff --git a/includes/specials/SpecialNewpages.php b/includes/specials/SpecialNewpages.php
index ab29d13794..c24b054750 100644
--- a/includes/specials/SpecialNewpages.php
+++ b/includes/specials/SpecialNewpages.php
@@ -479,130 +479,3 @@ class SpecialNewpages extends IncludableSpecialPage {
return 'changes';
}
}
-
-/**
- * @ingroup SpecialPage Pager
- */
-class NewPagesPager extends ReverseChronologicalPager {
- // Stored opts
- protected $opts;
-
- /**
- * @var HtmlForm
- */
- protected $mForm;
-
- function __construct( $form, FormOptions $opts ) {
- parent::__construct( $form->getContext() );
- $this->mForm = $form;
- $this->opts = $opts;
- }
-
- function getQueryInfo() {
- $conds = [];
- $conds['rc_new'] = 1;
-
- $namespace = $this->opts->getValue( 'namespace' );
- $namespace = ( $namespace === 'all' ) ? false : intval( $namespace );
-
- $username = $this->opts->getValue( 'username' );
- $user = Title::makeTitleSafe( NS_USER, $username );
-
- $rcIndexes = [];
-
- if ( $namespace !== false ) {
- if ( $this->opts->getValue( 'invert' ) ) {
- $conds[] = 'rc_namespace != ' . $this->mDb->addQuotes( $namespace );
- } else {
- $conds['rc_namespace'] = $namespace;
- }
- }
-
- if ( $user ) {
- $conds['rc_user_text'] = $user->getText();
- $rcIndexes = 'rc_user_text';
- } elseif ( User::groupHasPermission( '*', 'createpage' ) &&
- $this->opts->getValue( 'hideliu' )
- ) {
- # If anons cannot make new pages, don't "exclude logged in users"!
- $conds['rc_user'] = 0;
- }
-
- # If this user cannot see patrolled edits or they are off, don't do dumb queries!
- if ( $this->opts->getValue( 'hidepatrolled' ) && $this->getUser()->useNPPatrol() ) {
- $conds['rc_patrolled'] = 0;
- }
-
- if ( $this->opts->getValue( 'hidebots' ) ) {
- $conds['rc_bot'] = 0;
- }
-
- if ( $this->opts->getValue( 'hideredirs' ) ) {
- $conds['page_is_redirect'] = 0;
- }
-
- // Allow changes to the New Pages query
- $tables = [ 'recentchanges', 'page' ];
- $fields = [
- 'rc_namespace', 'rc_title', 'rc_cur_id', 'rc_user', 'rc_user_text',
- 'rc_comment', 'rc_timestamp', 'rc_patrolled', 'rc_id', 'rc_deleted',
- 'length' => 'page_len', 'rev_id' => 'page_latest', 'rc_this_oldid',
- 'page_namespace', 'page_title'
- ];
- $join_conds = [ 'page' => [ 'INNER JOIN', 'page_id=rc_cur_id' ] ];
-
- Hooks::run( 'SpecialNewpagesConditions',
- [ &$this, $this->opts, &$conds, &$tables, &$fields, &$join_conds ] );
-
- $options = [];
-
- if ( $rcIndexes ) {
- $options = [ 'USE INDEX' => [ 'recentchanges' => $rcIndexes ] ];
- }
-
- $info = [
- 'tables' => $tables,
- 'fields' => $fields,
- 'conds' => $conds,
- 'options' => $options,
- 'join_conds' => $join_conds
- ];
-
- // Modify query for tags
- ChangeTags::modifyDisplayQuery(
- $info['tables'],
- $info['fields'],
- $info['conds'],
- $info['join_conds'],
- $info['options'],
- $this->opts['tagfilter']
- );
-
- return $info;
- }
-
- function getIndexField() {
- return 'rc_timestamp';
- }
-
- function formatRow( $row ) {
- return $this->mForm->formatRow( $row );
- }
-
- function getStartBody() {
- # Do a batch existence check on pages
- $linkBatch = new LinkBatch();
- foreach ( $this->mResult as $row ) {
- $linkBatch->add( NS_USER, $row->rc_user_text );
- $linkBatch->add( NS_USER_TALK, $row->rc_user_text );
- $linkBatch->add( $row->page_namespace, $row->page_title );
- }
- $linkBatch->execute();
-
- return '';
- }
-
- function getEndBody() {
- return ' ';
- }
-}
diff --git a/includes/specials/SpecialPreferences.php b/includes/specials/SpecialPreferences.php
index 7f257e65e4..2e7b4cd2d2 100644
--- a/includes/specials/SpecialPreferences.php
+++ b/includes/specials/SpecialPreferences.php
@@ -74,7 +74,11 @@ class SpecialPreferences extends SpecialPage {
$this->addHelpLink( 'Help:Preferences' );
// Load the user from the master to reduce CAS errors on double post (T95839)
- $user = $this->getUser()->getInstanceForUpdate() ?: $this->getUser();
+ if ( $this->getRequest()->wasPosted() ) {
+ $user = $this->getUser()->getInstanceForUpdate() ?: $this->getUser();
+ } else {
+ $user = $this->getUser();
+ }
$htmlForm = Preferences::getFormObject( $user, $this->getContext() );
$htmlForm->setSubmitCallback( [ 'Preferences', 'tryUISubmit' ] );
diff --git a/includes/specials/SpecialProtectedpages.php b/includes/specials/SpecialProtectedpages.php
index 8e9636ea77..54b471e40b 100644
--- a/includes/specials/SpecialProtectedpages.php
+++ b/includes/specials/SpecialProtectedpages.php
@@ -549,7 +549,7 @@ class ProtectedPagesPager extends TablePager {
];
}
- public function getTableClass() {
+ protected function getTableClass() {
return parent::getTableClass() . ' mw-protectedpages';
}
diff --git a/includes/specials/SpecialProtectedtitles.php b/includes/specials/SpecialProtectedtitles.php
index 5df425a18c..c800d96c78 100644
--- a/includes/specials/SpecialProtectedtitles.php
+++ b/includes/specials/SpecialProtectedtitles.php
@@ -190,74 +190,3 @@ class SpecialProtectedtitles extends SpecialPage {
return 'maintenance';
}
}
-
-/**
- * @todo document
- * @ingroup Pager
- */
-class ProtectedTitlesPager extends AlphabeticPager {
- public $mForm, $mConds;
-
- function __construct( $form, $conds = [], $type, $level, $namespace,
- $sizetype = '', $size = 0
- ) {
- $this->mForm = $form;
- $this->mConds = $conds;
- $this->level = $level;
- $this->namespace = $namespace;
- $this->size = intval( $size );
- parent::__construct( $form->getContext() );
- }
-
- function getStartBody() {
- # Do a link batch query
- $this->mResult->seek( 0 );
- $lb = new LinkBatch;
-
- foreach ( $this->mResult as $row ) {
- $lb->add( $row->pt_namespace, $row->pt_title );
- }
-
- $lb->execute();
-
- return '';
- }
-
- /**
- * @return Title
- */
- function getTitle() {
- return $this->mForm->getTitle();
- }
-
- function formatRow( $row ) {
- return $this->mForm->formatRow( $row );
- }
-
- /**
- * @return array
- */
- function getQueryInfo() {
- $conds = $this->mConds;
- $conds[] = 'pt_expiry > ' . $this->mDb->addQuotes( $this->mDb->timestamp() ) .
- ' OR pt_expiry IS NULL';
- if ( $this->level ) {
- $conds['pt_create_perm'] = $this->level;
- }
-
- if ( !is_null( $this->namespace ) ) {
- $conds[] = 'pt_namespace=' . $this->mDb->addQuotes( $this->namespace );
- }
-
- return [
- 'tables' => 'protected_titles',
- 'fields' => [ 'pt_namespace', 'pt_title', 'pt_create_perm',
- 'pt_expiry', 'pt_timestamp' ],
- 'conds' => $conds
- ];
- }
-
- function getIndexField() {
- return 'pt_timestamp';
- }
-}
diff --git a/includes/specials/SpecialRecentchanges.php b/includes/specials/SpecialRecentchanges.php
index de773800ac..b93fb4e2af 100644
--- a/includes/specials/SpecialRecentchanges.php
+++ b/includes/specials/SpecialRecentchanges.php
@@ -324,12 +324,23 @@ class SpecialRecentChanges extends ChangesListSpecialPage {
$list = ChangesList::newFromContext( $this->getContext() );
$list->initChangesListRows( $rows );
+ $userShowHiddenCats = $this->getUser()->getBoolOption( 'showhiddencats' );
$rclistOutput = $list->beginRecentChangesList();
foreach ( $rows as $obj ) {
if ( $limit == 0 ) {
break;
}
$rc = RecentChange::newFromRow( $obj );
+
+ # Skip CatWatch entries for hidden cats based on user preference
+ if (
+ $rc->getAttribute( 'rc_type' ) == RC_CATEGORIZE &&
+ !$userShowHiddenCats &&
+ $rc->getParam( 'hidden-cat' )
+ ) {
+ continue;
+ }
+
$rc->counter = $counter++;
# Check if the page has been updated since the last visit
if ( $this->getConfig()->get( 'ShowUpdatedMarker' )
@@ -344,14 +355,8 @@ class SpecialRecentChanges extends ChangesListSpecialPage {
if ( $showWatcherCount && $obj->rc_namespace >= 0 ) {
if ( !isset( $watcherCache[$obj->rc_namespace][$obj->rc_title] ) ) {
$watcherCache[$obj->rc_namespace][$obj->rc_title] =
- $dbr->selectField(
- 'watchlist',
- 'COUNT(*)',
- [
- 'wl_namespace' => $obj->rc_namespace,
- 'wl_title' => $obj->rc_title,
- ],
- __METHOD__ . '-watchers'
+ WatchedItemStore::getDefaultInstance()->countWatchers(
+ new TitleValue( (int)$obj->rc_namespace, $obj->rc_title )
);
}
$rc->numberofWatchingusers = $watcherCache[$obj->rc_namespace][$obj->rc_title];
diff --git a/includes/specials/SpecialRedirect.php b/includes/specials/SpecialRedirect.php
index c0ed4c9943..80dc7977a1 100644
--- a/includes/specials/SpecialRedirect.php
+++ b/includes/specials/SpecialRedirect.php
@@ -272,7 +272,6 @@ class SpecialRedirect extends FormSpecialPage {
$url = $this->dispatchLog();
break;
default:
- $this->getOutput()->setStatusCode( 404 );
$url = null;
break;
}
@@ -353,6 +352,10 @@ class SpecialRedirect extends FormSpecialPage {
$form->setMethod( 'get' );
}
+ protected function getDisplayFormat() {
+ return 'ooui';
+ }
+
/**
* Return an array of subpages that this special page will accept.
*
diff --git a/includes/specials/SpecialRunJobs.php b/includes/specials/SpecialRunJobs.php
index 2312f76399..ce5533fbf0 100644
--- a/includes/specials/SpecialRunJobs.php
+++ b/includes/specials/SpecialRunJobs.php
@@ -94,8 +94,11 @@ class SpecialRunJobs extends UnlistedSpecialPage {
if ( strpos( $errstr, 'Cannot modify header information' ) !== false ) {
return true; // bug T115413
}
- // Delegate unhandled errors to the default handlers
- return false;
+ // Delegate unhandled errors to the default MediaWiki handler
+ // so that fatal errors get proper logging (T89169)
+ return call_user_func_array(
+ 'MWExceptionHandler::handleError', func_get_args()
+ );
} );
}
diff --git a/includes/specials/SpecialSearch.php b/includes/specials/SpecialSearch.php
index dfab8d437c..20696382d4 100644
--- a/includes/specials/SpecialSearch.php
+++ b/includes/specials/SpecialSearch.php
@@ -23,6 +23,8 @@
* @ingroup SpecialPage
*/
+use MediaWiki\MediaWikiServices;
+
/**
* implements Special:Search - Run text & title search and display the output
* @ingroup SpecialPage
@@ -79,10 +81,17 @@ class SpecialSearch extends SpecialPage {
*/
protected $customCaptions;
+ /**
+ * Search engine configurations.
+ * @var SearchEngineConfig
+ */
+ protected $searchConfig;
+
const NAMESPACES_CURRENT = 'sense';
public function __construct() {
parent::__construct( 'Search' );
+ $this->searchConfig = MediaWikiServices::getInstance()->getSearchEngineConfig();
}
/**
@@ -97,7 +106,7 @@ class SpecialSearch extends SpecialPage {
$out->allowClickjacking();
$out->addModuleStyles( [
'mediawiki.special', 'mediawiki.special.search', 'mediawiki.ui', 'mediawiki.ui.button',
- 'mediawiki.ui.input',
+ 'mediawiki.ui.input', 'mediawiki.widgets.SearchInputWidget.styles',
] );
$this->addHelpLink( 'Help:Searching' );
@@ -150,7 +159,7 @@ class SpecialSearch extends SpecialPage {
$nslist = $this->powerSearch( $request );
if ( !count( $nslist ) ) {
# Fallback to user preference
- $nslist = SearchEngine::userNamespaces( $user );
+ $nslist = $this->searchConfig->userNamespaces( $user );
}
$profile = null;
@@ -202,7 +211,8 @@ class SpecialSearch extends SpecialPage {
return;
}
# If there's an exact or very near match, jump right there.
- $title = SearchEngine::getNearMatch( $term );
+ $title = $this->newSearchEngine()->
+ getNearMatcher( $this->getConfig() )->getNearMatch( $term );
if ( !is_null( $title ) &&
Hooks::run( 'SpecialSearchGoResult', [ $term, $title, &$url ] )
@@ -323,6 +333,7 @@ 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
@@ -375,6 +386,7 @@ class SpecialSearch extends SpecialPage {
if ( $textMatches && !$textStatus ) {
// output appropriate heading
if ( $numTextMatches > 0 && $numTitleMatches > 0 ) {
+ $out->addHTML( '
' );
// if no title matches the heading is redundant
$out->wrapWikiMsg( "==$1==\n", 'textmatches' );
}
@@ -618,7 +630,7 @@ class SpecialSearch extends SpecialPage {
*/
protected function powerSearch( &$request ) {
$arr = [];
- foreach ( SearchEngine::searchableNamespaces() as $ns => $name ) {
+ foreach ( $this->searchConfig->searchableNamespaces() as $ns => $name ) {
if ( $request->getCheck( 'ns' . $ns ) ) {
$arr[] = $ns;
}
@@ -1019,7 +1031,7 @@ class SpecialSearch extends SpecialPage {
// Groups namespaces into rows according to subject
$rows = [];
- foreach ( SearchEngine::searchableNamespaces() as $namespace => $name ) {
+ foreach ( $this->searchConfig->searchableNamespaces() as $namespace => $name ) {
$subject = MWNamespace::getSubject( $namespace );
if ( !array_key_exists( $subject, $rows ) ) {
$rows[$subject] = "";
@@ -1102,15 +1114,15 @@ class SpecialSearch extends SpecialPage {
*/
protected function getSearchProfiles() {
// Builds list of Search Types (profiles)
- $nsAllSet = array_keys( SearchEngine::searchableNamespaces() );
-
+ $nsAllSet = array_keys( $this->searchConfig->searchableNamespaces() );
+ $defaultNs = $this->searchConfig->defaultNamespaces();
$profiles = [
'default' => [
'message' => 'searchprofile-articles',
'tooltip' => 'searchprofile-articles-tooltip',
- 'namespaces' => SearchEngine::defaultNamespaces(),
- 'namespace-messages' => SearchEngine::namespacesAsText(
- SearchEngine::defaultNamespaces()
+ 'namespaces' => $defaultNs,
+ 'namespace-messages' => $this->searchConfig->namespacesAsText(
+ $defaultNs
),
],
'images' => [
@@ -1218,23 +1230,23 @@ class SpecialSearch extends SpecialPage {
* @return string
*/
protected function shortDialog( $term, $resultsShown, $totalNum ) {
- $out = Html::hidden( 'title', $this->getPageTitle()->getPrefixedText() );
- $out .= Html::hidden( 'profile', $this->profile ) . "\n";
- // Term box
- $out .= Html::input( 'search', $term, 'search', [
- 'id' => $this->isPowerSearch() ? 'powerSearchText' : 'searchText',
- 'size' => '50',
+ $searchWidget = new MediaWiki\Widget\SearchInputWidget( [
+ 'id' => 'searchText',
+ 'name' => 'search',
'autofocus' => trim( $term ) === '',
- 'class' => 'mw-ui-input mw-ui-input-inline',
- // identifies the location of the search bar for tracking purposes
- 'data-search-loc' => 'content',
- ] ) . "\n";
- $out .= Html::hidden( 'fulltext', 'Search' ) . "\n";
- $out .= Html::submitButton(
- $this->msg( 'searchbutton' )->text(),
- [ 'class' => 'mw-ui-button mw-ui-progressive' ],
- [ 'mw-ui-progressive' ]
- ) . "\n";
+ 'value' => $term,
+ ] );
+
+ $out =
+ Html::hidden( 'title', $this->getPageTitle()->getPrefixedText() ) .
+ Html::hidden( 'profile', $this->profile ) .
+ Html::hidden( 'fulltext', 'Search' ) .
+ $searchWidget .
+ new OOUI\ButtonInputWidget( [
+ 'type' => 'submit',
+ 'label' => $this->msg( 'searchbutton' )->text(),
+ 'flags' => [ 'progressive', 'primary' ],
+ ] );
// Results-info
if ( $totalNum > 0 && $this->offset < $totalNum ) {
@@ -1326,7 +1338,8 @@ class SpecialSearch extends SpecialPage {
public function getSearchEngine() {
if ( $this->searchEngine === null ) {
$this->searchEngine = $this->searchEngineType ?
- SearchEngine::create( $this->searchEngineType ) : SearchEngine::create();
+ MediaWikiServices::getInstance()->getSearchEngineFactory()->create( $this->searchEngineType ) :
+ MediaWikiServices::getInstance()->newSearchEngine();
}
return $this->searchEngine;
diff --git a/includes/specials/SpecialStatistics.php b/includes/specials/SpecialStatistics.php
index c352927fd6..86f1e2080c 100644
--- a/includes/specials/SpecialStatistics.php
+++ b/includes/specials/SpecialStatistics.php
@@ -36,8 +36,6 @@ class SpecialStatistics extends SpecialPage {
}
public function execute( $par ) {
- $miserMode = $this->getConfig()->get( 'MiserMode' );
-
$this->setHeaders();
$this->getOutput()->addModuleStyles( 'mediawiki.special' );
diff --git a/includes/specials/SpecialUnblock.php b/includes/specials/SpecialUnblock.php
index cc7a09146f..cff8bf463a 100644
--- a/includes/specials/SpecialUnblock.php
+++ b/includes/specials/SpecialUnblock.php
@@ -238,7 +238,9 @@ class SpecialUnblock extends SpecialPage {
$logEntry->setTarget( $page );
$logEntry->setComment( $data['Reason'] );
$logEntry->setPerformer( $performer );
- $logEntry->setTags( $data['Tags'] );
+ if ( isset( $data['Tags'] ) ) {
+ $logEntry->setTags( $data['Tags'] );
+ }
$logId = $logEntry->insert();
$logEntry->publish( $logId );
diff --git a/includes/specials/SpecialUndelete.php b/includes/specials/SpecialUndelete.php
index 52a3d17c27..c6d3f6e75e 100644
--- a/includes/specials/SpecialUndelete.php
+++ b/includes/specials/SpecialUndelete.php
@@ -698,6 +698,10 @@ class SpecialUndelete extends SpecialPage {
parent::__construct( 'Undelete', 'deletedhistory' );
}
+ public function doesWrites() {
+ return true;
+ }
+
function loadRequest( $par ) {
$request = $this->getRequest();
$user = $this->getUser();
diff --git a/includes/specials/SpecialUpload.php b/includes/specials/SpecialUpload.php
index 2754b1356f..75308aa14d 100644
--- a/includes/specials/SpecialUpload.php
+++ b/includes/specials/SpecialUpload.php
@@ -180,6 +180,11 @@ class SpecialUpload extends SpecialPage {
throw new UserBlockedError( $user->getBlock() );
}
+ // Global blocks
+ if ( $user->isBlockedGlobally() ) {
+ throw new UserBlockedError( $user->getGlobalBlock() );
+ }
+
# Check whether we actually want to allow changing stuff
$this->checkReadOnly();
@@ -622,7 +627,8 @@ class SpecialUpload extends SpecialPage {
return false;
} else {
// New page should get watched if that's our option.
- return $this->getUser()->getOption( 'watchcreations' );
+ return $this->getUser()->getOption( 'watchcreations' ) ||
+ $this->getUser()->getOption( 'watchuploads' );
}
}
diff --git a/includes/specials/SpecialUserlogin.php b/includes/specials/SpecialUserlogin.php
index 49d3345802..a77c79eb09 100644
--- a/includes/specials/SpecialUserlogin.php
+++ b/includes/specials/SpecialUserlogin.php
@@ -1059,7 +1059,6 @@ class LoginForm extends SpecialPage {
function processLogin() {
global $wgLang, $wgSecureLogin, $wgInvalidPasswordReset;
- $cache = ObjectCache::getLocalClusterInstance();
$authRes = $this->authenticateUserData();
switch ( $authRes ) {
case self::SUCCESS:
@@ -1647,8 +1646,8 @@ class LoginForm extends SpecialPage {
/**
* Get the login token from the current session
- * @since 1.27 returns a MediaWiki\\Session\\Token instead of a string
- * @return MediaWiki\\Session\\Token
+ * @since 1.27 returns a MediaWiki\Session\Token instead of a string
+ * @return MediaWiki\Session\Token
*/
public static function getLoginToken() {
global $wgRequest;
@@ -1678,8 +1677,8 @@ class LoginForm extends SpecialPage {
/**
* Get the createaccount token from the current session
- * @since 1.27 returns a MediaWiki\\Session\\Token instead of a string
- * @return MediaWiki\\Session\\Token
+ * @since 1.27 returns a MediaWiki\Session\Token instead of a string
+ * @return MediaWiki\Session\Token
*/
public static function getCreateaccountToken() {
global $wgRequest;
diff --git a/includes/specials/SpecialUserrights.php b/includes/specials/SpecialUserrights.php
index 740f2f7e36..be110aa9cc 100644
--- a/includes/specials/SpecialUserrights.php
+++ b/includes/specials/SpecialUserrights.php
@@ -417,28 +417,18 @@ class UserrightsPage extends SpecialPage {
return Status::newGood( $user );
}
- function makeGroupNameList( $ids ) {
- if ( empty( $ids ) ) {
- return $this->msg( 'rightsnone' )->inContentLanguage()->text();
- } else {
- return implode( ', ', $ids );
- }
- }
-
/**
- * Make a list of group names to be stored as parameter for log entries
+ * @since 1.15
*
- * @deprecated since 1.21; use LogFormatter instead.
* @param array $ids
+ *
* @return string
*/
- function makeGroupNameListForLog( $ids ) {
- wfDeprecated( __METHOD__, '1.21' );
-
+ public function makeGroupNameList( $ids ) {
if ( empty( $ids ) ) {
- return '';
+ return $this->msg( 'rightsnone' )->inContentLanguage()->text();
} else {
- return $this->makeGroupNameList( $ids );
+ return implode( ', ', $ids );
}
}
diff --git a/includes/specials/SpecialWatchlist.php b/includes/specials/SpecialWatchlist.php
index 2dda093b13..15691f2c46 100644
--- a/includes/specials/SpecialWatchlist.php
+++ b/includes/specials/SpecialWatchlist.php
@@ -369,10 +369,21 @@ class SpecialWatchlist extends ChangesListSpecialPage {
}
$s = $list->beginRecentChangesList();
+ $userShowHiddenCats = $this->getUser()->getBoolOption( 'showhiddencats' );
$counter = 1;
foreach ( $rows as $obj ) {
# Make RC entry
$rc = RecentChange::newFromRow( $obj );
+
+ # Skip CatWatch entries for hidden cats based on user preference
+ if (
+ $rc->getAttribute( 'rc_type' ) == RC_CATEGORIZE &&
+ !$userShowHiddenCats &&
+ $rc->getParam( 'hidden-cat' )
+ ) {
+ continue;
+ }
+
$rc->counter = $counter++;
if ( $this->getConfig()->get( 'ShowUpdatedMarker' ) ) {
@@ -382,7 +393,7 @@ class SpecialWatchlist extends ChangesListSpecialPage {
}
if ( isset( $watchedItemStore ) ) {
- $rcTitleValue = new TitleValue( $obj->rc_namespace, $obj->rc_title );
+ $rcTitleValue = new TitleValue( (int)$obj->rc_namespace, $obj->rc_title );
$rc->numberofWatchingusers = $watchedItemStore->countWatchers( $rcTitleValue );
} else {
$rc->numberofWatchingusers = 0;
diff --git a/includes/specials/SpecialWithoutinterwiki.php b/includes/specials/SpecialWithoutinterwiki.php
index e2052b9fee..cca54b3589 100644
--- a/includes/specials/SpecialWithoutinterwiki.php
+++ b/includes/specials/SpecialWithoutinterwiki.php
@@ -46,23 +46,23 @@ class WithoutInterwikiPage extends PageQueryPage {
return '';
}
- $prefix = $this->prefix;
- $t = $this->getPageTitle();
+ $formDescriptor = [
+ 'prefix' => [
+ 'label-message' => 'allpagesprefix',
+ 'name' => 'prefix',
+ 'id' => 'wiprefix',
+ 'type' => 'text',
+ 'size' => 20,
+ 'default' => $this->prefix
+ ]
+ ];
- return Html::openElement( 'form', [ 'method' => 'get', 'action' => wfScript() ] ) . "\n" .
- Html::openElement( 'fieldset' ) . "\n" .
- Html::element( 'legend', null, $this->msg( 'withoutinterwiki-legend' )->text() ) . "\n" .
- Html::hidden( 'title', $t->getPrefixedText() ) . "\n" .
- Xml::inputLabel(
- $this->msg( 'allpagesprefix' )->text(),
- 'prefix',
- 'wiprefix',
- 20,
- $prefix
- ) . "\n" .
- Xml::submitButton( $this->msg( 'withoutinterwiki-submit' )->text() ) . "\n" .
- Html::closeElement( 'fieldset' ) . "\n" .
- Html::closeElement( 'form' );
+ $htmlForm = HTMLForm::factory( 'inline', $formDescriptor, $this->getContext() );
+ $htmlForm->setWrapperLegendMsg( 'withoutinterwiki-legend' )
+ ->setSubmitTextMsg( 'withoutinterwiki-submit' )
+ ->setMethod( 'get' )
+ ->prepareForm()
+ ->displayForm( false );
}
function sortDescending() {
diff --git a/includes/specials/pagers/ActiveUsersPager.php b/includes/specials/pagers/ActiveUsersPager.php
new file mode 100644
index 0000000000..0d3bc9aeee
--- /dev/null
+++ b/includes/specials/pagers/ActiveUsersPager.php
@@ -0,0 +1,254 @@
+RCMaxAge = $this->getConfig()->get( 'ActiveUserDays' );
+ $un = $this->getRequest()->getText( 'username', $par );
+ $this->requestedUser = '';
+ if ( $un != '' ) {
+ $username = Title::makeTitleSafe( NS_USER, $un );
+ if ( !is_null( $username ) ) {
+ $this->requestedUser = $username->getText();
+ }
+ }
+
+ $this->setupOptions();
+ }
+
+ public function setupOptions() {
+ $this->opts = new FormOptions();
+
+ $this->opts->add( 'hidebots', false, FormOptions::BOOL );
+ $this->opts->add( 'hidesysops', false, FormOptions::BOOL );
+
+ $this->opts->fetchValuesFromRequest( $this->getRequest() );
+
+ if ( $this->opts->getValue( 'hidebots' ) == 1 ) {
+ $this->hideRights[] = 'bot';
+ }
+ if ( $this->opts->getValue( 'hidesysops' ) == 1 ) {
+ $this->hideGroups[] = 'sysop';
+ }
+ }
+
+ function getIndexField() {
+ return 'qcc_title';
+ }
+
+ function getQueryInfo() {
+ $dbr = $this->getDatabase();
+
+ $activeUserSeconds = $this->getConfig()->get( 'ActiveUserDays' ) * 86400;
+ $timestamp = $dbr->timestamp( wfTimestamp( TS_UNIX ) - $activeUserSeconds );
+ $conds = [
+ 'qcc_type' => 'activeusers',
+ 'qcc_namespace' => NS_USER,
+ 'user_name = qcc_title',
+ 'rc_user_text = qcc_title',
+ 'rc_type != ' . $dbr->addQuotes( RC_EXTERNAL ), // Don't count wikidata.
+ 'rc_type != ' . $dbr->addQuotes( RC_CATEGORIZE ), // Don't count categorization changes.
+ 'rc_log_type IS NULL OR rc_log_type != ' . $dbr->addQuotes( 'newusers' ),
+ 'rc_timestamp >= ' . $dbr->addQuotes( $timestamp ),
+ ];
+ if ( $this->requestedUser != '' ) {
+ $conds[] = 'qcc_title >= ' . $dbr->addQuotes( $this->requestedUser );
+ }
+ if ( !$this->getUser()->isAllowed( 'hideuser' ) ) {
+ $conds[] = 'NOT EXISTS (' . $dbr->selectSQLText(
+ 'ipblocks', '1', [ 'ipb_user=user_id', 'ipb_deleted' => 1 ]
+ ) . ')';
+ }
+
+ if ( $dbr->implicitGroupby() ) {
+ $options = [ 'GROUP BY' => [ 'qcc_title' ] ];
+ } else {
+ $options = [ 'GROUP BY' => [ 'user_name', 'user_id', 'qcc_title' ] ];
+ }
+
+ return [
+ 'tables' => [ 'querycachetwo', 'user', 'recentchanges' ],
+ 'fields' => [ 'user_name', 'user_id', 'recentedits' => 'COUNT(*)', 'qcc_title' ],
+ 'options' => $options,
+ 'conds' => $conds
+ ];
+ }
+
+ function doBatchLookups() {
+ parent::doBatchLookups();
+
+ $uids = [];
+ foreach ( $this->mResult as $row ) {
+ $uids[] = $row->user_id;
+ }
+ // Fetch the block status of the user for showing "(blocked)" text and for
+ // striking out names of suppressed users when privileged user views the list.
+ // Although the first query already hits the block table for un-privileged, this
+ // is done in two queries to avoid huge quicksorts and to make COUNT(*) correct.
+ $dbr = $this->getDatabase();
+ $res = $dbr->select( 'ipblocks',
+ [ 'ipb_user', 'MAX(ipb_deleted) AS block_status' ],
+ [ 'ipb_user' => $uids ],
+ __METHOD__,
+ [ 'GROUP BY' => [ 'ipb_user' ] ]
+ );
+ $this->blockStatusByUid = [];
+ foreach ( $res as $row ) {
+ $this->blockStatusByUid[$row->ipb_user] = $row->block_status; // 0 or 1
+ }
+ $this->mResult->seek( 0 );
+ }
+
+ function formatRow( $row ) {
+ $userName = $row->user_name;
+
+ $ulinks = Linker::userLink( $row->user_id, $userName );
+ $ulinks .= Linker::userToolLinks( $row->user_id, $userName );
+
+ $lang = $this->getLanguage();
+
+ $list = [];
+ $user = User::newFromId( $row->user_id );
+
+ // User right filter
+ foreach ( $this->hideRights as $right ) {
+ // Calling User::getRights() within the loop so that
+ // if the hideRights() filter is empty, we don't have to
+ // trigger the lazy-init of the big userrights array in the
+ // User object
+ if ( in_array( $right, $user->getRights() ) ) {
+ return '';
+ }
+ }
+
+ // User group filter
+ // Note: This is a different loop than for user rights,
+ // because we're reusing it to build the group links
+ // at the same time
+ $groups_list = self::getGroups( intval( $row->user_id ), $this->userGroupCache );
+ foreach ( $groups_list as $group ) {
+ if ( in_array( $group, $this->hideGroups ) ) {
+ return '';
+ }
+ $list[] = self::buildGroupLink( $group, $userName );
+ }
+
+ $groups = $lang->commaList( $list );
+
+ $item = $lang->specialList( $ulinks, $groups );
+
+ $isBlocked = isset( $this->blockStatusByUid[$row->user_id] );
+ if ( $isBlocked && $this->blockStatusByUid[$row->user_id] == 1 ) {
+ $item = "$item ";
+ }
+ $count = $this->msg( 'activeusers-count' )->numParams( $row->recentedits )
+ ->params( $userName )->numParams( $this->RCMaxAge )->escaped();
+ $blocked = $isBlocked ? ' ' . $this->msg( 'listusers-blocked', $userName )->escaped() : '';
+
+ return Html::rawElement( 'li', [], "{$item} [{$count}]{$blocked}" );
+ }
+
+ function getPageHeader() {
+ $self = $this->getTitle();
+ $limit = $this->mLimit ? Html::hidden( 'limit', $this->mLimit ) : '';
+
+ # Form tag
+ $out = Xml::openElement( 'form', [ 'method' => 'get', 'action' => wfScript() ] );
+ $out .= Xml::fieldset( $this->msg( 'activeusers' )->text() ) . "\n";
+ $out .= Html::hidden( 'title', $self->getPrefixedDBkey() ) . $limit . "\n";
+
+ # Username field (with autocompletion support)
+ $this->getOutput()->addModules( 'mediawiki.userSuggest' );
+ $out .= Xml::inputLabel(
+ $this->msg( 'activeusers-from' )->text(),
+ 'username',
+ 'offset',
+ 20,
+ $this->requestedUser,
+ [
+ 'class' => 'mw-ui-input-inline mw-autocomplete-user',
+ 'tabindex' => 1,
+ ] + (
+ // Set autofocus on blank input
+ $this->requestedUser === '' ? [ 'autofocus' => '' ] : []
+ )
+ ) . ' ';
+
+ $out .= Xml::checkLabel( $this->msg( 'activeusers-hidebots' )->text(),
+ 'hidebots', 'hidebots', $this->opts->getValue( 'hidebots' ), [ 'tabindex' => 2 ] );
+
+ $out .= Xml::checkLabel(
+ $this->msg( 'activeusers-hidesysops' )->text(),
+ 'hidesysops',
+ 'hidesysops',
+ $this->opts->getValue( 'hidesysops' ),
+ [ 'tabindex' => 3 ]
+ ) . ' ';
+
+ # Submit button and form bottom
+ $out .= Xml::submitButton(
+ $this->msg( 'activeusers-submit' )->text(),
+ [ 'tabindex' => 4 ]
+ ) . "\n";
+ $out .= Xml::closeElement( 'fieldset' );
+ $out .= Xml::closeElement( 'form' );
+
+ return $out;
+ }
+
+}
diff --git a/includes/specials/pagers/AllMessagesTablePager.php b/includes/specials/pagers/AllMessagesTablePager.php
new file mode 100644
index 0000000000..2f2cbc2be8
--- /dev/null
+++ b/includes/specials/pagers/AllMessagesTablePager.php
@@ -0,0 +1,424 @@
+getContext() );
+ $this->mIndexField = 'am_title';
+ $this->mPage = $page;
+ $this->mConds = $conds;
+ // FIXME: Why does this need to be set to DIR_DESCENDING to produce ascending ordering?
+ $this->mDefaultDirection = IndexPager::DIR_DESCENDING;
+ $this->mLimitsShown = [ 20, 50, 100, 250, 500, 5000 ];
+
+ global $wgContLang;
+
+ $this->talk = $this->msg( 'talkpagelinktext' )->escaped();
+
+ $this->lang = ( $langObj ? $langObj : $wgContLang );
+ $this->langcode = $this->lang->getCode();
+ $this->foreign = $this->langcode !== $wgContLang->getCode();
+
+ $request = $this->getRequest();
+
+ $this->filter = $request->getVal( 'filter', 'all' );
+ if ( $this->filter === 'all' ) {
+ $this->custom = null; // So won't match in either case
+ } else {
+ $this->custom = ( $this->filter === 'unmodified' );
+ }
+
+ $prefix = $this->getLanguage()->ucfirst( $request->getVal( 'prefix', '' ) );
+ $prefix = $prefix !== '' ?
+ Title::makeTitleSafe( NS_MEDIAWIKI, $request->getVal( 'prefix', null ) ) :
+ null;
+
+ if ( $prefix !== null ) {
+ $this->displayPrefix = $prefix->getDBkey();
+ $this->prefix = '/^' . preg_quote( $this->displayPrefix, '/' ) . '/i';
+ } else {
+ $this->displayPrefix = false;
+ $this->prefix = false;
+ }
+
+ // The suffix that may be needed for message names if we're in a
+ // different language (eg [[MediaWiki:Foo/fr]]: $suffix = '/fr'
+ if ( $this->foreign ) {
+ $this->suffix = '/' . $this->langcode;
+ } else {
+ $this->suffix = '';
+ }
+ }
+
+ function buildForm() {
+ $attrs = [ 'id' => 'mw-allmessages-form-lang', 'name' => 'lang' ];
+ $msg = wfMessage( 'allmessages-language' );
+ $langSelect = Xml::languageSelector( $this->langcode, false, null, $attrs, $msg );
+
+ $out = Xml::openElement( 'form', [
+ 'method' => 'get',
+ 'action' => $this->getConfig()->get( 'Script' ),
+ 'id' => 'mw-allmessages-form'
+ ] ) .
+ Xml::fieldset( $this->msg( 'allmessages-filter-legend' )->text() ) .
+ Html::hidden( 'title', $this->getTitle()->getPrefixedText() ) .
+ Xml::openElement( 'table', [ 'class' => 'mw-allmessages-table' ] ) . "\n" .
+ '
+ ' .
+ Xml::label( $this->msg( 'allmessages-prefix' )->text(), 'mw-allmessages-form-prefix' ) .
+ " \n
+ " .
+ Xml::input(
+ 'prefix',
+ 20,
+ str_replace( '_', ' ', $this->displayPrefix ),
+ [ 'id' => 'mw-allmessages-form-prefix' ]
+ ) .
+ " \n
+
+ \n
+ " .
+ $this->msg( 'allmessages-filter' )->escaped() .
+ " \n
+ " .
+ Xml::radioLabel( $this->msg( 'allmessages-filter-unmodified' )->text(),
+ 'filter',
+ 'unmodified',
+ 'mw-allmessages-form-filter-unmodified',
+ ( $this->filter === 'unmodified' )
+ ) .
+ Xml::radioLabel( $this->msg( 'allmessages-filter-all' )->text(),
+ 'filter',
+ 'all',
+ 'mw-allmessages-form-filter-all',
+ ( $this->filter === 'all' )
+ ) .
+ Xml::radioLabel( $this->msg( 'allmessages-filter-modified' )->text(),
+ 'filter',
+ 'modified',
+ 'mw-allmessages-form-filter-modified',
+ ( $this->filter === 'modified' )
+ ) .
+ " \n
+
+ \n
+ " . $langSelect[0] . " \n
+ " . $langSelect[1] . " \n
+ " .
+
+ '
+ ' .
+ Xml::label( $this->msg( 'table_pager_limit_label' )->text(), 'mw-table_pager_limit_label' ) .
+ '
+ ' .
+ $this->getLimitSelect( [ 'id' => 'mw-table_pager_limit_label' ] ) .
+ '
+
+
+ ' .
+ Xml::submitButton( $this->msg( 'allmessages-filter-submit' )->text() ) .
+ " \n
+ " .
+
+ Xml::closeElement( 'table' ) .
+ $this->getHiddenFields( [ 'title', 'prefix', 'filter', 'lang', 'limit' ] ) .
+ Xml::closeElement( 'fieldset' ) .
+ Xml::closeElement( 'form' );
+
+ return $out;
+ }
+
+ function getAllMessages( $descending ) {
+ $messageNames = Language::getLocalisationCache()->getSubitemList( 'en', 'messages' );
+
+ // Normalise message names so they look like page titles and sort correctly - T86139
+ $messageNames = array_map( [ $this->lang, 'ucfirst' ], $messageNames );
+
+ if ( $descending ) {
+ rsort( $messageNames );
+ } else {
+ asort( $messageNames );
+ }
+
+ return $messageNames;
+ }
+
+ /**
+ * Determine which of the MediaWiki and MediaWiki_talk namespace pages exist.
+ * Returns array( 'pages' => ..., 'talks' => ... ), where the subarrays have
+ * an entry for each existing page, with the key being the message name and
+ * value arbitrary.
+ *
+ * @param array $messageNames
+ * @param string $langcode What language code
+ * @param bool $foreign Whether the $langcode is not the content language
+ * @return array A 'pages' and 'talks' array with the keys of existing pages
+ */
+ public static function getCustomisedStatuses( $messageNames, $langcode = 'en', $foreign = false ) {
+ // FIXME: This function should be moved to Language:: or something.
+
+ $dbr = wfGetDB( DB_SLAVE );
+ $res = $dbr->select( 'page',
+ [ 'page_namespace', 'page_title' ],
+ [ 'page_namespace' => [ NS_MEDIAWIKI, NS_MEDIAWIKI_TALK ] ],
+ __METHOD__,
+ [ 'USE INDEX' => 'name_title' ]
+ );
+ $xNames = array_flip( $messageNames );
+
+ $pageFlags = $talkFlags = [];
+
+ foreach ( $res as $s ) {
+ $exists = false;
+
+ if ( $foreign ) {
+ $titleParts = explode( '/', $s->page_title );
+ if ( count( $titleParts ) === 2 &&
+ $langcode === $titleParts[1] &&
+ isset( $xNames[$titleParts[0]] )
+ ) {
+ $exists = $titleParts[0];
+ }
+ } elseif ( isset( $xNames[$s->page_title] ) ) {
+ $exists = $s->page_title;
+ }
+
+ $title = Title::newFromRow( $s );
+ if ( $exists && $title->inNamespace( NS_MEDIAWIKI ) ) {
+ $pageFlags[$exists] = true;
+ } elseif ( $exists && $title->inNamespace( NS_MEDIAWIKI_TALK ) ) {
+ $talkFlags[$exists] = true;
+ }
+ }
+
+ return [ 'pages' => $pageFlags, 'talks' => $talkFlags ];
+ }
+
+ /**
+ * This function normally does a database query to get the results; we need
+ * to make a pretend result using a FakeResultWrapper.
+ * @param string $offset
+ * @param int $limit
+ * @param bool $descending
+ * @return FakeResultWrapper
+ */
+ function reallyDoQuery( $offset, $limit, $descending ) {
+ $result = new FakeResultWrapper( [] );
+
+ $messageNames = $this->getAllMessages( $descending );
+ $statuses = self::getCustomisedStatuses( $messageNames, $this->langcode, $this->foreign );
+
+ $count = 0;
+ foreach ( $messageNames as $key ) {
+ $customised = isset( $statuses['pages'][$key] );
+ if ( $customised !== $this->custom &&
+ ( $descending && ( $key < $offset || !$offset ) || !$descending && $key > $offset ) &&
+ ( ( $this->prefix && preg_match( $this->prefix, $key ) ) || $this->prefix === false )
+ ) {
+ $actual = wfMessage( $key )->inLanguage( $this->langcode )->plain();
+ $default = wfMessage( $key )->inLanguage( $this->langcode )->useDatabase( false )->plain();
+ $result->result[] = [
+ 'am_title' => $key,
+ 'am_actual' => $actual,
+ 'am_default' => $default,
+ 'am_customised' => $customised,
+ 'am_talk_exists' => isset( $statuses['talks'][$key] )
+ ];
+ $count++;
+ }
+
+ if ( $count === $limit ) {
+ break;
+ }
+ }
+
+ return $result;
+ }
+
+ function getStartBody() {
+ $tableClass = $this->getTableClass();
+ return Xml::openElement( 'table', [
+ 'class' => "mw-datatable $tableClass",
+ 'id' => 'mw-allmessagestable'
+ ] ) .
+ "\n" .
+ "
+ " .
+ $this->msg( 'allmessagesname' )->escaped() . "
+
+ " .
+ $this->msg( 'allmessagesdefault' )->escaped() .
+ "
+ \n
+
+ " .
+ $this->msg( 'allmessagescurrent' )->escaped() .
+ "
+ \n";
+ }
+
+ function formatValue( $field, $value ) {
+ switch ( $field ) {
+ case 'am_title' :
+ $title = Title::makeTitle( NS_MEDIAWIKI, $value . $this->suffix );
+ $talk = Title::makeTitle( NS_MEDIAWIKI_TALK, $value . $this->suffix );
+ $translation = Linker::makeExternalLink(
+ 'https://translatewiki.net/w/i.php?' . wfArrayToCgi( [
+ 'title' => 'Special:SearchTranslations',
+ 'group' => 'mediawiki',
+ 'grouppath' => 'mediawiki',
+ 'query' => 'language:' . $this->getLanguage()->getCode() . '^25 ' .
+ 'messageid:"MediaWiki:' . $value . '"^10 "' .
+ $this->msg( $value )->inLanguage( 'en' )->plain() . '"'
+ ] ),
+ $this->msg( 'allmessages-filter-translate' )->text()
+ );
+
+ if ( $this->mCurrentRow->am_customised ) {
+ $title = Linker::linkKnown( $title, $this->getLanguage()->lcfirst( $value ) );
+ } else {
+ $title = Linker::link(
+ $title,
+ $this->getLanguage()->lcfirst( $value ),
+ [],
+ [],
+ [ 'broken' ]
+ );
+ }
+ if ( $this->mCurrentRow->am_talk_exists ) {
+ $talk = Linker::linkKnown( $talk, $this->talk );
+ } else {
+ $talk = Linker::link(
+ $talk,
+ $this->talk,
+ [],
+ [],
+ [ 'broken' ]
+ );
+ }
+
+ return $title . ' ' .
+ $this->msg( 'parentheses' )->rawParams( $talk )->escaped() .
+ ' ' .
+ $this->msg( 'parentheses' )->rawParams( $translation )->escaped();
+
+ case 'am_default' :
+ case 'am_actual' :
+ return Sanitizer::escapeHtmlAllowEntities( $value );
+ }
+
+ return '';
+ }
+
+ function formatRow( $row ) {
+ // Do all the normal stuff
+ $s = parent::formatRow( $row );
+
+ // But if there's a customised message, add that too.
+ if ( $row->am_customised ) {
+ $s .= Xml::openElement( 'tr', $this->getRowAttrs( $row, true ) );
+ $formatted = strval( $this->formatValue( 'am_actual', $row->am_actual ) );
+
+ if ( $formatted === '' ) {
+ $formatted = ' ';
+ }
+
+ $s .= Xml::tags( 'td', $this->getCellAttrs( 'am_actual', $row->am_actual ), $formatted )
+ . "\n";
+ }
+
+ return $s;
+ }
+
+ function getRowAttrs( $row, $isSecond = false ) {
+ $arr = [];
+
+ if ( $row->am_customised ) {
+ $arr['class'] = 'allmessages-customised';
+ }
+
+ if ( !$isSecond ) {
+ $arr['id'] = Sanitizer::escapeId( 'msg_' . $this->getLanguage()->lcfirst( $row->am_title ) );
+ }
+
+ return $arr;
+ }
+
+ function getCellAttrs( $field, $value ) {
+ if ( $this->mCurrentRow->am_customised && $field === 'am_title' ) {
+ return [ 'rowspan' => '2', 'class' => $field ];
+ } elseif ( $field === 'am_title' ) {
+ return [ 'class' => $field ];
+ } else {
+ return [
+ 'lang' => $this->lang->getHtmlCode(),
+ 'dir' => $this->lang->getDir(),
+ 'class' => $field
+ ];
+ }
+ }
+
+ // This is not actually used, as getStartBody is overridden above
+ function getFieldNames() {
+ return [
+ 'am_title' => $this->msg( 'allmessagesname' )->text(),
+ 'am_default' => $this->msg( 'allmessagesdefault' )->text()
+ ];
+ }
+
+ function getTitle() {
+ return SpecialPage::getTitleFor( 'Allmessages', false );
+ }
+
+ function isFieldSortable( $x ) {
+ return false;
+ }
+
+ function getDefaultSort() {
+ return '';
+ }
+
+ function getQueryInfo() {
+ return '';
+ }
+
+}
diff --git a/includes/specials/pagers/BlockListPager.php b/includes/specials/pagers/BlockListPager.php
new file mode 100644
index 0000000000..d8229761b7
--- /dev/null
+++ b/includes/specials/pagers/BlockListPager.php
@@ -0,0 +1,282 @@
+page = $page;
+ $this->conds = $conds;
+ $this->mDefaultDirection = IndexPager::DIR_DESCENDING;
+ parent::__construct( $page->getContext() );
+ }
+
+ function getFieldNames() {
+ static $headers = null;
+
+ if ( $headers === null ) {
+ $headers = [
+ 'ipb_timestamp' => 'blocklist-timestamp',
+ 'ipb_target' => 'blocklist-target',
+ 'ipb_expiry' => 'blocklist-expiry',
+ 'ipb_by' => 'blocklist-by',
+ 'ipb_params' => 'blocklist-params',
+ 'ipb_reason' => 'blocklist-reason',
+ ];
+ foreach ( $headers as $key => $val ) {
+ $headers[$key] = $this->msg( $val )->text();
+ }
+ }
+
+ return $headers;
+ }
+
+ function formatValue( $name, $value ) {
+ static $msg = null;
+ if ( $msg === null ) {
+ $keys = [
+ 'anononlyblock',
+ 'createaccountblock',
+ 'noautoblockblock',
+ 'emailblock',
+ 'blocklist-nousertalk',
+ 'unblocklink',
+ 'change-blocklink',
+ ];
+
+ 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 = htmlspecialchars( $language->userTimeAndDate( $value, $this->getUser() ) );
+ break;
+
+ case 'ipb_target':
+ if ( $row->ipb_auto ) {
+ $formatted = $this->msg( 'autoblockid', $row->ipb_id )->parse();
+ } else {
+ list( $target, $type ) = Block::parseTarget( $row->ipb_address );
+ switch ( $type ) {
+ case Block::TYPE_USER:
+ case Block::TYPE_IP:
+ $formatted = Linker::userLink( $target->getId(), $target );
+ $formatted .= Linker::userToolLinks(
+ $target->getId(),
+ $target,
+ false,
+ Linker::TOOL_LINKS_NOBLOCK
+ );
+ break;
+ case Block::TYPE_RANGE:
+ $formatted = htmlspecialchars( $target );
+ }
+ }
+ break;
+
+ case 'ipb_expiry':
+ $formatted = htmlspecialchars( $language->formatExpiry(
+ $value,
+ /* User preference timezone */true
+ ) );
+ if ( $this->getUser()->isAllowed( 'block' ) ) {
+ if ( $row->ipb_auto ) {
+ $links[] = Linker::linkKnown(
+ SpecialPage::getTitleFor( 'Unblock' ),
+ $msg['unblocklink'],
+ [],
+ [ 'wpTarget' => "#{$row->ipb_id}" ]
+ );
+ } else {
+ $links[] = Linker::linkKnown(
+ SpecialPage::getTitleFor( 'Unblock', $row->ipb_address ),
+ $msg['unblocklink']
+ );
+ $links[] = Linker::linkKnown(
+ SpecialPage::getTitleFor( 'Block', $row->ipb_address ),
+ $msg['change-blocklink']
+ );
+ }
+ $formatted .= ' ' . Html::rawElement(
+ 'span',
+ [ 'class' => 'mw-blocklist-actions' ],
+ $this->msg( 'parentheses' )->rawParams(
+ $language->pipeList( $links ) )->escaped()
+ );
+ }
+ if ( $value !== 'infinity' ) {
+ $timestamp = new MWTimestamp( $value );
+ $formatted .= ' ' . $this->msg(
+ 'ipb-blocklist-duration-left',
+ $language->formatDuration(
+ $timestamp->getTimestamp() - time(),
+ // reasonable output
+ [
+ 'minutes',
+ 'hours',
+ 'days',
+ 'years',
+ ]
+ )
+ )->escaped();
+ }
+ break;
+
+ case 'ipb_by':
+ if ( isset( $row->by_user_name ) ) {
+ $formatted = Linker::userLink( $value, $row->by_user_name );
+ $formatted .= Linker::userToolLinks( $value, $row->by_user_name );
+ } else {
+ $formatted = htmlspecialchars( $row->ipb_by_text ); // foreign user?
+ }
+ break;
+
+ case 'ipb_reason':
+ $formatted = Linker::formatComment( $value );
+ break;
+
+ case 'ipb_params':
+ $properties = [];
+ if ( $row->ipb_anon_only ) {
+ $properties[] = $msg['anononlyblock'];
+ }
+ if ( $row->ipb_create_account ) {
+ $properties[] = $msg['createaccountblock'];
+ }
+ if ( $row->ipb_user && !$row->ipb_enable_autoblock ) {
+ $properties[] = $msg['noautoblockblock'];
+ }
+
+ if ( $row->ipb_block_email ) {
+ $properties[] = $msg['emailblock'];
+ }
+
+ if ( !$row->ipb_allow_usertalk ) {
+ $properties[] = $msg['blocklist-nousertalk'];
+ }
+
+ $formatted = $language->commaList( $properties );
+ break;
+
+ default:
+ $formatted = "Unable to format $name";
+ break;
+ }
+
+ return $formatted;
+ }
+
+ function getQueryInfo() {
+ $info = [
+ 'tables' => [ 'ipblocks', 'user' ],
+ 'fields' => [
+ 'ipb_id',
+ 'ipb_address',
+ 'ipb_user',
+ 'ipb_by',
+ 'ipb_by_text',
+ 'by_user_name' => 'user_name',
+ 'ipb_reason',
+ 'ipb_timestamp',
+ 'ipb_auto',
+ 'ipb_anon_only',
+ 'ipb_create_account',
+ 'ipb_enable_autoblock',
+ 'ipb_expiry',
+ 'ipb_range_start',
+ 'ipb_range_end',
+ 'ipb_deleted',
+ 'ipb_block_email',
+ 'ipb_allow_usertalk',
+ ],
+ 'conds' => $this->conds,
+ 'join_conds' => [ 'user' => [ 'LEFT JOIN', 'user_id = ipb_by' ] ]
+ ];
+
+ # Filter out any expired blocks
+ $db = $this->getDatabase();
+ $info['conds'][] = 'ipb_expiry > ' . $db->addQuotes( $db->timestamp() );
+
+ # Is the user allowed to see hidden blocks?
+ if ( !$this->getUser()->isAllowed( 'hideuser' ) ) {
+ $info['conds']['ipb_deleted'] = 0;
+ }
+
+ return $info;
+ }
+
+ protected function getTableClass() {
+ return parent::getTableClass() . ' mw-blocklist';
+ }
+
+ function getIndexField() {
+ return 'ipb_timestamp';
+ }
+
+ function getDefaultSort() {
+ return 'ipb_timestamp';
+ }
+
+ function isFieldSortable( $name ) {
+ return false;
+ }
+
+ /**
+ * Do a LinkBatch query to minimise database load when generating all these links
+ * @param ResultWrapper $result
+ */
+ function preprocessResults( $result ) {
+ # Do a link batch query
+ $lb = new LinkBatch;
+ $lb->setCaller( __METHOD__ );
+
+ foreach ( $result as $row ) {
+ $lb->add( NS_USER, $row->ipb_address );
+ $lb->add( NS_USER_TALK, $row->ipb_address );
+
+ if ( isset( $row->by_user_name ) ) {
+ $lb->add( NS_USER, $row->by_user_name );
+ $lb->add( NS_USER_TALK, $row->by_user_name );
+ }
+ }
+
+ $lb->execute();
+ }
+
+}
diff --git a/includes/specials/pagers/CategoryPager.php b/includes/specials/pagers/CategoryPager.php
new file mode 100644
index 0000000000..cba4952b6f
--- /dev/null
+++ b/includes/specials/pagers/CategoryPager.php
@@ -0,0 +1,112 @@
+setOffset( $from );
+ $this->setIncludeOffset( true );
+ }
+
+ $this->linkRenderer = $linkRenderer;
+ }
+
+ function getQueryInfo() {
+ return [
+ 'tables' => [ 'category' ],
+ 'fields' => [ 'cat_title', 'cat_pages' ],
+ 'conds' => [ 'cat_pages > 0' ],
+ 'options' => [ 'USE INDEX' => 'cat_title' ],
+ ];
+ }
+
+ function getIndexField() {
+ return 'cat_title';
+ }
+
+ function getDefaultQuery() {
+ parent::getDefaultQuery();
+ unset( $this->mDefaultQuery['from'] );
+
+ return $this->mDefaultQuery;
+ }
+
+ /* Override getBody to apply LinksBatch on resultset before actually outputting anything. */
+ public function getBody() {
+ $batch = new LinkBatch;
+
+ $this->mResult->rewind();
+
+ foreach ( $this->mResult as $row ) {
+ $batch->addObj( Title::makeTitleSafe( NS_CATEGORY, $row->cat_title ) );
+ }
+ $batch->execute();
+ $this->mResult->rewind();
+
+ return parent::getBody();
+ }
+
+ function formatRow( $result ) {
+ $title = new TitleValue( NS_CATEGORY, $result->cat_title );
+ $text = $title->getText();
+ $link = $this->linkRenderer->renderHtmlLink( $title, $text );
+
+ $count = $this->msg( 'nmembers' )->numParams( $result->cat_pages )->escaped();
+ return Html::rawElement( 'li', null, $this->getLanguage()->specialList( $link, $count ) ) . "\n";
+ }
+
+ public function getStartForm( $from ) {
+ return Xml::tags(
+ 'form',
+ [ 'method' => 'get', 'action' => wfScript() ],
+ Html::hidden( 'title', $this->getTitle()->getPrefixedText() ) .
+ Xml::fieldset(
+ $this->msg( 'categories' )->text(),
+ Xml::inputLabel(
+ $this->msg( 'categoriesfrom' )->text(),
+ 'from', 'from', 20, $from, [ 'class' => 'mw-ui-input-inline' ] ) .
+ ' ' .
+ Html::submitButton(
+ $this->msg( 'categories-submit' )->text(),
+ [], [ 'mw-ui-progressive' ]
+ )
+ )
+ );
+ }
+}
diff --git a/includes/specials/pagers/ContribsPager.php b/includes/specials/pagers/ContribsPager.php
new file mode 100644
index 0000000000..d90c37bab7
--- /dev/null
+++ b/includes/specials/pagers/ContribsPager.php
@@ -0,0 +1,526 @@
+messages[$msg] = $this->msg( $msg )->escaped();
+ }
+
+ $this->target = isset( $options['target'] ) ? $options['target'] : '';
+ $this->contribs = isset( $options['contribs'] ) ? $options['contribs'] : 'users';
+ $this->namespace = isset( $options['namespace'] ) ? $options['namespace'] : '';
+ $this->tagFilter = isset( $options['tagfilter'] ) ? $options['tagfilter'] : false;
+ $this->nsInvert = isset( $options['nsInvert'] ) ? $options['nsInvert'] : false;
+ $this->associated = isset( $options['associated'] ) ? $options['associated'] : false;
+
+ $this->deletedOnly = !empty( $options['deletedOnly'] );
+ $this->topOnly = !empty( $options['topOnly'] );
+ $this->newOnly = !empty( $options['newOnly'] );
+
+ $year = isset( $options['year'] ) ? $options['year'] : false;
+ $month = isset( $options['month'] ) ? $options['month'] : false;
+ $this->getDateCond( $year, $month );
+
+ // Most of this code will use the 'contributions' group DB, which can map to slaves
+ // with extra user based indexes or partioning by user. The additional metadata
+ // queries should use a regular slave since the lookup pattern is not all by user.
+ $this->mDbSecondary = wfGetDB( DB_SLAVE ); // any random slave
+ $this->mDb = wfGetDB( DB_SLAVE, 'contributions' );
+ }
+
+ function getDefaultQuery() {
+ $query = parent::getDefaultQuery();
+ $query['target'] = $this->target;
+
+ return $query;
+ }
+
+ /**
+ * This method basically executes the exact same code as the parent class, though with
+ * a hook added, to allow extensions to add additional queries.
+ *
+ * @param string $offset Index offset, inclusive
+ * @param int $limit Exact query limit
+ * @param bool $descending Query direction, false for ascending, true for descending
+ * @return ResultWrapper
+ */
+ function reallyDoQuery( $offset, $limit, $descending ) {
+ list( $tables, $fields, $conds, $fname, $options, $join_conds ) = $this->buildQueryInfo(
+ $offset,
+ $limit,
+ $descending
+ );
+
+ /*
+ * This hook will allow extensions to add in additional queries, so they can get their data
+ * in My Contributions as well. Extensions should append their results to the $data array.
+ *
+ * Extension queries have to implement the navbar requirement as well. They should
+ * - have a column aliased as $pager->getIndexField()
+ * - have LIMIT set
+ * - have a WHERE-clause that compares the $pager->getIndexField()-equivalent column to the offset
+ * - have the ORDER BY specified based upon the details provided by the navbar
+ *
+ * See includes/Pager.php buildQueryInfo() method on how to build LIMIT, WHERE & ORDER BY
+ *
+ * &$data: an array of results of all contribs queries
+ * $pager: the ContribsPager object hooked into
+ * $offset: see phpdoc above
+ * $limit: see phpdoc above
+ * $descending: see phpdoc above
+ */
+ $data = [ $this->mDb->select(
+ $tables, $fields, $conds, $fname, $options, $join_conds
+ ) ];
+ Hooks::run(
+ 'ContribsPager::reallyDoQuery',
+ [ &$data, $this, $offset, $limit, $descending ]
+ );
+
+ $result = [];
+
+ // loop all results and collect them in an array
+ foreach ( $data as $query ) {
+ foreach ( $query as $i => $row ) {
+ // use index column as key, allowing us to easily sort in PHP
+ $result[$row->{$this->getIndexField()} . "-$i"] = $row;
+ }
+ }
+
+ // sort results
+ if ( $descending ) {
+ ksort( $result );
+ } else {
+ krsort( $result );
+ }
+
+ // enforce limit
+ $result = array_slice( $result, 0, $limit );
+
+ // get rid of array keys
+ $result = array_values( $result );
+
+ return new FakeResultWrapper( $result );
+ }
+
+ function getQueryInfo() {
+ list( $tables, $index, $userCond, $join_cond ) = $this->getUserCond();
+
+ $user = $this->getUser();
+ $conds = array_merge( $userCond, $this->getNamespaceCond() );
+
+ // Paranoia: avoid brute force searches (bug 17342)
+ if ( !$user->isAllowed( 'deletedhistory' ) ) {
+ $conds[] = $this->mDb->bitAnd( 'rev_deleted', Revision::DELETED_USER ) . ' = 0';
+ } elseif ( !$user->isAllowedAny( 'suppressrevision', 'viewsuppressed' ) ) {
+ $conds[] = $this->mDb->bitAnd( 'rev_deleted', Revision::SUPPRESSED_USER ) .
+ ' != ' . Revision::SUPPRESSED_USER;
+ }
+
+ # Don't include orphaned revisions
+ $join_cond['page'] = Revision::pageJoinCond();
+ # Get the current user name for accounts
+ $join_cond['user'] = Revision::userJoinCond();
+
+ $options = [];
+ if ( $index ) {
+ $options['USE INDEX'] = [ 'revision' => $index ];
+ }
+
+ $queryInfo = [
+ 'tables' => $tables,
+ 'fields' => array_merge(
+ Revision::selectFields(),
+ Revision::selectUserFields(),
+ [ 'page_namespace', 'page_title', 'page_is_new',
+ 'page_latest', 'page_is_redirect', 'page_len' ]
+ ),
+ 'conds' => $conds,
+ 'options' => $options,
+ 'join_conds' => $join_cond
+ ];
+
+ ChangeTags::modifyDisplayQuery(
+ $queryInfo['tables'],
+ $queryInfo['fields'],
+ $queryInfo['conds'],
+ $queryInfo['join_conds'],
+ $queryInfo['options'],
+ $this->tagFilter
+ );
+
+ Hooks::run( 'ContribsPager::getQueryInfo', [ &$this, &$queryInfo ] );
+
+ return $queryInfo;
+ }
+
+ function getUserCond() {
+ $condition = [];
+ $join_conds = [];
+ $tables = [ 'revision', 'page', 'user' ];
+ $index = false;
+ if ( $this->contribs == 'newbie' ) {
+ $max = $this->mDb->selectField( 'user', 'max(user_id)', false, __METHOD__ );
+ $condition[] = 'rev_user >' . (int)( $max - $max / 100 );
+ # ignore local groups with the bot right
+ # @todo FIXME: Global groups may have 'bot' rights
+ $groupsWithBotPermission = User::getGroupsWithPermission( 'bot' );
+ if ( count( $groupsWithBotPermission ) ) {
+ $tables[] = 'user_groups';
+ $condition[] = 'ug_group IS NULL';
+ $join_conds['user_groups'] = [
+ 'LEFT JOIN', [
+ 'ug_user = rev_user',
+ 'ug_group' => $groupsWithBotPermission
+ ]
+ ];
+ }
+ } else {
+ $uid = User::idFromName( $this->target );
+ if ( $uid ) {
+ $condition['rev_user'] = $uid;
+ $index = 'user_timestamp';
+ } else {
+ $condition['rev_user_text'] = $this->target;
+ $index = 'usertext_timestamp';
+ }
+ }
+
+ if ( $this->deletedOnly ) {
+ $condition[] = 'rev_deleted != 0';
+ }
+
+ if ( $this->topOnly ) {
+ $condition[] = 'rev_id = page_latest';
+ }
+
+ if ( $this->newOnly ) {
+ $condition[] = 'rev_parent_id = 0';
+ }
+
+ return [ $tables, $index, $condition, $join_conds ];
+ }
+
+ function getNamespaceCond() {
+ if ( $this->namespace !== '' ) {
+ $selectedNS = $this->mDb->addQuotes( $this->namespace );
+ $eq_op = $this->nsInvert ? '!=' : '=';
+ $bool_op = $this->nsInvert ? 'AND' : 'OR';
+
+ if ( !$this->associated ) {
+ return [ "page_namespace $eq_op $selectedNS" ];
+ }
+
+ $associatedNS = $this->mDb->addQuotes(
+ MWNamespace::getAssociated( $this->namespace )
+ );
+
+ return [
+ "page_namespace $eq_op $selectedNS " .
+ $bool_op .
+ " page_namespace $eq_op $associatedNS"
+ ];
+ }
+
+ return [];
+ }
+
+ function getIndexField() {
+ return 'rev_timestamp';
+ }
+
+ function doBatchLookups() {
+ # Do a link batch query
+ $this->mResult->seek( 0 );
+ $parentRevIds = [];
+ $this->mParentLens = [];
+ $batch = new LinkBatch();
+ # Give some pointers to make (last) links
+ foreach ( $this->mResult as $row ) {
+ if ( isset( $row->rev_parent_id ) && $row->rev_parent_id ) {
+ $parentRevIds[] = $row->rev_parent_id;
+ }
+ if ( isset( $row->rev_id ) ) {
+ $this->mParentLens[$row->rev_id] = $row->rev_len;
+ if ( $this->contribs === 'newbie' ) { // multiple users
+ $batch->add( NS_USER, $row->user_name );
+ $batch->add( NS_USER_TALK, $row->user_name );
+ }
+ $batch->add( $row->page_namespace, $row->page_title );
+ }
+ }
+ # Fetch rev_len for revisions not already scanned above
+ $this->mParentLens += Revision::getParentLengths(
+ $this->mDbSecondary,
+ array_diff( $parentRevIds, array_keys( $this->mParentLens ) )
+ );
+ $batch->execute();
+ $this->mResult->seek( 0 );
+ }
+
+ /**
+ * @return string
+ */
+ function getStartBody() {
+ return "\n";
+ }
+
+ /**
+ * @return string
+ */
+ function getEndBody() {
+ return " \n";
+ }
+
+ /**
+ * Generates each row in the contributions list.
+ *
+ * Contributions which are marked "top" are currently on top of the history.
+ * For these contributions, a [rollback] link is shown for users with roll-
+ * back privileges. The rollback link restores the most recent version that
+ * was not written by the target user.
+ *
+ * @todo This would probably look a lot nicer in a table.
+ * @param object $row
+ * @return string
+ */
+ function formatRow( $row ) {
+
+ $ret = '';
+ $classes = [];
+
+ /*
+ * There may be more than just revision rows. To make sure that we'll only be processing
+ * revisions here, let's _try_ to build a revision out of our row (without displaying
+ * notices though) and then trying to grab data from the built object. If we succeed,
+ * we're definitely dealing with revision data and we may proceed, if not, we'll leave it
+ * to extensions to subscribe to the hook to parse the row.
+ */
+ MediaWiki\suppressWarnings();
+ try {
+ $rev = new Revision( $row );
+ $validRevision = (bool)$rev->getId();
+ } catch ( Exception $e ) {
+ $validRevision = false;
+ }
+ MediaWiki\restoreWarnings();
+
+ if ( $validRevision ) {
+ $classes = [];
+
+ $page = Title::newFromRow( $row );
+ $link = Linker::link(
+ $page,
+ htmlspecialchars( $page->getPrefixedText() ),
+ [ 'class' => 'mw-contributions-title' ],
+ $page->isRedirect() ? [ 'redirect' => 'no' ] : []
+ );
+ # Mark current revisions
+ $topmarktext = '';
+ $user = $this->getUser();
+ if ( $row->rev_id == $row->page_latest ) {
+ $topmarktext .= '' . $this->messages['uctop'] . ' ';
+ # Add rollback link
+ if ( !$row->page_is_new && $page->quickUserCan( 'rollback', $user )
+ && $page->quickUserCan( 'edit', $user )
+ ) {
+ $this->preventClickjacking();
+ $topmarktext .= ' ' . Linker::generateRollback( $rev, $this->getContext() );
+ }
+ }
+ # Is there a visible previous revision?
+ if ( $rev->userCan( Revision::DELETED_TEXT, $user ) && $rev->getParentId() !== 0 ) {
+ $difftext = Linker::linkKnown(
+ $page,
+ $this->messages['diff'],
+ [],
+ [
+ 'diff' => 'prev',
+ 'oldid' => $row->rev_id
+ ]
+ );
+ } else {
+ $difftext = $this->messages['diff'];
+ }
+ $histlink = Linker::linkKnown(
+ $page,
+ $this->messages['hist'],
+ [],
+ [ 'action' => 'history' ]
+ );
+
+ if ( $row->rev_parent_id === null ) {
+ // For some reason rev_parent_id isn't populated for this row.
+ // Its rumoured this is true on wikipedia for some revisions (bug 34922).
+ // Next best thing is to have the total number of bytes.
+ $chardiff = ' . . ';
+ $chardiff .= Linker::formatRevisionSize( $row->rev_len );
+ $chardiff .= ' . . ';
+ } else {
+ $parentLen = 0;
+ if ( isset( $this->mParentLens[$row->rev_parent_id] ) ) {
+ $parentLen = $this->mParentLens[$row->rev_parent_id];
+ }
+
+ $chardiff = ' . . ';
+ $chardiff .= ChangesList::showCharacterDifference(
+ $parentLen,
+ $row->rev_len,
+ $this->getContext()
+ );
+ $chardiff .= ' . . ';
+ }
+
+ $lang = $this->getLanguage();
+ $comment = $lang->getDirMark() . Linker::revComment( $rev, false, true );
+ $date = $lang->userTimeAndDate( $row->rev_timestamp, $user );
+ if ( $rev->userCan( Revision::DELETED_TEXT, $user ) ) {
+ $d = Linker::linkKnown(
+ $page,
+ htmlspecialchars( $date ),
+ [ 'class' => 'mw-changeslist-date' ],
+ [ 'oldid' => intval( $row->rev_id ) ]
+ );
+ } else {
+ $d = htmlspecialchars( $date );
+ }
+ if ( $rev->isDeleted( Revision::DELETED_TEXT ) ) {
+ $d = '' . $d . ' ';
+ }
+
+ # Show user names for /newbies as there may be different users.
+ # Note that we already excluded rows with hidden user names.
+ if ( $this->contribs == 'newbie' ) {
+ $userlink = ' . . ' . $lang->getDirMark()
+ . Linker::userLink( $rev->getUser(), $rev->getUserText() );
+ $userlink .= ' ' . $this->msg( 'parentheses' )->rawParams(
+ Linker::userTalkLink( $rev->getUser(), $rev->getUserText() ) )->escaped() . ' ';
+ } else {
+ $userlink = '';
+ }
+
+ if ( $rev->getParentId() === 0 ) {
+ $nflag = ChangesList::flag( 'newpage' );
+ } else {
+ $nflag = '';
+ }
+
+ if ( $rev->isMinor() ) {
+ $mflag = ChangesList::flag( 'minor' );
+ } else {
+ $mflag = '';
+ }
+
+ $del = Linker::getRevDeleteLink( $user, $rev, $page );
+ if ( $del !== '' ) {
+ $del .= ' ';
+ }
+
+ $diffHistLinks = $this->msg( 'parentheses' )
+ ->rawParams( $difftext . $this->messages['pipe-separator'] . $histlink )
+ ->escaped();
+ $ret = "{$del}{$d} {$diffHistLinks}{$chardiff}{$nflag}{$mflag} ";
+ $ret .= "{$link}{$userlink} {$comment} {$topmarktext}";
+
+ # Denote if username is redacted for this edit
+ if ( $rev->isDeleted( Revision::DELETED_USER ) ) {
+ $ret .= " " .
+ $this->msg( 'rev-deleted-user-contribs' )->escaped() .
+ " ";
+ }
+
+ # Tags, if any.
+ list( $tagSummary, $newClasses ) = ChangeTags::formatSummaryRow(
+ $row->ts_tags,
+ 'contributions',
+ $this->getContext()
+ );
+ $classes = array_merge( $classes, $newClasses );
+ $ret .= " $tagSummary";
+ }
+
+ // Let extensions add data
+ Hooks::run( 'ContributionsLineEnding', [ $this, &$ret, $row, &$classes ] );
+
+ if ( $classes === [] && $ret === '' ) {
+ wfDebug( "Dropping Special:Contribution row that could not be formatted\n" );
+ $ret = "\n";
+ } else {
+ $ret = Html::rawElement( 'li', [ 'class' => $classes ], $ret ) . "\n";
+ }
+
+ return $ret;
+ }
+
+ /**
+ * Overwrite Pager function and return a helpful comment
+ * @return string
+ */
+ function getSqlComment() {
+ if ( $this->namespace || $this->deletedOnly ) {
+ // potentially slow, see CR r58153
+ return 'contributions page filtered for namespace or RevisionDeleted edits';
+ } else {
+ return 'contributions page unfiltered';
+ }
+ }
+
+ protected function preventClickjacking() {
+ $this->preventClickjacking = true;
+ }
+
+ /**
+ * @return bool
+ */
+ public function getPreventClickjacking() {
+ return $this->preventClickjacking;
+ }
+}
diff --git a/includes/specials/pagers/DeletedContribsPager.php b/includes/specials/pagers/DeletedContribsPager.php
new file mode 100644
index 0000000000..f2421f871a
--- /dev/null
+++ b/includes/specials/pagers/DeletedContribsPager.php
@@ -0,0 +1,355 @@
+messages[$msg] = $this->msg( $msg )->escaped();
+ }
+ $this->target = $target;
+ $this->namespace = $namespace;
+ $this->mDb = wfGetDB( DB_SLAVE, 'contributions' );
+ }
+
+ function getDefaultQuery() {
+ $query = parent::getDefaultQuery();
+ $query['target'] = $this->target;
+
+ return $query;
+ }
+
+ function getQueryInfo() {
+ list( $index, $userCond ) = $this->getUserCond();
+ $conds = array_merge( $userCond, $this->getNamespaceCond() );
+ $user = $this->getUser();
+ // Paranoia: avoid brute force searches (bug 17792)
+ if ( !$user->isAllowed( 'deletedhistory' ) ) {
+ $conds[] = $this->mDb->bitAnd( 'ar_deleted', Revision::DELETED_USER ) . ' = 0';
+ } elseif ( !$user->isAllowedAny( 'suppressrevision', 'viewsuppressed' ) ) {
+ $conds[] = $this->mDb->bitAnd( 'ar_deleted', Revision::SUPPRESSED_USER ) .
+ ' != ' . Revision::SUPPRESSED_USER;
+ }
+
+ return [
+ 'tables' => [ 'archive' ],
+ 'fields' => [
+ 'ar_rev_id', 'ar_namespace', 'ar_title', 'ar_timestamp', 'ar_comment',
+ 'ar_minor_edit', 'ar_user', 'ar_user_text', 'ar_deleted'
+ ],
+ 'conds' => $conds,
+ 'options' => [ 'USE INDEX' => $index ]
+ ];
+ }
+
+ /**
+ * This method basically executes the exact same code as the parent class, though with
+ * a hook added, to allow extensions to add additional queries.
+ *
+ * @param string $offset Index offset, inclusive
+ * @param int $limit Exact query limit
+ * @param bool $descending Query direction, false for ascending, true for descending
+ * @return ResultWrapper
+ */
+ function reallyDoQuery( $offset, $limit, $descending ) {
+ $data = [ parent::reallyDoQuery( $offset, $limit, $descending ) ];
+
+ // This hook will allow extensions to add in additional queries, nearly
+ // identical to ContribsPager::reallyDoQuery.
+ Hooks::run(
+ 'DeletedContribsPager::reallyDoQuery',
+ [ &$data, $this, $offset, $limit, $descending ]
+ );
+
+ $result = [];
+
+ // loop all results and collect them in an array
+ foreach ( $data as $query ) {
+ foreach ( $query as $i => $row ) {
+ // use index column as key, allowing us to easily sort in PHP
+ $result[$row->{$this->getIndexField()} . "-$i"] = $row;
+ }
+ }
+
+ // sort results
+ if ( $descending ) {
+ ksort( $result );
+ } else {
+ krsort( $result );
+ }
+
+ // enforce limit
+ $result = array_slice( $result, 0, $limit );
+
+ // get rid of array keys
+ $result = array_values( $result );
+
+ return new FakeResultWrapper( $result );
+ }
+
+ function getUserCond() {
+ $condition = [];
+
+ $condition['ar_user_text'] = $this->target;
+ $index = 'usertext_timestamp';
+
+ return [ $index, $condition ];
+ }
+
+ function getIndexField() {
+ return 'ar_timestamp';
+ }
+
+ function getStartBody() {
+ return "\n";
+ }
+
+ function getEndBody() {
+ return " \n";
+ }
+
+ function getNavigationBar() {
+ if ( isset( $this->mNavigationBar ) ) {
+ return $this->mNavigationBar;
+ }
+
+ $linkTexts = [
+ 'prev' => $this->msg( 'pager-newer-n' )->numParams( $this->mLimit )->escaped(),
+ 'next' => $this->msg( 'pager-older-n' )->numParams( $this->mLimit )->escaped(),
+ 'first' => $this->msg( 'histlast' )->escaped(),
+ 'last' => $this->msg( 'histfirst' )->escaped()
+ ];
+
+ $pagingLinks = $this->getPagingLinks( $linkTexts );
+ $limitLinks = $this->getLimitLinks();
+ $lang = $this->getLanguage();
+ $limits = $lang->pipeList( $limitLinks );
+
+ $firstLast = $lang->pipeList( [ $pagingLinks['first'], $pagingLinks['last'] ] );
+ $firstLast = $this->msg( 'parentheses' )->rawParams( $firstLast )->escaped();
+ $prevNext = $this->msg( 'viewprevnext' )
+ ->rawParams(
+ $pagingLinks['prev'],
+ $pagingLinks['next'],
+ $limits
+ )->escaped();
+ $separator = $this->msg( 'word-separator' )->escaped();
+ $this->mNavigationBar = $firstLast . $separator . $prevNext;
+
+ return $this->mNavigationBar;
+ }
+
+ function getNamespaceCond() {
+ if ( $this->namespace !== '' ) {
+ return [ 'ar_namespace' => (int)$this->namespace ];
+ } else {
+ return [];
+ }
+ }
+
+ /**
+ * Generates each row in the contributions list.
+ *
+ * @todo This would probably look a lot nicer in a table.
+ * @param stdClass $row
+ * @return string
+ */
+ function formatRow( $row ) {
+ $ret = '';
+ $classes = [];
+
+ /*
+ * There may be more than just revision rows. To make sure that we'll only be processing
+ * revisions here, let's _try_ to build a revision out of our row (without displaying
+ * notices though) and then trying to grab data from the built object. If we succeed,
+ * we're definitely dealing with revision data and we may proceed, if not, we'll leave it
+ * to extensions to subscribe to the hook to parse the row.
+ */
+ MediaWiki\suppressWarnings();
+ try {
+ $rev = Revision::newFromArchiveRow( $row );
+ $validRevision = (bool)$rev->getId();
+ } catch ( Exception $e ) {
+ $validRevision = false;
+ }
+ MediaWiki\restoreWarnings();
+
+ if ( $validRevision ) {
+ $ret = $this->formatRevisionRow( $row );
+ }
+
+ // Let extensions add data
+ Hooks::run( 'DeletedContributionsLineEnding', [ $this, &$ret, $row, &$classes ] );
+
+ if ( $classes === [] && $ret === '' ) {
+ wfDebug( "Dropping Special:DeletedContribution row that could not be formatted\n" );
+ $ret = "\n";
+ } else {
+ $ret = Html::rawElement( 'li', [ 'class' => $classes ], $ret ) . "\n";
+ }
+
+ return $ret;
+ }
+
+ /**
+ * Generates each row in the contributions list for archive entries.
+ *
+ * Contributions which are marked "top" are currently on top of the history.
+ * For these contributions, a [rollback] link is shown for users with sysop
+ * privileges. The rollback link restores the most recent version that was not
+ * written by the target user.
+ *
+ * @todo This would probably look a lot nicer in a table.
+ * @param stdClass $row
+ * @return string
+ */
+ function formatRevisionRow( $row ) {
+ $page = Title::makeTitle( $row->ar_namespace, $row->ar_title );
+
+ $rev = new Revision( [
+ 'title' => $page,
+ 'id' => $row->ar_rev_id,
+ 'comment' => $row->ar_comment,
+ 'user' => $row->ar_user,
+ 'user_text' => $row->ar_user_text,
+ 'timestamp' => $row->ar_timestamp,
+ 'minor_edit' => $row->ar_minor_edit,
+ 'deleted' => $row->ar_deleted,
+ ] );
+
+ $undelete = SpecialPage::getTitleFor( 'Undelete' );
+
+ $logs = SpecialPage::getTitleFor( 'Log' );
+ $dellog = Linker::linkKnown(
+ $logs,
+ $this->messages['deletionlog'],
+ [],
+ [
+ 'type' => 'delete',
+ 'page' => $page->getPrefixedText()
+ ]
+ );
+
+ $reviewlink = Linker::linkKnown(
+ SpecialPage::getTitleFor( 'Undelete', $page->getPrefixedDBkey() ),
+ $this->messages['undeleteviewlink']
+ );
+
+ $user = $this->getUser();
+
+ if ( $user->isAllowed( 'deletedtext' ) ) {
+ $last = Linker::linkKnown(
+ $undelete,
+ $this->messages['diff'],
+ [],
+ [
+ 'target' => $page->getPrefixedText(),
+ 'timestamp' => $rev->getTimestamp(),
+ 'diff' => 'prev'
+ ]
+ );
+ } else {
+ $last = $this->messages['diff'];
+ }
+
+ $comment = Linker::revComment( $rev );
+ $date = $this->getLanguage()->userTimeAndDate( $rev->getTimestamp(), $user );
+ $date = htmlspecialchars( $date );
+
+ if ( !$user->isAllowed( 'undelete' ) || !$rev->userCan( Revision::DELETED_TEXT, $user ) ) {
+ $link = $date; // unusable link
+ } else {
+ $link = Linker::linkKnown(
+ $undelete,
+ $date,
+ [ 'class' => 'mw-changeslist-date' ],
+ [
+ 'target' => $page->getPrefixedText(),
+ 'timestamp' => $rev->getTimestamp()
+ ]
+ );
+ }
+ // Style deleted items
+ if ( $rev->isDeleted( Revision::DELETED_TEXT ) ) {
+ $link = '' . $link . ' ';
+ }
+
+ $pagelink = Linker::link(
+ $page,
+ null,
+ [ 'class' => 'mw-changeslist-title' ]
+ );
+
+ if ( $rev->isMinor() ) {
+ $mflag = ChangesList::flag( 'minor' );
+ } else {
+ $mflag = '';
+ }
+
+ // Revision delete link
+ $del = Linker::getRevDeleteLink( $user, $rev, $page );
+ if ( $del ) {
+ $del .= ' ';
+ }
+
+ $tools = Html::rawElement(
+ 'span',
+ [ 'class' => 'mw-deletedcontribs-tools' ],
+ $this->msg( 'parentheses' )->rawParams( $this->getLanguage()->pipeList(
+ [ $last, $dellog, $reviewlink ] ) )->escaped()
+ );
+
+ $separator = '. . ';
+ $ret = "{$del}{$link} {$tools} {$separator} {$mflag} {$pagelink} {$comment}";
+
+ # Denote if username is redacted for this edit
+ if ( $rev->isDeleted( Revision::DELETED_USER ) ) {
+ $ret .= " " . $this->msg( 'rev-deleted-user-contribs' )->escaped() . " ";
+ }
+
+ return $ret;
+ }
+
+ /**
+ * Get the Database object in use
+ *
+ * @return IDatabase
+ */
+ public function getDatabase() {
+ return $this->mDb;
+ }
+}
diff --git a/includes/specials/pagers/ImageListPager.php b/includes/specials/pagers/ImageListPager.php
new file mode 100644
index 0000000000..40706faaa0
--- /dev/null
+++ b/includes/specials/pagers/ImageListPager.php
@@ -0,0 +1,602 @@
+setContext( $context );
+ $this->mIncluding = $including;
+ $this->mShowAll = $showAll;
+
+ if ( $userName !== null && $userName !== '' ) {
+ $nt = Title::makeTitleSafe( NS_USER, $userName );
+ if ( is_null( $nt ) ) {
+ $this->outputUserDoesNotExist( $userName );
+ } else {
+ $this->mUserName = $nt->getText();
+ $user = User::newFromName( $this->mUserName, false );
+ if ( $user ) {
+ $this->mUser = $user;
+ }
+ if ( !$user || ( $user->isAnon() && !User::isIP( $user->getName() ) ) ) {
+ $this->outputUserDoesNotExist( $userName );
+ }
+ }
+ }
+
+ if ( $search !== '' && !$this->getConfig()->get( 'MiserMode' ) ) {
+ $this->mSearch = $search;
+ $nt = Title::newFromText( $this->mSearch );
+
+ if ( $nt ) {
+ $dbr = wfGetDB( DB_SLAVE );
+ $this->mQueryConds[] = 'LOWER(img_name)' .
+ $dbr->buildLike( $dbr->anyString(),
+ strtolower( $nt->getDBkey() ), $dbr->anyString() );
+ }
+ }
+
+ if ( !$including ) {
+ if ( $this->getRequest()->getText( 'sort', 'img_date' ) == 'img_date' ) {
+ $this->mDefaultDirection = IndexPager::DIR_DESCENDING;
+ } else {
+ $this->mDefaultDirection = IndexPager::DIR_ASCENDING;
+ }
+ } else {
+ $this->mDefaultDirection = IndexPager::DIR_DESCENDING;
+ }
+
+ parent::__construct( $context );
+ }
+
+ /**
+ * Get the user relevant to the ImageList
+ *
+ * @return User|null
+ */
+ function getRelevantUser() {
+ return $this->mUser;
+ }
+
+ /**
+ * Add a message to the output stating that the user doesn't exist
+ *
+ * @param string $userName Unescaped user name
+ */
+ protected function outputUserDoesNotExist( $userName ) {
+ $this->getOutput()->wrapWikiMsg(
+ "\n$1\n
",
+ [
+ 'listfiles-userdoesnotexist',
+ wfEscapeWikiText( $userName ),
+ ]
+ );
+ }
+
+ /**
+ * Build the where clause of the query.
+ *
+ * Replaces the older mQueryConds member variable.
+ * @param string $table Either "image" or "oldimage"
+ * @return array The query conditions.
+ */
+ protected function buildQueryConds( $table ) {
+ $prefix = $table === 'image' ? 'img' : 'oi';
+ $conds = [];
+
+ if ( !is_null( $this->mUserName ) ) {
+ $conds[$prefix . '_user_text'] = $this->mUserName;
+ }
+
+ if ( $this->mSearch !== '' ) {
+ $nt = Title::newFromText( $this->mSearch );
+ if ( $nt ) {
+ $dbr = wfGetDB( DB_SLAVE );
+ $conds[] = 'LOWER(' . $prefix . '_name)' .
+ $dbr->buildLike( $dbr->anyString(),
+ strtolower( $nt->getDBkey() ), $dbr->anyString() );
+ }
+ }
+
+ if ( $table === 'oldimage' ) {
+ // Don't want to deal with revdel.
+ // Future fixme: Show partial information as appropriate.
+ // Would have to be careful about filtering by username when username is deleted.
+ $conds['oi_deleted'] = 0;
+ }
+
+ // Add mQueryConds in case anyone was subclassing and using the old variable.
+ return $conds + $this->mQueryConds;
+ }
+
+ /**
+ * @return array
+ */
+ function getFieldNames() {
+ if ( !$this->mFieldNames ) {
+ $this->mFieldNames = [
+ 'img_timestamp' => $this->msg( 'listfiles_date' )->text(),
+ 'img_name' => $this->msg( 'listfiles_name' )->text(),
+ 'thumb' => $this->msg( 'listfiles_thumb' )->text(),
+ 'img_size' => $this->msg( 'listfiles_size' )->text(),
+ ];
+ if ( is_null( $this->mUserName ) ) {
+ // Do not show username if filtering by username
+ $this->mFieldNames['img_user_text'] = $this->msg( 'listfiles_user' )->text();
+ }
+ // img_description down here, in order so that its still after the username field.
+ $this->mFieldNames['img_description'] = $this->msg( 'listfiles_description' )->text();
+
+ if ( !$this->getConfig()->get( 'MiserMode' ) && !$this->mShowAll ) {
+ $this->mFieldNames['count'] = $this->msg( 'listfiles_count' )->text();
+ }
+ if ( $this->mShowAll ) {
+ $this->mFieldNames['top'] = $this->msg( 'listfiles-latestversion' )->text();
+ }
+ }
+
+ return $this->mFieldNames;
+ }
+
+ function isFieldSortable( $field ) {
+ if ( $this->mIncluding ) {
+ return false;
+ }
+ $sortable = [ 'img_timestamp', 'img_name', 'img_size' ];
+ /* For reference, the indicies we can use for sorting are:
+ * On the image table: img_usertext_timestamp, img_size, img_timestamp
+ * On oldimage: oi_usertext_timestamp, oi_name_timestamp
+ *
+ * In particular that means we cannot sort by timestamp when not filtering
+ * by user and including old images in the results. Which is sad.
+ */
+ if ( $this->getConfig()->get( 'MiserMode' ) && !is_null( $this->mUserName ) ) {
+ // If we're sorting by user, the index only supports sorting by time.
+ if ( $field === 'img_timestamp' ) {
+ return true;
+ } else {
+ return false;
+ }
+ } elseif ( $this->getConfig()->get( 'MiserMode' )
+ && $this->mShowAll /* && mUserName === null */
+ ) {
+ // no oi_timestamp index, so only alphabetical sorting in this case.
+ if ( $field === 'img_name' ) {
+ return true;
+ } else {
+ return false;
+ }
+ }
+
+ return in_array( $field, $sortable );
+ }
+
+ function getQueryInfo() {
+ // Hacky Hacky Hacky - I want to get query info
+ // for two different tables, without reimplementing
+ // the pager class.
+ $qi = $this->getQueryInfoReal( $this->mTableName );
+
+ return $qi;
+ }
+
+ /**
+ * Actually get the query info.
+ *
+ * This is to allow displaying both stuff from image and oldimage table.
+ *
+ * This is a bit hacky.
+ *
+ * @param string $table Either 'image' or 'oldimage'
+ * @return array Query info
+ */
+ protected function getQueryInfoReal( $table ) {
+ $prefix = $table === 'oldimage' ? 'oi' : 'img';
+
+ $tables = [ $table ];
+ $fields = array_keys( $this->getFieldNames() );
+
+ if ( $table === 'oldimage' ) {
+ foreach ( $fields as $id => &$field ) {
+ if ( substr( $field, 0, 4 ) !== 'img_' ) {
+ continue;
+ }
+ $field = $prefix . substr( $field, 3 ) . ' AS ' . $field;
+ }
+ $fields[array_search( 'top', $fields )] = "'no' AS top";
+ } else {
+ if ( $this->mShowAll ) {
+ $fields[array_search( 'top', $fields )] = "'yes' AS top";
+ }
+ }
+ $fields[] = $prefix . '_user AS img_user';
+ $fields[array_search( 'thumb', $fields )] = $prefix . '_name AS thumb';
+
+ $options = $join_conds = [];
+
+ # Depends on $wgMiserMode
+ # Will also not happen if mShowAll is true.
+ if ( isset( $this->mFieldNames['count'] ) ) {
+ $tables[] = 'oldimage';
+
+ # Need to rewrite this one
+ foreach ( $fields as &$field ) {
+ if ( $field == 'count' ) {
+ $field = 'COUNT(oi_archive_name) AS count';
+ }
+ }
+ unset( $field );
+
+ $dbr = wfGetDB( DB_SLAVE );
+ if ( $dbr->implicitGroupby() ) {
+ $options = [ 'GROUP BY' => 'img_name' ];
+ } else {
+ $columnlist = preg_grep( '/^img/', array_keys( $this->getFieldNames() ) );
+ $options = [ 'GROUP BY' => array_merge( [ 'img_user' ], $columnlist ) ];
+ }
+ $join_conds = [ 'oldimage' => [ 'LEFT JOIN', 'oi_name = img_name' ] ];
+ }
+
+ return [
+ 'tables' => $tables,
+ 'fields' => $fields,
+ 'conds' => $this->buildQueryConds( $table ),
+ 'options' => $options,
+ 'join_conds' => $join_conds
+ ];
+ }
+
+ /**
+ * Override reallyDoQuery to mix together two queries.
+ *
+ * @note $asc is named $descending in IndexPager base class. However
+ * it is true when the order is ascending, and false when the order
+ * is descending, so I renamed it to $asc here.
+ * @param int $offset
+ * @param int $limit
+ * @param bool $asc
+ * @return array
+ * @throws MWException
+ */
+ function reallyDoQuery( $offset, $limit, $asc ) {
+ $prevTableName = $this->mTableName;
+ $this->mTableName = 'image';
+ list( $tables, $fields, $conds, $fname, $options, $join_conds ) =
+ $this->buildQueryInfo( $offset, $limit, $asc );
+ $imageRes = $this->mDb->select( $tables, $fields, $conds, $fname, $options, $join_conds );
+ $this->mTableName = $prevTableName;
+
+ if ( !$this->mShowAll ) {
+ return $imageRes;
+ }
+
+ $this->mTableName = 'oldimage';
+
+ # Hacky...
+ $oldIndex = $this->mIndexField;
+ if ( substr( $this->mIndexField, 0, 4 ) !== 'img_' ) {
+ throw new MWException( "Expected to be sorting on an image table field" );
+ }
+ $this->mIndexField = 'oi_' . substr( $this->mIndexField, 4 );
+
+ list( $tables, $fields, $conds, $fname, $options, $join_conds ) =
+ $this->buildQueryInfo( $offset, $limit, $asc );
+ $oldimageRes = $this->mDb->select( $tables, $fields, $conds, $fname, $options, $join_conds );
+
+ $this->mTableName = $prevTableName;
+ $this->mIndexField = $oldIndex;
+
+ return $this->combineResult( $imageRes, $oldimageRes, $limit, $asc );
+ }
+
+ /**
+ * Combine results from 2 tables.
+ *
+ * Note: This will throw away some results
+ *
+ * @param ResultWrapper $res1
+ * @param ResultWrapper $res2
+ * @param int $limit
+ * @param bool $ascending See note about $asc in $this->reallyDoQuery
+ * @return FakeResultWrapper $res1 and $res2 combined
+ */
+ protected function combineResult( $res1, $res2, $limit, $ascending ) {
+ $res1->rewind();
+ $res2->rewind();
+ $topRes1 = $res1->next();
+ $topRes2 = $res2->next();
+ $resultArray = [];
+ for ( $i = 0; $i < $limit && $topRes1 && $topRes2; $i++ ) {
+ if ( strcmp( $topRes1->{$this->mIndexField}, $topRes2->{$this->mIndexField} ) > 0 ) {
+ if ( !$ascending ) {
+ $resultArray[] = $topRes1;
+ $topRes1 = $res1->next();
+ } else {
+ $resultArray[] = $topRes2;
+ $topRes2 = $res2->next();
+ }
+ } else {
+ if ( !$ascending ) {
+ $resultArray[] = $topRes2;
+ $topRes2 = $res2->next();
+ } else {
+ $resultArray[] = $topRes1;
+ $topRes1 = $res1->next();
+ }
+ }
+ }
+
+ // @codingStandardsIgnoreStart Squiz.WhiteSpace.SemicolonSpacing.Incorrect
+ for ( ; $i < $limit && $topRes1; $i++ ) {
+ // @codingStandardsIgnoreEnd
+ $resultArray[] = $topRes1;
+ $topRes1 = $res1->next();
+ }
+
+ // @codingStandardsIgnoreStart Squiz.WhiteSpace.SemicolonSpacing.Incorrect
+ for ( ; $i < $limit && $topRes2; $i++ ) {
+ // @codingStandardsIgnoreEnd
+ $resultArray[] = $topRes2;
+ $topRes2 = $res2->next();
+ }
+
+ return new FakeResultWrapper( $resultArray );
+ }
+
+ function getDefaultSort() {
+ if ( $this->mShowAll && $this->getConfig()->get( 'MiserMode' ) && is_null( $this->mUserName ) ) {
+ // Unfortunately no index on oi_timestamp.
+ return 'img_name';
+ } else {
+ return 'img_timestamp';
+ }
+ }
+
+ function doBatchLookups() {
+ $userIds = [];
+ $this->mResult->seek( 0 );
+ foreach ( $this->mResult as $row ) {
+ $userIds[] = $row->img_user;
+ }
+ # Do a link batch query for names and userpages
+ UserCache::singleton()->doQuery( $userIds, [ 'userpage' ], __METHOD__ );
+ }
+
+ /**
+ * @param string $field
+ * @param string $value
+ * @return Message|string|int The return type depends on the value of $field:
+ * - thumb: string
+ * - img_timestamp: string
+ * - img_name: string
+ * - img_user_text: string
+ * - img_size: string
+ * - img_description: string
+ * - count: int
+ * - top: Message
+ * @throws MWException
+ */
+ function formatValue( $field, $value ) {
+ switch ( $field ) {
+ case 'thumb':
+ $opt = [ 'time' => wfTimestamp( TS_MW, $this->mCurrentRow->img_timestamp ) ];
+ $file = RepoGroup::singleton()->getLocalRepo()->findFile( $value, $opt );
+ // If statement for paranoia
+ if ( $file ) {
+ $thumb = $file->transform( [ 'width' => 180, 'height' => 360 ] );
+
+ return $thumb->toHtml( [ 'desc-link' => true ] );
+ } else {
+ return htmlspecialchars( $value );
+ }
+ case 'img_timestamp':
+ // We may want to make this a link to the "old" version when displaying old files
+ return htmlspecialchars( $this->getLanguage()->userTimeAndDate( $value, $this->getUser() ) );
+ case 'img_name':
+ static $imgfile = null;
+ if ( $imgfile === null ) {
+ $imgfile = $this->msg( 'imgfile' )->text();
+ }
+
+ // Weird files can maybe exist? Bug 22227
+ $filePage = Title::makeTitleSafe( NS_FILE, $value );
+ if ( $filePage ) {
+ $link = Linker::linkKnown(
+ $filePage,
+ htmlspecialchars( $filePage->getText() )
+ );
+ $download = Xml::element( 'a',
+ [ 'href' => wfLocalFile( $filePage )->getUrl() ],
+ $imgfile
+ );
+ $download = $this->msg( 'parentheses' )->rawParams( $download )->escaped();
+
+ // Add delete links if allowed
+ // From https://github.com/Wikia/app/pull/3859
+ if ( $filePage->userCan( 'delete', $this->getUser() ) ) {
+ $deleteMsg = $this->msg( 'listfiles-delete' )->escaped();
+
+ $delete = Linker::linkKnown(
+ $filePage, $deleteMsg, [], [ 'action' => 'delete' ]
+ );
+ $delete = $this->msg( 'parentheses' )->rawParams( $delete )->escaped();
+
+ return "$link $download $delete";
+ }
+
+ return "$link $download";
+ } else {
+ return htmlspecialchars( $value );
+ }
+ case 'img_user_text':
+ if ( $this->mCurrentRow->img_user ) {
+ $name = User::whoIs( $this->mCurrentRow->img_user );
+ $link = Linker::link(
+ Title::makeTitle( NS_USER, $name ),
+ htmlspecialchars( $name )
+ );
+ } else {
+ $link = htmlspecialchars( $value );
+ }
+
+ return $link;
+ case 'img_size':
+ return htmlspecialchars( $this->getLanguage()->formatSize( $value ) );
+ case 'img_description':
+ return Linker::formatComment( $value );
+ case 'count':
+ return $this->getLanguage()->formatNum( intval( $value ) + 1 );
+ case 'top':
+ // Messages: listfiles-latestversion-yes, listfiles-latestversion-no
+ return $this->msg( 'listfiles-latestversion-' . $value );
+ default:
+ throw new MWException( "Unknown field '$field'" );
+ }
+ }
+
+ function getForm() {
+ $fields = [];
+ $fields['limit'] = [
+ 'type' => 'select',
+ 'name' => 'limit',
+ 'label-message' => 'table_pager_limit_label',
+ 'options' => $this->getLimitSelectList(),
+ 'default' => $this->mLimit,
+ ];
+
+ if ( !$this->getConfig()->get( 'MiserMode' ) ) {
+ $fields['ilsearch'] = [
+ 'type' => 'text',
+ 'name' => 'ilsearch',
+ 'id' => 'mw-ilsearch',
+ 'label-message' => 'listfiles_search_for',
+ 'default' => $this->mSearch,
+ 'size' => '40',
+ 'maxlength' => '255',
+ ];
+ }
+
+ $this->getOutput()->addModules( 'mediawiki.userSuggest' );
+ $fields['user'] = [
+ 'type' => 'text',
+ 'name' => 'user',
+ 'id' => 'mw-listfiles-user',
+ 'label-message' => 'username',
+ 'default' => $this->mUserName,
+ 'size' => '40',
+ 'maxlength' => '255',
+ 'cssclass' => 'mw-autocomplete-user', // used by mediawiki.userSuggest
+ ];
+
+ $fields['ilshowall'] = [
+ 'type' => 'check',
+ 'name' => 'ilshowall',
+ 'id' => 'mw-listfiles-show-all',
+ 'label-message' => 'listfiles-show-all',
+ 'default' => $this->mShowAll,
+ ];
+
+ $query = $this->getRequest()->getQueryValues();
+ unset( $query['title'] );
+ unset( $query['limit'] );
+ unset( $query['ilsearch'] );
+ unset( $query['ilshowall'] );
+ unset( $query['user'] );
+
+ $form = new HTMLForm( $fields, $this->getContext() );
+
+ $form->setMethod( 'get' );
+ $form->setTitle( $this->getTitle() );
+ $form->setId( 'mw-listfiles-form' );
+ $form->setWrapperLegendMsg( 'listfiles' );
+ $form->setSubmitTextMsg( 'table_pager_limit_submit' );
+ $form->addHiddenFields( $query );
+
+ $form->prepareForm();
+ $form->displayForm( '' );
+ }
+
+ protected function getTableClass() {
+ return parent::getTableClass() . ' listfiles';
+ }
+
+ protected function getNavClass() {
+ return parent::getNavClass() . ' listfiles_nav';
+ }
+
+ protected function getSortHeaderClass() {
+ return parent::getSortHeaderClass() . ' listfiles_sort';
+ }
+
+ function getPagingQueries() {
+ $queries = parent::getPagingQueries();
+ if ( !is_null( $this->mUserName ) ) {
+ # Append the username to the query string
+ foreach ( $queries as &$query ) {
+ if ( $query !== false ) {
+ $query['user'] = $this->mUserName;
+ }
+ }
+ }
+
+ return $queries;
+ }
+
+ function getDefaultQuery() {
+ $queries = parent::getDefaultQuery();
+ if ( !isset( $queries['user'] ) && !is_null( $this->mUserName ) ) {
+ $queries['user'] = $this->mUserName;
+ }
+
+ return $queries;
+ }
+
+ function getTitle() {
+ return SpecialPage::getTitleFor( 'Listfiles' );
+ }
+}
diff --git a/includes/specials/pagers/MergeHistoryPager.php b/includes/specials/pagers/MergeHistoryPager.php
new file mode 100644
index 0000000000..0b9587c422
--- /dev/null
+++ b/includes/specials/pagers/MergeHistoryPager.php
@@ -0,0 +1,99 @@
+mForm = $form;
+ $this->mConds = $conds;
+ $this->title = $source;
+ $this->articleID = $source->getArticleID();
+
+ $dbr = wfGetDB( DB_SLAVE );
+ $maxtimestamp = $dbr->selectField(
+ 'revision',
+ 'MIN(rev_timestamp)',
+ [ 'rev_page' => $dest->getArticleID() ],
+ __METHOD__
+ );
+ $this->maxTimestamp = $maxtimestamp;
+
+ parent::__construct( $form->getContext() );
+ }
+
+ function getStartBody() {
+ # Do a link batch query
+ $this->mResult->seek( 0 );
+ $batch = new LinkBatch();
+ # Give some pointers to make (last) links
+ $this->mForm->prevId = [];
+ foreach ( $this->mResult as $row ) {
+ $batch->addObj( Title::makeTitleSafe( NS_USER, $row->user_name ) );
+ $batch->addObj( Title::makeTitleSafe( NS_USER_TALK, $row->user_name ) );
+
+ $rev_id = isset( $rev_id ) ? $rev_id : $row->rev_id;
+ if ( $rev_id > $row->rev_id ) {
+ $this->mForm->prevId[$rev_id] = $row->rev_id;
+ } elseif ( $rev_id < $row->rev_id ) {
+ $this->mForm->prevId[$row->rev_id] = $rev_id;
+ }
+
+ $rev_id = $row->rev_id;
+ }
+
+ $batch->execute();
+ $this->mResult->seek( 0 );
+
+ return '';
+ }
+
+ function formatRow( $row ) {
+ return $this->mForm->formatRevisionRow( $row );
+ }
+
+ function getQueryInfo() {
+ $conds = $this->mConds;
+ $conds['rev_page'] = $this->articleID;
+ $conds[] = "rev_timestamp < " . $this->mDb->addQuotes( $this->maxTimestamp );
+
+ return [
+ 'tables' => [ 'revision', 'page', 'user' ],
+ 'fields' => array_merge( Revision::selectFields(), Revision::selectUserFields() ),
+ 'conds' => $conds,
+ 'join_conds' => [
+ 'page' => Revision::pageJoinCond(),
+ 'user' => Revision::userJoinCond() ]
+ ];
+ }
+
+ function getIndexField() {
+ return 'rev_timestamp';
+ }
+}
diff --git a/includes/specials/pagers/NewFilesPager.php b/includes/specials/pagers/NewFilesPager.php
new file mode 100644
index 0000000000..ae5773617c
--- /dev/null
+++ b/includes/specials/pagers/NewFilesPager.php
@@ -0,0 +1,207 @@
+like = $context->getRequest()->getText( 'like' );
+ $this->showBots = $context->getRequest()->getBool( 'showbots', 0 );
+ $this->hidePatrolled = $context->getRequest()->getBool( 'hidepatrolled', 0 );
+ if ( is_numeric( $par ) ) {
+ $this->setLimit( $par );
+ }
+
+ parent::__construct( $context );
+ }
+
+ function getQueryInfo() {
+ $conds = $jconds = [];
+ $tables = [ 'image' ];
+ $fields = [ 'img_name', 'img_user', 'img_timestamp' ];
+ $options = [];
+
+ if ( !$this->showBots ) {
+ $groupsWithBotPermission = User::getGroupsWithPermission( 'bot' );
+
+ if ( count( $groupsWithBotPermission ) ) {
+ $tables[] = 'user_groups';
+ $conds[] = 'ug_group IS NULL';
+ $jconds['user_groups'] = [
+ 'LEFT JOIN',
+ [
+ 'ug_group' => $groupsWithBotPermission,
+ 'ug_user = img_user'
+ ]
+ ];
+ }
+ }
+
+ if ( $this->hidePatrolled ) {
+ $tables[] = 'recentchanges';
+ $conds['rc_type'] = RC_LOG;
+ $conds['rc_log_type'] = 'upload';
+ $conds['rc_patrolled'] = 0;
+ $conds['rc_namespace'] = NS_FILE;
+ $jconds['recentchanges'] = [
+ 'INNER JOIN',
+ [
+ 'rc_title = img_name',
+ 'rc_user = img_user',
+ 'rc_timestamp = img_timestamp'
+ ]
+ ];
+ // We're ordering by img_timestamp, so we have to make sure MariaDB queries `image` first.
+ // It sometimes decides to query `recentchanges` first and filesort the result set later
+ // to get the right ordering. T124205 / https://mariadb.atlassian.net/browse/MDEV-8880
+ $options[] = 'STRAIGHT_JOIN';
+ }
+
+ if ( !$this->getConfig()->get( 'MiserMode' ) && $this->like !== null ) {
+ $dbr = wfGetDB( DB_SLAVE );
+ $likeObj = Title::newFromText( $this->like );
+ if ( $likeObj instanceof Title ) {
+ $like = $dbr->buildLike(
+ $dbr->anyString(),
+ strtolower( $likeObj->getDBkey() ),
+ $dbr->anyString()
+ );
+ $conds[] = "LOWER(img_name) $like";
+ }
+ }
+
+ $query = [
+ 'tables' => $tables,
+ 'fields' => $fields,
+ 'join_conds' => $jconds,
+ 'conds' => $conds,
+ 'options' => $options,
+ ];
+
+ return $query;
+ }
+
+ function getIndexField() {
+ return 'img_timestamp';
+ }
+
+ function getStartBody() {
+ if ( !$this->gallery ) {
+ // Note that null for mode is taken to mean use default.
+ $mode = $this->getRequest()->getVal( 'gallerymode', null );
+ try {
+ $this->gallery = ImageGalleryBase::factory( $mode, $this->getContext() );
+ } catch ( Exception $e ) {
+ // User specified something invalid, fallback to default.
+ $this->gallery = ImageGalleryBase::factory( false, $this->getContext() );
+ }
+ }
+
+ return '';
+ }
+
+ function getEndBody() {
+ return $this->gallery->toHTML();
+ }
+
+ function formatRow( $row ) {
+ $name = $row->img_name;
+ $user = User::newFromId( $row->img_user );
+
+ $title = Title::makeTitle( NS_FILE, $name );
+ $ul = Linker::link( $user->getUserPage(), $user->getName() );
+ $time = $this->getLanguage()->userTimeAndDate( $row->img_timestamp, $this->getUser() );
+
+ $this->gallery->add(
+ $title,
+ "$ul \n"
+ . htmlspecialchars( $time )
+ . " \n"
+ );
+ }
+
+ function getForm() {
+ $fields = [
+ 'like' => [
+ 'type' => 'text',
+ 'label-message' => 'newimages-label',
+ 'name' => 'like',
+ ],
+ 'showbots' => [
+ 'type' => 'check',
+ 'label-message' => 'newimages-showbots',
+ 'name' => 'showbots',
+ ],
+ 'hidepatrolled' => [
+ 'type' => 'check',
+ 'label-message' => 'newimages-hidepatrolled',
+ 'name' => 'hidepatrolled',
+ ],
+ 'limit' => [
+ 'type' => 'hidden',
+ 'default' => $this->mLimit,
+ 'name' => 'limit',
+ ],
+ 'offset' => [
+ 'type' => 'hidden',
+ 'default' => $this->getRequest()->getText( 'offset' ),
+ 'name' => 'offset',
+ ],
+ ];
+
+ if ( $this->getConfig()->get( 'MiserMode' ) ) {
+ unset( $fields['like'] );
+ }
+
+ if ( !$this->getUser()->useFilePatrol() ) {
+ unset( $fields['hidepatrolled'] );
+ }
+
+ $context = new DerivativeContext( $this->getContext() );
+ $context->setTitle( $this->getTitle() ); // Remove subpage
+ $form = new HTMLForm( $fields, $context );
+
+ $form->setSubmitTextMsg( 'ilsubmit' );
+ $form->setSubmitProgressive();
+
+ $form->setMethod( 'get' );
+ $form->setWrapperLegendMsg( 'newimages-legend' );
+
+ return $form;
+ }
+}
diff --git a/includes/specials/pagers/NewPagesPager.php b/includes/specials/pagers/NewPagesPager.php
new file mode 100644
index 0000000000..2d39f99dc7
--- /dev/null
+++ b/includes/specials/pagers/NewPagesPager.php
@@ -0,0 +1,148 @@
+getContext() );
+ $this->mForm = $form;
+ $this->opts = $opts;
+ }
+
+ function getQueryInfo() {
+ $conds = [];
+ $conds['rc_new'] = 1;
+
+ $namespace = $this->opts->getValue( 'namespace' );
+ $namespace = ( $namespace === 'all' ) ? false : intval( $namespace );
+
+ $username = $this->opts->getValue( 'username' );
+ $user = Title::makeTitleSafe( NS_USER, $username );
+
+ $rcIndexes = [];
+
+ if ( $namespace !== false ) {
+ if ( $this->opts->getValue( 'invert' ) ) {
+ $conds[] = 'rc_namespace != ' . $this->mDb->addQuotes( $namespace );
+ } else {
+ $conds['rc_namespace'] = $namespace;
+ }
+ }
+
+ if ( $user ) {
+ $conds['rc_user_text'] = $user->getText();
+ $rcIndexes = 'rc_user_text';
+ } elseif ( User::groupHasPermission( '*', 'createpage' ) &&
+ $this->opts->getValue( 'hideliu' )
+ ) {
+ # If anons cannot make new pages, don't "exclude logged in users"!
+ $conds['rc_user'] = 0;
+ }
+
+ # If this user cannot see patrolled edits or they are off, don't do dumb queries!
+ if ( $this->opts->getValue( 'hidepatrolled' ) && $this->getUser()->useNPPatrol() ) {
+ $conds['rc_patrolled'] = 0;
+ }
+
+ if ( $this->opts->getValue( 'hidebots' ) ) {
+ $conds['rc_bot'] = 0;
+ }
+
+ if ( $this->opts->getValue( 'hideredirs' ) ) {
+ $conds['page_is_redirect'] = 0;
+ }
+
+ // Allow changes to the New Pages query
+ $tables = [ 'recentchanges', 'page' ];
+ $fields = [
+ 'rc_namespace', 'rc_title', 'rc_cur_id', 'rc_user', 'rc_user_text',
+ 'rc_comment', 'rc_timestamp', 'rc_patrolled', 'rc_id', 'rc_deleted',
+ 'length' => 'page_len', 'rev_id' => 'page_latest', 'rc_this_oldid',
+ 'page_namespace', 'page_title'
+ ];
+ $join_conds = [ 'page' => [ 'INNER JOIN', 'page_id=rc_cur_id' ] ];
+
+ Hooks::run( 'SpecialNewpagesConditions',
+ [ &$this, $this->opts, &$conds, &$tables, &$fields, &$join_conds ] );
+
+ $options = [];
+
+ if ( $rcIndexes ) {
+ $options = [ 'USE INDEX' => [ 'recentchanges' => $rcIndexes ] ];
+ }
+
+ $info = [
+ 'tables' => $tables,
+ 'fields' => $fields,
+ 'conds' => $conds,
+ 'options' => $options,
+ 'join_conds' => $join_conds
+ ];
+
+ // Modify query for tags
+ ChangeTags::modifyDisplayQuery(
+ $info['tables'],
+ $info['fields'],
+ $info['conds'],
+ $info['join_conds'],
+ $info['options'],
+ $this->opts['tagfilter']
+ );
+
+ return $info;
+ }
+
+ function getIndexField() {
+ return 'rc_timestamp';
+ }
+
+ function formatRow( $row ) {
+ return $this->mForm->formatRow( $row );
+ }
+
+ function getStartBody() {
+ # Do a batch existence check on pages
+ $linkBatch = new LinkBatch();
+ foreach ( $this->mResult as $row ) {
+ $linkBatch->add( NS_USER, $row->rc_user_text );
+ $linkBatch->add( NS_USER_TALK, $row->rc_user_text );
+ $linkBatch->add( $row->page_namespace, $row->page_title );
+ }
+ $linkBatch->execute();
+
+ return '';
+ }
+
+ function getEndBody() {
+ return ' ';
+ }
+}
diff --git a/includes/specials/pagers/ProtectedTitlesPager.php b/includes/specials/pagers/ProtectedTitlesPager.php
new file mode 100644
index 0000000000..8f172f8b55
--- /dev/null
+++ b/includes/specials/pagers/ProtectedTitlesPager.php
@@ -0,0 +1,91 @@
+mForm = $form;
+ $this->mConds = $conds;
+ $this->level = $level;
+ $this->namespace = $namespace;
+ $this->size = intval( $size );
+ parent::__construct( $form->getContext() );
+ }
+
+ function getStartBody() {
+ # Do a link batch query
+ $this->mResult->seek( 0 );
+ $lb = new LinkBatch;
+
+ foreach ( $this->mResult as $row ) {
+ $lb->add( $row->pt_namespace, $row->pt_title );
+ }
+
+ $lb->execute();
+
+ return '';
+ }
+
+ /**
+ * @return Title
+ */
+ function getTitle() {
+ return $this->mForm->getTitle();
+ }
+
+ function formatRow( $row ) {
+ return $this->mForm->formatRow( $row );
+ }
+
+ /**
+ * @return array
+ */
+ function getQueryInfo() {
+ $conds = $this->mConds;
+ $conds[] = 'pt_expiry > ' . $this->mDb->addQuotes( $this->mDb->timestamp() ) .
+ ' OR pt_expiry IS NULL';
+ if ( $this->level ) {
+ $conds['pt_create_perm'] = $this->level;
+ }
+
+ if ( !is_null( $this->namespace ) ) {
+ $conds[] = 'pt_namespace=' . $this->mDb->addQuotes( $this->namespace );
+ }
+
+ return [
+ 'tables' => 'protected_titles',
+ 'fields' => [ 'pt_namespace', 'pt_title', 'pt_create_perm',
+ 'pt_expiry', 'pt_timestamp' ],
+ 'conds' => $conds
+ ];
+ }
+
+ function getIndexField() {
+ return 'pt_timestamp';
+ }
+}
diff --git a/includes/specials/pagers/UsersPager.php b/includes/specials/pagers/UsersPager.php
new file mode 100644
index 0000000000..7b058c19eb
--- /dev/null
+++ b/includes/specials/pagers/UsersPager.php
@@ -0,0 +1,395 @@
+
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @ingroup Pager
+ */
+
+/**
+ * This class is used to get a list of user. The ones with specials
+ * rights (sysop, bureaucrat, developer) will have them displayed
+ * next to their names.
+ *
+ * @ingroup Pager
+ */
+class UsersPager extends AlphabeticPager {
+
+ /**
+ * @var array A array with user ids as key and a array of groups as value
+ */
+ protected $userGroupCache;
+
+ /**
+ * @param IContextSource $context
+ * @param array $par (Default null)
+ * @param bool $including Whether this page is being transcluded in
+ * another page
+ */
+ function __construct( IContextSource $context = null, $par = null, $including = null ) {
+ if ( $context ) {
+ $this->setContext( $context );
+ }
+
+ $request = $this->getRequest();
+ $par = ( $par !== null ) ? $par : '';
+ $parms = explode( '/', $par );
+ $symsForAll = [ '*', 'user' ];
+
+ if ( $parms[0] != '' &&
+ ( in_array( $par, User::getAllGroups() ) || in_array( $par, $symsForAll ) )
+ ) {
+ $this->requestedGroup = $par;
+ $un = $request->getText( 'username' );
+ } elseif ( count( $parms ) == 2 ) {
+ $this->requestedGroup = $parms[0];
+ $un = $parms[1];
+ } else {
+ $this->requestedGroup = $request->getVal( 'group' );
+ $un = ( $par != '' ) ? $par : $request->getText( 'username' );
+ }
+
+ if ( in_array( $this->requestedGroup, $symsForAll ) ) {
+ $this->requestedGroup = '';
+ }
+ $this->editsOnly = $request->getBool( 'editsOnly' );
+ $this->creationSort = $request->getBool( 'creationSort' );
+ $this->including = $including;
+ $this->mDefaultDirection = $request->getBool( 'desc' )
+ ? IndexPager::DIR_DESCENDING
+ : IndexPager::DIR_ASCENDING;
+
+ $this->requestedUser = '';
+
+ if ( $un != '' ) {
+ $username = Title::makeTitleSafe( NS_USER, $un );
+
+ if ( !is_null( $username ) ) {
+ $this->requestedUser = $username->getText();
+ }
+ }
+
+ parent::__construct();
+ }
+
+ /**
+ * @return string
+ */
+ function getIndexField() {
+ return $this->creationSort ? 'user_id' : 'user_name';
+ }
+
+ /**
+ * @return array
+ */
+ function getQueryInfo() {
+ $dbr = wfGetDB( DB_SLAVE );
+ $conds = [];
+
+ // Don't show hidden names
+ if ( !$this->getUser()->isAllowed( 'hideuser' ) ) {
+ $conds[] = 'ipb_deleted IS NULL OR ipb_deleted = 0';
+ }
+
+ $options = [];
+
+ if ( $this->requestedGroup != '' ) {
+ $conds['ug_group'] = $this->requestedGroup;
+ }
+
+ if ( $this->requestedUser != '' ) {
+ # Sorted either by account creation or name
+ if ( $this->creationSort ) {
+ $conds[] = 'user_id >= ' . intval( User::idFromName( $this->requestedUser ) );
+ } else {
+ $conds[] = 'user_name >= ' . $dbr->addQuotes( $this->requestedUser );
+ }
+ }
+
+ if ( $this->editsOnly ) {
+ $conds[] = 'user_editcount > 0';
+ }
+
+ $options['GROUP BY'] = $this->creationSort ? 'user_id' : 'user_name';
+
+ $query = [
+ 'tables' => [ 'user', 'user_groups', 'ipblocks' ],
+ 'fields' => [
+ 'user_name' => $this->creationSort ? 'MAX(user_name)' : 'user_name',
+ 'user_id' => $this->creationSort ? 'user_id' : 'MAX(user_id)',
+ 'edits' => 'MAX(user_editcount)',
+ 'creation' => 'MIN(user_registration)',
+ 'ipb_deleted' => 'MAX(ipb_deleted)' // block/hide status
+ ],
+ 'options' => $options,
+ 'join_conds' => [
+ 'user_groups' => [ 'LEFT JOIN', 'user_id=ug_user' ],
+ 'ipblocks' => [
+ 'LEFT JOIN', [
+ 'user_id=ipb_user',
+ 'ipb_auto' => 0
+ ]
+ ],
+ ],
+ 'conds' => $conds
+ ];
+
+ Hooks::run( 'SpecialListusersQueryInfo', [ $this, &$query ] );
+
+ return $query;
+ }
+
+ /**
+ * @param stdClass $row
+ * @return string
+ */
+ function formatRow( $row ) {
+ if ( $row->user_id == 0 ) { # Bug 16487
+ return '';
+ }
+
+ $userName = $row->user_name;
+
+ $ulinks = Linker::userLink( $row->user_id, $userName );
+ $ulinks .= Linker::userToolLinksRedContribs(
+ $row->user_id,
+ $userName,
+ (int)$row->edits
+ );
+
+ $lang = $this->getLanguage();
+
+ $groups = '';
+ $groups_list = self::getGroups( intval( $row->user_id ), $this->userGroupCache );
+
+ if ( !$this->including && count( $groups_list ) > 0 ) {
+ $list = [];
+ foreach ( $groups_list as $group ) {
+ $list[] = self::buildGroupLink( $group, $userName );
+ }
+ $groups = $lang->commaList( $list );
+ }
+
+ $item = $lang->specialList( $ulinks, $groups );
+
+ if ( $row->ipb_deleted ) {
+ $item = "$item ";
+ }
+
+ $edits = '';
+ if ( !$this->including && $this->getConfig()->get( 'Edititis' ) ) {
+ $count = $this->msg( 'usereditcount' )->numParams( $row->edits )->escaped();
+ $edits = $this->msg( 'word-separator' )->escaped() . $this->msg( 'brackets', $count )->escaped();
+ }
+
+ $created = '';
+ # Some rows may be null
+ if ( !$this->including && $row->creation ) {
+ $user = $this->getUser();
+ $d = $lang->userDate( $row->creation, $user );
+ $t = $lang->userTime( $row->creation, $user );
+ $created = $this->msg( 'usercreated', $d, $t, $row->user_name )->escaped();
+ $created = ' ' . $this->msg( 'parentheses' )->rawParams( $created )->escaped();
+ }
+ $blocked = !is_null( $row->ipb_deleted ) ?
+ ' ' . $this->msg( 'listusers-blocked', $userName )->escaped() :
+ '';
+
+ Hooks::run( 'SpecialListusersFormatRow', [ &$item, $row ] );
+
+ return Html::rawElement( 'li', [], "{$item}{$edits}{$created}{$blocked}" );
+ }
+
+ function doBatchLookups() {
+ $batch = new LinkBatch();
+ $userIds = [];
+ # Give some pointers to make user links
+ foreach ( $this->mResult as $row ) {
+ $batch->add( NS_USER, $row->user_name );
+ $batch->add( NS_USER_TALK, $row->user_name );
+ $userIds[] = $row->user_id;
+ }
+
+ // Lookup groups for all the users
+ $dbr = wfGetDB( DB_SLAVE );
+ $groupRes = $dbr->select(
+ 'user_groups',
+ [ 'ug_user', 'ug_group' ],
+ [ 'ug_user' => $userIds ],
+ __METHOD__
+ );
+ $cache = [];
+ $groups = [];
+ foreach ( $groupRes as $row ) {
+ $cache[intval( $row->ug_user )][] = $row->ug_group;
+ $groups[$row->ug_group] = true;
+ }
+ $this->userGroupCache = $cache;
+
+ // Add page of groups to link batch
+ foreach ( $groups as $group => $unused ) {
+ $groupPage = User::getGroupPage( $group );
+ if ( $groupPage ) {
+ $batch->addObj( $groupPage );
+ }
+ }
+
+ $batch->execute();
+ $this->mResult->rewind();
+ }
+
+ /**
+ * @return string
+ */
+ function getPageHeader() {
+ list( $self ) = explode( '/', $this->getTitle()->getPrefixedDBkey() );
+
+ $this->getOutput()->addModules( 'mediawiki.userSuggest' );
+
+ # Form tag
+ $out = Xml::openElement(
+ 'form',
+ [ 'method' => 'get', 'action' => wfScript(), 'id' => 'mw-listusers-form' ]
+ ) .
+ Xml::fieldset( $this->msg( 'listusers' )->text() ) .
+ Html::hidden( 'title', $self );
+
+ # Username field (with autocompletion support)
+ $out .= Xml::label( $this->msg( 'listusersfrom' )->text(), 'offset' ) . ' ' .
+ Html::input(
+ 'username',
+ $this->requestedUser,
+ 'text',
+ [
+ 'class' => 'mw-autocomplete-user',
+ 'id' => 'offset',
+ 'size' => 20,
+ 'autofocus' => $this->requestedUser === ''
+ ]
+ ) . ' ';
+
+ # Group drop-down list
+ $sel = new XmlSelect( 'group', 'group', $this->requestedGroup );
+ $sel->addOption( $this->msg( 'group-all' )->text(), '' );
+ foreach ( $this->getAllGroups() as $group => $groupText ) {
+ $sel->addOption( $groupText, $group );
+ }
+
+ $out .= Xml::label( $this->msg( 'group' )->text(), 'group' ) . ' ';
+ $out .= $sel->getHTML() . ' ';
+ $out .= Xml::checkLabel(
+ $this->msg( 'listusers-editsonly' )->text(),
+ 'editsOnly',
+ 'editsOnly',
+ $this->editsOnly
+ );
+ $out .= ' ';
+ $out .= Xml::checkLabel(
+ $this->msg( 'listusers-creationsort' )->text(),
+ 'creationSort',
+ 'creationSort',
+ $this->creationSort
+ );
+ $out .= ' ';
+ $out .= Xml::checkLabel(
+ $this->msg( 'listusers-desc' )->text(),
+ 'desc',
+ 'desc',
+ $this->mDefaultDirection
+ );
+ $out .= ' ';
+
+ Hooks::run( 'SpecialListusersHeaderForm', [ $this, &$out ] );
+
+ # Submit button and form bottom
+ $out .= Html::hidden( 'limit', $this->mLimit );
+ $out .= Xml::submitButton( $this->msg( 'listusers-submit' )->text() );
+ Hooks::run( 'SpecialListusersHeader', [ $this, &$out ] );
+ $out .= Xml::closeElement( 'fieldset' ) .
+ Xml::closeElement( 'form' );
+
+ return $out;
+ }
+
+ /**
+ * Get a list of all explicit groups
+ * @return array
+ */
+ function getAllGroups() {
+ $result = [];
+ foreach ( User::getAllGroups() as $group ) {
+ $result[$group] = User::getGroupName( $group );
+ }
+ asort( $result );
+
+ return $result;
+ }
+
+ /**
+ * Preserve group and username offset parameters when paging
+ * @return array
+ */
+ function getDefaultQuery() {
+ $query = parent::getDefaultQuery();
+ if ( $this->requestedGroup != '' ) {
+ $query['group'] = $this->requestedGroup;
+ }
+ if ( $this->requestedUser != '' ) {
+ $query['username'] = $this->requestedUser;
+ }
+ Hooks::run( 'SpecialListusersDefaultQuery', [ $this, &$query ] );
+
+ return $query;
+ }
+
+ /**
+ * Get a list of groups the specified user belongs to
+ *
+ * @param int $uid User id
+ * @param array|null $cache
+ * @return array
+ */
+ protected static function getGroups( $uid, $cache = null ) {
+ if ( $cache === null ) {
+ $user = User::newFromId( $uid );
+ $effectiveGroups = $user->getEffectiveGroups();
+ } else {
+ $effectiveGroups = isset( $cache[$uid] ) ? $cache[$uid] : [];
+ }
+ $groups = array_diff( $effectiveGroups, User::getImplicitGroups() );
+
+ return $groups;
+ }
+
+ /**
+ * Format a link to a group description page
+ *
+ * @param string $group Group name
+ * @param string $username Username
+ * @return string
+ */
+ protected static function buildGroupLink( $group, $username ) {
+ return User::makeGroupLinkHTML(
+ $group,
+ User::getGroupMember( $group, $username )
+ );
+ }
+
+}
diff --git a/includes/tidy/Html5Depurate.php b/includes/tidy/Html5Depurate.php
index a34933ca1d..c6acd661f2 100644
--- a/includes/tidy/Html5Depurate.php
+++ b/includes/tidy/Html5Depurate.php
@@ -29,9 +29,10 @@ class Html5Depurate extends TidyDriverBase {
] );
$status = $req->execute();
if ( !$status->isOK() ) {
- throw new Exception( "Error contacting depurate service: " . $status->getWikiText() );
+ throw new Exception( "Error contacting depurate service: "
+ . $status->getWikiText( false, false, 'en' ) );
} elseif ( $req->getStatus() !== 200 ) {
- throw new Exception( "Depurate returned error: " . $status->getWikiText() );
+ throw new Exception( "Depurate returned error: " . $status->getWikiText( false, false, 'en' ) );
}
$result = $req->getContent();
$startBody = strpos( $result, "" );
diff --git a/includes/title/MediaWikiPageLinkRenderer.php b/includes/title/MediaWikiPageLinkRenderer.php
index 302c9e8c4e..a565271019 100644
--- a/includes/title/MediaWikiPageLinkRenderer.php
+++ b/includes/title/MediaWikiPageLinkRenderer.php
@@ -21,6 +21,7 @@
* @license GPL 2+
* @author Daniel Kinzler
*/
+use MediaWiki\Linker\LinkTarget;
/**
* A service for generating links from page titles.
@@ -106,11 +107,8 @@ class MediaWikiPageLinkRenderer implements PageLinkRenderer {
// TODO: move the logic implemented by Linker here,
// using $this->formatter and $this->baseUrl, and
// re-implement Linker to use a HtmlPageLinkRenderer.
- if ( $linkTarget instanceof Title ) {
- $title = $linkTarget;
- } else {
- $title = Title::newFromLinkTarget( $linkTarget );
- }
+
+ $title = Title::newFromLinkTarget( $linkTarget );
$link = Linker::link( $title, htmlspecialchars( $text ) );
return $link;
diff --git a/includes/title/MediaWikiTitleCodec.php b/includes/title/MediaWikiTitleCodec.php
index 22d5f0ded4..7c08be4cb3 100644
--- a/includes/title/MediaWikiTitleCodec.php
+++ b/includes/title/MediaWikiTitleCodec.php
@@ -21,6 +21,7 @@
* @license GPL 2+
* @author Daniel Kinzler
*/
+use MediaWiki\Linker\LinkTarget;
/**
* A codec for %MediaWiki page titles.
diff --git a/includes/title/PageLinkRenderer.php b/includes/title/PageLinkRenderer.php
index 1c5f0f7d4f..e26fe1a2d5 100644
--- a/includes/title/PageLinkRenderer.php
+++ b/includes/title/PageLinkRenderer.php
@@ -21,6 +21,7 @@
* @license GPL 2+
* @author Daniel Kinzler
*/
+use MediaWiki\Linker\LinkTarget;
/**
* Represents a link rendering service for %MediaWiki.
diff --git a/includes/title/TitleFormatter.php b/includes/title/TitleFormatter.php
index 4edc5db5ab..96f396c05c 100644
--- a/includes/title/TitleFormatter.php
+++ b/includes/title/TitleFormatter.php
@@ -21,6 +21,7 @@
* @license GPL 2+
* @author Daniel Kinzler
*/
+use MediaWiki\Linker\LinkTarget;
/**
* A title formatter service for MediaWiki.
diff --git a/includes/title/TitleValue.php b/includes/title/TitleValue.php
index c8ebc2ada1..c23d6989f4 100644
--- a/includes/title/TitleValue.php
+++ b/includes/title/TitleValue.php
@@ -21,6 +21,7 @@
* @license GPL 2+
* @author Daniel Kinzler
*/
+use MediaWiki\Linker\LinkTarget;
use Wikimedia\Assert\Assert;
/**
@@ -95,6 +96,14 @@ class TitleValue implements LinkTarget {
return $this->fragment;
}
+ /**
+ * @since 1.27
+ * @return bool
+ */
+ public function hasFragment() {
+ return $this->fragment !== '';
+ }
+
/**
* Returns the title's DB key, as supplied to the constructor,
* without namespace prefix or fragment.
@@ -123,11 +132,12 @@ class TitleValue implements LinkTarget {
/**
* Creates a new TitleValue for a different fragment of the same page.
*
+ * @since 1.27
* @param string $fragment The fragment name, or "" for the entire page.
*
* @return TitleValue
*/
- public function createFragmentTitle( $fragment ) {
+ public function createFragmentTarget( $fragment ) {
return new TitleValue( $this->namespace, $this->dbkey, $fragment );
}
diff --git a/includes/upload/UploadBase.php b/includes/upload/UploadBase.php
index 9d7b294e24..1185c4da61 100644
--- a/includes/upload/UploadBase.php
+++ b/includes/upload/UploadBase.php
@@ -645,9 +645,6 @@ abstract class UploadBase {
if ( $this->mDesiredDestName != $filename && $comparableName != $filename ) {
$warnings['badfilename'] = $filename;
- // Debugging for bug 62241
- wfDebugLog( 'upload', "Filename: '$filename', mDesiredDestName: "
- . "'$this->mDesiredDestName', comparableName: '$comparableName'" );
}
// Check whether the file extension is on the unwanted list
@@ -666,7 +663,7 @@ abstract class UploadBase {
}
if ( $this->mFileSize == 0 ) {
- $warnings['emptyfile'] = true;
+ $warnings['empty-file'] = true;
}
$exists = self::getExistsWarning( $localFile );
diff --git a/includes/user/BotPassword.php b/includes/user/BotPassword.php
index 7346a90fe9..49a71633c7 100644
--- a/includes/user/BotPassword.php
+++ b/includes/user/BotPassword.php
@@ -18,6 +18,8 @@
* http://www.gnu.org/copyleft/gpl.html
*/
+use MediaWiki\Session\BotPasswordSessionProvider;
+
/**
* Utility class for bot passwords
* @since 1.27
@@ -401,9 +403,7 @@ class BotPassword implements IDBAccessObject {
}
$manager = MediaWiki\Session\SessionManager::singleton();
- $provider = $manager->getProvider(
- 'MediaWiki\\Session\\BotPasswordSessionProvider'
- );
+ $provider = $manager->getProvider( BotPasswordSessionProvider::class );
if ( !$provider ) {
return Status::newFatal( 'botpasswords-no-provider' );
}
diff --git a/includes/user/LoggedOutEditToken.php b/includes/user/LoggedOutEditToken.php
index 7a70773f83..5444a51fc6 100644
--- a/includes/user/LoggedOutEditToken.php
+++ b/includes/user/LoggedOutEditToken.php
@@ -26,7 +26,7 @@ use MediaWiki\Session\Token;
/**
* Value object representing a logged-out user's edit token
*
- * This exists so that code generically dealing with MediaWiki\\Session\\Token
+ * This exists so that code generically dealing with MediaWiki\Session\Token
* (i.e. the API) doesn't have to have so many special cases for anon edit
* tokens.
*
diff --git a/includes/user/User.php b/includes/user/User.php
index 027edf929b..7c32c3b5a2 100644
--- a/includes/user/User.php
+++ b/includes/user/User.php
@@ -20,14 +20,16 @@
* @file
*/
+use MediaWiki\MediaWikiServices;
use MediaWiki\Session\SessionManager;
+use MediaWiki\Session\Token;
/**
* String Some punctuation to prevent editing from broken text-mangling proxies.
- * @deprecated since 1.27, use \\MediaWiki\\Session\\Token::SUFFIX
+ * @deprecated since 1.27, use \MediaWiki\Session\Token::SUFFIX
* @ingroup Constants
*/
-define( 'EDIT_TOKEN_SUFFIX', MediaWiki\Session\Token::SUFFIX );
+define( 'EDIT_TOKEN_SUFFIX', Token::SUFFIX );
/**
* The User object encapsulates all of the user-specific settings (user_id,
@@ -53,7 +55,7 @@ class User implements IDBAccessObject {
/**
* Global constant made accessible as class constants so that autoloader
* magic can be used.
- * @deprecated since 1.27, use \\MediaWiki\\Session\\Token::SUFFIX
+ * @deprecated since 1.27, use \MediaWiki\Session\Token::SUFFIX
*/
const EDIT_TOKEN_SUFFIX = EDIT_TOKEN_SUFFIX;
@@ -274,8 +276,8 @@ class User implements IDBAccessObject {
protected $mImplicitGroups;
/** @var array */
protected $mFormerGroups;
- /** @var bool */
- protected $mBlockedGlobally;
+ /** @var Block */
+ protected $mGlobalBlock;
/** @var bool */
protected $mLocked;
/** @var bool */
@@ -1069,9 +1071,9 @@ class User implements IDBAccessObject {
// Clean up name according to title rules,
// but only when validation is requested (bug 12654)
$t = ( $validate !== false ) ?
- Title::newFromText( $name ) : Title::makeTitle( NS_USER, $name );
+ Title::newFromText( $name, NS_USER ) : Title::makeTitle( NS_USER, $name );
// Check for invalid titles
- if ( is_null( $t ) ) {
+ if ( is_null( $t ) || $t->getNamespace() !== NS_USER || $t->isExternal() ) {
return false;
}
@@ -1533,7 +1535,8 @@ class User implements IDBAccessObject {
foreach ( LanguageConverter::$languagesWithVariants as $langCode ) {
$defOpt[$langCode == $wgContLang->getCode() ? 'variant' : "variant-$langCode"] = $langCode;
}
- foreach ( SearchEngine::searchableNamespaces() as $nsnum => $nsname ) {
+ $namespaces = MediaWikiServices::getInstance()->getSearchEngineConfig()->searchableNamespaces();
+ foreach ( $namespaces as $nsnum => $nsname ) {
$defOpt['searchNs' . $nsnum] = !empty( $wgNamespacesToBeSearchedDefault[$nsnum] );
}
$defOpt['skin'] = Skin::normalizeKey( $wgDefaultSkin );
@@ -1991,8 +1994,22 @@ class User implements IDBAccessObject {
* @return bool True if blocked, false otherwise
*/
public function isBlockedGlobally( $ip = '' ) {
- if ( $this->mBlockedGlobally !== null ) {
- return $this->mBlockedGlobally;
+ return $this->getGlobalBlock( $ip ) instanceof Block;
+ }
+
+ /**
+ * Check if user is blocked on all wikis.
+ * Do not use for actual edit permission checks!
+ * This is intended for quick UI checks.
+ *
+ * @param string $ip IP address, uses current client if none given
+ * @return Block|null Block object if blocked, null otherwise
+ * @throws FatalError
+ * @throws MWException
+ */
+ public function getGlobalBlock( $ip = '' ) {
+ if ( $this->mGlobalBlock !== null ) {
+ return $this->mGlobalBlock ?: null;
}
// User is already an IP?
if ( IP::isIPAddress( $this->getName() ) ) {
@@ -2001,9 +2018,17 @@ class User implements IDBAccessObject {
$ip = $this->getRequest()->getIP();
}
$blocked = false;
- Hooks::run( 'UserIsBlockedGlobally', [ &$this, $ip, &$blocked ] );
- $this->mBlockedGlobally = (bool)$blocked;
- return $this->mBlockedGlobally;
+ $block = null;
+ Hooks::run( 'UserIsBlockedGlobally', [ &$this, $ip, &$blocked, &$block ] );
+
+ if ( $blocked && $block === null ) {
+ // back-compat: UserIsBlockedGlobally didn't have $block param first
+ $block = new Block;
+ $block->setTarget( $ip );
+ }
+
+ $this->mGlobalBlock = $blocked ? $block : false;
+ return $this->mGlobalBlock ?: null;
}
/**
@@ -2693,14 +2718,36 @@ class User implements IDBAccessObject {
return Status::newGood( true );
}
+ $type = $oldaddr != '' ? 'changed' : 'set';
+ $notificationResult = null;
+
+ if ( $wgEmailAuthentication ) {
+ // Send the user an email notifying the user of the change in registered
+ // email address on their previous email address
+ if ( $type == 'changed' ) {
+ $change = $str != '' ? 'changed' : 'removed';
+ $notificationResult = $this->sendMail(
+ wfMessage( 'notificationemail_subject_' . $change )->text(),
+ wfMessage( 'notificationemail_body_' . $change,
+ $this->getRequest()->getIP(),
+ $this->getName(),
+ $str )->text()
+ );
+ }
+ }
+
$this->setEmail( $str );
if ( $str !== '' && $wgEmailAuthentication ) {
// Send a confirmation request to the new address if needed
- $type = $oldaddr != '' ? 'changed' : 'set';
$result = $this->sendConfirmationMail( $type );
+
+ if ( $notificationResult !== null ) {
+ $result->merge( $notificationResult );
+ }
+
if ( $result->isGood() ) {
- // Say to the caller that a confirmation mail has been sent
+ // Say to the caller that a confirmation and notification mail has been sent
$result->value = 'eauth';
}
} else {
@@ -3467,10 +3514,9 @@ class User implements IDBAccessObject {
*/
public function addWatch( $title, $checkRights = self::CHECK_USER_RIGHTS ) {
if ( !$checkRights || $this->isAllowed( 'editmywatchlist' ) ) {
- WatchedItemStore::getDefaultInstance()->addWatchBatch( [
- [ $this, $title->getSubjectPage() ],
- [ $this, $title->getTalkPage() ],
- ]
+ WatchedItemStore::getDefaultInstance()->addWatchBatchForUser(
+ $this,
+ [ $title->getSubjectPage(), $title->getTalkPage() ]
);
}
$this->invalidateCache();
@@ -4200,7 +4246,7 @@ class User implements IDBAccessObject {
* @since 1.27
* @param string|array $salt Array of Strings Optional function-specific data for hashing
* @param WebRequest|null $request WebRequest object to use or null to use $wgRequest
- * @return MediaWiki\\Session\\Token The new edit token
+ * @return MediaWiki\Session\Token The new edit token
*/
public function getEditTokenObject( $salt = '', $request = null ) {
if ( $this->isAnon() ) {
@@ -4230,7 +4276,7 @@ class User implements IDBAccessObject {
/**
* Get the embedded timestamp from a token.
- * @deprecated since 1.27, use \\MediaWiki\\Session\\Token::getTimestamp instead.
+ * @deprecated since 1.27, use \MediaWiki\Session\Token::getTimestamp instead.
* @param string $val Input token
* @return int|null
*/
@@ -4266,7 +4312,7 @@ class User implements IDBAccessObject {
* @return bool Whether the token matches
*/
public function matchEditTokenNoSuffix( $val, $salt = '', $request = null, $maxage = null ) {
- $val = substr( $val, 0, strspn( $val, '0123456789abcdef' ) ) . self::EDIT_TOKEN_SUFFIX;
+ $val = substr( $val, 0, strspn( $val, '0123456789abcdef' ) ) . Token::SUFFIX;
return $this->matchEditToken( $val, $salt, $request, $maxage );
}
diff --git a/includes/utils/IP.php b/includes/utils/IP.php
index bcc2ed3828..4a2205eebb 100644
--- a/includes/utils/IP.php
+++ b/includes/utils/IP.php
@@ -73,7 +73,7 @@ class IP {
/**
* Determine if a string is as valid IP address or network (CIDR prefix).
* SIIT IPv4-translated addresses are rejected.
- * Note: canonicalize() tries to convert translated addresses to IPv4.
+ * @note canonicalize() tries to convert translated addresses to IPv4.
*
* @param string $ip Possible IP address
* @return bool
@@ -84,7 +84,7 @@ class IP {
/**
* Given a string, determine if it as valid IP in IPv6 only.
- * Note: Unlike isValid(), this looks for networks too.
+ * @note Unlike isValid(), this looks for networks too.
*
* @param string $ip Possible IP address
* @return bool
@@ -95,7 +95,7 @@ class IP {
/**
* Given a string, determine if it as valid IP in IPv4 only.
- * Note: Unlike isValid(), this looks for networks too.
+ * @note Unlike isValid(), this looks for networks too.
*
* @param string $ip Possible IP address
* @return bool
@@ -107,7 +107,7 @@ class IP {
/**
* Validate an IP address. Ranges are NOT considered valid.
* SIIT IPv4-translated addresses are rejected.
- * Note: canonicalize() tries to convert translated addresses to IPv4.
+ * @note canonicalize() tries to convert translated addresses to IPv4.
*
* @param string $ip
* @return bool True if it is valid
@@ -120,7 +120,7 @@ class IP {
/**
* Validate an IP Block (valid address WITH a valid prefix).
* SIIT IPv4-translated addresses are rejected.
- * Note: canonicalize() tries to convert translated addresses to IPv4.
+ * @note canonicalize() tries to convert translated addresses to IPv4.
*
* @param string $ipblock
* @return bool True if it is valid
@@ -633,6 +633,9 @@ class IP {
* @param string $addr The address to check against the given range.
* @param string $range The range to check the given address against.
* @return bool Whether or not the given address is in the given range.
+ *
+ * @note This can return unexpected results for invalid arguments!
+ * Make sure you pass a valid IP address and IP range.
*/
public static function isInRange( $addr, $range ) {
$hexIP = self::toHex( $addr );
diff --git a/includes/utils/MWCryptHash.php b/includes/utils/MWCryptHash.php
index 72c620eec0..11173573e7 100644
--- a/includes/utils/MWCryptHash.php
+++ b/includes/utils/MWCryptHash.php
@@ -105,6 +105,10 @@ class MWCryptHash {
* @return string An hmac hash of the data + key
*/
public static function hmac( $data, $key, $raw = true ) {
+ if ( !is_string( $key ) ) {
+ // a fatal error in HHVM; an exception will at least give us a stack trace
+ throw new InvalidArgumentException( 'Invalid key type: ' . gettype( $key ) );
+ }
return hash_hmac( self::hashAlgo(), $data, $key, $raw );
}
diff --git a/includes/utils/ZipDirectoryReader.php b/includes/utils/ZipDirectoryReader.php
index 44815b4750..516e9aec4a 100644
--- a/includes/utils/ZipDirectoryReader.php
+++ b/includes/utils/ZipDirectoryReader.php
@@ -215,6 +215,10 @@ class ZipDirectoryReader {
$startPos = 0;
}
+ if ( $this->getFileLength() === 0 ) {
+ $this->error( 'zip-wrong-format', "The file is empty." );
+ }
+
$block = $this->getBlock( $startPos );
$sigPos = strrpos( $block, "PK\x05\x06" );
if ( $sigPos === false ) {
diff --git a/includes/widget/SearchInputWidget.php b/includes/widget/SearchInputWidget.php
index 7b3de4a557..5ff411df4e 100644
--- a/includes/widget/SearchInputWidget.php
+++ b/includes/widget/SearchInputWidget.php
@@ -13,6 +13,7 @@ namespace MediaWiki\Widget;
class SearchInputWidget extends TitleInputWidget {
protected $pushPending = false;
+ protected $performSearchOnClick = true;
protected $validateTitle = false;
protected $highlightFirst = false;
@@ -20,23 +21,36 @@ class SearchInputWidget extends TitleInputWidget {
* @param array $config Configuration options
* @param int|null $config['pushPending'] Whether the input should be visually marked as
* "pending", while requesting suggestions (default: true)
+ * @param boolean|null $config['performSearchOnClick'] If true, the script will start a search
+ * whenever a user hits a suggestion. If false, the text of the suggestion is inserted into the
+ * text field only (default: true)
*/
public function __construct( array $config = [] ) {
+ $config = array_merge( [
+ 'infusable' => true,
+ 'maxLength' => null,
+ 'type' => 'search',
+ 'icon' => 'search',
+ 'dataLocation' => 'content',
+ ], $config );
+
// Parent constructor
- parent::__construct(
- array_merge( [
- 'infusable' => true,
- 'maxLength' => null,
- 'type' => 'search',
- 'icon' => 'search'
- ], $config )
- );
+ parent::__construct( $config );
// Properties, which are ignored in PHP and just shipped back to JS
if ( isset( $config['pushPending'] ) ) {
$this->pushPending = $config['pushPending'];
}
+ if ( isset( $config['performSearchOnClick'] ) ) {
+ $this->performSearchOnClick = $config['performSearchOnClick'];
+ }
+
+ if ( $config['dataLocation'] ) {
+ // identifies the location of the search bar for tracking purposes
+ $this->dataLocation = $config['dataLocation'];
+ }
+
// Initialization
$this->addClasses( [ 'mw-widget-searchInputWidget' ] );
}
@@ -47,6 +61,10 @@ class SearchInputWidget extends TitleInputWidget {
public function getConfig( &$config ) {
$config['pushPending'] = $this->pushPending;
+ $config['performSearchOnClick'] = $this->performSearchOnClick;
+ if ( $this->dataLocation ) {
+ $config['dataLocation'] = $this->dataLocation;
+ }
return parent::getConfig( $config );
}
}
diff --git a/languages/Language.php b/languages/Language.php
index 93ce8eb1f3..190f2bfe78 100644
--- a/languages/Language.php
+++ b/languages/Language.php
@@ -30,9 +30,7 @@ if ( !defined( 'MEDIAWIKI' ) ) {
exit( 1 );
}
-if ( function_exists( 'mb_strtoupper' ) ) {
- mb_internal_encoding( 'UTF-8' );
-}
+mb_internal_encoding( 'UTF-8' );
use CLDRPluralRuleParser\Evaluator;
@@ -443,7 +441,7 @@ class Language {
* @return array
* @since 1.19
*/
- function getFallbackLanguages() {
+ public function getFallbackLanguages() {
return self::getFallbacksFor( $this->mCode );
}
@@ -451,7 +449,7 @@ class Language {
* Exports $wgBookstoreListEn
* @return array
*/
- function getBookstoreList() {
+ public function getBookstoreList() {
return self::$dataCache->getItem( $this->mCode, 'bookstoreList' );
}
@@ -520,7 +518,7 @@ class Language {
*
* @return array
*/
- function getFormattedNamespaces() {
+ public function getFormattedNamespaces() {
$ns = $this->getNamespaces();
foreach ( $ns as $k => $v ) {
$ns[$k] = strtr( $v, '_', ' ' );
@@ -539,7 +537,7 @@ class Language {
* @param int $index The array key of the namespace to return
* @return string|bool String if the namespace value exists, otherwise false
*/
- function getNsText( $index ) {
+ public function getNsText( $index ) {
$ns = $this->getNamespaces();
return isset( $ns[$index] ) ? $ns[$index] : false;
}
@@ -557,7 +555,7 @@ class Language {
* @param int $index The array key of the namespace to return
* @return string Namespace name without underscores (empty string if namespace does not exist)
*/
- function getFormattedNsText( $index ) {
+ public function getFormattedNsText( $index ) {
$ns = $this->getNsText( $index );
return strtr( $ns, '_', ' ' );
}
@@ -570,7 +568,7 @@ class Language {
* @return string
* @since 1.18
*/
- function getGenderNsText( $index, $gender ) {
+ public function getGenderNsText( $index, $gender ) {
global $wgExtraGenderNamespaces;
$ns = $wgExtraGenderNamespaces +
@@ -585,7 +583,7 @@ class Language {
* @return bool
* @since 1.18
*/
- function needsGenderDistinction() {
+ public function needsGenderDistinction() {
global $wgExtraGenderNamespaces, $wgExtraNamespaces;
if ( count( $wgExtraGenderNamespaces ) > 0 ) {
// $wgExtraGenderNamespaces overrides everything
@@ -618,7 +616,7 @@ class Language {
/**
* @return array
*/
- function getNamespaceAliases() {
+ public function getNamespaceAliases() {
if ( is_null( $this->namespaceAliases ) ) {
$aliases = self::$dataCache->getItem( $this->mCode, 'namespaceAliases' );
if ( !$aliases ) {
@@ -662,7 +660,7 @@ class Language {
/**
* @return array
*/
- function getNamespaceIds() {
+ public function getNamespaceIds() {
if ( is_null( $this->mNamespaceIds ) ) {
global $wgNamespaceAliases;
# Put namespace names and aliases into a hashtable.
@@ -692,7 +690,7 @@ class Language {
* @param string $text
* @return int|bool An integer if $text is a valid value otherwise false
*/
- function getNsIndex( $text ) {
+ public function getNsIndex( $text ) {
$lctext = $this->lc( $text );
$ns = MWNamespace::getCanonicalIndex( $lctext );
if ( $ns !== null ) {
@@ -709,7 +707,7 @@ class Language {
* @param bool $usemsg Use the "variantname-xyz" message if it exists
* @return string
*/
- function getVariantname( $code, $usemsg = true ) {
+ public function getVariantname( $code, $usemsg = true ) {
$msg = "variantname-$code";
if ( $usemsg && wfMessage( $msg )->exists() ) {
return $this->getMessageFromDB( $msg );
@@ -726,7 +724,7 @@ class Language {
/**
* @return array
*/
- function getDatePreferences() {
+ public function getDatePreferences() {
return self::$dataCache->getItem( $this->mCode, 'datePreferences' );
}
@@ -740,7 +738,7 @@ class Language {
/**
* @return array|string
*/
- function getDefaultDateFormat() {
+ public function getDefaultDateFormat() {
$df = self::$dataCache->getItem( $this->mCode, 'defaultDateFormat' );
if ( $df === 'dmy or mdy' ) {
global $wgAmericanDates;
@@ -753,7 +751,7 @@ class Language {
/**
* @return array
*/
- function getDatePreferenceMigrationMap() {
+ public function getDatePreferenceMigrationMap() {
return self::$dataCache->getItem( $this->mCode, 'datePreferenceMigrationMap' );
}
@@ -769,14 +767,14 @@ class Language {
* @return array
* @since 1.24
*/
- function getImageFiles() {
+ public function getImageFiles() {
return self::$dataCache->getItem( $this->mCode, 'imageFiles' );
}
/**
* @return array
*/
- function getExtraUserToggles() {
+ public function getExtraUserToggles() {
return (array)self::$dataCache->getItem( $this->mCode, 'extraUserToggles' );
}
@@ -899,7 +897,7 @@ class Language {
* @param string $msg Message name
* @return string
*/
- function getMessageFromDB( $msg ) {
+ public function getMessageFromDB( $msg ) {
return $this->msg( $msg )->text();
}
@@ -917,14 +915,14 @@ class Language {
* @param string $key
* @return string
*/
- function getMonthName( $key ) {
+ public function getMonthName( $key ) {
return $this->getMessageFromDB( self::$mMonthMsgs[$key - 1] );
}
/**
* @return array
*/
- function getMonthNamesArray() {
+ public function getMonthNamesArray() {
$monthNames = [ '' ];
for ( $i = 1; $i < 13; $i++ ) {
$monthNames[] = $this->getMonthName( $i );
@@ -936,7 +934,7 @@ class Language {
* @param string $key
* @return string
*/
- function getMonthNameGen( $key ) {
+ public function getMonthNameGen( $key ) {
return $this->getMessageFromDB( self::$mMonthGenMsgs[$key - 1] );
}
@@ -1557,7 +1555,7 @@ class Language {
*
* @param string $ts
*
- * @return string
+ * @return int[]
*/
private static function tsToIranian( $ts ) {
$gy = substr( $ts, 0, 4 ) -1600;
@@ -1615,7 +1613,7 @@ class Language {
*
* @param string $ts
*
- * @return string
+ * @return int[]
*/
private static function tsToHijri( $ts ) {
$year = substr( $ts, 0, 4 );
@@ -1667,7 +1665,7 @@ class Language {
*
* @param string $ts
*
- * @return string
+ * @return int[]
*/
private static function tsToHebrew( $ts ) {
# Parse date
@@ -2592,7 +2590,7 @@ class Language {
return $text;
}
- // callback functions for uc(), lc(), ucwords(), ucwordbreaks()
+ // callback functions for ucwords(), ucwordbreaks()
/**
* @param array $matches
@@ -2610,24 +2608,6 @@ class Language {
return mb_strtoupper( $matches[0] );
}
- /**
- * @param array $matches
- * @return string
- */
- function ucCallback( $matches ) {
- list( $wikiUpperChars ) = self::getCaseMaps();
- return strtr( $matches[1], $wikiUpperChars );
- }
-
- /**
- * @param array $matches
- * @return string
- */
- function lcCallback( $matches ) {
- list( , $wikiLowerChars ) = self::getCaseMaps();
- return strtr( $matches[1], $wikiLowerChars );
- }
-
/**
* @param array $matches
* @return string
@@ -2636,15 +2616,6 @@ class Language {
return mb_strtoupper( $matches[0] );
}
- /**
- * @param array $matches
- * @return string
- */
- function ucwordsCallbackWiki( $matches ) {
- list( $wikiUpperChars ) = self::getCaseMaps();
- return strtr( $matches[0], $wikiUpperChars );
- }
-
/**
* Make a string's first character uppercase
*
@@ -2673,27 +2644,14 @@ class Language {
* @return string
*/
function uc( $str, $first = false ) {
- if ( function_exists( 'mb_strtoupper' ) ) {
- if ( $first ) {
- if ( $this->isMultibyte( $str ) ) {
- return mb_strtoupper( mb_substr( $str, 0, 1 ) ) . mb_substr( $str, 1 );
- } else {
- return ucfirst( $str );
- }
- } else {
- return $this->isMultibyte( $str ) ? mb_strtoupper( $str ) : strtoupper( $str );
- }
- } else {
+ if ( $first ) {
if ( $this->isMultibyte( $str ) ) {
- $x = $first ? '^' : '';
- return preg_replace_callback(
- "/$x([a-z]|[\\xc0-\\xff][\\x80-\\xbf]*)/",
- [ $this, 'ucCallback' ],
- $str
- );
+ return mb_strtoupper( mb_substr( $str, 0, 1 ) ) . mb_substr( $str, 1 );
} else {
- return $first ? ucfirst( $str ) : strtoupper( $str );
+ return ucfirst( $str );
}
+ } else {
+ return $this->isMultibyte( $str ) ? mb_strtoupper( $str ) : strtoupper( $str );
}
}
@@ -2721,27 +2679,14 @@ class Language {
* @return mixed|string
*/
function lc( $str, $first = false ) {
- if ( function_exists( 'mb_strtolower' ) ) {
- if ( $first ) {
- if ( $this->isMultibyte( $str ) ) {
- return mb_strtolower( mb_substr( $str, 0, 1 ) ) . mb_substr( $str, 1 );
- } else {
- return strtolower( substr( $str, 0, 1 ) ) . substr( $str, 1 );
- }
- } else {
- return $this->isMultibyte( $str ) ? mb_strtolower( $str ) : strtolower( $str );
- }
- } else {
+ if ( $first ) {
if ( $this->isMultibyte( $str ) ) {
- $x = $first ? '^' : '';
- return preg_replace_callback(
- "/$x([A-Z]|[\\xc0-\\xff][\\x80-\\xbf]*)/",
- [ $this, 'lcCallback' ],
- $str
- );
+ return mb_strtolower( mb_substr( $str, 0, 1 ) ) . mb_substr( $str, 1 );
} else {
- return $first ? strtolower( substr( $str, 0, 1 ) ) . substr( $str, 1 ) : strtolower( $str );
+ return strtolower( substr( $str, 0, 1 ) ) . substr( $str, 1 );
}
+ } else {
+ return $this->isMultibyte( $str ) ? mb_strtolower( $str ) : strtolower( $str );
}
}
@@ -2765,19 +2710,11 @@ class Language {
$replaceRegexp = "/^([a-z]|[\\xc0-\\xff][\\x80-\\xbf]*)| ([a-z]|[\\xc0-\\xff][\\x80-\\xbf]*)/";
// function to use to capitalize a single char
- if ( function_exists( 'mb_strtoupper' ) ) {
- return preg_replace_callback(
- $replaceRegexp,
- [ $this, 'ucwordsCallbackMB' ],
- $str
- );
- } else {
- return preg_replace_callback(
- $replaceRegexp,
- [ $this, 'ucwordsCallbackWiki' ],
- $str
- );
- }
+ return preg_replace_callback(
+ $replaceRegexp,
+ [ $this, 'ucwordsCallbackMB' ],
+ $str
+ );
} else {
return ucwords( strtolower( $str ) );
}
@@ -2800,19 +2737,11 @@ class Language {
$replaceRegexp = "/^([a-z]|[\\xc0-\\xff][\\x80-\\xbf]*)|" .
"$breaks([a-z]|[\\xc0-\\xff][\\x80-\\xbf]*)/";
- if ( function_exists( 'mb_strtoupper' ) ) {
- return preg_replace_callback(
- $replaceRegexp,
- [ $this, 'ucwordbreaksCallbackMB' ],
- $str
- );
- } else {
- return preg_replace_callback(
- $replaceRegexp,
- [ $this, 'ucwordsCallbackWiki' ],
- $str
- );
- }
+ return preg_replace_callback(
+ $replaceRegexp,
+ [ $this, 'ucwordbreaksCallbackMB' ],
+ $str
+ );
} else {
return preg_replace_callback(
'/\b([\w\x80-\xff]+)\b/',
@@ -3966,10 +3895,11 @@ class Language {
* match up with it.
*
* @param string $str The validated block duration in English
+ * @param User $user User object to use timezone from or null for $wgUser
* @return string Somehow translated block duration
* @see LanguageFi.php for example implementation
*/
- function translateBlockExpiry( $str ) {
+ function translateBlockExpiry( $str, User $user = null ) {
$duration = SpecialBlock::getSuggestedDurations( $this );
foreach ( $duration as $show => $value ) {
if ( strcmp( $str, $value ) == 0 ) {
@@ -3995,10 +3925,12 @@ class Language {
} else { // It's an absolute timestamp.
if ( $time === 0 ) {
// wfTimestamp() handles 0 as current time instead of epoch.
- return $this->timeanddate( '19700101000000' );
- } else {
- return $this->timeanddate( $time );
+ $time = '19700101000000';
+ }
+ if ( $user ) {
+ return $this->userTimeAndDate( $time, $user );
}
+ return $this->timeanddate( $time );
}
}
@@ -4496,26 +4428,6 @@ class Language {
return $this->convertGrammar( trim( $m[2] ), trim( $m[1] ) );
}
- /**
- * @throws MWException
- * @return array
- */
- static function getCaseMaps() {
- static $wikiUpperChars, $wikiLowerChars;
- if ( isset( $wikiUpperChars ) ) {
- return [ $wikiUpperChars, $wikiLowerChars ];
- }
-
- $arr = wfGetPrecompiledData( 'Utf8Case.ser' );
- if ( $arr === false ) {
- throw new MWException(
- "Utf8Case.ser is missing, please run \"make\" in the serialized directory\n" );
- }
- $wikiUpperChars = $arr['wikiUpperChars'];
- $wikiLowerChars = $arr['wikiLowerChars'];
- return [ $wikiUpperChars, $wikiLowerChars ];
- }
-
/**
* Decode an expiry (block, protection, etc) which has come from the DB
*
diff --git a/languages/classes/LanguageFi.php b/languages/classes/LanguageFi.php
index c3c40efde6..338853683c 100644
--- a/languages/classes/LanguageFi.php
+++ b/languages/classes/LanguageFi.php
@@ -73,7 +73,6 @@ class LanguageFi extends Language {
break;
case 'illative':
# Double the last letter and add 'n'
- # mb_substr has a compatibility function in GlobalFunctions.php
$word = $word . mb_substr( $word, -1 ) . 'n';
break;
case 'inessive':
@@ -85,10 +84,10 @@ class LanguageFi extends Language {
/**
* @param string $str
- * @param bool $forContent
+ * @param User $user User object to use timezone from or null for $wgUser
* @return string
*/
- function translateBlockExpiry( $str, $forContent = false ) {
+ function translateBlockExpiry( $str, User $user = null ) {
/*
'ago', 'now', 'today', 'this', 'next',
'first', 'third', 'fourth', 'fifth', 'sixth', 'seventh', 'eighth', 'ninth',
diff --git a/languages/data/Names.php b/languages/data/Names.php
index 6c49aa443a..a7de1f9184 100644
--- a/languages/data/Names.php
+++ b/languages/data/Names.php
@@ -46,423 +46,423 @@ namespace MediaWiki\Languages\Data;
*/
class Names {
public static $names = [
- 'aa' => 'Qafár af', # Afar
- 'ab' => 'ÐÒ§ÑÑÓа', # Abkhaz
- 'ace' => 'Acèh', # Aceh
- 'ady' => 'адÑгабзÑ', # Adyghe
- 'ady-cyrl' => 'адÑгабзÑ', # Adyghe
- 'aeb' => 'تÙÙسÙ/Tûnsî', # Tunisian Arabic (multiple scripts - defaults to Arabic)
- 'aeb-arab' => 'تÙÙسÙ', # Tunisian Arabic (Arabic Script)
- 'aeb-latn' => 'Tûnsî', # Tunisian Arabic (Latin Script)
- 'af' => 'Afrikaans', # Afrikaans
- 'ak' => 'Akan', # Akan
- 'aln' => 'Gegë', # Gheg Albanian
- 'als' => 'Alemannisch', # Alemannic -- not a valid code, for compatibility. See gsw.
- 'am' => 'á ááá', # Amharic
- 'an' => 'aragonés', # Aragonese
- 'ang' => 'Ãnglisc', # Old English, bug 23283
- 'anp' => 'à¤
à¤à¥à¤à¤¿à¤à¤¾', # Angika
- 'ar' => 'اÙعربÙØ©', # Arabic
- 'arc' => 'ÜܪܡÜÜ', # Aramaic
- 'arn' => 'mapudungun', # Mapuche, Mapudungu, Araucanian (Araucano)
+ 'aa' => 'Qafár af', # Afar
+ 'ab' => 'ÐÒ§ÑÑÓа', # Abkhaz
+ 'ace' => 'Acèh', # Aceh
+ 'ady' => 'адÑгабзÑ', # Adyghe
+ 'ady-cyrl' => 'адÑгабзÑ', # Adyghe
+ 'aeb' => 'تÙÙسÙ/Tûnsî', # Tunisian Arabic (multiple scripts - defaults to Arabic)
+ 'aeb-arab' => 'تÙÙسÙ', # Tunisian Arabic (Arabic Script)
+ 'aeb-latn' => 'Tûnsî', # Tunisian Arabic (Latin Script)
+ 'af' => 'Afrikaans', # Afrikaans
+ 'ak' => 'Akan', # Akan
+ 'aln' => 'Gegë', # Gheg Albanian
+ 'als' => 'Alemannisch', # Alemannic -- not a valid code, for compatibility. See gsw.
+ 'am' => 'á ááá', # Amharic
+ 'an' => 'aragonés', # Aragonese
+ 'ang' => 'Ãnglisc', # Old English, bug 23283
+ 'anp' => 'à¤
à¤à¥à¤à¤¿à¤à¤¾', # Angika
+ 'ar' => 'اÙعربÙØ©', # Arabic
+ 'arc' => 'ÜܪܡÜÜ', # Aramaic
+ 'arn' => 'mapudungun', # Mapuche, Mapudungu, Araucanian (Araucano)
'arq' => 'جازاÙرÙØ©', # Algerian Spoken Arabic
- 'ary' => 'Maġribi', # Moroccan Spoken Arabic
- 'arz' => 'Ù
صرÙ', # Egyptian Spoken Arabic
- 'as' => 'à¦
সমà§à¦¯à¦¼à¦¾', # Assamese
- 'ase' => 'American sign language', # American sign language
- 'ast' => 'asturianu', # Asturian
- 'av' => 'аваÑ', # Avar
+ '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
- 'awa' => 'à¤
वधà¥', # Awadhi
- 'ay' => 'Aymar aru', # Aymara
- 'az' => 'azÉrbaycanca', # Azerbaijani
- 'azb' => 'تÛرکجÙ', # South Azerbaijani
- 'ba' => 'баÑҡоÑÑÑа', # Bashkir
- 'bar' => 'Boarisch', # Bavarian (Austro-Bavarian and South Tyrolean)
+ 'awa' => 'à¤
वधà¥', # Awadhi
+ 'ay' => 'Aymar aru', # Aymara
+ 'az' => 'azÉrbaycanca', # Azerbaijani
+ 'azb' => 'تÛرکجÙ', # South Azerbaijani
+ 'ba' => 'баÑҡоÑÑÑа', # Bashkir
+ 'bar' => 'Boarisch', # Bavarian (Austro-Bavarian and South Tyrolean)
'bat-smg' => 'žemaitÄÅ¡ka', # Samogitian (deprecated code, 'sgs' in ISO 693-3 since 2010-06-30 )
'bbc' => 'Batak Toba', # Batak Toba (falls back to bbc-latn)
'bbc-latn' => 'Batak Toba', # Batak Toba
'bcc' => 'جÙÙØ³Ø±Û Ø¨ÙÙÚÛ', # Southern Balochi
'bcl' => 'Bikol Central', # Bikol: Central Bicolano language
- 'be' => 'белаÑÑÑкаÑ', # Belarusian normative
- 'be-tarask' => "белаÑÑÑÐºÐ°Ñ (ÑаÑаÑкевÑÑа)\xE2\x80\x8E", # Belarusian in Taraskievica orthography
- 'be-x-old' => "белаÑÑÑÐºÐ°Ñ (ÑаÑаÑкевÑÑа)\xE2\x80\x8E", # (be-tarask compat)
- 'bg' => 'бÑлгаÑÑки', # Bulgarian
+ 'be' => 'белаÑÑÑкаÑ', # Belarusian normative
+ 'be-tarask' => "белаÑÑÑÐºÐ°Ñ (ÑаÑаÑкевÑÑа)\xE2\x80\x8E", # Belarusian in Taraskievica orthography
+ 'be-x-old' => "белаÑÑÑÐºÐ°Ñ (ÑаÑаÑкевÑÑа)\xE2\x80\x8E", # (be-tarask compat)
+ 'bg' => 'бÑлгаÑÑки', # Bulgarian
'bgn' => 'رÙÚ Ú©Ù¾ØªÛ٠بÙÙÚÛ', # Western Balochi
- 'bh' => 'à¤à¥à¤à¤ªà¥à¤°à¥', # Bihari macro language. Falls back to Bhojpuri (bho)
- 'bho' => 'à¤à¥à¤à¤ªà¥à¤°à¥', # Bhojpuri
- 'bi' => 'Bislama', # Bislama
- 'bjn' => 'Bahasa Banjar', # Banjarese
- 'bm' => 'bamanankan', # Bambara
- 'bn' => 'বাà¦à¦²à¦¾', # Bengali
- 'bo' => 'à½à½¼à½à¼à½¡à½²à½', # Tibetan
- 'bpy' => 'বিষà§à¦£à§à¦ªà§à¦°à¦¿à¦¯à¦¼à¦¾ মণিপà§à¦°à§', # Bishnupriya Manipuri
- 'bqi' => 'بختÛارÛ', # Bakthiari
- 'br' => 'brezhoneg', # Breton
- 'brh' => 'BráhuÃ', # Brahui
- 'bs' => 'bosanski', # Bosnian
- 'bto' => 'Iriga Bicolano', # Rinconada Bikol
- 'bug' => 'á¨
ᨠá¨á¨á¨á¨', # Buginese
- 'bxr' => 'бÑÑÑад', # Buryat (Russia)
- 'ca' => 'català ', # Catalan
- 'cbk-zam' => 'Chavacano de Zamboanga', # Zamboanga Chavacano
- 'cdo' => 'Mìng-dÄ̤ng-ngá¹³Ì', # Min Dong
- 'ce' => 'ноÑ
Ñийн', # Chechen
- 'ceb' => 'Cebuano', # Cebuano
- 'ch' => 'Chamoru', # Chamorro
- 'cho' => 'Choctaw', # Choctaw
+ 'bh' => 'à¤à¥à¤à¤ªà¥à¤°à¥', # Bihari macro language. Falls back to Bhojpuri (bho)
+ 'bho' => 'à¤à¥à¤à¤ªà¥à¤°à¥', # Bhojpuri
+ 'bi' => 'Bislama', # Bislama
+ 'bjn' => 'Bahasa Banjar', # Banjarese
+ 'bm' => 'bamanankan', # Bambara
+ 'bn' => 'বাà¦à¦²à¦¾', # Bengali
+ 'bo' => 'à½à½¼à½à¼à½¡à½²à½', # Tibetan
+ 'bpy' => 'বিষà§à¦£à§à¦ªà§à¦°à¦¿à¦¯à¦¼à¦¾ মণিপà§à¦°à§', # Bishnupriya Manipuri
+ 'bqi' => 'بختÛارÛ', # Bakthiari
+ 'br' => 'brezhoneg', # Breton
+ 'brh' => 'BráhuÃ', # Brahui
+ 'bs' => 'bosanski', # Bosnian
+ 'bto' => 'Iriga Bicolano', # Rinconada Bikol
+ 'bug' => 'á¨
ᨠá¨á¨á¨á¨', # Buginese
+ 'bxr' => 'бÑÑÑад', # Buryat (Russia)
+ 'ca' => 'català ', # Catalan
+ 'cbk-zam' => 'Chavacano de Zamboanga', # Zamboanga Chavacano
+ 'cdo' => 'Mìng-dÄ̤ng-ngá¹³Ì', # Min Dong
+ 'ce' => 'ноÑ
Ñийн', # Chechen
+ 'ceb' => 'Cebuano', # Cebuano
+ 'ch' => 'Chamoru', # Chamorro
+ 'cho' => 'Choctaw', # Choctaw
'chr' => 'á£á³á©', # Cherokee
- 'chy' => 'Tsetsêhestâhese', # Cheyenne
- 'ckb' => 'Ú©ÙردÛÛ ÙاÙÛÙدÛ', # Central Kurdish
- 'co' => 'corsu', # Corsican
+ 'chy' => 'Tsetsêhestâhese', # Cheyenne
+ 'ckb' => 'Ú©ÙردÛÛ ÙاÙÛÙدÛ', # Central Kurdish
+ 'co' => 'corsu', # Corsican
'cps' => 'Capiceño', # Capiznon
- 'cr' => 'NÄhiyawÄwin / áá¦ááááá£', # Cree
- 'crh' => 'qırımtatarca', # Crimean Tatar (multiple scripts - defaults to Latin)
- 'crh-latn' => "qırımtatarca (Latin)\xE2\x80\x8E", # Crimean Tatar (Latin)
- 'crh-cyrl' => "кÑÑÑÑмÑаÑаÑджа (ÐиÑилл)\xE2\x80\x8E", # Crimean Tatar (Cyrillic)
- 'cs' => 'ÄeÅ¡tina', # Czech
- 'csb' => 'kaszëbsczi', # Cassubian
- 'cu' => 'ÑловѣнÑÑÐºÑ / â°â°â°â°â°¡â°â° â°â°â°', # Old Church Slavonic (ancient language)
- 'cv' => 'ЧÓваÑла', # Chuvash
- 'cy' => 'Cymraeg', # Welsh
- 'da' => 'dansk', # Danish
- 'de' => 'Deutsch', # German ("Du")
- 'de-at' => 'Ãsterreichisches Deutsch', # Austrian German
- 'de-ch' => 'Schweizer Hochdeutsch', # Swiss Standard German
- 'de-formal' => "Deutsch (Sie-Form)\xE2\x80\x8E", # German - formal address ("Sie")
- 'diq' => 'Zazaki', # Zazaki
+ 'cr' => 'NÄhiyawÄwin / áá¦ááááá£', # Cree
+ 'crh' => 'qırımtatarca', # Crimean Tatar (multiple scripts - defaults to Latin)
+ 'crh-latn' => "qırımtatarca (Latin)\xE2\x80\x8E", # Crimean Tatar (Latin)
+ 'crh-cyrl' => "кÑÑÑÑмÑаÑаÑджа (ÐиÑилл)\xE2\x80\x8E", # Crimean Tatar (Cyrillic)
+ 'cs' => 'ÄeÅ¡tina', # Czech
+ 'csb' => 'kaszëbsczi', # Cassubian
+ 'cu' => 'ÑловѣнÑÑÐºÑ / â°â°â°â°â°¡â°â° â°â°â°', # Old Church Slavonic (ancient language)
+ 'cv' => 'ЧÓваÑла', # Chuvash
+ 'cy' => 'Cymraeg', # Welsh
+ 'da' => 'dansk', # Danish
+ 'de' => 'Deutsch', # German ("Du")
+ 'de-at' => 'Ãsterreichisches Deutsch', # Austrian German
+ 'de-ch' => 'Schweizer Hochdeutsch', # Swiss Standard German
+ 'de-formal' => "Deutsch (Sie-Form)\xE2\x80\x8E", # German - formal address ("Sie")
+ 'diq' => 'Zazaki', # Zazaki
'dsb' => 'dolnoserbski', # Lower Sorbian
'dtp' => 'Dusun Bundu-liwan', # Central Dusun
'dty' => 'डà¥à¤à¥à¤²à¥', # Doteli
- 'dv' => 'ÞÞ¨ÞÞ¬ÞÞ¨ÞÞ¦ÞÞ°', # Dhivehi
- 'dz' => 'à½à½¼à½à¼à½', # Dzongkha (Bhutan)
- 'ee' => 'eÊegbe', # Ãwé
- 'egl' => 'Emilià n', # Emilian
- 'el' => 'Îλληνικά', # Greek
- 'eml' => 'emilià n e rumagnòl', # Emiliano-Romagnolo / Sammarinese
- 'en' => 'English', # English
- 'en-ca' => 'Canadian English', # Canadian English
- 'en-gb' => 'British English', # British English
- 'eo' => 'Esperanto', # Esperanto
- 'es' => 'español', # Spanish
- 'et' => 'eesti', # Estonian
- 'eu' => 'euskara', # Basque
+ 'dv' => 'ÞÞ¨ÞÞ¬ÞÞ¨ÞÞ¦ÞÞ°', # Dhivehi
+ 'dz' => 'à½à½¼à½à¼à½', # Dzongkha (Bhutan)
+ 'ee' => 'eÊegbe', # Ãwé
+ 'egl' => 'Emilià n', # Emilian
+ 'el' => 'Îλληνικά', # Greek
+ 'eml' => 'emilià n e rumagnòl', # Emiliano-Romagnolo / Sammarinese
+ 'en' => 'English', # English
+ 'en-ca' => 'Canadian English', # Canadian English
+ 'en-gb' => 'British English', # British English
+ 'eo' => 'Esperanto', # Esperanto
+ 'es' => 'español', # Spanish
+ 'et' => 'eesti', # Estonian
+ 'eu' => 'euskara', # Basque
'ext' => 'estremeñu', # Extremaduran
- 'fa' => 'ÙارسÛ', # Persian
- 'ff' => 'Fulfulde', # Fulfulde, Maasina
- 'fi' => 'suomi', # Finnish
+ 'fa' => 'ÙارسÛ', # Persian
+ 'ff' => 'Fulfulde', # Fulfulde, Maasina
+ 'fi' => 'suomi', # Finnish
'fit' => 'meänkieli', # Tornedalen Finnish
- 'fiu-vro' => 'Võro', # Võro (deprecated code, 'vro' in ISO 639-3 since 2009-01-16)
- 'fj' => 'Na Vosa Vakaviti', # Fijian
- 'fo' => 'føroyskt', # Faroese
- 'fr' => 'français', # French
+ 'fiu-vro' => 'Võro', # Võro (deprecated code, 'vro' in ISO 639-3 since 2009-01-16)
+ 'fj' => 'Na Vosa Vakaviti', # Fijian
+ 'fo' => 'føroyskt', # Faroese
+ 'fr' => 'français', # French
'frc' => 'français cadien', # Cajun French
- 'frp' => 'arpetan', # Franco-Provençal/Arpitan
- 'frr' => 'Nordfriisk', # North Frisian
- 'fur' => 'furlan', # Friulian
- 'fy' => 'Frysk', # Frisian
- 'ga' => 'Gaeilge', # Irish
- 'gag' => 'Gagauz', # Gagauz
- 'gan' => 'è´èª', # Gan (multiple scripts - defaults to Traditional)
- 'gan-hans' => "èµ£è¯ï¼ç®ä½ï¼\xE2\x80\x8E", # Gan (Simplified Han)
- 'gan-hant' => "è´èªï¼ç¹é«ï¼\xE2\x80\x8E", # Gan (Traditional Han)
- 'gd' => 'GÃ idhlig', # Scots Gaelic
- 'gl' => 'galego', # Galician
- 'glk' => 'Ú¯ÛÙÚ©Û', # Gilaki
- 'gn' => 'Avañe\'ẽ', # GuaranÃ, Paraguayan
- 'gom' => 'à¤à¥à¤à¤¯à¤à¥ à¤à¥à¤à¤à¤£à¥ / Gõychi Konknni', # Goan Konkani
- 'gom-deva' => 'à¤à¥à¤à¤¯à¤à¥ à¤à¥à¤à¤à¤£à¥', # Goan Konkani (Devanagari script)
- 'gom-latn' => 'Gõychi Konknni', # Goan Konkani (Latin script)
- 'got' => 'ð²ð¿ðð¹ððº', # Gothic
+ 'frp' => 'arpetan', # Franco-Provençal/Arpitan
+ 'frr' => 'Nordfriisk', # North Frisian
+ 'fur' => 'furlan', # Friulian
+ 'fy' => 'Frysk', # Frisian
+ 'ga' => 'Gaeilge', # Irish
+ 'gag' => 'Gagauz', # Gagauz
+ 'gan' => 'è´èª', # Gan (multiple scripts - defaults to Traditional)
+ 'gan-hans' => "èµ£è¯ï¼ç®ä½ï¼\xE2\x80\x8E", # Gan (Simplified Han)
+ 'gan-hant' => "è´èªï¼ç¹é«ï¼\xE2\x80\x8E", # Gan (Traditional Han)
+ 'gd' => 'GÃ idhlig', # Scots Gaelic
+ 'gl' => 'galego', # Galician
+ 'glk' => 'Ú¯ÛÙÚ©Û', # Gilaki
+ 'gn' => 'Avañe\'ẽ', # GuaranÃ, Paraguayan
+ 'gom' => 'à¤à¥à¤à¤¯à¤à¥ à¤à¥à¤à¤à¤£à¥ / Gõychi Konknni', # Goan Konkani
+ 'gom-deva' => 'à¤à¥à¤à¤¯à¤à¥ à¤à¥à¤à¤à¤£à¥', # Goan Konkani (Devanagari script)
+ 'gom-latn' => 'Gõychi Konknni', # Goan Konkani (Latin script)
+ 'got' => 'ð²ð¿ðð¹ððº', # Gothic
'grc' => 'á¼ÏÏαία á¼Î»Î»Î·Î½Î¹Îºá½´', # Ancient Greek
- 'gsw' => 'Alemannisch', # Alemannic
- 'gu' => 'àªà«àªàª°àª¾àª¤à«', # Gujarati
- 'gv' => 'Gaelg', # Manx
- 'ha' => 'Hausa', # Hausa
- 'hak' => '客家èª/Hak-kâ-ngî', # Hakka
- 'haw' => 'Hawaiʻi', # Hawaiian
- 'he' => '×¢×ר×ת', # Hebrew
- 'hi' => 'हिनà¥à¤¦à¥', # Hindi
- 'hif' => 'Fiji Hindi', # Fijian Hindi (multiple scripts - defaults to Latin)
- 'hif-latn' => 'Fiji Hindi', # Fiji Hindi (latin)
- 'hil' => 'Ilonggo', # Hiligaynon
- 'ho' => 'Hiri Motu', # Hiri Motu
- 'hr' => 'hrvatski', # Croatian
+ 'gsw' => 'Alemannisch', # Alemannic
+ 'gu' => 'àªà«àªàª°àª¾àª¤à«', # Gujarati
+ 'gv' => 'Gaelg', # Manx
+ 'ha' => 'Hausa', # Hausa
+ 'hak' => '客家èª/Hak-kâ-ngî', # Hakka
+ 'haw' => 'Hawaiʻi', # Hawaiian
+ 'he' => '×¢×ר×ת', # Hebrew
+ 'hi' => 'हिनà¥à¤¦à¥', # Hindi
+ 'hif' => 'Fiji Hindi', # Fijian Hindi (multiple scripts - defaults to Latin)
+ 'hif-latn' => 'Fiji Hindi', # Fiji Hindi (latin)
+ 'hil' => 'Ilonggo', # Hiligaynon
+ 'ho' => 'Hiri Motu', # Hiri Motu
+ 'hr' => 'hrvatski', # Croatian
'hrx' => 'Hunsrik', # Riograndenser Hunsrückisch
- 'hsb' => 'hornjoserbsce', # Upper Sorbian
- 'ht' => 'Kreyòl ayisyen', # Haitian Creole French
- 'hu' => 'magyar', # Hungarian
- 'hy' => 'ÕÕ¡ÕµÕ¥ÖÕ¥Õ¶', # Armenian
- 'hz' => 'Otsiherero', # Herero
- 'ia' => 'interlingua', # Interlingua (IALA)
- 'id' => 'Bahasa Indonesia', # Indonesian
- 'ie' => 'Interlingue', # Interlingue (Occidental)
- 'ig' => 'Igbo', # Igbo
- 'ii' => 'êê', # Sichuan Yi
- 'ik' => 'Iñupiak', # Inupiak (Inupiatun, Northwest Alaska / Inupiatun, North Alaskan)
- 'ike-cans' => 'áááááá¦', # Inuktitut, Eastern Canadian (Unified Canadian Aboriginal Syllabics)
- 'ike-latn' => 'inuktitut', # Inuktitut, Eastern Canadian (Latin script)
- 'ilo' => 'Ilokano', # Ilokano
- 'inh' => 'ÐÓалгÓай', # Ingush
- 'io' => 'Ido', # Ido
- 'is' => 'Ãslenska', # Icelandic
- 'it' => 'italiano', # Italian
- 'iu' => 'áááááá¦/inuktitut', # Inuktitut (macro language, see ike/ikt, falls back to ike-cans)
- 'ja' => 'æ¥æ¬èª', # Japanese
- 'jam' => 'Patois', # Jamaican Creole English
- 'jbo' => 'la .lojban.', # Lojban
- 'jut' => 'jysk', # Jutish / Jutlandic
- 'jv' => 'Basa Jawa', # Javanese
- 'ka' => 'á¥áá áá£áá', # Georgian
- 'kaa' => 'Qaraqalpaqsha', # Karakalpak
- 'kab' => 'Taqbaylit', # Kabyle
- 'kbd' => 'ÐдÑгÑбзÑ', # Kabardian
- 'kbd-cyrl' => 'ÐдÑгÑбзÑ', # Kabardian (Cyrillic)
- 'kg' => 'Kongo', # Kongo, (FIXME!) should probaly be KiKongo or KiKoongo
- 'khw' => 'Ú©Ú¾Ùار', # Khowar
- 'ki' => 'Gĩkũyũ', # Gikuyu
- 'kiu' => 'Kırmancki', # Kirmanjki
- 'kj' => 'Kwanyama', # Kwanyama
- 'kk' => 'ÒазаÒÑа', # Kazakh (multiple scripts - defaults to Cyrillic)
- 'kk-arab' => "ÙازاÙشا (تٴÙتÛ)\xE2\x80\x8F", # Kazakh Arabic
- 'kk-cyrl' => "ÒазаÒÑа (киÑил)\xE2\x80\x8E", # Kazakh Cyrillic
- 'kk-latn' => "qazaqÅa (latın)\xE2\x80\x8E", # Kazakh Latin
- 'kk-cn' => "ÙازاÙشا (جÛÙÚ¯Ù)\xE2\x80\x8F", # Kazakh (China)
- 'kk-kz' => "ÒазаÒÑа (ÒазаÒÑÑан)\xE2\x80\x8E", # Kazakh (Kazakhstan)
- 'kk-tr' => "qazaqÅa (Türkïya)\xE2\x80\x8E", # Kazakh (Turkey)
- 'kl' => 'kalaallisut', # Inuktitut, Greenlandic/Greenlandic/Kalaallisut (kal)
- 'km' => 'áá¶áá¶ááááá', # Khmer, Central
- 'kn' => 'à²à²¨à³à²¨à²¡', # Kannada
- 'ko' => 'íêµì´', # Korean
- 'ko-kp' => 'íêµì´ (ì¡°ì )', # Korean (DPRK)
+ 'hsb' => 'hornjoserbsce', # Upper Sorbian
+ 'ht' => 'Kreyòl ayisyen', # Haitian Creole French
+ 'hu' => 'magyar', # Hungarian
+ 'hy' => 'ÕÕ¡ÕµÕ¥ÖÕ¥Õ¶', # Armenian
+ 'hz' => 'Otsiherero', # Herero
+ 'ia' => 'interlingua', # Interlingua (IALA)
+ 'id' => 'Bahasa Indonesia', # Indonesian
+ 'ie' => 'Interlingue', # Interlingue (Occidental)
+ 'ig' => 'Igbo', # Igbo
+ 'ii' => 'êê', # Sichuan Yi
+ 'ik' => 'Iñupiak', # Inupiak (Inupiatun, Northwest Alaska / Inupiatun, North Alaskan)
+ 'ike-cans' => 'áááááá¦', # Inuktitut, Eastern Canadian (Unified Canadian Aboriginal Syllabics)
+ 'ike-latn' => 'inuktitut', # Inuktitut, Eastern Canadian (Latin script)
+ 'ilo' => 'Ilokano', # Ilokano
+ 'inh' => 'ÐÓалгÓай', # Ingush
+ 'io' => 'Ido', # Ido
+ 'is' => 'Ãslenska', # Icelandic
+ 'it' => 'italiano', # Italian
+ 'iu' => 'áááááá¦/inuktitut', # Inuktitut (macro language, see ike/ikt, falls back to ike-cans)
+ 'ja' => 'æ¥æ¬èª', # Japanese
+ 'jam' => 'Patois', # Jamaican Creole English
+ 'jbo' => 'la .lojban.', # Lojban
+ 'jut' => 'jysk', # Jutish / Jutlandic
+ 'jv' => 'Basa Jawa', # Javanese
+ 'ka' => 'á¥áá áá£áá', # Georgian
+ 'kaa' => 'Qaraqalpaqsha', # Karakalpak
+ 'kab' => 'Taqbaylit', # Kabyle
+ 'kbd' => 'ÐдÑгÑбзÑ', # Kabardian
+ 'kbd-cyrl' => 'ÐдÑгÑбзÑ', # Kabardian (Cyrillic)
+ 'kg' => 'Kongo', # Kongo, (FIXME!) should probaly be KiKongo or KiKoongo
+ 'khw' => 'Ú©Ú¾Ùار', # Khowar
+ 'ki' => 'Gĩkũyũ', # Gikuyu
+ 'kiu' => 'Kırmancki', # Kirmanjki
+ 'kj' => 'Kwanyama', # Kwanyama
+ 'kk' => 'ÒазаÒÑа', # Kazakh (multiple scripts - defaults to Cyrillic)
+ 'kk-arab' => "ÙازاÙشا (تٴÙتÛ)\xE2\x80\x8F", # Kazakh Arabic
+ 'kk-cyrl' => "ÒазаÒÑа (киÑил)\xE2\x80\x8E", # Kazakh Cyrillic
+ 'kk-latn' => "qazaqÅa (latın)\xE2\x80\x8E", # Kazakh Latin
+ 'kk-cn' => "ÙازاÙشا (جÛÙÚ¯Ù)\xE2\x80\x8F", # Kazakh (China)
+ 'kk-kz' => "ÒазаÒÑа (ÒазаÒÑÑан)\xE2\x80\x8E", # Kazakh (Kazakhstan)
+ 'kk-tr' => "qazaqÅa (Türkïya)\xE2\x80\x8E", # Kazakh (Turkey)
+ 'kl' => 'kalaallisut', # Inuktitut, Greenlandic/Greenlandic/Kalaallisut (kal)
+ 'km' => 'áá¶áá¶ááááá', # Khmer, Central
+ 'kn' => 'à²à²¨à³à²¨à²¡', # Kannada
+ 'ko' => 'íêµì´', # Korean
+ 'ko-kp' => 'íêµì´ (ì¡°ì )', # Korean (DPRK)
'koi' => 'ÐеÑем Ðоми', # Komi-Permyak
- 'kr' => 'Kanuri', # Kanuri, Central
+ 'kr' => 'Kanuri', # Kanuri, Central
'krc' => 'кÑаÑаÑай-малкÑаÑ', # Karachay-Balkar
'kri' => 'Krio', # Krio
'krj' => 'Kinaray-a', # Kinaray-a
- 'ks' => 'à¤à¥à¤¶à¥à¤° / کٲشÙر', # Kashmiri (multiple scripts - defaults to Perso-Arabic)
- 'ks-arab' => 'کٲشÙر', # Kashmiri (Perso-Arabic script)
- 'ks-deva' => 'à¤à¥à¤¶à¥à¤°', # Kashmiri (Devanagari script)
- 'ksh' => 'Ripoarisch', # Ripuarian
- 'ku' => 'Kurdî', # Kurdish (multiple scripts - defaults to Latin)
- 'ku-latn' => "Kurdî (latînî)\xE2\x80\x8E", # Northern Kurdish (Latin script)
- 'ku-arab' => "ÙÙرد٠(عÛرÛبÛ)\xE2\x80\x8F", # Northern Kurdish (Arabic script) (falls back to ckb)
- 'kv' => 'коми', # Komi-Zyrian (Cyrillic is common script but also written in Latin script)
- 'kw' => 'kernowek', # Cornish
- 'ky' => 'ÐÑÑгÑзÑа', # Kirghiz
- 'la' => 'Latina', # Latin
- 'lad' => 'Ladino', # Ladino
- 'lb' => 'Lëtzebuergesch', # Luxemburguish
- 'lbe' => 'лаккÑ', # Lak
- 'lez' => 'лезги', # Lezgi
- 'lfn' => 'Lingua Franca Nova', # Lingua Franca Nova
- 'lg' => 'Luganda', # Ganda
- 'li' => 'Limburgs', # Limburgian
- 'lij' => 'Ligure', # Ligurian
- 'liv' => 'LÄ«võ kÄļ', # Livonian
- 'lki' => 'ÙÛÚ©Ûâ', # Laki
- 'lmo' => 'lumbaart', # Lombard
- 'ln' => 'lingála', # Lingala
- 'lo' => 'ລາວ', # Laotian
- 'lrc' => 'ÙÛØ±Û Ø´ÙÙ
اÙÛ', # Northern Luri
+ 'ks' => 'à¤à¥à¤¶à¥à¤° / کٲشÙر', # Kashmiri (multiple scripts - defaults to Perso-Arabic)
+ 'ks-arab' => 'کٲشÙر', # Kashmiri (Perso-Arabic script)
+ 'ks-deva' => 'à¤à¥à¤¶à¥à¤°', # Kashmiri (Devanagari script)
+ 'ksh' => 'Ripoarisch', # Ripuarian
+ 'ku' => 'Kurdî', # Kurdish (multiple scripts - defaults to Latin)
+ 'ku-latn' => "Kurdî (latînî)\xE2\x80\x8E", # Northern Kurdish (Latin script)
+ 'ku-arab' => "ÙÙرد٠(عÛرÛبÛ)\xE2\x80\x8F", # Northern Kurdish (Arabic script) (falls back to ckb)
+ 'kv' => 'коми', # Komi-Zyrian (Cyrillic is common script but also written in Latin script)
+ 'kw' => 'kernowek', # Cornish
+ 'ky' => 'ÐÑÑгÑзÑа', # Kirghiz
+ 'la' => 'Latina', # Latin
+ 'lad' => 'Ladino', # Ladino
+ 'lb' => 'Lëtzebuergesch', # Luxemburguish
+ 'lbe' => 'лаккÑ', # Lak
+ 'lez' => 'лезги', # Lezgi
+ 'lfn' => 'Lingua Franca Nova', # Lingua Franca Nova
+ 'lg' => 'Luganda', # Ganda
+ 'li' => 'Limburgs', # Limburgian
+ 'lij' => 'Ligure', # Ligurian
+ 'liv' => 'LÄ«võ kÄļ', # Livonian
+ 'lki' => 'ÙÛÚ©Ûâ', # Laki
+ 'lmo' => 'lumbaart', # Lombard
+ 'ln' => 'lingála', # Lingala
+ 'lo' => 'ລາວ', # Laotian
+ 'lrc' => 'ÙÛØ±Û Ø´ÙÙ
اÙÛ', # Northern Luri
'loz' => 'Silozi', # Lozi
- 'lt' => 'lietuvių', # Lithuanian
- 'ltg' => 'latgaļu', # Latgalian
+ 'lt' => 'lietuvių', # Lithuanian
+ 'ltg' => 'latgaļu', # Latgalian
'lus' => 'Mizo ţawng', # Mizo/Lushai
'luz' => 'ÙØ¦Ø±Û Ø¯ÙÙÙ
ÛÙÛ', # Southern Luri
- 'lv' => 'latviešu', # Latvian
- 'lzh' => 'æè¨', # Literary Chinese, bug 8217
- 'lzz' => 'Lazuri', # Laz
+ 'lv' => 'latviešu', # Latvian
+ 'lzh' => 'æè¨', # Literary Chinese, bug 8217
+ 'lzz' => 'Lazuri', # Laz
'mai' => 'मà¥à¤¥à¤¿à¤²à¥', # Maithili
'map-bms' => 'Basa Banyumasan', # Banyumasan
- 'mdf' => 'мокÑенÑ', # Moksha
- 'mg' => 'Malagasy', # Malagasy
- 'mh' => 'Ebon', # Marshallese
- 'mhr' => 'олÑк маÑий', # Eastern Mari
- 'mi' => 'MÄori', # Maori
- 'min' => 'Baso Minangkabau', # Minangkabau
- 'mk' => 'македонÑки', # Macedonian
- 'ml' => 'മലയാളà´', # Malayalam
- 'mn' => 'монгол', # Halh Mongolian (Cyrillic) (ISO 639-3: khk)
- 'mo' => 'молдовенÑÑкÑ', # Moldovan, deprecated
- 'mr' => 'मराठà¥', # Marathi
- 'mrj' => 'кÑÑÑк маÑÑ', # Hill Mari
- 'ms' => 'Bahasa Melayu', # Malay
- 'mt' => 'Malti', # Maltese
- 'mus' => 'Mvskoke', # Muskogee/Creek
- 'mwl' => 'Mirandés', # Mirandese
- 'my' => 'áá¼ááºáá¬áá¬áá¬', # Burmese
- 'myv' => 'ÑÑзÑнÑ', # Erzya
- 'mzn' => 'Ù
ازÙرÙÙÛ', # Mazanderani
- 'na' => 'Dorerin Naoero', # Nauruan
- 'nah' => 'NÄhuatl', # Nahuatl (not in ISO 639-3)
+ 'mdf' => 'мокÑенÑ', # Moksha
+ 'mg' => 'Malagasy', # Malagasy
+ 'mh' => 'Ebon', # Marshallese
+ 'mhr' => 'олÑк маÑий', # Eastern Mari
+ 'mi' => 'MÄori', # Maori
+ 'min' => 'Baso Minangkabau', # Minangkabau
+ 'mk' => 'македонÑки', # Macedonian
+ 'ml' => 'മലയാളà´', # Malayalam
+ 'mn' => 'монгол', # Halh Mongolian (Cyrillic) (ISO 639-3: khk)
+ 'mo' => 'молдовенÑÑкÑ', # Moldovan, deprecated
+ 'mr' => 'मराठà¥', # Marathi
+ 'mrj' => 'кÑÑÑк маÑÑ', # Hill Mari
+ 'ms' => 'Bahasa Melayu', # Malay
+ 'mt' => 'Malti', # Maltese
+ 'mus' => 'Mvskoke', # Muskogee/Creek
+ 'mwl' => 'Mirandés', # Mirandese
+ 'my' => 'áá¼ááºáá¬áá¬áá¬', # Burmese
+ 'myv' => 'ÑÑзÑнÑ', # Erzya
+ 'mzn' => 'Ù
ازÙرÙÙÛ', # Mazanderani
+ 'na' => 'Dorerin Naoero', # Nauruan
+ 'nah' => 'NÄhuatl', # Nahuatl (not in ISO 639-3)
'nan' => 'Bân-lâm-gú', # Min-nan, bug 8217
- 'nap' => 'Napulitano', # Neapolitan, bug 43793
- 'nb' => "norsk bokmål", # Norwegian (Bokmal)
- 'nds' => 'Plattdüütsch', # Low German ''or'' Low Saxon
- 'nds-nl' => 'Nedersaksies', # aka Nedersaksisch: Dutch Low Saxon
- 'ne' => 'नà¥à¤ªà¤¾à¤²à¥', # Nepali
- 'new' => 'नà¥à¤ªà¤¾à¤² à¤à¤¾à¤·à¤¾', # Newar / Nepal Bhasha
- 'ng' => 'Oshiwambo', # Ndonga
- 'niu' => 'NiuÄ', # Niuean
- 'nl' => 'Nederlands', # Dutch
- 'nl-informal' => "Nederlands (informeel)\xE2\x80\x8E", # Dutch (informal address ("je"))
- 'nn' => "norsk nynorsk", # Norwegian (Nynorsk)
- 'no' => "norsk bokmål", # Norwegian (falls back to nb).
- 'nov' => 'Novial', # Novial
- 'nrm' => 'Nouormand', # Norman
- 'nso' => 'Sesotho sa Leboa', # Northern Sotho
- 'nv' => 'Diné bizaad', # Navajo
- 'ny' => 'Chi-Chewa', # Chichewa
- 'oc' => 'occitan', # Occitan
- 'olo' => 'Livvinкarjala', # Livvi-Karelian
- 'om' => 'Oromoo', # Oromo
- 'or' => 'à¬à¬¡à¬¼à¬¿à¬', # Oriya
+ 'nap' => 'Napulitano', # Neapolitan, bug 43793
+ 'nb' => 'norsk bokmål', # Norwegian (Bokmal)
+ 'nds' => 'Plattdüütsch', # Low German ''or'' Low Saxon
+ 'nds-nl' => 'Nedersaksies', # aka Nedersaksisch: Dutch Low Saxon
+ 'ne' => 'नà¥à¤ªà¤¾à¤²à¥', # Nepali
+ 'new' => 'नà¥à¤ªà¤¾à¤² à¤à¤¾à¤·à¤¾', # Newar / Nepal Bhasha
+ 'ng' => 'Oshiwambo', # Ndonga
+ 'niu' => 'NiuÄ', # Niuean
+ 'nl' => 'Nederlands', # Dutch
+ 'nl-informal' => "Nederlands (informeel)\xE2\x80\x8E", # Dutch (informal address ("je"))
+ 'nn' => 'norsk nynorsk', # Norwegian (Nynorsk)
+ 'no' => 'norsk bokmål', # Norwegian (falls back to nb).
+ 'nov' => 'Novial', # Novial
+ 'nrm' => 'Nouormand', # Norman
+ 'nso' => 'Sesotho sa Leboa', # Northern Sotho
+ 'nv' => 'Diné bizaad', # Navajo
+ 'ny' => 'Chi-Chewa', # Chichewa
+ 'oc' => 'occitan', # Occitan
+ 'olo' => 'Livvinкarjala', # Livvi-Karelian
+ 'om' => 'Oromoo', # Oromo
+ 'or' => 'à¬à¬¡à¬¼à¬¿à¬', # Oriya
'os' => 'ÐÑон', # Ossetic, bug 29091
'pa' => 'ਪੰà¨à¨¾à¨¬à©', # Eastern Punjabi (Gurmukhi script) (pan)
- 'pag' => 'Pangasinan', # Pangasinan
- 'pam' => 'Kapampangan', # Pampanga
- 'pap' => 'Papiamentu', # Papiamentu
- 'pcd' => 'Picard', # Picard
- 'pdc' => 'Deitsch', # Pennsylvania German
- 'pdt' => 'Plautdietsch', # Plautdietsch/Mennonite Low German
- 'pfl' => 'Pälzisch', # Palatinate German
- 'pi' => 'पालि', # Pali
+ 'pag' => 'Pangasinan', # Pangasinan
+ 'pam' => 'Kapampangan', # Pampanga
+ 'pap' => 'Papiamentu', # Papiamentu
+ 'pcd' => 'Picard', # Picard
+ 'pdc' => 'Deitsch', # Pennsylvania German
+ 'pdt' => 'Plautdietsch', # Plautdietsch/Mennonite Low German
+ 'pfl' => 'Pälzisch', # Palatinate German
+ 'pi' => 'पालि', # Pali
'pih' => 'Norfuk / Pitkern', # Norfuk/Pitcairn/Norfolk
- 'pl' => 'polski', # Polish
- 'pms' => 'Piemontèis', # Piedmontese
- 'pnb' => 'Ù¾ÙجابÛ', # Western Punjabi
- 'pnt' => 'ΠονÏιακά', # Pontic/Pontic Greek
- 'prg' => 'Prūsiskan', # Prussian
- 'ps' => 'Ù¾ÚتÙ', # Pashto
- 'pt' => 'português', # Portuguese
- 'pt-br' => 'português do Brasil', # Brazilian Portuguese
- 'qu' => 'Runa Simi', # Southern Quechua
- 'qug' => 'Runa shimi', # Kichwa/Northern Quechua (temporarily used until Kichwa has its own)
- 'rgn' => 'Rumagnôl', # Romagnol
- 'rif' => 'Tarifit', # Tarifit
- 'rm' => 'rumantsch', # Raeto-Romance
- 'rmy' => 'Romani', # Vlax Romany
- 'rn' => 'Kirundi', # Rundi/Kirundi/Urundi
- 'ro' => 'românÄ', # Romanian
+ 'pl' => 'polski', # Polish
+ 'pms' => 'Piemontèis', # Piedmontese
+ 'pnb' => 'Ù¾ÙجابÛ', # Western Punjabi
+ 'pnt' => 'ΠονÏιακά', # Pontic/Pontic Greek
+ 'prg' => 'Prūsiskan', # Prussian
+ 'ps' => 'Ù¾ÚتÙ', # Pashto
+ 'pt' => 'português', # Portuguese
+ 'pt-br' => 'português do Brasil', # Brazilian Portuguese
+ 'qu' => 'Runa Simi', # Southern Quechua
+ 'qug' => 'Runa shimi', # Kichwa/Northern Quechua (temporarily used until Kichwa has its own)
+ 'rgn' => 'Rumagnôl', # Romagnol
+ 'rif' => 'Tarifit', # Tarifit
+ 'rm' => 'rumantsch', # Raeto-Romance
+ 'rmy' => 'Romani', # Vlax Romany
+ 'rn' => 'Kirundi', # Rundi/Kirundi/Urundi
+ 'ro' => 'românÄ', # Romanian
'roa-rup' => 'armãneashti', # Aromanian (deprecated code, 'rup' exists in ISO 693-3)
- 'roa-tara' => 'tarandÃne', # Tarantino
- 'ru' => 'ÑÑÑÑкий', # Russian
- 'rue' => 'ÑÑÑинÑÑкÑй', # Rusyn
+ 'roa-tara' => 'tarandÃne', # Tarantino
+ 'ru' => 'ÑÑÑÑкий', # Russian
+ 'rue' => 'ÑÑÑинÑÑкÑй', # Rusyn
'rup' => 'armãneashti', # Aromanian
- 'ruq' => 'VlÄheÅte', # Megleno-Romanian (multiple scripts - defaults to Latin)
- 'ruq-cyrl' => 'ÐлаÑ
еÑÑе', # Megleno-Romanian (Cyrillic script)
- # 'ruq-grek' => 'ÎλαεÏÏε', # Megleno-Romanian (Greek script)
- 'ruq-latn' => 'VlÄheÅte', # Megleno-Romanian (Latin script)
- 'rw' => 'Kinyarwanda', # Kinyarwanda, should possibly be Kinyarwandi
- 'sa' => 'सà¤à¤¸à¥à¤à¥à¤¤à¤®à¥', # Sanskrit
+ 'ruq' => 'VlÄheÅte', # Megleno-Romanian (multiple scripts - defaults to Latin)
+ 'ruq-cyrl' => 'ÐлаÑ
еÑÑе', # Megleno-Romanian (Cyrillic script)
+ # 'ruq-grek' => 'ÎλαεÏÏε', # Megleno-Romanian (Greek script)
+ 'ruq-latn' => 'VlÄheÅte', # Megleno-Romanian (Latin script)
+ 'rw' => 'Kinyarwanda', # Kinyarwanda, should possibly be Kinyarwandi
+ 'sa' => 'सà¤à¤¸à¥à¤à¥à¤¤à¤®à¥', # Sanskrit
'sah' => 'ÑаÑ
а ÑÑла', # Sakha
- 'sat' => 'Santali', # Santali
- 'sc' => 'sardu', # Sardinian
- 'scn' => 'sicilianu', # Sicilian
- '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
- 'sg' => 'Sängö', # Sango/Sangho
+ 'sat' => 'Santali', # Santali
+ 'sc' => 'sardu', # Sardinian
+ 'scn' => 'sicilianu', # Sicilian
+ '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
+ 'sg' => 'Sängö', # Sango/Sangho
'sgs' => 'žemaitÄÅ¡ka', # Samogitian
'sh' => 'srpskohrvatski / ÑÑпÑкоÑ
ÑваÑÑки', # Serbocroatian
- 'shi' => 'TaÅ¡lḥiyt/âµâ´°âµâµâµâµâµ', # Tachelhit (multiple scripts - defaults to Latin)
- 'shi-tfng' => 'âµâ´°âµâµâµâµâµ', # Tachelhit (Tifinagh script)
- 'shi-latn' => 'Tašlḥiyt', # Tachelhit (Latin script)
- 'si' => 'à·à·à¶à·à¶½', # Sinhalese
- 'simple' => 'Simple English', # Simple English
- 'sk' => 'slovenÄina', # Slovak
- 'sl' => 'slovenÅ¡Äina', # Slovenian
- 'sli' => 'Schläsch', # Lower Selisian
- 'sm' => 'Gagana Samoa', # Samoan
- 'sma' => 'Ã
arjelsaemien', # Southern Sami
- 'sn' => 'chiShona', # Shona
- 'so' => 'Soomaaliga', # Somali
- 'sq' => 'shqip', # Albanian
- 'sr' => 'ÑÑпÑки / srpski', # Serbian (multiple scripts - defaults to Cyrillic)
- 'sr-ec' => "ÑÑпÑки (ÑиÑилиÑа)\xE2\x80\x8E", # Serbian Cyrillic ekavian
- 'sr-el' => "srpski (latinica)\xE2\x80\x8E", # Serbian Latin ekavian
- 'srn' => 'Sranantongo', # Sranan Tongo
- 'ss' => 'SiSwati', # Swati
- 'st' => 'Sesotho', # Southern Sotho
- 'stq' => 'Seeltersk', # Saterland Frisian
- 'su' => 'Basa Sunda', # Sundanese
- 'sv' => 'svenska', # Swedish
- 'sw' => 'Kiswahili', # Swahili
- 'szl' => 'Ålůnski', # Silesian
- 'ta' => 'தமிழà¯', # Tamil
+ 'shi' => 'TaÅ¡lḥiyt/âµâ´°âµâµâµâµâµ', # Tachelhit (multiple scripts - defaults to Latin)
+ 'shi-tfng' => 'âµâ´°âµâµâµâµâµ', # Tachelhit (Tifinagh script)
+ 'shi-latn' => 'Tašlḥiyt', # Tachelhit (Latin script)
+ 'si' => 'à·à·à¶à·à¶½', # Sinhalese
+ 'simple' => 'Simple English', # Simple English
+ 'sk' => 'slovenÄina', # Slovak
+ 'sl' => 'slovenÅ¡Äina', # Slovenian
+ 'sli' => 'Schläsch', # Lower Selisian
+ 'sm' => 'Gagana Samoa', # Samoan
+ 'sma' => 'Ã
arjelsaemien', # Southern Sami
+ 'sn' => 'chiShona', # Shona
+ 'so' => 'Soomaaliga', # Somali
+ 'sq' => 'shqip', # Albanian
+ 'sr' => 'ÑÑпÑки / srpski', # Serbian (multiple scripts - defaults to Cyrillic)
+ 'sr-ec' => "ÑÑпÑки (ÑиÑилиÑа)\xE2\x80\x8E", # Serbian Cyrillic ekavian
+ 'sr-el' => "srpski (latinica)\xE2\x80\x8E", # Serbian Latin ekavian
+ 'srn' => 'Sranantongo', # Sranan Tongo
+ 'ss' => 'SiSwati', # Swati
+ 'st' => 'Sesotho', # Southern Sotho
+ 'stq' => 'Seeltersk', # Saterland Frisian
+ 'su' => 'Basa Sunda', # Sundanese
+ 'sv' => 'svenska', # Swedish
+ 'sw' => 'Kiswahili', # Swahili
+ 'szl' => 'Ålůnski', # Silesian
+ 'ta' => 'தமிழà¯', # Tamil
'tcy' => 'ತà³à²³à³', # Tulu
- 'te' => 'à°¤à±à°²à±à°à±', # Telugu
- 'tet' => 'tetun', # Tetun
- 'tg' => 'Ñоҷикӣ', # Tajiki (falls back to tg-cyrl)
- 'tg-cyrl' => 'Ñоҷикӣ', # Tajiki (Cyrllic script) (default)
- 'tg-latn' => 'tojikī', # Tajiki (Latin script)
- 'th' => 'à¹à¸à¸¢', # Thai
- 'ti' => 'áµááá', # Tigrinya
- 'tk' => 'Türkmençe', # Turkmen
- 'tl' => 'Tagalog', # Tagalog
- 'tly' => 'ÑолÑÑÓ Ð·Ñвон', # Talysh
- 'tn' => 'Setswana', # Setswana
- 'to' => 'lea faka-Tonga', # Tonga (Tonga Islands)
- 'tokipona' => 'Toki Pona', # Toki Pona
- 'tpi' => 'Tok Pisin', # Tok Pisin
- 'tr' => 'Türkçe', # Turkish
+ 'te' => 'à°¤à±à°²à±à°à±', # Telugu
+ 'tet' => 'tetun', # Tetun
+ 'tg' => 'Ñоҷикӣ', # Tajiki (falls back to tg-cyrl)
+ 'tg-cyrl' => 'Ñоҷикӣ', # Tajiki (Cyrllic script) (default)
+ 'tg-latn' => 'tojikī', # Tajiki (Latin script)
+ 'th' => 'à¹à¸à¸¢', # Thai
+ 'ti' => 'áµááá', # Tigrinya
+ 'tk' => 'Türkmençe', # Turkmen
+ 'tl' => 'Tagalog', # Tagalog
+ 'tly' => 'ÑолÑÑÓ Ð·Ñвон', # Talysh
+ 'tn' => 'Setswana', # Setswana
+ 'to' => 'lea faka-Tonga', # Tonga (Tonga Islands)
+ 'tokipona' => 'Toki Pona', # Toki Pona
+ 'tpi' => 'Tok Pisin', # Tok Pisin
+ 'tr' => 'Türkçe', # Turkish
'tru' => 'Ṫuroyo', # Turoyo
- 'ts' => 'Xitsonga', # Tsonga
- 'tt' => 'ÑаÑаÑÑа/tatarça', # Tatar (multiple scripts - defaults to Cyrillic)
- 'tt-cyrl' => 'ÑаÑаÑÑа', # Tatar (Cyrillic script) (default)
- 'tt-latn' => 'tatarça', # Tatar (Latin script)
- 'tum' => 'chiTumbuka', # Tumbuka
- 'tw' => 'Twi', # Twi, (FIXME!)
- 'ty' => 'reo tahiti', # Tahitian
- 'tyv' => 'ÑÑва дÑл', # Tyvan
- 'tzm' => 'âµâ´°âµâ´°âµ£âµâµâµ', # Tamazight
- 'udm' => 'ÑдмÑÑÑ', # Udmurt
- 'ug' => 'ئÛÙغÛرÚÛ / Uyghurche', # Uyghur (multiple scripts - defaults to Arabic)
+ 'ts' => 'Xitsonga', # Tsonga
+ 'tt' => 'ÑаÑаÑÑа/tatarça', # Tatar (multiple scripts - defaults to Cyrillic)
+ 'tt-cyrl' => 'ÑаÑаÑÑа', # Tatar (Cyrillic script) (default)
+ 'tt-latn' => 'tatarça', # Tatar (Latin script)
+ 'tum' => 'chiTumbuka', # Tumbuka
+ 'tw' => 'Twi', # Twi, (FIXME!)
+ 'ty' => 'reo tahiti', # Tahitian
+ 'tyv' => 'ÑÑва дÑл', # Tyvan
+ 'tzm' => 'âµâ´°âµâ´°âµ£âµâµâµ', # Tamazight
+ 'udm' => 'ÑдмÑÑÑ', # Udmurt
+ 'ug' => 'ئÛÙغÛرÚÛ / Uyghurche', # Uyghur (multiple scripts - defaults to Arabic)
'ug-arab' => 'ئÛÙغÛرÚÛ', # Uyghur (Arabic script) (default)
'ug-latn' => 'Uyghurche', # Uyghur (Latin script)
- 'uk' => 'ÑкÑаÑнÑÑка', # Ukrainian
- 'ur' => 'اردÙ', # Urdu
- 'uz' => "oÊ»zbekcha/ÑзбекÑа", # Uzbek (multiple scripts - defaults to Latin)
- 'uz-cyrl' => "ÑзбекÑа", # Uzbek Cyrillic
- 'uz-latn' => "oʻzbekcha", # Uzbek Latin (default)
- 've' => 'Tshivenda', # Venda
- 'vec' => 'vèneto', # Venetian
- 'vep' => 'vepsän kelâ', # Veps
- 'vi' => 'Tiếng Viá»t', # Vietnamese
+ 'uk' => 'ÑкÑаÑнÑÑка', # Ukrainian
+ 'ur' => 'اردÙ', # Urdu
+ 'uz' => 'oÊ»zbekcha/ÑзбекÑа', # Uzbek (multiple scripts - defaults to Latin)
+ 'uz-cyrl' => 'ÑзбекÑа', # Uzbek Cyrillic
+ 'uz-latn' => 'oʻzbekcha', # Uzbek Latin (default)
+ 've' => 'Tshivenda', # Venda
+ 'vec' => 'vèneto', # Venetian
+ 'vep' => 'vepsän kelâ', # Veps
+ 'vi' => 'Tiếng Viá»t', # Vietnamese
'vls' => 'West-Vlams', # West Flemish
'vmf' => 'Mainfränkisch', # Upper Franconian, Main-Franconian
- 'vo' => 'Volapük', # Volapük
- 'vot' => 'VaÄÄa', # Vod/Votian
- 'vro' => 'Võro', # Võro
- 'wa' => 'walon', # Walloon
+ 'vo' => 'Volapük', # Volapük
+ 'vot' => 'VaÄÄa', # Vod/Votian
+ 'vro' => 'Võro', # Võro
+ 'wa' => 'walon', # Walloon
'war' => 'Winaray', # Waray-Waray
- 'wo' => 'Wolof', # Wolof
- 'wuu' => 'å´è¯', # Wu Chinese
- 'xal' => 'Ñ
алÑмг', # Kalmyk-Oirat
- 'xh' => 'isiXhosa', # Xhosan
- 'xmf' => 'ááá áááá£á á', # Mingrelian
- 'yi' => '××Ö´××ש', # Yiddish
- 'yo' => 'Yorùbá', # Yoruba
- 'yue' => 'ç²µèª', # Cantonese
- 'za' => 'Vahcuengh', # Zhuang
- 'zea' => 'Zeêuws', # Zeeuws/Zeaws
- 'zh' => 'ä¸æ', # (ZhÅng Wén) - Chinese
- 'zh-classical' => 'æè¨', # Classical Chinese/Literary Chinese -- (see bug 8217)
- 'zh-cn' => "ä¸æï¼ä¸å½å¤§éï¼\xE2\x80\x8E", # Chinese (PRC)
- 'zh-hans' => "ä¸æï¼ç®ä½ï¼\xE2\x80\x8E", # Mandarin Chinese (Simplified Chinese script) (cmn-hans)
- 'zh-hant' => "ä¸æï¼ç¹é«ï¼\xE2\x80\x8E", # Mandarin Chinese (Traditional Chinese script) (cmn-hant)
- 'zh-hk' => "ä¸æï¼é¦æ¸¯ï¼\xE2\x80\x8E", # Chinese (Hong Kong)
- 'zh-min-nan' => 'Bân-lâm-gú', # Min-nan -- (see bug 8217)
- 'zh-mo' => "ä¸æï¼æ¾³éï¼\xE2\x80\x8E", # Chinese (Macau)
- 'zh-my' => "ä¸æï¼é©¬æ¥è¥¿äºï¼\xE2\x80\x8E", # Chinese (Malaysia)
- 'zh-sg' => "ä¸æï¼æ°å å¡ï¼\xE2\x80\x8E", # Chinese (Singapore)
- 'zh-tw' => "ä¸æï¼å°ç£ï¼\xE2\x80\x8E", # Chinese (Taiwan)
- 'zh-yue' => 'ç²µèª', # Cantonese -- (see bug 8217)
- 'zu' => 'isiZulu' # Zulu
+ 'wo' => 'Wolof', # Wolof
+ 'wuu' => 'å´è¯', # Wu Chinese
+ 'xal' => 'Ñ
алÑмг', # Kalmyk-Oirat
+ 'xh' => 'isiXhosa', # Xhosan
+ 'xmf' => 'ááá áááá£á á', # Mingrelian
+ 'yi' => '××Ö´××ש', # Yiddish
+ 'yo' => 'Yorùbá', # Yoruba
+ 'yue' => 'ç²µèª', # Cantonese
+ 'za' => 'Vahcuengh', # Zhuang
+ 'zea' => 'Zeêuws', # Zeeuws/Zeaws
+ 'zh' => 'ä¸æ', # (ZhÅng Wén) - Chinese
+ 'zh-classical' => 'æè¨', # Classical Chinese/Literary Chinese -- (see bug 8217)
+ 'zh-cn' => "ä¸æï¼ä¸å½å¤§éï¼\xE2\x80\x8E", # Chinese (PRC)
+ 'zh-hans' => "ä¸æï¼ç®ä½ï¼\xE2\x80\x8E", # Mandarin Chinese (Simplified Chinese script) (cmn-hans)
+ 'zh-hant' => "ä¸æï¼ç¹é«ï¼\xE2\x80\x8E", # Mandarin Chinese (Traditional Chinese script) (cmn-hant)
+ 'zh-hk' => "ä¸æï¼é¦æ¸¯ï¼\xE2\x80\x8E", # Chinese (Hong Kong)
+ 'zh-min-nan' => 'Bân-lâm-gú', # Min-nan -- (see bug 8217)
+ 'zh-mo' => "ä¸æï¼æ¾³éï¼\xE2\x80\x8E", # Chinese (Macau)
+ 'zh-my' => "ä¸æï¼é©¬æ¥è¥¿äºï¼\xE2\x80\x8E", # Chinese (Malaysia)
+ 'zh-sg' => "ä¸æï¼æ°å å¡ï¼\xE2\x80\x8E", # Chinese (Singapore)
+ 'zh-tw' => "ä¸æï¼å°ç£ï¼\xE2\x80\x8E", # Chinese (Taiwan)
+ 'zh-yue' => 'ç²µèª', # Cantonese -- (see bug 8217)
+ 'zu' => 'isiZulu' # Zulu
];
}
diff --git a/languages/i18n/af.json b/languages/i18n/af.json
index 0c51902c2f..5ef02cebc1 100644
--- a/languages/i18n/af.json
+++ b/languages/i18n/af.json
@@ -1163,7 +1163,7 @@
"recentchangeslinked-page": "Bladsynaam:",
"recentchangeslinked-to": "Besigtig wysigings aan bladsye met skakels na die bladsy",
"recentchanges-page-added-to-category": "[[:$1]] by kategorie gevoeg",
- "recentchanges-page-added-to-category-bundled": "[[:$1]] en {{PLURAL:$2|een bladsy|$2 bladsye}} by kategorie gevoeg",
+ "recentchanges-page-added-to-category-bundled": "[[:$1]] en [[Special:WhatLinksHere/$1|{{PLURAL:$2|een bladsy|$2 bladsye}}]] by kategorie gevoeg",
"recentchanges-page-removed-from-category": "[[:$1]] uit kategorie verwyder",
"recentchanges-page-removed-from-category-bundled": "[[:$1]] en {{PLURAL:$2|een bladsy|$2 bladsye}} van kategorie verwyder",
"autochange-username": "Outomatiese MediaWiki-wysiging",
@@ -1583,8 +1583,6 @@
"categories": "Kategorieë",
"categoriespagetext": "Die volgende {{PLURAL:$1|kategorie|kategorieë}} bevat bladsye of media.\n[[Special:UnusedCategories|Ongebruikte kategorieë]] word nie gewys nie.\nSien ook [[Special:WantedCategories|nie-bestaande kategorieë met verwysings]].",
"categoriesfrom": "Wys kategorieë vanaf:",
- "special-categories-sort-count": "sorteer volgens getal",
- "special-categories-sort-abc": "sorteer alfabeties",
"deletedcontributions": "Geskrapte gebruikersbydraes",
"deletedcontributions-title": "Geskrapte gebruikersbydraes",
"sp-deletedcontributions-contribs": "bydraes",
@@ -2151,10 +2149,6 @@
"import-logentry-upload-detail": "$1 {{PLURAL:$1|weergawe|weergawes}}",
"import-logentry-interwiki-detail": "$1 {{PLURAL:$1|weergawe|weergawes}} vanaf $2",
"javascripttest": "JavaScript toetsing",
- "javascripttest-pagetext-noframework": "Hierdie bladsy is gereserveer vir die uitvoer van JavaScript-toetse.",
- "javascripttest-pagetext-unknownframework": "Onbekende toetsraamwerk \"$1\".",
- "javascripttest-pagetext-frameworks": "Kies een van die volgende toetsraamwerke: $1",
- "javascripttest-pagetext-skins": "Kies 'n omslag waarmee die toets uitgevoer moet word:",
"javascripttest-qunit-intro": "Sien die [$1 toetsdokumentasie] op mediawiki.org.",
"tooltip-pt-userpage": "{{GENDER:|My}} gebruikerbladsy",
"tooltip-pt-anonuserpage": "Die gebruikersbladsy vir die IP-adres waaronder u wysigings aanbring",
@@ -2400,8 +2394,8 @@
"exif-colorspace": "Kleurruimte",
"exif-componentsconfiguration": "Betekenis van elke komponent",
"exif-compressedbitsperpixel": "Beeldkompressiemetode",
- "exif-pixelydimension": "Beeldwydte",
- "exif-pixelxdimension": "Beeldhoogte",
+ "exif-pixelxdimension": "Beeldwydte",
+ "exif-pixelydimension": "Beeldhoogte",
"exif-usercomment": "Opmerkings",
"exif-relatedsoundfile": "Verwante klanklêer",
"exif-datetimeoriginal": "Gegewens opgestel op",
@@ -2833,7 +2827,6 @@
"version-libraries-description": "Beskrywing",
"version-libraries-authors": "Outeurs",
"redirect": "Aanstuur volgens lêer, gebruiker, bladsy of weergawenommer",
- "redirect-legend": "Aanstuur na 'n lêer of bladsy",
"redirect-summary": "Hierdie spesiale bladsy stuur aan na 'n lêer (as 'n lêernaam verskaf word), 'n bladsy (as 'n weergawe-nommer verskaf word) of 'n gebruikersblad (as 'n gebruiker-ID verskaf word).",
"redirect-submit": "OK",
"redirect-lookup": "Soek volgens:",
@@ -2845,7 +2838,6 @@
"redirect-not-exists": "Waarde nie gevind nie",
"fileduplicatesearch": "Soek duplikaatlêers",
"fileduplicatesearch-summary": "Soek na duplikaatlêers volgens hul hutswaardes.",
- "fileduplicatesearch-legend": "Soek vir 'n duplikaat",
"fileduplicatesearch-filename": "Lêernaam:",
"fileduplicatesearch-submit": "Soek",
"fileduplicatesearch-info": "$1 à $2 piksels Lêergrootte: $3 MIME-tipe: $4",
diff --git a/languages/i18n/am.json b/languages/i18n/am.json
index 4971ff7ebd..58c4a1a1da 100644
--- a/languages/i18n/am.json
+++ b/languages/i18n/am.json
@@ -1125,7 +1125,6 @@
"cachedspecial-refresh-now": "áá¨á¨á»áá ááá¨áµ",
"categories": "ááµá¦á½",
"categoriespagetext": "á áá á¥á« áá
áµ ááµá¥ á¨áá¨á°á áá°á¦á½ ááá«áá¢\n[[Special:UnusedCategories|Unused categories]] are not shown here.\nAlso see [[Special:WantedCategories|wanted categories]].",
- "special-categories-sort-abc": "á áá°á á°á« áá°áá°á©",
"deletedcontributions": "á¨á á£á á¨á ááµ á áµá°áá½á¦á½",
"deletedcontributions-title": "á¨á á£á á¨á ááµ á áµá°áá½á¦á½",
"sp-deletedcontributions-contribs": "á áµá°áá½á¦á½",
@@ -1656,8 +1655,8 @@
"exif-flashpixversion": "á¨á°á°áá Flashpix ááá«",
"exif-componentsconfiguration": "á¨á¨ááá ááá© áµááá",
"exif-compressedbitsperpixel": "á¨áµáá áá¨áá
áá´",
- "exif-pixelydimension": "á¥ááá°á á¨áµáá áµááµ",
- "exif-pixelxdimension": "á¥ááá°á á¨áµáá áááµ",
+ "exif-pixelxdimension": "á¥ááá°á á¨áµáá áµááµ",
+ "exif-pixelydimension": "á¥ááá°á á¨áµáá áááµ",
"exif-usercomment": "á¨á°á ááá áá ááá«",
"exif-relatedsoundfile": "á¨á°ááá° á¨áµáá½ ááá",
"exif-datetimeoriginal": "áá¨áá á¨á°áá á¨á áµ ááá á°ááµ",
@@ -1906,7 +1905,6 @@
"version-software-product": "á¶ááµáá",
"version-software-version": "ááá«",
"fileduplicatesearch": "áá
á áááá½ áááá",
- "fileduplicatesearch-legend": "áá
á ááááá",
"fileduplicatesearch-filename": "á¨ááá áµá:",
"fileduplicatesearch-submit": "ááá",
"fileduplicatesearch-noresults": "«$1» á¨áá£á ááá á áá°áááá¢",
diff --git a/languages/i18n/an.json b/languages/i18n/an.json
index a7d5d44a43..0af7f4507a 100644
--- a/languages/i18n/an.json
+++ b/languages/i18n/an.json
@@ -147,7 +147,7 @@
"cancel": "Cancelar",
"moredotdotdot": "Más...",
"mypage": "Pachina",
- "mytalk": "Pachina de discusión",
+ "mytalk": "Pachina de descusión",
"anontalk": "Pachina de descusión d'ista IP",
"navigation": "Navego",
"and": " y",
@@ -1356,8 +1356,6 @@
"categories": "CategorÃas",
"categoriespagetext": "{{PLURAL:$1|A siguient categorÃa contién|As siguients categorÃas contienen}} pachinas u fichers multimedia.\nNo s'amuestran aquà as [[Special:UnusedCategories|categorÃas no emplegatas]].\nSe veigan tamién as [[Special:WantedCategories|categorÃas requiestas]].",
"categoriesfrom": "Amostrar as categorÃa que prencipien por:",
- "special-categories-sort-count": "ordenar por recuento",
- "special-categories-sort-abc": "ordenar alfabeticament",
"deletedcontributions": "Contrebucions d'usuario borratas",
"deletedcontributions-title": "Contrebucions d'usuario borradas",
"sp-deletedcontributions-contribs": "contrebucions",
@@ -1876,10 +1874,6 @@
"import-logentry-upload-detail": "$1 {{PLURAL:$1|versión|versions}}",
"import-logentry-interwiki-detail": "$1 {{PLURAL:$1|versión|versions}} dende $2",
"javascripttest": "Prebatinas de JavaScript",
- "javascripttest-pagetext-noframework": "Ista pachina ye reservada ta fer as prebas de JavaScrip.",
- "javascripttest-pagetext-unknownframework": "Bastida de prebas \"$1\" desconoixida.",
- "javascripttest-pagetext-frameworks": "Por favor, trigue una d'as siguients bastidas de prebas: $1",
- "javascripttest-pagetext-skins": "Trigue una apariencia ta fer as prebas con ella:",
"javascripttest-qunit-intro": "Mire-se [$1 a documentación de prebatinas] en mediawiki.org",
"tooltip-pt-userpage": "A suya pachina d'usuario",
"tooltip-pt-anonuserpage": "A pachina d'usuario de l'adreza IP dende a que ye editando",
@@ -2074,8 +2068,8 @@
"exif-colorspace": "Espacio de colors",
"exif-componentsconfiguration": "Significación de cada component",
"exif-compressedbitsperpixel": "Modo de compresión d'a imachen",
- "exif-pixelydimension": "Amplaria d'a imachen",
- "exif-pixelxdimension": "Altaria d'a imachen",
+ "exif-pixelxdimension": "Amplaria d'a imachen",
+ "exif-pixelydimension": "Altaria d'a imachen",
"exif-usercomment": "Comentarios de l'usuario",
"exif-relatedsoundfile": "Fichero d'audio relacionato",
"exif-datetimeoriginal": "Calendata y hora de cheneración d'os datos",
@@ -2450,7 +2444,7 @@
"watchlisttools-view": "Amostrar cambeos",
"watchlisttools-edit": "Veyer y editar a lista de seguimiento",
"watchlisttools-raw": "Editar a lista de seguimiento en formato texto",
- "signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|discusión]])",
+ "signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|descusión]])",
"duplicate-defaultsort": "Pare cuenta: A clau d'ordenación por defecto «$2» anula l'anterior clau d'ordenación por defecto «$1».",
"version": "Versión",
"version-extensions": "Estensions instalatas",
@@ -2476,7 +2470,6 @@
"version-software-version": "Versión",
"fileduplicatesearch": "Mirar fichers duplicatos",
"fileduplicatesearch-summary": "Mirar archivos duplicatos basatos en a suya valura hash.",
- "fileduplicatesearch-legend": "Mirar duplicatos",
"fileduplicatesearch-filename": "Nombre d'o fichero:",
"fileduplicatesearch-submit": "Mirar",
"fileduplicatesearch-info": "$1 Ã $2 pixels Grandaria d'o fichero: $3 tipo MIME: $4",
diff --git a/languages/i18n/ar.json b/languages/i18n/ar.json
index 1370b5a7ae..882a694a69 100644
--- a/languages/i18n/ar.json
+++ b/languages/i18n/ar.json
@@ -77,6 +77,7 @@
"tog-watchdefault": "أض٠اÙصÙØات ÙاÙÙ
ÙÙات اÙت٠أعدÙÙا Ø¥ÙÙ ÙائÙ
Ø© Ù
راÙبتÙ",
"tog-watchmoves": "أض٠اÙصÙØات ÙاÙÙ
ÙÙات اÙت٠أÙÙÙÙا Ø¥ÙÙ ÙائÙ
Ø© Ù
راÙبتÙ",
"tog-watchdeletion": "أض٠اÙصÙØات ÙاÙÙ
ÙÙات اÙت٠أØØ°ÙÙا Ø¥ÙÙ ÙائÙ
Ø© Ù
راÙبتÙ",
+ "tog-watchuploads": "أض٠اÙÙ
ÙÙات اÙجدÙدة اÙت٠رÙعتÙا Ø¥ÙÙ ÙائÙ
Ø© Ù
راÙبتÙ",
"tog-watchrollback": "أض٠إÙÙ ÙائÙ
Ø© Ù
راÙبت٠اÙصÙØات اÙت٠ÙÙت أجرÙت ÙÙÙا استرجاعات",
"tog-minordefault": "أشÙÙر Ù٠اÙتعدÙÙات عÙ٠أÙÙا Ø·ÙÙÙØ© Ù
بدئÙا",
"tog-previewontop": "أظÙر Ù
عاÙÙØ© اÙÙص ÙÙ٠صÙدÙ٠اÙتØرÙر",
@@ -387,13 +388,13 @@
"cannotdelete-title": "تعذÙر Øذ٠اÙصÙØØ© \"$1\"",
"delete-hook-aborted": "أجÙض خطÙا٠اÙØØ°Ù.\nÙÙ
ÙÙدÙ
أ٠تÙضÙØ.",
"no-null-revision": "تعذر Ø¥Ùشاء Ù
راجعة جدÙدة Ùارغة ÙصÙØØ© \"$1\"",
- "badtitle": "عÙÙا٠سÙØ¡",
+ "badtitle": "عÙÙا٠سÙئ",
"badtitletext": "عÙÙا٠اÙصÙØØ© اÙÙ
Ø·ÙÙب Ø¥Ù
ا غÙر صØÙØ Ø£Ù ÙØ§Ø±ØºØ ÙربÙ
ا اÙرابط بÙ٠اÙÙغات أ٠بÙ٠اÙÙ
شارÙع خاطئ.\nربÙ
ا ÙØÙÙ Ù
Øار٠Ùا تصÙØ ÙÙاستخداÙ
Ù٠اÙعÙاÙÙÙ.",
"title-invalid-empty": "عÙÙا٠اÙصÙØØ© اÙÙ
Ø·ÙÙبة Ùارغ Ø£Ù ÙØتÙ٠اسÙ
اÙÙطا٠ÙÙØ·.",
"title-invalid-utf8": "عÙÙا٠اÙصÙØØ© اÙÙ
Ø·ÙÙب ÙØتÙ٠سÙسÙØ© Ù
Øار٠UTF-8 غÙر صاÙØØ©.",
"title-invalid-interwiki": "عÙÙا٠اÙصÙØØ© اÙÙ
Ø·ÙÙب ÙتضÙ
Ù ÙصÙØ© ÙØÙÙØ© Ùغة ÙÙÙ Ù
ا Ùا ÙÙ
Ù٠استخداÙ
Ù Ù٠اÙعÙاÙÙÙ.",
"title-invalid-talk-namespace": "عÙÙا٠اÙصÙØØ© اÙÙ
Ø·ÙÙبة ÙØ´Ùر Ø¥Ù٠صÙØØ© ÙÙاش غÙر Ù
ÙجÙدة.",
- "title-invalid-characters": "عÙÙا٠اÙصÙØØ© اÙÙ
Ø·ÙÙب ÙتضÙ
Ù Ù
Øار٠غÙر صاÙØØ©: \"$1\"",
+ "title-invalid-characters": "عÙÙا٠اÙصÙØØ© اÙÙ
Ø·ÙÙب ÙتضÙ
٠رÙ
ÙزÙا غÙر صاÙØØ©: \"$1\"",
"title-invalid-leading-colon": "عÙÙا٠اÙصÙØØ© اÙÙ
Ø·ÙÙب ÙتضÙ
Ù ÙاصÙØ© غÙر صاÙØØ© Ù٠بداÙتÙ.",
"perfcached": "اÙبÙاÙات اÙتاÙÙØ© Ù
خبأة Ù Ùد Ùا تÙÙÙ Ù
Øدثة. {{PLURAL:$1||ÙتÙجة ÙاØدة|ÙتÙجتاÙ|$1 Ùتائج|$1 ÙتÙجة}} عÙ٠اÙØ£Ùثر {{PLURAL:$1||Ù
خبÙأة|Ù
خبÙأتاÙ|Ù
خبÙأة}}.",
"perfcachedts": "اÙبÙاÙات اÙتاÙÙØ© Ù
خزÙØ©Ø ÙÙا٠آخر تØدÙØ« ÙÙا ÙÙ $1. اÙعدد اÙØ£Ùص٠ÙÙÙتائج اÙÙ
خزÙØ© ÙÙ {{PLURAL:$4||ÙتÙجة ÙاØدة|ÙتÙجتاÙ|$4 Ùتائج|$4 ÙتÙجة}}.",
@@ -424,7 +425,7 @@
"exception-nologin": "غÙر Ù
سج٠اÙدخÙÙ",
"exception-nologin-text": "سج٠اÙدخÙÙ ÙÙتÙ
ÙÙ Ù
٠عرض Ùذ٠اÙصÙØØ© أ٠إجراء Ùذا اÙÙعÙ.",
"exception-nologin-text-manual": "اÙرجاء $1 ÙتتÙ
ÙÙ Ù
٠اÙÙصÙÙ ÙÙذ٠اÙصÙØØ© أ٠أداء Ùذا اÙإجراء.",
- "virus-badscanner": "ضبط سÙØ¡: Ù
Ø§Ø³Ø ÙÙرÙسات غÙر Ù
عرÙÙ: ''$1''",
+ "virus-badscanner": "ضبط سÙئ: Ù
Ø§Ø³Ø ÙÙرÙسات غÙر Ù
عرÙÙ: ''$1''",
"virus-scanfailed": "Ùش٠اÙÙ
Ø³Ø (ÙÙد $1)",
"virus-unknownscanner": "Ù
ضاد ÙÙرÙسات غÙر Ù
عرÙÙ:",
"logouttext": "Ø£Ùت اÙآ٠غÙر Ù
سج٠اÙدخÙÙ. Ùد تر٠بعض اÙصÙØات ÙÙ
ا Ù٠أÙÙ Ù
ا زÙت Ù
سج٠اÙدخÙÙØ ÙØ°ÙÙ Øت٠تÙرغ اÙتخزÙ٠اÙÙ
ؤÙت ÙÙ Ù
تصÙØÙ.",
@@ -578,6 +579,7 @@
"botpasswords-deleted-title": "ÙÙÙ
Ø© سر اÙبÙت ØØ°Ùت",
"botpasswords-deleted-body": "ÙÙÙ
Ø© سر اÙبÙت\"$1\" Ùد ØØ°Ùت.",
"botpasswords-no-provider": "BotPasswordsSessionProvider غÙر Ù
تاØ.",
+ "botpasswords-restriction-failed": "ÙÙÙد ÙÙÙ
Ø© Ù
رÙر اÙبÙت تÙ
Ùع Ùذا اÙÙÙÙج.",
"resetpass_forbidden": "ÙÙÙ
ات اÙسر Ùا ÙÙ
Ù٠تغÙÙرÙا",
"resetpass-no-info": "Ùجب أ٠تÙÙÙ Ù
سج٠اÙدخÙÙ ÙÙÙصÙ٠إÙÙ Ùذ٠اÙصÙØØ© Ù
باشرة.",
"resetpass-submit-loggedin": "تغÙÙر ÙÙÙ
Ø© اÙسر",
@@ -1495,6 +1497,7 @@
"uploadstash-badtoken": "ÙÙ
ÙÙØ¬Ø Ø£Ø¯Ø§Ø¡ Ø°Ù٠اÙعÙ
ÙØ Ø±Ø¨Ù
ا ÙØ£Ù Ùثائ٠تÙÙÙض اÙتØرÙر اÙخاصة ب٠Ù
ÙتÙÙØ© اÙصÙاØÙØ©. ØاÙÙ Ù
رة أخرÙ.",
"uploadstash-errclear": "ÙØ´Ùت عÙ
ÙÙØ© Ù
Ø³Ø Ø§ÙÙ
ÙÙات.",
"uploadstash-refresh": "تØدÙØ« ÙائÙ
Ø© اÙÙ
ÙÙات",
+ "uploadstash-thumbnail": "اعرض صÙرة Ù
صغرة",
"invalid-chunk-offset": "Ùطعة Ø£ÙÙست غÙر صاÙØØ©",
"img-auth-accessdenied": "رÙض اÙÙصÙÙ",
"img-auth-nopathinfo": "PATH_INFO Ù
ÙÙÙد.\nخادÙÙ
Ù ÙÙس Ù
ضبÙطا٠ÙتÙ
رÙر Ùذ٠اÙÙ
عÙÙÙ
Ø©.\nÙد ÙÙÙÙ Ù
بÙÙا٠عÙÙ ÙظاÙ
CGI ÙÙا ÙÙ
ÙÙ٠دعÙ
img_auth.\nراجع https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Image_Authorization.",
@@ -1745,6 +1748,7 @@
"apihelp-no-such-module": "اÙÙØدة \"$1\" غÙر Ù
ÙجÙدة.",
"apisandbox": "Ù
Ùعب API",
"apisandbox-jsonly": "اÙجاÙا سÙرÙبت Ù
Ø·ÙÙبة ÙاستخداÙ
Ù
Ùعب API",
+ "apisandbox-api-disabled": "ÙاجÙØ© برÙ
جة اÙتطبÙÙ API Ù
عطÙØ© ÙÙ Ùذا اÙÙ
ÙÙع.",
"apisandbox-fullscreen": "Ùسع اÙÙÙØØ©",
"apisandbox-unfullscreen": "أظÙر اÙصÙØØ©",
"apisandbox-submit": "عÙ
٠اÙØ·Ùب",
@@ -1807,8 +1811,6 @@
"categories-submit": "أظÙر",
"categoriespagetext": "{{PLURAL:$1|اÙتصÙÙ٠اÙتاÙÙ ÙØتÙÙ|اÙتصÙÙÙات اÙتاÙÙØ© تØتÙÙ}} عÙ٠صÙØات Ø£Ù Ùسائط.\n[[Special:UnusedCategories|اÙتصÙÙÙات غÙر اÙÙ
ستخدÙ
Ø©]] غÙر Ù
عرÙضة ÙÙا.\nاÙظر Ø£Ùضا٠[[Special:WantedCategories|اÙتصÙÙÙات اÙÙ
Ø·ÙÙبة]].",
"categoriesfrom": "اعرض اÙتصÙÙÙات ابتداء Ù
Ù:",
- "special-categories-sort-count": "رتب باÙعدد",
- "special-categories-sort-abc": "رتب ÙجائÙاÙ",
"deletedcontributions": "Ù
ساÙÙ
ات اÙÙ
ستخدÙ
اÙÙ
ØØ°ÙÙØ©",
"deletedcontributions-title": "Ù
ساÙÙ
ات اÙÙ
ستخدÙ
اÙÙ
ØØ°ÙÙØ©",
"sp-deletedcontributions-contribs": "Ù
ساÙÙ
ات",
@@ -2424,11 +2426,7 @@
"import-logentry-upload-detail": "{{PLURAL:$1|Ùا Ù
راجعات|Ù
راجعة ÙاØدة|Ù
راجعتاÙ|$1 Ù
راجعات|$1 Ù
راجعة}}",
"import-logentry-interwiki-detail": "تÙ
استÙراد {{PLURAL:$1||Ù
راجعة ÙاØدة|Ù
راجعتÙÙ|$1 Ù
راجعات|$1 Ù
راجعة}} Ù
Ù $2",
"javascripttest": "اختبار جاÙاسÙربت",
- "javascripttest-pagetext-noframework": "Ùذ٠اÙصÙØØ© Ù
ØجÙزة Ùإجراء أختبارات اÙجاÙا سÙرÙبت.",
- "javascripttest-pagetext-unknownframework": "إطار اختبار غÙر Ù
عرÙÙ \"$1\".",
"javascripttest-pagetext-unknownaction": "Ùع٠غÙر Ù
عرÙÙ \"$1\".",
- "javascripttest-pagetext-frameworks": "اÙرجاء اختÙار Ø£Øد أطر اÙاختبارات اÙتاÙÙØ©: $1",
- "javascripttest-pagetext-skins": "ÙÙ
باختÙار اÙÙاجÙØ© Ùإجراء اÙØ¥Øتبارات بÙا:",
"javascripttest-qunit-intro": "راجع [$1 ÙØ«ÙÙØ© اÙاختبار] عÙÙ mediawiki.org.",
"tooltip-pt-userpage": "{{GENDER:|صÙØØ© اÙÙ
ستخدÙ
}} اÙخاصة بÙ",
"tooltip-pt-anonuserpage": "صÙØØ© اÙÙ
ستخدÙ
ÙÙØ£Ùب٠اÙذ٠تÙÙÙ
باÙتØرÙر Ù
Ù Ø®ÙاÙÙ",
@@ -2699,8 +2697,8 @@
"exif-colorspace": "Ùضاء اÙØ£ÙÙاÙ",
"exif-componentsconfiguration": "Ù
عÙÙ ÙÙ Ù
ÙÙÙØ©",
"exif-compressedbitsperpixel": "Ø·Ùر ضغط اÙصÙرة",
- "exif-pixelydimension": "عرض اÙصÙرة",
- "exif-pixelxdimension": "ارتÙاع اÙصÙرة",
+ "exif-pixelxdimension": "عرض اÙصÙرة",
+ "exif-pixelydimension": "ارتÙاع اÙصÙرة",
"exif-usercomment": "تعÙÙÙات اÙÙ
ستخدÙ
",
"exif-relatedsoundfile": "Ù
Ù٠صÙت٠Ù
رتبط",
"exif-datetimeoriginal": "تارÙØ® ÙÙÙت تÙÙÙد اÙبÙاÙات",
@@ -3243,7 +3241,6 @@
"version-libraries-description": "اÙÙصÙ",
"version-libraries-authors": "اÙÙ
ؤÙÙÙÙ",
"redirect": "تØÙÙÙ Øسب اÙÙ
ÙÙ , اÙÙ
ستخدÙ
,اÙصÙØØ© , Ù
عر٠اÙدخÙÙ",
- "redirect-legend": "تØÙÙ٠إÙÙ Ù
Ù٠أ٠صÙØØ©",
"redirect-summary": "Ùذ٠اÙصÙØØ© اÙخاصة تØÙÙ٠إÙÙ Ù
ÙÙ (باسÙ
Ù) أ٠صÙØØ© (برÙÙ
Ø¥Øد٠Ù
راجعاتÙا) أ٠إÙ٠صÙØØ© Ù
ستخدÙ
(برÙÙ
٠اÙتعرÙÙÙ). اÙاستخداÙ
[[{{#Special:Redirect}}/file/Example.jpg]] أ٠[[{{#Special:Redirect}}/revision/328429]] أ٠[[{{#Special:Redirect}}/user/101]].",
"redirect-submit": "ØÙÙÙ",
"redirect-lookup": "ابØØ« ÙÙ:",
@@ -3256,7 +3253,6 @@
"redirect-not-exists": "اÙÙ
Ø·ÙÙب غÙر Ù
ÙجÙد",
"fileduplicatesearch": "بØØ« ع٠Ù
ÙÙات Ù
Ùررة",
"fileduplicatesearch-summary": "ابØØ« ع٠اÙÙ
ÙÙات اÙÙ
Ùررة بÙاء عÙÙ ÙÙÙ
اÙÙاش.",
- "fileduplicatesearch-legend": "بØØ« ع٠Ù
Ùرر",
"fileduplicatesearch-filename": "اسÙ
اÙÙ
ÙÙ:",
"fileduplicatesearch-submit": "بØØ«",
"fileduplicatesearch-info": "$1 à $2 بÙس٠ØجÙ
اÙÙ
ÙÙ: $3 ÙÙع MIME: $4",
@@ -3637,5 +3633,30 @@
"sessionprovider-generic": "جÙسات $1",
"sessionprovider-mediawiki-session-cookiesessionprovider": "جÙسات ÙائÙ
Ø© عÙÙ Ù
ÙÙات تعرÙ٠اÙارتباط (ÙÙÙÙز)",
"sessionprovider-nocookies": "Ùد ÙتÙ
تعطÙ٠اÙÙÙÙÙز. تأÙد Ù
٠تÙ
ÙÙÙ Ù
ÙÙات تعرÙ٠اÙأرتباط Ùأبد Ù
رةأخرÙ.",
- "randomrootpage": "صÙØØ© جذر عشÙائÙØ©"
+ "randomrootpage": "صÙØØ© جذر عشÙائÙØ©",
+ "log-action-filter-block": "ÙÙع اÙÙ
Ùع:",
+ "log-action-filter-delete": "ÙÙع اÙØØ°Ù:",
+ "log-action-filter-import": "ÙÙع اÙاستÙراد:",
+ "log-action-filter-managetags": "ÙÙع Ùع٠إدارة اÙÙسÙÙ
:",
+ "log-action-filter-move": "ÙÙع اÙÙÙÙ:",
+ "log-action-filter-newusers": "ÙÙع Ø¥Ùشاء اÙØساب:",
+ "log-action-filter-protect": "ÙÙع اÙØÙ
اÙØ©:",
+ "log-action-filter-rights": "ÙÙع تغÙÙر اÙصÙاØÙØ©",
+ "log-action-filter-upload": "ÙÙع اÙرÙع:",
+ "log-action-filter-all": "اÙÙÙ",
+ "log-action-filter-block-block": "Ù
Ùع",
+ "log-action-filter-block-reblock": "Ù
Ùع اÙتعدÙÙ",
+ "log-action-filter-block-unblock": "رÙع اÙÙ
Ùع",
+ "log-action-filter-delete-delete": "Øذ٠اÙصÙØات",
+ "log-action-filter-delete-event": "Øذ٠اÙسجÙات",
+ "log-action-filter-delete-revision": "Øذ٠اÙÙ
راجعات",
+ "log-action-filter-import-interwiki": "استÙراد عابر ÙÙÙÙÙÙ",
+ "log-action-filter-newusers-autocreate": "Ø¥Ùشاء Ø¢ÙÙ",
+ "log-action-filter-newusers-byemail": "اÙØ¥Ùشاء بÙÙÙ
Ø© Ù
رÙر Ù
رسÙØ© عبر اÙبرÙد اÙØ¥ÙÙترÙÙÙ",
+ "log-action-filter-protect-protect": "ØÙ
اÙØ©",
+ "log-action-filter-protect-modify": "تعدÙ٠اÙØÙ
اÙØ©",
+ "log-action-filter-protect-unprotect": "رÙع اÙØÙ
اÙØ©",
+ "log-action-filter-rights-rights": "تغÙÙر ÙدÙÙ",
+ "log-action-filter-upload-upload": "رÙع جدÙد",
+ "log-action-filter-upload-overwrite": "إعادة اÙرÙع"
}
diff --git a/languages/i18n/ary.json b/languages/i18n/ary.json
index 0f69f6a88d..c996b3fed1 100644
--- a/languages/i18n/ary.json
+++ b/languages/i18n/ary.json
@@ -1120,8 +1120,6 @@
"allpagesprefix": "biyn sfahi katbda b:",
"categories": "tsnifat",
"categoriesfrom": "wrri ṫ-ṫṣnifaṫ li badyin mn:",
- "special-categories-sort-count": "rttb bladad",
- "special-categories-sort-abc": "rttb blhorof",
"deletedcontributions": "mosahamaṫ mosṫĥdim memḫiya",
"deletedcontributions-title": "mosahamaṫ mosṫĥdim memḫiya",
"sp-deletedcontributions-contribs": "l-mosahamaṫ",
@@ -1628,8 +1626,8 @@
"exif-colorspace": "farq lon",
"exif-componentsconfiguration": "maana kol mokawwin",
"exif-compressedbitsperpixel": "tor daght sora",
- "exif-pixelydimension": "ard sora sahih",
- "exif-pixelxdimension": "tol sora sahih",
+ "exif-pixelxdimension": "ard sora sahih",
+ "exif-pixelydimension": "tol sora sahih",
"exif-usercomment": "taaliqat lmostakhdim",
"exif-relatedsoundfile": "milf sawti mortabit",
"exif-datetimeoriginal": "tarikh o wqt tawlid lbayanat",
@@ -1907,7 +1905,6 @@
"version-software-version": "noskha",
"fileduplicatesearch": "qlleb Äla milffaṫ má¸oá¸
la",
"fileduplicatesearch-summary": "qlleb Äla milffaṫ má¸oá¸
la Äla asas l-qyam dl-haÄ.",
- "fileduplicatesearch-legend": "qllb ala lmdoublin",
"fileduplicatesearch-filename": "smiyt lfichier",
"fileduplicatesearch-submit": "Qelleb",
"fileduplicatesearch-info": "$1 à $2 piksel ṫqel l-fiÄyé: $3 noÄ MIME : $4",
diff --git a/languages/i18n/arz.json b/languages/i18n/arz.json
index 91089cc615..d1addb695f 100644
--- a/languages/i18n/arz.json
+++ b/languages/i18n/arz.json
@@ -1284,8 +1284,6 @@
"categories": "تصاÙÙÙ",
"categoriespagetext": "{{PLURAL:$1|اÙتصÙÙ٠دا بÙØتÙ٠عÙÙ|اÙتصÙÙÙات د٠بتØتÙ٠عÙÙ}} صÙØات ا٠Ù
ÙدÙا.\n[[Special:UnusedCategories|اÙتصÙÙÙات اÙÙÙ Ù
Ø´ Ù
ستعÙ
ÙÙ]] Ù
Ø´ Ù
عرÙض٠ÙÙا.\nØ´ÙÙ ÙÙ
ا٠[[Special:WantedCategories|اÙتصÙÙÙات اÙÙ
تعازÙ]].",
"categoriesfrom": "اعرض اÙتصاÙÙÙ Ù
٠أÙÙ:",
- "special-categories-sort-count": "رتب باÙعدد",
- "special-categories-sort-abc": "ترتÙب ابجدÙ",
"deletedcontributions": "تعدÙÙات اÙÙÙزر اÙÙ
Ù
سÙØØ©",
"deletedcontributions-title": "تعدÙÙات اÙÙÙزر اÙÙ
Ù
سÙØØ©",
"sp-deletedcontributions-contribs": "اÙÙ
ساÙÙ
ات",
@@ -1918,8 +1916,8 @@
"exif-colorspace": "Ùر٠اÙÙÙÙ",
"exif-componentsconfiguration": "Ù
عÙÙ ÙÙ Ù
ÙÙÙ",
"exif-compressedbitsperpixel": "Ø·Ùر ضغط اÙصÙرة",
- "exif-pixelydimension": "عرض صÙرة صØÙØ",
- "exif-pixelxdimension": "ارتÙاع صÙرة صØÙØ",
+ "exif-pixelxdimension": "عرض صÙرة صØÙØ",
+ "exif-pixelydimension": "ارتÙاع صÙرة صØÙØ",
"exif-usercomment": "تعÙÙÙات اÙÙÙزر",
"exif-relatedsoundfile": "Ù
Ù٠صÙت Ù
رتبط",
"exif-datetimeoriginal": "تارÙØ® Ù ÙÙت اÙØ¥Ùتاج",
@@ -2258,7 +2256,6 @@
"version-software-version": "اÙÙسخÙ",
"fileduplicatesearch": "دÙر عÙ٠اÙÙ
ÙÙات اÙÙ
تÙررة",
"fileduplicatesearch-summary": "دÙر عÙ٠اÙÙ
ÙÙات اÙÙ
تÙررة عÙ٠اساس ÙÙÙ
Ø© اÙÙاش بتاعتÙا.",
- "fileduplicatesearch-legend": "تدÙÙر عÙÙ Ù
تÙرر",
"fileduplicatesearch-filename": "اسÙ
اÙÙ
ÙÙ:",
"fileduplicatesearch-submit": "تدÙÙر",
"fileduplicatesearch-info": "$1 à $2 بÙس٠ØجÙ
اÙÙ
ÙÙ: $3 ÙÙع MIME: $4",
diff --git a/languages/i18n/as.json b/languages/i18n/as.json
index e702f3279f..a57dbea7e9 100644
--- a/languages/i18n/as.json
+++ b/languages/i18n/as.json
@@ -1609,8 +1609,6 @@
"categories": "শà§à§°à§à¦£à§",
"categoriespagetext": "à¦à¦ {{PLURAL:$1|বিষয়শà§à§°à§à¦£à§à¦¤|বিষয়শà§à§°à§à¦£à§à¦¸à¦®à§à¦¹à¦¤}} পà§à¦·à§à¦ া বা মিডিয়া ফাà¦à¦² à¦à¦à§ ।\n[[Special:UnusedCategories|à¦
বà§à¦¯à§±à¦¹à§à¦¤ শà§à§°à§à¦£à§à¦¸à¦®à§à¦¹]] à¦à¦¯à¦¼à¦¾à¦¤ দà§à¦à§à¦à§±à¦¾ হà§à§±à¦¾ নাঠ।\nà¦
ধিঠতথà§à¦¯à§° বাবৠ[[Special:WantedCategories|à¦à§±à¦¶à§à¦¯à¦ শà§à§°à§à¦£à§à¦¸à¦®à§à¦¹]] à¦à¦¾à¦à¦ ।",
"categoriesfrom": "à¦à¦¯à¦¼à¦¾à§°à§ à¦à§°à¦®à§à¦ হà§à§±à¦¾ শà§à§°à§à¦£à§à¦¸à¦®à§à¦¹ দà§à¦à§à§±à¦¾à¦à¦:",
- "special-categories-sort-count": "à¦à¦£à¦¨à¦¾à§° à¦à¦¿à¦¤à§à¦¤à¦¿à¦¤ সà¦à¦¾à¦à¦",
- "special-categories-sort-abc": "বৰà§à¦£à¦¾à¦¨à§à¦à§à§°à¦®à§ সà¦à¦¾à¦à¦",
"deletedcontributions": "ৰদ à¦à§°à¦¾ সদসà§à¦¯à§° বৰà¦à¦£à¦¿à¦¸à¦®à§à¦¹",
"deletedcontributions-title": "ৰদ à¦à§°à¦¾ সদসà§à¦¯à§° বৰà¦à¦£à¦¿à¦¸à¦®à§à¦¹",
"sp-deletedcontributions-contribs": "বৰà¦à¦£à¦¿à¦¸à¦®à§à¦¹",
@@ -2166,11 +2164,7 @@
"import-logentry-upload-detail": "$1 {{PLURAL:$1|à¦à¦¾ সà¦à¦¶à§à¦§à¦¨|à¦à¦¾ সà¦à¦¶à§à¦§à¦¨}}",
"import-logentry-interwiki-detail": "$2ৱৠà¦à§°à¦¾ $1 {{PLURAL:$1|à¦à¦¾ সà¦à¦¶à§à¦§à¦¨|à¦à¦¾ সà¦à¦¶à§à¦§à¦¨}}",
"javascripttest": "à¦à¦¾à¦à¦¾à¦¸à§à¦à§à§°à¦¿à¦ªà§à¦ পৰà§à¦à§à¦·à¦¾à¥¤",
- "javascripttest-pagetext-noframework": "à¦à¦ পà§à¦·à§à¦ াà¦à§ à¦à¦¾à¦à¦¾à¦¸à§à¦à§à§°à¦¿à¦ªà§à¦ পৰà§à¦à§à¦·à¦¾ à¦à¦²à§à§±à¦¾à§° বাবৠসà¦à§°à¦à§à¦·à¦¿à¦¤à¥¤",
- "javascripttest-pagetext-unknownframework": "à¦
à¦à§à¦à¦¾à¦¤ সমà§à¦ªà§°à§à¦à§à¦·à¦¾ ফà§à§°à§à¦®à§±à§°à§à¦ \"$1\"।",
"javascripttest-pagetext-unknownaction": "à¦
à¦à§à¦à¦¾à¦¤ à¦à¦¾à§°à§à¦¯ \"$1\"।",
- "javascripttest-pagetext-frameworks": "à¦
নà§à¦à§à§°à¦¹ à¦à§°à¦¿ তলৰ যিà¦à§à¦¨à§ à¦à¦à¦¾ সমà§à¦ªà§°à§à¦à§à¦·à¦¾ ফà§à§°à§à¦®à§±à§°à§à¦ বাà¦à¦¨à¦¿ à¦à§°à¦: $1",
- "javascripttest-pagetext-skins": "পৰà§à¦à§à¦·à¦¾ à¦à§°à¦¿à¦¬à¦²à§ à¦à§±à§°à¦£ à¦à¦à¦¨ বাà¦à¦¨à¦¿ à¦à§°à¦:",
"javascripttest-qunit-intro": "mediawiki.org-ত [$1 পৰà§à¦à§à¦·à¦¾ নথিà¦à§°à¦£] à¦à¦¾à¦à¦à¥¤",
"tooltip-pt-userpage": "à¦à¦ªà§à¦¨à¦¾à§° সদসà§à¦¯ পà§à¦·à§à¦ া",
"tooltip-pt-anonuserpage": "যি à¦à¦.পি. ঠিà¦à¦¨à¦¾à§° পৰা à¦à¦ªà§à¦¨à¦¿ সমà§à¦ªà¦¾à¦¦à¦¨à¦¾ à¦à§°à¦¿à¦à§ তাৰ সদসà§à¦¯ পà§à¦·à§à¦ া",
@@ -2417,8 +2411,8 @@
"exif-colorspace": "ৰঠসà§à¦¥à¦¾à¦¨",
"exif-componentsconfiguration": "পà§à§°à¦¤à¦¿à¦à§ à¦à¦ªà¦¾à¦¦à¦¾à¦¨à§° à¦
ৰà§à¦¥",
"exif-compressedbitsperpixel": "à¦à¦¬à¦¿ সà¦à¦à§à¦à¦¨ à¦
ৱসà§à¦¥à¦¾",
- "exif-pixelydimension": "à¦à¦¬à¦¿à§° পà§à§°à¦¸à§à¦¥à¦¤à¦¾",
- "exif-pixelxdimension": "à¦à¦¬à¦¿à§° à¦à¦à§à¦à¦¤à¦¾",
+ "exif-pixelxdimension": "à¦à¦¬à¦¿à§° পà§à§°à¦¸à§à¦¥à¦¤à¦¾",
+ "exif-pixelydimension": "à¦à¦¬à¦¿à§° à¦à¦à§à¦à¦¤à¦¾",
"exif-usercomment": "সদসà§à¦¯à§° মনà§à¦¤à¦¬à§à¦¯",
"exif-relatedsoundfile": "সà¦à¦¶à§à¦²à¦¿à¦·à§à¦ শà§à§°à¦¬à§à¦¯ ফাà¦à¦²",
"exif-datetimeoriginal": "তথà§à¦¯ সà§à¦à¦¨à§° তাৰিঠà¦à§°à§ সময়",
@@ -2844,7 +2838,6 @@
"version-entrypoints-header-url": "à¦à¦à¦à§°à¦à¦²",
"version-libraries-version": "সà¦à¦¸à§à¦à§°à¦£",
"redirect": "ফাà¦à¦², সদসà§à¦¯, পà§à¦·à§à¦ া বা সà¦à¦¶à§à¦§à¦¨ à¦à¦ ডি-ৰৠপà§à¦¨à¦à¦¨à¦¿à§°à§à¦¦à§à¦¶",
- "redirect-legend": "à¦à¦à¦¾ ফাà¦à¦² বা পà§à¦·à§à¦ ালৠপà§à¦¨à¦à¦¨à¦¿à§°à§à¦¦à§à¦¶",
"redirect-summary": "à¦à¦ বিশà§à¦· পà§à¦·à§à¦ াà¦à§à§±à§ à¦à¦ªà§à¦¨à¦¾à¦ à¦
নà§à¦¯ à¦à¦à¦¾ ফাà¦à¦²à¦²à§ (ফাà¦à¦²à§° নাম), à¦à¦à¦¾ পà§à¦·à§à¦ ালৠ(সà¦à¦¶à§à¦§à¦¨ à¦à¦ ডি বা পà§à¦·à§à¦ া à¦à¦ ডি), à¦
থবা à¦
নà§à¦¯ সদসà§à¦¯à§° পà§à¦·à§à¦ ালৠ(সদসà§à¦¯à§° সাà¦à¦à§à¦¯à¦¿à¦ à¦à¦ ডি) পà§à¦¨à¦à¦¨à¦¿à¦°à§à¦¦à§à¦¶à¦¿à¦¤ à¦à§°à¦¿à¦à§à¥¤\nবà§à¦¯à§±à¦¹à¦¾à§°: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], বা [[{{#Special:Redirect}}/user/101]]।",
"redirect-submit": "যাà¦à¦",
"redirect-lookup": "à¦à¦¾à¦à¦:",
@@ -2856,7 +2849,6 @@
"redirect-not-exists": "মà§à¦²à§à¦¯ পà§à§±à¦¾ নà¦'ল",
"fileduplicatesearch": "পà§à§°à¦¤à¦¿à¦²à¦¿à¦ªà¦¿ পà§à¦·à§à¦ াসমà§à¦¹ à¦
নà§à¦¸à¦¨à§à¦§à¦¾à¦¨ à¦à§°à¦",
"fileduplicatesearch-summary": "হà§à¦à§â মানসমà§à¦¹à§° à¦à¦ªà§°à¦¤ নিৰà§à¦à§° à¦à§°à¦¿ পà§à§°à¦¤à¦¿à¦²à¦¿à¦ªà¦¿à¦¤ নথিপতà§à§°à¦¸à¦®à§à¦¹à§° বাবৠসনà§à¦§à¦¾à¦¨ à¦à§°à¦à¥¤",
- "fileduplicatesearch-legend": "পà§à§°à¦¤à¦¿à¦²à¦¿à¦ªà¦¿à§° বাবৠà¦
নà§à¦¸à¦¨à§à¦§à¦¾à¦¨ à¦à§°à¦",
"fileduplicatesearch-filename": "ফাà¦à¦²à§° নাম:",
"fileduplicatesearch-submit": "সনà§à¦§à¦¾à¦¨ à¦à§°à¦",
"fileduplicatesearch-info": "$1 à $2 পিà¦à§à¦¸à§à¦² ফাà¦à¦²à§° মাতà§à§°à¦¾: $3 MIME পà§à§°à¦à¦¾à§°: $4",
diff --git a/languages/i18n/ast.json b/languages/i18n/ast.json
index f547a60284..c5f50c6f61 100644
--- a/languages/i18n/ast.json
+++ b/languages/i18n/ast.json
@@ -469,7 +469,7 @@
"noemail": "L'usuariu «$1» nun tien rexistrada nenguna direición de corréu.",
"noemailcreate": "Tienes de conseñar una direición de corréu válida.",
"passwordsent": "Unvióse una contraseña nueva a la direición de corréu rexistrada pa «$1».\nPor favor vuelvi a aniciar sesión depués de recibila.",
- "blocked-mailpassword": "La edición ta bloquiada dende la to direición IP, y por tanto nun se permite usar la función de recuperar contraseñes pa evitar abusos.",
+ "blocked-mailpassword": "La to direición IP tien bloquiada la edición. Pa torgar los abusos, nun se permite usar la recuperación de contraseñes dende esta direición IP.",
"eauthentsent": "Unvióse un corréu electrónicu de confirmación a la direición indicada.\nEnantes de que s'unvie nengún otru corréu a la cuenta, has de siguir les instrucciones d'esi corréu pa confirmar que la cuenta ye daveres de to.",
"throttled-mailpassword": "Yá s'unvió un corréu de reaniciu la clave {{PLURAL:$1|na postrer hora|nes postreres $1 hores}}.\nPa evitar abusos, namái s'unviará un corréu de reaniciu cada {{PLURAL:$1|hora|$1 hores}}.",
"mailerror": "Fallu al unviar el corréu: $1",
@@ -1493,6 +1493,7 @@
"uploadstash-badtoken": "Nun pudo facese esa operación. Seique caducó la identificación pa editar. Vuelve a tentalo.",
"uploadstash-errclear": "Falló'l desaniciu de los ficheros.",
"uploadstash-refresh": "Anovar la llista de ficheros",
+ "uploadstash-thumbnail": "ver miniatura",
"invalid-chunk-offset": "Allugamientu inválidu del fragmentu",
"img-auth-accessdenied": "Accesu denegáu",
"img-auth-nopathinfo": "Falta PATH_INFO.\nEl to sirvidor nun ta configuráu pa pasar esta información.\nPue tar basáu en CGI y nun tener sofitu pa img_auth.\nVer https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Image_Authorization",
@@ -1812,8 +1813,6 @@
"categories-submit": "Amosar",
"categoriespagetext": "{{PLURAL:$1|La siguiente categorÃa contién|Les siguientes categorÃes contienen}} páxines o ficheros multimedia.\nLes [[Special:UnusedCategories|categorÃes nun usaes]] nun s'amuesen equÃ.\nVer tamién les [[Special:WantedCategories|categorÃes más buscaes]].",
"categoriesfrom": "Amosar categorÃes qu'emprimen por:",
- "special-categories-sort-count": "ordenar por tamañu",
- "special-categories-sort-abc": "ordenar alfabéticamente",
"deletedcontributions": "Contribuciones d'usuariu esborraes",
"deletedcontributions-title": "Contribuciones d'usuariu desaniciaes",
"sp-deletedcontributions-contribs": "collaboraciones",
@@ -2190,6 +2189,7 @@
"ipb-unblock": "Desbloquiar un nome d'usuariu o direición IP",
"ipb-blocklist": "Ver los bloqueos esistentes",
"ipb-blocklist-contribs": "Collaboraciones de {{GENDER:$1|$1}}",
+ "ipb-blocklist-duration-left": "falten $1",
"unblockip": "Desbloquiar usuariu",
"unblockiptext": "Usa'l formulariu d'abaxo pa restablecer l'accesu d'escritura a una direicion IP o a un nome d'usuariu previamente bloquiáu.",
"ipusubmit": "Desaniciar esti bloquéu",
@@ -2431,11 +2431,7 @@
"import-logentry-upload-detail": "$1 {{PLURAL:$1|revisión importada|revisiones importaes}}",
"import-logentry-interwiki-detail": "$1 {{PLURAL:$1|revisión importada|revisiones importaes}} dende $2",
"javascripttest": "Prueba de JavaScript",
- "javascripttest-pagetext-noframework": "Esta páxina ta acutada pa executar pruebes de javascript.",
- "javascripttest-pagetext-unknownframework": "L'entornu de pruebes «$1» ye desconocÃu.",
"javascripttest-pagetext-unknownaction": "Aición desconocida «$1».",
- "javascripttest-pagetext-frameworks": "Escueyi un de los siguientes entornos de pruebes: $1",
- "javascripttest-pagetext-skins": "Escueyi una apariencia pa executar les pruebes:",
"javascripttest-qunit-intro": "Ver la [$1 documentación de les pruebes] en mediawiki.org.",
"tooltip-pt-userpage": "La to páxina d'{{GENDER:|usuariu|usuaria}}",
"tooltip-pt-anonuserpage": "La páxina d'usuariu de la IP cola que tas editando",
@@ -2702,8 +2698,8 @@
"exif-colorspace": "Espaciu de color",
"exif-componentsconfiguration": "Significáu de cada componente",
"exif-compressedbitsperpixel": "Mou de compresión d'imaxe",
- "exif-pixelydimension": "Anchor d'imaxe",
- "exif-pixelxdimension": "Altor d'imaxe",
+ "exif-pixelxdimension": "Anchor d'imaxe",
+ "exif-pixelydimension": "Altor d'imaxe",
"exif-usercomment": "Comentarios del usuariu",
"exif-relatedsoundfile": "Archivu d'audiu rellacionáu",
"exif-datetimeoriginal": "Data y hora de xeneración de los datos",
@@ -3148,7 +3144,6 @@
"version-libraries-description": "Descripción",
"version-libraries-authors": "Autores",
"redirect": "Redireición por ID del ficheru, usuariu, páxina, revisión o rexistru",
- "redirect-legend": "Redirixir a un ficheru o una páxina",
"redirect-summary": "Esta páxina especial redirixe a un ficheru (dando'l so nome), una páxina (dando una ID de revisión o de páxina), una páxina d'usuariu (dando un númberu d'ID d'usuariu) o una entrada del rexistru (dando la ID del rexistru). Usu: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], [[{{#Special:Redirect}}/user/101]], o [[{{#Special:Redirect}}/logid/186]].",
"redirect-submit": "Dir",
"redirect-lookup": "Buscar:",
@@ -3161,7 +3156,6 @@
"redirect-not-exists": "Nun s'alcontró'l valor",
"fileduplicatesearch": "Buscar archivos duplicaos",
"fileduplicatesearch-summary": "Busca archivos duplicaos basándose nos sos valores fragmentarios.",
- "fileduplicatesearch-legend": "Buscar duplicaos",
"fileduplicatesearch-filename": "Nome del ficheru:",
"fileduplicatesearch-submit": "Buscar",
"fileduplicatesearch-info": "$1 à $2 pÃxeles Tamañu del archivu: $3 Triba MIME: $4",
@@ -3362,7 +3356,7 @@
"logentry-protect-protect-cascade": "$1 {{GENDER:$2|protexó}} a $3 $4 [en cascada]",
"logentry-protect-modify": "$1 {{GENDER:$2|camudó}} el nivel de protección de $3 $4",
"logentry-protect-modify-cascade": "$1 {{GENDER:$2|camudó}} el nivel de protección de $3 $4 [en cascada]",
- "logentry-rights-rights": "$1 {{GENDER:$2|camudó}} la pertenencia a grupos de $3 dende $4 a $5",
+ "logentry-rights-rights": "$1 {{GENDER:$2|camudó}} la pertenencia a grupos de {{GENDER:$6|$3}} dende $4 a $5",
"logentry-rights-rights-legacy": "$1 {{GENDER:$2|camudó}} la pertenencia a grupos de $3",
"logentry-rights-autopromote": "$1 {{GENDER:$2|promocionó}} automáticamente de $4 a $5",
"logentry-upload-upload": "$1 {{GENDER:$2|xubió}} $3",
@@ -3455,6 +3449,7 @@
"api-error-unknownerror": "Fallu desconocÃu: «$1».",
"api-error-uploaddisabled": "Les xubÃes tan desactivaes nesta wiki.",
"api-error-verification-error": "Esti ficheru pudiera tar corrompÃu, o tien una estensión incorreuta.",
+ "api-error-was-deleted": "Anteriormente xubióse y desanicióse dempués un ficheru con esti nome.",
"duration-seconds": "$1 {{PLURAL:$1|segundu|segundos}}",
"duration-minutes": "$1 {{PLURAL:$1|minutu|minutos}}",
"duration-hours": "$1 {{PLURAL:$1|hora|hores}}",
@@ -3545,6 +3540,7 @@
"special-characters-group-ipa": "AFI",
"special-characters-group-symbols": "SÃmbolos",
"special-characters-group-greek": "Griegu",
+ "special-characters-group-greekextended": "Griegu estendÃu",
"special-characters-group-cyrillic": "CirÃlicu",
"special-characters-group-arabic": "Ãrabe",
"special-characters-group-arabicextended": "Ãrabe estendÃu",
@@ -3572,5 +3568,25 @@
"sessionprovider-generic": "sesiones $1",
"sessionprovider-mediawiki-session-cookiesessionprovider": "sesiones basaes en cookies",
"sessionprovider-nocookies": "Les cookies puen tar desactivaes. Asegúrate de tener activaes les cookies y vuelve a principiar.",
- "randomrootpage": "Páxina raÃz al debalu"
+ "randomrootpage": "Páxina raÃz al debalu",
+ "log-action-filter-block": "Tipu de bloquéu:",
+ "log-action-filter-delete": "Tipu de desaniciu:",
+ "log-action-filter-patrol": "Tipu de patrulla:",
+ "log-action-filter-protect": "Tipu de proteición:",
+ "log-action-filter-upload": "Tipu de carga:",
+ "log-action-filter-all": "Too",
+ "log-action-filter-block-block": "Bloquéu",
+ "log-action-filter-block-reblock": "Cambiu de bloquéu",
+ "log-action-filter-block-unblock": "Desbloquéu",
+ "log-action-filter-delete-delete": "Desaniciu de páxines",
+ "log-action-filter-delete-restore": "Restauración de páxines",
+ "log-action-filter-delete-event": "Desaniciu de rexistros",
+ "log-action-filter-delete-revision": "Desaniciu de revisión",
+ "log-action-filter-patrol-patrol": "Patrulláu manual",
+ "log-action-filter-patrol-autopatrol": "Patrulláu automáticu",
+ "log-action-filter-protect-protect": "Proteición",
+ "log-action-filter-protect-modify": "Cambiu na proteición",
+ "log-action-filter-protect-unprotect": "Desproteición",
+ "log-action-filter-upload-upload": "Nueva carga",
+ "log-action-filter-upload-overwrite": "Recargar"
}
diff --git a/languages/i18n/avk.json b/languages/i18n/avk.json
index f4d4d28ec7..71e16398da 100644
--- a/languages/i18n/avk.json
+++ b/languages/i18n/avk.json
@@ -996,8 +996,6 @@
"categories": "Bulomeem",
"categoriespagetext": "Radimiasa loma se moe wiki krulded.\n[[Special:UnusedCategories|Unused categories]] are not shown here.\nAlso see [[Special:WantedCategories|wanted categories]].",
"categoriesfrom": "Nedira va loma tozakirafa gu :",
- "special-categories-sort-count": "Otafa mubera",
- "special-categories-sort-abc": "Abavafa mubera",
"deletedcontributions": "Sulayan favesikaf webeks",
"linksearch": "Divafi gluyasiki",
"linksearch-ns": "Yoltxo :",
@@ -1472,8 +1470,8 @@
"exif-exifversion": "Version exif",
"exif-colorspace": "Ksevaxo",
"exif-compressedbitsperpixel": "Ewavaraxivaracave",
- "exif-pixelydimension": "Mante ke enafa ewava",
- "exif-pixelxdimension": "Ontine ke enafa ewava",
+ "exif-pixelxdimension": "Mante ke enafa ewava",
+ "exif-pixelydimension": "Ontine ke enafa ewava",
"exif-usercomment": "Favesikaf sebuks",
"exif-relatedsoundfile": "Fichier audio lié",
"exif-datetimeoriginal": "Viel is gemelt ke nasbara va origeem",
@@ -1664,7 +1662,6 @@
"version-software-product": "Warzeks",
"version-software-version": "Siatos",
"fileduplicatesearch": "Aneyara va jontolaf iyeltak",
- "fileduplicatesearch-legend": "Aneyara va jontolaca",
"fileduplicatesearch-filename": "Iyeltakyolt :",
"fileduplicatesearch-submit": "Aneyara",
"fileduplicatesearch-result-1": "\"$1\" iyeltak va miltafa jontoloca me digir.",
diff --git a/languages/i18n/awa.json b/languages/i18n/awa.json
index 6cb75d2895..8cab3c967b 100644
--- a/languages/i18n/awa.json
+++ b/languages/i18n/awa.json
@@ -1601,8 +1601,6 @@
"categories": "शà¥à¤°à¥à¤£à¥",
"categoriespagetext": "निमà¥à¤¨à¥à¤à¥à¤¤ {{PLURAL:$1|शà¥à¤°à¥à¤£à¥|शà¥à¤°à¥à¤£à¤¿}} मा पनà¥à¤¨à¤¾ या मà¥à¤¡à¤¿à¤¯à¤¾ हà¥à¥¤\nà¤à¤µà¤¨ शà¥à¤°à¥à¤£à¤¿à¤¨à¥ à¤à¤¯ [[Special:UnusedCategories|à¤
पà¥à¤°à¤¯à¥à¤à¥à¤¤ शà¥à¤°à¥à¤£à¤¿]] यहठनाठदà¥à¤à¤¾à¤ à¤à¤¾ हà¥à¤à¥¤\n[[Special:WantedCategories|वाà¤à¤à¤¿à¤¤ शà¥à¤°à¥à¤£à¤¿]] à¤à¥ दà¥à¤à¤¾ à¤à¤¾à¤¯à¥¤",
"categoriesfrom": "ठà¤
à¤à¥à¤·à¤° सॠशà¥à¤°à¥ हà¥à¤¯ वाला शà¥à¤°à¥à¤£à¥ दà¥à¤à¤¾à¤µà¤¾ à¤à¤¾à¤¯:",
- "special-categories-sort-count": "सà¤à¤à¥à¤¯à¤¾ à¤à¤¯ à¤
नà¥à¤¸à¤¾à¤° à¤à¥à¤°à¤®à¤¾à¤à¤à¤¿à¤¤ à¤à¤°à¤¾ à¤à¤¾à¤¯",
- "special-categories-sort-abc": "वरà¥à¤£à¤¾à¤¨à¥à¤à¥à¤°à¤® à¤à¤¯ à¤
नà¥à¤¸à¤¾à¤° दà¥à¤à¤¾à¤µà¤¾ à¤à¤¾à¤¯",
"deletedcontributions": "हà¤à¤¾à¤µà¤² सदसà¥à¤¯ यà¥à¤à¤¦à¤¾à¤¨",
"deletedcontributions-title": "हà¤à¤¾à¤µà¤² सदसà¥à¤¯ यà¥à¤à¤¦à¤¾à¤¨",
"sp-deletedcontributions-contribs": "यà¥à¤à¤¦à¤¾à¤¨",
@@ -2156,11 +2154,7 @@
"import-logentry-upload-detail": "$1 à¤
वतरण à¤à¤¯à¤¾à¤¤ {{PLURAL:$1|à¤à¤¿à¤¯à¤¾ à¤à¤¯à¤¾|à¤à¤¿à¤¯à¥ à¤à¤}}",
"import-logentry-interwiki-detail": "$2 सॠ$1 à¤
वतरण à¤à¤¯à¤¾à¤¤ {{PLURAL:$1|à¤à¤¿à¤¯à¤¾ à¤à¤¯à¤¾|à¤à¤¿à¤¯à¥ à¤à¤}}",
"javascripttest": "à¤à¤¾à¤µà¤¾à¤¸à¥à¤à¥à¤°à¤¿à¤ªà¥à¤ परà¥à¤à¥à¤·à¤£",
- "javascripttest-pagetext-noframework": "यह पà¥à¤·à¥à¤ à¤à¤¾à¤µà¤¾à¤¸à¥à¤à¥à¤°à¤¿à¤ªà¥à¤ परà¥à¤à¥à¤·à¤£ à¤à¤²à¤¾à¤¨à¥ à¤à¥ लिठहà¥à¥¤",
- "javascripttest-pagetext-unknownframework": "à¤
à¤à¥à¤à¤¾à¤¤ परà¥à¤à¥à¤·à¤£ ढाà¤à¤à¤¾ \"$1\"",
"javascripttest-pagetext-unknownaction": "à¤
à¤à¥à¤à¤¾à¤¤ à¤à¤¾à¤® \"$1\".",
- "javascripttest-pagetext-frameworks": "à¤à¥à¤ªà¤¯à¤¾ निमà¥à¤¨ परà¥à¤à¥à¤·à¤£ ढाà¤à¤à¥à¤ मà¥à¤ सॠà¤à¤ à¤à¥à¤¨à¥à¤: $1",
- "javascripttest-pagetext-skins": "परà¥à¤à¥à¤·à¤£ à¤à¤°à¤¨à¥ à¤à¥ लिठतà¥à¤µà¤à¤¾ à¤à¥à¤¨à¥à¤:",
"javascripttest-qunit-intro": "mediawiki.org पॠ[$1 परà¥à¤à¥à¤·à¤£ à¤à¤¯ पà¥à¤°à¤²à¥à¤à¤¨] दà¥à¤à¤¾ à¤à¤¾à¤¯à¥¤",
"tooltip-pt-userpage": "à¤à¤ª à¤à¤¯ सदसà¥à¤¯ पनà¥à¤¨à¤¾",
"tooltip-pt-anonuserpage": "à¤à¤ª à¤à¤¿à¤¸ à¤à¤à¤ªà¥ सॠबदलाव à¤à¤° रहà¥à¤ हà¥à¤ à¤à¤¸à¤à¤¾ सदसà¥à¤¯ पनà¥à¤¨à¤¾ निà¤à¥ हà¥",
@@ -2406,8 +2400,8 @@
"exif-colorspace": "रà¤à¤ सà¥à¤¥à¤¾à¤¨",
"exif-componentsconfiguration": "हर à¤à¤à¤ à¤à¤¯ मतलब",
"exif-compressedbitsperpixel": "à¤à¤¿à¤¤à¥à¤° à¤à¥à¤®à¥à¤ªà¥à¤°à¥à¤¶à¤¨ मà¥à¤¡",
- "exif-pixelydimension": "à¤à¤µà¤¿ à¤à¥à¤¡à¤¼à¤¾à¤",
- "exif-pixelxdimension": "à¤à¤µà¤¿ à¤à¤à¤à¤¾à¤",
+ "exif-pixelxdimension": "à¤à¤µà¤¿ à¤à¥à¤¡à¤¼à¤¾à¤",
+ "exif-pixelydimension": "à¤à¤µà¤¿ à¤à¤à¤à¤¾à¤",
"exif-usercomment": "सदसà¥à¤¯ à¤à¤¿à¤ªà¥à¤ªà¤£à¥",
"exif-relatedsoundfile": "सà¤à¤¬à¤à¤§à¤¿à¤¤ धà¥à¤µà¤¨à¥ फ़ाà¤à¤²",
"exif-datetimeoriginal": "डà¥à¤à¤¾ सà¤à¥à¤à¤¾à¤²à¤¨ à¤à¤¯ मिति à¤
व समय",
@@ -2835,7 +2829,6 @@
"version-libraries": "à¤à¤¨à¥à¤¸à¥à¤à¤¾à¤² à¤à¤°à¤² लाà¤à¤¬à¥à¤°à¥à¤°à¥",
"version-libraries-library": "लाà¤à¤¬à¥à¤°à¥à¤°à¥",
"version-libraries-version": "सà¤à¤¸à¥à¤à¤°à¤£",
- "redirect-legend": "फ़ाà¤à¤² à¤
थवा पà¥à¤·à¥à¤ à¤à¥ पà¥à¤¨à¤°à¥à¤ªà¥à¤°à¥à¤·à¤£",
"redirect-summary": "यह विशà¥à¤· पà¥à¤·à¥à¤ फ़ाà¤à¤²à¤¨à¤¾à¤® पà¥à¤°à¤¦à¤¾à¤¨ à¤à¤°à¤¨à¥ पर फ़ाà¤à¤² नाम à¤à¥, पà¥à¤·à¥à¤ à¤à¤à¥°à¤¦à¥ à¤
थवा à¤
वतरण à¤à¤à¥°à¤¦à¥ दà¥à¤¨à¥ पर पà¥à¤·à¥à¤ à¤à¥, à¤à¤° सदसà¥à¤¯ à¤à¤à¥°à¤¦à¥ दà¥à¤¨à¥ पर सदसà¥à¤¯ पà¥à¤·à¥à¤ à¤à¥ पà¥à¤¨à¤°à¥à¤ªà¥à¤°à¥à¤·à¤¿à¤¤ à¤à¤°à¤¤à¤¾ हà¥à¥¤ à¤à¤¦à¤¾à¤¹à¤°à¤£: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], या [[{{#Special:Redirect}}/user/101]]।",
"redirect-submit": "à¤à¤¾à¤µà¤¾ à¤à¤¾à¤¯",
"redirect-lookup": "ढà¥à¤à¤¢à¤¾ à¤à¤¾à¤¯:",
@@ -2847,7 +2840,6 @@
"redirect-not-exists": "मà¥à¤²à¥à¤¯ नाठमिला",
"fileduplicatesearch": "डà¥à¤ªà¥à¤²à¤¿à¤à¥à¤ फाà¤à¤² à¤à¥à¤à¤¾ à¤à¤¾à¤¯",
"fileduplicatesearch-summary": "हà¥à¤¶ वà¥à¤²à¥à¤¯à¥ à¤à¤¯ à¤
नà¥à¤¸à¤¾à¤° डà¥à¤ªà¥à¤²à¤¿à¤à¥à¤ फाà¤à¤² à¤à¥à¤à¤¾ à¤à¤¾à¤¯ ।",
- "fileduplicatesearch-legend": "डà¥à¤ªà¥à¤²à¤¿à¤à¥à¤ à¤à¥à¤à¤¾ à¤à¤¾à¤¯",
"fileduplicatesearch-filename": "फ़ाà¤à¤² à¤à¤¯ नाà¤à¤µ",
"fileduplicatesearch-submit": "à¤à¥à¤à¤¾ à¤à¤¾à¤¯",
"fileduplicatesearch-info": "$1 à $2 पिà¤à¥à¤¸à¥à¤² फाà¤à¤² à¤à¤à¤¾à¤°: $3 MIME पà¥à¤°à¤à¤¾à¤°: $4",
diff --git a/languages/i18n/az.json b/languages/i18n/az.json
index 5a68e59539..5b1afd54c3 100644
--- a/languages/i18n/az.json
+++ b/languages/i18n/az.json
@@ -1342,8 +1342,6 @@
"allpages-hide-redirects": "YönlÉndirmÉlÉri gizlÉt",
"categories": "Kateqoriyalar",
"categoriespagetext": "AÅaÄıdakı {{PLURAL:$1|kateqoriyada|kateqoriyalarda}} sÉhifÉlÉr, yaxud media-fayllar var.\n[[Special:UnusedCategories|Ä°stifadÉ olunmayan kateqoriyalar]] burada göstÉrilmÉyib.\nHÉmçinin, [[Special:WantedCategories|tÉlÉb olunan kateqoriyalara]] baxın.",
- "special-categories-sort-count": "miqdara görÉ tÉnzimlÉ",
- "special-categories-sort-abc": "Élifba sırası ilÉ düz",
"deletedcontributions": "SilinmiÅ istifadÉçi fÉaliyyÉtlÉri",
"deletedcontributions-title": "SilinmiÅ istifadÉçi fÉaliyyÉtlÉri",
"sp-deletedcontributions-contribs": "fÉaliyyÉt",
@@ -2003,8 +2001,8 @@
"exif-copyright": "Sahibinin müÉlliflik hüququ",
"exif-exifversion": "Exif versiyası",
"exif-colorspace": "RÉng sahÉsi",
- "exif-pixelydimension": "ÅÉkilin eni",
- "exif-pixelxdimension": "ÅÉkilin hündürlüyü",
+ "exif-pixelxdimension": "ÅÉkilin eni",
+ "exif-pixelydimension": "ÅÉkilin hündürlüyü",
"exif-usercomment": "Ä°stifadÉçi ÅÉrhi",
"exif-datetimeoriginal": "Orijinal tarix vÉ vaxt",
"exif-datetimedigitized": "Tarix vÉ vaxt rÉqÉmlÉÅdirilir",
@@ -2339,7 +2337,6 @@
"redirect-user": "Ä°stifadÉçi ID-si",
"redirect-page": "SÉhifÉ ID-si",
"fileduplicatesearch": "Dublikat fayl axtarıÅı",
- "fileduplicatesearch-legend": "Dublikatı axtar",
"fileduplicatesearch-filename": "Fayl adı:",
"fileduplicatesearch-submit": "Axtar",
"fileduplicatesearch-result-1": "\"$1\" faylı hÉr hansı eyni dublikata malik deyil.",
diff --git a/languages/i18n/azb.json b/languages/i18n/azb.json
index f8cc340ef8..0a74b0a4a9 100644
--- a/languages/i18n/azb.json
+++ b/languages/i18n/azb.json
@@ -496,10 +496,13 @@
"resetpass_submit": "رÙ
ز ÛارادÛÙ Ù Ú¯ÛرÛØ´ ائدÛÙ",
"changepassword-success": "رÙ
زÛÙÛز باشارÛâÙا دÙÛÛشدÛرÙدÛ!",
"changepassword-throttled": "سÛزÛÙ ÚÙØ® Ú¯ÛرÛØ´ ÚاÙÛØ´Ù
اغÛÙÛز اÙÙÙبâدÙر.\nÙÙØ·Ùا٠ÛئÙÛâد٠ÚاÙÛØ´Ù
اÙâدا٠اؤÙج٠$1 دؤزÙÙ.",
+ "botpasswords-label-create": "Ûارات",
+ "botpasswords-label-cancel": "ÙازگئÚ",
+ "botpasswords-label-delete": "سÛÙ",
"resetpass_forbidden": "رÙ
زÙر دÙÛÛØ´ÛÙÙ
ز",
"resetpass-no-info": "ب٠صØÛÙÙâÙÛ Ø¯Ùغر٠گؤردÙÚ¯ÙÙÙز اÙÚÙ٠سÛستÙ
Ù Ú¯ÛرÙ
ÙâÙÛسÛÙÛز.",
"resetpass-submit-loggedin": "رÙ
Ø²Û Ø¯ÙÛÛشدÛر",
- "resetpass-submit-cancel": "Ùغ٠ائت",
+ "resetpass-submit-cancel": "ÙازگئÚ",
"resetpass-wrong-oldpass": "ÛاÙÙÛØ´ گئÚÛØ¬Û Ûا اÛÙدÛÚ©Û Ø±Ù
ز.\nاÙÙا بÛÙر سÛز باشارÛÙÛÙâÙا رÙ
زÛÙÛØ²Û Ø¯ÙÛÛØ´Ù
ÛسÛÙÛز ÛÙخسا ÛئÙÛ Ú¯Ø¦ÚرÙÛ Ø±Ù
ز اÛستÙâÙ
ÛسÛÙÛز.",
"resetpass-recycled": "ÙÙØ·Ùا Ú¯ÛرÛØ´ رÙ
زÛÙÛØ²Û Ø§ÛÙدÛÚ©Û Ø§ÙÙÙ
اÛا٠بÛر اÛØ±Û Ú¯ÛرÛØ´ رÙ
زÛÙ٠دÙÛÛØ´ÛÙ",
"resetpass-temp-emailed": "سÛز بÛر کدÙاÙÙ
ÛØ´ Ù
ÙÙت اÛÙ
ÛÙ ÙÙ Ú¯ÛرÛØ´ ائدÛب سÛز.\nÚ¯ÛرÛØ´ÛÙÛز٠سÙÙ ÙئرÙ
Ú© اÙÚÙÙ ÛئÙÛ Ø¯Ù Ø¨Ûر Ú¯ÛرÛØ´ رÙ
Ø²Û ÙئرÙ
Ù ÙÛ Ø³Ûز:",
@@ -592,7 +595,7 @@
"newarticle": "(ÛئÙÛ)",
"newarticletext": "Ù
ؤÙجÙد اÙÙÙÙ
اÙا٠صØÛÙÙââÙ٠اÙÙÙا٠کئÚÛØ¯Û Ø§ÛزÙÙâدÛÙÛز. \nآشاغÛØ¯Ø§Ú©Û Ø³Ø§ØÙââÙÙ Ù
ظÙ
ÙÙÙÙÙ ÙØ§Ø²Ø§Ø±Ø§Ù Ø¨Û ØµØÛÙÙââÙÛ '''سÛز''' Ùارادا بÛÙرسÛÙÛز. (عÙاÙÙââ Ù
عÙÙÙ
ات اÛÚÙÙ [$1 کؤÙ
Ú© صØÛÙÙââسÛÙÙ] باخÛÙ). اگر Ø¨Û ØµØÛÙÙââÙ٠سÙÙÙ Ú¯ÙÙ
ÛسÛÙÛزس٠سادÙâج٠اÙÙÙارا٠براÙزئرÛÙ '''گئرÛ''' دÛÙÙ
ÙâسÛÙÙ ÙÛرÙÙ.",
"anontalkpagetext": "''ب٠صØÛÙÙ ÙئÛدÛاتâدا٠کئÚÙ
Ù
ÛØ´ Ù Ûا داخÛ٠اÙÙÙ
اÙ
ÛØ´ Ø¢ÙÙÙÛÙ
اÛستÛÙادÚÛÛ٠عاÛÛد Ù
ÙذاکÛر٠صØÛÙÙâسÛâدÛر.\nاÙÙا گؤر٠ب٠اÛستÛÙادÚÛÙÛ Ø±ÙÙ
âÙرد٠عبارت اÛÙ¾ اÙÙÙاÙÛ Ø§ÛÙÙ Ù
عÛ٠ائتÙ
Ú© Ù
جبÙرÛتÛÙدÛÛÚ©.\nبئÙ٠اÛÙ¾ اÙÙÙا٠بÛر ÙئÚÙ Ùرد طرÙÛÙâد٠اÛستÛÙادÙâد٠اÙÙا بÛÙر.\nاگر سÛز Ø¢ÙÙÙÛÙ
اÛستÛÙادÚÛسÛÙÛزس٠٠ب٠Ù
ئساÚÛ٠سÛز٠عاÛÛد اÙÙÙ
ادÛغÛÙÛ Ø¯ÙØ´ÙÙÙرسÙÙÙزسÙØ Ø§ÙÙدا [[Special:UserLogin/signup|ÙئÛدÛاتâدا٠کئÚÛÙ]] Ù Ûا [[Special:UserLogin|Ø¯Ø§Ø®Û Ø§ÙÙÙÙ]].''",
- "noarticletext": "اÛÙØ¯Û Ø¨Ù ØµØÛÙÙâد٠ÛØ§Ø²Û ÛÙخدÙر.\nسÛز Ø¢ÛØ±Û ØµØÛÙÙââÙرد٠[[Special:Search/{{PAGENAME}}|ب٠باشÙÛ٠اÙÚÙ٠آختارا بÛÙرسÛز]]Ø\nÛا دا [{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} اÛÙÚ¯ÛÙÛ ÙئÛدÙØ±Û Ø¢Ø®ØªØ§Ø±Ø§ بÛÙرسÛز]Ø\nÛا دا [{{fullurl:{{FULLPAGENAME}}|action=edit}} ب٠صØÛÙÙâÙÛ Ø¯ÙÛÛشدÛر٠بÛÙرسÛز] .",
+ "noarticletext": "اÛÙØ¯Û Ø¨Ù ØµÙØÙâد٠ÛØ§Ø²Û ÛÙخدÙر.\nسÛز Ø¢ÛØ±Û ØµÙØÙââÙرد٠[[Special:Search/{{PAGENAME}}|ب٠باشÙÛ٠اÙÚÙ٠آختارا بÛÙرسÛز]]Ø\nÛا دا [{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} باغÙÛ ÙئÛدÙØ±Û Ø¢Ø®ØªØ§Ø±Ø§ بÛÙرسÛز]Ø\nÛا دا [{{fullurl:{{FULLPAGENAME}}|action=edit}} ب٠صÙØÙâÙÛ Ø¯ÙÛÛشدÛر٠بÛÙرسÛز] .",
"noarticletext-nopermission": "ب٠صØÛÙÙââ اÛÙØ¯Û Ø¨ÙشدÙر. \nباشÙا صØÛÙÙââÙرد٠عÛÙÛ Ø¢Ø¯Ø¯Ø§ صØÛÙÙââÙÛ [[Special:Search/{{PAGENAME}}| آختار]], عÙاÙÙââÙÛ ÙئÙدÙر٠\n[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} باخا],\nÙ Ùا صØÛÙÙââÙÛ [{{fullurl:{{FULLPAGENAME}}|action=edit}} redaktÉ] ائد٠بÛÙرسÛÙÛز.",
"missing-revision": "«{{FULLPAGENAME}}» صØÛÙÙâØ³Û Ø§ÙÚÙÙ $1 ÙÙÙ
رÙâÙÛ ÙÙسخ٠ÛÙخدÙر.\n\nعÙ
ÙÙ
ا٠ب٠اÛشکاÙØ ÙØ§Ø®ØªÛ Ú¯Ø¦ÚÙ
ÛØ´ بÛر باغÙاÙØªÛ Ø§ÛÙ٠سÛÙÛÙÙ
ÛØ´ بÛر صØÛÙÙâÛÙ Ú¯ÙÙدÙØ Ùاباغا Ú¯Ùر.\n[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} سÛÙÙ
Ú© سÛاÙÛ]âسÛÙد٠باشÙا بÛÙÚ¯ÛÙر اÙÙا بÛÙر.",
"userpage-userdoesnotexist": "«$1» اÛستÛÙادÙâÚÛ ØØ³Ø§Ø¨Û ÛاراÙÙ
اÛÛبâدÛر.\nب٠صØÛÙÙâÙÛ ÛارادÙ
ا٠ÛÙخسا دÙÛÛشدÛرÙ
Ú¯ÛÙ٠بÛر د٠باخÛÙ.",
@@ -1176,6 +1179,7 @@
"rcshowhidemine": "Ù
ÙÛÙ
دÙÛÛØ´ÛÚ©ÙرÛÙ
Û $1",
"rcshowhidemine-show": "گؤستر",
"rcshowhidemine-hide": "Ú¯ÛزÙت",
+ "rcshowhidecategorization-hide": "Ú¯ÛزÙت",
"rclinks": "سÙÙ $2 Ú¯Ù٠عرضÛÙدÙâÚ©Û Ø³ÙÙ $1 دÙÙÛØ´ÛÚ©ÙÛÚ¯Û Ú¯Ø¤Ø³ØªØ± $3",
"diff": "ÙرÙ",
"hist": "گئÚÙ
ÛØ´",
@@ -1622,8 +1626,6 @@
"categories": "بؤÙÙ
ÙâÙر",
"categoriespagetext": "آشاغÛâØ¯Ø§Ú©Û {{PLURAL:$1|بÙÙÙ
Ù ÙردÙÙ|بÙÙÙ
Ù ÙردÙ}} صØÛÙÙâÙØ±Ø ÛاخÙد Ù
ئدÛا-ÙاÛÙâÙار Ùار.\n[[Special:UnusedCategories|اÛستÙاد٠اÙÙÙ
اÛا٠بÙÙÙ
Ù Ùر]] بÙرادا گؤسترÛÙÙ
ÙâÛÛب.\nÙÙ
âÚÛâÙÛÙØ [[Special:WantedCategories|ÙازÛÙ
اÙÙا٠بÙÙÙ
Ù ÙرÙ]] باخÛÙ.",
"categoriesfrom": "Ø´ÙÙÙÙÙا باشÙاÛا٠بÙÙÙ
Ù Ùر باخ:",
- "special-categories-sort-count": "Ù
ÛÙدارا گؤر٠تÙزÛÙ
ÙÙ",
- "special-categories-sort-abc": "اÙÛÙبا سÛØ±Ø§Ø³Û Ø§ÛÙ٠دÙز",
"deletedcontributions": "سÛÙÛÙÙ
ÛØ´ اÛستÛÙادÙâÚÛ ÚاÙÛØ´Ù
اÙارÛ",
"deletedcontributions-title": "سÛÙÛÙâÙ
ÛØ´ اÛستÛÙادÙâÚÛ ÚاÙÛØ´Ù
اÙارÛ",
"sp-deletedcontributions-contribs": "ÚاÙÛØ´Ù
اÙار",
@@ -1775,7 +1777,7 @@
"deleting-backlinks-warning": "'''اخطار:''' ب٠سÛÙÙ
Ú¯Ù ÙصدÛÙÛز اÙÙا٠صÙØÙâÛÙØ [[Special:WhatLinksHere/{{FULLPAGENAME}}|باشÙا صÙØÙâÙر]] باغÙاÙØªÛ ÙئرÛب Ûا اÙÙ٠اؤزÙرÛÙâد٠اÛØ´ÙدÛبâÙر.",
"rollback": "اÙÙÙÚ©Û ÙÙسخ٠Ùر",
"rollbacklink": "ÙاÛتار",
- "rollbacklinkcount": "$1 دÛÛشدÛرÙ
ÙâÙÛ ÙاÛتار",
+ "rollbacklinkcount": "{{PLURAL:$1|دÛÛشدÛرÙ
Ù}}ÙÛ ÙاÛتار",
"rollbacklinkcount-morethan": "$1-د٠ÚÙÙØ® دÛÛشدÛرÙ
ÙâÙÛ ÙاÛتار",
"rollbackfailed": "Ú¯Ø¦Ø±Û ÙاÛتارÙ
ا اÙغÙرسÙزدÙر",
"cantrollback": "دÛÛشدÛر Ú¯Ø¦Ø±Û ÙاÛتارÛÙا بÛÙÙ
Ø²Ø Ø¢Ø®ÛرÛÙØ¬Û Ø¯ÛÛشدÛر صØÛÙÙâد٠اÙÙا٠ÛئگاÙÙ ÙاÙÛتâدÛر.",
@@ -1893,6 +1895,7 @@
"contributions": "{{GENDER:$1|اÛØ´ÙدÙ}} ÚاÙÛØ´Ù
اÙارÛ",
"contributions-title": "$1 اÛØ´Ùد٠ÚاÙÛØ´Ù
اÙارÛ",
"mycontris": "ÚاÙÛØ´Ù
اÙار",
+ "anoncontribs": "ÚاÙÛØ´Ù
اÙار",
"contribsub2": "{{GENDER:$3|$1}} اÙÚÙÙ ($2)",
"contributions-userdoesnotexist": "«$1» اÛØ´Ùد٠ØØ³Ø§Ø¨Û Ø«Ø¨Øª اÙÙÙÙÙ
اÛÛبâدÛر.",
"nocontribs": "ب٠Ù
Ùشخصاتا اÙÛغÙ٠دÛÛشدÛر تاپÛÙÙ
ادÛ",
@@ -2196,19 +2199,15 @@
"import-logentry-upload-detail": "{{PLURAL:$1|بÛر|$1}} ÙÙسخ٠اÛÚØ±Û Ú¯ØªÛرÛÙدÛ",
"import-logentry-interwiki-detail": "$2-د٠{{PLURAL:$1|بÛر|$1}} ÙÙسخ٠اÛÚØ±Û Ú¯ØªÛرÛÙدÛ",
"javascripttest": "جاÙااسکرÛپت تÙستÛ",
- "javascripttest-pagetext-noframework": "ب٠صØÛÙÙØ Ø¬Ø§ÙااسکرÛپت تÙستÙرÛÙÛ Ø§ÛØ´ÙدÙ
گ٠ساخÙاÙÛÙÛبâدÛر.",
- "javascripttest-pagetext-unknownframework": "تاÙÛÙÙ
اÙ
ÛØ´ تÙست ائتÙ
٠سÛستÙÙ
Û Â«$1».",
"javascripttest-pagetext-unknownaction": "تاÙÛÙÙ
اÛا٠اÛØ´ «$1».",
- "javascripttest-pagetext-frameworks": "ÙÙØ·Ùا٠ب٠تÙست ائتÙ
٠سÛستÙÙ
ÙرÛ٠بÛرÛÙÛ Ø³Ø¦ÚÛÙ: $1",
- "javascripttest-pagetext-skins": "تÙستÙرÛ٠اÛجرا ائتÙ
Ú© اÙÚÙ٠بÛر ÙابÛ٠سئÚÛÙ:",
"javascripttest-qunit-intro": "mediawiki.org-دا [$1 تÙست ائتÙ
٠سÙدÙÙدÛرÙ
ÙâÙرÛ]Ù٠باخÛÙ.",
- "tooltip-pt-userpage": "اÛØ´Ùد٠صÙØÙâÙÛز",
+ "tooltip-pt-userpage": "اÛØ´Ùد٠صÙØÙâ{{GENDER:|ÙÛز}}",
"tooltip-pt-anonuserpage": "سÛز ا٠آÛâÙ¾Û Ø¢Ø¯Ø±Ø³ÛÙ٠دÙÛÛØ´ÛÚ©ÙÛÚ© ائتدÛÚ¯ÛÙÛز اÛستÛÙادÙâÚÛ ØµØÛÙÙâسÛ",
- "tooltip-pt-mytalk": "داÙÛØ´Û٠صÙØÙâÙÛز",
+ "tooltip-pt-mytalk": "{{GENDER:|سÛزÛÙ}} داÙÛØ´Û٠صÙØÙâÙÛز",
"tooltip-pt-anontalk": "ب٠آÛâÙ¾Û Ø¢Ø¯Ø±Ø³ÛÙÛ٠دÙÛÛØ´ÛÚ©ÙÛÚ©ÙرÛÙ٠گؤر٠داÙÛØ´ÛÙ",
- "tooltip-pt-preferences": "ترجÛØÙرÛÙÛز",
+ "tooltip-pt-preferences": "{{GENDER:|سÛزÛÙ}} ترجÛØÙرÛÙÛز",
"tooltip-pt-watchlist": "دÛÛØ´Ù
Ú©ÙرÛÙÛ Ø§ÛزÙÙâدÛÚ¯ÛÙÛز صÙØÙâÙرÛ٠سÛاÙÛâسÛ",
- "tooltip-pt-mycontris": "سÛزÛÙ ÚاÙÛØ´Ù
اÙارÛÙÛزÛÙ ÙÛستÛ",
+ "tooltip-pt-mycontris": "{{GENDER:|سÛزÛÙ}} ÚاÙÛØ´Ù
اÙارÛÙÛزÛÙ ÙÛستÛ",
"tooltip-pt-login": "Ú¯ÛرÛØ´ ائتÙ
ÙâÛÛÙÛز تÙصÛ٠اÙÙÙÙÙØ±Ø Ø§Ù
ا گرکÙÛ Ø¯Ø¦ÛÛÙ",
"tooltip-pt-logout": "ÚÛØ®ÛØ´",
"tooltip-pt-createaccount": "سÛزد٠دعÙت اÙÙÙÙÙر اÛØ´Ùد٠ØØ³Ø§Ø¨Û Ø¢ÚÛب Ù Ú¯ÛرÛØ´ ائدÙâسÛØ²Ø Ø¢Ùجا٠Øساب ÛاراتÙ
ا٠اÛستگ٠باغÙÛâدÛر",
@@ -2239,7 +2238,7 @@
"tooltip-t-recentchangeslinked": "ب٠صÙØÙâد٠باغÙاÙا٠صÙØÙâÙرÛ٠سÙ٠دÙÛÛØ´ÛÚ©ÙÛÚ©âÙرÛ",
"tooltip-feed-rss": "ب٠صØÛÙÙââ اÙÚÙ٠آراسâاس ÙاÙÛÙ
Û",
"tooltip-feed-atom": "ب٠صØÛÙÙââ اÙÚÙ٠آتÙÙ
ÙاÙÛÙ
Û",
- "tooltip-t-contributions": "ب٠اÛستÛÙادÙâÚÛâÙÛÙ ÙئردÛÚ¯Û Ø¯ÛÛØ´ÛÚ©Ùر سÛاÙÛâسÛ",
+ "tooltip-t-contributions": "{{GENDER:$1|Ø¨Û Ø§ÛØ´ÙدÙÛÙ}} ÙئردÛÚ¯Û Ø¯ÛÛØ´ÛÚ©Ùر ÙÛستÛ",
"tooltip-t-emailuser": "ب٠اÛستÛÙادÙâÚÛâÛ٠بÛر اÛÙ
Û٠گؤÙدر",
"tooltip-t-info": "ب٠صÙØÙâÛ٠گؤر٠آرتÛ٠بÛÙÚ¯Û",
"tooltip-t-upload": "ÙاÛÙâÙار ÛÙÚ©ÙÙ",
@@ -2445,8 +2444,8 @@
"exif-colorspace": "رÙÚ¯ ساØÙâسÛ",
"exif-componentsconfiguration": "Ùر بÛÙØ´ÙÛÙ Ù
عÙاسÛ",
"exif-compressedbitsperpixel": "Ø´Ú©Û٠سÛØ®ÛشدÛرÙ
ا ÙÙرÙ
اتÛ",
- "exif-pixelydimension": "Ø´Ú©ÛÙÛ٠اÙÛ",
- "exif-pixelxdimension": "Ø´Ú©ÛÙÛ٠اÙزÙÙاسÛ",
+ "exif-pixelxdimension": "Ø´Ú©ÛÙÛ٠اÙÛ",
+ "exif-pixelydimension": "Ø´Ú©ÛÙÛ٠اÙزÙÙاسÛ",
"exif-usercomment": "استÙادÚÛ Ø´Ø±ØÛ",
"exif-relatedsoundfile": "ØاÙÛÙدا سس ÙÛ ÙاÛÙ",
"exif-datetimeoriginal": "اÙرÚÛÙا٠ÛاراتÙ
ا زاÙ
اÙÛ",
@@ -2874,7 +2873,6 @@
"version-libraries-description": "Ø¢ÚÛÙÙاÙ
ا",
"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]].",
"redirect-submit": "گئت",
"redirect-lookup": "آختار:",
@@ -2886,7 +2884,6 @@
"redirect-not-exists": "دÙÚ¯Ùر تاپÛÙÙ
ادÛ",
"fileduplicatesearch": "دÙبÙÛکات ÙاÙ٠آختارÛØ´Û",
"fileduplicatesearch-summary": "تعÙ
Û٠ائتÙ
Ú© دÙÙØ±Û Ø¯Ø¤Ø´ÙâÙ
ÙâسÛÙد٠بÙزر ÙاÙÙÙØ§Ø±Û Ø¢Ø®ØªØ§Ø±.",
- "fileduplicatesearch-legend": "Dublikatı axtar",
"fileduplicatesearch-filename": "ÙاÙ٠آدÛ:",
"fileduplicatesearch-submit": "آختار",
"fileduplicatesearch-info": "$1 à $2 Ù¾ÛکسÙÙ ÙاÛ٠اؤÙÚÙسÙ: $3 MIME ÙÙعÙ: $4",
@@ -3036,7 +3033,7 @@
"feedback-bugcheck": "گؤزÙ! ÙÙØ· ÙÙØ·Ùا٠باخÛ٠ا٠[$1 تاÙÛÙÙ
ÛØ´ خطاÙار]دا٠اÙÙÙ
اسÛÙ.",
"feedback-bugnew": "ÛÙØ®ÙادÛÙ
. ÛئÙÛ Ø¨Ûر خطا گؤÙدر",
"feedback-bugornote": "بÛر تکÙÛÚ©Û Ø®Ø·Ø§ÙÛ Ø´Ø±Ø ÙئرÙ
گ٠آÙ
اد٠اÙÙØ³Ø§Ø²Ø ÙÙØ·Ùا٠[$1 بÛر باگ بÛÙدÛرÛÙ].\nا٠اÙÙÙ
Ø§Ø³Ø§Ø Ø¨Ù Ø¢Ø´Ø§ØºÛØ¯Ø§Ú©Û Ø³Ø§Ø¯Ù ÙÙرÙ
âدا٠اÛستÛÙاد٠ائد٠بÛÙرسÛÙÛز. سÛزÛ٠باخÛØ´ÛÙÛØ²Ø Ø§ÛستÛÙادÙâÚÛ Ø¢Ø¯ÛÙÛزÙØ§Ø Â«[$3 $2]» صØÛÙÙâسÛÙ٠آرتÛرÛÙاجاÙâدÛر.",
- "feedback-cancel": "Ùغ٠ائت",
+ "feedback-cancel": "ÙازگئÚ",
"feedback-close": "اÙÙدÙ",
"feedback-error-title": "خطا",
"feedback-error1": "خطا: API-دا٠تاÙÛÙÙ
اÙ
ÛØ´ ÙتÛجÙ",
diff --git a/languages/i18n/ba.json b/languages/i18n/ba.json
index 58851fdacd..9c4fdb0142 100644
--- a/languages/i18n/ba.json
+++ b/languages/i18n/ba.json
@@ -23,7 +23,9 @@
"Ð. ÓÐÐÐ",
"ЯнмÑÑза Ðаки",
"ÐйÑаÑ",
- "Lizalizaufa"
+ "Lizalizaufa",
+ "ÐÑÑлÑбаева ÐÑнÑÑÐ»Ñ Ðакиевна",
+ "ÐилÑданова ÐÑзелÑ"
]
},
"tog-underline": "ÒºÑлÑÐ°Ð½Ð¼Ð°Ð»Ð°Ñ Ð°Ò«ÑÑна Ò»ÑÒÑÑ:",
@@ -238,7 +240,7 @@
"jumpto": "Унда күÑеÑгÓ:",
"jumptonavigation": "Ñөп йүнÓлеÑÑÓÑ",
"jumptosearch": "ÑÒлÓÒ¯",
- "view-pool-error": "ÒÓÑÒ¯ иÑегеÒ, Ñ
ÓÒеÑге ваҡÑÑÑа ÑеÑвеÑÒÐ°Ñ Ð°ÑÑÑÒ¡ ÑейÓлгÓн.\nÐÑл биÑÑе ҡаÑаÑÒа ÑелÓÒ¯ÑелÓÑ Ð±Ð¸Ðº күп.\nÐÐ¸Ð½Ò»Ð°Ñ Ð±Ñл биÑÐºÓ Ò»ÑÒ£ÑÑак кеÑеп ҡаÑаÒÑÒ.\n\n$1",
+ "view-pool-error": "ÒÓÑÒ¯ иÑегеÒ, Ñ
ÓÒеÑге ваҡÑÑÑа ÑеÑвеÑÒÐ°Ñ Ð°ÑÑÑÒ¡ ÑейÓлгÓн.\nÐÑл биÑÑе ҡаÑаÑÒа ÑелÓÒ¯ÑелÓÑ Ð±Ð¸Ðº күп.\nÐÑл биÑÐºÓ Ò»ÑÒ£ÒаÑак кеÑеп ҡаÑаÒÑÒ.\n\n$1",
"generic-pool-error": "ÒÓÑÒ¯ иÑегеÒ, Ñ
ÓÒеÑге ваҡÑÑÑа ÑеÑвеÑÒÐ°Ñ ÐºÓ©ÑÓ©ÑгÓнеÑле ÑÑлÓй.\nÐÑл Ð±Ð¾Ð»Ð´Ñ Ò¡Ð°ÑаÑÒа ÑелÓÒ¯ÑелÓÑ Ð±Ð¸Ðº күп.\nÐинһаÑ, Ð±ÐµÑ Ð½Ð¸ Ñиклем көÑÓ©Ð³Ó©Ò Ò»Óм Ò»ÑÒ£ÑÑаҡ ÑаÒÑ Ð¼Ó©ÑÓжÓÒÓÑ Ð¸Ñеп ҡаÑаÒÑÒ.",
"pool-timeout": "ÐлоклаÑÒÑ ÐºÓ©ÑÓ©Ò¯ ваҡÑÑÑ Ò¯ÑÑе",
"pool-queuefull": "ҺоÑаÑÒÐ°Ñ ÑиÑаÑÑ ÑÑлÑ",
@@ -330,7 +332,7 @@
"readonly": "ÐÓÒлүмÓÑÑÓÑ Ð±Ð°Ð·Ð°Ò»Ñ Ð±Ð¸ÐºÐ»ÓнгÓн",
"enterlockreason": "ЯбÑлÑÑ ÑÓбÓбен Ò»Óм ваҡÑÑÑн белдеÑегеÒ.",
"readonlytext": "Ð¯Ò£Ñ Ð¼ÓÒ¡ÓлÓлÓÑ Ó©Ò«ÑÓÒ¯ Ò»Óм мÓÒлүмÓÑÑÓÑ Ð±Ð°Ð·Ð°Ò»ÑндаÒÑ Ð±Ð°Ñҡа Ò¯ÒгÓÑÑеүÒÓÑ Ñ
ÓÒÐµÑ ÑÑйÑлÒан. ÐÑл Ð¿Ð»Ð°Ð½Ð»Ñ Ñ
еÒмÓÑлÓндеÑеү ÑÓбÓпле бÑлÑÑÑ Ð¼Ó©Ð¼ÐºÐ¸Ð½, аÒаҡÑан ÒÓÒÓÑи Ñ
ÓÐ»Ð³Ó Ò¡Ð°Ð¹ÑаÑаҡ.\n\nЯбÑÑÑÑ Ñ
аким ҡалдÑÑÒан аңлаÑма:\n$1",
- "missing-article": "ÐÓÒлүмÓÑÑÓÑ Ð±Ð°Ð·Ð°Ò»Ñнда «$1» $2 биÑенең һоÑалÒан ÑекÑÑÑ ÑабÑлманÑ.\n\nÐÑл, ÒÓÒÓÑÑÓ, иҫкеÑгÓн Ò»ÑлÑанма бÑйÑнÑа ÑйÑлÒан биÑÑең Ò¯ÒгÓÑÑеү ÑаÑиÑ
Ñна күÑкÓÐ½Ð´Ó ÐºÐ¸Ð»ÐµÐ¿ ÑÑÒа.\n\nÓгÓÑ Ñ
аÑанÑÒ£ ÑÓбÓбе Ñл бÑлмаһа, ÑимÓк Ò»ÐµÒ Ð¿ÑогÑаммала Ñ
аÑа ÑапҡанһÑÒÑÒ.\nÐÑл ÑÑÑала Ð·Ð¸Ð½Ò»Ð°Ñ URL-Ð´Ñ ÐºÒ¯ÑÒ»ÓÑеп, [[Special:ListUsers/sysop|Ñ
акимгÓ]] белдеÑегеÒ.",
+ "missing-article": "ÐÓÒлүмÓÑÑÓÑ Ð±Ð°Ð·Ð°Ò»Ñнда «$1» $2 биÑенең һоÑалÒан ÑекÑÑ ÑабÑлманÑ.\n\nÐÑл, ÒÓÒÓÑÑÓ, иҫкеÑгÓн Ò»ÑлÑанма бÑйÑнÑа ÑйÑлÒан биÑÑең Ò¯ÒгÓÑÑеү ÑаÑиÑ
Ñна күÑкÓÐ½Ð´Ó ÐºÐ¸Ð»ÐµÐ¿ ÑÑÒа.\n\nÓгÓÑ Ñ
аÑанÑÒ£ ÑÓбÓбе Ñл бÑлмаһа, ÑимÓк, Ò»ÐµÒ Ð¿ÑогÑаммала Ñ
аÑа ÑапҡанһÑÒÑÒ.\nÐÑл ÑÑÑала, URL-Ð´Ñ ÐºÒ¯ÑÒ»ÓÑеп, [[Special:ListUsers/sysop|Ñ
акимÒа]] белдеÑегеÒ.",
"missingarticle-rev": "(веÑÑÐ¸Ñ â $1)",
"missingarticle-diff": "(айÑÑма: $1, $2)",
"readonly_lag": "Ó¨Ò«ÑÓÐ¼Ó ÑеÑÐ²ÐµÑ Ñөп ÑеÑÐ²ÐµÑ Ð¼ÐµÐ½Óн ÑинÑ
ÑонлаÑҡанÒа Ñиклем мÓÒлүмÓÑÑÓÑ Ð±Ð°Ð·Ð°Ò»Ñ Ð°Ð²ÑомаÑик ÑÓүеÑÑÓ Ò¯ÒгÓÑеÑÑÓÑÐ³Ó Ò¡Ð°ÑÑÑ ÑбÑлÒан.",
@@ -374,7 +376,7 @@
"viewsourcetext": "ÒºÐµÒ Ð±Ñл биÑÑең ÑÑÒанаҡ ÑекÑÑÑн ҡаÑай Ò»Óм күÑеÑмÓһен ала алаһÑÒÑÒ:",
"viewyourtext": "ÐÑл биÑÑÓге '''Ò¯ÒгÓÑÑеүÒÓÑегеÒÒең''' ÑÑÒанаҡ ÑекÑÑÑн ҡаÑай Ò»Óм күÑеÑмÓһен ала алаһÑÒÑÒ:",
"protectedinterface": "ÐÑл биÑÑÓ Ð¿ÑогÑамманÑÒ£ инÑеÑÑÐµÐ¹Ñ Ñ
ÓбÓÑе баÑ. Ðандализм оÑÑаҡÑаÑÑн бÑлдÑÑÐ¼Ð°Ñ Ó©Ñөн, бÑл биÑÑе Ò¯ÒгÓÑÑеү ÑÑйÑла.\nÐÑл Ñ
ÓбÓÑÒең ÑÓÑжемÓһен Ó©Ò«ÑÓÒ¯ йÓки Ò¯ÒгÓÑÑеү Ó©Ñөн, зинһаÑ, MediaWiki пÑоекÑÑнÑÒ£ [//translatewiki.net/ translatewiki.net] локаллÓÑÑеÑеү ÑайÑÑн Ò¡ÑлланÑÒÑÒ.",
- "editinginterface": "'''ÐÒÑибаÑ.''' ÒºÐµÒ Ð¿ÑогÑамманÑÒ£ аÑÐ°Ð¹Ó©Ò ÑекÑÑÑ Ð±ÑлÒан биÑÑе мөÑ
ÓÑÑиÑлÓйһегеÒ.\nÐ£Ð½Ñ Ò¯ÒгÓÑÑеү, баÑҡа Ò¡ÑлланÑÑÑÑлаÑÒÑн аÑÐ°Ð¹Ó©Ò ÐºÒ¯ÑенеÑен Ò¯ÒгÓÑÑÓÑÓкÑеÑ.\nТÓÑÐ¶ÐµÐ¼Ó Ó©Ñөн [//translatewiki.net/wiki/Main_Page?setlang=ba translatewiki.net] адÑеÑÑн, MediaWiki-Ð½Ñ Ð»Ð¾ÐºÐ°Ð»Ð»ÓÑÑеÑеү пÑоекÑÑн Ò¡ÑлланÑÑ ÑÒ¡ÑÑÑаҡ бÑлаÑаҡÑÑÑ.",
+ "editinginterface": "'''ÐÒÑибаÑ.''' ÒºÐµÒ Ð¿ÑогÑамманÑÒ£ аÑÐ°Ð¹Ó©Ò ÑекÑÑ Ð±ÑлÒан биÑÑе мөÑ
ÓÑÑиÑлÓйһегеÒ.\nÐ£Ð½Ñ Ò¯ÒгÓÑÑеү баÑҡа Ò¡ÑлланÑÑÑÑлаÑÒÑÒ£ аÑÐ°Ð¹Ó©Ò ÐºÒ¯ÑенеÑен Ò¯ÒгÓÑÑÓÑÓк.\nТÓÑÐ¶ÐµÐ¼Ó Ó©Ñөн [//translatewiki.net/wiki/Main_Page?setlang=ba translatewiki.net] адÑеÑÑн, MediaWiki-Ð½Ñ Ð»Ð¾ÐºÐ°Ð»Ð»ÓÑÑеÑеү пÑоекÑÑн Ò¡ÑлланÑÑ ÑÒ¡ÑÑÑаҡ бÑлаÑаҡ.",
"translateinterface": "ÐÑл Ñ
ÓбÓÑÒе ÑÓÑжÓÐ¼Ó Ð¸ÑÒ¯ Ó©Ñөн [//translatewiki.net/ translatewiki.net]ÑайÑÑн Ò¡ÑлланÑÒÑÒ.",
"cascadeprotected": "ÐÑл Ð±Ð¸Ñ Ò¯ÒгÓÑÑеүÒÓÑÒÓн һаҡланÒан, Ñөнки Ñл ÑÒмÓ-ÑÒлекле Ò»Ð°Ò¡Ð»Ð°Ñ Ò¡ÑйÑлÒан {{PLURAL:$1|1=биÑкÓ|биÑÑÓÑгÓ}} кеÑÓ:\n$2",
"namespaceprotected": "«$1» иÑем аÑаÑÑÒÑндаÒÑ Ð±Ð¸ÑÑÓÑÒе мөÑ
ÓÑÑиÑлÓÒ¯ Ó©Ñөн Ñ
оҡÑÒ¡ÑаÑÑÒÑÒ ÑÒ¡.",
@@ -417,7 +419,7 @@
"cannotloginnow-title": "Ð¥ÓÒÐµÑ Ò¯Ðº инеп бÑлмай",
"cannotloginnow-text": "$1 ÑайÒалланÒан ваҡÑÑÑа инеÑÐ³Ó ÑÑамай",
"yourdomainname": "ҺеÒÒең домен",
- "password-change-forbidden": "ÐÑл викила ÑеÑÒ»Ò¯ÒегеÒÒе Ò¯ÒгÓÑÑÓ Ð°Ð»Ð¼Ð°Ð¹Ò»ÑÒÑÒ.",
+ "password-change-forbidden": "ÐÑл викиÒа ÑеÑÒ»Ò¯ÒегеÒÒе Ò¯ÒгÓÑÑÓ Ð°Ð»Ð¼Ð°Ð¹Ò»ÑÒÑÒ.",
"externaldberror": "ТÑÑÒ¡Ñ Ð¼ÓÒлүмÓÑ Ð±Ð°Ð·Ð°Ò»Ñ Ð¼ÐµÐ½Óн ÑанÑлÒанда Ñ
аÑа баÑлÑҡҡа килде йÓки ÑÑÑÒ¡Ñ Ò¯Ò ÐºÓ©Ð¹Ð»ÓÒ¯ÒÓÑегеÒÒе Ò¯ÒгÓÑÑÐµÑ Ó©Ñөн Ñ
оҡÑÒ¡ÑаÑÑÒÑÒ ÐµÑÓÑле Ñүгел.",
"login": "ТанÑлÑÑ",
"nav-login-createaccount": "ТанÑлÑÑ Ð¹Óки ÑеÑкÓлеү",
@@ -556,7 +558,7 @@
"resetpass-submit-loggedin": "СеÑÒ»Ò¯ÒÒе Ò¯ÒгÓÑÑеÑгÓ",
"resetpass-submit-cancel": "ÐÓ©ÑÓ©ÑÓ©ÑгÓ",
"resetpass-wrong-oldpass": "ХаÑÐ°Ð»Ñ Ð²Ð°Ò¡ÑÑлÑÑа йÓки аÒÑмдаÒÑ ÑеÑÒ»Ò¯Ò.\nҺеÒ, бÓлки, ÑеÑÒ»Ò¯ÒегеÒÒе алмаÑÑÑÑÒанһÑÒÑÒ Ð¹Óки ÑÒ£Ñ ÑеÑÒ»Ò¯Ò Ò»Ð¾ÑаÑҡанһÑÒÑÒ.",
- "resetpass-recycled": "ÐÐ¸Ð½Ò»Ð°Ñ Ó©Ñөн Ò¯ÒегеÒÒекенÓн айÑÑÐ¼Ð°Ð»Ñ ÑеÑÒ»Ò¯Ò Ò»Ð°Ð¹Ð»Ð°ÒÑÒ.",
+ "resetpass-recycled": "Ò®ÒегеÒÒекенÓн айÑÑÐ¼Ð°Ð»Ñ ÑеÑÒ»Ò¯Ò Ò»Ð°Ð¹Ð»Ð°ÒÑÒ.",
"resetpass-temp-emailed": "ÒºÐµÒ ÑлекÑоÑон поÑÑа аÑа ебÓÑелгÓн ваҡÑÑлÑÑа ÑеÑÒ»Ò¯Ò Ð¼ÐµÐ½Óн индегеÒ. ÐнеүÒе баÑҡаÑÑÑ Ó©Ñөн ÑÒ£Ñ ÑеÑÒ»Ò¯Ò ÑÒÑÒÑÒ.",
"resetpass-temp-password": "ÐаҡÑÑлÑÑа ÑеÑÒ»Ò¯Ò",
"resetpass-abort-generic": "СеÑÒ»Ò¯ÒÒе Ò¯ÒгÓÑÑеү киңÓйеү ÑаÑаÑÑнан Ó©Òөлдө.",
@@ -592,7 +594,7 @@
"changeemail-password": "{{SITENAME}} пÑокÑÑ Ó©Ñөн ÑеÑÒ»Ò¯ÒегеÒ:",
"changeemail-submit": "ÐдÑеÑÑÑ Ò¯ÒгÓÑÑеÑгÓ",
"changeemail-throttled": "ÒºÐµÒ ÑиÑÑемаÒа ҡаÑ-Ò¡Ð°Ñ ÑанÑлÑÑÒа ÑÑÑÑÑÑÑÒÑÒ.\nТаÒÑ Ð±ÐµÑ ÑанÑлÑÑÒан алда, зинһаÑ, $1 көÑөгөÒ.",
- "changeemail-nochange": "ÐинһаÑ,баÑҡа ÑÒ£Ñ ÑлекÑÑон поÑÑаÒÑÒ Ð°Ð´ÑеÑÑн ÑÒÑÒÑÒ.",
+ "changeemail-nochange": "ÐинһаÑ,баÑҡа ÑÒ£Ñ ÑлекÑÑон поÑÑа адÑеÑÑн ÑÒÑÒÑÒ.",
"resettokens": "ТокендаÑÒÑ ÑаÑлаÑÒа",
"resettokens-text": "ÐÒ«Óп ÑÒмаÒÑÒ Ð¼ÐµÐ½Óн бÓйлÓнгÓн Ò¡Ð°Ð¹Ò»Ñ Ð±ÐµÑ ÑÓÑ
Ñи мÓÒлүмÓÑÑÓÑегеÒÐ³Ó Ð¸Ð½ÐµÒ¯Ð³Ó Ñл аÑÑÑÑÑ ÑокендаÑÒÑ ÑаÑлай алаһÑÒÑÒ.\n\nЯңÑлÑÑÑан ÑлаÑÒÑ Ð±ÐµÑÓйһе менÓн ÑÑÑаҡлаÑҡан йÓки аккаÑнÑÑÒÑÒ Ð²Ð°ÑÑÑÑÑлÒан оÑÑаҡÑа бÑÐ½Ñ ÑÑлÓÒ¯ моÑлаҡ.",
"resettokens-no-tokens": "ТаÑÐ»Ð°Ñ Ó©Ñөн ÑÐ¾ÐºÐµÐ½Ð´Ð°Ñ ÑÒ¡.",
@@ -872,7 +874,7 @@
"mergehistory-fail-bad-timestamp": "ÐаҡÑÑ ÑамÒÐ°Ò»Ñ Ð´Ó©ÑÓ©Ò« Ñүгел.",
"mergehistory-fail-invalid-source": "СÑÒанаҡ Ð±Ð¸Ñ Ð´Ó©ÑÓ©Ò« Ñүгел.",
"mergehistory-fail-invalid-dest": "ÐаҡÑÐ°Ñ Ð±Ð¸Ñе дөÑÓ©Ò« Ñүгел.",
- "mergehistory-fail-no-change": "ÐÐ¸Ñ ÑаÑÐ¸Ð·Ñ Ð²ÐµÑÑиÑлаÑÑ Ò¡ÑÑÑлманÑ. ÐÐ¸Ð½Ò»Ð°Ñ Ó©Ñөн, Ð±Ð¸Ñ Ò»Óм ваҡÑÑ Ð¿Ð°ÑамеÑÑÒаÑÑн ÑикÑеÑегеÒ.",
+ "mergehistory-fail-no-change": "ÐÐ¸Ñ ÑаÑиÑ
Ñ Ð²ÐµÑÑиÑлаÑÑ Ò¡ÑÑÑлманÑ. ÐÐ¸Ñ Ò»Óм ваҡÑÑ Ð¿Ð°ÑамеÑÑÒаÑÑн ÑикÑеÑегеÒ.",
"mergehistory-fail-permission": "ÐÐ¸Ñ ÑаÑиÑ
Ñн Ò¡ÑÑÑÑ Ó©Ñөн Ñ
оҡÑÒ¡ÑÐ°Ñ ÐµÑÓÑлек Ñүгел.",
"mergehistory-fail-self-merge": "СÑÒанаҡ Ò»Óм маҡÑÐ°Ñ Ð±Ð¸Ñ Ð±ÐµÑ ÑÓ©Ñлө.",
"mergehistory-fail-timestamps-overlap": "СÑÒанаҡ веÑÑÐ¸Ñ Ò¡Ð°Ð¿Ð»Ð°Ð½Ð° йÓки ÑÓÒÓйенлÓнгÓн веÑÑиÑнан Ò»ÑÒ£ килÓ.",
@@ -1022,11 +1024,11 @@
"prefs-common-css-js": "ÐÓ©ÑÓ ÐºÒ¯ÑенеÑÑÓÑ Ó©Ñөн дөйөм CSS/JS:",
"prefs-reset-intro": "ÐÑл биÑÑе, көйлÓÒ¯ÒÓÑегеÒÒе ÒÓÒÓÑÑÓге көйлÓÒ¯ÒÓÑÐ³Ó ÑаÑлаÑÑÑ Ó©Ñөн Ò¡ÑлланÑп бÑла.\nРаҫлаÒандан Ò»ÑÒ£ ÒÓмÓлде киÑе ҡайÑаÑÑп бÑлмаÑÑаҡ.",
"prefs-emailconfirm-label": "ÐлекÑÑон поÑÑÐ°Ð½Ñ ÑаҫлаÑ:",
- "youremail": "ÐлекÑÑон поÑÑа *",
+ "youremail": "ÐлекÑÑон поÑÑа :",
"username": "{{GENDER:$1|Ò ÑлланÑÑÑÑ Ð¸Ñеме}}:",
"prefs-memberingroups": "{{GENDER:$2|ÐÒза}} {{PLURAL:$1|ÑÓ©Ñкөмө|ÑÓ©ÑкөмдÓÑе}}:",
"prefs-registration": "ТеÑкÓлеү ваҡÑÑÑ:",
- "yourrealname": "ҺеÒÒең ÑÑÑн иÑÐµÐ¼ÐµÐ³ÐµÒ (*)",
+ "yourrealname": "ҺеÒÒең ÑÑÑн иÑемегеÒ:",
"yourlanguage": "ТÑÑÒ¡Ñ ÐºÒ¯ÑенеÑÑÓ Ò¡ÑлланÑлÒан Ñел:",
"yourvariant": "ÐÑÑÓлекÑең Ñел ваÑианÑÑ:",
"prefs-help-variant": "Ðики биÑÑÓÑенең ÑÑÑÓлеген күÑÒ»ÓÑеү Ó©Ñөн Ó©Ò«Ñөнлөк биÑелгÓн Ñел йÓки оÑÑогÑаÑиÑ.",
@@ -1272,8 +1274,8 @@
"recentchanges-legend-heading": "Ðегенда: ",
"recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} ([[Special:NewPages|Ð¯Ò£Ñ Ð±Ð¸ÑÑÓÑ Ð¸Ñемлеген]] ҡаÑаÒÑÒ)",
"recentchanges-submit": "ÐÒ¯ÑÒ»ÓÑеÑгÓ",
- "rcnotefrom": "ÐÒ«ÑаÑак $3, $4 Ó©Ñөн {{PLURAL:$5|Ò¯ÒгÓÑÑеүÒÓÑ ÐºÒ¯ÑÒ»ÓÑелгÓн}} ($1 аÑÑÑÒ¡ Ñүгел).",
- "rclistfrom": "$3 $2 баÑлап ÑÒ£Ñ Ò¯ÒгÓÑÑеүÒÓÑÒе күÑÒ»ÓÑ.",
+ "rcnotefrom": "ÐÒ«Ñа $3, $4 ҡаÑаÑа {{PLURAL:$5|Ò¯ÒгÓÑÑеүÒÓÑ ÐºÒ¯ÑÒ»ÓÑелгÓн}} ($1 күбеÑÓк Ñүгел).",
+ "rclistfrom": "$3 $2 алÑп ÑÒ£Ñ Ò¯ÒгÓÑÑеүÒÓÑÒе күÑÒ»ÓÑ.",
"rcshowhideminor": "бÓлÓкÓй ÑÓ©ÒÓÑеүÒÓÑÒе $1",
"rcshowhideminor-show": "ÐÒ¯ÑÒ»ÓÑеÑгÓ",
"rcshowhideminor-hide": "ÐÓÑеÑеÑгÓ",
@@ -1348,7 +1350,7 @@
"ignorewarning": "ÐиҫÓÑеүÒÓÑÒе иÒÑибаÑÒа алмаҫҡа Ò»Óм баÑÑÐ±ÐµÑ ÑÐ°Ð¹Ð»Ð´Ñ Ò»Ð°Ò¡Ð»Ð°ÑÒа",
"ignorewarnings": "ÐÓ©ÑÓ Ð¸Ò«ÐºÓÑмÓлÓÑÐ³Ó Ð¸ÒÑÐ¸Ð±Ð°Ñ Ð¸ÑмÓҫкÓ",
"minlength1": "ФайлдÑÒ£ иÑеме кÓÐ¼ÐµÐ½Ð´Ó Ð±ÐµÑ Ñ
ÓÑеÑÑÓн ÑоÑоÑÒа ÑейеÑ.",
- "illegalfilename": "«$1» ÑÐ°Ð¹Ð»Ñ Ð¸ÑÐµÐ¼ÐµÐ½Ð´Ó ÑÓ©Ñ
ÑÓÑ Ð¸ÑелмÓгÓн ÑÐ¸Ð¼Ð²Ð¾Ð»Ð´Ð°Ñ Ð±Ð°Ñ.\nÐÐ¸Ð½Ò»Ð°Ñ Ñайл иÑемен Ò¯ÒгÓÑÑÐµÐ³ÐµÒ Ò»Óм ÑÒ£Ñнан ÑейÓп ҡаÑаÒÑÒ.",
+ "illegalfilename": "«$1» ÑÐ°Ð¹Ð»Ñ Ð¸ÑÐµÐ¼ÐµÐ½Ð´Ó ÑÓ©Ñ
ÑÓÑ Ð¸ÑелмÓгÓн ÑÐ¸Ð¼Ð²Ð¾Ð»Ð´Ð°Ñ Ð±Ð°Ñ.\nФайл иÑемен Ò¯ÒгÓÑÑÐµÐ³ÐµÒ Ò»Óм ÑÒ£Ñнан ÑейÓп ҡаÑаÒÑÒ.",
"filename-toolong": "Файл иÑемдÓÑе 240 байÑÑÑ Ò¯ÑеÑÐ³Ó ÑÐµÐ¹ÐµÑ Ñүгел.",
"badfilename": "ФайлдÑÒ£ иÑеме $1 иÑÐµÐ¼ÐµÐ½Ó Ò¯ÒгÓÑÑелде.",
"filetype-mime-mismatch": "ФайлдÑÒ£ «.$1» киңÓйеүе ÑайлдÑÒ£ ($2) MIME-ÑÓ©ÑÓ©Ð½Ó Ñап килмÓй.",
@@ -1370,7 +1372,7 @@
"tmp-write-error": "ÐаҡÑÑÐ»Ñ ÑайлÒа ÑÒÒÑÑÑÑ Ñ
аÑаһÑ.",
"large-file": "ÐÓүмÓле $1 байÑÑан аÑÑмаÒан ÑÐ°Ð¹Ð»Ð´Ð°Ñ Ò¡ÑлланÑÑÒа кÓÒ£ÓÑ Ð¸ÑÐµÐ»Ó (бÑл ÑайлдÑÒ£ дÓүмÓле $2 Ð±Ð°Ð¹Ñ ÑÓÑкил иÑÓ).",
"largefileserver": "ÐÑл ÑайлдÑÒ£ дÓүмÓле ÑÓ©Ñ
ÑÓÑ Ð¸ÑелгÓндÓн ÒÑÑÑÑаҡ.",
- "emptyfile": "ÒºÐµÒ ÑейÓгÓн Ñайл бÑÑ Ð±ÑлÑÑÒа ÑейеÑ.\nÐÑл ÑайлдÑÒ£ иÑемен кеÑеÑкÓн ваҡÑÑÑа ебÓÑелгÓн Ñ
аÑа аÑҡаһÑнда бÑлÑÑÑ Ð¼Ó©Ð¼ÐºÐ¸Ð½.\nÐинһаÑ, Ò»ÐµÒ ÑÑÑнлап Ñа бÑл ÑÐ°Ð¹Ð»Ð´Ñ ÑелÓÑÐ³Ó ÑелÓйһегеÒме икÓнен ÑикÑеÑегеÒ.",
+ "emptyfile": "ÒºÐµÒ ÑейÓгÓн Ñайл бÑÑ Ð±ÑлÑÑÒа ÑейеÑ.\nÐÑл ÑайлдÑÒ£ иÑемен кеÑеÑкÓн ваҡÑÑÑа Ñ
аÑа бÑлÑÑÑ Ð¼Ó©Ð¼ÐºÐ¸Ð½.\nÐÑл ÑÐ°Ð¹Ð»Ð´Ñ ÑейÓÑÐ³Ó ÑелÓйгÓнегеÒÒе ÑикÑеÑегеÒ.",
"windows-nonascii-filename": "ÐÑл вики маÑ
ÑÑÑ Ñимвол бÑлÒан Ñайл иÑемдÓÑен ÑеÑÓклÓмÓй.",
"fileexists": "ÐÑндай иÑемле Ñайл Ð±Ð°Ñ Ð¸Ð½Ð´Ðµ, зинһаÑ, ÑÐ½Ñ Ð°Ð»ÑÑÑÑÑÑÑÒа ÑелÓүегеÒÒÓ ÑиклÓнһÓгеÒ, [[:$1]] ÑикÑеÑегеÒ.\n[[$1|thumb]]",
"filepageexists": "ÐÑл ÑайлдÑÒ£ ÑаÑÑиÑÐ»Ð°Ð¼Ð°Ò»Ñ Ð±Ð¸Ñе бÑлдÑÑÑлÒан инде: [[:$1]] , ÓÐ¼Ð¼Ó Ð±Ñндай иÑемле Ñайл ÑÒ¡.\nÐеÑеÑелгÓн ÑаÑÑиÑлама ÑайлдÑÒ£ ÑаÑÑиÑÐ»Ð°Ð¼Ð°Ò»Ñ Ð±Ð¸ÑÐµÐ½Ð´Ó ÑÑҡмаÑÑаҡ.\nÐ¯Ò£Ñ ÑаÑÑиÑлама Ó©Ò«ÑÓÑ Ó©Ñөн, һеÒÐ³Ó ÑÐ½Ñ Ò¡Ñл менÓн Ò¯ÒгÓÑÑеÑÐ³Ó ÑÑÑа килÓÑÓк.\n[[$1|thumb]]",
@@ -1500,6 +1502,7 @@
"uploadstash-badtoken": "ÐÑл ÒÓмÓлде баÑҡаÑÑп бÑлманÑ, һеÒÒең ÑÓ©ÒÓÑеү ÑÒмаÒÑÒ ÒÓмÓлдÓн ÑÑҡҡан бÑлÑÑÑ Ð¸Ñ
Ñимал. ЯңÑнан ҡабаÑлап ҡаÑаÒÑÒ.",
"uploadstash-errclear": "ФайлдаÑÒÑ ÑаÒаÑÑÑп бÑлманÑ.",
"uploadstash-refresh": "Ð¤Ð°Ð¹Ð»Ð´Ð°Ñ Ð¸Ñемлеген ÑÒ£ÑÑÑÑÑÒа",
+ "uploadstash-thumbnail": "Ò»Ò¯ÑÓÑÑÓÑÒе ҡаÑаÑ",
"invalid-chunk-offset": "Ò Ð°Ð±Ñл иÑелмÓгÓн ÑÑÐ°Ð³Ð¼ÐµÐ½Ñ ÑÑлÑÑÑ",
"img-auth-accessdenied": "ÐеÑеÑÐ³Ó ÑÓ©Ñ
ÑÓÑ Ð¸ÑелмÓй",
"img-auth-nopathinfo": "PATH_INFO ÑÒ¡.\nҺеÒÒең ÑеÑÐ²ÐµÑ Ð±Ñл мÓÒлүмÓÑÑе ебÓÑеү Ó©Ñөн көйлÓнмÓгÓн.\nУнÑÒ£ CGI нигеÒÐµÐ½Ð´Ó ÑÑлÓүе Ò»Óм img_auth Ò¡ÑлланмаÑÑ Ð¼Ó©Ð¼ÐºÐ¸Ð½.\nТÑлÑÑаҡ мÓÒлүмÓÑ: https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Image_Authorization",
@@ -1818,8 +1821,6 @@
"categories-submit": "ÐÒ¯ÑÒ»ÓÑеÑгÓ",
"categoriespagetext": "{{PLURAL:$1|1=ÐÑл каÑегоÑиÑ}}ла биÑÑÓÑ Ò»Óм медиа-ÑайллаÑÐ´Ð°Ñ Ð±Ð°Ñ.\nÐÒ«Ñа [[Special:UnusedCategories|Ò¡ÑлланÑлмаÒан каÑегоÑиÑлаÑ]] күһÓÑелмÓгÓн.\nШÑлай ÑÒ¡ [[Special:WantedCategories|Ñалап иÑелгÓн каÑегоÑиÑлаÑ]] күһÓÑелгÓн.",
"categoriesfrom": "ÐÑондай Ñ
ÓÑеÑÑÓÑÒÓн баÑланÒан каÑегоÑиÑлаÑÒÑ ÐºÒ¯ÑÒ»ÓÑеÑгÓ:",
- "special-categories-sort-count": "күлÓме бÑйÑнÑа ÑÓÑÑÐ¸Ð¿ÐºÓ ÐºÐ¸Ð»ÑеÑеÑгÓ",
- "special-categories-sort-abc": "алÑÐ°Ð²Ð¸Ñ Ð±ÑйÑнÑа ÑÓÑÑÐ¸Ð¿ÐºÓ ÐºÐ¸Ð»ÑеÑеÑгÓ",
"deletedcontributions": "Ò ÑлланÑÑÑÑлаÑÒÑÒ£ ÑйÑлÒан өлөÑÓ©",
"deletedcontributions-title": "Ò ÑлланÑÑÑÑлаÑÒÑÒ£ ÑйÑлÒан өлөÑÓ©",
"sp-deletedcontributions-contribs": "баÑҡаÑÒан ÑÑÑÓÑ",
@@ -2290,7 +2291,7 @@
"movepagetext": "ÐÒ«ÑаÒÑ Ò¡Ð°Ð»ÑпÑÑ Ò¡ÑлланÑп, биÑÑең иÑемен Ò¯ÒгÓÑÑÓ Ò»Óм ÑнÑÒ£ Ò¯ÒгÓÑÑеүÒÓÑ Ð¶ÑÑналÑн ÑÒ£Ñ ÑÑÑнÒа күÑеÑÓ Ð°Ð»Ð°Ò»ÑÒÑÒ.\nÐиÑÑең Ñлекке иÑеме ÑÒ£Ñ Ð±Ð¸ÑÐºÓ Ð¹Ò¯Ð½ÓлÑеү бÑлÑп ҡалаÑаҡ.\nÒºÐµÒ Ñлекке иÑÐµÐ¼Ð³Ó Ð±ÑлÒан йүнÓлÑеүÒÓÑÒе авÑомаÑик ÑÓүеÑÑÓ ÑÒ£Ñ Ð¸ÑÐµÐ¼Ð³Ó ÐºÒ¯ÑеÑÓ Ð°Ð»Ð°Ò»ÑÒÑÒ.\nÓгÓÑ Ð±ÑÐ½Ñ ÑÑлÓмÓÒ»ÓгеÒ, [[Special:DoubleRedirects|икеле]] Ò»Óм [[Special:BrokenRedirects|Ó©ÒөлгÓн йүнÓлÑеүÒÓÑ]] баÑлÑÒÑн ÑикÑеÑегеÒ.\nÒºÑлÑанмалаÑÒÑÒ£ кÓÑÓкле ÑÑÑнÒа күÑÒ»ÓÑеүен даÑам иÑеүе Ó©Ñөн Ò»ÐµÒ ÑÑаплÑ.\n\nÐÒÑÐ¸Ð±Ð°Ñ Ð¸ÑегеÒ: ÓгÓÑ ÑÒ£Ñ Ò»Ð°Ð¹Ð»Ð°Ð½Òан иÑемдÓге ÑаÒÑ Ð±ÐµÑ Ð±Ð¸Ñ Ð±Ð°Ñ Ð¸ÐºÓн, биÑÑең иÑеме '''Ò¯ÒгÓÑÑелмÓйÓÑÓк'''; Ñл Ð±Ð¸Ñ Ð¹Ò¯Ð½ÓлÑеүÑе йÓки бÑÑ Ð±Ñлһа Ò»Óм ÑÓ©ÒÓÑеүÒÓÑ ÑаÑиÑ
Ñна ÑÐ¹Ó Ð±Ñлмаһа ÒÑна, бÑл мөмкин.\nТимÓк, биÑÑең иÑемен ÑÒ£ÑлÑÑ Ò¯ÒгÓÑÑÒ»ÓгеÒ, биÑÑе Ñлекке иÑÐµÐ¼ÐµÐ½Ó ÐºÐ¸Ñе ҡайÑаÑа алаһÑÒÑÒ, лÓкин бÑлÒан биÑÑе ÑÑ Ð°Ð»Ð¼Ð°Ð¹Ò»ÑÒÑÒ.\n\n'''ÐҫкÓÑÑеү!'''\n\"ÐопÑлÑÑ\" биÑÑÓÑÒең иÑемен Ò¯ÒгÓÑÑеү күлÓмле Ò»Óм көÑөлмÓгÓн Ò»Ó©ÒөмÑÓлÓÑÐ³Ó ÐºÐ¸Ð»ÑеÑеÑÐ³Ó Ð¼Ó©Ð¼ÐºÐ¸Ð½.\nÐаÑам иÑеÑÒÓн алда, иÑ
Ñимал бÑлÒан Ò»Ó©ÒөмÑÓлÓÑÒе аңлаÑÑÒÑÒÒа ÑÑанÑÒÑÒ.",
"movepagetext-noredirectfixer": "ÐÒ«ÑаÒÑ ÑоÑÐ¼Ð°Ð½Ñ Ò¡ÑлланÑÑ Ð±Ð¸ÑÑең иÑемен Ò¯ÒгÓÑÑÓ Ò»Óм ÑнÑÒ£ Ò¯ÒгÓÑÑеүÒÓÑ ÑÒмаһÑн ÑÒ£Ñ ÑÑÑнÒа күÑеÑÓ.\nÐиÑÑең Ñлекке иÑеме ÑÒ£Ñ Ð±Ð¸ÑÐºÓ Ð¹Ò¯Ð½ÓлÑеү бÑлÑп ҡалаÑаҡ.\nÒºÐµÒ Ñлекке иÑÐµÐ¼Ð³Ó Ð±ÑлÒан йүнÓлÑеүÒÓÑÒе авÑомаÑик ÑÓүеÑÑÓ ÑÒ£Ñ Ð¸ÑÐµÐ¼Ð³Ó ÐºÒ¯ÑеÑÓ Ð°Ð»Ð°Ò»ÑÒÑз.\nÓгÓÑ Ð±ÑÐ½Ñ ÑÑлÓмÓÒ»ÓгеÒ, [[Special:DoubleRedirects|икеле]] Ò»Óм [[Special:BrokenRedirects|Ó©ÒөлгÓн йүнÓлÑеүÒÓÑÒе]] ÑикÑеÑегеÒ.\nÒºÑлÑанмалаÑÒÑÒ£ кÓÑÓкле ÑÑÑнÒа күÑÒ»ÓÑеүÒÓÑенең даÑам иÑеүе Ó©Ñөн Ò»ÐµÒ ÑÑаплÑ.\n\nÐÒÑÐ¸Ð±Ð°Ñ Ð¸ÑегеÒ, ÓгÓÑ ÑÒ£Ñ Ð¸Ñемле Ð±Ð¸Ñ Ð±Ð°Ñ Ð¸ÐºÓн, биÑÑең иÑеме '''Ò¯ÒгÓÑÑелмÓйÓÑÓк'''; Ñлекке Ð±Ð¸Ñ Ð¹Ò¯Ð½ÓлÑеү, бÑÑ Ò»Óм Ò¯ÒгÓÑÑеү ÑаÑиÑ
Ñна ÑÐ¹Ó Ð±ÑлмаÒан оÑÑаҡÑаÑÒан баÑҡа.\nÐÑл ÑÑÐ½Ñ Ð°Ò£Ð»Ð°Ñа: Ð±Ð¸Ñ Ð¸Ñемен ÑÒ£ÑлÑÑ Ò¯ÒгÓÑÑÒ»ÓгеÒ, биÑÑе киÑе ҡайÑаÑа алаһÑÒÑÒ, лÓкин бÑлÒан биÑÑе ÑÑ Ð°Ð»Ð¼Ð°Ð¹Ò»ÑÒÑÒ.\n\nÐÒÑибаÑ: \nÐопÑлÑÑ Ð±Ð¸ÑÑÓÑÒең иÑемен Ò¯ÒгÓÑÑеү көÑмÓгÓн Ò»Ó©ÒөмÑÓлÓÑÐ³Ó ÐºÐ¸Ð»ÑеÑүе мөмкин.\nÐаÑам иÑеÑÒÓн алда, бөÑÓ Ð±ÑлаÑаҡ Ò»Ó©ÒөмÑÓлÓÑÒе аңлаÑÑÒÑÒÒÑ ÑйлаÒÑÒ.",
"movepagetalktext": "Ð¤ÐµÐºÐµÑ Ð°Ð»ÑÑÑÑ Ð±Ð¸Ñенең иÑеме Ð»Ó Ò¯ÒгÓÑÑелÓÑÓк, '''килÓһе оÑÑаҡÑаÑÒан ÑÑÑ''':\n*ÐÑндай иÑемле ÑÐµÐºÐµÑ Ð°Ð»ÑÑÑÑ Ð±Ð¸Ñе баÑ, йÓки\n*ÐÒ«ÑаÒÑ ÑÐ»Ð´Ñ Ð±Ð¸Ð»Ð´ÓлÓмÓгÓнһегеÒ.\n\nÐÑндай оÑÑаҡÑаÑÒа, кÓÑÓкле бÑлһа, биÑÑÓÑÒе Ò¯ÒегеÒÒең күÑеÑÐµÒ¯ÐµÐ³ÐµÒ Ð¹Óки иÑемен Ò¯ÒгÓÑÑÐµÒ¯ÐµÐ³ÐµÒ ÐºÓÑÓк бÑлаÑаҡ.",
- "moveuserpage-warning": "'''ÐÒÑибаÑ:''' ÒºÐµÒ Ò¡Ð°ÑнаÑÑÑÑÑ Ð±Ð¸Ñенең иÑемен Ò¯ÒгÓÑÑеÑÐ³Ó Ð¹ÑйÑнаһÑÒÑÒ. ÐинһаÑ, биÑÑең Ð³ÐµÐ½Ó Ð¸Ñеме Ò¯ÒгÓÑÓÑÓк, ҡаÑнаÑÑÑÑÑ Ð¸Ñеме ''Ò¯ÒгÓÑмÓйÓÑÓк'', икÓнен ÐºÒ¯Ò Ò¯Ò£Ñнда ÑоÑоÒоÒ.",
+ "moveuserpage-warning": "'''ÐÒÑибаÑ:''' ÒºÐµÒ Ò¡Ð°ÑнаÑÑÑÑÑ Ð±Ð¸Ñенең иÑемен Ò¯ÒгÓÑÑеÑÐ³Ó Ð¹ÑйÑнаһÑÒÑÒ. ÐиÑÑең Ð³ÐµÐ½Ó Ð¸Ñеме Ò¯ÒгÓÑÓÑÓк, ҡаÑнаÑÑÑÑÑ Ð¸Ñеме ''Ò¯ÒгÓÑмÓйÓÑÓген'' ÐºÒ¯Ò Ò¯Ò£Ñнда ÑоÑоÒоÒ.",
"movecategorypage-warning": "ÐҫкÓÑмÓ: ÒºÐµÒ ÐºÐ°ÑегоÑÐ¸Ñ Ð±Ð¸Ñенең аÑамаһÑн Ò¯ÒгÓÑÑеÑÐ³Ó ÑелÓйһегеÒ.ÐинһаÑ, оÑо Ð±Ð¸Ñ ÐºÐµÐ½Ó Ò¯ÒгÓÑÑÐµÐ»ÐµÒ¯ÐµÐ½Ó Ð¸ÒÑÐ¸Ð±Ð°Ñ Ð¸ÑегеÒ, Ó Ð¸Ò«ÐºÐµ каÑегоÑиÑлаÒÑ Ð±Ð°Ñҡа биÑÑÓÑне ÑÒ£Ñнан каÑегоÑиÑланаÑаҡ.",
"movenologintext": "ÐиÑÑең иÑемен Ò¯ÒгÓÑÑеү Ó©Ñөн, Ò»ÐµÒ [[Special:UserLogin|ÑанÑлÑÑÒа]] ÑейеÑһегеÒ.",
"movenotallowed": "ҺеÒÒең Ð±Ð¸Ñ Ð¸Ñемен Ò¯ÒгÓÑÑеÑÐ³Ó Ñ
оҡÑÒÑÒÑÒ ÑÒ¡",
@@ -2437,11 +2438,7 @@
"import-logentry-upload-detail": "$1 {{PLURAL:$1|веÑÑÐ¸Ñ ÐºÒ¯ÑеÑелгÓн|веÑÑиÑÐ»Ð°Ñ ÐºÒ¯ÑеÑелгÓн}}",
"import-logentry-interwiki-detail": "$2-нан $1 {{PLURAL:$1|өлгө импоÑÑланÒан}}",
"javascripttest": "\nJavaScript ÑикÑеÑеү",
- "javascripttest-pagetext-noframework": "ÐÑл Ð±Ð¸Ñ JavaScript ÑикÑеÑенеүÒÓÑе Ò¯ÑкÓÑеү Ó©Ñөн ÑезеÑвланÒан.",
- "javascripttest-pagetext-unknownframework": "ÐилдÓÒ»ÐµÒ ÑикÑеÑенеүÒÓÑ Ð¼Ó©Ñ
иÑнамÓһе \"$1\".",
"javascripttest-pagetext-unknownaction": "$1 ÒÓмÓле билдÓһеÒ",
- "javascripttest-pagetext-frameworks": "ÐÐ¸Ð½Ò»Ð°Ñ Ó©Ñөн килÓһе ÑикÑеÑенеүÒÓÑ Ð¼Ó©Ñ
иÑнамÓһенең беÑеһен һайлап алÑÒÑÒ: $1",
- "javascripttest-pagetext-skins": "ÒºÑнаÑÒÑ Ð±Ð°ÑÐ»Ð°Ñ Ó©Ñөн ÑÑÑÑа Ò»ÑйлаÒÑÒ.",
"javascripttest-qunit-intro": "mediawiki.org адÑеÑÑ Ð±ÑйÑнÑа ҡаÑаÒÑÒ [$1 ÑеÑÑ Ò¯ÑкÓÑеү докÑменÑаÑиÑÒ»Ñ].",
"tooltip-pt-userpage": "{{GENDER:|ҺеÒÒең}} ҡаÑнаÑÑÑÑÑ Ð±Ð¸Ñе",
"tooltip-pt-anonuserpage": "IP адÑеÑÑÒÑÒ Ó©Ñөн ҡаÑнаÑÑÑÑÑ Ð±Ð¸Ñе",
@@ -2520,7 +2517,7 @@
"others": "баÑҡалаÑ",
"siteusers": "{{PLURAL:$2|1={{GENDER:$1|ҡаÑнаÑÑÑÑÑ}}|ҡаÑнаÑÑÑÑÑлаÑ}} {{grammar:genitive|{{SITENAME}}}} $1",
"anonusers": "{{PLURAL:$2|1=аноним ҡаÑнаÑÑÑÑÑ|аноним ҡаÑнаÑÑÑÑÑлаÑ}} {{grammar:genitive|{{SITENAME}}}} $1",
- "creditspage": "Ð ÓÑ
мÓÑ Ð±ÐµÐ»Ð´ÐµÑеү",
+ "creditspage": "Ð ÓÑ
мÓÑ Ð±ÐµÐ»Ð´ÐµÑеүÒÓÑ",
"nocredits": "ÐÑл мÓÒ¡ÓлÓне мөÑ
ÓÑÑиÑлÓÒ¯ÒÓ Ò¡Ð°ÑнаÑÑÑÑÑÐ»Ð°Ñ Ð¸Ñемлеге ÑÒ¡.",
"spamprotectiontitle": "Спамдан һаҡлаÑ",
"spamprotectiontext": "ÒºÐµÒ Ò»Ð°Ò¡Ð»Ð°ÑÒа ÑелÓгÓн Ð±Ð¸Ñ Ñпамдан Ò»Ð°Ò¡Ð»Ð°Ñ Ò¡Ð¾ÑÐ°Ð»Ñ ÑаÑаÑÑнан биклÓнгÓн.\nÒ Ð°Ñа иÑÐµÐ¼Ð»ÐµÐºÐºÓ ÐºÐµÑеÑелгÓн ÑÑÑÒ¡Ñ ÑайÑҡа Ò»ÑлÑанма бÑÒа ÑÓбÓпÑе бÑлÑÑÑ Ð¼Ó©Ð¼ÐºÐ¸Ð½.",
@@ -2695,8 +2692,8 @@
"exif-colorspace": "ТөҫÑÓÑ ÐºÐ¸Ò£Ð»ÐµÐ³Ðµ",
"exif-componentsconfiguration": "Төҫ өлөÑÑÓÑенең ÑÓ©ÒөлөÑÓ©",
"exif-compressedbitsperpixel": "Ð ÓÑемде Ò¡ÑÒ«ÑÑ ÑÑÑлÑ",
- "exif-pixelydimension": "Ð ÓÑем киңлеге",
- "exif-pixelxdimension": "Ð ÓÑем бейеклеге",
+ "exif-pixelxdimension": "Ð ÓÑем киңлеге",
+ "exif-pixelydimension": "Ð ÓÑем бейеклеге",
"exif-usercomment": "Ò ÑлланÑÑÑÑ Ð¸Ò«ÐºÓÑмÓһе",
"exif-relatedsoundfile": "ÐÓйле аÑдио Ñайл",
"exif-datetimeoriginal": "Төп көнө Ò»Óм ваҡÑÑÑ",
@@ -3137,7 +3134,6 @@
"version-libraries-description": "ТаÑÑиÑлама",
"version-libraries-authors": "ÐвÑоÑÒаÑ",
"redirect": "Файлдан, ÑайÒаланÑÑÑÑнан Ð¹Ó Ð²ÐµÑÑиÑнÑÒ£ ÑиңлÓÑÑеÑеүÑеһенÓн аÑÑабан йүнÓлÑеү",
- "redirect-legend": "ФайлÒа йÓки биÑÐºÓ Ð¹Ò¯Ð½ÓлÑеү",
"redirect-summary": "ÐÑл маÑ
ÑÑÑ Ð±Ð¸Ñ ÑайлÒа (ÑайлдÑÒ£ иÑеменÓн), биÑÐºÓ (веÑÑиÑнÑÒ£ ÑиңлÓÑÑеÑеүÑеһенÓн) йÓки ҡаÑнаÑÑÑÑÑнÑÒ£ биÑÐµÐ½Ó (ҡаÑнаÑÑÑÑÑнÑÒ£ Ò»Ð°Ð½Ð»Ñ ÑиңлÓÑÑеÑеүÑеһенÓн) йүнÓлÑÓ.",
"redirect-submit": "ÐÒ¯ÑеÑгÓ",
"redirect-lookup": "ÐÒлÓÒ¯",
@@ -3150,7 +3146,6 @@
"redirect-not-exists": "ÐÓÒÓнÓһе ÑабÑлманÑ",
"fileduplicatesearch": "ÐÐµÑ Ð¸Ñ ÑайлдаÑÒÑ ÑÒлÓÒ¯",
"fileduplicatesearch-summary": "ÐÐµÑ Ð¸Ñ ÑайлдаÑÒÑ Ñ
ÑÑ-кодÑаÑÑ Ð±ÑйÑнÑа ÑÒлÓÒ¯.",
- "fileduplicatesearch-legend": "ÐÐµÑ Ð¸Ñ ÑайлдаÑÒÑ ÑÒлÓÒ¯",
"fileduplicatesearch-filename": "Файл иÑеме:",
"fileduplicatesearch-submit": "ÐÒлÓÒ¯",
"fileduplicatesearch-info": "$1 à $2 пикÑел ФайлдÑÒ£ дÓүмÓле: $3 MIME ÑÓ©ÑÓ©: $4",
@@ -3449,7 +3444,7 @@
"duration-hours": "$1 {{PLURAL:$1|1=ÑÓÒÓÑ|ÑÓÒÓÑ}}",
"duration-days": "$1 {{PLURAL:$1|көн}}",
"duration-weeks": "$1 {{PLURAL:$1|аÒна}}",
- "duration-years": "$1 {{PLURAL:$1|йÑл|йÑлдаÑ}}",
+ "duration-years": "$1 {{PLURAL:$1|йÑл}}",
"duration-decades": "$1 {{PLURAL:$1|1=Ñн йÑллÑÒ¡|Ñн йÑллÑÒ¡ÑаÑ}}",
"duration-centuries": "$1 {{PLURAL:$1|1=бÑÑаÑ|бÑÑаÑÑаÑ}}",
"duration-millennia": "$1 {{PLURAL:$1|1=меңйÑллÑÒ¡|меңйÑллÑÒ¡ÑаÑ}}",
@@ -3481,7 +3476,7 @@
"expand_templates_generate_rawhtml": "ÐÒ¯ÑÒ»ÓÑеÑÐ³Ó HTML",
"expand_templates_preview": "Ò Ð°Ñап ÑÑÒÑÑ",
"expand_templates_preview_fail_html": "'''Ò ÑÒÒанÑÑҡа ҡаÑÑÑ, һеÒÒең ÑлÑÑÑÑÑ Ð¼ÓÒлүмÓÑÑÓÑÐµÐ³ÐµÒ ÑÒалдÑ. ÒºÓ©ÒөмÑÓлÓ, ÑеÑÐ²ÐµÑ Ò¯ÒгÓÑеÑÑеÑегеÒÒе ҡабÑл иÑÓ Ð°Ð»Ð¼Ð°Ð¹.'''\n\n''{{SITENAME}} Ñик ÑаÒа HTML Ò¡ÑлланÑÑÒÑ ÒÑна ÑÓ©Ñ
ÑÓÑ Ð¸ÑÓ; алдан ҡаÑаÑ, JavaScript-аÑакалаÑÒан һаҡланÑÑ Ð¼Ð°Ò¡ÑаÑÑ Ð¼ÐµÐ½Óн ÑбÑлÒан.''\n\n'''ÓгÓÑ Ò»ÐµÒ Ò¯ÒгÓÑÑеүÒе ÑÒ¡ÑÑ Ð½Ð¸ÓÑ Ð¼ÐµÐ½Óн баÑҡаÑаһаÒÑÒ Ð¸ÐºÓн, ÑаÒÑ Ð±ÐµÑ ÑапҡÑÑ Ò¡Ð°Ð±Ð°Ñлап ҡаÑаÒÑÒ. ХаÑа ҡабаÑланһа, ÑайÑÑан [[Special:UserLogout|ÑÑÒÑÒÑÒ]] Ò»Óм ÑÒ£Ñнан кеÑегеÒ.'''",
- "expand_templates_preview_fail_html_anon": "Ð¡Ð°Ð¹Ñ {{SITENAME}} «һоÑо» HTML иÑемлегендÓ, Ò»ÐµÒ ÑанÑлманÑÒÑÒ, ÑÑÒа алдан ҡаÑÐ°Ñ JavaScript-аÑакаһÑнан һаҡланÑÑ ÑаÑÐ°Ò»Ñ Ð±ÑлаÑÑÒ¡ йÓÑеÑелгÓн \n\nÐÐ¸Ð½Ò»Ð°Ñ Ó©Ñөн, [[Special:UserLogin|ÑанÑлÑÒÑÒ]] Ò»Óм ÑаÒÑ Ð±ÐµÑ Ð¼ÓÑÑÓÐ±Ó ÑÑлÓп ҡаÑаÒÑÒ.",
+ "expand_templates_preview_fail_html_anon": "Ð¡Ð°Ð¹Ñ {{SITENAME}} «һоÑо» HTML иÑемлегендÓ, Ò»ÐµÒ ÑанÑлманÑÒÑÒ, ÑÑÒа алдан ҡаÑÐ°Ñ JavaScript-аÑакаһÑнан һаҡланÑÑ ÑаÑÐ°Ò»Ñ Ð±ÑлаÑÑÒ¡ йÓÑеÑелгÓн \n\n [[Special:UserLogin|ТанÑлÑÒÑÒ]] Ò»Óм ÑаÒÑ Ð±ÐµÑ Ð¼ÓÑÑÓÐ±Ó ÑÑлÓп ҡаÑаÒÑÒ.",
"expand_templates_input_missing": "ÒºÐµÒ Ð½Ð¸Ð½Ð´Óй ÒÓ Ð±Ñлһа һөйлÓм Ò¡ÑйÑÑÒа ÑейеÑһегеÒ",
"pagelanguage": "ÐиÑÑең Ñелен Ò¯ÒгÓÑÑеү",
"pagelang-name": "ÐиÑ",
@@ -3534,6 +3529,7 @@
"special-characters-group-ipa": "Ð¥ÐÐ¤Ó (IPA)",
"special-characters-group-symbols": "ТамÒалаÑ",
"special-characters-group-greek": "ÐÑек",
+ "special-characters-group-greekextended": "ÐÑек ÑÐµÐ»ÐµÐ½Ð´Ó ÐºÐ¸Ò£ÓйÑелгÓн",
"special-characters-group-cyrillic": "ÐиÑиллик",
"special-characters-group-arabic": "ÒÓÑÓп",
"special-characters-group-arabicextended": "ÒÓÑÓп (киңÓйÑелгÓн)",
@@ -3554,10 +3550,30 @@
"mw-widgets-dateinput-no-date": "ÐаÑа һайланмаÒан",
"mw-widgets-titleinput-description-new-page": "ÐÑл Ð±Ð¸Ñ ÑÒ¡",
"mw-widgets-titleinput-description-redirect": "$1 йүнÓлÑеү",
- "api-error-blacklisted": "ÐÐ¸Ð½Ò»Ð°Ñ Ó©Ñөн, баÑҡа аңлайÑÑÐ»Ñ ÑÓ©ÑÓнÑÓ Ò»Ð°Ð¹Ð»Ð°ÒÑÒ.",
+ "api-error-blacklisted": "ÐаÑҡа аңлайÑÑÐ»Ñ Ð¸Ñем һайлаÒÑÒ.",
"sessionmanager-tie": "ÐÐµÑ ÑÐ»Ñ Ð±ÐµÑ Ð½Ð¸ÑÓ ÒаÑизанÑÒ£ Ñөп нөÑÑ
Óһен ÑикÑеÑеп бÑлмай: $1.",
"sessionprovider-generic": "$1 ÑеÑÑиÑ",
"sessionprovider-mediawiki-session-cookiesessionprovider": "кÑки нигеÒÐµÐ½Ð´Ó ÑеÑÑиÑлаÑ",
"sessionprovider-nocookies": "ЯÑÒам кÓÑÓкме?",
- "randomrootpage": "ЯÑÒам кÓÑÓкме?"
+ "randomrootpage": "ЯÑÒам кÓÑÓкме?",
+ "log-action-filter-block": "ÐÐ»Ð¾ÐºÐ»Ð°Ñ ÑÓ©ÑÓ©:",
+ "log-action-filter-delete": "ЮйÒÑÑÑÑ ÑÓ©ÑÓ©:",
+ "log-action-filter-patrol": "ÐаÑÑÑÐ»Ñ ÑÓ©ÑÓ©:",
+ "log-action-filter-protect": "ÒºÐ°Ò¡Ð»Ð°Ñ ÑÓ©ÑÓ©:",
+ "log-action-filter-upload": "ÐÒ¯ÑеÑеү ÑÓ©ÑÓ©:",
+ "log-action-filter-all": "ÐаÑÑÒ»Ñ",
+ "log-action-filter-block-block": "ÐиклÓÑгÓ",
+ "log-action-filter-block-reblock": "ÐикÑе Ò¯ÒгÓÑÑеү",
+ "log-action-filter-block-unblock": "ÐикÑе алÑÑÒа",
+ "log-action-filter-delete-delete": "ÐиÑÑе ÑйÑÑÒаÑ",
+ "log-action-filter-delete-restore": "ÐиÑÑе ÑеÑгеÒеү",
+ "log-action-filter-delete-event": "ÐÑÑÐ½Ð°Ð»Ð´Ñ ÑйÑÑ",
+ "log-action-filter-delete-revision": "ÐеÑÑиÑÐ½Ñ Ð°Ð»Ñп ÑаÑлаÑÒа",
+ "log-action-filter-patrol-patrol": "Ò Ñлдан паÑÑÑÐ»Ñ ÑһаÑ",
+ "log-action-filter-patrol-autopatrol": "ÐвÑомаÑик паÑÑÑлÑ",
+ "log-action-filter-protect-protect": "ҺаҡлаÑ",
+ "log-action-filter-protect-modify": "ЯңÑнан ÑейÓÒ¯",
+ "log-action-filter-protect-unprotect": "ҺаҡÑÑ Ð°Ð»Ñп ÑаÑлаÑ",
+ "log-action-filter-upload-upload": "Ð¯Ò£Ñ ÐºÒ¯ÑеÑеү",
+ "log-action-filter-upload-overwrite": "Ò Ð°Ð±Ð°ÑÑан ÑейÓÒ¯"
}
diff --git a/languages/i18n/bcc.json b/languages/i18n/bcc.json
index 943b13f25f..d228878a2a 100644
--- a/languages/i18n/bcc.json
+++ b/languages/i18n/bcc.json
@@ -1552,8 +1552,6 @@
"categories": "تÙرئاÙ",
"categoriespagetext": "جÙÙÛÚ¯ÛÙ {{PLURAL:$1|دست٠شاÙ
Ù|دست٠جات شاÙ
Ù}} صÙØات Ûا Ù
دÛا اÙت\n[[Special:UnusedCategories|دست٠جات Ø¨Û Ø§Ø³ØªÙادÙ]] ادا٠پÛشدارگ Ù٠بÙت.\n ÙÙÚÙØ´ بÚار[[Special:WantedCategories|ÙÙٹتگÛ٠دستÙ]].",
"categoriesfrom": "Ù¾Ûشدار دست٠جات ک٠شرÙع بÙت Ú¯ÙÙ:",
- "special-categories-sort-count": "ترتÛب پ٠اساس Ø´Ù
ار",
- "special-categories-sort-abc": "ترتÛب اÙÙبÛ",
"deletedcontributions": "Ù
شارکتا٠کابر Øذ٠بÙتء",
"deletedcontributions-title": "Ù
شارکتا٠کابر Øذ٠بÙتء",
"sp-deletedcontributions-contribs": "Ù
شارکتاÙ",
@@ -2192,8 +2190,8 @@
"exif-colorspace": "Ùضا رÙÚ¯",
"exif-componentsconfiguration": "Ù
عÙÛ Ùر جز",
"exif-compressedbitsperpixel": "Ù
د٠کÙ
پرس کت٠عکس",
- "exif-pixelydimension": "Ù
عتبرÛÙ Ù¾ÙÙات عکس",
- "exif-pixelxdimension": "Ù
عتبرÛ٠ارتÙاع عکس",
+ "exif-pixelxdimension": "Ù
عتبرÛÙ Ù¾ÙÙات عکس",
+ "exif-pixelydimension": "Ù
عتبرÛ٠ارتÙاع عکس",
"exif-usercomment": "Ùظرات کاربر",
"exif-relatedsoundfile": "Ù
ربÙØ·ÛÙ ÙاÛ٠صÙتÛ",
"exif-datetimeoriginal": "تارÛØ Ù ÙÙد شرکت٠دÛتا",
@@ -2540,7 +2538,6 @@
"redirect-submit": "برا",
"fileduplicatesearch": "گردگ Ù¾Ù Ú©Ù¾Û ÙاÛÙاÙ",
"fileduplicatesearch-summary": "گردگ Ù¾Ù Ú©Ù¾Û ÙاÛÙا٠پ٠اساس درÙÙ
Û٠ارزش.",
- "fileduplicatesearch-legend": "گردگ Ù¾Ù Ú©Ù¾Û",
"fileduplicatesearch-filename": ":ÙاÙ
ÙاÛÙ",
"fileduplicatesearch-submit": "گردگ",
"fileduplicatesearch-info": "$1 à $2 Ù¾Ûکس٠اÙداز٠ÙاÛÙ: $3 ÙÙع Ù
اÛÙ
: $4",
diff --git a/languages/i18n/bcl.json b/languages/i18n/bcl.json
index 99c880f822..a9a1d7551e 100644
--- a/languages/i18n/bcl.json
+++ b/languages/i18n/bcl.json
@@ -1537,8 +1537,6 @@
"categories": "Mga Kategoriya",
"categoriespagetext": "An minasunod {{PLURAL:$1|kategorya na may laog na|mga kategorya na may laog na}} mga pahina o midya.\n[[Special:UnusedCategories|Dae ginamit na mga kategorya]] dae ipinapahiling digde.\nAsin man hilnga an [[Special:WantedCategories|kinakaipong mga kategorya]].",
"categoriesfrom": "Pahilnga an mga kategorya magpoon sa:",
- "special-categories-sort-count": "salansana sa paagi nin bilang",
- "special-categories-sort-abc": "salansana sa paagi nin alpabetiko",
"deletedcontributions": "Parâon an mga kontribusyon kan parágamit",
"deletedcontributions-title": "Parâon an mga kontribusyon kan parágamit",
"sp-deletedcontributions-contribs": "mga kontribusyon",
@@ -2083,10 +2081,6 @@
"import-logentry-upload-detail": "$1 {{PLURAL:$1|rebisyon|mga rebisyon}}",
"import-logentry-interwiki-detail": "$1 {{PLURAL:$1|rebisyon|mga rebisyon}} gikan sa $2",
"javascripttest": "Testing sa JavaScript",
- "javascripttest-pagetext-noframework": "An pahinang ini reserbado para sa pagpapadalagan kan mga pagtesting sa JavaScript.",
- "javascripttest-pagetext-unknownframework": "Bakong bistadong modelo para sa pagtesting kan \"$1\".",
- "javascripttest-pagetext-frameworks": "Pakipili tabi nin saro sa minasunod na mga modelo sa pagtesting: $1",
- "javascripttest-pagetext-skins": "Magpili nin sarong kublit tanganing padalaganon an mga pagtesting sa:",
"javascripttest-qunit-intro": "Hilngon [$1 dokumentasyon sa pagtesting] sa mediawiki.org.",
"tooltip-pt-userpage": "An saimong paragamit na pahina",
"tooltip-pt-anonuserpage": "An páhina nin páragamit para sa ip na pighihira mo bilang",
@@ -2332,8 +2326,8 @@
"exif-colorspace": "Espasyong kulay",
"exif-componentsconfiguration": "Panabot kan lambang komponente",
"exif-compressedbitsperpixel": "Moda nin kompresyon sa imahe",
- "exif-pixelydimension": "Lakbang kan imahe",
- "exif-pixelxdimension": "Langkaw kan imahe",
+ "exif-pixelxdimension": "Lakbang kan imahe",
+ "exif-pixelydimension": "Langkaw kan imahe",
"exif-usercomment": "Mga komento kan paragamÃt",
"exif-relatedsoundfile": "Kaakibay kan sagunson na pandangog",
"exif-datetimeoriginal": "Petsa asin oras kan henerasyon nin datos",
@@ -2749,7 +2743,6 @@
"version-entrypoints-header-entrypoint": "Puntong pan-entrada",
"version-entrypoints-header-url": "Kilyawan",
"redirect": "Palikwata sa paagi nin sagunson, paragamit, pahina o rebisyon kan ID",
- "redirect-legend": "Palikwatong pasiring sa sarong sagunson o pahina",
"redirect-summary": "Ining espesyal na pahina minalikwat pasiring sa sarong sagunson (ipinagtao an pangaran nin sagunson), sarong pahina (ipinagtao an sarong rebisyon nin ID o pahina nin ID), o sarong pahina nin paragamit (ipinagtao an numerikong ID nin paragamit). Pinagkagamitan: [[{{#Special:Redirect}}/sagunson/Example.jpg]], [[{{#Special:Redirect}}/rebisyon/328429]], or [[{{#Special:Redirect}}/paragamit/101]].",
"redirect-submit": "Dumani",
"redirect-lookup": "Hanapon mo",
@@ -2761,7 +2754,6 @@
"redirect-not-exists": "Halaga dae nanagboan",
"fileduplicatesearch": "Maghanap kan duplikadong mga sagunson",
"fileduplicatesearch-summary": "Maghanap kan duplikadong mga sagunson na pinagbasihan an mga kahalagahan nin hash.",
- "fileduplicatesearch-legend": "Maghanap kan sarong duplikado",
"fileduplicatesearch-filename": "Ngaran nin sagunson:",
"fileduplicatesearch-submit": "Maghanap",
"fileduplicatesearch-info": "$1 Ã $2 piksel Sukol nin sagunson: $3 MIME tipo: $4",
diff --git a/languages/i18n/be-tarask.json b/languages/i18n/be-tarask.json
index bc80b867ab..309860474d 100644
--- a/languages/i18n/be-tarask.json
+++ b/languages/i18n/be-tarask.json
@@ -33,6 +33,7 @@
"tog-watchdefault": "ÐадаваÑÑ Ñ Ð¼Ð¾Ð¹ ÑÑпÑÑ Ð½Ð°Ð·ÑÑанÑÐ½Ñ ÑÑаÑÐ¾Ð½ÐºÑ Ñ ÑайлÑ, ÑкÑÑ Ñ {{GENDER:|ÑÑдагаваÑ|ÑÑдагавала}}",
"tog-watchmoves": "ÐадаваÑÑ Ñ Ð¼Ð¾Ð¹ ÑÑпÑÑ Ð½Ð°Ð·ÑÑанÑÐ½Ñ Ð¿ÐµÑанеÑенÑÑ Ð¼Ð½Ð¾Ñ ÑÑаÑÐ¾Ð½ÐºÑ Ñ ÑайлÑ",
"tog-watchdeletion": "ÐадаваÑÑ Ñ Ð¼Ð¾Ð¹ ÑÑпÑÑ Ð½Ð°Ð·ÑÑанÑÐ½Ñ ÑÑаÑÐ¾Ð½ÐºÑ Ñ ÑайлÑ, ÑкÑÑ Ñ Ð²ÑдалÑÑ",
+ "tog-watchuploads": "ÐадаваÑÑ ÑайлÑ, ÑкÑÑ Ñ Ð·Ð°Ð³ÑÑжаÑ, Ñ Ð¼Ð¾Ð¹ ÑÑпÑÑ Ð½Ð°Ð·ÑÑанÑнÑ",
"tog-watchrollback": "ÐадаваÑÑ Ñ Ð¼Ð¾Ð¹ ÑÑпÑÑ Ð½Ð°Ð·ÑÑанÑÐ½Ñ ÑÑаÑонкÑ, дзе Ñ {{GENDER:|зÑабÑÑ|зÑабÑла}} адкаÑ",
"tog-minordefault": "Ðа змоÑÑанÑÐ½Ñ Ð¿Ð°Ð·Ð½Ð°ÑаÑÑ ÑÑе мае пÑаÑÐºÑ Ð´ÑобнÑмÑ",
"tog-previewontop": "ÐаказваÑÑ Ð¿Ð°Ð¿ÑÑÑÐ´Ð½Ñ Ð¿ÑаглÑд ÑÑаÑÐ¾Ð½ÐºÑ Ð½Ð°Ð´ полем ÑÑдагаванÑнÑ",
@@ -474,7 +475,7 @@
"noemail": "{{GENDER:$1|УдзелÑнÑк «$1» не пазнаÑÑÑ|УдзелÑнÑÑа «$1» не пазнаÑÑла}} нÑÑкага адÑаÑÑ ÑлекÑÑоннай поÑÑÑ.",
"noemailcreate": "ÐÑ Ð¿Ð°Ð²ÑÐ½Ð½Ñ Ð¿Ð°Ð·Ð½Ð°ÑÑÑÑ ÑлÑÑÐ½Ñ Ð°Ð´ÑÐ°Ñ ÑлекÑÑоннай поÑÑÑ",
"passwordsent": "ÐÐ¾Ð²Ñ Ð¿Ð°ÑÐ¾Ð»Ñ Ð±ÑÑ Ð´Ð°ÑÐ»Ð°Ð½Ñ Ð½Ð° адÑÐ°Ñ ÑлекÑÑоннай поÑÑÑ ÑдзелÑнÑка «$1».\nÐÐ°Ð»Ñ Ð»Ð°Ñка, ÑвайдзÑÑе Ñ ÑÑÑÑÑÐ¼Ñ Ð¿Ð°ÑÑÐ»Ñ Ñго аÑÑÑманÑнÑ.",
- "blocked-mailpassword": "Ð ÐаÑага IP-адÑаÑÑ Ð·Ð°Ð±Ð°ÑоненÑÑ ÑÑдагаванÑнÑ, а ÑÐ°Ð¼Ñ ÑакÑама Ð´Ð»Ñ Ð¿ÑадÑÑ
ÑленÑÐ½Ñ ÑÐºÐ¾Ð´Ñ Ð½ÐµÐ´Ð°ÑÑÑÐ¿Ð½Ð°Ñ ÑÑнкÑÑÑ Ð°Ð´Ð½Ð°ÑленÑÐ½Ñ Ð¿Ð°ÑолÑ.",
+ "blocked-mailpassword": "Ð ÐаÑага IP-адÑаÑÑ Ð·Ð°Ð±Ð°ÑоненÑÑ ÑÑдагаванÑнÑ. Ðаб пазÑбегнÑÑÑ Ð·Ð»Ð¾ÑжÑванÑнÑÑ, з гÑÑага IP-адÑаÑÑ Ð·Ð°Ð±Ð°Ñонена аднаÑлÑÑÑ Ð¿Ð°ÑолÑ.",
"eauthentsent": "ÐаÑÑвеÑджанÑне бÑло даÑланае на пазнаÑÐ°Ð½Ñ Ð°Ð´ÑÐ°Ñ ÑлекÑÑоннай поÑÑÑ.\nУ лÑÑÑÑе ÑÑÑÑмлÑваÑÑÑа ÑнÑÑÑÑкÑÑÑ, па вÑкананÑÐ½Ñ ÑкÑÑ
ÐÑ Ð·Ð¼Ð¾Ð¶Ð°Ñе паÑÑвеÑдзÑÑÑ, ÑÑо адÑÐ°Ñ ÑапÑаÑÐ´Ñ Ð½Ð°Ð»ÐµÐ¶ÑÑÑ Ðам, Ñ Ð½Ð° гÑÑÑ Ð°Ð´ÑÐ°Ñ Ð±Ñдзе даÑÑлаÑÑа поÑÑа адÑÑлÑ.",
"throttled-mailpassword": "ÐÑÑÑ Ð¿Ñа ÑкÑданÑне паÑÐ¾Ð»Ñ Ñжо бÑло даÑлана за {{PLURAL:$1|$1 апоÑнÑÑ Ð³Ð°Ð´Ð·ÑнÑ|$1 апоÑнÑÑ Ð³Ð°Ð´Ð·ÑнÑ|$1 апоÑнÑÑ
гадзÑнаÑ}}.\nÐÐ»Ñ Ð¿ÑадÑÑ
ÑленÑÐ½Ñ Ð·Ð»Ð¾ÑжÑванÑнÑÑ Ð½Ð°Ð¿Ð°Ð¼Ñн бÑдзе даÑÑлаÑÑа не ÑаÑÑÑей Ñк аднойÑÑ Ñ $1 {{PLURAL:$1|гадзÑнÑ|гадзÑнÑ|гадзÑнаÑ}}.",
"mailerror": "ÐамÑлка пÑÑ Ð°Ð´Ð¿ÑаÑÑÑ ÑлекÑÑоннай поÑÑÑ: $1",
@@ -1171,7 +1172,7 @@
"right-applychangetags": "дадаваÑÑ [[Special:Tags|меÑкÑ]] пÑÑ ÑÑдагаванÑнÑ",
"right-changetags": "дадаваÑÑ Ñ Ð²ÑдалÑÑÑ Ð°Ð´Ð²Ð¾Ð»ÑнÑÑ [[Special:Tags|меÑкÑ]] да аÑобнÑÑ
вÑÑÑÑÑÑ Ñ Ð·Ð°Ð¿ÑÑÐ°Ñ Ñ Ð¶ÑÑнале падзеÑÑ",
"grant-generic": "ÐÐ°Ð±Ð¾Ñ Ð¿ÑÐ°Ð²Ð¾Ñ Â«$1»",
- "grant-group-page-interaction": "УзаемадзенÑне з ÑÑаÑонкамÑ",
+ "grant-group-page-interaction": "УзаемадзеÑнÑне з ÑÑаÑонкамÑ",
"grant-group-file-interaction": "УзаемадзеÑнÑне з мÑдÑÑÑайламÑ",
"grant-group-watchlist-interaction": "УзаемадзеÑнÑне з ваÑÑм ÑÑпÑÑам назÑÑанÑнÑ",
"grant-group-email": "ÐдпÑаÑка лÑÑÑÐ¾Ñ ÑлекÑÑоннай поÑÑÑ",
@@ -1313,9 +1314,9 @@
"recentchangeslinked-page": "Ðазва ÑÑаÑонкÑ:",
"recentchangeslinked-to": "ÐамеÑÑ Ð³ÑÑага паказваÑÑ Ð·ÑÐ¼ÐµÐ½Ñ Ð½Ð° ÑÑаÑонкаÑ
, ÑÑо ÑпаÑÑлаÑÑÑа на гÑÑÑÑ ÑÑаÑонкÑ",
"recentchanges-page-added-to-category": "[[:$1]] Ð´Ð°Ð´Ð°Ð´Ð·ÐµÐ½Ð°Ñ Ð´Ð° каÑÑгоÑÑÑ",
- "recentchanges-page-added-to-category-bundled": "[[:$1]] Ñ ÑÑÑÑ [[Special:WhatLinksHere/$1|{{PLURAL:$2|$2 ÑÑаÑонка бÑла дададзенаÑ|$2 ÑÑаÑÐ¾Ð½ÐºÑ Ð±ÑÐ»Ñ Ð´Ð°Ð´Ð°Ð´Ð·ÐµÐ½ÑÑ|$2 ÑÑаÑонак бÑÐ»Ñ Ð´Ð°Ð´Ð°Ð´Ð·ÐµÐ½ÑÑ}}]] да каÑÑгоÑÑÑ",
+ "recentchanges-page-added-to-category-bundled": "[[:$1]] Ð´Ð°Ð´Ð°Ð´Ð·ÐµÐ½Ð°Ñ Ð´Ð° каÑÑгоÑÑÑ, [[Special:WhatLinksHere/$1|гÑÑÐ°Ñ ÑÑаÑонка ÑклÑÑÐ°Ð½Ð°Ñ Ñ ÑнÑÑÑ ÑÑаÑонкÑ]]",
"recentchanges-page-removed-from-category": "[[:$1]] вÑÐ´Ð°Ð»ÐµÐ½Ð°Ñ Ð· каÑÑгоÑÑÑ",
- "recentchanges-page-removed-from-category-bundled": "[[:$1]] Ñ ÑÑÑÑ [[Special:WhatLinksHere/$1|$2 {{PLURAL:$2|ÑÑаÑонка бÑла вÑдаленаÑ|ÑÑаÑÐ¾Ð½ÐºÑ Ð±ÑÐ»Ñ Ð²ÑдаленÑÑ|ÑÑаÑонак бÑÐ»Ñ Ð²ÑдаленÑÑ}}]] з каÑÑгоÑÑÑ",
+ "recentchanges-page-removed-from-category-bundled": "[[:$1]] вÑÐ´Ð°Ð»ÐµÐ½Ð°Ñ Ð· каÑÑгоÑÑÑ, [[Special:WhatLinksHere/$1|гÑÑÐ°Ñ ÑÑаÑонка ÑклÑÑÐ°Ð½Ð°Ñ Ñ ÑнÑÑÑ ÑÑаÑонкÑ]]",
"autochange-username": "ÐÑÑамаÑÑÑÐ½Ð°Ñ Ð·Ñмена MediaWiki",
"upload": "ÐагÑÑзÑÑÑ Ñайл",
"uploadbtn": "ÐагÑÑзÑÑÑ Ñайл",
@@ -1388,6 +1389,7 @@
"uploaded-script-svg": "У загÑÑжанÑм SVG-Ñайле Ð·Ð½Ð¾Ð¹Ð´Ð·ÐµÐ½Ñ Ð½ÐµÐ±ÑÑÑпеÑÐ½Ñ ÑлемÑÐ½Ñ Ð· падÑÑÑмкай ÑÑÑнаÑÐ¾Ñ Â«$1».",
"uploaded-hostile-svg": "ÐÐ½Ð¾Ð¹Ð´Ð·ÐµÐ½Ñ Ð½ÐµÐ±ÑÑÑпеÑÐ½Ñ CSS Ñ ÑлемÑнÑе ÑÑÑÐ»Ñ Ð·Ð°Ð³ÑÑжанага SVG-Ñайла.",
"uploaded-event-handler-on-svg": "УÑÑалÑÑваÑÑ Ð°ÑÑÑбÑÑÑ Ð°Ð¿ÑаÑоÑнÑка падзеÑÑ $1=\"$2\"
не дазволена Ð´Ð»Ñ SVG-ÑайлаÑ.",
+ "uploaded-href-attribute-svg": "href-аÑÑÑбÑÑам Ñ SVG-ÑайлаÑ
дазволена веÑÑÑÑ ÑолÑÐºÑ Ð½Ð° http:// ÑÑ https://, знойдзена <$1 $2=\"$3\">
.",
"uploaded-href-unsafe-target-svg": "У загÑÑжанÑм SVG-Ñайле Ð·Ð½Ð¾Ð¹Ð´Ð·ÐµÐ½Ð°Ñ ÑпаÑÑлка на небÑÑÑпеÑнÑÑ Ð·ÑвеÑÑкÑ: URI-мÑÑÑ <$1 $2=\"$3\">
.",
"uploaded-animate-svg": "У загÑÑжанÑм SVG-Ñайле Ð·Ð½Ð¾Ð¹Ð´Ð·ÐµÐ½Ñ ÑÑг «animate», ÑÐºÑ Ð¼Ð¾Ð¶Ð° зÑмÑнÑÑÑ ÑпаÑÑÐ»ÐºÑ Ð· дапамогай аÑÑÑбÑÑÑ Â«from» <$1 $2=\"$3\">
.",
"uploaded-setting-event-handler-svg": "УÑÑалÑÑка аÑÑÑбÑÑÐ°Ñ Ð°Ð¿ÑаÑоÑÐºÑ Ð¿Ð°Ð´Ð·ÐµÑÑ Ð·Ð°Ð±Ð»ÑкаванаÑ, Ñ Ð·Ð°Ð³ÑÑжанÑм SVG-Ñайле Ð·Ð½Ð¾Ð¹Ð´Ð·ÐµÐ½Ñ ÐºÐ¾Ð´ <$1 $2=\"$3\">
.",
@@ -1420,6 +1422,7 @@
"upload-too-many-redirects": "URL-адÑÐ°Ñ ÑÑÑÑмлÑвае заÑÐ¼Ð°Ñ Ð¿ÐµÑанакÑÑаванÑнÑÑ",
"upload-http-error": "УзÑнÑкла памÑлка HTTP: $1",
"upload-copy-upload-invalid-domain": "ÐапÑÑванÑне загÑÑзак не дазволенае Ñ Ð³ÑÑÑм дамÑне.",
+ "upload-foreign-cant-upload": "ÐÑÑÐ°Ñ Ð²ÑÐºÑ Ð½Ðµ Ð½Ð°Ð»Ð°Ð´Ð¶Ð°Ð½Ð°Ñ Ð´Ð»Ñ Ð·Ð°Ð³ÑÑÐ·ÐºÑ ÑÐ°Ð¹Ð»Ð°Ñ Ñ Ð·Ð°Ð¿ÑÑанае вонкавае ÑÑ
овÑÑÑа ÑайлаÑ.",
"upload-dialog-title": "ÐагÑÑзка Ñайла",
"upload-dialog-button-cancel": "ÐдмÑнÑÑÑ",
"upload-dialog-button-done": "ÐÑоблена",
@@ -1489,9 +1492,10 @@
"uploadstash-summary": "ÐÑÑÐ°Ñ ÑÑаÑонка пÑадÑÑаÑлÑе доÑÑÑп да ÑайлаÑ, ÑкÑÑ Ð·Ð°Ð³ÑÑжанÑÑ (ÑÑ Ð·Ð½Ð°Ñ
одзÑÑÑа Ñ Ð¿ÑаÑÑÑе загÑÑзкÑ), але ÑÑÑÑ Ð½Ðµ апÑблÑкаванÑÑ Ñ {{GRAMMAR:меÑнÑ|{{SITENAME}}}}. ÐÑÑÑÑ ÑÐ°Ð¹Ð»Ñ Ð½ÑбаÑнÑÑ Ð½ÑкомÑ, акÑÐ°Ð¼Ñ ÑдзелÑнÑкаÑ, ÑкÑÑ ÑÑ
загÑÑзÑлÑ.",
"uploadstash-clear": "ÐÑÑÑÑÑÑÑÑ ÑÑ
аванÑÑ ÑайлÑ",
"uploadstash-nofiles": "ÐÑ Ð½Ñ Ð¼Ð°ÐµÑе ÑÑ
аванÑÑ
ÑайлаÑ.",
- "uploadstash-badtoken": "ÐемагÑÑма вÑканаÑÑ Ð³ÑÑае дзеÑнÑне, веÑагодна ÑконÑÑÑÑÑ ÑÑÑмÑн дзеÑнÑÐ½Ñ ÐаÑага Ð´Ð°Ð·Ð²Ð¾Ð»Ñ Ð½Ð° ÑÑдагаванÑне. ÐаÑпÑабÑйÑе зноÑ.",
+ "uploadstash-badtoken": "Ðе аÑÑÑмалаÑÑ Ð²ÑканаÑÑ Ð³ÑÑае дзеÑнÑне. ÐеÑагодна, ÑконÑÑÑÑÑ ÑÑÑмÑн дзеÑнÑÐ½Ñ Ð²Ð°ÑÑÑ
ÑлÑковÑÑ
зÑвеÑÑак. ÐÐ°Ð»Ñ Ð»Ð°Ñка, паÑпÑабÑйÑе зноÑ.",
"uploadstash-errclear": "Ðе аÑÑÑмалаÑÑ Ð°ÑÑÑÑÑÑÑÑ ÑайлÑ.",
"uploadstash-refresh": "ÐбнавÑÑÑ ÑÑпÑÑ ÑайлаÑ.",
+ "uploadstash-thumbnail": "пÑаглÑд мÑнÑÑÑÑÑÑ",
"invalid-chunk-offset": "ÐÑÑлÑÑнае зÑÑÑÑнÑне ÑÑагмÑнÑÑ",
"img-auth-accessdenied": "ÐоÑÑÑп забаÑоненÑ",
"img-auth-nopathinfo": "ÐдÑÑÑнÑÑае PATH_INFO.\nÐÐ°Ñ ÑÑÑвÑÑ Ð½Ðµ ÑÑÑаноÑÐ»ÐµÐ½Ñ Ð½Ð° пÑопÑÑк гÑÑай ÑнÑаÑмаÑÑÑ.\nÐагÑма, Ñн пÑаÑÑе пÑаз CGI Ñ Ð½Ðµ падÑÑÑмлÑвае img_auth.\nÐлÑдзÑÑе https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Image_Authorization.",
@@ -1740,12 +1744,31 @@
"apihelp": "Ðаведка API",
"apihelp-no-such-module": "ÐодÑÐ»Ñ Â«$1» Ð½Ñ Ð·Ð½Ð¾Ð¹Ð´Ð·ÐµÐ½Ñ.",
"apisandbox": "ÐÑÑоÑнÑÑа API",
+ "apisandbox-jsonly": "ÐÐ»Ñ Ð²ÑкаÑÑÑÑанÑÐ½Ñ API-пÑÑоÑнÑÑÑ Ð¿Ð°ÑÑÑÐ±Ð½Ñ JavaScript.",
"apisandbox-api-disabled": "API забаÑÐ¾Ð½ÐµÐ½Ñ Ð½Ð° гÑÑÑм ÑайÑе.",
"apisandbox-intro": "ÐÑкаÑÑÑÑоÑвайÑе гÑÑÑÑ ÑÑаÑÐ¾Ð½ÐºÑ Ð´Ð»Ñ ÑкÑпÑÑÑмÑнÑÐ°Ñ Ð· API вÑб-ÑÑÑвÑÑÑ MediaWiki .\nÐÑвÑÑÑайÑеÑÑ Ð´Ð° [[mw:API:Main page|дакÑмÑнÑаÑÑÑ API]] Ð´Ð»Ñ Ð´Ð°Ð´Ð°Ñковай ÑнÑаÑмаÑÑÑ Ð¿Ð° вÑкаÑÑÑÑанÑÐ½Ñ API. ÐапÑÑклад, [//www.mediawiki.org/wiki/API#A_simple_example Ñк аÑÑÑмаÑÑ Ð·ÑмеÑÑ Ð³Ð°Ð»Ð¾Ñнай ÑÑаÑонкÑ]. ÐбÑÑÑÑе дзеÑнÑне, каб пабаÑÑÑÑ Ð±Ð¾Ð»ÐµÐ¹ ÑзоÑаÑ.\n\nÐÑвÑÑнÑÑе ÑвагÑ, ÑÑо нÑгледзÑÑÑ Ð½Ð° Ñое, ÑÑо гÑÑа пÑÑоÑнÑÑа, ваÑÑÑ Ð´Ð·ÐµÑнÑÐ½Ñ Ð¼Ð¾Ð³ÑÑÑ ÑнеÑÑÑÑ Ð·ÑÐ¼ÐµÐ½Ñ Ñ Ð²ÑкÑ.",
+ "apisandbox-fullscreen": "РазгаÑнÑÑÑ Ð¿Ð°Ð½ÑлÑ",
+ "apisandbox-fullscreen-tooltip": "РазгаÑнÑÑÑ Ð¿Ð°Ð½ÑÐ»Ñ Ð¿ÑÑоÑнÑÑÑ, каб запоÑнÑÑÑ Ð°ÐºÐ½Ð¾ бÑаÑзÑÑа.",
+ "apisandbox-unfullscreen": "ÐаказаÑÑ ÑÑаÑонкÑ",
+ "apisandbox-unfullscreen-tooltip": "ÐаменÑÑÑÑ Ð¿Ð°Ð½ÑÐ»Ñ Ð¿ÑÑоÑнÑÑÑ, каб бÑÐ»Ñ Ð´Ð°ÑÑÑпнÑÑ Ð½Ð°Ð²ÑгаÑÑйнÑÑ ÑпаÑÑÐ»ÐºÑ MediaWiki.",
"apisandbox-submit": "ÐÑабÑÑÑ Ð·Ð°Ð¿ÑÑ",
"apisandbox-reset": "ÐÑÑÑÑÑÑÑÑ",
+ "apisandbox-retry": "ÐаÑÑаÑÑÑÑ",
+ "apisandbox-loading": "ÐагÑÑзка ÑнÑаÑмаÑÑÑ Ð´Ð»Ñ API-модÑÐ»Ñ Â«$1»â¦",
+ "apisandbox-load-error": "ÐÑÑ Ð·Ð°Ð³ÑÑзÑÑ ÑнÑаÑмаÑÑÑ Ð´Ð»Ñ API-модÑÐ»Ñ Â«$1» адбÑлаÑÑ Ð¿Ð°Ð¼Ñлка: $2",
+ "apisandbox-no-parameters": "ÐÑÑÑ API-модÑÐ»Ñ Ð½Ñ Ð¼Ð°Ðµ паÑамÑÑÑаÑ.",
+ "apisandbox-helpurls": "СпаÑÑÐ»ÐºÑ Ð½Ð° даведкÑ",
"apisandbox-examples": "ÐÑÑкладÑ",
+ "apisandbox-dynamic-parameters": "ÐадаÑковÑÑ Ð¿Ð°ÑамÑÑÑÑ",
+ "apisandbox-dynamic-parameters-add-label": "ÐадаÑÑ Ð¿Ð°ÑамÑÑаÑ:",
+ "apisandbox-dynamic-parameters-add-placeholder": "Ðазва паÑамÑÑÑÑ",
+ "apisandbox-dynamic-error-exists": "ÐаÑамÑÑÐ°Ñ Ð· назвай «$1» Ñжо ÑÑнÑе.",
+ "apisandbox-deprecated-parameters": "СаÑÑаÑÑлÑÑ Ð¿Ð°ÑамÑÑÑÑ",
+ "apisandbox-submit-invalid-fields-title": "ÐекаÑоÑÑÑ Ð¿Ð°Ð»Ñ Ð½ÑÑлÑÑнÑÑ",
+ "apisandbox-submit-invalid-fields-message": "ÐÐ°Ð»Ñ Ð»Ð°Ñка, вÑпÑаÑÑе пазнаÑанÑÑ Ð¿Ð°Ð»Ñ Ñ Ð¿Ð°ÑпÑабÑйÑе ÑÑÑÑ Ñаз.",
"apisandbox-results": "ÐÑнÑкÑ",
+ "apisandbox-sending-request": "ÐдпÑаÑка API-запÑÑÑâ¦",
+ "apisandbox-loading-results": "ÐÑÑÑмлÑваем API-вÑнÑкÑâ¦",
"apisandbox-request-url-label": "URL-адÑÐ°Ñ Ð·Ð°Ð¿ÑÑÑ:",
"apisandbox-request-time": "Ð§Ð°Ñ Ð·Ð°Ð¿ÑÑÑ: {{PLURAL:$1|$1 мÑ}}",
"booksources": "ÐÑÑнÑÑÑ ÐºÐ½Ñг",
@@ -1787,8 +1810,6 @@
"categories-submit": "ÐаказаÑÑ",
"categoriespagetext": "{{PLURAL:$1|1=ÐаÑÑÑÐ¿Ð½Ð°Ñ ÐºÐ°ÑÑгоÑÑÑ Ð·ÑмÑÑÑае|ÐаÑÑÑпнÑÑ ÐºÐ°ÑÑгоÑÑÑ Ð·ÑмÑÑÑаÑÑÑ}} ÑÑаÑÐ¾Ð½ÐºÑ Ð°Ð»Ñбо мÑдÑÑÑайлÑ.\nТÑÑ Ð½Ðµ паказанÑÑ [[Special:UnusedCategories|каÑÑгоÑÑÑ, ÑкÑÑ Ð½Ðµ вÑкаÑÑÑÑоÑваÑÑÑа]].\nÐлÑдзÑÑе ÑакÑама [[Special:WantedCategories|ÑÑпÑÑ Ð·Ð°Ð¿Ð°ÑÑабаванÑÑ
каÑÑгоÑÑÑÑ]].",
"categoriesfrom": "ÐаказаÑÑ ÐºÐ°ÑÑгоÑÑÑ, паÑÑнаÑÑÑ Ð·:",
- "special-categories-sort-count": "ÑаÑÑаваÑÑ Ð¿Ð°Ð²Ð¾Ð´Ð»Ðµ колÑкаÑÑÑÑ",
- "special-categories-sort-abc": "ÑаÑÑаваÑÑ Ð¿Ð°Ð²Ð¾Ð´Ð»Ðµ алÑÑабÑÑÑ",
"deletedcontributions": "ÐÑÐ´Ð°Ð»ÐµÐ½Ñ ÑнÑÑак ÑдзелÑнÑка",
"deletedcontributions-title": "ÐÑÐ´Ð°Ð»ÐµÐ½Ñ ÑнÑÑак ÑдзелÑнÑка",
"sp-deletedcontributions-contribs": "ÑнÑÑак",
@@ -2399,11 +2420,7 @@
"import-logentry-upload-detail": "$1 {{PLURAL:$1|вÑÑÑÑÑ ÑмпаÑÑаванаÑ|вÑÑÑÑÑ ÑмпаÑÑаванÑÑ|вÑÑÑÑÑÑ ÑмпаÑÑаванÑÑ}}",
"import-logentry-interwiki-detail": "$1 {{PLURAL:$1|вÑÑÑÑÑ ÑмпаÑÑаванаÑ|вÑÑÑÑÑ ÑмпаÑÑаванÑÑ|вÑÑÑÑÑÑ ÑмпаÑÑаванÑÑ}} з $2",
"javascripttest": "ТÑÑÑаванÑне JavaScript",
- "javascripttest-pagetext-noframework": "ÐÑÑÐ°Ñ ÑÑаÑонка ÑÑÑмаеÑÑа Ð´Ð»Ñ Ð¿ÑавÑдзенÑÐ½Ñ ÑÑÑÑÐ°Ñ JavaScript.",
- "javascripttest-pagetext-unknownframework": "ÐевÑÐ´Ð¾Ð¼Ð°Ñ Ð±ÑблÑÑÑÑка ÑÑÑÑаванÑÐ½Ñ Â«$1».",
"javascripttest-pagetext-unknownaction": "ÐевÑдомае дзеÑнÑне «$1».",
- "javascripttest-pagetext-frameworks": "ÐÐ°Ð»Ñ Ð»Ð°Ñка, вÑбеÑÑÑе Ð°Ð´Ð½Ñ Ð· пÑапанаванÑÑ
бÑблÑÑÑÑка ÑÑÑÑаванÑнÑ: $1",
- "javascripttest-pagetext-skins": "ÐÑбеÑÑÑе аÑаÑмленÑне Ð´Ð»Ñ ÑÑÑÑаванÑнÑ:",
"javascripttest-qunit-intro": "ÐлÑдзÑÑе [$1 дакÑмÑнÑаÑÑÑ Ð¿Ð° ÑÑÑÑаванÑнÑ] на mediawiki.org.",
"tooltip-pt-userpage": "{{GENDER:|ÐаÑÐ°Ñ ÑлаÑнаÑ}} ÑÑаÑонка",
"tooltip-pt-anonuserpage": "СÑаÑонка ÑдзелÑнÑка Ð´Ð»Ñ IP-адÑаÑÑ, Ð·Ñ Ñкога ÐÑ ÑÑдагÑеÑе",
@@ -2662,8 +2679,8 @@
"exif-colorspace": "ÐолеÑÐ°Ð²Ð°Ñ Ð¿ÑаÑÑоÑа",
"exif-componentsconfiguration": "ÐанÑÑгÑÑаÑÑÑ ÐºÐ¾Ð»ÐµÑавÑÑ
кампанÑнÑаÑ",
"exif-compressedbitsperpixel": "ÐлÑбÑÐ½Ñ ÐºÐ¾Ð»ÐµÑÑ Ð¿Ð°ÑÑÐ»Ñ ÑÑÑÑÑканÑнÑ",
- "exif-pixelydimension": "ШÑÑÑÐ½Ñ Ð²ÑÑвÑ",
- "exif-pixelxdimension": "ÐÑÑÑÐ½Ñ Ð²ÑÑвÑ",
+ "exif-pixelxdimension": "ШÑÑÑÐ½Ñ Ð²ÑÑвÑ",
+ "exif-pixelydimension": "ÐÑÑÑÐ½Ñ Ð²ÑÑвÑ",
"exif-usercomment": "ÐамÑнÑаÑÑ ÐºÐ°ÑÑÑÑалÑнÑка",
"exif-relatedsoundfile": "ÐаÑÑÑÐ½Ñ Ð°ÑдÑÑ-Ñайл",
"exif-datetimeoriginal": "ÐаÑа Ñ ÑÐ°Ñ ÑÑваÑÑнÑÐ½Ñ Ð·ÑвеÑÑак",
@@ -3121,7 +3138,6 @@
"version-libraries-description": "ÐпÑÑанÑне",
"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]] або [[{{#Special:Redirect}}/logid/186]].",
"redirect-submit": "ÐеÑайÑÑÑÑ",
"redirect-lookup": "ШÑкаÑÑ Ð¿Ð°Ð²Ð¾Ð´Ð»Ðµ:",
@@ -3133,7 +3149,6 @@
"redirect-not-exists": "ÐнаÑÑнÑне Ð½Ñ Ð·Ð½Ð¾Ð¹Ð´Ð·ÐµÐ½Ð°",
"fileduplicatesearch": "ÐоÑÑк дÑблÑкаÑÐ°Ñ ÑайлаÑ",
"fileduplicatesearch-summary": "ÐоÑÑк аднолÑкавÑÑ
ÑÐ°Ð¹Ð»Ð°Ñ Ð½Ð° падÑÑаве ÑÑ
Ñ
ÑÑаÑ.",
- "fileduplicatesearch-legend": "ÐоÑÑк аднолÑкавÑÑ
ÑайлаÑ",
"fileduplicatesearch-filename": "Ðазва Ñайла:",
"fileduplicatesearch-submit": "ШÑкаÑÑ",
"fileduplicatesearch-info": "$1 à $2 пÑкÑÑлÑÑ ÐÐ°Ð¼ÐµÑ Ñайла: $3 ТÑп MIME: $4",
@@ -3334,7 +3349,7 @@
"logentry-protect-protect-cascade": "$1 {{GENDER:$2|абаÑанÑÑ|абаÑанÑла}} $3 $4 [каÑкадна]",
"logentry-protect-modify": "$1 {{GENDER:$2|зÑмÑнÑÑ ÑзÑовенÑ|зÑмÑнÑла ÑзÑовенÑ}} абаÑÐ¾Ð½Ñ Ð´Ð»Ñ $3 $4",
"logentry-protect-modify-cascade": "$1 {{GENDER:$2|зÑмÑнÑÑ ÑзÑовенÑ|зÑмÑнÑла ÑзÑовенÑ}} абаÑÐ¾Ð½Ñ Ð´Ð»Ñ $3 $4 [каÑкадна]",
- "logentry-rights-rights": "$1 {{GENDER:$1|зÑмÑнÑÑ|зÑмÑнÑла}} пÑÑналежнаÑÑÑÑ $3 да гÑÑÐ¿Ñ Ð· $4 на $5",
+ "logentry-rights-rights": "$1 {{GENDER:$2|зÑмÑнÑÑ|зÑмÑнÑла}} пÑÑналежнаÑÑÑÑ {{GENDER:$6|$3}} да гÑÑÐ¿Ñ Ð· $4 на $5",
"logentry-rights-rights-legacy": "$1 {{GENDER:$1|зÑмÑнÑÑ|зÑмÑнÑла}} пÑÑналежнаÑÑÑÑ $3 да гÑÑпаÑ",
"logentry-rights-autopromote": "$1 {{GENDER:$1|бÑÑ Ð°ÑÑамаÑÑÑна пеÑаведзенÑ|бÑла аÑÑамаÑÑÑна пеÑаведзенаÑ}} з гÑÑÐ¿Ñ $4 Ñ $5",
"logentry-upload-upload": "$1 {{GENDER:$2|загÑÑзÑÑ|загÑÑзÑла}} $3",
diff --git a/languages/i18n/be.json b/languages/i18n/be.json
index df3b02a2d2..a2fbb19821 100644
--- a/languages/i18n/be.json
+++ b/languages/i18n/be.json
@@ -25,7 +25,9 @@
"Artificial123",
"Macofe",
"Matma Rex",
- "Goshaproject"
+ "Goshaproject",
+ "Nemo bis",
+ "SamGold"
]
},
"tog-underline": "ÐадкÑÑÑлÑваÑÑ ÑпаÑÑлкÑ:",
@@ -43,6 +45,7 @@
"tog-watchdefault": "ÐабаÑлÑÑÑ ÑÑаÑÐ¾Ð½ÐºÑ Ñ ÑÐ°Ð¹Ð»Ñ Ð¿Ð°ÑÐ»Ñ Ð¼Ð°ÑÑ
пÑавак Ñ Ð¼Ð¾Ð¹ ÑпÑÑ Ð½Ð°Ð·ÑÑаннÑ",
"tog-watchmoves": "ÐабаÑлÑÑÑ Ð¿ÐµÑайменаванÑÑ Ð¼Ð½Ð¾Ð¹ ÑÑаÑÐ¾Ð½ÐºÑ Ñ ÑÐ°Ð¹Ð»Ñ Ñ Ð¼Ð¾Ð¹ ÑпÑÑ Ð½Ð°Ð·ÑÑаннÑ",
"tog-watchdeletion": "ÐабаÑлÑÑÑ ÑÑÑÑÑÑÑ Ð¼Ð½Ð¾Ð¹ ÑÑаÑÐ¾Ð½ÐºÑ Ñ ÑÐ°Ð¹Ð»Ñ Ñ Ð¼Ð¾Ð¹ ÑпÑÑ Ð½Ð°Ð·ÑÑаннÑ",
+ "tog-watchuploads": "ÐадаваÑÑ ÑайлÑ, ÑкÑÑ Ñ ÑкладаÑ, Ñ Ð¼Ð¾Ð¹ ÑпÑÑ Ð½Ð°Ð·ÑÑаннÑ.",
"tog-watchrollback": "ÐадаваÑÑ ÑÑаÑонкÑ, дзе Ñ {{GENDER:|зÑабÑÑ|зÑабÑла}} адкаÑ, Ñ Ð¼Ð¾Ð¹ ÑпÑÑ Ð½Ð°Ð·ÑÑаннÑ",
"tog-minordefault": "ÐаÑÑнаÑÑ ÐºÐ¾Ð¶Ð½ÑÑ Ð¿ÑаÑÐºÑ Ñк дÑобнÑÑ",
"tog-previewontop": "ÐапÑÑÑÐ´Ð½Ñ Ð¿Ð°ÐºÐ°Ð· â над ÑÑдакÑаÑÑкÑм полем",
@@ -484,7 +487,7 @@
"noemail": "Ðа ÑдзелÑнÑка \"$1\" нÑма запÑÑанага адÑаÑа ÑлекÑÑоннай поÑÑÑ.",
"noemailcreate": "Ðам неабÑ
одна паказаÑÑ Ð´Ð·ÐµÑÑÑ Ð°Ð´ÑÐ°Ñ ÑлекÑÑоннай поÑÑÑ",
"passwordsent": "Ðа адÑÐ°Ñ ÑлекÑÑоннай поÑÑÑ, заÑÑгÑÑÑÑÐ°Ð²Ð°Ð½Ñ Ð´Ð»Ñ \"$1\",\nбÑÑ Ð´Ð°ÑÐ»Ð°Ð½Ñ Ð½Ð¾Ð²Ñ Ð¿Ð°ÑолÑ.\nÐÐ°Ð»Ñ Ð»Ð°Ñка, ÑвайдзÑÑе Ñ ÑÑÑÑÑÐ¼Ñ Ð·Ð½Ð¾Ñ Ð¿Ð°ÑÐ»Ñ Ñго аÑÑÑманнÑ.",
- "blocked-mailpassword": "ÐÐ»Ñ Ð°Ð´ÑаÑÑ IP, з Ñкога Ð²Ñ Ð¿ÑаÑÑеÑе, забаÑоненÑÑ Ð¿ÑаÑкÑ, а знаÑÑÑÑ, Ñ Ð¼ÑÑаÑ
абаÑÐ¾Ð½Ñ Ð°Ð´ злоÑжÑÐ²Ð°Ð½Ð½Ñ Ð½ÐµÐ»Ñга каÑÑÑÑаÑÑа Ñ ÑÑнкÑÑÑй аднаÑÐ»ÐµÐ½Ð½Ñ Ð¿Ð°ÑолÑ.",
+ "blocked-mailpassword": "ÐÐ»Ñ Ð°Ð´ÑаÑа IP, з Ñкога Ð²Ñ Ð¿ÑаÑÑеÑе, забаÑÐ¾Ð½ÐµÐ½Ñ Ð¿ÑаÑкÑ. У мÑÑаÑ
абаÑÐ¾Ð½Ñ Ð°Ð´ злоÑжÑÐ²Ð°Ð½Ð½Ñ Ð½ÐµÐ»Ñга каÑÑÑÑаÑÑа Ñ ÑÑнкÑÑÑй аднаÑÐ»ÐµÐ½Ð½Ñ Ð¿Ð°ÑолÑ.",
"eauthentsent": "ÐаÑвеÑджанне бÑло адаÑланае ÑлекÑÑоннай поÑÑай на азнаÑÐ°Ð½Ñ Ð°Ð´ÑÐ°Ñ Ñл.поÑÑÑ.\nÐаб ÑÑдÑ, Ñ Ð´Ð°Ð»ÐµÐ¹ÑÑм, ÑÑаплÑла ÑнÑÐ°Ñ Ð¿Ð¾ÑÑа адÑÑлÑ, паÑÑабÑеÑÑа вÑканаÑÑ ÑнÑÑÑÑкÑÑÑ, вÑкладзенÑÑ Ñ ÑÑм Ñл.паведамленнÑ, каб паÑвеÑдзÑÑÑ ÑÐ²Ð°Ñ Ð¿Ñава на ÑаÑ
Ñнак Ñл.поÑÑÑ.",
"throttled-mailpassword": "Ðагаданне пÑа паÑÐ¾Ð»Ñ Ñжо адÑÑлалаÑÑ Ð½Ð° пÑаÑÑÐ³Ñ Ð°Ð¿Ð¾Ñн{{PLURAL:$1|Ñй гадзÑнÑ|ÑÑ
$1 гадзÑн}}. ÐÐ·ÐµÐ»Ñ Ð°Ð±Ð°ÑÐ¾Ð½Ñ Ð°Ð´ злоÑжÑваннÑÑ, дазвалÑеÑÑа аÑÑÑмлÑваÑÑ ÑолÑÐºÑ Ð°Ð´Ð½Ð¾ Ñакое нагаданне за {{PLURAL:$1|гадзÑнÑ|$1 гадзÑнÑ|$1 гадзÑн}}.",
"mailerror": "ÐамÑлка адÑÑÐ»Ð°Ð½Ð½Ñ Ñл.поÑÑÑ: $1",
@@ -1309,7 +1312,7 @@
"boteditletter": "Ñ",
"number_of_watching_users_pageview": "[$1 {{PLURAL:$1|назÑÑалÑнÑк|назÑÑалÑнÑкÑ|назÑÑалÑнÑкаÑ}}]",
"rc_categories": "ÐбмежаваÑÑ ÐºÐ°ÑÑгоÑÑÑÐ¼Ñ (ÑазмÑжоÑваÑÑ Ð·Ð½Ð°ÐºÐ°Ð¼ \"|\"):",
- "rc_categories_any": "УÑе",
+ "rc_categories_any": "ÐÑÐ±Ð°Ñ Ð· абÑанÑÑ
",
"rc-change-size-new": "$1 {{PLURAL:$1|байÑ|байÑÑ|байÑаÑ}} паÑÐ»Ñ Ð·Ð¼ÐµÐ½Ñ",
"newsectionsummary": "/* $1 */ Ð½Ð¾Ð²Ñ Ð¿Ð°Ð´Ñаздзел",
"rc-enhanced-expand": "ÐаказаÑÑ Ð¿Ð°Ð´ÑабÑзнаÑÑÑ",
@@ -1323,9 +1326,9 @@
"recentchangeslinked-page": "Ðазва ÑÑаÑонкÑ:",
"recentchangeslinked-to": "ÐаказваÑÑ, замеÑÑ Ð³ÑÑага, змÑÐ½ÐµÐ½Ð½Ñ Ð½Ð° ÑÑаÑонкаÑ
, ÑÑо ÑпаÑÑлаÑÑÑа ÑÑдÑ",
"recentchanges-page-added-to-category": "[[:$1]] дададзена Ñ ÐºÐ°ÑÑгоÑÑÑ",
- "recentchanges-page-added-to-category-bundled": "[[:$1]] Ñ ÑÑÑÑ {{PLURAL:$2|адна ÑÑаÑонка дададзена|$2 ÑÑаÑÐ¾Ð½ÐºÑ Ð´Ð°Ð´Ð°Ð´Ð·ÐµÐ½Ñ|$2 ÑÑаÑонак дададзена}} Ñ ÐºÐ°ÑÑгоÑÑÑ",
+ "recentchanges-page-added-to-category-bundled": "[[:$1]] дададзена Ñ ÐºÐ°ÑÑгоÑÑÑ, [[Special:WhatLinksHere/$1|гÑÑÐ°Ñ ÑÑаÑонка ÑклÑÑана Ñ ÑнÑÑÑ ÑÑаÑонкÑ]]",
"recentchanges-page-removed-from-category": "[[:$1]] вÑдалена з каÑÑгоÑÑÑ",
- "recentchanges-page-removed-from-category-bundled": "[[:$1]] Ñ ÑÑÑÑ {{PLURAL:$2|адна ÑÑаÑонка вÑдалена|$2 ÑÑаÑÐ¾Ð½ÐºÑ Ð²ÑдаленÑ|$2 ÑÑаÑонак вÑдалена}} з каÑÑгоÑÑÑ",
+ "recentchanges-page-removed-from-category-bundled": "[[:$1]] вÑдалена з каÑÑгоÑÑÑ, [[Special:WhatLinksHere/$1|гÑÑÐ°Ñ ÑÑаÑонка ÑклÑÑана Ñ ÑнÑÑÑ ÑÑаÑонкÑ]]",
"autochange-username": "ÐÑÑамаÑÑÑÐ½Ð°Ñ Ð·Ð¼ÐµÐ½Ð° MediaWiki",
"upload": "УклаÑÑÑ Ñайл",
"uploadbtn": "УклаÑÑÑ Ñайл",
@@ -1435,11 +1438,18 @@
"upload-form-label-infoform-name": "Ðазва",
"upload-form-label-infoform-name-tooltip": "УнÑкалÑÐ½Ñ Ð°Ð¿ÑÑалÑÐ½Ñ Ð·Ð°Ð³Ð°Ð»Ð¾Ð²Ð°Ðº Ð´Ð»Ñ Ñайла, ÑÐºÑ Ð±Ñдзе ÑлÑжÑÑÑ Ñго назвай. ÐожаÑе вÑкаÑÑÑÑоÑваÑÑ Ð·Ð²ÑÑайнÑÑ Ð¼Ð¾Ð²Ñ Ð· пÑабеламÑ. Ðе дадавайÑе канÑаÑак Ð½Ð°Ð·Ð²Ñ Ñайла.",
"upload-form-label-infoform-description": "ÐпÑÑанне",
+ "upload-form-label-infoform-description-tooltip": "ÐоÑаÑка апÑÑÑÑе ÑÑÑ Ð·Ð½Ð°Ñнае пÑа гÑÑÑ Ð¿ÑаÑÑ.\nÐÐ»Ñ ÑаÑагÑаÑÑÑ ÑкажÑÑе галоÑнÑÑ Ð°Ð±'екÑÑ, Ð½Ð°Ð³Ð¾Ð´Ñ Ð°Ð±Ð¾ меÑÑа.",
"upload-form-label-usage-title": "ÐÑкаÑÑÑÑанне",
"upload-form-label-usage-filename": "Ðазва Ñайла",
"foreign-structured-upload-form-label-own-work": "ÐÑÑа Ð¼Ð°Ñ ÑлаÑÐ½Ð°Ñ Ð¿ÑаÑа",
"foreign-structured-upload-form-label-infoform-categories": "ÐаÑÑгоÑÑÑ",
"foreign-structured-upload-form-label-infoform-date": "ÐаÑа",
+ "foreign-structured-upload-form-label-own-work-message-local": "Я паÑвÑÑджаÑ, ÑÑо ÑÐºÐ»Ð°Ð´Ð²Ð°Ñ Ð³ÑÑÑ Ñайл згодна з пÑавÑÐ»Ð°Ð¼Ñ Ñ Ð»ÑÑÑнзÑйнай палÑÑÑкай {{GRAMMAR:ÑоднÑ|{{SITENAME}}}}.",
+ "foreign-structured-upload-form-label-not-own-work-message-local": "ÐÐ°Ð»Ñ Ð²Ñ Ð½Ðµ можаÑе ÑкладваÑÑ Ð³ÑÑÑ Ñайл згодна з пÑавÑÐ»Ð°Ð¼Ñ Ð¿Ð»ÑÑоÑÐºÑ {{SITENAME}}, ÐºÐ°Ð»Ñ Ð»Ð°Ñка, закÑÑйÑе гÑÑа акно Ñ Ð¿Ð°ÑпÑабÑйÑе ÑнÑÑ Ð¼ÐµÑад.",
+ "foreign-structured-upload-form-label-not-own-work-local-local": "ÐÑ ÑакÑама можаÑе паÑпÑабаваÑÑ [[Special:Upload|пÑадвÑзнаÑанÑÑ ÑÑаÑÐ¾Ð½ÐºÑ ÑкладваннÑ]].",
+ "foreign-structured-upload-form-label-own-work-message-default": "Я ÑазÑмеÑ, ÑÑо ÑÐºÐ»Ð°Ð´Ð²Ð°Ñ Ð³ÑÑÑ Ñайл Ñ Ð°Ð³ÑлÑнае ÑÑ
овÑÑÑа. Я паÑвÑÑджаÑ, ÑÑо ÑÐ°Ð±Ð»Ñ Ð³ÑÑа Ñ Ð°Ð´Ð¿Ð°Ð²ÐµÐ´Ð½Ð°ÑÑÑ Ð· ÑÐ¼Ð¾Ð²Ð°Ð¼Ñ Ð²ÑкаÑÑÑÑÐ°Ð½Ð½Ñ Ñ Ð»ÑÑÑнзÑйнай палÑÑÑкай.",
+ "foreign-structured-upload-form-label-not-own-work-message-default": "ÐÐ°Ð»Ñ Ð²Ñ Ð½Ðµ можаÑе ÑкладваÑÑ Ð³ÑÑÑ Ñайл згодна з пÑавÑÐ»Ð°Ð¼Ñ Ð°Ð³ÑлÑнага ÑÑ
овÑÑÑа, ÐºÐ°Ð»Ñ Ð»Ð°Ñка, закÑÑйÑе гÑÑа акно Ñ Ð¿Ð°ÑпÑабÑйÑе ÑнÑÑ Ð¼ÐµÑад.",
+ "foreign-structured-upload-form-label-not-own-work-local-default": "ÐÑ ÑакÑама можаÑе паÑпÑабаваÑÑ ÑкаÑÑÑÑаÑÑа [[Special:Upload|ÑÑаÑонкай ÑкладаннÑÑ Ð¿Ð»ÑÑоÑÐºÑ {{SITENAME}}]], ÐºÐ°Ð»Ñ Ð³ÑÑÑ Ñайл можна ÑкладваÑÑ ÑÑÐ´Ñ Ð·Ð³Ð¾Ð´Ð½Ð° з ÑÑ
палÑÑÑкай.",
"backend-fail-stream": "Ðе аÑÑÑмалаÑÑ ÑÑанÑлÑваÑÑ Ñайл $1.",
"backend-fail-backup": "ÐемагÑÑма зÑабÑÑÑ ÑÑзеÑвнÑÑ ÐºÐ¾Ð¿ÑÑ $1.",
"backend-fail-notexists": "Файл $1 не ÑÑнÑе.",
@@ -1789,8 +1799,6 @@
"categories-submit": "ÐаказаÑÑ",
"categoriespagetext": "ÐаÑÑÑпн{{PLURAL:$1|Ð°Ñ ÐºÐ°ÑÑгоÑÑÑ ÑÑÑÑмлÑвае|ÑÑ $1 каÑÑгоÑÑÑ(-й) ÑÑÑÑмлÑваÑÑÑ}} ÑÑаÑÐ¾Ð½ÐºÑ Ð°Ð±Ð¾ мÑлÑÑÑмедÑÑ.\nТÑÑ Ð½Ðµ паказанÑÑ [[Special:UnusedCategories|каÑÑгоÑÑÑ Ð±ÐµÐ· ÑкладнÑкаÑ]].\nÐл. ÑакÑама [[Special:WantedCategories|паÑÑÑбнÑÑ ÐºÐ°ÑÑгоÑÑÑ]].",
"categoriesfrom": "ÐаказаÑÑ ÐºÐ°ÑÑгоÑÑÑ, паÑÑнаÑÑÑ Ð·:",
- "special-categories-sort-count": "пд. колÑкаÑÑÑ",
- "special-categories-sort-abc": "пд. алÑавÑÑÑ",
"deletedcontributions": "ÐÑÐ´Ð°Ð»ÐµÐ½Ñ Ñклад ÑдзелÑнÑка",
"deletedcontributions-title": "ÐÑÐ´Ð°Ð»ÐµÐ½Ñ Ñклад ÑдзелÑнÑка",
"sp-deletedcontributions-contribs": "Уклад",
@@ -1973,6 +1981,7 @@
"changecontentmodel-reason-label": "ÐÑÑÑÑна:",
"changecontentmodel-submit": "ÐмÑнÑÑÑ",
"logentry-contentmodel-change-revertlink": "адкаÑÑÑÑ",
+ "logentry-contentmodel-change-revert": "адкаÑ",
"protectlogpage": "ÐÑÑнал аÑ
овÑ",
"protectlogtext": "ÐÑжÑй пÑÑÐ²ÐµÐ´Ð·ÐµÐ½Ñ Ð¶ÑÑнал змен абаÑÐ¾Ð½Ñ ÑÑаÑонкÑ.\nÐÑ Ð¼Ð¾Ð¶Ð°Ñе ÑакÑама пÑагледзеÑÑ [[Special:ProtectedPages|пеÑалÑк ÑÑаÑонак пад аÑ
овай]].",
"protectedarticle": "пад аÑ
овай «[[$1]]»",
@@ -2010,6 +2019,7 @@
"protect-othertime": "ÐнÑÑ ÑаÑ:",
"protect-othertime-op": "ÑнÑÑ ÑаÑ",
"protect-existing-expiry": "ÐÑзнаÑÐ°Ð½Ñ ÑÐ°Ñ ÑканÑÑннÑ: $3, $2",
+ "protect-existing-expiry-infinity": "ÐаÑÑÐ½Ñ ÑÑÑмÑн дзеÑннÑ: бÑÑконÑа",
"protect-otherreason": "ÐнÑÐ°Ñ ÑÑ Ð´Ð°Ð´Ð°ÑÐºÐ¾Ð²Ð°Ñ Ð¿ÑÑÑÑна:",
"protect-otherreason-op": "ÐнÑÐ°Ñ Ð¿ÑÑÑÑна",
"protect-dropdown": "*ÐвÑÑайнÑÑ Ð¿ÑÑÑÑÐ½Ñ Ð¿Ð°ÑÑаноÑÐºÑ Ð°Ñ
овÑ\n** ÐÑазмеÑÐ½Ñ ÑзÑÐ¾Ð²ÐµÐ½Ñ Ð²Ð°Ð½Ð´Ð°Ð»ÑзмÑ\n** ÐÑазмеÑÐ½Ñ ÑзÑÐ¾Ð²ÐµÐ½Ñ ÑпамÑ\n** Ð¨ÐºÐ¾Ð´Ð½Ð°Ñ Ð²Ð°Ð¹Ð½Ð° пÑавак\n** СÑаÑонка з вÑÑокай наведвалÑнаÑÑÑ",
@@ -2149,12 +2159,14 @@
"ipb-unblock": "РазблакÑÑаваÑÑ ÑдзелÑнÑка ÑÑ IP-адÑаÑ",
"ipb-blocklist": "ÐаказаÑÑ Ð½Ð°ÑÑнÑÑ Ð±Ð»Ð¾ÐºÑ",
"ipb-blocklist-contribs": "Уклад {{GENDER:$1|$1}}",
+ "ipb-blocklist-duration-left": "заÑÑалоÑÑ $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": "ÐнайÑÑÑ Ð·Ð°Ð±Ð»Ð°ÐºÐ°Ð²Ð°Ð½Ð°Ð³Ð° ÑдзелÑнÑка",
@@ -2202,6 +2214,7 @@
"block-log-flags-hiddenname": "ÑÑ
аванае ÑÐ¼Ñ ÑдзелÑнÑка",
"range_block_disabled": "Ðе дазволена адмÑнÑÑÑÑаÑаÑÑÐºÐ°Ñ Ð¼Ð°Ð³ÑÑмаÑÑÑ ÑÑавÑÑÑ Ð±Ð»Ð¾ÐºÑ Ð½Ð° адÑаÑнÑÑ Ð´ÑÑпазонÑ.",
"ipb_expiry_invalid": "ÐекаÑÑкÑÐ½Ñ ÑÐ°Ñ ÑканÑÑннÑ.",
+ "ipb_expiry_old": "Ð§Ð°Ñ ÑканÑÑÐ½Ð½Ñ â Ñ Ð¼ÑнÑлÑм.",
"ipb_expiry_temp": "СкÑÑÑÑÑ Ð±Ð»Ð¾ÐºÑ Ð½Ð° ÑмÑÐ½Ñ ÑдзелÑнÑÐºÐ°Ñ Ð¼ÑÑÑÑÑ Ð±ÑÑÑ ÑÑалÑмÑ.",
"ipb_hide_invalid": "ÐемагÑÑма заглÑÑÑÑÑ Ð³ÑÑÑ ÑаÑ
Ñнак; Ð´Ð»Ñ Ñго маеÑÑа болÑÑ Ð·Ð° {{PLURAL:$1|Ð°Ð´Ð½Ñ Ð¿ÑаÑкÑ|$1 пÑаÑкÑ|$1 пÑавак}}.",
"ipb_already_blocked": "\"$1\" Ñжо знаÑ
одзÑÑÑа пад блокам",
@@ -2344,6 +2357,9 @@
"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ÐаÑ
авайÑе Ñго на Ñвой камп'ÑÑаÑ, а поÑÑм загÑÑзÑÑе ÑÑдÑ.",
@@ -2383,10 +2399,7 @@
"import-logentry-upload-detail": "$1 {{PLURAL:$1|веÑÑÑÑ|веÑÑÑÑ|веÑÑÑй}} ÑмпаÑÑавана",
"import-logentry-interwiki-detail": "$1 {{PLURAL:$1|веÑÑÑÑ|веÑÑÑÑ|веÑÑÑй}} ÑмпаÑÑавана з $2",
"javascripttest": "JavaScript-ÑÑÑÑÑ",
- "javascripttest-pagetext-noframework": "ÐÑÑа ÑÑаÑонка заÑÑзеÑвавана Ð´Ð»Ñ Ð·Ð°Ð¿ÑÑÐºÑ ÑÑÑÑÐ°Ñ JavaScript",
- "javascripttest-pagetext-unknownframework": "ÐевÑÐ´Ð¾Ð¼Ð°Ñ Ð±ÑблÑÑÑÑка ÑÑÑÑÐ°Ð²Ð°Ð½Ð½Ñ Â«$1».",
- "javascripttest-pagetext-frameworks": "ÐÐ°Ð»Ñ Ð»Ð°Ñка, вÑбеÑÑÑе Ð°Ð´Ð½Ñ Ð· пÑапанаванÑÑ
бÑблÑÑÑÑк ÑÑÑÑаваннÑ: $1",
- "javascripttest-pagetext-skins": "ÐÑбеÑÑÑе аÑаÑмленне Ð´Ð»Ñ ÑÑÑÑаваннÑ:",
+ "javascripttest-pagetext-unknownaction": "ÐевÑдомае дзеÑнне \"$1\".",
"javascripttest-qunit-intro": "ÐлÑдзÑÑе [$1 дакÑменÑаÑÑÑ Ð¿Ð° ÑÑÑÑаваннÑ] на mediawiki.org.",
"tooltip-pt-userpage": "ÐаÑа ÑлаÑÐ½Ð°Ñ ÑÑаÑонка",
"tooltip-pt-anonuserpage": "СÑаÑонка ÑдзелÑнÑка Ð´Ð»Ñ Ñаго IP, з Ñкога Ð²Ñ Ð·Ð°Ñаз пÑаÑÑеÑе",
@@ -2520,11 +2533,13 @@
"pageinfo-protect-cascading-yes": "Ðа",
"pageinfo-protect-cascading-from": "ÐаÑÐºÐ°Ð´Ð½Ð°Ñ Ð°Ñ
ова ад",
"pageinfo-category-info": "ÐвеÑÑÐºÑ Ð°Ð± каÑÑгоÑÑÑ",
+ "pageinfo-category-total": "ÐгÑлÑÐ½Ð°Ñ ÐºÐ¾Ð»ÑкаÑÑÑ ÑленаÑ",
"pageinfo-category-pages": "ÐолÑкаÑÑÑ ÑÑаÑонак",
"pageinfo-category-subcats": "ÐолÑкаÑÑÑ Ð¿Ð°Ð´ÐºÐ°ÑÑгоÑÑй",
"pageinfo-category-files": "ÐолÑкаÑÑÑ ÑайлаÑ",
"markaspatrolleddiff": "ÐазнаÑÑÑÑ Ñк ÑÑ
валенае",
"markaspatrolledtext": "ÐазнаÑÑÑÑ ÑÑаÑÐ¾Ð½ÐºÑ Ñк ÑÑ
валенÑÑ",
+ "markaspatrolledtext-file": "ÐазнаÑÑÑÑ Ð²ÐµÑÑÑÑ Ñайла Ñк ÑÑ
валенÑÑ",
"markedaspatrolled": "ÐазнаÑана Ñк ÑÑ
валенае",
"markedaspatrolledtext": "ÐзнаÑÐ°Ð½Ð°Ñ Ð²ÐµÑÑÑÑ [[:$1]] пазнаÑана Ñк ÑÑ
валенаÑ.",
"rcpatroldisabled": "Ðе пÑаÑÑе УÑ
валенне ÐÑдаÑнÑÑ
ÐÑавак",
@@ -2537,6 +2552,7 @@
"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",
@@ -2559,6 +2575,7 @@
"svg-long-error": "ÐÑÑпÑаÑÐ½Ñ Ñайл SVG: $1",
"show-big-image": "ÐÑÑгÑналÑÐ½Ñ Ñайл",
"show-big-image-preview": "ÐÐ°Ð¼ÐµÑ Ð¿ÑÑ Ð¿Ð°Ð¿ÑÑÑднÑм пÑаглÑдзе: $1.",
+ "show-big-image-preview-differ": "ÐÐ°Ð¼ÐµÑ Ð³ÑÑага $3-пÑаглÑÐ´Ñ Ð´Ð»Ñ $2-Ñайла: $1.",
"show-big-image-other": "{{PLURAL:$2|ÐнÑÑ Ð´Ð°Ð·Ð²Ð¾Ð»|ÐнÑÑÑ Ð´Ð°Ð·Ð²Ð¾Ð»Ñ}}: $1.",
"show-big-image-size": "$1 à $2 пÑÑ
елÑÑ",
"file-info-gif-looped": "закалÑÑаванÑÑ",
@@ -2574,6 +2591,7 @@
"newimages-legend": "ФÑлÑÑÑ",
"newimages-label": "Ðазва Ñайла (або Ñе ÑаÑÑка):",
"newimages-showbots": "ÐаказваÑÑ ÑÐºÐ»Ð°Ð´Ð°Ð½Ð½Ñ Ð±Ð¾ÑамÑ",
+ "newimages-hidepatrolled": "Ðез Ð¿Ð°ÐºÐ°Ð·Ñ ÑÑ
валенÑÑ
ÑкладаннÑÑ",
"noimages": "ТÑÑ Ð½ÑÑога нÑма.",
"ilsubmit": "ÐнайÑÑÑ",
"bydate": "п. даÑаÑ",
@@ -2637,8 +2655,8 @@
"exif-colorspace": "ÐалÑÑÐ¾Ð²Ð°Ñ Ð¿ÑаÑÑоÑа",
"exif-componentsconfiguration": "ÐнаÑÑÐ½Ð½Ñ ÐºÐ°Ð¼Ð¿Ð°Ð½ÐµÐ½ÑаÑ",
"exif-compressedbitsperpixel": "Ðад ÑÑÑÑÐºÐ°Ð½Ð½Ñ Ð²ÑÑвÑ",
- "exif-pixelydimension": "ШÑÑÑÐ½Ñ Ð²ÑÑвÑ",
- "exif-pixelxdimension": "ÐÑÑÑÐ½Ñ Ð²ÑÑвÑ",
+ "exif-pixelxdimension": "ШÑÑÑÐ½Ñ Ð²ÑÑвÑ",
+ "exif-pixelydimension": "ÐÑÑÑÐ½Ñ Ð²ÑÑвÑ",
"exif-usercomment": "ÐаÑÐ²Ð°Ð³Ñ ÐºÐ°ÑÑÑÑалÑнÑка",
"exif-relatedsoundfile": "ÐаÑÑÐ½ÐµÐ½Ñ Ð³ÑÐºÐ°Ð²Ñ Ñайл",
"exif-datetimeoriginal": "ÐаÑа Ñ ÑÐ°Ñ ÑÑваÑÑÐ½Ð½Ñ Ð´Ð°Ð´Ð·ÐµÐ½ÑÑ
",
@@ -2787,6 +2805,7 @@
"exif-compression-4": "CCITT Group 4, ÑакÑавае кадзÑÑаванне",
"exif-copyrighted-true": "ÐÑ
оÑваеÑÑа аÑÑаÑÑкÑм пÑавам",
"exif-copyrighted-false": "СÑаÑÑÑ Ð°ÑÑаÑÑÑва не ÑÑÑаноÑленÑ",
+ "exif-photometricinterpretation-1": "ЧоÑÐ½Ñ Ñ Ð±ÐµÐ»Ñ (ÑоÑÐ½Ñ â 0)",
"exif-unknowndate": "ÐевÑÐ´Ð¾Ð¼Ð°Ñ Ð´Ð°Ñа",
"exif-orientation-1": "ÐвÑÑайна",
"exif-orientation-2": "ÐдлÑÑÑÑавана злева ÑпÑава",
@@ -2968,7 +2987,7 @@
"scarytranscludefailed-httpstatus": "[Ðе ÑдалоÑÑ Ð°ÑÑÑмаÑÑ Ñаблон Ð´Ð»Ñ $1: HTTP $2]",
"scarytranscludetoolong": "[ÐанадÑа доÑÐ³Ñ URL]",
"deletedwhileediting": "'''Увага''': гÑÑÐ°Ñ ÑÑаÑонка бÑла ÑÑÑÑÑа паÑÐ»Ñ Ñаго, Ñк Ð²Ñ Ð¿Ð°ÑÐ°Ð»Ñ Ð· Ñй пÑаÑаваÑÑ!",
- "confirmrecreate": "УдзелÑнÑк [[User:$1|$1]] ([[User talk:$1|Ñазмова]]) ÑÑÑÑ Ð³ÑÑÑ Ð°ÑÑÑкÑл паÑÐ»Ñ Ñаго, Ñк Ð²Ñ Ð¿Ð°ÑÐ°Ð»Ñ Ð¿ÑаÑÑ Ð· Ñм, падаÑÑÑ Ð¿ÑÑÑÑнÑ:\n: ''$2''\nÐаÑвеÑдзÑÑе Ñвой Ð½Ð°Ð¼ÐµÑ Ð°Ð´Ð½Ð°Ð²ÑÑÑ Ð³ÑÑÑ Ð°ÑÑÑкÑл.",
+ "confirmrecreate": "{{GENDER:$1|УдзелÑнÑк|УдзелÑнÑÑа}} [[User:$1|$1]] ([[User talk:$1|Ñазмова]]) {{GENDER:$1|ÑÑÑÑ|ÑÑеÑла}} гÑÑÑ Ð°ÑÑÑкÑл паÑÐ»Ñ Ñаго, Ñк Ð²Ñ Ð¿Ð°ÑÐ°Ð»Ñ Ð¿ÑаÑÑ Ð· Ñм, падаÑÑÑ Ð¿ÑÑÑÑнÑ:\n: $2 \nÐаÑвеÑдзÑÑе Ñвой Ð½Ð°Ð¼ÐµÑ Ð°Ð´Ð½Ð°Ð²ÑÑÑ Ð³ÑÑÑ Ð°ÑÑÑкÑл.",
"confirmrecreate-noreason": "{{GENDER:$1|УдзелÑнÑк|УдзелÑнÑÑа}} [[User:$1|$1]] ([[User talk:$1|ÑазмовÑ]]) {{GENDER:$1|ÑÑÑÑ|ÑÑÑÑла}} гÑÑÑ ÑÑаÑÐ¾Ð½ÐºÑ Ð¿Ð°ÑÐ»Ñ Ñаго, Ñк Ð²Ñ Ð¿Ð°ÑÐ°Ð»Ñ Ñе ÑÑдагаваÑÑ.\nÐÐ°Ð»Ñ Ð»Ð°Ñка, паÑвеÑдзÑÑе, ÑÑо Ð²Ñ ÑапÑаÑÐ´Ñ Ð¶Ð°Ð´Ð°ÐµÑе аднавÑÑÑ Ð³ÑÑÑÑ ÑÑаÑонкÑ.",
"recreate": "ÐднавÑÑÑ",
"unit-pixel": "кÑпк",
@@ -3033,6 +3052,7 @@
"timezone-local": "ÐÑÑÑовÑ",
"duplicate-defaultsort": "Увага: пÑадвÑзнаÑÐ°Ð½Ð°Ñ ÐºÐ»Ð°Ð²ÑÑа ÑпаÑÐ°Ð´ÐºÐ°Ð²Ð°Ð½Ð½Ñ \"$2\" замÑнÑла ÑанейÑÑÑ ÑакÑÑ ÐºÐ»Ð°Ð²ÑÑÑ \"$1\".",
"duplicate-displaytitle": "ÐапÑÑÑджанне: ÐÐ°ÐºÐ°Ð·Ð°Ð½Ð°Ñ Ð½Ð°Ð·Ð²Ð° \"$2\" пеÑаÑÑгае ÑанейÑÑÑ Ð½Ð°Ð·Ð²Ñ \"$1\".",
+ "invalid-indicator-name": "ÐамÑлка: ÐÑÑÑбÑÑ name
ÑндÑкаÑаÑÐ°Ñ ÑÑаÑÑÑÑ ÑÑаÑÐ¾Ð½ÐºÑ Ð½Ðµ можа бÑÑÑ Ð¿ÑÑÑÑм.",
"version": "ÐеÑÑÑÑ",
"version-extensions": "УÑÑаноÑленÑÑ Ð¿ÑÑÑÑаÑкÑ",
"version-skins": "УÑÑаноÑленÑÑ Ð²Ð¾ÐºÐ»Ð°Ð´ÐºÑ",
@@ -3079,7 +3099,6 @@
"version-libraries-description": "ÐпÑÑанне",
"version-libraries-authors": "ÐÑÑаÑÑ",
"redirect": "ÐеÑаÑÑлка да Ñайла, ID ÑдзелÑнÑка, ÑÑаÑонкÑ, веÑÑÑÑ ÑÑ Ð¶ÑÑнала",
- "redirect-legend": "ÐеÑаÑÑлка да Ñайла ÑÑ ÑÑаÑонкÑ",
"redirect-summary": "ÐÑÑа адмÑÑÐ»Ð¾Ð²Ð°Ñ ÑÑаÑонка пеÑаÑÑлае да Ñайла (з Ð½Ð°Ð·Ð²Ñ Ñайла), на ÑÑаÑÐ¾Ð½ÐºÑ (з ÑдÑнÑÑÑÑкаÑаÑа веÑÑÑÑ ÑÑ ÑÑаÑонкÑ), ÑÑ Ð½Ð° ÑÑаÑÐ¾Ð½ÐºÑ ÑдзелÑнÑка (ÐºÐ°Ð»Ñ Ð´Ð°Ð´Ð·ÐµÐ½Ñ Ð»ÑÑÐ±Ð°Ð²Ñ ID ÑдзелÑнÑка). УжÑванне: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], ÑÑ [[{{#Special:Redirect}}/user/101]].",
"redirect-submit": "ÐеÑайÑÑÑ",
"redirect-lookup": "ШÑкаÑÑ:",
@@ -3088,10 +3107,10 @@
"redirect-page": "ÐдÑнÑÑÑÑкаÑÐ°Ñ ÑÑаÑонкÑ",
"redirect-revision": "ÐеÑÑÑÑ ÑÑаÑонкÑ",
"redirect-file": "Ðазва Ñайла",
+ "redirect-logid": "ID жÑÑнала",
"redirect-not-exists": "ÐнаÑÑнне не знойдзена",
"fileduplicatesearch": "ÐоÑÑк дÑблÑкаÑнÑÑ
ÑайлаÑ",
"fileduplicatesearch-summary": "ÐоÑÑк дÑблÑкаÑнÑÑ
ÑайлаÑ
на падÑÑаве ÑÑ
Ñ
ÑÑаÑ.",
- "fileduplicatesearch-legend": "ÐнайÑÑÑ Ð´ÑблÑкаÑÑ",
"fileduplicatesearch-filename": "Ðазва Ñайла:",
"fileduplicatesearch-submit": "ÐнайÑÑÑ",
"fileduplicatesearch-info": "$1 à $2 кÑопак Ðб'Ñм Ñайла: $3 ТÑп MIME: $4",
@@ -3113,6 +3132,7 @@
"specialpages-group-wiki": "ÐÑкÑзвеÑÑÐºÑ Ñ Ð¿ÑÑладÑ",
"specialpages-group-redirects": "ÐдмÑÑловÑÑ ÑÑаÑонкÑ-пеÑаÑÑлкÑ",
"specialpages-group-spam": "ÐÑÑÐ»Ð°Ð´Ñ ÑÑпÑаÑÑ Ñпама",
+ "specialpages-group-developer": "ÐнÑÑÑÑменÑÑ ÑаÑпÑаÑоÑÑÑÑка",
"blankpage": "ÐÑÑÑÐ°Ñ ÑÑаÑонка",
"intentionallyblankpage": "СÑаÑонка наÑмÑÑна пакÑнÑÑа пÑÑÑой, Ñ ÑжÑваеÑÑа Ð´Ð»Ñ Ð²ÑмÑÑÑÐ½Ð½Ñ Ñ
ÑÑкаÑÑÑ Ñ Ð¿Ð°Ð´Ð¾Ð±Ð½Ð°Ð³Ð°.",
"external_image_whitelist": " #ÐÑÑÑ Ñадок пакÑнÑÑе Ñ ÑакÑм ÑамÑм вÑглÑдзе\n#УпÑÑÑÑе ÑаÑÑÐºÑ ÑÑгÑлÑÑнÑÑ
вÑÑÐ°Ð·Ð°Ñ (Ñое, ÑÑо пÑÑÑÑÑ Ð¿Ð°Ð¼Ñж Ð·Ð½Ð°ÐºÐ°Ð¼Ñ //) нÑжÑй\n#ÐÑÑа бÑдзе паÑаÑноÑваÑÑа з адÑаÑÐ°Ð¼Ñ URL вонкавÑÑ
вÑÑваÑ, на ÑкÑÑ ÑÑÑÑ ÑпаÑÑлкÑ\n#ТÑÑ Ð· ÑÑ
, дзе аÑÑÑмаеÑÑа адпаведнаÑÑÑ, бÑдÑÑÑ Ð¿Ð°ÐºÐ°Ð·Ð°Ð½ÑÑ Ñк вÑÑвÑ, а ÑнаÑай ÑолÑÐºÑ Ñк ÑпаÑÑлкÑ\n#РадкÑ, ÑкÑÑ Ð¿Ð°ÑÑнаÑÑÑа з знака #, лÑÑаÑÑа каменÑаÑамÑ\n#ÐалÑÑ Ñ Ð²ÑлÑкÑÑ Ð»ÑÑаÑÑ Ð½Ðµ адÑознÑваÑÑÑа\n\n#УÑе ÑаÑÑÐºÑ ÑÑгÑлÑÑнÑÑ
вÑÑÐ°Ð·Ð°Ñ Ð¿Ð°Ð²ÑÐ½Ð½Ñ Ð±ÑÑÑ Ð½Ð°Ð´ гÑÑÑм Ñадком. Сам Ñадок пакÑнÑÑе Ñ ÑакÑм ÑамÑм вÑглÑдзе ",
@@ -3131,15 +3151,22 @@
"tags-actions-header": "ÐзеÑннÑ",
"tags-active-yes": "Ðа",
"tags-active-no": "Ðе",
+ "tags-source-extension": "ÐÑзнаÑаеÑÑа канÑаÑкам назвÑ",
+ "tags-source-manual": "СÑавÑÑÑа ÑÑÑÑнÑÑ ÑдзелÑнÑÐºÐ°Ð¼Ñ Ñ ÑобаÑамÑ",
"tags-source-none": "ÐолÑÑ Ð½Ðµ вÑкаÑÑÑÑоÑваеÑÑа",
"tags-edit": "пÑавÑÑÑ",
"tags-delete": "ÑÑеÑÑÑ",
"tags-activate": "акÑÑваваÑÑ",
"tags-deactivate": "адклÑÑÑÑÑ",
"tags-hitcount": "$1 {{PLURAL:$1|змена|зменÑ|змен}}",
+ "tags-create-heading": "СÑваÑÑÑÑ Ð½Ð¾Ð²ÑÑ Ð±ÑÑкÑ",
+ "tags-create-explanation": "ÐÐ°Ð»Ñ Ð½Ðµ Ñказана ÑнÑае, новÑÑ Ð±ÑÑÐºÑ Ð±ÑдÑÑÑ Ð´Ð°ÑÑÑÐ¿Ð½Ñ Ð´Ð»Ñ Ð²ÑкаÑÑÑÑÐ°Ð½Ð½Ñ ÑдзелÑнÑкам Ñ ÑобаÑам.",
"tags-create-tag-name": "Ðазва бÑÑкÑ:",
"tags-create-reason": "ÐÑÑÑÑна:",
"tags-create-submit": "СÑваÑÑÑÑ",
+ "tags-create-no-name": "ÐÑ Ð¼ÑÑÑÑе ÑказаÑÑ Ð½Ð°Ð·Ð²Ñ Ð±ÑÑкÑ.",
+ "tags-create-invalid-chars": "ÐÐ°Ð·Ð²Ñ Ð±ÑÑак не павÑÐ½Ð½Ñ ÑÑÑÑмлÑваÑÑ ÐºÐ¾ÑÐºÑ (,
) або каÑÑÑ ÑÑÑÑ (/
).",
+ "tags-create-invalid-title-chars": "ÐÐ°Ð·Ð²Ñ Ð±ÑÑак не павÑÐ½Ð½Ñ ÑÑÑÑмлÑваÑÑ ÑÑмвалÑ, ÑкÑÑ Ð½ÐµÐ»Ñга вÑкаÑÑÑÑоÑваÑÑ Ñ Ð½Ð°Ð·Ð²Ð°Ñ
ÑÑаÑонак.",
"tags-create-already-exists": "ÐÑÑка \"$1\" Ñжо ÑÑÑÑ.",
"tags-create-warnings-below": "ÐÑ Ñ
оÑаÑе пÑадоÑжÑÑÑ ÑÑваÑÑнне бÑÑкÑ?",
"tags-delete-title": "СÑеÑÑÑ Ð±ÑÑкÑ",
@@ -3147,6 +3174,40 @@
"tags-delete-explanation-warning": "ÐÑÑа дзеÑнне незваÑоÑнае Ñ Ð½Ðµ можа бÑÑÑ Ð°Ð´ÐºÐ¾Ñана Ð½Ð°Ð²Ð°Ñ Ð°Ð´Ð¼ÑнÑÑÑÑаÑаÑÐ°Ð¼Ñ Ð±Ð°Ð·Ñ Ð·Ð²ÐµÑÑак. УпÑÑнÑÑеÑÑ, ÑÑо гÑÑа ÑÐ°Ñ Ð±ÑÑка, ÑÑо Ð²Ñ Ñ
оÑаÑе вÑдалÑÑÑ.",
"tags-delete-reason": "ÐÑÑÑÑна:",
"tags-delete-submit": "ÐезваÑоÑна ÑÑеÑÑÑ Ð³ÑÑÑ Ð±ÑÑкÑ",
+ "tags-delete-not-allowed": "ÐÑÑкÑ, вÑзнаÑанÑÑ Ð¿Ð°ÑÑÑÑннем, нелÑга пÑÑбÑаÑÑ, акÑÐ°Ð¼Ñ Ð²ÑпадкаÑ, ÐºÐ°Ð»Ñ Ð³ÑÑа дазволена ÑÑна.",
+ "tags-delete-not-found": "ÐÑÑка \"$1\" не ÑÑнÑе.",
+ "tags-delete-too-many-uses": "ÐÑÑка \"$1\" пÑÑменена Ñ Ð±Ð¾Ð»ÑÑ ÑÑм $2 {{PLURAL:$2|веÑÑÑÑ|веÑÑÑÑÑ
}}, а знаÑÑÑÑ, Ñна не можа бÑÑÑ ÑÑÑÑÑа.",
+ "tags-delete-warnings-after-delete": "ÐÑÑка \"$1\" бÑла ÑÑÑÑÑа, але {{PLURAL:$2|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-add-not-allowed-one": "ÐÑÑÐºÑ \"$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=гÑÑай веÑÑÑÑ|ÑÑÑÑ
$1 веÑÑÑй}}",
+ "tags-edit-logentry-legend": "ÐадаÑÑ ÑÑ Ð¿ÑÑбÑаÑÑ Ð±ÑÑÐºÑ Ð· {{PLURAL:$1|1=гÑÑага запÑÑÑ|ÑÑÑÑ
$1 запÑÑаÑ}} жÑÑнала",
+ "tags-edit-existing-tags": "ÐаÑÑнÑÑ Ð±ÑÑкÑ:",
+ "tags-edit-existing-tags-none": "ÐÑма ",
+ "tags-edit-new-tags": "ÐовÑÑ Ð±ÑÑкÑ:",
+ "tags-edit-add": "ÐадаÑÑ Ð³ÑÑÑÑ Ð±ÑÑкÑ:",
+ "tags-edit-remove": "СÑеÑÑÑ Ð³ÑÑÑÑ Ð±ÑÑкÑ:",
+ "tags-edit-remove-all-tags": "(ÑÑеÑÑÑ ÑÑе бÑÑкÑ)",
+ "tags-edit-chosen-placeholder": "ÐÑбеÑÑÑе бÑÑкÑ",
+ "tags-edit-chosen-no-results": "Ðе знойдзена бÑÑак, ÑкÑÑ Ð± адпавÑÐ´Ð°Ð»Ñ Ð·Ð°Ð¿ÑÑÑ",
+ "tags-edit-reason": "ÐÑÑÑÑна:",
+ "tags-edit-nooldid-title": "ÐедапÑÑÑалÑÐ½Ð°Ñ Ð¼ÑÑÐ°Ð²Ð°Ñ Ð²ÐµÑÑÑÑ",
"comparepages": "ÐаÑаÑнанне ÑÑаÑонак",
"compare-page1": "СÑаÑонка 1",
"compare-page2": "СÑаÑонка 2",
@@ -3179,6 +3240,8 @@
"htmlform-cloner-create": "ÐадаÑÑ ÑÑÑÑ",
"htmlform-cloner-delete": "СÑеÑÑÑ",
"htmlform-cloner-required": "ÐеабÑ
одна Ñ
аÑÑ Ð± адно знаÑÑнне.",
+ "htmlform-title-not-exists": "$1 не ÑÑнÑе.",
+ "htmlform-user-not-exists": "$1 не ÑÑнÑе.",
"sqlite-has-fts": "$1 з падÑÑÑмкай поÑна-ÑÑкÑÑавага поÑÑкÑ",
"sqlite-no-fts": "$1 без падÑÑÑÐ¼ÐºÑ Ð¿Ð¾Ñна-ÑÑкÑÑавага поÑÑкÑ",
"logentry-delete-delete": "$1 {{GENDER:$2|ÑÑÑÑ|ÑÑÑÑла}} ÑÑаÑÐ¾Ð½ÐºÑ $3",
@@ -3220,14 +3283,19 @@
"logentry-upload-upload": "$1 {{GENDER:$2|ÑклаÑ|Ñклала}} $3",
"logentry-upload-overwrite": "$1 {{GENDER:$2|ÑклаÑ|Ñклала}} новÑÑ Ð²ÐµÑÑÑÑ $3",
"logentry-upload-revert": "$1 {{GENDER:$2|ÑклаÑ|Ñклала}} $3",
+ "log-name-managetags": "ÐÑÑнал кÑÑÐ°Ð²Ð°Ð½Ð½Ñ Ð±ÑÑкамÑ",
+ "log-name-tag": "ÐÑÑнал бÑÑак",
"rightsnone": "(нÑма)",
"revdelete-summary": "ÑлÑмаÑÑнне пÑаÑкÑ",
"feedback-adding": "Ðаданне водгÑÐºÑ Ð½Ð° ÑÑаÑонкÑâ¦",
+ "feedback-back": "Ðазад",
"feedback-bugcheck": "ÐÑдаÑна! ТолÑÐºÑ Ð¿ÑавеÑÑе, ÑÑо Ñ ÑпÑÑе [$1 вÑдомÑÑ
памÑлак] Ñе нÑма падобнага запÑÑÑ.",
"feedback-bugnew": "Я пÑавеÑÑÑ. ÐаведамÑÑÑ Ð¿Ñа новÑÑ Ð¿Ð°Ð¼ÑлкÑ",
"feedback-bugornote": "ÐÐ°Ð»Ñ Ð²Ñ Ð³Ð°ÑовÑÑ Ð¿Ð°Ð´ÑабÑзна апÑÑаÑÑ ÑÑÑ
нÑÑнÑÑ Ð¿ÑаблемÑ, ÐºÐ°Ð»Ñ Ð»Ð°Ñка, [$1 паведамÑÑе пÑа памÑлкÑ].\nУ адваÑоÑнÑм вÑÐ¿Ð°Ð´ÐºÑ Ð²Ñ Ð¼Ð¾Ð¶Ð°Ñе вÑкаÑÑÑÑоÑваÑÑ Ð³ÑÑÑÑ Ð¿ÑоÑÑÑÑ ÑоÑмÑ. ÐÐ°Ñ ÐºÐ°Ð¼ÐµÐ½ÑÐ°Ñ Ð±Ñдзе Ð´Ð°Ð´Ð°Ð´Ð·ÐµÐ½Ñ Ð½Ð° ÑÑаÑÐ¾Ð½ÐºÑ Â«[$3 $2]» Ñазам з ваÑÑм Ñмем ÑдзелÑнÑка Ñ Ð²ÑкаÑÑÑÑоÑваемÑм бÑаÑзеÑам.",
"feedback-cancel": "Ðдмена",
"feedback-close": "ÐÑоблена.",
+ "feedback-dialog-title": "ÐаÑлаÑÑ Ð²Ð¾Ð´Ð³Ñк",
+ "feedback-error-title": "ÐамÑлка",
"feedback-error1": "ÐамÑлка. ÐевÑÐ´Ð¾Ð¼Ñ Ð²ÑнÑк з API",
"feedback-error2": "ÐамÑлка. Ðбой пÑаÑкÑ",
"feedback-error3": "ÐамÑлка. ÐÑма Ð°Ð´ÐºÐ°Ð·Ñ Ð°Ð´ API",
@@ -3235,6 +3303,7 @@
"feedback-subject": "ТÑма:",
"feedback-submit": "ÐаÑлаÑÑ",
"feedback-thanks": "ÐзÑкÑй! ÐÐ°Ñ Ð²Ð¾Ð´Ð³Ñк ÑазмеÑÑÐ°Ð½Ñ Ð½Ð° ÑÑаÑонÑÑ Â«[$2 $1]».",
+ "feedback-thanks-title": "ÐзÑкÑем!",
"searchsuggest-search": "ÐнайÑÑÑ",
"searchsuggest-containing": "змÑÑÑае...",
"api-error-badaccess-groups": "У ÐÐ°Ñ Ð½Ñма Ð´Ð°Ð·Ð²Ð¾Ð»Ñ Ð·Ð°Ð³ÑÑжаÑÑ ÑÐ°Ð¹Ð»Ñ Ñ Ð³ÑÑÑÑ Ð²ÑкÑ.",
@@ -3317,15 +3386,24 @@
"pagelang-language": "Ðова",
"pagelang-use-default": "ÐÑадвÑзнаÑÐ°Ð½Ð°Ñ Ð¼Ð¾Ð²Ð°",
"pagelang-select-lang": "ÐÑбеÑÑÑе мовÑ",
+ "pagelang-submit": "ÐдпÑавÑÑÑ",
"right-pagelang": "ÐмÑнÑÑÑ Ð¼Ð¾Ð²Ñ ÑÑаÑонкÑ",
"action-pagelang": "змÑнÑÑÑ Ð¼Ð¾Ð²Ñ ÑÑаÑонкÑ",
"log-name-pagelang": "ÐÑÑнал змÑÐ½ÐµÐ½Ð½Ñ Ð¼Ð¾Ð²Ñ",
"log-description-pagelang": "ÐÑÑа жÑÑнал змÑненнÑÑ Ñ Ð¼Ð¾Ð²Ð°Ñ
ÑÑаÑонкÑ.",
- "logentry-pagelang-pagelang": "$1 {{GENDER:$2|змÑнÑÑ|змÑнÑла}} Ð¼Ð¾Ð²Ñ ÑÑаÑÐ¾Ð½ÐºÑ $3 з $4 на $5.",
+ "logentry-pagelang-pagelang": "$1 {{GENDER:$2|змÑнÑÑ|змÑнÑла}} Ð¼Ð¾Ð²Ñ $3 з $4 на $5.",
"default-skin-not-found": "УпÑ! ÐÑадвÑзнаÑÐ°Ð½Ð°Ñ Ð²Ð¾ÐºÐ»Ð°Ð´ÐºÐ° Ð´Ð»Ñ Ð²Ð°Ñай вÑÐºÑ ($wgDefaultSkin
), $1
, недаÑÑÑпна.\n\nÐÑглÑдае на Ñое, ÑÑо ваÑа ÑнÑÑалÑÑÑÑ ÑклÑÑае наÑÑÑпнÑÑ Ð²Ð¾ÐºÐ»Ð°Ð´ÐºÑ. Ðл. [https://www.mediawiki.org/wiki/Manual:Skin_configuration ÐнÑÑÑÑкÑÑÑ: УÑÑаноÑка вокладак] Ð´Ð·ÐµÐ»Ñ ÑнÑаÑмаÑÑÑ Ð¿Ð° ÑклÑÑÑÐ½Ð½Ñ Ñ Ð²ÑбаÑÑ Ð¿ÑадвÑзнаÑанай вокладкÑ.\n\n$2\n\n; ÐÐ°Ð»Ñ Ð²Ñ ÑолÑÐºÑ ÑÑо ÑÑÑанавÑÐ»Ñ MediaWiki:\n: ÐагÑÑма, Ð²Ñ ÑÑÑанавÑÐ»Ñ Ð· git, ÑÑ Ð½Ð°ÑпÑоÑÑ Ð· зÑÑ
однага кодÑ, вÑкаÑÑÑÑаÑÑÑ ÑнÑÑ Ð¼ÐµÑад. ÐÑÑа наÑмалÑна. ÐаÑпÑабÑйÑе ÑÑÑанавÑÑÑ Ð½ÐµÐºÐ°Ð»ÑÐºÑ Ð²Ð¾ÐºÐ»Ð°Ð´Ð°Ðº з [https://www.mediawiki.org/wiki/Category:All_skins каÑалога вокладак mediawiki.org], ÑакÑм ÑÑнам:\n:* УзÑÑÑÑ [https://www.mediawiki.org/wiki/Download tarball-ÑнÑÑалÑÑаÑ], ÑÐºÑ ÑÑÑÑмлÑвае некалÑÐºÑ Ð²Ð¾ÐºÐ»Ð°Ð´Ð°Ðº Ñ Ð¿ÑÑÑÑавак. ÐÑ Ð¼Ð¾Ð¶Ð°Ñе ÑкапÑÑваÑÑ Ñ ÑÑÑавÑÑÑ ÐºÐ°Ñалог skins/
з Ñго.\n:* ÐÑабÑÑÑÑ ÐºÐ»Ð¾Ð½ аднаго з ÑÑ
овÑÑÑÐ°Ñ mediawiki/skins/*
пÑаз git Ñ ÐºÐ°Ñалог skins/
ваÑай ÑнÑÑалÑÑÑÑ MediaWiki.\n: ÐÐ°Ð»Ñ Ð²Ñ ÑаÑпÑаÑоÑÑÑÑк MediaWiki, гÑÑа не павÑнна ÑплÑваÑÑ Ð½Ð° ваÑа git-ÑÑ
овÑÑÑа.\n\n; ÐÐ°Ð»Ñ Ð²Ñ ÑолÑÐºÑ ÑÑо абнавÑÐ»Ñ MediaWiki:\n: MediaWiki 1.24 Ñ Ð½Ð°Ð²ÐµÐ¹ÑÑÑ Ð±Ð¾Ð»ÑÑ Ð½Ðµ падклÑÑаÑÑÑ Ð²Ð¾ÐºÐ»Ð°Ð´ÐºÑ Ð°ÑÑамаÑÑÑна (гл. [https://www.mediawiki.org/wiki/Manual:Skin_autodiscovery ÐнÑÑÑÑкÑÑÑ: ÐÑÑавÑзнаÑÑнне вокладак]). ÐÑ Ð¼Ð¾Ð¶Ð°Ñе ÑÑÑавÑÑÑ Ð½Ð°ÑÑÑпнÑÑ ÑÐ°Ð´ÐºÑ Ñ LocalSettings.php
, каб падклÑÑÑÑÑ ÑÑе ÑÑÑаноÑленÑÑ Ð²Ð¾ÐºÐ»Ð°Ð´ÐºÑ:\n\n$3 \n\n; ÐÐ°Ð»Ñ Ð²Ñ ÑолÑÐºÑ ÑÑо змÑнÑÐ»Ñ LocalSettings.php
:\n: ÐеÑапÑавеÑÑе Ð½Ð°Ð·Ð²Ñ Ð²Ð¾ÐºÐ»Ð°Ð´Ð°Ðº на пÑÐ°Ð´Ð¼ÐµÑ Ð¿Ð°Ð¼Ñлак.",
"default-skin-not-found-no-skins": "УпÑ! ÐÑадвÑзнаÑÐ°Ð½Ð°Ñ Ð²Ð¾ÐºÐ»Ð°Ð´ÐºÐ° Ð´Ð»Ñ Ð²Ð°Ñай вÑÐºÑ ($wgDefaultSkin
), $1
, недаÑÑÑпна.\n\nÐÑ Ð½Ðµ ÑÑÑанавÑÐ»Ñ Ð²Ð¾ÐºÐ»Ð°Ð´ÐºÑ.\n\n; ÐÐ°Ð»Ñ Ð²Ñ ÑолÑÐºÑ ÑÑо ÑÑÑанавÑÐ»Ñ ÑÑ Ð°Ð±Ð½Ð°Ð²ÑÐ»Ñ MediaWiki:\n: ÐагÑÑма, Ð²Ñ ÑÑÑанавÑÐ»Ñ Ð· git, ÑÑ Ð½Ð°ÑпÑоÑÑ Ð· зÑÑ
однага кодÑ, вÑкаÑÑÑÑаÑÑÑ ÑнÑÑ Ð¼ÐµÑад. ÐÑÑа наÑмалÑна. MediaWiki 1.24 Ñ Ð½Ð°Ð²ÐµÐ¹ÑÑÑ Ð½Ðµ ÑклÑÑаÑÑÑ Ð²Ð¾ÐºÐ»Ð°Ð´ÐºÑ Ñ Ð°ÑноÑнае ÑÑ
овÑÑÑа. ÐаÑпÑабÑйÑе ÑÑÑанавÑÑÑ Ð½ÐµÐºÐ°Ð»ÑÐºÑ Ð²Ð¾ÐºÐ»Ð°Ð´Ð°Ðº з [https://www.mediawiki.org/wiki/Category:All_skins каÑалога вокладак mediawiki.org], ÑакÑм ÑÑнам:\n:* УзÑÑÑÑ [https://www.mediawiki.org/wiki/Download tarball-ÑнÑÑалÑÑаÑ], ÑÐºÑ ÑÑÑÑмлÑвае некалÑÐºÑ Ð²Ð¾ÐºÐ»Ð°Ð´Ð°Ðº Ñ Ð¿ÑÑÑÑавак. ÐÑ Ð¼Ð¾Ð¶Ð°Ñе ÑкапÑÑваÑÑ Ñ ÑÑÑавÑÑÑ ÐºÐ°Ñалог skins/
адÑÑлÑ.\n:* ÐÑабÑÑÑÑ ÐºÐ»Ð¾Ð½ аднаго з ÑÑ
овÑÑÑÐ°Ñ mediawiki/skins/*
пÑаз git Ñ ÐºÐ°Ñалог skins/
ваÑай ÑнÑÑалÑÑÑÑ MediaWiki.\n: ÐÐ°Ð»Ñ Ð²Ñ ÑаÑпÑаÑоÑÑÑÑк MediaWiki, гÑÑа не павÑнна адбÑÑÑа на ваÑÑм git-ÑÑ
овÑÑÑÑ. Ðл. [https://www.mediawiki.org/wiki/Manual:Skin_configuration ÐнÑÑÑÑкÑÑÑ: ÐаÑÑÑойка вокладак] Ð´Ð·ÐµÐ»Ñ ÑнÑаÑмаÑÑÑ Ð¿Ð° ÑклÑÑÑÐ½Ð½Ñ Ð²Ð¾ÐºÐ»Ð°Ð´Ð°Ðº Ñ Ð²ÑбаÑÑ Ð¿ÑадвÑзнаÑÑннÑ.",
"default-skin-not-found-row-enabled": "* $1
/ $2 (ÑклÑÑана)",
"default-skin-not-found-row-disabled": "* $1
/ $2 (вÑклÑÑана )",
+ "mediastatistics-table-count": "ÐолÑкаÑÑÑ ÑайлаÑ",
+ "mediastatistics-table-totalbytes": "ÐгÑлÑÐ½Ñ Ð¿Ð°Ð¼ÐµÑ",
+ "mediastatistics-header-unknown": "ÐевÑдомÑÑ",
+ "mediastatistics-header-bitmap": "РаÑÑÑавÑÑ Ð²ÑÑвÑ",
+ "mediastatistics-header-drawing": "Ð ÑÑÑÐ½ÐºÑ (векÑаÑнÑÑ Ð²ÑÑвÑ)",
+ "mediastatistics-header-total": "УÑе ÑайлÑ",
+ "json-error-state-mismatch": "ÐедапÑÑÑалÑÐ½Ñ Ð°Ð±Ð¾ некаÑÑкÑÐ½Ñ JSON",
+ "json-error-syntax": "ÐамÑлка ÑÑнÑакÑÑÑÑ",
"special-characters-group-latin": "ÐаÑÑнÑкÑÑ",
"special-characters-group-latinextended": "ÐаÑÑнÑкÑÑ Ð´Ð°Ð´Ð°ÑковÑÑ",
"special-characters-group-ipa": "IPA",
diff --git a/languages/i18n/bg.json b/languages/i18n/bg.json
index 7d8303e6c4..b6c5cf0610 100644
--- a/languages/i18n/bg.json
+++ b/languages/i18n/bg.json
@@ -275,7 +275,7 @@
"versionrequired": "ÐзиÑква Ñе веÑÑÐ¸Ñ $1 на ÐедиÑУики",
"versionrequiredtext": "ÐзползванеÑо на Ñази ÑÑÑаниÑа изиÑква веÑÑÐ¸Ñ $1 на ÑоÑÑÑеÑа ÐедиÑУики. ÐижÑе [[Special:Version|ÑекÑÑаÑа веÑÑиÑ]].",
"ok": "ÐобÑе",
- "pagetitle": "$1 â {{SITENAME}}",
+ "pagetitle": "$1 â {{SITENAME}}",
"retrievedfrom": "ÐзеÑо Ð¾Ñ â$1â.",
"youhavenewmessages": "{{PLURAL:$3|ÐмаÑе}} $1 ($2).",
"youhavenewmessagesfromusers": "ÐмаÑе $1 Ð¾Ñ {{PLURAL:$3|дÑÑг поÑÑебиÑел|$3 поÑÑебиÑели}} ($2).",
@@ -472,6 +472,7 @@
"wrongpassword": "ÐÑведенаÑа паÑола е невалидна. ÐпиÑайÑе оÑново.",
"wrongpasswordempty": "Ðе е вÑведена паÑола. ÐпиÑайÑе оÑново.",
"passwordtooshort": "ÐеобÑ
одимо е паÑолаÑа да ÑÑдÑÑжа поне {{PLURAL:$1|1 знак|$1 знака}}.",
+ "passwordtoolong": "ÐаÑолаÑа не може да бÑде по-дÑлгa Ð¾Ñ {{PLURAL:$1|1 Ñимвол|$1 Ñимвола}}.",
"passwordtoopopular": "ЧеÑÑо използвани паÑоли не Ð¼Ð¾Ð³Ð°Ñ Ð´Ð° бÑÐ´Ð°Ñ Ð¿Ð¾Ð»Ð·Ð²Ð°Ð½Ð¸. ÐолÑ, избеÑеÑе по-Ñникална паÑола.",
"password-name-match": "ÐаÑолаÑа ви ÑÑÑбва да Ñе ÑазлиÑава Ð¾Ñ Ð¿Ð¾ÑÑебиÑелÑкоÑо ви име.",
"password-login-forbidden": "ÐзползванеÑо на Ñова поÑÑебиÑелÑко име и паÑола е забÑанено.",
@@ -481,7 +482,7 @@
"noemail": "ÐÑма запиÑана елекÑÑонна поÑа за поÑÑебиÑÐµÐ»Ñ â$1â.",
"noemailcreate": "ÐеобÑ
одимо е да вÑведеÑе валиден адÑÐµÑ Ð·Ð° е-поÑа",
"passwordsent": "Ðова паÑола беÑе изпÑаÑена на елекÑÑоннаÑа поÑа на â$1â.\nСлед каÑо Ñ Ð¿Ð¾Ð»ÑÑиÑе, влезÑе оÑново.",
- "blocked-mailpassword": "РедакÑиÑанеÑо Ð¾Ñ Ð²Ð°ÑÐ¸Ñ IP-адÑÐµÑ Ðµ забÑанено, заÑова не ви е позволено да използваÑе вÑзможноÑÑÑа за вÑзÑÑановÑване на паÑола.",
+ "blocked-mailpassword": "РедакÑиÑанеÑо Ð¾Ñ ÐаÑÐ¸Ñ IP-адÑÐµÑ Ðµ забÑанено, заÑова не Ðи Ñе позволÑва да използваÑе вÑзможноÑÑÑа за вÑзÑÑановÑване на паÑола.",
"eauthentsent": "ÐиÑмоÑо за поÑвÑÑждение е изпÑаÑено на поÑоÑÐµÐ½Ð¸Ñ Ð°Ð´ÑеÑ. Рнего Ñа опиÑани дейÑÑвиÑÑа, коиÑо ÑÑÑбва да Ñе извÑÑÑаÑ, за да поÑвÑÑдиÑе, Ñе Ñози адÑÐµÑ Ð·Ð° елекÑÑонна поÑа дейÑÑвиÑелно е ваÑ.",
"throttled-mailpassword": "ФÑнкÑиÑÑа за напомнÑне на паÑолаÑа е използвана пÑез {{PLURAL:$1|поÑÐ»ÐµÐ´Ð½Ð¸Ñ ÐµÐ´Ð¸Ð½ ÑаÑ|поÑледниÑе $1 ÑаÑа}}.\nÐа пÑедоÑвÑаÑÑване на злоÑпоÑÑеби е ÑазÑеÑено да Ñе изпÑаÑа не повеÑе Ð¾Ñ ÐµÐ´Ð½Ð¾ напомнÑне в ÑамкиÑе на {{PLURAL:$1|един ÑаÑ|$1 ÑаÑа}}.",
"mailerror": "ÐÑеÑка пÑи изпÑаÑане на пиÑмо: $1",
@@ -933,7 +934,7 @@
"rows": "Редове:",
"columns": "Ðолони:",
"searchresultshead": "ТÑÑÑене",
- "stub-threshold": "ÐÑаг за ÑоÑмаÑиÑане на пÑепÑаÑки кÑм мÑниÑеÑа :",
+ "stub-threshold": "ÐÑаг за ÑоÑмаÑиÑане на пÑепÑаÑки кÑм мÑниÑеÑа ($1):",
"stub-threshold-sample-link": "пÑимеÑ",
"stub-threshold-disabled": "ÐзклÑÑено",
"recentchangesdays": "ÐÑой дни в поÑледни пÑомени:",
@@ -1438,7 +1439,7 @@
"filerevert-badversion": "Ðе ÑÑÑеÑÑвÑва пÑедиÑна локална веÑÑÐ¸Ñ Ð½Ð° Ñайла ÑÑÑ Ð·Ð°Ð´Ð°Ð´ÐµÐ½Ð¸Ñ Ð²Ñемеви оÑпеÑаÑÑк.",
"filedelete": "ÐзÑÑиване на $1",
"filedelete-legend": "ÐзÑÑиване на Ñайл",
- "filedelete-intro": "Ðа пÑÑ ÑÑе да изÑÑиеÑе '''[[Media:$1|$1]]''' заедно Ñ ÑÑлаÑа Ð¼Ñ ÑедакÑионна иÑÑоÑиÑ.",
+ "filedelete-intro": "Ðа пÑÑ ÑÑе да изÑÑиеÑе Ñайла '''[[Media:$1|$1]]''' заедно Ñ ÑÑлаÑа Ð¼Ñ ÑедакÑионна иÑÑоÑиÑ.",
"filedelete-intro-old": "ÐзÑÑиваÑе веÑÑиÑÑа на '''[[Media:$1|$1]]''' кÑм [$4 $3, $2].",
"filedelete-comment": "ÐÑиÑина:",
"filedelete-submit": "ÐзÑÑиване",
@@ -1615,8 +1616,6 @@
"categories-submit": "Ðоказване",
"categoriespagetext": "{{PLURAL:$1|СледнаÑа каÑегоÑÐ¸Ñ ÑÑдÑÑжа|СледниÑе каÑегоÑии ÑÑдÑÑжаÑ}} ÑÑÑаниÑи или медийни Ñайлове.\n[[Special:UnusedCategories|ÐеизползваниÑе каÑегоÑии]] не Ñа показани ÑÑк.\nÐижÑе ÑÑÑо ÑпиÑÑка Ñ [[Special:WantedCategories|желани каÑегоÑии]].",
"categoriesfrom": "Ðоказване на каÑегоÑииÑе, каÑо Ñе запоÑне оÑ:",
- "special-categories-sort-count": "ÑоÑÑиÑане по бÑой",
- "special-categories-sort-abc": "ÑоÑÑиÑане по азбÑÑен Ñед",
"deletedcontributions": "ÐзÑÑиÑи пÑиноÑи на поÑÑебиÑел",
"deletedcontributions-title": "ÐзÑÑиÑи пÑиноÑи на поÑÑебиÑел",
"sp-deletedcontributions-contribs": "пÑиноÑи",
@@ -1699,10 +1698,10 @@
"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": "ÐаблÑдаване на ÑÑÑаниÑаÑа",
@@ -1752,7 +1751,7 @@
"delete-legend": "ÐзÑÑиване",
"historywarning": "Ðнимание: СÑÑаниÑаÑа, коÑÑо вÑзнамеÑÑваÑе да изÑÑиеÑе, има иÑÑоÑÐ¸Ñ Ñ Ð¿ÑиблизиÑелно $1 {{PLURAL:$1|ÑедакÑиÑ|ÑедакÑии}}:",
"historyaction-submit": "Ðоказване",
- "confirmdeletetext": "Ðа пÑÑ ÑÑе безвÑзвÑаÑно да изÑÑиеÑе ÑÑÑаниÑа или Ñайл, заедно Ñ ÑÑлаÑа пÑилежаÑа ÑедакÑионна иÑÑоÑиÑ, Ð¾Ñ Ð±Ð°Ð·Ð°Ñа Ð¾Ñ Ð´Ð°Ð½Ð½Ð¸.\nÐоÑвÑÑдеÑе, Ñе иÑкаÑе Ñова, ÑазбиÑаÑе поÑледÑÑвиÑÑа и пÑавиÑе Ñова в ÑÑоÑвеÑÑÑвие Ñ [[{{MediaWiki:Policy-url}}|линиÑÑа на поведение]].",
+ "confirmdeletetext": "Ðа пÑÑ ÑÑе да изÑÑиеÑе ÑÑÑаниÑа заедно Ñ ÑÑлаÑа Ñ ÑедакÑионна иÑÑоÑиÑ.\nÐоÑвÑÑдеÑе, Ñе иÑкаÑе Ñова, ÑазбиÑаÑе поÑледÑÑвиÑÑа и пÑавиÑе Ñова в ÑÑоÑвеÑÑÑвие Ñ [[{{MediaWiki:Policy-url}}|линиÑÑа на поведение]].",
"actioncomplete": "ÐейÑÑвиеÑо беÑе изпÑлнено",
"actionfailed": "ÐейÑÑвиеÑо не ÑполÑÑи",
"deletedtext": "СÑÑаниÑаÑа â$1â беÑе изÑÑиÑа. ÐижÑе $2 за Ð·Ð°Ð¿Ð¸Ñ Ð½Ð° поÑледниÑе изÑÑиваниÑ.",
@@ -2186,10 +2185,7 @@
"import-logentry-upload-detail": "$1 {{PLURAL:$1|веÑÑÐ¸Ñ Ð±ÐµÑе внеÑена|веÑÑии бÑÑ
а внеÑени}}",
"import-logentry-interwiki-detail": "{{PLURAL:$1|една веÑÑÐ¸Ñ Ð±ÐµÑе внеÑена|$1 веÑÑии бÑÑ
а внеÑени}} Ð¾Ñ $2",
"javascripttest": "ТеÑÑване на JavaScript",
- "javascripttest-pagetext-noframework": "Тази ÑÑÑаниÑа е запазена за изпÑлнение на ÐжаваÑкÑÐ¸Ð¿Ñ ÑеÑÑове.",
"javascripttest-pagetext-unknownaction": "ÐеизвеÑÑно дейÑÑвие \"$1\".",
- "javascripttest-pagetext-frameworks": "ÐолÑ, избеÑеÑе една Ð¾Ñ Ð¿ÑедложениÑе ÑеÑÑови ÑÑÑÑкÑÑÑи: $1",
- "javascripttest-pagetext-skins": "ÐÐ·Ð±Ð¾Ñ Ð½Ð° облик за ÑеÑÑваниÑÑа:",
"javascripttest-qunit-intro": "ÐижÑе [$1 ÑеÑÑоваÑа докÑменÑаÑиÑ] на mediawiki.org.",
"tooltip-pt-userpage": "ÐаÑаÑа поÑÑебиÑелÑка ÑÑÑаниÑа",
"tooltip-pt-anonuserpage": "ÐоÑÑебиÑелÑкаÑа ÑÑÑаниÑа за адÑеÑа, Ð¾Ñ ÐºÐ¾Ð¹Ñо ÑедакÑиÑаÑе",
@@ -2437,8 +2433,8 @@
"exif-colorspace": "ЦвеÑово пÑоÑÑÑанÑÑво",
"exif-componentsconfiguration": "ÐнаÑение на вÑеки компоненÑ",
"exif-compressedbitsperpixel": "Режим на компÑеÑÐ¸Ñ Ð½Ð° обÑаза",
- "exif-pixelydimension": "ШиÑина на изобÑажениеÑо",
- "exif-pixelxdimension": "ÐиÑоÑина на изобÑажениеÑо",
+ "exif-pixelxdimension": "ШиÑина на изобÑажениеÑо",
+ "exif-pixelydimension": "ÐиÑоÑина на изобÑажениеÑо",
"exif-usercomment": "ÐопÑлниÑелни коменÑаÑи",
"exif-relatedsoundfile": "СвÑÑзан звÑков Ñайл",
"exif-datetimeoriginal": "ÐаÑа и ÑÐ°Ñ Ð½Ð° ÑÑздаване",
@@ -2843,7 +2839,6 @@
"redirect-not-exists": "СÑойноÑÑÑа не е намеÑена",
"fileduplicatesearch": "ТÑÑÑене на повÑаÑÑÑи Ñе Ñайлове",
"fileduplicatesearch-summary": "ТÑÑÑене на повÑаÑÑÑи Ñе Ñайлове на база Ñ
ÐµÑ ÑÑойноÑÑи.",
- "fileduplicatesearch-legend": "ТÑÑÑене на повÑаÑÑÑ Ñе Ñайл",
"fileduplicatesearch-filename": "Ðме на Ñайл:",
"fileduplicatesearch-submit": "ТÑÑÑене",
"fileduplicatesearch-info": "$1 à $2 пикÑела Ð Ð°Ð·Ð¼ÐµÑ Ð½Ð° Ñайла: $3 MIME Ñип: $4",
@@ -2960,6 +2955,7 @@
"htmlform-chosen-placeholder": "ÐзбиÑане",
"htmlform-cloner-create": "ÐобавÑне на оÑе",
"htmlform-cloner-delete": "ÐÑемаÑ
ване",
+ "htmlform-title-not-exists": "$1 не ÑÑÑеÑÑвÑва.",
"sqlite-has-fts": "$1 Ñ Ð¿Ð¾Ð´Ð´ÑÑжка на пÑлноÑекÑÑово ÑÑÑÑене",
"sqlite-no-fts": "$1 без поддÑÑжка на пÑлноÑекÑÑово ÑÑÑÑене",
"logentry-delete-delete": "$1 {{GENDER:$2|изÑÑи}} ÑÑÑаниÑаÑа $3",
@@ -3081,6 +3077,7 @@
"pagelang-language": "Ðзик",
"pagelang-use-default": "Ðзползване на езика по подÑазбиÑане",
"pagelang-select-lang": "ÐзбиÑане на език",
+ "pagelang-submit": "ÐзпÑаÑане",
"right-pagelang": "ÐÑомÑна езика на ÑÑÑаниÑа",
"action-pagelang": "пÑомÑна езика на ÑÑÑаниÑаÑа",
"log-name-pagelang": "Ðневник на езиковиÑе пÑомени",
@@ -3121,5 +3118,13 @@
"mw-widgets-titleinput-description-new-page": "ÑÑÑаниÑаÑа вÑе оÑе не ÑÑÑеÑÑвÑва",
"mw-widgets-titleinput-description-redirect": "пÑенаÑоÑване кÑм $1",
"api-error-blacklisted": "ÐолÑ, избеÑеÑе ÑазлиÑно, опиÑаÑелно заглавие.",
- "randomrootpage": "СлÑÑайна наÑална ÑÑÑаниÑа"
+ "randomrootpage": "СлÑÑайна наÑална ÑÑÑаниÑа",
+ "log-action-filter-protect": "Тип заÑиÑа:",
+ "log-action-filter-upload": "Тип каÑване:",
+ "log-action-filter-all": "ÐÑиÑки",
+ "log-action-filter-block-block": "ÐлокиÑане",
+ "log-action-filter-block-reblock": "ÐÑомÑна на блокиÑанеÑо",
+ "log-action-filter-block-unblock": "ÐÑблокиÑане",
+ "log-action-filter-upload-upload": "Ðово каÑване",
+ "log-action-filter-upload-overwrite": "ÐовÑоÑно каÑване"
}
diff --git a/languages/i18n/bgn.json b/languages/i18n/bgn.json
index bae6d56025..2863646b87 100644
--- a/languages/i18n/bgn.json
+++ b/languages/i18n/bgn.json
@@ -140,7 +140,7 @@
"broken-file-category": "تاکدÛÙ
ا٠گ٠خرابÛÙ ÙÛÙÚ©Ø§Ù Ø¨Û ÙاÛÙا",
"about": "Ø¨Û Ø¨Ø§Ø±Ù Ùا",
"article": "Ù
ØتÙائÛ٠تاکدÛÙ
",
- "newwindow": "(ÙÙÚ©Û٠دÙرÙØ§Ø²Ú¯Û ØªØ§ Ù¾Ø§Ú Ø¨Ûئت)",
+ "newwindow": "(ÙÙÚ©Û٠درÙازگئ تا Ù¾Ø§Ú Ø¨Ú©ÙÛت)",
"cancel": "Ú©ÙسÛÙ",
"moredotdotdot": "Ú¯ÛشتÛر...",
"morenotlisted": "Ø§Û ÙÚ\t ÙÛست کاÙ
Ù Ù٠اÛÙت.",
@@ -367,7 +367,7 @@
"filereadonlyerror": "«$1» Ø¦Û ÙاÛÙئ تغÛر داتÛÙ Ù
Ù
Ú©Ù Ù٠اÛÙت ÚÙ٠٠«$2» Ø¦Û ÙاÛÙÙ Ù
خز٠ÙÙØ· Ø¨Û ÙاÙتÛÙÛ Ø¦ÛÙ ØاÙت Ø¦Û ØªØ§ Ùرار دارÛت.\n\nÙ
دÛØ±Û Ú©Ù Ø¢Ûرا ÙÙÙÙ¾ Ú©Ùرت٠اÛرÙÚ¯ تÙضÛØ Ø¯Ø§ØªÙ: «$3».",
"invalidtitle-knownnamespace": "Ùا Ù
ÙتبرÛ٠ئÙÙا٠گ٠ÙاÙ
ئ ÙØ¶Ø§Û Â«$2» Ù Ù
ØªÙ Ø¦Û Â«$3»",
"invalidtitle-unknownnamespace": "ÙاÙ
ÙتبرÛ٠ئÙÙا٠گ٠Ùا زاتÛÙ ÙاÙ
ئ ÙØ¶Ø§Û Ø´Ù
ار٠$1 Ù Ù
ØªÙ Ø¦Û Â«$2»",
- "exception-nologin": "ÙاگÛÙ Ù٠بÙت٠ئÛت",
+ "exception-nologin": "ÙاگÛÙ Ù٠بÙتÙâئÛت",
"exception-nologin-text": "Ù
ÙرباÙÛ Ø¨Ø¦ [[Special:Userlogin|تا داخ٠بÛئت]] تا بتÙاÙÛت بئ Ø§Û ØªØ§Ú©Ø¯ÛÙ
ا Ø¯Ø³ØªØ±Ø³Û Ø¯Ø§Ø´ØªÙ Ø¨Ø¦Ûت.",
"exception-nologin-text-manual": "Ù
ÙرباÙئ بکÙÛت $1 تا بتÙاÙÛت بئ Ø§Û ØªØ§Ú©Ø¯ÛÙ
Ûا عÙ
٠ئا Ø¯Ø³ØªØ±Ø³Û Ø¯Ø§Ø´ØªÙ Ø¨Ø¦Ûت .",
"virus-badscanner": "بدÛÙ Ù¾ÛکربÙدÛ: ÙازاÙتÛÙ ÙÛرÙس Ø¦Û Ø³Ú©Ù Ú©ÙرتÛÙ: ''$1''",
@@ -399,7 +399,7 @@
"userloginnocreate": "داخ٠بÙتÛÙ",
"logout": "در بÙتÛÙ",
"userlogout": "در بÙتÛÙ",
- "notloggedin": "ÙاگÛÙ Ù٠بÙت٠ئÛت",
+ "notloggedin": "ÙاگÛÙ Ù٠بÙتÙâئÛت",
"userlogin-noaccount": "Ø´Ù
ا کار زÙرÙÚ©ÛÙ Øسابئ ÙدارÛتØ",
"userlogin-joinproject": "Ø¨Û {{SITENAME}} تا ÙاÙ
âÙÙÛØ³Û Ú©ÙÛت!",
"nologin": "Ø´Ù
ا کار زÙرÙÚ©ÛÙ Øسابئ ÙدارÛت Ø $1.",
@@ -446,7 +446,7 @@
"wrongpassword": "Ø§Û Ù¾Ø§Ø³Ùرد Ûا ÚÛÙر گاÙا ک٠داخ٠کÙرت٠اÛت صØÛØ Ù٠اÛÙت.\nÙ
ÙرباÙÛ Ø¨Ú©ÙÛØªØ Ù¾Ø¯Ø§ اÙ
تØا٠بکÛÙت.",
"wrongpasswordempty": "Ø§Û Ù¾Ø§Ø³Ùرد Ûا ÚÛÙر گاÙا ک٠داخ٠کÙرت٠اÛت Ø Ø®Ø§ÙÛ Ø§ÛÙت.\nÙ
ÙرباÙÛ Ù¾Ø¯Ø§ Ú©Ùشش بکÙÛت.",
"passwordtooshort": "پاسÙرد باÛد Ú©Ù
Ø´Ù Ú©Ù
{{PLURAL:$1|Û± ØرÙ|$1 ØرÙ}} داشت٠بÛئت.",
- "passwordtoolong": "پاسÙرد Ù٠باÛد Ú¯ÛشتÛر Ø´Ù {{PLURAL:$1|Û± ØرÙ|$1 ØرÙا}} داشت٠بÛئت.",
+ "passwordtoolong": "پاسÙردئ ØرÙÙ ÙÙâباÛد Ø´Ù {{PLURAL:$1|Û± Ú©ÙÙ
Ù|$1 Ú©ÙÙ
Ù}}âئا Ú¯ÛشتÛر بÙâÛÙت.",
"password-name-match": "Ø´Ù
Û ÚÛÙرگا٠Ûا پاسÙرد باÛد Ø´Ù Ø´Ù
Û Ú©Ø§Ø± زÙØ±Ú©Û Ø¦ÛÙ ÙاÙ
ا Ùر٠داشت٠بÛئت.",
"password-login-forbidden": "استÙØ§Ø¯Ù Ø´Ù Ø§Û Ú©Ø§Ø± زÙرÙÚ©Û ÙاÙ
ا Ù Ø´Ù Ø§Û ÚÛÙرگاÙا اجاز٠Ù٠اÛÙت.",
"mailmypassword": "پاک Ú©ÙرتÛ٠پاسÙردئ",
@@ -586,8 +586,8 @@
"sitejspreview": "'''Ø´Ù ÙÙشا Ù
٠بÙرÛت Ú©Ù Ø´Ù
ا ÙÙØ· جاÙااسکرÛپت Ø¦Û Ø¯ÛÙ
دÛست ئا Ú¯ÛÙدÛت.'''\n'''Ø§Û Ø¬Ø§ÙااسکرÛپت تا اÙÙ٠ذخÛر٠Ù٠بÙتÙ!'''",
"updated": "(ÙÙÚ© بÙت٠ئÛÙ)",
"note": "'''ÙکتÙ:'''",
- "previewnote": "'''بئ ÙÙØ´ ئا داشت٠بÛئت Ú©Ù Ø§Û Ù¾Ù Ùت دÛÙ
اÛÙت.'''\nØ´Ù
Û ØªØºÛرات تا اÙÙ٠ز٠خÛر٠Ù٠بÙت٠اÙت!",
- "continue-editing": "Ø´ÙتÛÙ Ø¨Û Ø§ÛÚ\tÛÙ¹\tÛ ÙÛÙ
گا",
+ "previewnote": "'''Ø´ÙÙ
Û ÙÙشا بÛت Ú©Ù Ø§Û ÙÙØ· دÛÙ
âدÛست اÛÙت.'''\nÙ Ø´ÙÙ
Û ØªØºÛر ٠ٹگ٠تا اÙÙ٠ذخÛر٠ÙÙâبÙت٠اÙت!",
+ "continue-editing": "Ø´ÙتÛ٠پ٠اÛÚÛÙ¹ Ú©ÙرتÛÙئ بخشا",
"editing": "ب٠$1 Ø¦Û Ø¯Ø³ØªÚ©Ø§Ø±Û Ú©ÙرتÛÙÛ ØاÙا",
"creating": "$1 جÛÚ Ø¦Ù Ø¨Ùت",
"editingsection": "ب٠$1 Ø¦Û Ø¯Ø³ØªÚ©Ø§Ø±Û Ú©ÙرتÛÙÛ ØاÙا (ÚÙÙÚ)",
@@ -759,7 +759,7 @@
"difference-title": "$1: Ùخس٠ئاÙÛ Ù
اÙجÛÙا ÙرÙ",
"difference-title-multipage": "$1 Ù $2:تاکدÛÙ
اÙئ Ù
اÙجÛÙÛ ÙرÙ",
"difference-multipage": "(تاکدÛÙ
اÙÛ Ù
اÙجÛÙا ÙرÙ)",
- "lineno": "$1âئÛ٠سطر:",
+ "lineno": "$1â-Ù
Û٠سطر:",
"compareselectedversions": "اÙتخاب بÙت٠ئÛÙ Ùخس٠ئاÙÛ Ù
ÙاÛسÙ",
"showhideselectedversions": "اÙتخاب بÙت٠ئÛÙ Ùخس٠ئاÙÛ Ù¾Ø¯ÛØ¯Ø§Ø±Û ØªØºÛر",
"editundo": "Ø®ÙØ«Ûâ Ú©ÙرتÛÙ",
@@ -781,7 +781,7 @@
"shown-title": "Ùشا٠داتÛÙ $1 Ø¦Û {{PLURAL:$1|ÙتÛجÙ|ÙتÛجÙ}} Ø¨Û Ùر تاکدÛÙ
Û ØªØ§",
"viewprevnext": "Ùشا٠داتÛÙ ($1 {{int:pipe-separator}} $2) ($3)",
"searchmenu-exists": "'''تاکدÛÙ
ئ گ٠«[[:$1]]» Ø¦Û Ø¦ÙÙاÙا Ø¨Û Ø§Û ÙÛÚ©Û ØªØ§ ÙجÙد دارÛت .'''",
- "searchmenu-new": " «[[:$1]]» Ø¦Û ØªØ§Ú©Ø¯ÛÙ
ا Ø¨Û Ø§Û ÙÛÚ©Û ØªØ§ جÙÚ Ø¨Ú©ÙÛت! {{PLURAL:$2|0=ÙÙ
ÚÙا٠آ تاکدÛÙ
ا Ú©Û Ú¯Ù Ùتئ گشتÛÙا Ùدئ Ú©Ùرت٠اÛØªØ Ø¨Ú¯ÛÙدÛت.|Ù ÙÙ
ÚÙا٠Ùتئ گشتÛÙئ Ùدئ بÙت٠ئÛÙ ÙتÛج٠ئاÙا بگÛÙدÛت.}}",
+ "searchmenu-new": " «[[:$1]]» Ø¦Û ØªØ§Ú©Ø¯ÛÙ
ا بÙÙ Ø§Û ÙÛÚ©ÛâØ¦Û ØªØ§ جÛÚ Ø¨Ú©ÙÛت! {{PLURAL:$2|0=ÙÙ
ÛرÙÚ¯ Ø¢ دÛÙ
ا٠ک٠گ٠Ùت٠گشتÛÙا Ùد٠کÙرتÙâاÛØªØ Ø¨Ú¯ÛÙدÛت .|Ù ÙÙ
Ùت٠گشتÛÙئ ÙتÛجÙâئاÙÙ Ú©Ù Ùد٠بÙت٠اÙØªØ Ø¨Ú¯ÛÙدÛت.}}",
"searchprofile-articles": "تاکدÛÙ
اÙÛ Ù
ØتÙا",
"searchprofile-images": "ÚÛÙک٠رساÙ٠ئÛ",
"searchprofile-everything": "Ù
ÙÚÛ ÚÛز",
@@ -809,11 +809,11 @@
"search-showingresults": "{{PLURAL:$4|ÙتÛج٠ئا٠$1 Ø´Ù $3 |ÙتÛج٠ئا٠$1 - $2 Ø´Ù $3 }}",
"search-nonefound": "ÙتÛج٠پ٠ÚÛØ²Û Ú©Ù Ø´Ù
ا ÙÙÙ¹ÛتÙâتÛت بÙâدست ÙÙ Ûات.",
"powersearch-legend": "Ù¾ÛشرÙت٠ئÛ٠گشتÛÙ",
- "powersearch-ns": "گشتÛÙ Ø¨Û ÙاÙ
ئ ÙضائاÙ:",
+ "powersearch-ns": "گشتÛ٠بÙÙ ÙاÙ
ئ Ùضا ئاÙ٠تا:",
"powersearch-togglelabel": "ÚÛÚ© Ú©ÙرتÛÙ:",
"powersearch-toggleall": "Ù
ÙÚ",
"powersearch-togglenone": "ÙÛÚâÚ¯ÙجاÙ
",
- "powersearch-remember": "اتÙخاب پ٠دÛگرÛ٠گشتÛÙ Ø¦Ø§Ù Ø¨Û Ø®Ø§ØªÛر داشت٠بئÛت",
+ "powersearch-remember": "اÙتخاب پ٠دÛگ٠گشتÛÙâئاÙ٠خاتÛرا Ø´Ù Ø´ÙÙ
Û ÙÙشا Ù
ÙâرÙت",
"search-external": "Ø®Ø§Ø±Ø¬Û Ø¦Û٠گشتÛÙ",
"searchdisabled": "گشتÛÙ Ø¨Û {{SITENAME}} Ø¦Û ØªØ§ Ùعا٠Ù٠اÛÙت.\nÙ
ÙÙتا٠تÙاÙÛت Ø´Ù Google Ø¦Û Ú¯Ø±Ø¯Ú¯ ئا استÙاد٠کÙÛت.\nتÙج٠کÙÛت ک٠بدست آت٠ئÛÙ ÙتاÛج ش٠گردگا Ø¨Û Ø¢ Ù
Ù
Ú©ÛÙÛ٠طرÛÙ٠ئا Ù
٠بÛئÙت.",
"search-error": "ÛÚ© خطاÛÛ Ø¨Û Ú¯Ø±Ø¯Ú¯Ø¦ Ùختا رخ دات٠: $1",
@@ -1495,8 +1495,6 @@
"cachedspecial-refresh-now": "دÛستÛ٠آخرÛ٠ئاÙÛ.",
"categories": "تÙرئاÙ",
"categoriesfrom": "تÙرÙاÙئ Ùشا٠داتÛ٠شر٠شÙ:",
- "special-categories-sort-count": "ترتÛت Ú©ÙرتÛ٠بئ اساس اÙدازگ",
- "special-categories-sort-abc": "ترتÛب Ú©ÙرتÛ٠سÛاÙگاÙÛ",
"deletedcontributions": "پاک بÙت٠ئÛÙ Ù
شارکتاÙÛ",
"deletedcontributions-title": "پاک بÙت٠ئÛÙ Ù
شارکتاÙÛ",
"sp-deletedcontributions-contribs": "Ù
شارکت ئاÙ",
@@ -1758,7 +1756,7 @@
"sp-contributions-toponly": "ÙÙØ· آخÛرÛÙ Ùخس٠ئاÙÛ Ø§ÛÚÛÙ¹ Ùشا٠دات٠بئÙت",
"sp-contributions-newonly": "ÙÙØ· Ùشا٠داتÛ٠آ اÛÚÛٹاÙÛ Ú©Ù Ø¯ÛÙ
Û Ø¬ÛÚ Ú©ÙرتÛÙÛ ÙستÙت",
"sp-contributions-submit": "گشتÛÙ",
- "whatlinkshere": "ÙÛÙÚ© بئ Ø§Û ØªØ§Ú©Ø¯ÛÙ
ا",
+ "whatlinkshere": "ÙÛÙÚ© Ù¾Ù Ø§Û ØªØ§Ú©Ø¯ÛÙ
ا",
"whatlinkshere-title": "تاکدÛÙ
ا٠ک٠گ٠«$1» ÙÛÙÚ© دارÙت",
"whatlinkshere-page": "تاکدÛÙ
:",
"linkshere": "جÙÙÚ¯Û٠دÛÙ
بئ '''[[:$1]]''' ئا ÙÛÙÚ© دارÛت:",
@@ -1788,7 +1786,7 @@
"ipbemailban": "دÛÙ
Ú¯ÛØ±Û Ø´Ù Ø§ÛÙ
ÛÙÛ Ø¯ÛÙ
داتÛÙا",
"ipbsubmit": "Ø§Û Ú©Ø§Ø± زÙرÙÚ© بست٠بÛئت",
"ipbother": "دÛÚ¯Ù Ùخت:",
- "ipboptions": "Û² سائت:2 hours,Û± رÙÚ:1 day,Û³ رÙÚ:3 days,Û± Ùپتگ:1 week,Û² Ùپتگ:2 weeks,Û± Ù
اÙ:1 month,Û³ Ù
اÙ:3 months,Û¶ Ù
اÙ:6 months,Û± ساÙ:1 year,بÛâپاÛاÙ:infinite",
+ "ipboptions": "Û² ساعت:2 hours,Û± رÙÚ:1 day,Û³ رÙÚ:3 days,Û± ÙپتÙâÚ¯:1 week,Û² ÙپتÙâÚ¯:2 weeks,Û± Ù
اÙ:1 month,Û³ Ù
اÙ:3 months,Û¶ Ù
اÙ:6 months,Û± ساÙ:1 year,ابدÙ:infinite",
"ipbhidename": "ÚÛÙرداتÛ٠کار زÙرÙکئ ÙاÙ
ا ش٠اÛÚÛٹا٠٠ÙÛستا",
"ipbwatchuser": "Ø§Û Ú©Ø§Ø± زÙرÙکئ Ø Ú©Ø§Ø±Ø²ÙرÙÚ©ÛÙ Ù Øبر ÙÚ¯Ù¾ Ø¦Û Ø¯ÛÙ
اÙÛ Ø¯ÛستÛÙ",
"ipb-disableusertalk": "دÛÙ
Ú¯ÛØ±Û Ú©ÙرتÛ٠ش٠اÛÚÛÙ¹ Ú©ÙرتÛ٠ئا Ú¯Ù¾ Ù Øبر Ø¦Û ØªØ§Ú©Ø¯ÛÙ
ئ ش٠کار زÙرÙکئ جÛÙدئ ÙÛÙ
گا ÙØ®ØªÛ Ú©Ù Ø¢ بÙاک اÛÙت",
@@ -1961,9 +1959,7 @@
"import-logentry-upload-detail": "$1 {{PLURAL:$1|ÙسخÙ|ÙسخÙ}} Ùارد بÙتÙ",
"import-logentry-interwiki-detail": "$1 {{PLURAL:$1|ÙسخÙ|ÙسخÙ}} داخ٠بÙت٠ش٠$2",
"javascripttest": "جاÙا اسکرÛÙ¾ØªÛ Ø¢Ø²Ù
اÛØ´",
- "javascripttest-pagetext-noframework": "Ø§Û ØªØ§Ú©Ø¯ÛÙ
پ٠جاÙا اسکرÛÙ¾ØªÛ Ø¢Ø²Ù
اÛØ´Û Ø®Ø§ØªÛرا اÛشت٠بÙتÙ.",
"javascripttest-pagetext-unknownaction": "ÙازاÙتÛ٠اکش٠\"$1\".",
- "javascripttest-pagetext-skins": "Ù¾ÙستÙâØ§Û Ø¦Ø§ پ٠آزÙ
اÛشاÙÛ Ø§Ø¬Ø±Ø§ ئا اÙتخاب Ú©ÙÛت:",
"javascripttest-qunit-intro": "[$1 آزÙ
اÛØ´Û Ù
شتÙداÙا] بئ mediawiki.org تا بگÛÙدÛت.",
"tooltip-pt-userpage": "{{GENDER:|Ø´Ù
ئ کار زÙÙرÛÚ©ÛÙ}} تاکدÛÙ
",
"tooltip-pt-mytalk": "{{GENDER:|Ø´Ù
ئ}} Øبر ٠گپئ تاکدÛÙ
",
@@ -2191,8 +2187,8 @@
"exif-colorspace": "رÙگاÙÙ Ùضا",
"exif-componentsconfiguration": "ÙرÛÚ© Ø´Ù Ù
ÙÙÙ٠پ٠ئاÙÛ Ù
اÙا",
"exif-compressedbitsperpixel": "اکس Ø¦Û Ù¾Ø´Ø±Ø¯Ù Ø¦Û ÙاÙت",
- "exif-pixelydimension": "اکسئ Ú¯Ûر",
- "exif-pixelxdimension": "اکسئ بÙرزÛ",
+ "exif-pixelxdimension": "اکسئ Ú¯Ûر",
+ "exif-pixelydimension": "اکسئ بÙرزÛ",
"exif-usercomment": "کار زÙرÙکئ تÙضÛØات",
"exif-relatedsoundfile": "Ù
ربÙتÛ٠تÙارÛ٠پاÛÙ",
"exif-datetimeoriginal": "دÛتائاÙÛ Ùدئ بÙتÛÙ Ø¦Û ØªØ§Ø±ÛØ® Ù Ùخت",
@@ -2559,6 +2555,18 @@
"watchlisttools-view": "Ù
ربÙتÛ٠تغÛراÙÛ Ø¯ÛستÛÙ",
"watchlisttools-edit": "دÛدارÙÛست Ø¦Û Ø¯ÛستÛ٠٠اÛÚÛÙ¹ Ú©ÙرتÛÙ",
"watchlisttools-raw": "ÙاÚÙÛستئ Ø¢Ù
Ú¯ÛÙ ÙÛستاÙÛ Ø§ÛÚÛÙ¹",
+ "iranian-calendar-m1": "Ù
ÙÙÙ
اÙ",
+ "iranian-calendar-m2": "کرا",
+ "iranian-calendar-m3": "سÙÚکاÙ",
+ "iranian-calendar-m4": "جÙکاÙ",
+ "iranian-calendar-m5": "جÙکشاÙ",
+ "iranian-calendar-m6": "سÚاÙ",
+ "iranian-calendar-m7": "تÛÙ
شاÙ",
+ "iranian-calendar-m8": "سرتاÙ",
+ "iranian-calendar-m9": "Ú¯ÙبشاÙ",
+ "iranian-calendar-m10": "تاکشاÙ",
+ "iranian-calendar-m11": "بÙاراÙ",
+ "iranian-calendar-m12": "اÙستÙâÙ
اÙ",
"signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|Ú¯Ù¾ Ù Øبر]])",
"version": "ÙخسÙ",
"version-extensions": "ÙÚÛت٠گÛ٠اپزÙÙ٠ئاÙ",
@@ -2603,7 +2611,6 @@
"version-libraries-license": "اجاز٠ÙاÙ
Ù",
"version-libraries-description": "تÙضÛØاÙ",
"version-libraries-authors": "ÙÙÛسÙکاÙ",
- "redirect-legend": "گردÛÙتÛÙ Ù¾Ù ÛÚ© پاÛÙ Ûا تاکدÛÙ
ئ",
"redirect-submit": "برا",
"redirect-lookup": "گشتÛÙ:",
"redirect-value": "اÙداز٠گ:",
@@ -2614,7 +2621,6 @@
"redirect-not-exists": "اÙداز٠گ ÙØ¯Û Ù٠بÙت",
"fileduplicatesearch": "گشتÛ٠پ٠تکرارÛÙ ÙاÛÙاÙ",
"fileduplicatesearch-summary": "گشتÛ٠پ٠تکرارÛ٠پاÛÙا٠ب٠اساس Ø¢ÙاÙÛ Ø¯Ø±ÙÙ
بÙت٠اÙداز٠گ ئا سÙرت ئ٠گÛت.",
- "fileduplicatesearch-legend": "گشتÛ٠پ٠تکرارÛÙ Ù
ÙرÛداÙ",
"fileduplicatesearch-filename": "ÙاÛÙئ ÙاÙ
:",
"fileduplicatesearch-submit": "گشتÛÙ",
"fileduplicatesearch-info": "$1 à $2 Ù¾Ûکس٠ÙاÛÙئ اÙداز٠گ: $3 ÙÙع MIME: $4",
diff --git a/languages/i18n/bjn.json b/languages/i18n/bjn.json
index 9648250b6a..a87d235393 100644
--- a/languages/i18n/bjn.json
+++ b/languages/i18n/bjn.json
@@ -1342,8 +1342,6 @@
"categories": "Tutumbung",
"categoriespagetext": "{{PLURAL:$1|tumbung mangandung|tutumbung mangandung}} barikut baisi tutungkaran atawa midia.\n[[Special:UnusedCategories|Tumbung kada dipuruk]] kada ditampaiakan di sia.\nJanaki jua [[Special:WantedCategories|tutumbung nang dihandaki]].",
"categoriesfrom": "Manampaiakan tutumbung mulai matan:",
- "special-categories-sort-count": "susun ulih rikinan",
- "special-categories-sort-abc": "susun abjad",
"deletedcontributions": "Hapus sumbangan pamuruk",
"deletedcontributions-title": "Hapus sumbangan pamuruk",
"sp-deletedcontributions-contribs": "Sumbangan",
@@ -1872,7 +1870,6 @@
"import-logentry-upload-detail": "$1 {{PLURAL:$1|ralatan|raralatan}}",
"import-logentry-interwiki-detail": "$1 {{PLURAL:$1|ralatan|raralatan}} matan $2",
"javascripttest": "Mantis JavaScript",
- "javascripttest-pagetext-skins": "Pilih kulit nang cagar Pian cubai:",
"tooltip-pt-userpage": "Tungkaran pamakai Pian",
"tooltip-pt-anonuserpage": "Tungkaran pamuruk matan alamat IP Pian mambabak sawagai",
"tooltip-pt-mytalk": "Tungkaran pamandiran Pian",
@@ -2093,8 +2090,8 @@
"exif-colorspace": "Kamar kalir",
"exif-componentsconfiguration": "Arti matan tiap kumpunin",
"exif-compressedbitsperpixel": "Muda kumprasi gambar",
- "exif-pixelydimension": "Lingai gambar",
- "exif-pixelxdimension": "Pancau gambar",
+ "exif-pixelxdimension": "Lingai gambar",
+ "exif-pixelydimension": "Pancau gambar",
"exif-usercomment": "Kumintar pamuruk",
"exif-relatedsoundfile": "Barkas suara bahubung",
"exif-datetimeoriginal": "Tanggal wan wayah paulahan data",
@@ -2496,7 +2493,6 @@
"version-entrypoints-header-url": "URL",
"fileduplicatesearch": "Gagai gasan babarakas baganda",
"fileduplicatesearch-summary": "Gagai gasan babarakas baganda bapandal nilai hash.",
- "fileduplicatesearch-legend": "Gagai gasan sabuah panggandaan",
"fileduplicatesearch-filename": "Ngaran barakas:",
"fileduplicatesearch-submit": "Gagai",
"fileduplicatesearch-info": "$1 Ã $2 piksel, takaran barakas: $3, macam MIME: $4",
diff --git a/languages/i18n/bn.json b/languages/i18n/bn.json
index 69f663d9b7..55e4cf2fd1 100644
--- a/languages/i18n/bn.json
+++ b/languages/i18n/bn.json
@@ -150,7 +150,7 @@
"category-media-header": "\"$1\" বিষয়শà§à¦°à§à¦£à§à¦¤à§ à¦
নà§à¦¤à¦°à§à¦à§à¦à§à¦¤ মিডিয়া ফাà¦à¦²à¦à§à¦²à¦¿",
"category-empty": "''à¦à¦ বিষয়শà§à¦°à¦£à§à¦¤à§ বরà§à¦¤à¦®à¦¾à¦¨à§ à¦à§à¦¨ পাতা বা মিডিয়া ফাà¦à¦² নà§à¦à¥¤''",
"hidden-categories": "{{PLURAL:$1|লà§à¦à¦¾à¦¯à¦¼à¦¿à¦¤ বিষয়শà§à¦°à§à¦£à§|লà§à¦à¦¾à¦¯à¦¼à¦¿à¦¤ বিষয়শà§à¦°à§à¦£à§à¦¸à¦®à§à¦¹}}",
- "hidden-category-category": "লà§à¦à§à¦à¦¾à¦¯à¦¼à¦¿à¦¤ বিষয়শà§à¦°à§à¦£à§à¦¸à¦®à§à¦¹",
+ "hidden-category-category": "লà§à¦à¦¾à¦¯à¦¼à¦¿à¦¤ বিষয়শà§à¦°à§à¦£à§à¦¸à¦®à§à¦¹",
"category-subcat-count": "{{PLURAL:$2|à¦à¦ বিষয়শà§à¦°à§à¦£à§à¦¤à§ à¦à§à¦¬à¦²à¦®à¦¾à¦¤à§à¦° নিà¦à§à¦° à¦à¦ªà¦¬à¦¿à¦·à¦¯à¦¼à¦¶à§à¦°à§à¦£à§à¦à¦¿ à¦à¦à§à¥¤|à¦à¦ বিষয়শà§à¦°à§à¦£à§à¦¤à§ à¦
নà§à¦¤à¦°à§à¦à§à¦à§à¦¤ মà§à¦ $2à¦à¦¿ à¦à¦ªà¦¬à¦¿à¦·à¦¯à¦¼à¦¶à§à¦°à§à¦£à§à¦° মধà§à¦¯à§ {{PLURAL:$1|à¦à¦¿ à¦à¦ªà¦¬à¦¿à¦·à¦¯à¦¼à¦¶à§à¦°à§à¦£à§|$1à¦à¦¿ à¦à¦ªà¦¬à¦¿à¦·à¦¯à¦¼à¦¶à§à¦°à§à¦£à§}} নিà¦à§ দà§à¦à¦¾à¦¨à§ হয়à§à¦à§à¥¤}}",
"category-subcat-count-limited": "à¦à¦ বিষয়শà§à¦°à§à¦£à§à¦¤à§ নিà¦à§à¦° {{PLURAL:$1|à¦à¦¿ à¦à¦ªà¦¬à¦¿à¦·à¦¯à¦¼à¦¶à§à¦°à§à¦£à§|$1à¦à¦¿ à¦à¦ªà¦¬à¦¿à¦·à¦¯à¦¼à¦¶à§à¦°à§à¦£à§ à¦à¦à§}}।",
"category-article-count": "{{PLURAL:$2|à¦à¦ বিষয়শà§à¦°à§à¦£à§à¦¤à§ à¦à§à¦¬à¦² নিà¦à§à¦° পাতাà¦à¦¿ à¦à¦à§à¥¤|à¦à¦ বিষয়শà§à¦°à§à¦£à§à¦¤à§ à¦
নà§à¦¤à¦°à§à¦à§à¦à§à¦¤ মà§à¦ $2à¦à¦¿ পাতার মধà§à¦¯à§ {{PLURAL:$1|à¦à¦¿ পাতা|$1à¦à¦¿ পাতা}} নিà¦à§ দà§à¦à¦¾à¦¨à§ হল।}}",
@@ -484,7 +484,7 @@
"noemail": "\"$1\" বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦à¦¾à¦°à§à¦° à¦à¦¨à§à¦¯ à¦à§à¦¨ à¦-মà§à¦à¦² ঠিà¦à¦¾à¦¨à¦¾ সà¦à¦°à¦à§à¦·à¦¿à¦¤ নà§à¦à¥¤",
"noemailcreate": "à¦à¦ªà¦¨à¦¾à¦à§ à¦
বশà§à¦¯à¦ à¦à¦à¦à¦¿ সঠিঠà¦à¦®à§à¦à¦² ঠিà¦à¦¾à¦¨à¦¾ দিতৠহবà§",
"passwordsent": "à¦à¦à¦à¦¿ নতà§à¦¨ পাসà¦à¦¯à¦¼à¦¾à¦°à§à¦¡ \"$1\" বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦à¦¾à¦°à§à¦° à¦-মà§à¦à¦² ঠিà¦à¦¾à¦¨à¦¾à¦¯à¦¼ পাঠানৠহয়à§à¦à§à¥¤ দয়াà¦à¦°à§ তা পাà¦à¦¯à¦¼à¦¾à¦° পর à¦à¦¬à¦¾à¦° লà¦-à¦à¦¨ à¦à¦°à§à¦¨à¥¤",
- "blocked-mailpassword": "à¦à¦ªà¦¨à¦¾à¦° à¦à¦à¦ªà¦¿ ঠিà¦à¦¾à¦¨à¦¾à¦à¦¿ থà§à¦à§ সমà§à¦ªà¦¾à¦¦à¦¨à¦¾ à¦à¦°à¦¤à§ বাধা à¦à¦à§, তাঠà¦à¦ ঠিà¦à¦¾à¦¨à¦¾à¦° à¦
পবà§à¦¯à¦¬à¦¹à¦¾à¦° à¦à¦°à§ পাসà¦à¦¯à¦¼à¦¾à¦°à§à¦¡ ফà§à¦°à¦¤ à¦à¦¨à¦¤à§ দà§à¦¯à¦¼à¦¾ যাবৠনা।",
+ "blocked-mailpassword": "à¦à¦ªà¦¨à¦¾à¦° à¦à¦à¦ªà¦¿ ঠিà¦à¦¾à¦¨à¦¾à¦à¦¿ থà§à¦à§ সমà§à¦ªà¦¾à¦¦à¦¨à¦¾ à¦à¦°à¦¤à§ বাধা à¦à¦à§à¥¤ à¦
পবà§à¦¯à¦¬à¦¹à¦¾à¦° রà§à¦§ à¦à¦°à¦¾à¦° à¦à¦¨à§à¦¯, à¦à¦ à¦à¦à¦ªà¦¿ ঠিà¦à¦¾à¦¨à¦¾ থà§à¦à§ পাসà¦à¦¯à¦¼à¦¾à¦°à§à¦¡ পà§à¦¨à¦°à§à¦¦à§à¦§à¦¾à¦° à¦à¦°à¦¾à¦° à¦
নà§à¦®à¦¤à¦¿ দà§à¦¯à¦¼à¦¾ হয়নি।",
"eauthentsent": "মনà§à¦¨à§à¦¤ à¦-মà§à¦à¦² ঠিà¦à¦¾à¦¨à¦¾à¦¯à¦¼ à¦à¦à¦à¦¿ নিশà§à¦à¦¿à¦¤à¦à¦°à¦£ à¦-মà§à¦à¦² পাঠানৠহয়à§à¦à§à¥¤\nঠà¦
à§à¦¯à¦¾à¦à¦¾à¦à¦¨à§à¦à¦à§ à¦
নà§à¦¯ à¦à§à¦¨ à¦-মà§à¦à¦² পাঠানà§à¦° à¦à¦à§ à¦à¦ªà¦¨à¦¾à¦à§ à¦-মà§à¦à¦²à§à¦° নিরà§à¦¦à§à¦¶à¦à§à¦²à¦¿ à¦
নà§à¦¸à¦°à¦£ à¦à¦°à¦¤à§ হবà§, যাতৠà¦
à§à¦¯à¦¾à¦à¦¾à¦à¦¨à§à¦à¦à¦¿ যৠà¦à¦¸à¦²à§à¦ à¦à¦ªà¦¨à¦¾à¦°, তা নিশà§à¦à¦¿à¦¤ হয়।",
"throttled-mailpassword": "বিà¦à¦¤ {{PLURAL:$1|à¦à¦£à§à¦à¦¾à¦°|$1 à¦à¦£à§à¦à¦¾à¦°}} মধà§à¦¯à§ à¦à¦¤à¦¿à¦®à¦§à§à¦¯à§à¦ à¦à¦à¦¬à¦¾à¦° পাসà¦à¦¯à¦¼à¦¾à¦°à§à¦¡ বদলà§à¦° তথà§à¦¯ পাঠানৠহয়à§à¦à§à¥¤ à¦
পবà§à¦¯à¦¬à¦¹à¦¾à¦° রà§à¦§à§ পà§à¦°à¦¤à¦¿ {{PLURAL:$1|à¦à¦£à§à¦à¦¾à¦¯à¦¼|$1 à¦à¦£à§à¦à¦¾à¦¯à¦¼}} à¦à§à¦¬à¦² à¦à¦à¦¬à¦¾à¦° পাসà¦à¦¯à¦¼à¦¾à¦°à§à¦¡ বদলà§à¦° তথà§à¦¯ পাঠানৠযাবà§à¥¤",
"mailerror": "à¦à¦®à§à¦à¦² পাঠাতৠসমসà§à¦¯à¦¾: $1",
@@ -1075,7 +1075,7 @@
"userrights-changeable-col": "দল যা à¦à¦ªà¦¨à¦¿ পরিবরà§à¦¤à¦¨ à¦à¦°à¦¤à§ পারà§à¦¨",
"userrights-unchangeable-col": "দল যা à¦à¦ªà¦¨à¦¿ পরিবরà§à¦¤à¦¨ à¦à¦°à¦¤à§ পারবà§à¦¨ না",
"userrights-conflict": "বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦à¦¾à¦°à§ à¦
ধিà¦à¦¾à¦° দà§à¦¬à¦¨à§à¦¦à§à¦¬! à¦
নà§à¦à§à¦°à¦¹ à¦à¦°à§ নিশà§à¦à¦¿à¦¤ হà§à¦¨ à¦à¦¬à¦ পà§à¦¨à¦°à¦¾à¦¯à¦¼ à¦à§à¦·à§à¦à¦¾ à¦à¦°à§à¦¨à¥¤",
- "userrights-removed-self": "à¦à¦ªà¦¨à¦¿ সফলà¦à¦¾à¦¬à§ à¦à¦ªà¦¨à¦¾à¦° নিà¦à§à¦° à¦
ধিà¦à¦¾à¦° পরিবরà§à¦¤à¦¨ à¦à¦°à§à¦à§à¦¨à¥¤ à¦à¦° ফলৠà¦à¦à¦¨ থà§à¦à§ à¦à¦ªà¦¨à¦¿ à¦à¦° à¦à¦ পাতায় পà§à¦°à¦¬à§à¦¶ à¦à¦°à¦¤à§ পারবà§à¦¨ না।",
+ "userrights-removed-self": "à¦à¦ªà¦¨à¦¿ à¦à¦ªà¦¨à¦¾à¦° নিà¦à§à¦° à¦
ধিà¦à¦¾à¦° পরিবরà§à¦¤à¦¨ à¦à¦°à§à¦à§à¦¨à¥¤ à¦à¦° ফলৠà¦à¦à¦¨ থà§à¦à§ à¦à¦ªà¦¨à¦¿ à¦à¦° à¦à¦ পাতায় পà§à¦°à¦¬à§à¦¶ à¦à¦°à¦¤à§ পারবà§à¦¨ না।",
"group": "দল:",
"group-user": "বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦à¦¾à¦°à§à¦à¦£",
"group-autoconfirmed": "সà§à¦¬à¦¯à¦¼à¦à¦à§à¦°à¦¿à¦¯à¦¼à¦à¦¾à¦¬à§ নিশà§à¦à¦¿à¦¤à¦à§à¦¤ বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦à¦¾à¦°à§à¦°à¦¾",
@@ -1456,6 +1456,7 @@
"uploadstash-badtoken": "à¦à¦ªà¦¨à¦¾à¦° à¦
নà§à¦°à§à¦§à¦à§à¦¤ à¦à¦¾à¦à¦à¦¿ সমà§à¦ªà¦¨à§à¦¨ হয়নি, হয়তৠà¦à¦ªà¦¨à¦¾à¦° সমà§à¦ªà¦¾à¦¦à¦¨à¦¾à¦° à¦
নà§à¦®à¦¤à¦¿ মà§à¦¯à¦¼à¦¾à¦¦ à¦à¦¤à§à¦¤à§à¦°à§à¦£ হয়à§à¦à§à¥¤ পà§à¦¨à¦°à¦¾à¦¯à¦¼ à¦à§à¦·à§à¦à¦¾ à¦à¦°à§à¦¨à¥¤",
"uploadstash-errclear": "ফাà¦à¦²à¦à§à¦²à§ পরিষà§à¦à¦¾à¦°à¦à¦°à¦£ বà§à¦¯à¦°à§à¦¥ হয়à§à¦à§à¥¤",
"uploadstash-refresh": "ফাà¦à¦²à§à¦° তালিà¦à¦¾ রিফà§à¦°à§à¦¶ à¦à¦°à§à¦¨",
+ "uploadstash-thumbnail": "থামà§à¦¬à¦¨à§à¦à¦² দà§à¦à§à¦¨",
"invalid-chunk-offset": "তà§à¦°à§à¦à¦¿à¦ªà§à¦°à§à¦£ à¦à¦¾à¦à¦ à¦
ফসà§à¦",
"img-auth-accessdenied": "পà§à¦°à¦¬à§à¦¶à¦¾à¦§à¦¿à¦à¦¾à¦° নাà¦",
"img-auth-nopathinfo": "PATH_INFO পাà¦à¦¯à¦¼à¦¾ যাà¦à§à¦à§ না।\nà¦à¦ªà¦¨à¦¾à¦° সারà§à¦à¦¾à¦° থà§à¦à§ à¦à¦ তথà§à¦¯ পাঠানà§à¦° à¦à¦¨à§à¦¯ à¦à¦¨à¦«à¦¿à¦à¦¾à¦° à¦à¦°à¦¾ হয়নি।\nà¦à¦à¦¿ হয়তৠCGI à¦à¦¿à¦¤à§à¦¤à¦¿à¦ à¦à¦¬à¦ img_auth সমরà§à¦¥à¦¨ à¦à¦°à§ না।\nবিসà§à¦¤à¦¾à¦°à¦¿à¦¤ দà§à¦à§à¦¨ https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Image_Authorization।",
@@ -1716,6 +1717,8 @@
"apisandbox-dynamic-parameters-add-label": "পà§à¦¯à¦¾à¦°à¦¾à¦®à¦¿à¦à¦¾à¦° যà§à¦ à¦à¦°à§à¦¨:",
"apisandbox-dynamic-parameters-add-placeholder": "পà§à¦¯à¦¾à¦°à¦¾à¦®à¦¿à¦à¦¾à¦°à§à¦° নাম",
"apisandbox-results": "ফলাফল",
+ "apisandbox-sending-request": "API à¦
নà§à¦°à§à¦§ পাঠানৠহà¦à§à¦à§...",
+ "apisandbox-loading-results": "API ফলাফল à¦à§à¦°à¦¹à¦£ à¦à¦°à¦¾ হà¦à§à¦à§...",
"apisandbox-request-url-label": "à¦
নà§à¦°à§à¦§à§à¦° URL:",
"apisandbox-request-time": "à¦
নà§à¦°à§à¦§à§à¦° সময়: {{PLURAL:$1|$1 মি.সà§.}}",
"booksources": "বà¦à¦¯à¦¼à§à¦° à¦à§à¦¸",
@@ -1728,7 +1731,7 @@
"speciallogtitlelabel": "লà¦à§à¦·à§à¦¯ (শিরà§à¦¨à¦¾à¦® বা {{ns:user}}:বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦à¦¾à¦°à§à¦° à¦à¦¨à§à¦¯ বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦à¦¾à¦°à§ নাম):",
"log": "লà¦à¦à§à¦²à¦¿",
"logeventslist-submit": "দà§à¦à¦¾à¦",
- "all-logs-page": "সব পাবলিঠলà¦",
+ "all-logs-page": "সব পà§à¦°à¦à¦¾à¦¶à§à¦¯ লà¦",
"alllogstext": "{{SITENAME}}-à¦à¦° সবà¦à§à¦²à§ লà¦à§à¦° সমà§à¦®à¦¿à¦²à¦¿à¦¤ পà§à¦°à¦¦à¦°à§à¦¶à¦¨à¥¤\nà¦à¦ªà¦¨à¦¿ লà¦à§à¦° ধরন, বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦à¦¾à¦°à§à¦° নাম, বা পাতার নাম নিরà§à¦¬à¦¾à¦à¦¨ à¦à¦°à§ পà§à¦°à¦¦à¦°à§à¦¶à¦¨à¦à¦¿à¦° à¦à¦à¦¾à¦° à¦à¦®à¦¿à¦¯à¦¼à§ à¦à¦¨à¦¤à§ পারà§à¦¨à¥¤",
"logempty": "মিলৠযায় à¦à¦®à¦¨ à¦à¦¿à¦à§ লà¦à§ পাà¦à¦¯à¦¼à¦¾ যায়নি।",
"log-title-wildcard": "à¦à¦ à¦à§à¦à§à¦¸à¦ দিয়ৠশà§à¦°à§ হà¦à¦¯à¦¼à¦¾ শিরà§à¦¨à¦¾à¦®à¦à§à¦²à¦¿ à¦
নà§à¦¸à¦¨à§à¦§à¦¾à¦¨ à¦à¦°à¦¾ হà§à¦",
@@ -1756,8 +1759,6 @@
"categories-submit": "দà§à¦à¦¾à¦",
"categoriespagetext": "à¦à¦ {{PLURAL:$1|বিষয়শà§à¦°à§à¦£à§à¦¤à§|বিষয়শà§à¦°à§à¦£à§à¦¸à¦®à§à¦¹à§}} পাতা বা মিডিয়া রয়à§à¦à§à¥¤\n[[Special:UnusedCategories|à¦
বà§à¦¯à¦¬à¦¹à§à¦¤ বিষয়শà§à¦°à§à¦£à§à¦¸à¦®à§à¦¹]] à¦à¦à¦¾à¦¨à§ দà§à¦à¦¾à¦¨à§ হয়à§à¦à§à¥¤\nà¦à¦°à¦ দà§à¦à§à¦¨ [[Special:WantedCategories|à¦à¦¬à¦¶à§à¦¯à¦ বিষয়শà§à¦°à§à¦£à§à¦¸à¦®à§à¦¹]]।",
"categoriesfrom": "à¦à¦ à¦
à¦à§à¦·à¦° দিয়ৠশà§à¦°à§ হà¦à¦¯à¦¼à¦¾ বিষয়শà§à¦°à§à¦£à§à¦à§à¦²à§ দà§à¦à¦¾à¦:",
- "special-categories-sort-count": "à¦à¦£à¦¨à¦¾à¦° à¦à¦¿à¦¤à§à¦¤à¦¿à¦¤à§ সাà¦à¦¾à¦",
- "special-categories-sort-abc": "বরà§à¦£à¦¾à¦¨à§à¦à§à¦°à¦®à§ সাà¦à¦¾à¦¨",
"deletedcontributions": "মà§à¦à§ ফà§à¦²à¦¾ বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦à¦¾à¦°à§ à¦
বদান",
"deletedcontributions-title": "মà§à¦à§ ফà§à¦²à¦¾ বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦à¦¾à¦°à§ à¦
বদান",
"sp-deletedcontributions-contribs": "à¦
বদানসমà§à¦¹",
@@ -2118,6 +2119,7 @@
"ipb-unblock": "বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦à¦¾à¦°à§ বা à¦à¦à¦ªà¦¿ ঠিà¦à¦¾à¦¨à¦¾à¦° à¦à¦ªà¦° থà§à¦à§ বাধা তà§à¦²à§ নà§à¦à¦¯à¦¼à¦¾ হà§à¦",
"ipb-blocklist": "বিদà§à¦¯à¦®à¦¾à¦¨ বাধাà¦à§à¦²à¦¿ দà§à¦à§à¦¨",
"ipb-blocklist-contribs": "{{GENDER:$1|$1}}-à¦à¦° à¦
বদানসমà§à¦¹",
+ "ipb-blocklist-duration-left": "$1 বাà¦à¦¿",
"unblockip": "বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦à¦¾à¦°à§à¦° à¦à¦ªà¦° থà§à¦à§ বাধা তà§à¦²à§ নà§à¦à¦¯à¦¼à¦¾ হà§à¦",
"unblockiptext": "নিà¦à§à¦° ফরà§à¦®à¦à¦¿ বà§à¦¯à¦¬à¦¹à¦¾à¦° à¦à¦°à§ পà§à¦°à§à¦¬à§ বাধা দà§à¦à¦¯à¦¼à¦¾ à¦à§à¦¨ à¦à¦à¦ªà¦¿ ঠিà¦à¦¾à¦¨à¦¾ বা বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦à¦¾à¦°à§à¦° সাà¦à¦à§ লà§à¦à¦¾à¦° à¦
ধিà¦à¦¾à¦° পà§à¦¨à¦à¦ªà§à¦°à¦¤à¦¿à¦·à§à¦ া à¦à¦°à§à¦¨à¥¤",
"ipusubmit": "বাধা তà§à¦²à§ নà§à¦à¦¯à¦¼à¦¾ হà§à¦",
@@ -2152,7 +2154,7 @@
"ipblocklist-no-results": "à¦
নà§à¦°à§à¦¦à§à¦§ à¦à¦à¦ªà¦¿ ঠিà¦à¦¾à¦¨à¦¾ বা বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦à¦¾à¦°à§ নামà¦à¦¿à¦° à¦à¦ªà¦° à¦à§à¦¨ বাধা নà§à¦à¥¤",
"blocklink": "বাধা দাà¦",
"unblocklink": "বাধা তà§à¦²à§ নà§à¦à¦¯à¦¼à¦¾ হà§à¦",
- "change-blocklink": "বà§à¦²à¦ à¦
বসà§à¦¥à¦¾à¦° পরিবরà§à¦¤à¦¨ à¦à¦°à§à¦¨",
+ "change-blocklink": "বাধা পরিবরà§à¦¤à¦¨ à¦à¦°à§à¦¨",
"contribslink": "à¦
বদান",
"emaillink": "à¦-মà§à¦à¦² পাঠাà¦",
"autoblocker": "à¦à¦ªà¦¨à¦¾à¦à§ সà§à¦¬à¦¯à¦¼à¦à¦à§à¦°à¦¿à¦¯à¦¼à¦à¦¾à¦¬à§ বাধা দà§à¦à¦¯à¦¼à¦¾ হয়à§à¦à§, à¦à¦¾à¦°à¦£ à¦à¦ªà¦¨à¦¾à¦° à¦à¦à¦ªà¦¿ ঠিà¦à¦¾à¦¨à¦¾à¦à¦¿ সমà§à¦ªà§à¦°à¦¤à¦¿ \"[[User:$1|$1]]\" বà§à¦¯à¦¬à¦¹à¦¾à¦° à¦à¦°à§à¦à§à¦¨à¥¤ $1-à¦à§ বাধাদানà§à¦° à¦à¦¾à¦°à¦£ \"$2\"",
@@ -2176,7 +2178,7 @@
"ipb_expiry_temp": "লà§à¦à¦¾à¦¨à§ বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦à¦¾à¦°à§à¦¨à¦¾à¦® বাধা à¦à¦¿à¦°à¦¸à§à¦¥à¦¾à¦¯à¦¼à§ হতৠহবà§à¥¤",
"ipb_hide_invalid": "à¦à¦ à¦
à§à¦¯à¦¾à¦à¦¾à¦à¦¨à§à¦ বাধা দà§à¦¯à¦¼à¦¾ সমà§à¦à¦¬ নয়; à¦à¦à¦¿ {{PLURAL:$1|à¦à¦à§à¦° à¦
ধিà¦|$1à¦à¦¿}} সমà§à¦ªà¦¾à¦¦à¦¨à¦¾ à¦à¦°à§à¦à§à¥¤",
"ipb_already_blocked": "\"$1\" à¦à¦¤à¦¿à¦®à¦§à§à¦¯à§ বà§à¦²à¦",
- "ipb-needreblock": "$1 পà§à¦°à§à¦¬à§à¦ বà§à¦²à¦ রয়à§à¦à§à¦¨à¥¤ à¦à¦ªà¦¨à¦¿ à¦à¦¿ সà§à¦à¦¿à¦à¦¸ পরিবরà§à¦¤à¦¨ à¦à¦°à¦¤à§ à¦à¦¾à¦¨?",
+ "ipb-needreblock": "$1 à¦à¦¤à¦¿à¦®à¦§à§à¦¯à§à¦ বাধাপà§à¦°à¦¾à¦ªà§à¦¤ à¦à¦à§à¦¨à¥¤ à¦à¦ªà¦¨à¦¿ à¦à¦¿ সà§à¦à¦¿à¦à¦¸ পরিবরà§à¦¤à¦¨ à¦à¦°à¦¤à§ à¦à¦¾à¦¨?",
"ipb-otherblocks-header": "à¦
নà§à¦¯à¦¾à¦¨à§à¦¯ {{PLURAL:$1|বাধাà¦|বাধাà¦à¦¸à¦®à§à¦¹}}",
"unblock-hideuser": "à¦à¦ªà¦¨à¦¿ à¦à¦ বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦à¦¾à¦°à§à¦à§ বাধা মà§à¦à§à¦¤ à¦à¦°à¦¤à§ পারবà§à¦¨ না, à¦à¦¾à¦°à¦£ à¦à¦ বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦à¦¾à¦°à§à¦¦à§à¦° বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦à¦¾à¦°à§ নাম লà§à¦à¦¾à¦¨à§ রয়à§à¦à§à¥¤",
"ipb_cant_unblock": "তà§à¦°à§à¦à¦¿: $1 বà§à¦²à¦ à¦à¦à¦¡à¦¿ à¦à§à¦à¦à§ পাà¦à¦¯à¦¼à¦¾ যায়নি। হয়ত à¦à¦¤à¦¿à¦®à¦§à§à¦¯à§à¦ à¦à¦à¦¿à¦° à¦à¦ªà¦° থà§à¦à§ বাধা তà§à¦²à§ নà§à¦à¦¯à¦¼à¦¾ হয়à§à¦à§à¥¤",
@@ -2357,11 +2359,7 @@
"import-logentry-upload-detail": "$1à¦à¦¿ {{PLURAL:$1|সà¦à¦¶à§à¦§à¦¨}} à¦à¦®à¦¦à¦¾à¦¨à¦¿ à¦à¦°à¦¾ হয়à§à¦à§",
"import-logentry-interwiki-detail": "$2 থà§à¦à§ $1à¦à¦¿ {{PLURAL:$1|সà¦à¦¶à§à¦§à¦¨}} à¦à¦®à¦¦à¦¾à¦¨à¦¿ à¦à¦°à¦¾ হয়à§à¦à§",
"javascripttest": "à¦à¦¾à¦à¦¾à¦¸à§à¦à§à¦°à¦¿à¦ªà§à¦ পরà§à¦à§à¦·à¦¾",
- "javascripttest-pagetext-noframework": "à¦à¦ পাতাà¦à¦¿ à¦à¦¾à¦à¦¾à¦¸à§à¦à§à¦°à¦¿à¦ªà§à¦ পরà§à¦à§à¦·à¦¾à¦° à¦à¦¨à§à¦¯ সà¦à¦°à¦à§à¦·à¦¿à¦¤à¥¤",
- "javascripttest-pagetext-unknownframework": "পরà§à¦à§à¦·à¦¾à¦° à¦
à¦à¦¾à¦¨à¦¾ ফà§à¦°à§à¦®à¦à¦¯à¦¼à¦¾à¦°à§à¦ \"$1\"।",
"javascripttest-pagetext-unknownaction": "à¦
à¦à¦¾à¦¨à¦¾ à¦à¦¾à¦°à§à¦¯ \"$1\"।",
- "javascripttest-pagetext-frameworks": "à¦
নà§à¦à§à¦°à¦¹ à¦à¦°à§ নিà¦à§à¦° à¦à§à¦¨à§ à¦à¦à¦à¦¿ ফà§à¦°à§à¦®à¦à¦¯à¦¼à¦¾à¦°à§à¦ নিরà§à¦§à¦¾à¦°à¦£ à¦à¦°à§à¦¨: $1",
- "javascripttest-pagetext-skins": "পরà§à¦à§à¦·à¦¾à¦° à¦à¦¨à§à¦¯ à¦à¦à¦à¦¿ সà§à¦à§à¦¨ নিরà§à¦§à¦¾à¦°à¦£ à¦à¦°à§à¦¨:",
"javascripttest-qunit-intro": "mediawiki.org থà§à¦à§ [$1 পরà§à¦à§à¦·à¦¾à¦° ডলà§à¦®à§à¦¨à§à¦à§à¦¶à¦¨] দà§à¦à§à¦¨à¥¤",
"tooltip-pt-userpage": "{{GENDER:|à¦à¦ªà¦¨à¦¾à¦° বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦à¦¾à¦°à§}} পাতা",
"tooltip-pt-anonuserpage": "যৠà¦à¦à¦ªà¦¿ ঠিà¦à¦¾à¦¨à¦¾ থà§à¦à§ à¦à¦ªà¦¨à¦¿ সমà§à¦ªà¦¾à¦¦à¦¨à¦¾ à¦à¦°à¦à§à¦¨, তার বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦à¦¾à¦°à§ পাতা",
@@ -2618,8 +2616,8 @@
"exif-colorspace": "রঠà¦à¦à§",
"exif-componentsconfiguration": "পà§à¦°à¦¤à¦¿à¦à¦¿ à¦à¦ªà¦¾à¦¦à¦¾à¦¨à§à¦° à¦
রà§à¦¥",
"exif-compressedbitsperpixel": "à¦à¦¬à¦¿ সà¦à¦à§à¦à¦¨ মà§à¦¡",
- "exif-pixelydimension": "à¦à¦¿à¦¤à§à¦°à§à¦° পà§à¦°à¦¸à§à¦¥",
- "exif-pixelxdimension": "à¦à¦¿à¦¤à§à¦°à§à¦° à¦à¦à§à¦à¦¤à¦¾",
+ "exif-pixelxdimension": "à¦à¦¿à¦¤à§à¦°à§à¦° পà§à¦°à¦¸à§à¦¥",
+ "exif-pixelydimension": "à¦à¦¿à¦¤à§à¦°à§à¦° à¦à¦à§à¦à¦¤à¦¾",
"exif-usercomment": "বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦à¦¾à¦°à§à¦° মনà§à¦¤à¦¬à§à¦¯",
"exif-relatedsoundfile": "সà¦à¦¶à§à¦²à¦¿à¦·à§à¦ à¦
ডিঠফাà¦à¦²",
"exif-datetimeoriginal": "à¦à¦ªà¦¾à¦¤à§à¦¤ à¦à§à¦ªà¦¾à¦¦à¦¨à§à¦° তারিঠঠসময়",
@@ -2766,8 +2764,10 @@
"exif-compression-2": "সিসিà¦à¦à¦à¦¿à¦à¦¿ à¦à§à¦°à§à¦ª ৩ ১-ডাà¦à¦®à§à¦¨à¦¶à¦¨à¦¾à¦® মডিফাà¦à¦¡ হাফমà§à¦¯à¦¾à¦¨ রান লà§à¦à¦à§à¦¥ à¦à¦¨à¦à§à¦¡à¦¿à¦",
"exif-compression-3": "সিসিà¦à¦à¦à¦¿à¦à¦¿ à¦à§à¦°à§à¦ª ৩ ফà§à¦¯à¦¾à¦à§à¦¸ à¦à¦¨à¦à§à¦¡à¦¿à¦",
"exif-compression-4": "সিসিà¦à¦à¦à¦¿à¦à¦¿ à¦à§à¦°à§à¦ª ৪ ফà§à¦¯à¦¾à¦à§à¦¸ à¦à¦¨à¦à§à¦¡à¦¿à¦",
+ "exif-compression-6": "JPEG (পà§à¦°à¦¨à§)",
"exif-copyrighted-true": "à¦à¦ªà¦¿à¦°à¦¾à¦à¦à¦à§à¦¤",
"exif-copyrighted-false": "à¦à¦ªà¦¿à¦°à¦¾à¦à¦ সà¦à¦à§à¦°à¦¾à¦¨à§à¦¤ তথà§à¦¯ নà§à¦",
+ "exif-photometricinterpretation-0": "à¦à¦¾à¦²à§ à¦à¦¬à¦ সাদা (সাদা হল 0)",
"exif-photometricinterpretation-1": "à¦à¦¾à¦²à§ à¦à¦¬à¦ সাদা (à¦à¦¾à¦²à§ হল 0)",
"exif-unknowndate": "à¦
à¦à¦¾à¦¨à¦¾ তারিà¦",
"exif-orientation-1": "সাধারণ",
@@ -3096,6 +3096,7 @@
"version-entrypoints-header-entrypoint": "শà§à¦°à§",
"version-entrypoints-header-url": "à¦à¦à¦à¦°à¦à¦²",
"version-entrypoints-articlepath": "[https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgArticlePath নিবনà§à¦§à§à¦° পথ]",
+ "version-entrypoints-scriptpath": "[https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgScriptPath সà§à¦à§à¦°à¦¿à¦ªà§à¦à§à¦° পথ]",
"version-libraries": "à¦à¦¨à¦¸à§à¦à¦² লাà¦à¦¬à§à¦°à§à¦°à¦¿",
"version-libraries-library": "লাà¦à¦¬à§à¦°à§à¦°à§",
"version-libraries-version": "সà¦à¦¸à§à¦à¦°à¦£",
@@ -3103,7 +3104,6 @@
"version-libraries-description": "বিবরণ",
"version-libraries-authors": "লà§à¦à¦",
"redirect": "পাতা, ফাà¦à¦², বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦à¦°à§, সà¦à¦¶à§à¦§à¦¨ বা লঠà¦à¦à¦¡à¦¿ দà§à¦¬à¦¾à¦°à¦¾ পà§à¦¨à¦à¦¨à¦¿à¦°à§à¦¦à§à¦¶ à¦à¦°à¦¾ হয়à§à¦à§",
- "redirect-legend": "à¦à¦à¦à¦¿ ফাà¦à¦² à¦
থবা পাতায় পà§à¦¨à¦à¦¨à¦¿à¦°à§à¦¦à§à¦¶ à¦à¦°à¦¾ হয়à§à¦à§",
"redirect-summary": "à¦à¦ বিশà§à¦· পাতাà¦à¦¿ à¦à¦à¦à¦¿ ফাà¦à¦²à§ (পà§à¦°à¦¦à¦¤à§à¦¤ ফাà¦à¦²à§à¦° নাম), à¦à¦à¦à¦¿ পাতায় (পà§à¦°à¦¦à¦¤à§à¦¤ সà¦à¦¸à§à¦à¦°à¦£ à¦à¦à¦¡à¦¿ বা পাতা à¦à¦à¦¡à¦¿), à¦à¦à¦à¦¿ বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦à¦°à§ পাতায় (পà§à¦°à¦¦à¦¤à§à¦¤ সà¦à¦à§à¦¯à¦¾à¦¯à¦¼ লà§à¦à¦¾ বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦à¦¾à¦°à§ à¦à¦à¦¡à¦¿) বা à¦à¦à¦à¦¿ লঠà¦à§à¦à§à¦¤à¦¿à¦¤à§ (পà§à¦°à¦¦à¦¤à§à¦¤ লঠà¦à§à¦à§à¦¤à¦¿) পà§à¦¨à¦à¦¨à¦¿à¦°à§à¦¦à§à¦¶à¦¿à¦¤ হয়à§à¦à§à¥¤ বà§à¦¯à¦¬à¦¹à¦¾à¦°: [[{{#Special:Redirect}}/file/à¦à¦¦à¦¾à¦¹à¦°à¦£.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], [[{{#Special:Redirect}}/user/101]], বা [[{{#Special:Redirect}}/logid/186]]।",
"redirect-submit": "যাà¦",
"redirect-lookup": "দà§à¦à§à¦¨:",
@@ -3116,7 +3116,6 @@
"redirect-not-exists": "মান পাà¦à¦¯à¦¼à¦¾ যায়নি",
"fileduplicatesearch": "সদà§à¦¶ ফাà¦à¦²à§à¦° à¦à¦¨à§à¦¯ à¦
নà§à¦¸à¦¨à§à¦§à¦¾à¦¨",
"fileduplicatesearch-summary": "হà§à¦¯à¦¾à¦¶ à¦à§à¦¯à¦¾à¦²à§à¦° à¦à¦° à¦à¦¿à¦¤à§à¦¤à¦¿ à¦à¦°à§ à¦à¦à¦ à¦à¦¬à¦¿à¦à§à¦²à§ à¦à§à¦à¦à§à¦¨à¥¤",
- "fileduplicatesearch-legend": "à¦
নà§à¦²à¦¿à¦ªà¦¿à¦° à¦à¦¨à§à¦¯ à¦
নà§à¦¸à¦¨à§à¦§à¦¾à¦¨",
"fileduplicatesearch-filename": "ফাà¦à¦²à¦¨à¦¾à¦®:",
"fileduplicatesearch-submit": "à¦
নà§à¦¸à¦¨à§à¦§à¦¾à¦¨",
"fileduplicatesearch-info": "$1 à $2 পিà¦à§à¦¸à§à¦² ফাà¦à¦²à§à¦° à¦à¦à¦¾à¦°: $3 à¦à¦®à¦à¦à¦à¦®à¦ পà§à¦°à¦à¦¾à¦°: $4",
@@ -3289,7 +3288,7 @@
"logentry-protect-modify-cascade": "$1 $3-à¦à¦° à¦à¦¨à§à¦¯ সà§à¦°à¦à§à¦·à¦¾ সà§à¦¤à¦° {{GENDER:$2|পরিবরà§à¦¤à¦¨ à¦à¦°à§à¦à§à¦¨}} $4 [পà§à¦°à¦ªà¦¾à¦¤à¦¾à¦à¦¾à¦°]",
"logentry-rights-rights": "$1 বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦à¦¾à¦°à§, $3 à¦à¦° দলà¦à¦¤ সদসà§à¦¯à¦ªà¦¦ $4 থà§à¦à§ $5 ঠ{{GENDER:$2|পরিবরà§à¦¤à¦¨}} à¦à¦°à§à¦à§à¦¨",
"logentry-rights-rights-legacy": "$1 দলà§à¦° সদসà§à¦¯à¦ªà¦¦ পরিবরà§à¦¤à¦¨ à¦à¦°à§à¦à§à¦¨ {{GENDER:$2|changed}} à¦à¦° à¦à¦¨à§à¦¯ $3",
- "logentry-rights-autopromote": "$1 সয়à¦à¦à§à¦°à¦¿à¦¯à¦¼à¦à¦¾à¦¬à§ $4 থà§à¦à§ $5 ঠ{{GENDER:$2|à¦à¦¨à§à¦¨à§à¦¤}} হয়à§à¦à§",
+ "logentry-rights-autopromote": "$1 সà§à¦¬à¦¯à¦¼à¦à¦à§à¦°à¦¿à¦¯à¦¼à¦à¦¾à¦¬à§ $4 থà§à¦à§ $5-ঠ{{GENDER:$2|à¦à¦¨à§à¦¨à§à¦¤}} হয়à§à¦à§à¦¨",
"logentry-upload-upload": "$1 $3 {{GENDER:$2|à¦à¦ªà¦²à§à¦¡ à¦à¦°à§à¦à§à¦¨}}",
"logentry-upload-overwrite": "$1 $3-à¦à¦° à¦à¦à¦à¦¿ নতà§à¦¨ সà¦à¦¸à§à¦à¦°à¦£ {{GENDER:$2|à¦à¦ªà¦²à§à¦¡ à¦à¦°à§à¦à§à¦¨}}",
"logentry-upload-revert": "$1 $3 {{GENDER:$2|à¦à¦ªà¦²à§à¦¡ à¦à¦°à§à¦à§à¦¨}}",
@@ -3443,6 +3442,7 @@
"special-characters-group-ipa": "à¦à¦à¦ªà¦¿à¦",
"special-characters-group-symbols": "à¦à¦¿à¦¹à§à¦¨à¦¸à¦®à§à¦¹",
"special-characters-group-greek": "à¦à§à¦°à¦¿à¦",
+ "special-characters-group-greekextended": "সমà§à¦ªà§à¦°à¦¸à¦¾à¦°à¦¿à¦¤ à¦à§à¦°à¦¿à¦",
"special-characters-group-cyrillic": "সিরিলিà¦",
"special-characters-group-arabic": "à¦à¦°à¦¬à¦¿",
"special-characters-group-arabicextended": "সমà§à¦ªà§à¦°à¦¸à¦¾à¦°à¦¿à¦¤ à¦à¦°à¦¬à¦¿",
@@ -3470,5 +3470,25 @@
"sessionprovider-generic": "$1à¦à¦¿ সà§à¦¶à¦¨",
"sessionprovider-mediawiki-session-cookiesessionprovider": "à¦à§à¦à¦¿-à¦à¦¿à¦¤à§à¦¤à¦¿à¦ সà§à¦¶à¦¨",
"sessionprovider-nocookies": "à¦à§à¦à¦¿ নিষà§à¦à§à¦°à¦¿à¦¯à¦¼ à¦à¦°à¦¾à¥¤ নিশà§à¦à¦¿à¦¤ à¦à¦°à§à¦¨ যৠà¦à¦ªà¦¨à¦¾à¦° à¦à§à¦à¦¿ সà¦à§à¦°à¦¿à¦¯à¦¼ à¦à¦à§ à¦à¦¬à¦ à¦à¦¬à¦¾à¦° শà§à¦°à§ à¦à¦°à§à¦¨à¥¤",
- "randomrootpage": "à¦
à¦à¦¾à¦¨à¦¾ মà§à¦² পাতা"
+ "randomrootpage": "à¦
à¦à¦¾à¦¨à¦¾ মà§à¦² পাতা",
+ "log-action-filter-block": "বাধাদানà§à¦° ধরন:",
+ "log-action-filter-delete": "à¦
পসারণà§à¦° ধরন:",
+ "log-action-filter-patrol": "à¦à¦¹à¦²à§à¦° ধরন:",
+ "log-action-filter-protect": "সà§à¦°à¦à§à¦·à¦¾à¦° ধরন:",
+ "log-action-filter-upload": "à¦à¦ªà¦²à§à¦¡à§à¦° ধরন:",
+ "log-action-filter-all": "সব",
+ "log-action-filter-block-block": "বাধাদান",
+ "log-action-filter-block-reblock": "বাধাদান পরিবরà§à¦¤à¦¨",
+ "log-action-filter-block-unblock": "বাধা à¦
পসারণ",
+ "log-action-filter-delete-delete": "পাতা à¦
পসারণ",
+ "log-action-filter-delete-restore": "পাতা পà§à¦¨à¦à¦°à§à¦¦à§à¦§à¦¾à¦°",
+ "log-action-filter-delete-event": "লঠà¦
পসারণ",
+ "log-action-filter-delete-revision": "সà¦à¦¶à§à¦§à¦¨ à¦
পসারণ",
+ "log-action-filter-patrol-patrol": "মà§à¦¯à¦¾à¦¨à§à¦¯à¦¼à¦¾à¦² à¦à¦¹à¦²",
+ "log-action-filter-patrol-autopatrol": "সà§à¦¬à¦¯à¦¼à¦à¦à§à¦°à¦¿à¦¯à¦¼ à¦à¦¹à¦²",
+ "log-action-filter-protect-protect": "সà§à¦°à¦à§à¦·à¦¾",
+ "log-action-filter-protect-modify": "সà§à¦°à¦à§à¦·à¦¾ পরিমারà§à¦à¦¨",
+ "log-action-filter-protect-unprotect": "à¦
সà§à¦°à¦à§à¦·à¦¾",
+ "log-action-filter-upload-upload": "নতà§à¦¨ à¦à¦ªà¦²à§à¦¡",
+ "log-action-filter-upload-overwrite": "পà§à¦¨à¦à¦à¦ªà¦²à§à¦¡"
}
diff --git a/languages/i18n/br.json b/languages/i18n/br.json
index c542737eb5..03a0f881d8 100644
--- a/languages/i18n/br.json
+++ b/languages/i18n/br.json
@@ -1618,8 +1618,6 @@
"categories": "Roll ar rummadoù",
"categoriespagetext": "Er {{PLURAL:$1|rummad|rummadoù}} da-heul ez eus pajennoù pe restroù media.\nNe ziskouezer ket amañ ar [[Special:UnusedCategories|Rummadoù dizimplij]].\nGwelet ivez ar [[Special:WantedCategories|rummadoù goulennet a vank]].",
"categoriesfrom": "Diskouez ar rummadoù en ur gregiñ gant :",
- "special-categories-sort-count": "Urzhiañ dre gont",
- "special-categories-sort-abc": "urzh al lizherenneg",
"deletedcontributions": "Degasadennoù diverket un implijer",
"deletedcontributions-title": "Degasadennoù diverket un implijer",
"sp-deletedcontributions-contribs": "Degasadennoù",
@@ -2184,10 +2182,6 @@
"import-logentry-upload-detail": "$1 {{PLURAL:$1|adweladenn}} enporzhiet",
"import-logentry-interwiki-detail": "$1 {{PLURAL:$1|adweladenn}} enporzhiet eus $2",
"javascripttest": "Amprouadenn JavaScript",
- "javascripttest-pagetext-noframework": "Miret eo ar bajenn-mañ evit amprouiñ JavaScript.",
- "javascripttest-pagetext-unknownframework": "Framm amprouiñ \"$1\" dianav.",
- "javascripttest-pagetext-frameworks": "Diuzit unan eus ar frammoù amprouiñ da-heul : $1",
- "javascripttest-pagetext-skins": "Diuzit ar gwiskadur da vezañ implijet evit an amprouadennoù :",
"javascripttest-qunit-intro": "Sellet ouzh [$1 an teulioù amprouiñ] e mediawiki.org.",
"tooltip-pt-userpage": "Ho pajenn implijer",
"tooltip-pt-anonuserpage": "Ar bajenn implijer evit ar c'homlec'h IP implijet ganeoc'h",
@@ -2436,8 +2430,8 @@
"exif-colorspace": "Lec'h al livioù",
"exif-componentsconfiguration": "Talvoudegezh pep parzh",
"exif-compressedbitsperpixel": "Doare gwaskañ ar skeudenn",
- "exif-pixelydimension": "Ledander ar skeudenn",
- "exif-pixelxdimension": "Sav ar skeudenn",
+ "exif-pixelxdimension": "Ledander ar skeudenn",
+ "exif-pixelydimension": "Sav ar skeudenn",
"exif-usercomment": "Evezhiadennoù",
"exif-relatedsoundfile": "Restr son stag",
"exif-datetimeoriginal": "Deiziad hag eur ar sevel roadoù",
@@ -2884,7 +2878,6 @@
"version-libraries-version": "Stumm",
"version-libraries-license": "Aotre-implijout",
"version-libraries-description": "Deskrivadur",
- "redirect-legend": "Adkas d'ur restr pe d'ur bajenn",
"redirect-submit": "Mont",
"redirect-lookup": "Klask :",
"redirect-value": "Talvoud :",
@@ -2895,7 +2888,6 @@
"redirect-not-exists": "Talvoud n'eo ket bet kavet",
"fileduplicatesearch": "Klask ar restroù e doubl",
"fileduplicatesearch-summary": "Klask restroù e doubl war diazez talvoudennoù krennet.",
- "fileduplicatesearch-legend": "Klask un doubl",
"fileduplicatesearch-filename": "Anv ar restr :",
"fileduplicatesearch-submit": "Klask",
"fileduplicatesearch-info": "$1 Ã $2 piksel Ment ar restr : $3 seurt MIME : $4",
diff --git a/languages/i18n/bs.json b/languages/i18n/bs.json
index 21ba46b16f..7d3500a4db 100644
--- a/languages/i18n/bs.json
+++ b/languages/i18n/bs.json
@@ -58,6 +58,7 @@
"tog-watchlisthidebots": "Sakrij izmjene botova sa spiska praÄenih Älanaka",
"tog-watchlisthideminor": "Sakrij manje izmjene sa spiska praÄenih Älanaka",
"tog-watchlisthideliu": "Sakrij izmjene prijavljenih korisnika sa spiska praÄenih Älanaka",
+ "tog-watchlistreloadautomatically": "Automatski osvježi spisak praÄenja kad god se izmijeni filter (potreban JavaScript)",
"tog-watchlisthideanons": "Sakrij izmjene anonimnih korisnika sa spiska praÄenih Älanaka",
"tog-watchlisthidepatrolled": "Sakrij patrolirane izmjene sa spiska praÄenja",
"tog-watchlisthidecategorization": "Sakrij kategorizaciju stranica",
@@ -1035,7 +1036,7 @@
"userrights-changeable-col": "Grupe koje možete mijenjati",
"userrights-unchangeable-col": "Grupe koje ne možete mijenjati",
"userrights-conflict": "Sukob u izmjeni korisniÄkih prava! Molimo da razmotrite i potvrdite VaÅ¡e promjene.",
- "userrights-removed-self": "Uspješno ste uklonili vlastite prava. Zbog toga više niste u stanju pristupiti ovoj stranici.",
+ "userrights-removed-self": "Uklonili ste vlastita prava. Zbog toga više ne možete pristupiti ovoj stranici.",
"group": "Grupa:",
"group-user": "Korisnici",
"group-autoconfirmed": "PotvrÄeni korisnici",
@@ -1129,13 +1130,22 @@
"right-managechangetags": "Napravi i briši [[Special:Tags|oznake]] iz baze podataka",
"right-applychangetags": "Primijeni [[Special:Tags|oznake]] na neÄije izmjene",
"right-changetags": "Dodavanje ili uklanjanje raznih [[Special:Tags|oznaka]] na pojedinaÄnim verzijama i unosima zapisnika",
+ "grant-group-page-interaction": "Upravljanje stranicama",
+ "grant-group-watchlist-interaction": "Upravljanje VaÅ¡im spiskom praÄenja",
+ "grant-group-high-volume": "Izvršavanje velikog broja radnji",
+ "grant-group-customization": "Prilagodbe i postavke",
+ "grant-group-other": "Raznovrsno djelovanje",
"grant-createeditmovepage": "Pravljenje, ureÄivanje i premjeÅ¡tanje stranica",
+ "grant-editmycssjs": "UreÄivanje VaÅ¡eg korisniÄkog CSS-a ili JavaScripta",
+ "grant-editmyoptions": "UreÄivanje VaÅ¡ih postavki",
"grant-editmywatchlist": "UreÄivanje VaÅ¡eg spiska praÄenja",
"grant-editpage": "UreÄivanje postojeÄih stranica",
"grant-editprotected": "UreÄivanje zaÅ¡tiÄenih stranica",
- "grant-highvolume": "UreÄivanja velikog opsega",
+ "grant-highvolume": "Veliki broj izmjena",
+ "grant-patrol": "Patroliranje izmjena stranica",
"grant-uploadeditmovefile": "Postavljanje, zamjena i premještanje datoteka",
"grant-uploadfile": "Postavljanje novih datoteka",
+ "grant-basic": "Osnovna prava",
"grant-viewmywatchlist": "Pregled VaÅ¡eg spiska praÄenja",
"newuserlogpage": "Zapisnik novih korisnika",
"newuserlogpagetext": "Ovo je zapisnik o registraciji novih korisnika.",
@@ -1249,7 +1259,7 @@
"recentchangeslinked-page": "Naslov stranice:",
"recentchangeslinked-to": "Pokaži promjene stranica koji su povezane sa datom stranicom",
"recentchanges-page-added-to-category": "[[:$1]] dodana je u kategoriju",
- "recentchanges-page-added-to-category-bundled": "[[:$1]] i još {{PLURAL:$2|jedna stranica|$2 stranice|$2 stranica}} su dodane u kategoriju",
+ "recentchanges-page-added-to-category-bundled": "[[:$1]] i još [[Special:WhatLinksHere/$1|{{PLURAL:$2|jedna stranica|$2 stranice|$2 stranica}}]] su dodane u kategoriju",
"recentchanges-page-removed-from-category": "[[:$1]] je uklonjena iz kategorije",
"recentchanges-page-removed-from-category-bundled": "[[:$1]] i još {{PLURAL:$2|jedna stranica|$2 stranice|$2 stranica}} su uklonjene iz kategorije",
"autochange-username": "Automatska promjena MediaWikija",
@@ -1705,8 +1715,6 @@
"categories-submit": "Prikaži",
"categoriespagetext": "{{PLURAL:$1|SlijedeÄa kategorija sadrži|SlijedeÄe kategorije sadrže}} stranice ili multimedijalne datoteke.\n[[Special:UnusedCategories|NekoriÅ¡tene kategorije]] nisu prikazane ovdje.\nVidi takoÄer [[Special:WantedCategories|zatražene kategorije]].",
"categoriesfrom": "Prikaži kategorije poÄev od:",
- "special-categories-sort-count": "sortiranje po broju",
- "special-categories-sort-abc": "sortiraj po abecedi",
"deletedcontributions": "Obrisani doprinosi korisnika",
"deletedcontributions-title": "Obrisani doprinosi korisnika",
"sp-deletedcontributions-contribs": "doprinosi",
@@ -1815,7 +1823,7 @@
"wlshowlast": "Prikaži posljednjih $1 sati $2 dana",
"watchlist-hide": "Sakrij",
"watchlist-submit": "Prikaži",
- "wlshowtime": "Prikaži posljednjih:",
+ "wlshowtime": "Vremensko razdoblje za prikaz:",
"wlshowhideminor": "manje izmjene",
"wlshowhidebots": "botove",
"wlshowhideliu": "registrovane korisnike",
@@ -2315,11 +2323,7 @@
"import-logentry-upload-detail": "{{PLURAL:$1|Uvezena jedna revizija|Uvezene $1 revizije|Uvezeno $1 revizija}}",
"import-logentry-interwiki-detail": "{{PLURAL:$1|Uvezena $1 revizija|Uvezene $1 revizije|Uvezeno $1 revizija}} od $2",
"javascripttest": "Testiranje JavaScript-e",
- "javascripttest-pagetext-noframework": "Ova stranica je odreÄena za pokretanje JavaScript testova.",
- "javascripttest-pagetext-unknownframework": "Nepoznat radni okvir testiranja\"$1\".",
"javascripttest-pagetext-unknownaction": "Nepoznata radnja \"$1\".",
- "javascripttest-pagetext-frameworks": "Molimo Vas izaberite jednu od sljedeÄih testnih okvira: $1",
- "javascripttest-pagetext-skins": "Izaberite s kojom temom želite da pokrenete probu:",
"javascripttest-qunit-intro": "Pogledajte [$1 dokumentaciju za testiranje] na mediawiki.org.",
"tooltip-pt-userpage": "{{GENDER:|VaÅ¡a}} korisniÄka stranica",
"tooltip-pt-anonuserpage": "KorisniÄka stranica za ip koju Vi ureÄujete kao",
@@ -2359,7 +2363,7 @@
"tooltip-feed-rss": "RSS za ovu stranicu",
"tooltip-feed-atom": "Atom za ovu stranicu",
"tooltip-t-contributions": "Pogledajte spisak doprinosa {{GENDER:$1|ovog korisnika|ove korisnice|ove osobe}}",
- "tooltip-t-emailuser": "Pošaljite pismo ovom korisniku",
+ "tooltip-t-emailuser": "Pošaljite e-poruku {{GENDER:$1|ovom korisniku}}",
"tooltip-t-info": "Više informacija o ovoj stranici",
"tooltip-t-upload": "Postavi slike i druge medije",
"tooltip-t-specialpages": "Spisak svih posebnih stranica",
@@ -2573,8 +2577,8 @@
"exif-colorspace": "Prostor boje",
"exif-componentsconfiguration": "ZnaÄenje svake komponente",
"exif-compressedbitsperpixel": "NaÄin kompresije slike",
- "exif-pixelydimension": "Å irina slike",
- "exif-pixelxdimension": "Visina slike",
+ "exif-pixelxdimension": "Å irina slike",
+ "exif-pixelydimension": "Visina slike",
"exif-usercomment": "KorisniÄki komentari",
"exif-relatedsoundfile": "Povezana zvuÄna datoteka",
"exif-datetimeoriginal": "Datum i vrijeme generisanja podataka",
@@ -3075,7 +3079,6 @@
"version-libraries-description": "Opis",
"version-libraries-authors": "Autori",
"redirect": "Preusmjerenje na datoteku, korisnika, stranicu ili oznaku izmjene",
- "redirect-legend": "Preusmjeri na datoteku ili stranicu",
"redirect-summary": "Ova posebna stranica preusmjerava na datoteku (datog imena), stranicu (date oznake izmjene) ili korisniÄku stranicu (datog numeriÄkog identifikatora korisnika). Oznake se koriste na sljedeÄi naÄin: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]] ili [[{{#Special:Redirect}}/user/101]].",
"redirect-submit": "Idi",
"redirect-lookup": "Tip vrijednosti:",
@@ -3087,7 +3090,6 @@
"redirect-not-exists": "Vrijednost nije pronaÄena",
"fileduplicatesearch": "Pretraga duplikata",
"fileduplicatesearch-summary": "Pretraga za duplim datotekama na bazi njihove haš vrijednosti.",
- "fileduplicatesearch-legend": "Pretraga za dvojnicima",
"fileduplicatesearch-filename": "Ime datoteke:",
"fileduplicatesearch-submit": "Traži",
"fileduplicatesearch-info": "$1 Ã $2 piksel VeliÄina datoteke: $3 MIME vrsta: $4",
@@ -3185,7 +3187,7 @@
"tags-edit-revision-legend": "Dodaj ili ukloni oznake sa {{PLURAL:$1|ove verzije|svih $1 verzija}}",
"tags-edit-logentry-legend": "Dodaj ili ukloni oznake sa {{PLURAL:$1|ove zapisniÄke stavke|svih $1 zapisniÄkih stavki}}",
"tags-edit-existing-tags": "PostojeÄe oznake:",
- "tags-edit-existing-tags-none": "\"Nema\"",
+ "tags-edit-existing-tags-none": "Nema ",
"tags-edit-new-tags": "Nove oznake:",
"tags-edit-add": "Dodaj ove oznake:",
"tags-edit-remove": "Ukloni ove oznake:",
@@ -3195,7 +3197,7 @@
"tags-edit-reason": "Razlog:",
"tags-edit-revision-submit": "Primijeni izmjene {{PLURAL:$1|ovoj verziji|svim $1 verzijama}}",
"tags-edit-logentry-submit": "Primijeni izmjene {{PLURAL:$1|ovom zapisniÄkom unosu|svim $1 zapisniÄkim unosima}}",
- "tags-edit-success": "Izmjene su uspješno primijenjene.",
+ "tags-edit-success": "Izmjene su primijenjene.",
"tags-edit-failure": "Nije bilo moguÄe primijeniti izmjene:\n$1",
"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.",
diff --git a/languages/i18n/ca.json b/languages/i18n/ca.json
index 9ac9fb8ef3..754af74839 100644
--- a/languages/i18n/ca.json
+++ b/languages/i18n/ca.json
@@ -571,7 +571,10 @@
"botpasswords-label-grants": "Permisos aplicables:",
"botpasswords-label-restrictions": "Restriccions d'ús:",
"botpasswords-label-grants-column": "Concedit",
- "botpasswords-bad-appid": "",
+ "botpasswords-bad-appid": "El nom del bot «$1» no és và lid.",
+ "botpasswords-insert-failed": "No s'ha pogut afegir el nom del bot «$1». Ja hi estava afegit?",
+ "botpasswords-update-failed": "No s'ha pogut actualitzar el nom del bot «$1». Hi estava suprimit?",
+ "botpasswords-created-title": "S'ha creat la contrasenya del bot",
"resetpass_forbidden": "No poden canviar-se les contrasenyes",
"resetpass-no-info": "Heu d'estar registrats en un compte per a poder accedir directament a aquesta pà gina.",
"resetpass-submit-loggedin": "Canvia la contrasenya",
@@ -1340,7 +1343,7 @@
"recentchangeslinked-page": "Nom de la pà gina:",
"recentchangeslinked-to": "Mostra els canvis de les pà gines enllaçades amb la pà gina donada",
"recentchanges-page-added-to-category": "[[:$1]] afegida a la categoria",
- "recentchanges-page-added-to-category-bundled": "[[:$1]] i {{PLURAL:$2|una pà gina|$2 pà gines}} més afegides a la categoria",
+ "recentchanges-page-added-to-category-bundled": "[[:$1]] i [[Special:WhatLinksHere/$1|{{PLURAL:$2|una pà gina|$2 pà gines}}]] més afegides a la categoria",
"recentchanges-page-removed-from-category": "[[:$1]] treta de la categoria",
"recentchanges-page-removed-from-category-bundled": "[[:$1]] i {{PLURAL:$2|una pà gina|$2 pà gines}} més tretes de la categoria",
"autochange-username": "Canvi automà tic del MediaWiki",
@@ -1501,7 +1504,7 @@
"uploadstash-clear": "Esborra els fitxers en reserva",
"uploadstash-nofiles": "No teniu fitxers en reserva",
"uploadstash-badtoken": "No s'ha pogut realitzar l'acció, possiblement perquè han caducat la vostra identificació. Intenteu-ho de nou.",
- "uploadstash-errclear": "No s'ha pogut suprimir els fitxers.",
+ "uploadstash-errclear": "S'estan netejant els fitxers que han fallat.",
"uploadstash-refresh": "Actualitza la llista de fitxers",
"invalid-chunk-offset": "El desplaçament del fragment no és và lid",
"img-auth-accessdenied": "Accés denegat",
@@ -1762,9 +1765,11 @@
"apisandbox-dynamic-parameters": "Parà metres adicionals",
"apisandbox-dynamic-parameters-add-label": "Afegeix un parà metre:",
"apisandbox-dynamic-parameters-add-placeholder": "Nom del parà metre",
+ "apisandbox-deprecated-parameters": "Parà metres obsolets",
+ "apisandbox-submit-invalid-fields-title": "Alguns camps no són và lids",
"apisandbox-results": "Resultats",
"apisandbox-request-url-label": "Sol·licita URL:",
- "apisandbox-request-time": "Temps de sol·licitud: $1",
+ "apisandbox-request-time": "Temps de sol·licitud: {{PLURAL:$1|$1 ms}}",
"booksources": "Obres de referència",
"booksources-search-legend": "Cerca fonts de llibres",
"booksources-isbn": "ISBN:",
@@ -1804,8 +1809,6 @@
"categories-submit": "Mostra",
"categoriespagetext": "{{PLURAL:$1|La següent categoria conté|Les següents categories contenen}} pà gines, o fitxers multimèdia.\n[[Special:UnusedCategories|Les categories no usades]] no s'hi mostren.\nVegeu també [[Special:WantedCategories|les categories sol·licitades]].",
"categoriesfrom": "Mostra les categories que comencen a:",
- "special-categories-sort-count": "ordena per recompte",
- "special-categories-sort-abc": "ordena alfabèticament",
"deletedcontributions": "Contribucions esborrades",
"deletedcontributions-title": "Contribucions esborrades",
"sp-deletedcontributions-contribs": "contribucions",
@@ -1901,10 +1904,10 @@
"watchlistanontext": "Inicieu una sessió per a visualitzar o modificar elements de la vostra llista de seguiment.",
"watchnologin": "No heu iniciat la sessió",
"addwatch": "Afegeix a llista de seguiment",
- "addedwatchtext": "S'ha afegit la pà gina \"[[:$1]]\" a la vostra [[Special:Watchlist|llista de seguiment]].\nS'hi mostraran els canvis futurs que tinguin lloc en aquesta pà gina i la corresponent discussió.",
+ "addedwatchtext": "S'ha afegit «[[:$1]]» i la seva pà gina de discussió a la vostra [[Special:Watchlist|llista de seguiment]].",
"addedwatchtext-short": "Sâha afegit la pà gina «$1» a la vostra llista de seguiment.",
"removewatch": "Treu de la llista de seguiment",
- "removedwatchtext": "S'ha tret la pà gina «[[:$1]]» de la vostra [[Special:Watchlist|llista de seguiment]].",
+ "removedwatchtext": "S'ha tret «[[:$1]]» i la seva pà gina de discussió de la vostra [[Special:Watchlist|llista de seguiment]].",
"removedwatchtext-short": "Sâha tret la pà gina «$1» de la vostra llista de seguiment.",
"watch": "Vigila",
"watchthispage": "Vigila aquesta pà gina",
@@ -1919,6 +1922,7 @@
"wlshowlast": "Mostra les darreres $1 hores, els darrers $2 dies",
"watchlist-hide": "Amaga",
"watchlist-submit": "Mostra",
+ "wlshowtime": "PerÃode de temps per mostrar:",
"wlshowhideminor": "edicions menors",
"wlshowhidebots": "bots",
"wlshowhideliu": "usuaris registrats",
@@ -1992,6 +1996,7 @@
"changecontentmodel-title-label": "TÃtol de la pà gina",
"changecontentmodel-model-label": "Nou model de contingut",
"changecontentmodel-reason-label": "Motiu:",
+ "changecontentmodel-submit": "Canvia",
"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.",
@@ -2153,7 +2158,7 @@
"unblock": "Desblocatge d'usuaris",
"blockip": "Bloca {{GENDER:$1|l'usuari|la usuà ria}}",
"blockip-legend": "Bloca l'usuari",
- "blockiptext": "Empreu el següent formulari per blocar l'accés\nd'escriptura des d'una adreça IP especÃfica o des d'un usuari determinat.\naixò només s'hauria de fer per prevenir el vandalisme, i\nd'acord amb la [[{{MediaWiki:Policy-url}}|polÃtica del projecte]].\nEmpleneu el dià leg de sota amb un motiu especÃfic (per exemple, citant\nquines pà gines en concret estan sent vandalitzades).",
+ "blockiptext": "Empreu el següent formulari per blocar l'accés\nd'escriptura des d'una adreça IP especÃfica o des d'un usuari determinat.\naixò només s'hauria de fer per prevenir el vandalisme, i\nd'acord amb la [[{{MediaWiki:Policy-url}}|polÃtica del projecte]].\nEmpleneu el dià leg de sota amb un motiu especÃfic (per exemple, citant\nquines pà gines en concret estan sent vandalitzades).\nPodeu blocar uns rangs d'adreces IP fent servir la sintaxi [https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing CIDR]. El rang superior permès és /$1 per a IPv4 i /$2 per a IPv6.",
"ipaddressorusername": "Adreça IP o nom de l'usuari",
"ipbexpiry": "Venciment",
"ipbreason": "Motiu:",
@@ -2421,11 +2426,7 @@
"import-logentry-upload-detail": "$1 {{PLURAL:$1|revisió|revisions}} importades",
"import-logentry-interwiki-detail": "$1 {{PLURAL:$1|revisió|revisions}} importades de $2",
"javascripttest": "Proves de JavaScript",
- "javascripttest-pagetext-noframework": "Es reserva la pà gina per a l'execució de tests amb JavaScript.",
- "javascripttest-pagetext-unknownframework": "L'entorn de proves «$1» és desconegut.",
"javascripttest-pagetext-unknownaction": "Acció desconeguda «$1».",
- "javascripttest-pagetext-frameworks": "Trieu un dels següents entorns de prova: $1",
- "javascripttest-pagetext-skins": "Trieu un tema per a executar-hi els tests:",
"javascripttest-qunit-intro": "Consulteu la [documentació de tests de $1] a mediawiki.org.",
"tooltip-pt-userpage": "{{GENDER:|La vostra}} pà gina d'usuari",
"tooltip-pt-anonuserpage": "La pà gina d'usuari per la ip que utilitzeu",
@@ -2465,7 +2466,7 @@
"tooltip-feed-rss": "Canal RSS d'aquesta pà gina",
"tooltip-feed-atom": "Canal Atom d'aquesta pà gina",
"tooltip-t-contributions": "Llista de les contribucions d'{{GENDER:$1|aquest usuari|aquesta usuà ria}}",
- "tooltip-t-emailuser": "Envia un correu en aquest usuari.",
+ "tooltip-t-emailuser": "Envia un correu a {{GENDER:$1|aquest usuari|aquesta usuà ria}}",
"tooltip-t-info": "Més informació sobre aquesta pà gina",
"tooltip-t-upload": "Carregueu fitxers",
"tooltip-t-specialpages": "Llista de totes les pà gines especials",
@@ -2516,7 +2517,7 @@
"lastmodifiedatby": "Aquesta pà gina s'ha modificat per darrera vegada el dia $1 a les $2 per $3.",
"othercontribs": "Basat en les contribucions de $1.",
"others": "altres",
- "siteusers": "Usuari{{PLURAL:$2||s}} $1 de {{SITENAME}}",
+ "siteusers": "{{PLURAL:$2|{{GENDER:$1|L'usuari|La usuà ria}}|{{GENDER:$1|Els usuaris|Les usuà ries}}}} $1 de {{SITENAME}}",
"anonusers": "$1, {{PLURAL:$2|usuari anònim|usuaris anònims}} de {{SITENAME}}",
"creditspage": "Crèdits de la pà gina",
"nocredits": "No hi ha tÃtols disponibles per aquesta pà gina.",
@@ -2628,6 +2629,7 @@
"newimages-legend": "Nom del fitxer",
"newimages-label": "Nom de fitxer (o part d'ell):",
"newimages-showbots": "Mostra les cà rregues dels bots",
+ "newimages-hidepatrolled": "Amaga les cà rregues patrullades",
"noimages": "Res per veure.",
"ilsubmit": "Cerca",
"bydate": "per data",
@@ -2711,8 +2713,8 @@
"exif-colorspace": "Espai de color",
"exif-componentsconfiguration": "Significat de cada component",
"exif-compressedbitsperpixel": "Mode de compressió d'imatge",
- "exif-pixelydimension": "Amplada de la imatge",
- "exif-pixelxdimension": "Alçada de la imatge",
+ "exif-pixelxdimension": "Amplada de la imatge",
+ "exif-pixelydimension": "Alçada de la imatge",
"exif-usercomment": "Comentaris de l'usuari",
"exif-relatedsoundfile": "Fitxer d'Ã udio relacionat",
"exif-datetimeoriginal": "Dia i hora de generació de les dades",
@@ -3157,7 +3159,6 @@
"version-libraries-description": "Descripció",
"version-libraries-authors": "Autors",
"redirect": "Redirigeix per fitxer, usuari, pà gina o ID de la revisió",
- "redirect-legend": "Redirigeix a un fitxer o a una pà gina",
"redirect-summary": "Aquesta pà gina especial redirigeix a un fitxer (donat el nom del fitxer), una pà gina (donats un ID de la revisió o un ID de pà gina), o a una pà gina d'usuari (donat un ID numèric d'usuari). Ãs: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], or [[{{#Special:Redirect}}/user/101]].",
"redirect-submit": "Vés-hi",
"redirect-lookup": "Consulta:",
@@ -3169,7 +3170,6 @@
"redirect-not-exists": "No s'ha trobat el valor",
"fileduplicatesearch": "Cerca fitxers duplicats",
"fileduplicatesearch-summary": "Cerca fitxers duplicats d'acord amb el seu valor de resum.",
- "fileduplicatesearch-legend": "Cerca duplicats",
"fileduplicatesearch-filename": "Nom del fitxer:",
"fileduplicatesearch-submit": "Cerca",
"fileduplicatesearch-info": "$1 Ã $2 pÃxels Mida del fitxer: $3 Tipus MIME: $4",
@@ -3480,7 +3480,7 @@
"expand_templates_generate_xml": "Mostra l'arbre XML",
"expand_templates_generate_rawhtml": "Mostra l'HTML sense filtrar",
"expand_templates_preview": "Previsualitza",
- "expand_templates_preview_fail_html": "Atès que {{SITENAME}} té HTML cru i hi ha hagut una pèrdua de dades de la sessió, s'ha amagat la vista prèvia com a mesura de precaució contra atacs en JavaScript. \n\nSi això és un intent de previsualització legÃtim, torneu-ho a provar. \nSi encara no funciona, intenteu [[Special:UserLogout|finalitzar la sessió]] i iniciar-la de nou.",
+ "expand_templates_preview_fail_html": "Atès que {{SITENAME}} té HTML cru habilitat i s'ha produït una pèrdua de dades de la sessió, s'ha amagat la vista prèvia com a mesura de precaució contra atacs en JavaScript. \n\nSi això és un intent de previsualització legÃtim, torneu-ho a provar. \nSi encara no funciona, intenteu [[Special:UserLogout|finalitzar la sessió]] i comproveu si el vostre navegador permet galetes d'aquest lloc.",
"expand_templates_preview_fail_html_anon": "Atès que {{SITENAME}} té l'HTML cru habilitat i no heu iniciat una sessió, s'ha amagat la previsualització com a prevenció d'atacs en JavaScript. \n\nSi això és un intent de previsualització legÃtim, [[Special:UserLogin|inicieu una sessió]] i torneu-ho a provar. ",
"expand_templates_input_missing": "Cal que proporcioneu al menys algun text d'entrada.",
"pagelanguage": "Canvia l'idioma de la pà gina",
@@ -3493,7 +3493,7 @@
"action-pagelang": "canvia l'idioma de la pà gina",
"log-name-pagelang": "Registre de canvi de llengua",
"log-description-pagelang": "Aquest és un registre dels canvis en les llengües de les pà gines.",
- "logentry-pagelang-pagelang": "$1 {{GENDER:$2|ha canviat}} la llengua de la pà gina per a $3 de $4 a $5.",
+ "logentry-pagelang-pagelang": "$1 {{GENDER:$2|ha canviat}} la llengua de $3 de $4 a $5",
"default-skin-not-found": "Ãndia! L'aparença per defecte per al wiki, definit en $wgDefaultSkin
com $1
, no està disponible.\n\nLa vostra instal·lació sembla que inclou les següents aparences. Consulteu [https://www.mediawiki.org/wiki/Manual:Skin_configuration Manual: Configuració d'aparences] per a la informació de com habilitar-les i triar-ne el valor per defecte.\n\n$2\n\n; Si heu acabat d'instal·lar MediaWiki:\n: Probablement l'instal·là veu des de git, o directament des del codi font utilitzant algun altre mètode. Això és l'esperat. Intenteu instal·lar algunes aparences des del [https://www.mediawiki.org/wiki/Category:All_skins directori d'aparences de mediawiki.org], per:\n: * Descarregar l'[https://www.mediawiki.org/wiki/Download instal·lador tarball], que ve amb diverses aparences i ampliacions. Podeu copiar i enganxar el directori skins/
des d'aquÃ.\n: * Clonar un dels repositoris mediawiki/skins/*
a través de git en el directori skins/
de la vostra instal·lació de MediaWiki.\n: Fent això no s'hauria d'interferir amb el vostre dipòsit git si sou un desenvolupador de MediaWiki.\n\n; Si només heu actualitzat MediaWiki:\n: Per MediaWiki 1.24 i posteriors ja no permet aparences instal·lades automà ticament (consulteu [https://www.mediawiki.org/wiki/Manual:Skin_autodiscovery Manual: Aparences autodiscovery]). Podeu enganxar les lÃnies següents en LocalSettings.php
per permetre totes les aparences instal·lades actualment:\n\n$3 \n\n; Si només heu modificat LocalSettings.php
:\n: Reviseu els noms de l'aparença per errors tipogrà fics.",
"default-skin-not-found-no-skins": "Ãndia! L'aparença per defecte pel vostre wiki, definida a $wgDefaultSkin
com $1
, no està disponible.\n\nNo teniu cap aparença instal·lada.\n\n\n; Si heu acabat d'instal·lar o actualitzar MediaWiki:\n: Probablement l'heu instal·lat des de git, o directament des del codi font utilitzant algun altre mètode. Això és l'esperat. Per MediaWiki 1.24 i posteriors ja no s'inclouen aparences en el repositori principal. Proveu d'instal·lar algunes aparences des del [https://www.mediawiki.org/wiki/Category:All_skins directori d'aparences de mediawiki.org] per:\n: * Descarregar l'[https://www.mediawiki.org/wiki/Download instal·lador ''tarball''], que ve amb diverses aparences i extensions. Podeu copiar i enganxar el directori skins/
des d'aquÃ.\n: * Clonar un dels repositoris mediawiki/skins/*
a través de git en el directori skins/
de la vostra instal·lació de MediaWiki.\n: Fent això no s'hauria d'interferir amb el vostre repositori de git si sou un desenvolupador de MediaWiki. Consulteu [https://www.mediawiki.org/wiki/Manual:Skin_configuration Manual:Skin configuration] per a més informació sobre com permetre aparences i triar-ne per defecte.",
"default-skin-not-found-row-enabled": "* $1
/ $2 (habilitat)",
@@ -3532,6 +3532,7 @@
"special-characters-group-ipa": "AFI",
"special-characters-group-symbols": "SÃmbols",
"special-characters-group-greek": "Grec",
+ "special-characters-group-greekextended": "Grec estès",
"special-characters-group-cyrillic": "CirÃl·lic",
"special-characters-group-arabic": "Arà bic",
"special-characters-group-arabicextended": "Arà bic estès",
@@ -3555,7 +3556,29 @@
"mw-widgets-titleinput-description-new-page": "la pà gina no existeix encara",
"mw-widgets-titleinput-description-redirect": "redirigeix a $1",
"api-error-blacklisted": "Trieu un tÃtol diferent, més descriptiu.",
+ "sessionmanager-tie": "No es poden combinar diferents tipus de sol·licituds d'autenticació: $1.",
"sessionprovider-generic": "$1 sessions",
"sessionprovider-mediawiki-session-cookiesessionprovider": "sessions basades en galetes",
- "sessionprovider-nocookies": "Pot ser que les galetes estiguin inhabilitades. Assegureu-vos que teniu les galetes habilitades i inicieu de nou."
+ "sessionprovider-nocookies": "Pot ser que les galetes estiguin inhabilitades. Assegureu-vos que teniu les galetes habilitades i inicieu de nou.",
+ "randomrootpage": "Pà gina arrel aleatòria",
+ "log-action-filter-block": "Tipus de blocatge:",
+ "log-action-filter-delete": "Tipus de supressió:",
+ "log-action-filter-patrol": "Tipus de patrullatge:",
+ "log-action-filter-protect": "Tipus de protecció:",
+ "log-action-filter-upload": "Tipus de cà rrega:",
+ "log-action-filter-all": "Tota",
+ "log-action-filter-block-block": "Bloca",
+ "log-action-filter-block-reblock": "Bloca la modificació",
+ "log-action-filter-block-unblock": "Desbloca",
+ "log-action-filter-delete-delete": "Supressió de pà gines",
+ "log-action-filter-delete-restore": "Restauració de pà gines",
+ "log-action-filter-delete-event": "Registre de supressió",
+ "log-action-filter-delete-revision": "Supressió de revisions",
+ "log-action-filter-patrol-patrol": "Patrullatge manual",
+ "log-action-filter-patrol-autopatrol": "Patrullatge automà tic",
+ "log-action-filter-protect-protect": "Protecció",
+ "log-action-filter-protect-modify": "Modificació de la protecció",
+ "log-action-filter-protect-unprotect": "Desprotecció",
+ "log-action-filter-upload-upload": "Nova cà rrega",
+ "log-action-filter-upload-overwrite": "Torna a carregar"
}
diff --git a/languages/i18n/ce.json b/languages/i18n/ce.json
index c4acdf4aaf..e00c4a5850 100644
--- a/languages/i18n/ce.json
+++ b/languages/i18n/ce.json
@@ -10,7 +10,8 @@
"ìë¼",
"Kaganer",
"ÐÑмаил СадÑев",
- "Macofe"
+ "Macofe",
+ "Nemo bis"
]
},
"tog-underline": "ÐÓел Ñиз Ñ
ÑакÑ
а Ñ
ÑажоÑган:",
@@ -1187,7 +1188,7 @@
"recentchangeslinked-page": "ÐгÓон ÑÓе:",
"recentchangeslinked-to": "ÐÑ
еÑÑ Ð°Ð³ÓоÑ, гайÑа Ñ
ийÑÐ°Ð¼Ð°Ñ Ð°Ð³ÓонаÑÑа, Ñ
ÓоÑÑийнаÑÑ Ð°Ð³ÓонÑÓе Ñ
ÑажоÑг йолÑÑ",
"recentchanges-page-added-to-category": "[[:$1]] каÑегоÑи ÑÑ ÑоÑÑ
на",
- "recentchanges-page-added-to-category-bundled": "[[:$1]] а, {{PLURAL:$2|ÑÑ
Ñа агÓо|$2 агÓо}} а каÑегоÑин ÑÓеÑоÑÑ
на",
+ "recentchanges-page-added-to-category-bundled": "[[:$1]] а, [[Special:WhatLinksHere/$1|{{PLURAL:$2|ÑÑ
Ñа агÓо|$2 агÓо}}]] а каÑегоÑин ÑÓеÑоÑÑ
на",
"recentchanges-page-removed-from-category": "[[:$1]] дÓаÑÑккÑ
ина каÑегоÑи ÑÑÑа",
"recentchanges-page-removed-from-category-bundled": "[[:$1]] а, {{PLURAL:$2|ÑÑ
Ñа агÓо|$2 агÓо}} а каÑегоÑин ÑÑÑа дÓаÑÑккÑ
ина",
"autochange-username": "MediaWiki авÑо-Ñ
ийÑамбаÑ",
@@ -1570,8 +1571,6 @@
"categories-submit": "ÐайÑа",
"categoriespagetext": "{{PLURAL:$1|1=ÐаÑ
аÑа каÑегоÑÐµÑ ÑоÑ
Ñ Ñ|ÐаÑ
аÑа каÑегоÑÐµÑ ÑоÑ
Ñ Ñ}} агÓÐ¾Ð½Ð°Ñ Ñ Ð¼ÐµÐ´Ð¸Ð°-ÑайлаÑ.\nÐÑ
ÑзаÑ
Ñ Ð³Ð¾Ð¹ÑÑÑ ÑÑ [[Special:UnusedCategories|Ð»ÐµÐ»Ð¾Ñ Ð¹Ð¾ÑÑ ÐºÐ°ÑегоÑеÑ]].\nÐÑ
ин дÓа [[Special:WantedCategories| Ñ
ийла еза каÑегоÑеÑ]].",
"categoriesfrom": "ÐÑÑé ÑÑ
а каÑегоÑеÑ, ÑÓеÑа:",
- "special-categories-sort-count": "ниÑÑе дÑкÑ
аллиÑа",
- "special-categories-sort-abc": "ниÑÑе абаÑÑа",
"deletedcontributions": "ÐекÑаÑÑ
оÑÑн дÓабÑккÑ
ина кÑинÑ
Ñегам",
"deletedcontributions-title": "ÐÓабаÑккÑ
ина кÑинÑ
Ñегам",
"sp-deletedcontributions-contribs": "кÑинÑ
Ñегам",
@@ -2318,8 +2317,8 @@
"exif-colorspace": "ÐеÑнаÑан Ñ
Ñал",
"exif-componentsconfiguration": "ÐеÑаÑа компоненÑин конÑигÑÑаÑи",
"exif-compressedbitsperpixel": "ÐеÑан кIоÑгалла даÑдина ÑÑл ÑÓеÑ
Ñа",
- "exif-pixelydimension": "СÑÑÑÑан ÑоÑалла",
- "exif-pixelxdimension": "СÑÑÑÑан локÑ
алла",
+ "exif-pixelxdimension": "СÑÑÑÑан ÑоÑалла",
+ "exif-pixelydimension": "СÑÑÑÑан локÑ
алла",
"exif-usercomment": "ÐÑ
ин ÑÓе кÑамел",
"exif-relatedsoundfile": "ÐÑамелан аÑзнийн Ñайл",
"exif-datetimeoriginal": "ÐÑÑÑ
Ñ
ÑаÑлеÑа ÑеÑаÑ
Ñ Ð° Ñ
ан",
@@ -2632,7 +2631,6 @@
"version-libraries-description": "ЦÑÑнаÑ
лаÑÑна",
"version-libraries-authors": "ÐвÑоÑаÑ",
"redirect": "ÐекÑаÑÑ
оÑÑн Ñайлан ÑÓеÑа дÓаÑÑ
ÑажоÑ",
- "redirect-legend": "Файлан Ñ Ð°Ð³Óона ÑÓеÑа дÓаÑÑ
ÑажоÑ",
"redirect-summary": "Ð¥ÓаÑа агÓо лело Ð¹Ð¸Ñ Ñ Ñайлан Ñ Ð°Ð³Óона ÑÓеÑа дÓаÑÑ
ÑажоÑ.",
"redirect-submit": "ÐеÑ
Ñа гÓо",
"redirect-lookup": "ÐаÑ
аÑ:",
@@ -2645,7 +2643,6 @@
"redirect-not-exists": "ÐаÑÓна ÑакаÑий",
"fileduplicatesearch": "ÐаÑ
а ÑÑ
ÑаÑеÑÑа Ð¹Ð¾Ð»Ñ ÑайлаÑ",
"fileduplicatesearch-summary": "Ð¥ÑÑ-кодаÑа ÑÑ
ÑаÑеÑÑа ÑÐ°Ð¹Ð»Ð°Ñ Ð»Ð°Ñ
аÑ.",
- "fileduplicatesearch-legend": "ЦÑ
ÑаÑеÑÑа еÑÑ Ð»Ð°Ñ
аÑ",
"fileduplicatesearch-filename": "Файлан ÑÓе:",
"fileduplicatesearch-submit": "ÐаÑ
аÑ",
"fileduplicatesearch-info": "$1 à $2 пикÑÐµÐ»Ñ Ð¤Ð°Ð¹Ð»Ð°Ð½ баÑам: $3 MIME-Ñайп: $4",
@@ -2681,7 +2678,7 @@
"tags-hitcount-header": "Ðилгалдина ниÑдаÑÑ",
"tags-actions-header": "ÐийÑаÑ",
"tags-active-yes": "Ð¥ÓаÑ",
- "tags-active-no": "Ð¥ÓаÑ
Óа",
+ "tags-active-no": "Ð¥Óан-Ñ
Óа",
"tags-source-extension": "Ðилгалйо ÑоÑалиÑа",
"tags-source-none": "ÐÑ
ий Ð»ÐµÐ»Ð¾Ñ ÑÑ",
"tags-edit": "ниÑÑе",
@@ -2789,6 +2786,7 @@
"logentry-newusers-create2": "$1 {{GENDER:$2|кÑ
оÑллина}} декÑаÑÑ
оÑÑн дÓаÑÐ·Ð´Ð°Ð¿Ñ $3",
"logentry-newusers-byemail": "$1 {{GENDER:$2|кÑ
оÑллина}} декÑаÑÑ
оÑÑн дÓаÑÐ·Ð´Ð°Ñ $3 паÑÐ¾Ð»Ñ ÑлекÑÑонан поÑÑе ÑÑ
ÑийÑина",
"logentry-newusers-autocreate": "ÐвÑомаÑиÑеÑки кÑ
оÑллина {{GENDER:$2|декÑаÑÑ
оÑÑн}} $1 дÓаÑздаÑ",
+ "logentry-protect-move_prot": "{{GENDER:$2|ÐекÑаÑÑ
о}} $1 $4 агÓона ÑÓеÑа лаÑÑÑÑ $3 агÓона ÑÓе даÑккÑ
ина",
"logentry-protect-unprotect": "$1 â $3 ÑÓеÑа лаÑÑÑÑ {{GENDER:$2|дÓадаÑккÑ
ина}}",
"logentry-protect-protect": "$1 {{GENDER:$2|лаÑйина}} $3 $4",
"logentry-protect-protect-cascade": "$1 {{GENDER:$2|лаÑйина}} $3 $4 [каÑкадан]",
diff --git a/languages/i18n/ckb.json b/languages/i18n/ckb.json
index 80d65d6ff2..696fffe5a9 100644
--- a/languages/i18n/ckb.json
+++ b/languages/i18n/ckb.json
@@ -25,6 +25,7 @@
"tog-hideminor": "دÛستکارÛÛÛ Ø¨ÚÙÙÚ©Ûکا٠ÙÛ Ø¯ÙاÛÛÙ Ú¯ÛÚاÙکارÛÛÛکاÙدا بشارÛÙÛ",
"tog-hidepatrolled": "ÙÛ Ø¯ÙاÛÛÙ Ú¯ÛÚاÙکارÛÛÛکاÙدا دÛستکارÛÛÛ Ù¾Ø§Ø³ دراÙÛکا٠بشارÛÙÛ",
"tog-newpageshidepatrolled": "ÙÛ Ù¾ÛØ±Ø³ØªÛ Ù¾ÛÚÛ ÙÙÛکاÙدا Ù¾ÛÚÛ Ù¾Ø§Ø³ دراÙÛکا٠بشارÛÙÛ",
+ "tog-hidecategorization": "شاردÙÛÙÛÛ Ù¾ÛÙÛÙکردÙÛ Ù¾ÛÚÛکاÙ",
"tog-extendwatchlist": "ÙÛØ³ØªÛ ÚاÙدÛØ±Û Ø¯Ø±ÛÚبکÛرÛÙÛ Ø¨Û ÙÛشا٠داÙÛ Ú¾ÛÙ
ÙÙ Ú¯ÛÚاÙکارÛÛÛکاÙØ ÙÛÚ© تÛÙھا دÙاÛÛÙÛکاÙ.",
"tog-usenewrc": "Ú¯ÛÚاÙکارÛÛÛکا٠ÙÛ Ø¯ÙاÛÛÙ Ú¯ÛÚاÙکارÛÛÛکا٠٠پÛØ±Ø³ØªÛ ÚاÙدÛرÛدا بÛÙ¾ÛÛ Ù¾ÛÚÛ Ù¾ÛÙÛ٠بکÛ",
"tog-numberheadings": "ÚÙ
ارÛکردÙÛ Ø®ÛÚ¯ÛÚÛ Ø³ÛردÛÚÛکاÙ",
@@ -53,6 +54,7 @@
"tog-watchlisthideliu": "دÛستکارÛÛÛکاÙÛ Ø¦Û٠بÛکارÙÛÙÛراÙÛÛ ÙÛ ÚÙÙرÛÙÛ٠بشارÛÙÛ ÙÛ ÙÛØ³ØªÛ ÚاÙدÛرÛ",
"tog-watchlisthideanons": "دÛستکارÛÛÛکاÙÛ Ø¨ÛکارÙÛÙÛØ±Û ÙÛÙاسراÙÛکا٠ÙÛ ÙÛØ³ØªÛ ÚاÙدÛرÛدا بشارÛÙÛ",
"tog-watchlisthidepatrolled": "ÙÛ Ù¾ÛØ±Ø³ØªÛ ÚاÙدÛرÛÛÛکاÙدا دÛستکارÛÛÛ Ù¾Ø§Ø³ دراÙÛکا٠بشارÛÙÛ",
+ "tog-watchlisthidecategorization": "شاردÙÛÙÛÛ Ù¾ÛÙÛÙکردÙÛ Ù¾ÛÚÛکاÙ",
"tog-ccmeonemails": "Ú©ÛÙ¾ÛÛÛÚ© ÙÛ٠ئÛÙ
ÛÛÙاÙÛ Ú©Û Ø¨Û Ø¨ÛکارھÛÙÛراÙÛ ØªØ± دÛÙÛرÙ
Ø¨Û Ø®ÛØ´Ù
بÙÛرÛ",
"tog-diffonly": "ÙاÙÛرÛÚ©Û Ù¾ÛÚÛ ÙÛ ÚÛرÛÙÛÛ Ø¬ÛاÙازÛÛÛکاÙدا ÙÛشا٠Ù
ÛدÛ",
"tog-showhiddencats": "Ù¾ÛÙÛ Ø´Ø§Ø±Ø¯Ø±Ø§ÙÛکا٠ÙÛشا٠بدÛ",
@@ -129,6 +131,8 @@
"october-date": "$1Û ØªØ´Ø±ÛÙÛ ÛÛÚ©ÛÙ
",
"november-date": "$1Û ØªØ´Ø±ÛÙÛ Ø¯ÙÙÛÙ
",
"december-date": "$1Û Ú©Ø§ÙÙÙÙÛ ÛÛÚ©ÛÙ
",
+ "period-am": "Ù¾ÛØ´ ÙÛÙÛÚÛ",
+ "period-pm": "پاش ÙÛÙÛÚÛ",
"pagecategories": "{{PLURAL:$1|Ù¾ÛÙ|Ù¾ÛÙÛکاÙ}}",
"category_header": "Ù¾ÛÚÛکاÙÛ Ù¾ÛÙÛ Â«$1»",
"subcategories": "ÚÛرپÛÙÛکاÙ",
@@ -155,7 +159,7 @@
"morenotlisted": "ئÛÙ
ÙÛستÛÛÛ ØªÛÙا٠ÙÛÛÛ",
"mypage": "Ù¾ÛÚÛ",
"mytalk": "ÙÛدÙاÙ",
- "anontalk": "ÙÛدÙØ§Ù Ø¨Û Ø¦ÛÙ
ئاÛÙ¾ÛÛÛ",
+ "anontalk": "ÙÛدÙاÙ",
"navigation": "ÚÛدÛزÛ",
"and": " Ù",
"qbfind": "بدÛزÛرÛÙÛ",
@@ -475,6 +479,11 @@
"retypenew": "تÛÙ¾ÛÚÙØ´ÛÛ ÙÙÛ Ø¯ÙØ¨Ø§Ø±Û Ø¨ÙÙÙسÛÙÛ:",
"resetpass_submit": "تÛÙ¾ÛÚÙØ´Û Ø±ÛÚ©Ø®Û Ù Ø¨ÚÛ ÚÙÙرÛÙÛ",
"changepassword-success": "تÛÙ¾ÛرÙØ´ÛÚ©Ûت Ø¨Û Ø³ÛرکÛÙتÙÙÛÛ Ú¯ÛÚدرا!",
+ "botpasswords-label-create": "درÙستکردÙ",
+ "botpasswords-label-update": "ÙÙÛکردÙÛÙÛ",
+ "botpasswords-label-cancel": "Ú¾ÛÚµÙÛشاÙدÙÛÙÛ",
+ "botpasswords-label-delete": "سÚÛÙÛÙÛ",
+ "botpasswords-label-resetpassword": "ÚÛکخستÙÛÙÛÛ ØªÛÙ¾ÛÚÙØ´Û",
"resetpass_forbidden": "تÛÙ¾ÛÚÙØ´ÛÚ©Û ÙاگÛÚدرÛت",
"resetpass-no-info": "Ø¨Û Ú¯ÛÛشتÙÛ Ø±Ø§Ø³ØªÛÙØ®Û Ø¨ÛÙ
Ù¾ÛÚÛ Ø¦ÛØ´Û Ø¨ÚÛØªÛ ÚÙÙرÛÙÛ.",
"resetpass-submit-loggedin": "تÛÙ¾ÛÚÙØ´Û Ø¨Ú¯ÛÚÛ",
@@ -1094,7 +1103,9 @@
"rcshowhidemine": "دÛستکارÛÛÛکاÙÙ
$1",
"rcshowhidemine-show": "ÙÛشا٠بدÛ",
"rcshowhidemine-hide": "بشارÛÙÛ",
+ "rcshowhidecategorization": "$1 Ù¾ÛÙÛÙکردÙÛ Ù¾ÛÚÛ",
"rcshowhidecategorization-show": "ÙÛشاÙÛ Ø¨Ø¯Û",
+ "rcshowhidecategorization-hide": "شاردراÙÛ",
"rclinks": "دÙاÛÛÙ $1 Ú¯ÛÚاÙکارÛÛ $2 ÚÛÚÛ ÚابردÙÙ ÙÛØ´Ø§Ù Ø¨Ø¯Û $3",
"diff": "جÛاÙازÛ",
"hist": "Ù
ÛÚÙÙ",
@@ -1194,6 +1205,7 @@
"upload-misc-error-text": "ÙÛÚµÛÛÛÚ©Û ÙÛÙاسرا٠ÙÛ Ú©Ø§ØªÛ Ø¨Ø§Ø±Ú©Ø±Ø¯Ù ÚÙÙÛâدا.\nتکاÛÛ ÙÛ Ø¯Ø±ÙÙستâبÙÙ٠٠دÛستâÙ¾Û Ú¯ÛÛشتÙÛ URL ئÛرخÛÛØ§Ù Ø¨Ø¨Û Ù Ø¯Ûسا٠تاÙÛâبکÛÙÛ.\nÚ¯Ûر Ú©ÛØ´ÛÚ©Û ÙÛر بÛردÛÙاÙ
بÙÙ Ù¾ÛÛÙÛÙØ¯Û Ø¨Ú©Û Ø¨Û [[Special:ListUsers/sysop|بÛÚÛÙبÛر]].",
"upload-too-many-redirects": "URL ÚÛÙاÙÛÚ©ÛØ±Û Ø²ÛØ±Û ÙÛØ®Û Ú¯Ø±ØªÙÙÛ",
"upload-http-error": "ÙÛÚµÛÛÛÚ©Û HTTP ÚÙÙئ داÙÛ: $1",
+ "upload-dialog-button-upload": "بارکردÙ",
"backend-fail-stream": "ÙÛکرا Ù¾ÛÚÚ¯ÛÛ $1 بÙÛردرÛت.",
"backend-fail-notexists": "Ù¾ÛÚÚ¯ÛÛ $1 بÙÙÙÛ ÙÛÛÛ.",
"backend-fail-delete": "ÙÛکرا Ù¾ÛÚÚ¯ÛÛ $1 بسÚدرÛتÛÙÛ.",
@@ -1365,6 +1377,7 @@
"mostrevisions": "Ù¾ÛÚÛÚ©Ø§Ù Ø¨Û Ø²ÛرترÛÙ Ù¾ÛداÚÙÙÙÛÙÛکاÙ",
"prefixindex": "Ú¾ÛÙ
ÙÙ Ù¾ÛÚÛÚ©Ø§Ù Ø¨Û Ù¾ÛشگرÛÙÛ",
"prefixindex-namespace": "ÙÛÙ
ÙÙ Ù¾ÛÚÛکا٠بÛÙ¾ÛØ´Ú¯Ø±Û (بÛشاÛÛ ÙاÙÛ $1)",
+ "prefixindex-submit": "ÙÛشاÙداÙ",
"prefixindex-strip": "Ù¾ÛØ´Ú¯Ø±Û Ùا٠پÛرست بÙرتÛÙÛ",
"shortpages": "Ù¾ÛÚÛ Ú©ÙرتÛکاÙ",
"longpages": "Ù¾ÛÚÛ Ø¯Ø±ÛÚÛکاÙ",
@@ -1387,6 +1400,7 @@
"usereditcount": "$1 {{PLURAL:$1|دÛستکارÛ|دÛستکارÛ}}",
"usercreated": "ÙÛ $1Ø $2 {{GENDER:$3|درÙست کراÙÛ}}",
"newpages": "Ù¾ÛÚÛ ÙÙÛکاÙ",
+ "newpages-submit": "ÙÛشاÙداÙ",
"newpages-username": "ÙاÙÛ Ø¨ÛکارھÛÙÛر:",
"ancientpages": "Ú©ÛÙترÛÙ Ù¾ÛÚÛکاÙ",
"move": "Ú¯ÙاستÙÛÙÛ",
@@ -1400,6 +1414,7 @@
"pager-newer-n": "{{PLURAL:$1|ÛÛÚ©ÛÚ©Û ÙÙÛتر|$1Û ÙÙÛتر}}",
"pager-older-n": "{{PLURAL:$1|ÛÛÚ©ÛÚ© Ú©ÛÙتر|$1Û Ú©ÛÙتر}}",
"suppress": "ÚاÙدÛرÛ",
+ "apisandbox-unfullscreen": "ÙÛشاÙداÙÛ Ù¾ÛÚÛ",
"booksources": "سÛرÚاÙÛکاÙÛ Ú©ØªÛب",
"booksources-search-legend": "Ø¨Û Ø³ÛرÚاÙÛÛ Ú©ØªÛب بگÛÚÛ",
"booksources-search": "بگÛÚÛ",
@@ -1408,11 +1423,13 @@
"specialloguserlabel": "بÛجÛÚ¾ÛÙÛر:",
"speciallogtitlelabel": "Ù
ÛبÛست (سÛرÙا٠Ûا٠بÛکارھÛÙÛر):",
"log": "ÙÛÚ¯ÛکاÙ",
+ "logeventslist-submit": "ÙÛشاÙداÙ",
"all-logs-page": "Ú¾ÛÙ
ÙÙ ÙÛÚ¯Û Ú¯Ø´ØªÛÛÛکاÙ",
"alllogstext": "ÙÛشاÙداÙÛ ØªÛÚ©ÚØ§Û ÙÛÙ
ÙÙ ÙÛÚ¯Û Ø¨ÛردÛستÛکاÙÛ {{SITENAME}}.\nدÛتÙاÙÛ Ø¨Û Ú¾ÛڵبÚاردÙÛ Ø¬ÛØ±Û ÙÛÚ¯ÛÚ©Ø ÙاÙÛ Ø¨ÛکارھÛÙÛرÛÚ©Û (Ú¾ÛستÛار Ø¨Û Ú¯ÛÙØ±Û Ù Ø¨ÚÙÙÚ©Û Ù¾ÛتÛکاÙ) Ûا٠پÛÚÛ Ú©Ø§Ø±ØªÛکراÙÛÚ©Û (Ú¾ÛستÛار Ø¨Û Ú¯ÛÙØ±Û Ù Ø¨ÚÙÙÚ©Û Ù¾ÛتÛکاÙ)\nبÛÙÛÙÛÚ©Û Ø³ÙÙÙردار بکÛÛتÛÙÛ.",
"logempty": "ÙÛÚ Ø¨Ø§Ø¨ÛتÛÚ©Û ÙاÙتا ÙÛ ÙÛÚ¯ÛکاÙدا ÙÛدÛزراÛÛÙÛ.",
"log-title-wildcard": "Ú¯ÛÚاÙÛ Ø¦Û٠سÛرÙاÙاÙÛ Ø¨ÛÙ
دÛÙÛÙÛ Ø¯Ûست Ù¾ÛدÛÚ©ÛÙ",
"showhideselectedlogentries": "دÛارÛکردÙÛ Ø¨Ø§Ø¨ÛØªÛ Ú¾ÛڵبÚÛردراÙÛکاÙÛ ÙÛÚ¯ بگÛÚÛ",
+ "checkbox-none": "ÙÛÚ",
"allpages": "Ú¾ÛÙ
ÙÙ Ù¾ÛÚÛکاÙ",
"nextpage": "Ù¾ÛÚÛÛ Ù¾Ø§Ø´ÛÙÛ ($1)",
"prevpage": "Ù¾ÛÚÛÛ Ù¾ÛØ´ÛÙÛ ($1)",
@@ -1428,10 +1445,9 @@
"cachedspecial-viewing-cached-ttl": "Ø®ÛرÛÚ©Ûت ÙÛشاÙÛÚ©Û ØÛشارکراÙÛ Ø¦ÛÙ
Ù¾ÛÚÛÛÛ Ø¯ÛبÛÙÛ Ú©Û Ø¯ÛتÙاÙÛت Ú¾Û $1 ÙÛÙ
ÛÙبÛر بÛت.",
"cachedspecial-refresh-now": "دÙاترÛÙ Ù¾ÛشاÙبدÛ",
"categories": "Ù¾ÛÙÛÙاÙ",
+ "categories-submit": "ÙÛشاÙداÙ",
"categoriespagetext": "ئÛÙ
{{PLURAL:$1|Ù¾ÛÙÛ Ù¾ÛÚÛ Ûا٠پÛÚÚ¯ÛÛ|Ù¾ÛÙاÙÛ Ù¾ÛÚÛ Ûا٠پÛÚÚ¯ÛÛاÙ}} ÙÛØ®ÛگرتÛ.\n[[Special:UnusedCategories|Ù¾ÛÙÛ Ø¨ÛکارÙÛÚ¾ÛÙراÙÛکاÙ]] ÙÛرÛدا ÙÛشا٠ÙÛدراÙÙ.\n[[Special:WantedCategories|Ù¾ÛÙÛ Ø®ÙازراÙÛکاÙ]]ÛØ´ ببÛÙÛ.",
"categoriesfrom": "ÙÛشاÙداÙÛ Ù¾ÛÙÛÚ©Ø§Ù Ø¨Û Ø¯Ø³ØªÙ¾Ûکرد٠ÙÛ:",
- "special-categories-sort-count": "ÚÛز Ú©Ø±Ø¯Ù Ø¨Û Ù¾ÛÛ ÚÙ
ارÛ",
- "special-categories-sort-abc": "ÚÛØ²Ú©Ø±Ø¯Ù Ø¨Û Ù¾ÛÛ Ø¦ÛÙÙÙبÛ",
"deletedcontributions": "بÛشدارÛÛÛ Ø³ÚاÙÛکاÙ",
"deletedcontributions-title": "بÛشدارÛÛÛ Ø³ÚاÙÛکاÙÛ Ø¨ÛکارھÛÙÛر",
"sp-deletedcontributions-contribs": "بÛشدارÛÛÛکاÙ",
@@ -1520,6 +1536,14 @@
"wlheader-showupdated": "âئÛÙ Ù¾ÛÚاÙÛ Ú©Û ÙÛ Ù¾Ø§Ø´ دÙاÛÛ٠سÛرداÙت دÛØ³ØªÚ©Ø§Ø±Û Ú©Ø±Ø§ÙÙ Ø¨Û Ø¦ÛستÙÙر ÙÛشا٠دراÙÙ.",
"wlnote": "Ø®ÙارÛÙÛ {{PLURAL:$1|دÙاÛÛÙ Ú¯ÛÚاÙکارÛÛÛ|دÙاÛÛÙ $1 Ú¯ÛÚاÙکارÛÛÛ}} ÙÛ Ø¯ÙاÛÛÙ {{PLURAL:$2|کاتÚÙ
Ûر|$2 کاتÚÙ
Ûر}}دا Ú¾Ûتا $4Û $3.",
"wlshowlast": "دÙاÛÛÙ $1 کاتÚÙ
ÛØ±Û $2 ÚÛÚ ÙÛشا٠بدÛ",
+ "watchlist-hide": "شاردراÙÛ",
+ "watchlist-submit": "ÙÛشاÙداÙ",
+ "wlshowtime": "Ù
اÙÛÛ Ú©Ø§Øª Ø¨Û ÙÛشاÙداÙ:",
+ "wlshowhideminor": "دÛستکارÛÛÛ Ø¨ÚÙÙÚ©ÛکاÙ",
+ "wlshowhidebots": "بÛتÛکاÙ",
+ "wlshowhideanons": "بÛکارھÛÙÛØ±Û ÙÛÙاسراÙÛکاÙ",
+ "wlshowhidemine": "دÛستکارÛÛÛکاÙÙ
",
+ "wlshowhidecategorization": "Ù¾ÛÙÛÙکردÙÛ Ù¾ÛÚÛ",
"watchlist-options": "Ú¾ÛڵبÚاردÛکاÙÛ ÙÛØ³ØªÛ ÚاÙدÛرÛ",
"watching": "ÚاÙدÛرÛ...",
"unwatching": "ÙابردÙÛ ÚاÙدÛرÛ...",
@@ -1549,6 +1573,7 @@
"delete-confirm": "سÚÛÙÛÙÛÛ Â«$1»",
"delete-legend": "بÛسÚÛÙÛ",
"historywarning": "Ú¾ÛØ´Ûار بÛ: Ù¾ÛÚÛÛÛÚ© Ú©Û Ø®ÛرÛÚ©Ûت دÛÛسÚÛتÛÙÛ Ù
ÛÚÙÙÛÛÚ©Û Ú¾ÛÛÛ Ø¨Û $1 {{PLURAL:$1|Ù¾ÛداÚÙÙÙÛÙÛ|Ù¾ÛداÚÙÙÙÛÙÛ}}ÙÛ:",
+ "historyaction-submit": "ÙÛشاÙداÙ",
"confirmdeletetext": "ØªÛ Ø®ÛرÛÚ©Û Ù¾ÛÚÛÛÛÚ© Ø¨Û Ú¾ÛÙ
ÙÙ Ù
ÛÚÙÙÛÚ©ÛÛÛÙÛ Ø¯ÛسÚÛتÛÙ.\nتکاÛÛ Ù¾Ø´ØªÚØ§Ø³ØªÛ Ø¨Ú©ÛÙÛ Ú©Û Ø¯ÛتÛÙÛت ئÛÙ
Ú©Ø§Ø±Û Ø¨Ú©ÛÛØ ÙÛ Ø¦Ø§Ú©Ø§Ù
ÛÚ©ÛÛ ØªÛدÛÚ¯ÛÛØ Ù Ø¦ÛÙ
Ú©Ø§Ø±Û Ø¨Û Ù¾ÛÛ [[{{MediaWiki:Policy-url}}|سÛاسÛتÙاÙ
Û]] ئÛÙجاÙ
دÛدÛÛ.",
"actioncomplete": "کردÛÙÛ Ø¨Û Ø¦Ø§Ú©Ø§Ù
Ú¯ÛÛÛشت",
"actionfailed": "کردارÛÚ©Û Ø³ÛرÙÛÚ©ÛÙت",
@@ -1710,6 +1735,7 @@
"whatlinkshere-hidelinks": "$1 بÛستÛر",
"whatlinkshere-hideimages": "$1 بÛستÛرÛکاÙÛ Ù¾ÛÚÚ¯Û",
"whatlinkshere-filters": "پاڵÛÙÚ©ÛکاÙ",
+ "whatlinkshere-submit": "بÚÛ",
"block": "بÛربÛستÙÛ Ø¨ÛکارھÛÙÛر",
"unblock": "ÙÛ Ø¨ÛربÛستâدÛرÙÛÙاÙÛ Ø¨ÛکارÙÛÙÛر",
"blockip": "بÛربÛستÙÛ {{GENDER:$1|بÛکارھÛÙÛر}}",
@@ -2065,6 +2091,7 @@
"pageinfo-contentpage-yes": "بÛÚµÛ",
"pageinfo-protect-cascading-yes": "بÛÚµÛ",
"pageinfo-category-info": "زاÙÛارÛÛ Ù¾ÛÙ",
+ "pageinfo-category-total": "ÚÙ
ارÛÛ Ø³ÛرجÛÙ
Û Ø¦ÛÙداÙ
اÙ",
"pageinfo-category-pages": "ÚÙ
ارÛÛ Ù¾ÛÚÛکاÙ",
"pageinfo-category-subcats": "ÚÙ
ارÛÛ ÚÛرپÛÚÛکاÙ",
"pageinfo-category-files": "ÚÙ
ارÛÛ Ù¾ÛÚÚ¯ÛکاÙ",
@@ -2155,8 +2182,8 @@
"exif-artist": "ÙÙÙسÛر",
"exif-exifversion": "ÙÛشاÙÛ exif",
"exif-colorspace": "بÛشاÛÛ Ø±ÙâÙÚ¯",
- "exif-pixelydimension": "پاÙÛ ÙÛÙÛ",
- "exif-pixelxdimension": "بÛØ±Ø²Û ÙÛÙÛ",
+ "exif-pixelxdimension": "پاÙÛ ÙÛÙÛ",
+ "exif-pixelydimension": "بÛØ±Ø²Û ÙÛÙÛ",
"exif-usercomment": "بÛÚÙÙÙÛکاÙÛ Ø¨ÛکارھÛÙÛر",
"exif-relatedsoundfile": "ÙاÛÙÛ Ø¯ÙâÙÚ¯Û ÙÛÚ©ÚÙÙ",
"exif-datetimeoriginal": "ÚÛÚ©ÛÙت Ù Ú©Ø§ØªÛ Ø¨ÛرھÛÙ
Ú¾ÛÙاÙÛ Ø¯Ø§ØªØ§",
@@ -2363,6 +2390,7 @@
"imgmultipagenext": "Ù¾ÛÚÛÛ Ø¯Ø§ÙاتÙÙ â",
"imgmultigo": "بÚÛ!",
"imgmultigoto": "بÚÛ Ø¨Û Ù¾ÛÚÛÛ $1",
+ "img-lang-default": "(زÙ
اÙÛ Ø¨ÙÚÛÙÛÛÛ)",
"img-lang-go": "بÚÛ",
"ascending_abbrev": "بÛرÛÙÛ ÚÙÙر",
"descending_abbrev": "بÛرÛÙÛ ÚÛر",
@@ -2401,6 +2429,7 @@
"watchlistedit-raw-added": "{{PLURAL:$1|1 سÛردÛÚ|$1 سÛردÛÚ}} زÛادکرا:",
"watchlistedit-raw-removed": "{{PLURAL:$1|1 سÛردÛÚ|$1 سÛردÛÚ}} Ùابرا:",
"watchlistedit-clear-titles": "ÙاÙÙÛشاÙÛکا٠:",
+ "watchlisttools-clear": "ÙÛØ³ØªÛ ÚاÙدÛØ±Û Ù¾Ø§Ú© بکÛرÛÙÛ",
"watchlisttools-view": "Ú¯ÛÚاÙکارÛÛÛ Ù¾ÛÛÙÛÙدÛدارÛکا٠ببÛÙÛ",
"watchlisttools-edit": "ÙÛØ³ØªÛ ÚاÙدÛØ±Û Ø¨Ø¨ÛÙÛ Ù Ø¯ÛØ³ØªÚ©Ø§Ø±Û Ø¨Ú©Û",
"watchlisttools-raw": "ÙÛØ³ØªÛ Ø®Ø§ÙÛ ÚاÙدÛØ±Û Ø¯ÛØ³ØªÚ©Ø§Ø±Û Ø¨Ú©Û",
@@ -2458,7 +2487,6 @@
"version-libraries-description": "ÙÛسÙ",
"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]].",
"redirect-submit": "بÚÛ",
"redirect-lookup": "Ú¯ÛÚا٠ÙÛ:",
@@ -2469,7 +2497,6 @@
"redirect-file": "ÙاÙÛ Ù¾ÛÚÚ¯Û",
"fileduplicatesearch": "Ú¯ÛÚØ§Ù Ø¨Û Ù¾ÛÚÚ¯Û Ø¯ÙÙپات کراÙÛکاÙ",
"fileduplicatesearch-summary": "Ú¯ÛÚØ§Ù Ø¨Û Ù¾ÛÚÚ¯Û Ø¯ÙÙبارÛکراÙÛکا٠ÙÛسÛر بÙÛÙ
Ø§Û ÙØ±Ø®Û hash.",
- "fileduplicatesearch-legend": "Ú¯ÛÚØ§Ù Ø¨Û Ø¯ÙÙبارÛکردÙÛÚ©",
"fileduplicatesearch-filename": "ÙاÙÛ Ù¾ÛرگÛ:",
"fileduplicatesearch-submit": "Ú¯ÛÚاÙ",
"fileduplicatesearch-info": "$1 à $2 Ù¾ÛکسÛÙ ÙÛبارÛÛ Ù¾ÛÚÚ¯Û: $3 MIME جÛرÛ: $4",
@@ -2594,6 +2621,7 @@
"expand_templates_preview": "Ù¾ÛشبÛÙÛÙ",
"pagelang-name": "Ù¾ÛÚÛ",
"pagelang-language": "زÙ
اÙ",
+ "pagelang-use-default": "بÛکارھÛÙاÙÛ Ø²Ù
اÙÛ Ø¨ÙÚÛÙÛÛÛ",
"pagelang-select-lang": "زÙ
ا٠ھÛڵبÚÛرÛ",
"right-pagelang": "زÙ
اÙÛ Ù¾ÛÚÛ Ø¨Ú¯ÛÚÛ",
"action-pagelang": "زÙ
اÙÛ Ù¾ÛÚÛÚ©Û Ø¨Ú¯ÛÚÛ",
@@ -2622,5 +2650,6 @@
"special-characters-group-gujarati": "Ú¯ÙجÛراتÛ",
"special-characters-group-thai": "تاÛÙÛÙدÛ",
"special-characters-group-khmer": "Ø®Ù
ÛرÛ",
- "api-error-blacklisted": "ÙÛڵبÚÛØ±Û ÙاÙÙÛشاÙÛ Ø¬ÛاÙازتر Ù Ùاتادارتر."
+ "api-error-blacklisted": "ÙÛڵبÚÛØ±Û ÙاÙÙÛشاÙÛ Ø¬ÛاÙازتر Ù Ùاتادارتر.",
+ "log-action-filter-upload-upload": "بارکردÙÛ ÙÙÛ"
}
diff --git a/languages/i18n/crh-cyrl.json b/languages/i18n/crh-cyrl.json
index 1bac2e1c56..089bfc3597 100644
--- a/languages/i18n/crh-cyrl.json
+++ b/languages/i18n/crh-cyrl.json
@@ -107,9 +107,9 @@
"nov": "ноÑ",
"dec": "дек",
"pagecategories": "{{PLURAL:$1|1=СаиÑÐµÐ½Ð¸Ð½Ñ ÐºÐ°ÑегоÑиÑÑÑ|СаиÑÐµÐ½Ð¸Ð½Ñ ÐºÐ°ÑегоÑиÑлаÑÑ}}",
- "category_header": "\"$1\" каÑегоÑиÑÑÑндаки ÑаиÑелеÑ",
+ "category_header": "«$1» каÑегоÑиÑÑÑндаки ÑаиÑелеÑ",
"subcategories": "ÐÐ»Ñ ÐºÐ°ÑегоÑиÑлаÑ",
- "category-media-header": "\"$1\" каÑегоÑиÑÑÑндаки медиа ÑайллаÑÑ",
+ "category-media-header": "«$1» каÑегоÑиÑÑÑндаки медиа ÑайллаÑÑ",
"category-empty": "''ÐÑÐ±Ñ ÐºÐ°ÑегоÑиÑда Ð¸Ñ Ð±Ð¸Ñ ÑаиÑе Ñ Ð´Ð° медиа Ñайл ÑкÑ.''",
"hidden-categories": "Ðизли {{PLURAL:$1|1=каÑегоÑиÑ|каÑегоÑиÑлаÑ}}",
"hidden-category-category": "Ðизли каÑегоÑиÑлаÑ",
@@ -298,7 +298,7 @@
"perfcachedts": "ÐÑагÑÑдаки малÑÐ¼Ð°Ñ ÐºÑÑÑен алÑндÑ, кÑÑÐ½Ð¸Ð½Ñ ÑонÑки ÑнÑаÑÑÑлгÑан вакÑÑÑ: $1. ÐÑÑÑе ÑÐ½Ñ ÑÐ¾ÐºÑ {{PLURAL:$1|1=Ð±Ð¸Ñ Ð½ÐµÑидже|$1 неÑидже}} ÑакÑланÑп ÑÑÑа.",
"querypage-no-updates": "ÐÑ ÑаиÑени денÑиÑÑиÑмеге Ñимди изин ÑкÑ. ÐÑ Ð¼Ð°Ð»ÑÐ¼Ð°Ñ Ð°Ð¼Ð°Ð½ ÑнÑаÑÑÑлмайджакÑ.",
"viewsource": "Ðенба кодÑÐ½Ñ ÐºÐ¾ÑÑÑеÑ",
- "viewsource-title": "$1 ÑаиÑеÑÐ¸Ð½Ð¸Ð½Ñ Ð¼ÐµÐ½Ð±Ð° кодÑ",
+ "viewsource-title": "«$1» ÑаиÑеÑÐ¸Ð½Ð¸Ð½Ñ Ð¼ÐµÐ½Ð±Ð° кодÑ",
"actionthrottled": "ÐÑÐµÐºÐµÑ ÑокÑÑалдÑ",
"actionthrottledtext": "СпамгÑа кÑаÑÑÑ ÐºÑÑÐµÑ Ñебебинден Ð±Ñ Ð°ÑекеÑни аз вакÑÑÑ Ð¸Ñинде ÑÐ¾ÐºÑ ÐºÐµÑе ÑекÑаÑлап оламайÑÑнÑÑз. ÐÑмкÑн олгÑан кÑаÑаÑдан зиÑде аÑÐµÐºÐµÑ ÑпÑÑнÑÑз. ÐÐ¸Ñ ÐºÑÐ°Ñ Ð´Ð°ÐºÑкÑадан ÑÐ¾Ð½Ñ ÑекÑаÑлап бакÑÑнÑÑз.",
"protectedpagetext": "ÐÑ ÑаиÑеде денÑиÑÑиÑме Ñ Ð´Ð° баÑкÑа Ð±Ð¸Ñ Ð°ÑÐµÐºÐµÑ ÑпÑлмаÑÑн деп о блок ÑÑилÑди.",
@@ -485,6 +485,7 @@
"updated": "(ЯнÑаÑдÑ)",
"note": "'''ÐÑ
ÑаÑ:'''",
"previewnote": "'''ÐÑ Ñек бакÑÑп ÑÑкÑÑв, меÑин Ð°Ð»Ñ Ð´Ð°Ð° ÑакÑланмагÑан!'''",
+ "continue-editing": "ÐенÑиÑÑиÑÑв пенджеÑеÑине кÑайÑ",
"previewconflict": "ÐÑ Ð±Ð°ÐºÑÑп ÑÑкÑÑв ÑкÑаÑÑ ÑаÑÐ¸Ñ Ð¿ÐµÐ½Ð´Ð¶ÐµÑеÑиндеки меÑÐ¸Ð½Ð½Ð¸Ð½Ñ ÑакÑланÑвдан ÑÐ¾Ð½Ñ Ð¾Ð»Ð°Ð´Ð¶Ð°ÐºÑ ÐºÐ¾ÑÑниÑини Ð°ÐºÑ ÑÑе.",
"session_fail_preview": "''' СеÑÐ²ÐµÑ Ñиз ÑпкÑан денÑиÑÑиÑмелеÑни ÑеÑÑÐ¸Ñ Ð¸Ð´ÐµÐ½ÑиÑикаÑоÑÑ Ð´Ð¶Ð¾ÑлгÑÐ°Ð½Ñ Ñебебинден ÑакÑлап оламадÑ.\nÐÑ Ð²Ð°ÐºÑÑÑнджа пÑоблемадÑÑ. ÐÑÑÑен, ÑекÑÐ°Ñ ÑакÑлап бакÑÑнÑÑз.\nÐÑндан да ÑÐ¾Ð½Ñ Ð¾Ð»Ñп ÑÑкÑмаÑа, малÑÐ¼Ð°Ñ Ð»Ð¾ÐºÐ°Ð»Ñ ÑайлгÑа ÑакÑланÑÑз да бÑаÑзеÑинÑизни Ð±Ð¸Ñ ÐºÑапаÑÑп аÑÑнÑÑз.'''",
"session_fail_preview_html": "'''ÐÑÑ ÑÑинÑиз! HTML ÑеÑÑиÑнÑÐ½Ñ Ð¼Ð°Ð»ÑмаÑлаÑÑ Ð³ÑайÑп олгÑÐ°Ð½Ñ Ñебебинден ÑÐ¸Ð·Ð¸Ð½Ñ Ð´ÐµÐ½ÑиÑÑиÑмелеÑинÑизни кÑабÑл ÑÑмеге имкÑн ÑкÑÑÑÑ.'''",
@@ -492,7 +493,7 @@
"editing": "«$1» ÑаиÑеÑини денÑиÑÑиÑеÑÑаÑÑз",
"creating": "«$1» ÑаиÑеÑини ÑÑаÑÑв",
"editingsection": "«$1» ÑаиÑеÑинде болÑк денÑиÑÑиÑеÑÑаÑÑз",
- "editingcomment": "$1 ÑаиÑеÑини денÑиÑÑиÑеÑÑаÑÑз (ÑнÑÑ Ð±Ð¾Ð»Ñк)",
+ "editingcomment": "«$1» ÑаиÑеÑини денÑиÑÑиÑеÑÑаÑÑз (ÑнÑÑ Ð±Ð¾Ð»Ñк)",
"editconflict": "ÐенÑиÑÑиÑÐ¼ÐµÐ»ÐµÑ ÑаÑÑÑмаÑÑ: $1",
"explainconflict": "Сиз ÑаиÑени денÑиÑÑиÑгенде баÑкÑа биÑи де денÑиÑÑиÑме ÑпÑÑ.\nЮкÑаÑÑдаки ÑÐ·Ñ ÑаиÑÐµÐ½Ð¸Ð½Ñ Ñимдики алÑÐ½Ñ ÐºÐ¾ÑÑÑеÑе.\nÐ¡Ð¸Ð·Ð¸Ð½Ñ Ð´ÐµÐ½ÑиÑÑиÑмелеÑинÑиз аÑÑÑнда коÑÑÑеÑилÑди.\nШимди ÑпкÑан денÑиÑÑиÑмелеÑинÑизни аÑагÑÑ Ð¿ÐµÐ½Ð´Ð¶ÐµÑеден ÑкÑаÑÑ Ð¿ÐµÐ½Ð´Ð¶ÐµÑеге авÑÑÑÑÑÐ¼Ð°ÐºÑ ÐºÐµÑекÑинÑиз.\n\"{{int:savearticle}}\"гÑа баÑкÑанда '''Ñек''' ÑкÑаÑÑдаки ÑÐ·Ñ ÑакÑланаджакÑ.",
"yourtext": "Ð¡Ð¸Ð·Ð¸Ð½Ñ Ð¼ÐµÑнинÑиз",
@@ -917,7 +918,7 @@
"randompage": "ТеÑадÑÑий ÑаиÑе",
"randompage-nopages": "\"$1\" {{PLURAL:$2|1=иÑим ÑезаÑÑнда|иÑим ÑезалаÑÑнда}} Ð¸Ñ Ð±Ð¸Ñ ÑаиÑе ÑкÑ.",
"randomredirect": "ТеÑадÑÑий Ñллама ÑаиÑеÑи",
- "randomredirect-nopages": "\"$1\" иÑим ÑезаÑÑнда Ð¸Ñ Ð±Ð¸Ñ Ñллама ÑаиÑеÑи ÑкÑ.",
+ "randomredirect-nopages": "«$1» иÑим ÑезаÑÑнда Ð¸Ñ Ð±Ð¸Ñ Ñллама ÑаиÑеÑи ÑкÑ.",
"statistics": "СÑаÑиÑÑика",
"statistics-header-pages": "СаиÑе ÑÑаÑиÑÑикаÑÑ",
"statistics-header-edits": "ÐенÑиÑÑиÑÑв ÑÑаÑиÑÑикаÑÑ",
@@ -1081,7 +1082,7 @@
"protectlogtext": "ÐÑагÑÑдаки, кÑоÑÑалавгÑа алÑв/кÑоÑÑалавдан ÑÑкÑаÑÑв иле багÑÐ»Ñ Ð´ÐµÐ½ÑиÑÐ¼ÐµÐ»ÐµÑ Ð¶ÑÑналÑдÑÑ.\nÐÑоÑÑалангÑан ÑаиÑÐµÐ»ÐµÑ [[Special:ProtectedPages|Ñам джедвелини]] де коÑе билеÑинÑиз.",
"protectedarticle": "\"[[$1]]\" кÑоÑÑалав алÑÑна алÑндÑ",
"modifiedarticleprotection": "«[[$1]]» иÑÑн кÑоÑÑалав ÑевиеÑи денÑиÑÑиÑилÑди",
- "unprotectedarticle": "\"[[$1]]\" ÑаиÑеÑинден кÑоÑÑалав ÑÑкÑаÑлÑдÑ",
+ "unprotectedarticle": "«[[$1]]» ÑаиÑеÑинден кÑоÑÑалав ÑÑкÑаÑлÑдÑ",
"prot_1movedto2": "[[$1]] ÑаиÑеÑÐ¸Ð½Ð¸Ð½Ñ Ð°Ð´Ñ [[$2]] деп денÑиÑÑиÑилÑди",
"protect-legend": "ÐÑоÑÑÐ°Ð»Ð°Ð²Ð½Ñ ÑаÑдÑкÑла",
"protectcomment": "Себеп:",
@@ -1141,7 +1142,7 @@
"sp-contributions-newonly": "Тек ÑнÑÑ ÑаиÑе ÑÑаÑкÑан денÑиÑÑиÑмелеÑни коÑÑÑеÑ",
"sp-contributions-submit": "ÐÑÑдÑÑ",
"whatlinkshere": "ÐÑ ÑаиÑеге багÑланÑÑлаÑ",
- "whatlinkshere-title": "$1 ÑаиÑеÑине багÑланÑÑ Ð¾Ð»Ð³Ñан ÑаиÑелеÑ",
+ "whatlinkshere-title": "«$1» ÑаиÑеÑине багÑланÑÑ Ð¾Ð»Ð³Ñан ÑаиÑелеÑ",
"whatlinkshere-page": "СаиÑе:",
"linkshere": "'''[[:$1]]''' ÑаиÑеÑине багÑланÑÑ Ð±ÐµÑген ÑаиÑелеÑ:",
"nolinkshere": "'''[[:$1]]''' ÑаиÑеÑине багÑланÑÑ Ð±ÐµÑген ÑаиÑе ÑкÑ.",
@@ -1190,7 +1191,7 @@
"ip_range_invalid": "Ð ÑÑ
ÑеÑÑиз IP аÑалÑгÑÑ.",
"lockdb": "ÐалÑÐ¼Ð°Ñ Ð±Ð°Ð·Ð°ÑÑ ÐºÐ¸Ð»Ð¸Ñли",
"lockbtn": "ÐалÑÐ¼Ð°Ñ Ð±Ð°Ð·Ð°ÑÑ ÐºÐ¸Ð»Ð¸Ñли",
- "move-page": "$1 ÑаиÑеÑÐ¸Ð½Ð¸Ð½Ñ Ð°Ð´ÑÐ½Ñ Ð´ÐµÐ½ÑиÑÑиÑеÑÑаÑÑз",
+ "move-page": "«$1» ÑаиÑеÑÐ¸Ð½Ð¸Ð½Ñ Ð°Ð´ÑÐ½Ñ Ð´ÐµÐ½ÑиÑÑиÑеÑÑаÑÑз",
"move-page-legend": "СаиÑÐµÐ½Ð¸Ð½Ñ Ð°Ð´ÑÐ½Ñ Ð´ÐµÐ½ÑиÑÑиÑÑв",
"movepagetext": "ÐÑагÑÑдаки ÑоÑма кÑÑлланÑлÑп ÑаиÑÐµÐ½Ð¸Ð½Ñ Ð°Ð´Ñ Ð´ÐµÐ½ÑиÑÑиÑилиÑ. ÐÑнÑнÑнен беÑÐ°Ð±ÐµÑ Ð´ÐµÐ½ÑиÑÑиÑÐ¼ÐµÐ»ÐµÑ Ð¶ÑÑÐ½Ð°Ð»Ñ Ð´Ð° ÑнÑÑ Ð°Ð´Ð³Ñа авÑÑÑÑÑÑлÑÑ.\nÐÑки Ð°Ð´Ñ ÑнÑÑ Ð°Ð´Ñна ÑнеÑме олÑÑ. ÐÑки ÑеÑлевагÑа ÑнеÑип ÑÑÑгÑан ÑаиÑелеÑни авÑомаÑик олаÑÐ°ÐºÑ ÑнÑаÑÑÑп олаÑÑнÑÑз. ÐÑ Ð°ÑекеÑни авÑомаÑик ÑпмагÑа иÑÑемеÑенÑиз, бÑÑÑн [[Special:DoubleRedirects|ÑиÑÑ]] ве [[Special:BrokenRedirects|йÑÑÑÑкÑ]] ÑнеÑме ÑаиÑелеÑини озÑнÑиз ÑеÑкеÑмеге меджбÑÑ Ð¾Ð»ÑÑÑÑнÑÑз. ÐагÑланÑÑÐ»Ð°Ñ Ñндиден беÑли догÑÑÑ ÑалÑÑмаÑÑндан Ñмин олмалÑÑÑнÑÑз.\n\nЯнÑÑ Ð°Ð´Ð´Ð° Ð±Ð¸Ñ ÑаиÑе Ñнди Ð±Ð°Ñ Ð¾Ð»Ñа, ад денÑиÑÑиÑилÑви ÑпÑÐ»Ð¼Ð°Ð¹Ð´Ð¶Ð°ÐºÑ , Ð°Ð½Ð´Ð¶Ð°ÐºÑ Ð±Ð°Ñ Ð¾Ð»Ð³Ñан ÑаиÑе ÑнеÑме Ñ Ð´Ð° Ð±Ð¾Ñ Ð¾Ð»Ñа ад денÑиÑÑиÑилÑви мÑмкÑн оладжакÑ. ÐÑ Ð´ÐµÐ¼ÐµÐº ки, ÑаиÑÐµÐ½Ð¸Ð½Ñ Ð°Ð´ÑÐ½Ñ ÑнÑлÑÑÑан денÑиÑÑиÑген олÑанÑÑз деминки адÑÐ½Ñ ÐºÐµÑи кÑайÑаÑÑп олаÑÑнÑÑз, амма Ð±Ð°Ñ Ð¾Ð»Ð³Ñан ÑаиÑени ÑеÑадÑÑен ÑÐºÑ ÑÑамайÑÑнÑÑз.\n\nТÐÐÐÐ! \nÐд денÑиÑÑиÑилÑви попÑлÑÑ ÑаиÑÐµÐ»ÐµÑ Ð¸ÑÑн бÑÑк ве бекленмеген денÑиÑмелеÑге Ñебеп ола билиÑ. ÐÑÑÑен, денÑиÑÑиÑме Ñпмаздан ÑÐ²ÐµÐ»Ñ Ð¾Ð»Ð° биледжеклеÑни ÐºÐ¾Ð·Ñ Ð¾Ð³Ñне алÑнÑÑз.",
"movepagetalktext": "ÐÑоÑÑлгÑан мÑзакеÑе ÑаиÑеÑÐ¸Ð½Ð¸Ð½Ñ Ð´Ðµ (Ð±Ð°Ñ Ð¾Ð»Ñа)\nÐ°Ð´Ñ Ð°Ð²ÑомаÑик ÑаÑзда денÑиÑÑиÑиледжек. '''ÐÑÑÑеÑналаÑ:'''\n\n* ÐÐ¹Ð½Ñ Ð±Ñ Ð°Ð´Ð´Ð° Ð±Ð¾Ñ Ð¾Ð»Ð¼Ð°Ð³Ñан Ð±Ð¸Ñ Ð¼ÑзакеÑе ÑаиÑеÑи Ñнди баÑ;\n* ÐÑагÑÑдаки боÑлÑкÑкÑа иÑаÑÐµÑ ÐºÑоймадÑнÑÑз.\n\nÐойле аллаÑда, кеÑек олÑа, ÑаиÑелеÑни кÑолнен ÑаÑÑмагÑа Ñ Ð´Ð° биÑлеÑÑиÑмеге меджбÑÑ Ð¾Ð»ÑÑÑÑнÑÑз.",
diff --git a/languages/i18n/crh-latn.json b/languages/i18n/crh-latn.json
index 9333f95404..ffdd83c117 100644
--- a/languages/i18n/crh-latn.json
+++ b/languages/i18n/crh-latn.json
@@ -104,9 +104,9 @@
"nov": "noy",
"dec": "dek",
"pagecategories": "{{PLURAL:$1|Saifeniñ kategoriyası|Saifeniñ kategoriyaları}}",
- "category_header": "\"$1\" kategoriyasındaki saifeler",
+ "category_header": "â$1â kategoriyasındaki saifeler",
"subcategories": "Alt kategoriyalar",
- "category-media-header": "\"$1\" kategoriyasındaki media faylları",
+ "category-media-header": "â$1â kategoriyasındaki media faylları",
"category-empty": "''Ä°Åbu kategoriyada iç bir saife ya da media fayl yoq.''",
"hidden-categories": "Gizli {{PLURAL:$1|kategoriya|kategoriyalar}}",
"hidden-category-category": "Gizli kategoriyalar",
@@ -288,7 +288,7 @@
"formerror": "Hata: formanıñ malümatını yollamaqnıñ iç çaresi yoq",
"badarticleerror": "Siz yapmaÄa istegen iÅlev bu saifede yapılıp olamay.",
"cannotdelete": "\"$1\" saife ya da faylı yoq etilip olamadı. BaÅqa bir qullanıcı tarafından yoq etilgen ola bile.",
- "cannotdelete-title": "\"$1\" saifesini yoq etmege olmaz",
+ "cannotdelete-title": "â$1â saifesini yoq etmege olmaz",
"delete-hook-aborted": "Yoq etüv çengel protsedurasınen toqtatıldı.\nİç bir izaat berilmedi.",
"badtitle": "Ruhsetsiz serleva",
"badtitletext": "Ä°stenilgen saife adı doÄru degil, o boÅtır, yahut tillerara baÄlantı ya da vikilerara baÄlantı doÄru yazılmaÄan. Belki saife adında yasaqlanÄan iÅaretler bar.",
@@ -296,7 +296,7 @@
"perfcachedts": "AÅaÄıdaki malümat keÅten alındı, keÅniñ soñki yañartılÄan vaqtı: $1. KeÅte eñ çoq {{PLURAL:$1|bir netice|$1 netice}} saqlanıp tura.",
"querypage-no-updates": "Bu saifeni deñiÅtirmege Åimdi izin yoq. Bu malümat aman yañartılmaycaq.",
"viewsource": "Menba kodunı köster",
- "viewsource-title": "$1 saifesiniñ menba kodu",
+ "viewsource-title": "â$1â saifesiniñ menba kodu",
"actionthrottled": "Areket toqtaldı",
"actionthrottledtext": "SpamÄa qarÅı küreÅ sebebinden bu areketni az vaqıt içinde çoq kere tekrarlap olamaysıñız. Mümkün olÄan qarardan ziyade areket yaptıñız. Bir qaç daqqadan soñ tekrarlap baqıñız.",
"protectedpagetext": "Bu saifede deñiÅtirme ya da baÅqa bir areket yapılmasın dep o blok etildi.",
@@ -483,6 +483,7 @@
"updated": "(Yañardı)",
"note": "'''Ä°htar:'''",
"previewnote": "'''Bu tek baqıp çıquv, metin alâ daa saqlanmaÄan!'''",
+ "continue-editing": "DeñiÅtirüv penceresine qayt",
"previewconflict": "Bu baqıp çıquv yuqarı tarir penceresindeki metinniñ saqlanuvdan soñ olacaq körüniÅini aks ete.",
"session_fail_preview": "''' Server siz yapqan deñiÅtirmelerni sessiya identifikatorı\ncoyulÄanı sebebinden saqlap olamadı. Bu vaqtınca problemadır. Lütfen, tekrar saqlap baqıñız.\nBundan da soñ olıp çıqmasa, malümat lokal faylÄa saqlañız da brauzeriñizni bir qapatıp\naçıñız.'''",
"session_fail_preview_html": "'''Afu etiñiz! HTML sessiyanıñ malümatları Äayıp olÄanı sebebinden siziñ deñiÅtirmeleriñizni qabul etmege imkân yoqtır.'''",
@@ -490,7 +491,7 @@
"editing": "â$1â saifesini deñiÅtireyatasız",
"creating": "â$1â saifesini yaratuv",
"editingsection": "â$1â saifesinde bölük deñiÅtireyatasız",
- "editingcomment": "$1 saifesini deñiÅtireyatasız (yañı bölük)",
+ "editingcomment": "â$1â saifesini deñiÅtireyatasız (yañı bölük)",
"editconflict": "DeñiÅtirmeler çatıÅması: $1",
"explainconflict": "Siz saifeni deñiÅtirgende baÅqa biri de deñiÅtirme yaptı.\nYuqarıdaki yazı saifeniñ Åimdiki alını köstere.\nSiziñ deñiÅtirmeleriñiz astında kösterildi. Åimdi yapqan deñiÅtirmeleriñizni aÅaÄı pencereden yuqarı pencerege avuÅtırmaq kereksiñiz.\n\"{{int:savearticle}}\"Äa basqanda '''tek''' yuqarıdaki yazı saqlanacaq.",
"yourtext": "Siziñ metniñiz",
@@ -915,7 +916,7 @@
"randompage": "Tesadüfiy saife",
"randompage-nopages": "\"$1\" {{PLURAL:$2|isim fezasında|isim fezalarında}} iç bir saife yoq.",
"randomredirect": "Tesadüfiy yollama saifesi",
- "randomredirect-nopages": "\"$1\" isim fezasında iç bir yollama saifesi yoq.",
+ "randomredirect-nopages": "â$1â isim fezasında iç bir yollama saifesi yoq.",
"statistics": "Statistika",
"statistics-header-pages": "Saife statistikası",
"statistics-header-edits": "DeñiÅtirüv statistikası",
@@ -1078,8 +1079,8 @@
"protectlogpage": "Qorçalav jurnalı",
"protectlogtext": "AÅaÄıdaki, saifeni qorçalavÄa aluv/qorçalavdan çıqaruv ile baÄlı deñiÅmeler jurnalıdır.\nQorçalanÄan saifeler [[Special:ProtectedPages|tam cedvelini]] de köre bilesiñiz.",
"protectedarticle": "\"[[$1]]\" qorçalav altına alındı",
- "modifiedarticleprotection": "\"[[$1]]\" içün qorçalav seviyesi deñiÅtirildi",
- "unprotectedarticle": "\"[[$1]]\" saifesinden qorçalav çıqarlıdı",
+ "modifiedarticleprotection": "â[[$1]]â içün qorçalav seviyesi deñiÅtirildi",
+ "unprotectedarticle": "â[[$1]]â saifesinden qorçalav çıqarlıdı",
"prot_1movedto2": "[[$1]] saifesiniñ adı [[$2]] dep deñiÅtirildi",
"protect-legend": "Qorçalavnı tasdıqla",
"protectcomment": "Sebep:",
@@ -1139,7 +1140,7 @@
"sp-contributions-newonly": "Tek yañı saife yaratqan deñiÅtirmelerni köster",
"sp-contributions-submit": "Qıdır",
"whatlinkshere": "Bu saifege baÄlantılar",
- "whatlinkshere-title": "$1 saifesine baÄlantı bergen saifeler",
+ "whatlinkshere-title": "â$1â saifesine baÄlantı bergen saifeler",
"whatlinkshere-page": "Saife:",
"linkshere": "'''[[:$1]]''' saifesine baÄlantı bergen saifeler:",
"nolinkshere": "'''[[:$1]]''' saifesine baÄlantı bergen saife yoq.",
@@ -1188,7 +1189,7 @@
"ip_range_invalid": "Ruhsetsiz IP aralıÄı.",
"lockdb": "Malümat bazası kilitli",
"lockbtn": "Malümat bazası kilitli",
- "move-page": "$1 saifesiniñ adını deñiÅtireyatasız",
+ "move-page": "â$1â saifesiniñ adını deñiÅtireyatasız",
"move-page-legend": "Saifeniñ adını deñiÅtirüv",
"movepagetext": "AÅaÄıdaki forma qullanılıp saifeniñ adı deñiÅtirilir. Bunıñnen beraber deñiÅtirmeler jurnalı da yañı adÄa avuÅtırılır.\nEski adı yañı adına yönetme olur. Eski serlevaÄa yönetip turÄan saifelerni avtomatik olaraq yañartıp olasıñız. Bu areketni avtomatik yapmaÄa istemeseñiz, bütün [[Special:DoubleRedirects|çift]] ve [[Special:BrokenRedirects|yırtıq]] yönetme saifelerini özüñiz teÅkermege mecbur olursıñız. BaÄlantılar endiden berli doÄru çalıÅmasından emin olmalısıñız.\n\nYañı adda bir saife endi bar olsa, ad deñiÅtirilüvi yapılmaycaq , ancaq bar olÄan saife yönetme ya da boÅ olsa ad deñiÅtirilüvi mümkün olacaq. Bu demek ki, saifeniñ adını yañlıÅtan deñiÅtirgen olsañız deminki adını keri qaytarıp olasıñız, amma bar olÄan saifeni tesadüfen yoq etamaysıñız.\n\nTENBÄ°! \nAd deñiÅtirilüvi populâr saifeler içün büyük ve beklenmegen deñiÅmelerge sebep ola bilir. Lütfen, deñiÅtirme yapmazdan evel ola bileceklerni köz ögüne alıñız.",
"movepagetalktext": "QoÅulÄan muzakere saifesiniñ de (bar olsa) adı avtomatik tarzda deñiÅtirilecek. '''Müstesnalar:'''\n\n*Aynı bu isimde boÅ olmaÄan bir muzakere saifesi endi bar;\n*AÅaÄıdaki boÅluqqa iÅaret qoymadıñız.\n\nBöyle allarda, kerek olsa, saifelerni qolnen taÅımaÄa ya da birleÅtirmege mecbur olursıñız.",
@@ -1199,7 +1200,7 @@
"move-watch": "Bu saifeni közet",
"movepagebtn": "Adını deñiÅtir",
"pagemovedsub": "Saifeniñ adı deñiÅtirildi",
- "movepage-moved": "'''\"$1\" saifesiniñ adı \"$2\" olaraq deñiÅtirildi'''",
+ "movepage-moved": "'''â$1â saifesiniñ adı â$2â olaraq deñiÅtirildi'''",
"movepage-moved-redirect": "Bir yollama yaratıldı.",
"movepage-moved-noredirect": "Yollama yaratıluvı bastırıldı.",
"articleexists": "Bu adda bir saife endi bar ya da siz yazÄan ad yasaqlı.\nLütfen, baÅqa bir ad saylap yazıñız.",
diff --git a/languages/i18n/cs.json b/languages/i18n/cs.json
index a6205df1f9..1fa3148303 100644
--- a/languages/i18n/cs.json
+++ b/languages/i18n/cs.json
@@ -47,6 +47,7 @@
"tog-watchdefault": "PÅidávat mnou editované stránky a soubory ke sledovaným",
"tog-watchmoves": "PÅidávat mnou pÅesouvané stránky a soubory mezi sledované",
"tog-watchdeletion": "PÅidávat stránky a soubory, které smažu, mezi sledované",
+ "tog-watchuploads": "PÅidávat mnou naÄtené soubory ke sledovaným",
"tog-watchrollback": "PÅidávat stránky, které jsem {{GENDER:|vrátil|vrátila}} zpÄt, ke sledovaným",
"tog-minordefault": "OznaÄovat editace implicitnÄ jako malé",
"tog-previewontop": "Zobrazovat náhled pÅed editaÄnÃm oknem (ne za nÃm)",
@@ -474,7 +475,7 @@
"nosuchuser": "Neexistuje uživatel se jménem â$1â. U uživatelských jmen se rozliÅ¡ujà malá/velká pÃsmena. Zkontrolujte zápis, nebo si [[Special:UserLogin/signup|vytvoÅte nový úÄet]].",
"nosuchusershort": "Neexistuje uživatel se jménem â$1â. Zkontrolujte zápis.",
"nouserspecified": "MusÃte zadat uživatelské jméno.",
- "login-userblocked": "Tento uživatel je zablokován. PÅihlášenà nenà dovoleno.",
+ "login-userblocked": "{{GENDER:$1|Tento uživatel je zablokován|Tato uživatelka je zablokována}}. PÅihlášenà nenà dovoleno.",
"wrongpassword": "Bylo zadáno nesprávné heslo.\nZkuste to znovu.",
"wrongpasswordempty": "Bylo zadáno prázdné heslo. Zkuste to znovu.",
"passwordtooshort": "Heslo musà být dlouhé nejménÄ $1 {{PLURAL:$1|znak|znaky|znaků}}.",
@@ -488,7 +489,7 @@
"noemail": "{{GENDER:$1|Uživatel|Uživatelka}} â$1â nemá zaregistrovanou e-mailovou adresu.",
"noemailcreate": "MusÃte uvést platnou e-mailovou adresu",
"passwordsent": "DoÄasné heslo bylo zasláno na e-mailovou adresu registrovanou pro â$1â. PÅihlaste se, prosÃm, znovu, jakmile ho obdržÃte.",
- "blocked-mailpassword": "VaÅ¡Ã IP adrese byla zablokována možnost editace, a souÄasnÄ s tÃm je zablokována funkce pro zaslánà nového hesla.",
+ "blocked-mailpassword": "VaÅ¡Ã IP adrese byla zablokována možnost editace. Kvůli ochranÄ pÅed zneužitÃm nenà dovoleno z této IP adresy žádat o zaslánà nového hesla.",
"eauthentsent": "Na zadanou adresu byl zaslán potvrzovacà e-mail.\nŽádné dalÅ¡Ã zprávy vám vÅ¡ak na tuto adresu nebudou odeslány, dokud podle instrukcà v e-mailu nepotvrdÃte, že tato adresa skuteÄnÄ patÅà vám.",
"throttled-mailpassword": "BÄhem {{PLURAL:$1|poslednà hodiny|poslednÃch $1 hodin}} již bylo heslo jednou zasláno.\nKvůli prevenci zneužÃvánà lze heslo zaslat jen jednou za $1 {{PLURAL:$1|hodinu|hodiny|hodin}}.",
"mailerror": "Chyba pÅi zasÃlánà e-mailu: $1",
@@ -665,7 +666,7 @@
"missing-revision": "Revize #$1 stránky s názvem â{{FULLPAGENAME}}â neexistuje.\n\nToto je obvykle způsobeno tÃm, že jste následovali zastaralý odkaz na historickou verzi stránky, jež byla smazána.\nPodrobnosti mohou být uvedeny v [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} knize smazaných stránek].",
"userpage-userdoesnotexist": "Uživatelský úÄet â$1â nenà zaregistrován.\nZkontrolujte, zda skuteÄnÄ chcete tuto stránku vytvoÅit Äi editovat.",
"userpage-userdoesnotexist-view": "Uživatelský úÄet â$1â nenà zaregistrován.",
- "blocked-notice-logextract": "Tento uživatel je momentálnÄ zablokován.\nZde je pro pÅehled zobrazen nejnovÄjÅ¡Ã záznam z knihy zablokovánÃ:",
+ "blocked-notice-logextract": "{{GENDER:$1|Tento uživatel|Tato uživatelka}} je momentálnÄ {{GENDER:$1|zablokován|zablokována}}.\nZde je pro pÅehled zobrazen nejnovÄjÅ¡Ã záznam z knihy zablokovánÃ:",
"clearyourcache": "Poznámka: Po uloženà musÃte smazat cache vaÅ¡eho prohlÞeÄe, jinak zmÄny neuvidÃte.\n* Firefox / Safari: PÅi kliknutà na Aktualizovat držte Shift nebo stisknÄte Ctrl-F5 nebo Ctrl-R (na Macu â-R )\n* Google Chrome: StisknÄte Ctrl-Shift-R (na Macu â-Shift-R )\n* Internet Explorer: PÅi kliknutà na Aktualizovat držte Ctrl nebo stisknÄte Ctrl-F5 \n* Opera: Smažte obsah cache v menu Nástroje â Nastavenà ",
"usercssyoucanpreview": "Tip: Použijte tlaÄÃtko â{{int:showpreview}}â k testovánà vaÅ¡eho nového CSS pÅed uloženÃm.",
"userjsyoucanpreview": "Tip: Použijte tlaÄÃtko â{{int:showpreview}}â k testovánà vaÅ¡eho nového JavaScriptu pÅed uloženÃm.",
@@ -771,7 +772,7 @@
"undo-summary": "Zrušena verze $1 od uživatele [[Special:Contributions/$2|$2]] ([[User talk:$2|diskuse]])",
"undo-summary-username-hidden": "Zrušena verze $1 od skrytého uživatele",
"cantcreateaccounttitle": "Nelze vytvoÅit uživatelský úÄet",
- "cantcreateaccount-text": "Zakládánà nových úÄtů z této IP adresy ('''$1''') bylo zablokováno uživatelem [[User:$3|$3]].\n\n$3 uvádà toto zdůvodnÄnÃ: ''$2''",
+ "cantcreateaccount-text": "Zakládánà nových úÄtů z této IP adresy ($1 ) bylo zablokováno {{GENDER:$3|uživatelem|uživatelkou}} [[User:$3|$3]].\n\n$3 uvádà toto zdůvodnÄnÃ: $2 ",
"cantcreateaccount-range-text": "Zakládánà nových úÄtů z IP adres v rozsahu $1 , který obsahuje i vaÅ¡i IP adresu ($4 ), bylo zablokováno {{GENDER:$3|uživatelem|uživatelkou}} [[User:$3|$3]].\n\n$3 uvádà toto zdůvodnÄnÃ: $2 ",
"viewpagelogs": "Zobrazit protokolovacà záznamy k této stránce",
"nohistory": "O této stránce neexistuje historie editacÃ.",
@@ -1330,9 +1331,9 @@
"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 [[Special:WhatLinksHere/$1|{{PLURAL:$2|jedna dalÅ¡Ã zaÅazeny|$2 dalÅ¡Ã zaÅazeny|$2 dalÅ¡Ãch zaÅazeno}}]] do kategorie",
+ "recentchanges-page-added-to-category-bundled": "Stránka [[:$1]], [[Special:WhatLinksHere/$1|vložená do jiných stránek]], zaÅazena do kategorie",
"recentchanges-page-removed-from-category": "Stránka [[:$1]] vyÅazena z kategorie",
- "recentchanges-page-removed-from-category-bundled": "Stránka [[:$1]] a [[Special:WhatLinksHere/$1|{{PLURAL:$2|jedna dalÅ¡Ã vyÅazeny|$2 dalÅ¡Ã vyÅazeny|$2 dalÅ¡Ãch vyÅazeno}}]] z kategorie",
+ "recentchanges-page-removed-from-category-bundled": "Stránka [[:$1]], [[Special:WhatLinksHere/$1|vložená do jiných stránek]], vyÅazena z kategorie",
"autochange-username": "Automatická zmÄna MediaWiki",
"upload": "NaÄÃst soubor",
"uploadbtn": "NaÄÃst soubor",
@@ -1512,6 +1513,7 @@
"uploadstash-badtoken": "Operace se nezdaÅila. Možná vyprÅ¡ela platnost vaÅ¡eho oprávnÄnà k editaci. Zkuste to znovu.",
"uploadstash-errclear": "Soubory se nepodaÅilo vymazat.",
"uploadstash-refresh": "Aktualizovat seznam souborů",
+ "uploadstash-thumbnail": "zobrazit náhled",
"invalid-chunk-offset": "Neplatný posun bloku",
"img-auth-accessdenied": "PÅÃstup odepÅen",
"img-auth-nopathinfo": "Chybà PATH_INFO.\nVáš server nenà nastaven tak, aby tuto informaci poskytoval.\nMožná funguje pomocà CGI a img_auth na nÄm nemůže fungovat.\nVizte https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Image_Authorization.",
@@ -1831,8 +1833,6 @@
"categories-submit": "Zobrazit",
"categoriespagetext": "NásledujÃcà kategorie {{PLURAL:$1|obsahuje|obsahujÃ}} stránky nebo soubory.\nNezobrazujà se tu [[Special:UnusedCategories|nepoužÃvané kategorie]].\nPodÃvejte se také na [[Special:WantedCategories|žádané kategorie]].",
"categoriesfrom": "Zobrazit kategorie poÄÃnaje od:",
- "special-categories-sort-count": "seÅadit podle poÄtu",
- "special-categories-sort-abc": "seÅadit abecednÄ",
"deletedcontributions": "Smazané editace uživatele",
"deletedcontributions-title": "Smazané editace uživatele",
"sp-deletedcontributions-contribs": "pÅÃspÄvky",
@@ -1873,7 +1873,9 @@
"listgrouprights-namespaceprotection-header": "Omezenà jmenných prostorů",
"listgrouprights-namespaceprotection-namespace": "Jmenný prostor",
"listgrouprights-namespaceprotection-restrictedto": "OprávnÄnà umožÅujÃcà uživateli editovat",
- "listgrants-summary": "NásledujÃcà seznam obsahuje oprávnÄnà s odpovÃdajÃcÃm pÅÃstupem k uživatelským právům. Uživatelé mohou aplikace autorizovat k využità jejich úÄtu, ale s omezenými právy na základÄ oprávnÄnÃ, která uživatel aplikaci pÅidÄlil. Aplikace konajÃcà jménem uživatele ale nemůže využÃt oprávnÄnÃ, která uživatel nemá.\nK jednotlivým oprávnÄnÃm mohou existovat [[{{MediaWiki:Listgrouprights-helppage}}|doplÅujÃcà informace]].",
+ "listgrants": "SvolenÃ",
+ "listgrants-summary": "NásledujÃcà seznam obsahuje svolenà a jim odpovÃdajÃcà pÅÃstup k uživatelským právům. Uživatelé mohou aplikace autorizovat k využità jejich úÄtu, ale s omezenými právy na základÄ svolenÃ, která uživatel aplikaci poskytl. Aplikace konajÃcà jménem uživatele ale nemůže využÃt oprávnÄnÃ, která uživatel nemá.\nK jednotlivým oprávnÄnÃm mohou existovat [[{{MediaWiki:Listgrouprights-helppage}}|doplÅujÃcà informace]].",
+ "listgrants-grant": "SvolenÃ",
"listgrants-rights": "OprávnÄnÃ",
"trackingcategories": "Sledovacà kategorie",
"trackingcategories-summary": "Tato stránka obsahuje seznam sledovacÃch kategoriÃ, které automaticky pÅidává software MediaWiki. Jejich jména lze zmÄnit úpravou pÅÃsluÅ¡ných systémových hlášenà ve jmenném prostoru {{ns:8}}.",
@@ -2207,6 +2209,7 @@
"ipb-unblock": "Odblokovat uživatele nebo IP adresu",
"ipb-blocklist": "Zobrazit probÃhajÃcà bloky",
"ipb-blocklist-contribs": "PÅÃspÄvky {{GENDER:$1|uživatele|uživatelky}} $1",
+ "ipb-blocklist-duration-left": "zbývá $1",
"unblockip": "Odblokovat uživatele",
"unblockiptext": "TÃmto formuláÅem je možno obnovit právo blokované IP adresy Äi uživatele opÄt pÅispÃvat do {{grammar:2sg|{{SITENAME}}}}.",
"ipusubmit": "Odblokovat",
@@ -2247,7 +2250,7 @@
"autoblocker": "Automatické zablokovánà kvůli tomu, že vaÅ¡i IP adresu nedávno {{GENDER:$1|použÃval uživatel|použÃvala uživatelka}} â[[User:$1|$1]]â.\nDůvod zablokovánà {{GENDER:$1|uživatele $1|uživatelky $1}}: â$2â",
"blocklogpage": "Kniha zablokovánÃ",
"blocklog-showlog": "{{GENDER:$1|Tento uživatel byl dÅÃve blokován.|Tato uživatelka byla dÅÃve blokována.|Tento uživatel byl dÅÃve blokován.}}\nZde je pro pÅehled zobrazen výpis z knihy zablokovánÃ:",
- "blocklog-showsuppresslog": "Tento uživatel byl zablokován a skryt. Zde je pro pÅehled zobrazen výpis záznamu utajenÃ:",
+ "blocklog-showsuppresslog": "{{GENDER:$1|Tento uživatel byl zablokován a skryt|Tato uživatelka byla zablokována a skryta}}. Zde je pro pÅehled zobrazen výpis záznamu utajenÃ:",
"blocklogentry": "blokuje â[[$1]]â s Äasem vyprÅ¡enà $2 $3",
"reblock-logentry": "mÄnà nastavenà bloku â[[$1]]â s Äasem vyprÅ¡enà $2 $3",
"blocklogtext": "Toto je kniha úkonů blokovánà a odblokovánà uživatelů.\nAutomaticky blokované IP adresy nejsou vypsány.\nVizte též [[Special:BlockList|seznam vÅ¡ech probÃhajÃcÃch bloků]].",
@@ -2265,7 +2268,7 @@
"ipb_expiry_temp": "Blokovánà skrytých uživatelských jmen by mÄla být trvalá.",
"ipb_hide_invalid": "Tento úÄet nelze utajit; má vÃce než $1 {{PLURAL:$1|editaci|editace|editacÃ}}.",
"ipb_already_blocked": "â$1â již je zablokován.",
- "ipb-needreblock": "$1 je již {{GENDER:zablokován|zablokována}}. Chcete zmÄnit nastavenà bloku?",
+ "ipb-needreblock": "$1 je již {{GENDER:$1|zablokován|zablokována|zablokován(a)}}. Chcete zmÄnit nastavenà bloku?",
"ipb-otherblocks-header": "{{PLURAL:$1|Jiné zablokovánÃ|Jiná zablokovánÃ}}",
"unblock-hideuser": "Tohoto uživatele nemůžete odblokovat, protože jeho uživatelské jméno bylo skryto.",
"ipb_cant_unblock": "Chyba: Blokovánàs ID $1 nebylo nalezeno. Uživatel již možná byl odblokován.",
@@ -2448,11 +2451,7 @@
"import-logentry-upload-detail": "{{PLURAL:$1|naimportována $1 revize|naimportovány $1 revize|naimportováno $1 revizÃ}}",
"import-logentry-interwiki-detail": "{{PLURAL:$1|naimportována $1 revize|naimportovány $1 revize|naimportováno $1 revizÃ}} z $2",
"javascripttest": "Testovánà JavaScriptu",
- "javascripttest-pagetext-noframework": "Tato stránka je vyhrazena pro spouÅ¡tÄnà testů JavaScriptu.",
- "javascripttest-pagetext-unknownframework": "Neznámá testovacà knihovna â$1â.",
"javascripttest-pagetext-unknownaction": "Neznámá akce â$1â.",
- "javascripttest-pagetext-frameworks": "Zvolte jednu z následujÃcÃch testovacÃch knihoven: $1",
- "javascripttest-pagetext-skins": "Zvolte vzhled, pod kterým se majà testy spustit:",
"javascripttest-qunit-intro": "Vizte [$1 dokumentaci testovánÃ] na mediawiki.org",
"tooltip-pt-userpage": "{{GENDER:|Vaše uživatelská}} stránka",
"tooltip-pt-anonuserpage": "Uživatelská stránka pro IP adresu, ze které editujete",
@@ -2721,8 +2720,8 @@
"exif-colorspace": "Barevný prostor",
"exif-componentsconfiguration": "Význam jednotlivých složek",
"exif-compressedbitsperpixel": "KomprimaÄnà režim",
- "exif-pixelydimension": "Å ÃÅka obrázku",
- "exif-pixelxdimension": "Výška obrázku",
+ "exif-pixelxdimension": "Å ÃÅka obrázku",
+ "exif-pixelydimension": "Výška obrázku",
"exif-usercomment": "Uživatelské poznámky",
"exif-relatedsoundfile": "SouvisejÃcà zvukový soubor",
"exif-datetimeoriginal": "Datum a Äas poÅÃzenà obrázku",
@@ -3049,6 +3048,10 @@
"confirmemail_body_set": "NÄkdo (patrnÄ vy, z IP adresy $1) nastavil e-mailovou adresu\núÄtu â$2â na {{grammar:6sg|{{SITENAME}}}} na tuto adresu.\n\nPokud si pÅejete aktivovat e-mailové funkce na\n{{grammar:6sg|{{SITENAME}}}}, tak pro potvrzenÃ, že tato adresa opravdu\npatÅà vám, pÅejdÄte svým internetovým prohlÞeÄem na následujÃcà adresu:\n\n$3\n\nPokud vám tento úÄet *nepatÅÃ*, kliknÄte na následujÃcÃ\nodkaz, ÄÃmž potvrzenà zruÅ¡Ãte:\n\n$5\n\nPlatnost tohoto potvrzovacÃho kódu vyprÅ¡Ã $4.",
"confirmemail_invalidated": "Potvrzenà e-mailové adresy bylo zrušeno",
"invalidateemail": "Zrušit potvrzenà e-mailové adresy",
+ "notificationemail_subject_changed": "Registrovaný e-mail na {{grammar:6sg|{{SITENAME}}}} byl zmÄnÄn",
+ "notificationemail_subject_removed": "Registrovaný e-mail na {{grammar:6sg|{{SITENAME}}}} byl odebrán",
+ "notificationemail_body_changed": "NÄkdo (patrnÄ vy, z IP adresy $1) na {{grammar:6sg|{{SITENAME}}}} zmÄnil\ne-mailovou adresu k úÄtu â$2â na â$3â.\n\nPokud jste to nebyli vy, okamžitÄ kontaktujte správce.",
+ "notificationemail_body_removed": "NÄkdo (patrnÄ vy, z IP adresy $1) na {{grammar:6sg|{{SITENAME}}}} odebral\ne-mailovou adresu z úÄtu â$2â.\n\nPokud jste to nebyli vy, okamžitÄ kontaktujte správce.",
"scarytranscludedisabled": "[Vkládánà šablon mezi wiki je vypnuto]",
"scarytranscludefailed": "[NepodaÅilo se naÄÃst Å¡ablonu pro $1]",
"scarytranscludefailed-httpstatus": "[NepodaÅilo se naÄÃst Å¡ablonu pro $1: HTTP $2]",
@@ -3220,7 +3223,6 @@
"version-libraries-description": "Popis",
"version-libraries-authors": "AutoÅi",
"redirect": "PÅesmÄrovánà podle ID souboru, uživatele, stránky, revize nebo protokolovacÃho záznamu",
- "redirect-legend": "PÅesmÄrovánà na soubor Äi stránku",
"redirect-summary": "Tato speciálnà stránka pÅesmÄrovává na soubor (podle názvu), stránku (podle ID stránky nebo revize), uživatele (podle ÄÃselného uživatelského ID) nebo protokolovacà záznam (podle ID záznamu). PoužitÃ: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]],[[{{#Special:Redirect}}/user/101]] nebo [[{{#Special:Redirect}}/logid/186]].",
"redirect-submit": "PÅejÃt",
"redirect-lookup": "NajÃt:",
@@ -3233,7 +3235,6 @@
"redirect-not-exists": "Hodnota nenalezena",
"fileduplicatesearch": "Hledánà duplicitnÃch souborů",
"fileduplicatesearch-summary": "Hledánà duplicitnÃch souborů podle jejich hašů.",
- "fileduplicatesearch-legend": "Hledánà duplikátů",
"fileduplicatesearch-filename": "Jméno souboru:",
"fileduplicatesearch-submit": "Hledat",
"fileduplicatesearch-info": "(rozmÄr: $1 à $2 pixelů, velikost souboru: $3, MIME typ: $4)",
@@ -3434,7 +3435,7 @@
"logentry-protect-protect-cascade": "$1 {{GENDER:$2|zamknul|zamknula}} stránku $3 $4 [kaskádovým zámkem]",
"logentry-protect-modify": "$1 {{GENDER:$2|zmÄnil|zmÄnila}} úroveÅ ochrany stránky $3 $4",
"logentry-protect-modify-cascade": "$1 {{GENDER:$2|zmÄnil|zmÄnila}} úroveÅ ochrany stránky $3 $4 [kaskádový zámek]",
- "logentry-rights-rights": "$1 {{GENDER:$2|zmÄnil|zmÄnila}} Älenstvà $3 ve skupinách z $4 na $5",
+ "logentry-rights-rights": "$1 {{GENDER:$2|zmÄnil|zmÄnila}} Älenstvà {{GENDER:$6|uživatele|uživatelky}} $3 ve skupinách z $4 na $5",
"logentry-rights-rights-legacy": "$1 {{GENDER:$2|zmÄnil|zmÄnila}} Älenstvà $3 ve skupinách",
"logentry-rights-autopromote": "$1 {{GENDER:$2|byl automaticky povýšen|byla automaticky povýšena}} z $4 na $5",
"logentry-upload-upload": "$1 {{GENDER:$2|naÄetl|naÄetla}} $3",
@@ -3527,6 +3528,7 @@
"api-error-unknownerror": "Neznámá chyba: â$1â.",
"api-error-uploaddisabled": "NaÄÃtánà souborů je na této wiki vypnuto.",
"api-error-verification-error": "Soubor je možná poÅ¡kozen nebo má Å¡patnou pÅÃponu.",
+ "api-error-was-deleted": "Soubor s tÃmto názvem byl již dÅÃve naÄten a pozdÄji smazán.",
"duration-seconds": "$1 {{PLURAL:$1|sekunda|sekundy|sekund}}",
"duration-minutes": "$1 {{PLURAL:$1|minuta|minuty|minut}}",
"duration-hours": "$1 {{PLURAL:$1|hodina|hodiny|hodin}}",
@@ -3618,6 +3620,7 @@
"special-characters-group-ipa": "Mezinárodnà fonetická abeceda (IPA)",
"special-characters-group-symbols": "Symboly",
"special-characters-group-greek": "Åecká abeceda",
+ "special-characters-group-greekextended": "RozÅ¡ÃÅenà ÅeÄtiny",
"special-characters-group-cyrillic": "Cyrilice",
"special-characters-group-arabic": "Arabské pÃsmo",
"special-characters-group-arabicextended": "RozÅ¡ÃÅenà arabÅ¡tiny",
@@ -3645,5 +3648,54 @@
"sessionprovider-generic": "relace pomocà $1",
"sessionprovider-mediawiki-session-cookiesessionprovider": "relace pomocà cookies",
"sessionprovider-nocookies": "Možná jsou zakázány cookies. UjistÄte se, že máte cookies povoleny a zkuste to znovu.",
- "randomrootpage": "Náhodná koÅenová stránka"
+ "randomrootpage": "Náhodná koÅenová stránka",
+ "log-action-filter-block": "Typ zablokovánÃ:",
+ "log-action-filter-contentmodel": "Typ zmÄny modelu obsahu:",
+ "log-action-filter-delete": "Typ smazánÃ:",
+ "log-action-filter-import": "Typ importu:",
+ "log-action-filter-managetags": "Typ akce správy znaÄek:",
+ "log-action-filter-move": "Typ pÅesunu:",
+ "log-action-filter-newusers": "Typ založenà úÄtu:",
+ "log-action-filter-patrol": "Typ provÄÅenÃ:",
+ "log-action-filter-protect": "Typ zamÄenÃ:",
+ "log-action-filter-rights": "Typ zmÄny práv:",
+ "log-action-filter-suppress": "Typ utajenÃ:",
+ "log-action-filter-upload": "Typ nahránÃ:",
+ "log-action-filter-all": "VÅ¡echny",
+ "log-action-filter-block-block": "ZablokovánÃ",
+ "log-action-filter-block-reblock": "ZmÄna zablokovánÃ",
+ "log-action-filter-block-unblock": "OdblokovánÃ",
+ "log-action-filter-contentmodel-change": "ZmÄna modelu obsahu",
+ "log-action-filter-contentmodel-new": "Založenà stránky s nestandardnÃm modelem obsahu",
+ "log-action-filter-delete-delete": "Smazánà stránky",
+ "log-action-filter-delete-restore": "Obnovenà stránky",
+ "log-action-filter-delete-event": "Smazánà záznamu",
+ "log-action-filter-delete-revision": "Smazánà revize",
+ "log-action-filter-import-interwiki": "Transwiki import",
+ "log-action-filter-import-upload": "Import naÄtenÃm XML souboru",
+ "log-action-filter-managetags-create": "VytvoÅenà znaÄky",
+ "log-action-filter-managetags-delete": "Smazánà znaÄky",
+ "log-action-filter-managetags-activate": "Aktivace znaÄky",
+ "log-action-filter-managetags-deactivate": "Deaktivace znaÄky",
+ "log-action-filter-move-move": "PÅesun nepÅepisujÃcà pÅesmÄrovánÃ",
+ "log-action-filter-move-move_redir": "PÅesun pÅepisujÃcà pÅesmÄrovánÃ",
+ "log-action-filter-newusers-create": "VytvoÅenà anonymnÃm uživatelem",
+ "log-action-filter-newusers-create2": "VytvoÅenà registrovaným uživatelem",
+ "log-action-filter-newusers-autocreate": "Automatické vytvoÅenÃ",
+ "log-action-filter-newusers-byemail": "VytvoÅenà s heslem poslaným e-mailem",
+ "log-action-filter-patrol-patrol": "Manuálnà provÄÅenÃ",
+ "log-action-filter-patrol-autopatrol": "Automatické provÄÅenÃ",
+ "log-action-filter-protect-protect": "ZamknutÃ",
+ "log-action-filter-protect-modify": "ZmÄna zámku",
+ "log-action-filter-protect-unprotect": "OdemknutÃ",
+ "log-action-filter-protect-move_prot": "PÅesun zámku",
+ "log-action-filter-rights-rights": "RuÄnà zmÄna",
+ "log-action-filter-rights-autopromote": "Automatická zmÄna",
+ "log-action-filter-suppress-event": "Utajenà protokolovacÃho záznamu",
+ "log-action-filter-suppress-revision": "Utajenà revize",
+ "log-action-filter-suppress-delete": "Utajenà stránky",
+ "log-action-filter-suppress-block": "Utajenà uživatele zablokovánÃm",
+ "log-action-filter-suppress-reblock": "Utajenà uživatele novým zablokovánÃm",
+ "log-action-filter-upload-upload": "Nové naÄtenÃ",
+ "log-action-filter-upload-overwrite": "ZnovunaÄtenÃ"
}
diff --git a/languages/i18n/cy.json b/languages/i18n/cy.json
index d76acadfff..454c0b152c 100644
--- a/languages/i18n/cy.json
+++ b/languages/i18n/cy.json
@@ -15,7 +15,9 @@
"ìë¼",
"Macofe",
"Matma Rex",
- "Diafol"
+ "Diafol",
+ "Nemo bis",
+ "Dafyddt"
]
},
"tog-underline": "Tanlinellu cysylltiadau:",
@@ -156,7 +158,6 @@
"moredotdotdot": "Rhagor...",
"morenotlisted": "Nid yw'r rhestr hon yn llawn.",
"mypage": "Tudalen defnyddiwr",
- "anonuserpage": "Defnyddiwr anhysbys",
"mytalk": "Sgwrs",
"anontalk": "Sgwrs",
"navigation": "Panel llywio",
@@ -1206,7 +1207,7 @@
"recentchangeslinked-page": "Tudalen:",
"recentchangeslinked-to": "Dangos newidiadau i'r tudalennau â chyswllt arnynt sy'n arwain at y dudalen a enwir",
"recentchanges-page-added-to-category": "Ychwanegwyd [[:$1]] at y categori",
- "recentchanges-page-added-to-category-bundled": "[[:$1]] ac {{PLURAL:$2|un ddalen|$2 dalen}} wedi'u hychwanegu at y categori",
+ "recentchanges-page-added-to-category-bundled": "[[:$1]] ac [[Special:WhatLinksHere/$1|{{PLURAL:$2|un ddalen|$2 dalen}}]] wedi'u hychwanegu at y categori",
"recentchanges-page-removed-from-category": "Symudwyd [[:$1]] o'r categori",
"upload": "Uwchlwytho ffeil",
"uploadbtn": "Uwchlwytho ffeil",
@@ -1622,6 +1623,7 @@
"specialloguserlabel": "Gwneuthurwr:",
"speciallogtitlelabel": "Targed (teitl neu {{ns:user}}:username ar gyfer y defnyddiwr):",
"log": "Logiau",
+ "logeventslist-submit": "Dangos",
"all-logs-page": "Pob lòg cyhoeddus",
"alllogstext": "Mae pob cofnod yn holl logiau {{SITENAME}} wedi cael eu rhestru yma.\nGallwch weld chwiliad mwy penodol trwy ddewis y math o lòg, enw'r defnyddiwr, neu'r dudalen benodedig.\nSylwer bod llythrennau mawr neu fach o bwys i'r chwiliad.",
"logempty": "Does dim eitemau yn cyfateb yn y lòg.",
@@ -1643,10 +1645,9 @@
"cachedspecial-viewing-cached-ts": "Rydych yn edrych ar fersiwn o'r dudalen a roddwyd ar gadw mewn celc. Gall fod yn wahanol i'r fersiwn cyfoes.",
"cachedspecial-refresh-now": "Gweld y diwygiad diweddaraf.",
"categories": "Categorïau",
+ "categories-submit": "Dangos",
"categoriespagetext": "Mae'r {{PLURAL:$1|categori|categori|categorïau|categorïau|categorïau|categorïau}} isod yn cynnwys tudalennau neu ffeiliau amlgyfrwng.\nNi ddangosir [[Special:UnusedCategories|categorïau gwag]] yma.\nGweler hefyd [[Special:WantedCategories|categorïau sydd eu hangen]].",
"categoriesfrom": "Dangos categorïau gan ddechrau gyda:",
- "special-categories-sort-count": "trefnu yn ôl nifer",
- "special-categories-sort-abc": "trefnu yn ôl yr wyddor",
"deletedcontributions": "Cyfraniadau defnyddiwr i dudalennau dilëedig",
"deletedcontributions-title": "Cyfraniadau defnyddiwr i dudalennau dilëedig",
"sp-deletedcontributions-contribs": "cyfraniadau",
@@ -1748,6 +1749,8 @@
"wlheader-showupdated": "Mae tudalennau sydd wedi newid ers i chi eu gweld ddiwethaf wedi'u '''hamlygu'''.",
"wlnote": "Isod, {{PLURAL:$1|yw'r golygiad diweddaraf |yw'r golygiadau diweddaraf $1 changes}} yn y {{PLURAL:$2|hour|$2 awr}}, fel ag y mae ar $3, $4.",
"wlshowlast": "Dangoser newidiadau'r $1 awr ddiwethaf neu'r $2 {{PLURAL:$2|diwrnod|diwrnod|ddiwrnod|diwrnod|diwrnod|diwrnod}} diwethaf neu'r newidiadau.",
+ "watchlist-hide": "Cuddio",
+ "watchlist-submit": "Dangos",
"wlshowtime": "Dangos y diwethaf:",
"wlshowhideminor": "golygiadau bychan",
"wlshowhidebots": "botiau",
@@ -1785,6 +1788,7 @@
"delete-confirm": "Dileu \"$1\"",
"delete-legend": "Dileu",
"historywarning": "Rhybudd: bu tua $1 {{PLURAL:$1|golygiad|golygiad|olygiad|golygiad|golygiad|o olygiadau}} yn hanes y dudalen rydych ar fin ei dileu:",
+ "historyaction-submit": "Dangos",
"confirmdeletetext": "Rydych chi ar fin dileu tudalen neu ddelwedd, ynghŷd â'i hanes, o'r data-bas, a hynny'n barhaol.\nOs gwelwch yn dda, cadarnhewch eich bod chi wir yn bwriadu gwneud hyn, eich bod yn deall y canlyniadau, ac yn ei wneud yn ôl [[{{MediaWiki:Policy-url}}|polisïau {{SITENAME}}]].",
"actioncomplete": "Wedi cwblhau'r weithred",
"actionfailed": "Methodd y weithred",
@@ -2232,11 +2236,7 @@
"import-logentry-upload-detail": "$1 {{PLURAL:$1|diwygiad|diwygiad|ddiwygiad|diwygiad|diwygiad|diwygiad}} wedi'i fewnforio",
"import-logentry-interwiki-detail": "$1 {{PLURAL:$1|diwygiad|diwygiad|ddiwygiad|diwygiad|diwygiad|diwygiad}} wedi'i fewnforio o $2",
"javascripttest": "Profi JavaScript",
- "javascripttest-pagetext-noframework": "Neilltuwyd y dudalen hon at gynnal profion JavaScript.",
- "javascripttest-pagetext-unknownframework": "Ni nabyddwyd y fframwaith profi \"$1\".",
"javascripttest-pagetext-unknownaction": "Gweithred dienw \"$1\"",
- "javascripttest-pagetext-frameworks": "Dewiswch un o'r fframweithiau profi canlynol: $1",
- "javascripttest-pagetext-skins": "Dewiswch wedd i gynnal profion arni:",
"javascripttest-qunit-intro": "Gweler y [$1 wybodaeth am y profion] ar mediawiki.org.",
"tooltip-pt-userpage": "{{GENDER:|Eich tudalen defnyddiwr}}",
"tooltip-pt-anonuserpage": "Y tudalen defnyddiwr ar gyfer y cyfeiriad IP yr ydych yn ei ddefnyddio wrth olygu",
@@ -2487,8 +2487,8 @@
"exif-colorspace": "Gofod lliw",
"exif-componentsconfiguration": "Ystyr pob cydran",
"exif-compressedbitsperpixel": "Modd cywasgu delwedd",
- "exif-pixelydimension": "Lled y ddelwedd",
- "exif-pixelxdimension": "Uchder y ddelwedd",
+ "exif-pixelxdimension": "Lled y ddelwedd",
+ "exif-pixelydimension": "Uchder y ddelwedd",
"exif-usercomment": "Sylwadau'r defnyddiwr",
"exif-relatedsoundfile": "Ffeil sain gysylltiedig",
"exif-datetimeoriginal": "Dyddiad ac amser y cynhyrchwyd y data",
@@ -2927,7 +2927,6 @@
"version-libraries-description": "Disgrifiad",
"version-libraries-authors": "Awduron",
"redirect": "Ailgyfeirio yn ôl enw ffeil, defnyddiwr, tudalen neu ID y diwygiad",
- "redirect-legend": "Ailgyfeirio i ffeil neu dudalen",
"redirect-summary": "Mae'r dudalen arbennig hon yn ailgyfeirio at ffeil (o roi enw'r ffeil), at dudalen (o roi ID rhyw ddiwygiad o'r dudalen neu ID y dudalen), neu at dudalen defnyddiwr (o roi rhif ID y defnyddiwr).\nDefnydd: \n[[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], neu [[{{#Special:Redirect}}/user/101]].",
"redirect-submit": "Ati",
"redirect-lookup": "Chwilio drwy:",
@@ -2939,7 +2938,6 @@
"redirect-not-exists": "Heb lwyddo i'w ganfod",
"fileduplicatesearch": "Chwilio am ffeiliau dyblyg",
"fileduplicatesearch-summary": "Chwilier am ffeiliau dyblyg ar sail ei werth stwnsh.",
- "fileduplicatesearch-legend": "Chwilio am ddyblygeb",
"fileduplicatesearch-filename": "Enw'r ffeil:",
"fileduplicatesearch-submit": "Chwilier",
"fileduplicatesearch-info": "$1 Ã $2 picsel Maint y ffeil: $3 math MIME: $4",
diff --git a/languages/i18n/da.json b/languages/i18n/da.json
index 8263cf69e1..2a80b92209 100644
--- a/languages/i18n/da.json
+++ b/languages/i18n/da.json
@@ -56,7 +56,8 @@
"Mads Haupt",
"Stefan2",
"Ribewiki",
- "Jens Jensen"
+ "Jens Jensen",
+ "Nemo bis"
]
},
"tog-underline": "Understreg henvisninger:",
@@ -563,6 +564,7 @@
"botpasswords-label-delete": "Slet",
"botpasswords-label-resetpassword": "Nulstil adgangskode",
"botpasswords-label-grants": "Tilgængelige bevillinger:",
+ "botpasswords-label-restrictions": "Begrænsninger for brug:",
"resetpass_forbidden": "Adgangskoder kan ikke ændres",
"resetpass-no-info": "Du skal være logget på for at komme direkte til denne side.",
"resetpass-submit-loggedin": "Skift adgangskode",
@@ -878,6 +880,7 @@
"mergehistory-empty": "Der findes ingen sammenflettelige udgaver",
"mergehistory-done": "$3 {{PLURAL:$3|version|versioner}} af $1 blev flettet sammen med [[:$2]].",
"mergehistory-fail": "Sammenfletningen kunne ikke gennemføres. Vær venlig at kontrollere sidenavne og tidsafgrænsning.",
+ "mergehistory-fail-bad-timestamp": "Tidsangivelsen er ugyldig.",
"mergehistory-fail-toobig": "Ude af stand til at flette historiken sammen, fordi flere end grænsen på $1 {{PLURAL:$1|version|versioner}} ville blive flyttet.",
"mergehistory-no-source": "Kildesiden $1 findes ikke.",
"mergehistory-no-destination": "Destinationssiden $1 findes ikke.",
@@ -1064,10 +1067,10 @@
"userrights": "HÃ¥ndtering af brugerrettigheder",
"userrights-lookup-user": "Administrér brugergrupper",
"userrights-user-editname": "Skriv et brugernavn:",
- "editusergroup": "Redigér brugergrupper",
+ "editusergroup": "Redigér {{GENDER:$1|brugergrupper}}",
"editinguser": "Ãndrer brugerrettigheder for {{GENDER:$1|brugeren}} [[User:$1|$1]] $2",
"userrights-editusergroup": "Redigér brugergrupper",
- "saveusergroups": "Gem brugergrupper",
+ "saveusergroups": "Gem {{GENDER:$1|brugergrupper}}",
"userrights-groupsmember": "Medlem af:",
"userrights-groupsmember-auto": "Implicit medlem af:",
"userrights-groups-help": "Du kan ændre denne brugers gruppemedlemsskaber:\n* Et markeret afkrydsningsfelt betyder at brugeren er medlen af den pågældende gruppe.\n* Et umarkeret felt betyder at brugeren ikke er medlem af gruppen.\n* En * betyder at du ikke kan fravælge gruppen, når den først er tilføjet og omvendt.",
@@ -1286,7 +1289,7 @@
"recentchangeslinked-page": "Sidenavn:",
"recentchangeslinked-to": "Vis ændringer i sider der henviser til den angivne side i stedet",
"recentchanges-page-added-to-category": "[[:$1]] tilføjet til kategori",
- "recentchanges-page-added-to-category-bundled": "[[:$1]] og {{PLURAL:$2|én side|$2 sider}} tilføjet til kategori",
+ "recentchanges-page-added-to-category-bundled": "[[:$1]] og [[Special:WhatLinksHere/$1|{{PLURAL:$2|én side|$2 sider}}]] tilføjet til kategori",
"upload": "Læg en fil op",
"uploadbtn": "Læg en fil op",
"reuploaddesc": "Tilbage til formularen til at lægge filer op.",
@@ -1383,6 +1386,7 @@
"upload-dialog-button-done": "Færdig",
"upload-dialog-button-save": "Gem",
"upload-dialog-button-upload": "Læg op",
+ "upload-form-label-infoform-title": "Detaljer",
"upload-form-label-infoform-name": "Navn",
"upload-form-label-infoform-description": "Beskrivelse",
"upload-form-label-usage-filename": "Filnavn",
@@ -1636,6 +1640,7 @@
"mostrevisions": "Sider med de fleste ændringer",
"prefixindex": "Alle sider der begynder med",
"prefixindex-namespace": "Alle sider (i navnerummet $1) der begynder med",
+ "prefixindex-submit": "Vis",
"prefixindex-strip": "Strip præfiks i listen",
"shortpages": "Korte sider",
"longpages": "Lange sider",
@@ -1665,6 +1670,7 @@
"usereditcount": "{{PLURAL:$1|én redigering|$1 redigeringer}}",
"usercreated": "{{GENDER:$3|Oprettet}} den $1 $2",
"newpages": "Nyeste sider",
+ "newpages-submit": "Vis",
"newpages-username": "Brugernavn:",
"ancientpages": "Ãldste sider",
"move": "Flyt",
@@ -1686,10 +1692,10 @@
"apisandbox-intro": "Brug denne side til at eksperimentere med '''MediaWiki web service API'''.\nVi henviser til [//www.mediawiki.org/wiki/API:Main_page dokumentationen af API] for yderligere oplysninger om brug af API. Eksempel: [//www.mediawiki.org/wiki/API#A_simple_example få indholdet af en forside]. Vælg en handling at se flere eksempler.\n\nBemærk, at selv om dette er en sandkasse, vil handlinger du udfører på denne side redigere wikien.",
"apisandbox-submit": "Lav forespørgsel",
"apisandbox-reset": "Ryd",
- "apisandbox-examples": "Eksempel",
- "apisandbox-results": "Resultat",
+ "apisandbox-examples": "Eksempler",
+ "apisandbox-results": "Resultater",
"apisandbox-request-url-label": "Forespurgt URL:",
- "apisandbox-request-time": "Forespørgselstid: $1",
+ "apisandbox-request-time": "Forespørgselstid: {{PLURAL:$1|$1 ms}}",
"booksources": "Bogkilder",
"booksources-search-legend": "Søgning efter bøger",
"booksources-search": "Søg",
@@ -1722,8 +1728,6 @@
"categories": "Kategorier",
"categoriespagetext": "Følgende {{PLURAL:$1|kategori|kategorier}} indeholder sider eller media.\n[[Special:UnusedCategories|Ubrugte kategorier]] vises ikke her.\nSe også [[Special:WantedCategories|ønskede kategorier]].",
"categoriesfrom": "Vis kategorier startende med:",
- "special-categories-sort-count": "sorter efter antal",
- "special-categories-sort-abc": "sorter alfabetisk",
"deletedcontributions": "Slettede brugerbidrag",
"deletedcontributions-title": "Slettede brugerbidrag",
"sp-deletedcontributions-contribs": "bidrag",
@@ -1898,6 +1902,8 @@
"rollback-success": "Ãndringerne fra $1 er fjernet,\nog den seneste version af $2 er gendannet.",
"sessionfailure-title": "Sessionsfejl",
"sessionfailure": "Der lader til at være et problem med din loginsession; denne handling blev annulleret som en sikkerhedsforanstaltning mod kapring af sessionen. Tryk på \"tilbage\"-knappen og genindlæs den side du kom fra, og prøv dernæst igen.",
+ "changecontentmodel-title-label": "Sidetitel",
+ "changecontentmodel-reason-label": "Begrundelse:",
"protectlogpage": "Skrivebeskyttelseslog",
"protectlogtext": "Herunder er en liste over ændringer til sidebeskyttelser.\nSe [[Special:ProtectedPages|listen over beskyttede sider]] for listen over sidebeskyttelser, der er i kraft i øjeblikket.",
"protectedarticle": "[[$1]] beskyttet",
@@ -2173,7 +2179,7 @@
"movenotallowedfile": "Du har ikke tilladelse til at flytte filer.",
"cant-move-user-page": "Du har ikke tilladelse til at flytte brugersider (bortset fra undersider).",
"cant-move-to-user-page": "Du har ikke tilladelse til at flytte brugersider (bortset fra til brugerundersider).",
- "newtitle": "Til ny titel",
+ "newtitle": "Ny titel:",
"move-watch": "Overvåg siden",
"movepagebtn": "Flyt side",
"pagemovedsub": "Flytning gennemført",
@@ -2303,10 +2309,6 @@
"import-logentry-upload-detail": "$1 {{PLURAL:$1|version|versioner}} importeret",
"import-logentry-interwiki-detail": "$1 {{PLURAL:$1|version|versioner}} importeret fra $2",
"javascripttest": "Test af JavaScript",
- "javascripttest-pagetext-noframework": "Denne side er reserveret til at teste JavaScript.",
- "javascripttest-pagetext-unknownframework": "Ukendt testmiljø \"$1\".",
- "javascripttest-pagetext-frameworks": "Vælg venligst en af de følgende testmiljøer: $1",
- "javascripttest-pagetext-skins": "Vælg et udseende, som testene skal køres med:",
"javascripttest-qunit-intro": "Se [$1 testdokumentationen] på mediawiki.org.",
"tooltip-pt-userpage": "{{GENDER:|Din}} brugerside",
"tooltip-pt-anonuserpage": "Brugersiden for den ip-adresse du redigerer som",
@@ -2555,8 +2557,8 @@
"exif-colorspace": "Farverum",
"exif-componentsconfiguration": "Betydning af enkelte komponenter",
"exif-compressedbitsperpixel": "Komprimerede bits pr. pixel",
- "exif-pixelydimension": "Billedbredde",
- "exif-pixelxdimension": "Billedhøjde",
+ "exif-pixelxdimension": "Billedbredde",
+ "exif-pixelydimension": "Billedhøjde",
"exif-usercomment": "Brugerkommentarer",
"exif-relatedsoundfile": "Tilhørende lydfil",
"exif-datetimeoriginal": "Optagelsestidspunkt",
@@ -2986,8 +2988,10 @@
"version-libraries": "Installerede biblioteker",
"version-libraries-library": "Bibliotek",
"version-libraries-version": "Version",
+ "version-libraries-license": "Licens",
+ "version-libraries-description": "Beskrivelse",
+ "version-libraries-authors": "Forfattere",
"redirect": "Omdirigering pga. fil, bruger-, side- eller udgave-ID",
- "redirect-legend": "Omstilling til en fil eller en side",
"redirect-summary": "Denne specialside omdirigerer til en fil (hvis filnavnet er angivet), en side (hvis udgave ID'et eller side ID'et er angivet) eller en brugerside (hvis et numerisk brugernummer er angivet). Eksempler på brug: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]],[[{{#Special:Redirect}}/revision/328429]] eller [[{{#Special:Redirect}}/user/101]].",
"redirect-submit": "Vis",
"redirect-lookup": "Slå op:",
@@ -2999,7 +3003,6 @@
"redirect-not-exists": "Værdi ej fundet",
"fileduplicatesearch": "Find dubletfiler",
"fileduplicatesearch-summary": "Find dublerede filer baseret på deres hash-værdi.",
- "fileduplicatesearch-legend": "Find dubletfiler.",
"fileduplicatesearch-filename": "Filnavn:",
"fileduplicatesearch-submit": "Find",
"fileduplicatesearch-info": "$1 à $2 punkter Filstørrelse: $3 MIME-type: $4",
@@ -3054,7 +3057,7 @@
"tags-activate-submit": "Aktiver",
"tags-deactivate-reason": "Ã
rsag:",
"tags-deactivate-submit": "Deaktiver",
- "tags-edit-existing-tags-none": "\"Ingen\"",
+ "tags-edit-existing-tags-none": "Ingen ",
"tags-edit-reason": "Ã
rsag:",
"comparepages": "Sammenlign sider",
"compare-page1": "Side 1",
@@ -3152,6 +3155,7 @@
"feedback-subject": "Emne:",
"feedback-submit": "Send",
"feedback-thanks": "Tak! Dine tilbagemeldinger er blevet noteret på siden \"[$2 $1]\".",
+ "feedback-thanks-title": "Tak!",
"searchsuggest-search": "Søg",
"searchsuggest-containing": "indeholder...",
"api-error-badaccess-groups": "Du har ikke tilladelse til at overføre filer til denne wiki.",
@@ -3210,7 +3214,9 @@
"limitreport-ppvisitednodes": "Antal nodebesøg for preprocessor",
"limitreport-ppgeneratednodes": "Antal noder genereret af preprocessor",
"limitreport-postexpandincludesize": "Inkluderet størrelse efter udvidelse",
+ "limitreport-postexpandincludesize-value": "$1/$2 {{PLURAL:$2|byte|bytes}}",
"limitreport-templateargumentsize": "Skabelon argumentstørrelse",
+ "limitreport-templateargumentsize-value": "$1/$2 {{PLURAL:$2|byte|bytes}}",
"limitreport-expansiondepth": "Største udvidelsesdybde",
"limitreport-expensivefunctioncount": "Antal dyre parserfunktioner",
"expandtemplates": "Udfold skabeloner",
@@ -3233,6 +3239,8 @@
"pagelang-select-lang": "Vælg sprog",
"right-pagelang": "Ãndre sidesproget",
"mediastatistics": "Mediestatistik",
+ "mediastatistics-table-mimetype": "MIME-type",
+ "mediastatistics-table-extensions": "Mulige filendelser",
"mediastatistics-table-count": "Antal filer",
"mediastatistics-table-totalbytes": "Samlet størrelse",
"mediastatistics-header-unknown": "Ukendt",
@@ -3244,6 +3252,7 @@
"mediastatistics-header-text": "Tekstformat",
"mediastatistics-header-executable": "Kørbare filer",
"mediastatistics-header-archive": "Komprimerede formater",
+ "mediastatistics-header-total": "Alle filer",
"json-error-state-mismatch": "Ugyldig eller fejlbehæftet JSON",
"json-error-syntax": "Syntaksfejl",
"special-characters-group-latin": "Latin",
diff --git a/languages/i18n/de.json b/languages/i18n/de.json
index d7f2c90f5f..c680d81488 100644
--- a/languages/i18n/de.json
+++ b/languages/i18n/de.json
@@ -104,6 +104,7 @@
"tog-watchdefault": "Selbst geänderte Seiten und Dateien automatisch beobachten",
"tog-watchmoves": "Selbst verschobene Seiten und Dateien automatisch beobachten",
"tog-watchdeletion": "Selbst gelöschte Seiten und Dateien automatisch beobachten",
+ "tog-watchuploads": "Neue hochgeladene Dateien zu meiner Beobachtungsliste hinzufügen",
"tog-watchrollback": "Seiten, bei denen ich eine Zurücksetzung durchgeführt habe, automatisch beobachten",
"tog-minordefault": "Eigene Ãnderungen standardmäÃig als geringfügig markieren",
"tog-previewontop": "Vorschau oberhalb des Bearbeitungsfensters anzeigen",
@@ -212,7 +213,7 @@
"hidden-category-category": "Versteckte Kategorien",
"category-subcat-count": "{{PLURAL:$2|Diese Kategorie enthält folgende Unterkategorie:|{{PLURAL:$1|Folgende Unterkategorie ist eine von insgesamt $2 Unterkategorien in dieser Kategorie:|Es werden $1 von insgesamt $2 Unterkategorien in dieser Kategorie angezeigt:}}}}",
"category-subcat-count-limited": "Diese Kategorie enthält folgende {{PLURAL:$1|Unterkategorie|$1 Unterkategorien}}:",
- "category-article-count": "{{PLURAL:$2|Diese Kategorie enthält folgende Seite:|{{PLURAL:$1|Folgende Seite ist eine von insgesamt $2 Seiten in dieser Kategorie:|Es werden $1 von insgesamt $2 Seiten in dieser Kategorie angezeigt:}}}}",
+ "category-article-count": "{{PLURAL:$2|Diese Kategorie enthält folgende Seite:|{{PLURAL:$1|Folgende Seite ist eine von insgesamt $2 Seiten in dieser Kategorie:|Es werden $1 von insgesamt $2 Seiten in dieser Kategorie angezeigt.}}}}",
"category-article-count-limited": "Folgende {{PLURAL:$1|Seite ist|$1 Seiten sind}} in dieser Kategorie enthalten:",
"category-file-count": "{{PLURAL:$2|Diese Kategorie enthält folgende Datei:|{{PLURAL:$1|Folgende Datei ist eine von insgesamt $2 Dateien in dieser Kategorie:|Es werden $1 von insgesamt $2 Dateien in dieser Kategorie angezeigt:}}}}",
"category-file-count-limited": "Folgende {{PLURAL:$1|Datei ist|$1 Dateien sind}} in dieser Kategorie enthalten:",
@@ -545,7 +546,7 @@
"noemail": "{{GENDER:$1|Benutzer|Benutzerin}} â$1â hat keine E-Mail-Adresse angegeben.",
"noemailcreate": "Du musst eine gültige E-Mail-Adresse angeben.",
"passwordsent": "Ein neues, temporäres Passwort wurde an die E-Mail-Adresse von Benutzer â$1â gesandt.\nBitte melde dich damit an, sobald du es erhalten hast. Das alte Passwort bleibt weiterhin gültig.",
- "blocked-mailpassword": "Die von dir verwendete IP-Adresse ist für das Ãndern von Seiten gesperrt. Um einen Missbrauch zu verhindern, wurde die Möglichkeit zur Anforderung eines neuen Passwortes ebenfalls gesperrt.",
+ "blocked-mailpassword": "Deine IP-Adresse ist für das Bearbeiten gesperrt. Um Missbrauch zu vermeiden, ist die Verwendung der Passwortzurücksetzung von dieser IP-Adresse nicht erlaubt.",
"eauthentsent": "Eine Bestätigungs-E-Mail wurde an die angegebene Adresse verschickt.\n\nBevor eine E-Mail von anderen Benutzern über die E-Mail-Funktion empfangen werden kann, muss die Adresse und ihre tatsächliche Zugehörigkeit zu diesem Benutzerkonto erst bestätigt werden. Bitte befolge die Hinweise in der Bestätigungs-E-Mail.",
"throttled-mailpassword": "Es wurde innerhalb der letzten {{PLURAL:$1|Stunde|$1 Stunden}} bereits eine Passwortzurücksetzungs-E-Mail angefordert. Um einen Missbrauch der Funktion zu verhindern, kann nur {{PLURAL:$1|einmal pro Stunde|alle $1 Stunden}} eine Passwortzurücksetzungs-E-Mail angefordert werden.",
"mailerror": "Fehler beim Senden der E-Mail: $1",
@@ -1391,9 +1392,9 @@
"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 [[Special:WhatLinksHere/$1|{{PLURAL:$2|eine weitere Seite|$2 weitere Seiten}}]] zur Kategorie hinzugefügt",
+ "recentchanges-page-added-to-category-bundled": "[[:$1]] zur Kategorie hinzugefügt, [[Special:WhatLinksHere/$1|diese Seite ist in anderen Seiten eingebunden]]",
"recentchanges-page-removed-from-category": "[[:$1]] von der Kategorie entfernt",
- "recentchanges-page-removed-from-category-bundled": "[[:$1]] und [[Special:WhatLinksHere/$1|{{PLURAL:$2|eine weitere Seite|$2 weitere Seiten}}]] von der Kategorie entfernt",
+ "recentchanges-page-removed-from-category-bundled": "[[:$1]] von der Kategorie entfernt, [[Special:WhatLinksHere/$1|diese Seite ist in anderen Seiten eingebunden]]",
"autochange-username": "Automatische MediaWiki-Ãnderung",
"upload": "Datei hochladen",
"uploadbtn": "Datei hochladen",
@@ -1573,6 +1574,7 @@
"uploadstash-badtoken": "Das Entfernen der vorab gespeicherten Dateien ist fehlgeschlagen, da vielleicht deine Sitzungsdaten abgelaufen sind. Bitte versuche es erneut.",
"uploadstash-errclear": "Das Entfernen der vorab gespeicherten Dateien ist fehlgeschlagen.",
"uploadstash-refresh": "Liste der Dateien aktualisieren",
+ "uploadstash-thumbnail": "Vorschaubild ansehen",
"invalid-chunk-offset": "Ungültiger Startpunkt",
"img-auth-accessdenied": "Zugriff verweigert",
"img-auth-nopathinfo": "Die Angabe PATH_INFO fehlt.\nDer Server ist nicht dafür eingerichtet, diese Information weiterzugeben.\nSie könnte CGI-gestützt sein und kann daher âimg_authâ (Authentifizierung des Dateiaufrufs) nicht unterstützen.\nSiehe auch https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Image_Authorization (englisch).",
@@ -1892,8 +1894,6 @@
"categories-submit": "Anzeigen",
"categoriespagetext": "Folgende {{PLURAL:$1|Kategorie enthält|Kategorien enthalten}} Seiten oder Dateien.\n[[Special:UnusedCategories|Verwaiste Kategorien]] werden hier nicht aufgeführt.\nSiehe auch die Liste der [[Special:WantedCategories|gewünschten Kategorien]].",
"categoriesfrom": "Zeige Kategorien ab:",
- "special-categories-sort-count": "Sortierung nach Anzahl",
- "special-categories-sort-abc": "Sortierung nach Alphabet",
"deletedcontributions": "Gelöschte Beiträge",
"deletedcontributions-title": "Gelöschte Beiträge",
"sp-deletedcontributions-contribs": "Benutzerbeiträge",
@@ -2271,6 +2271,7 @@
"ipb-unblock": "IP-Adresse/Benutzer freigeben",
"ipb-blocklist": "Alle aktuellen Sperren anzeigen",
"ipb-blocklist-contribs": "Benutzerbeiträge von â{{GENDER:$1|$1}}â",
+ "ipb-blocklist-duration-left": "noch $1",
"unblockip": "Benutzer freigeben",
"unblockiptext": "Mit diesem Formular kannst du eine IP-Adresse oder einen Benutzer freigeben.",
"ipusubmit": "Freigeben",
@@ -2512,11 +2513,7 @@
"import-logentry-upload-detail": "$1 {{PLURAL:$1|Version|Versionen}} importiert",
"import-logentry-interwiki-detail": "$1 {{PLURAL:$1|Version|Versionen}} von $2 importiert",
"javascripttest": "JavaScript-Test",
- "javascripttest-pagetext-noframework": "Diese Seite ist JavaScript-Tests vorbehalten.",
- "javascripttest-pagetext-unknownframework": "Unbekanntes Framework â$1â.",
"javascripttest-pagetext-unknownaction": "Unbekannte Aktion â$1â.",
- "javascripttest-pagetext-frameworks": "Bitte wähle eine der folgenden Prüfumgebungen aus: $1",
- "javascripttest-pagetext-skins": "Wähle eine Benutzeroberfläche zur Durchführung der Tests aus:",
"javascripttest-qunit-intro": "Siehe die [$1 Dokumentation zu Tests] auf mediawiki.org",
"tooltip-pt-userpage": "{{GENDER:|Deine}} Benutzerseite",
"tooltip-pt-anonuserpage": "Benutzerseite der IP-Adresse von der aus du Ãnderungen durchführst",
@@ -2787,8 +2784,8 @@
"exif-colorspace": "Farbraum",
"exif-componentsconfiguration": "Bedeutung einzelner Komponenten",
"exif-compressedbitsperpixel": "Komprimierte Bits pro Pixel",
- "exif-pixelydimension": "Bildbreite",
- "exif-pixelxdimension": "Bildhöhe",
+ "exif-pixelxdimension": "Bildbreite",
+ "exif-pixelydimension": "Bildhöhe",
"exif-usercomment": "Benutzerkommentare",
"exif-relatedsoundfile": "Zugehörige Tondatei",
"exif-datetimeoriginal": "Erfassungszeitpunkt",
@@ -3122,6 +3119,10 @@
"confirmemail_body_set": "Jemand mit der IP-Adresse $1, wahrscheinlich du selbst,\nhat die E-Mail-Adresse des Benutzerkontos â$2â auf {{SITENAME}} zu dieser E-Mail-Adresse abgeändert.\n\nUm zu bestätigen, dass dieses Benutzerkonto wirklich zu dir gehört\nund um die E-Mail-Funktionen auf {{SITENAME}} zu aktivieren, öffne bitte den folgenden Link in deinem Browser:\n\n$3\n\nFalls das Konto *nicht* zu dir gehört, bitte den nachfolgenden Link öffnen,\num die Bestätigung der E-Mail-Adresse abzubrechen:\n\n$5\n\nDieser Bestätigungscode ist gültig bis $4.",
"confirmemail_invalidated": "Die E-Mail-Adressbestätigung wurde abgebrochen.",
"invalidateemail": "E-Mail-Adressbestätigung abbrechen",
+ "notificationemail_subject_changed": "Die registrierte E-Mail-Adresse auf {{SITENAME}} wurde geändert",
+ "notificationemail_subject_removed": "Die registrierte E-Mail-Adresse auf {{SITENAME}} wurde entfernt",
+ "notificationemail_body_changed": "Jemand mit der IP-Adresse $1, wahrscheinlich du selbst,\nhat auf {{SITENAME}} die E-Mail-Adresse für das Benutzerkonto â$2â auf â$3â geändert.\n\nFalls das nicht du warst, kontaktiere umgehend einen Wikiadministrator.",
+ "notificationemail_body_removed": "Jemand mit der IP-Adresse $1, wahrscheinlich du selbst,\nhat auf {{SITENAME}} die E-Mail-Adresse für das Benutzerkonto â$2â entfernt.\n\nFalls das nicht du warst, kontaktiere umgehend einen Wikiadministrator.",
"scarytranscludedisabled": "[Interwiki-Einbindung ist deaktiviert]",
"scarytranscludefailed": "[Vorlageneinbindung für $1 ist gescheitert]",
"scarytranscludefailed-httpstatus": "[Vorlagenabruf fehlgeschlagen für $1: HTTP $2]",
@@ -3255,7 +3256,6 @@
"version-libraries-description": "Beschreibung",
"version-libraries-authors": "Autoren",
"redirect": "Weiterleitung auf Benutzerseite, Seite, Seitenversion, Datei oder Logbucheintrag",
- "redirect-legend": "Weiterleitung auf eine Benutzerseite, Seite, Seitenversion, Datei oder einen Logbucheintrag",
"redirect-summary": "Diese Spezialseite leitet auf eine Benutzerseite (numerische Benutzerkennung angegeben), Seite (Seitenkennung angegeben), Seitenversion (Versionskennung angegeben), Datei (Dateiname angegeben) oder einen Logbucheintrag (Logbuchkennung angegeben) weiter. Benutzung: [[{{#Special:Redirect}}/user/101]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], [[{{#Special:Redirect}}/file/Example.jpg]] oder [[{{#Special:Redirect}}/logid/186]].",
"redirect-submit": "Los",
"redirect-lookup": "Suchen:",
@@ -3268,7 +3268,6 @@
"redirect-not-exists": "Der Wert wurde nicht gefunden",
"fileduplicatesearch": "Dateiduplikatsuche",
"fileduplicatesearch-summary": "Suche nach Dateiduplikaten auf Basis ihres Hashwertes.",
- "fileduplicatesearch-legend": "Suche nach Duplikaten",
"fileduplicatesearch-filename": "Dateiname:",
"fileduplicatesearch-submit": "Suchen",
"fileduplicatesearch-info": "$1 à $2 Pixel DateigröÃe: $3 MIME-Typ: $4",
@@ -3294,7 +3293,7 @@
"blankpage": "Leere Seite",
"intentionallyblankpage": "Diese Seite enthält absichtlich keinen Inhalt.",
"external_image_whitelist": " #Diese Zeile nicht verändern.\n#Untenstehend können Fragmente regulärer Ausdrücke (der Teil zwischen den //) eingegeben werden.\n#Diese werden mit den URLs von Bildern aus externen Quellen verglichen.\n#Ein positiver Vergleich führt zur Anzeige des Bildes, andernfalls wird das Bild nur als Link angezeigt.\n#Zeilen, die mit einem # beginnen, werden als Kommentar behandelt.\n#Es wird nicht zwischen GroÃ- und Kleinschreibung unterschieden.\n\n#Fragmente regulärer Ausdrücke nach dieser Zeile eintragen. Diese Zeile nicht verändern. ",
- "tags": "Gültige Ãnderungsmarkierungen",
+ "tags": "Ãnderungsmarkierungen",
"tag-filter": "[[Special:Tags|Markierungs]]-Filter:",
"tag-filter-submit": "Filter",
"tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1|Markierung|Markierungen}}]]: $2)",
@@ -3469,7 +3468,7 @@
"logentry-protect-protect-cascade": "$1 {{GENDER:$2|schützte}} die Seite $3 $4 [kaskadierend]",
"logentry-protect-modify": "$1 {{GENDER:$2|änderte}} den Schutzstatus der Seite $3 $4",
"logentry-protect-modify-cascade": "$1 {{GENDER:$2|änderte}} den Schutzstatus der Seite $3 $4 [kaskadierend]",
- "logentry-rights-rights": "$1 {{GENDER:$2|änderte}} die Gruppenzugehörigkeit für $3 von $4 zu $5",
+ "logentry-rights-rights": "$1 {{GENDER:$2|änderte}} die Gruppenzugehörigkeit für {{GENDER:$6|$3}} von $4 zu $5",
"logentry-rights-rights-legacy": "$1 {{GENDER:$2|änderte}} die Gruppenzugehörigkeit für $3",
"logentry-rights-autopromote": "$1 wurde automatisch von $4 zu $5 {{GENDER:$2|zugeordnet}}",
"logentry-upload-upload": "$1 {{GENDER:$2|lud}} $3 hoch",
@@ -3562,6 +3561,7 @@
"api-error-unknownerror": "Unbekannter Fehler: â$1â",
"api-error-uploaddisabled": "Das Hochladen ist in diesem Wiki deaktiviert.",
"api-error-verification-error": "Die hochzuladende Datei ist entweder fehlerhaft oder hat keine Dateinamenserweiterung.",
+ "api-error-was-deleted": "Eine Datei mit diesem Namen wurde kürzlich hochgeladen und anschlieÃend gelöscht.",
"duration-seconds": "$1 {{PLURAL:$1|Sekunde|Sekunden}}",
"duration-minutes": "$1 {{PLURAL:$1|Minute|Minuten}}",
"duration-hours": "$1 {{PLURAL:$1|Stunde|Stunden}}",
@@ -3656,6 +3656,7 @@
"special-characters-group-ipa": "Internationales Phonetisches Alphabet (IPA)",
"special-characters-group-symbols": "Symbole",
"special-characters-group-greek": "Griechisch",
+ "special-characters-group-greekextended": "Erweitertes Griechisch",
"special-characters-group-cyrillic": "Kyrillisch",
"special-characters-group-arabic": "Arabisch",
"special-characters-group-arabicextended": "Arabisch, erweitert",
@@ -3683,5 +3684,54 @@
"sessionprovider-generic": "$1-Sitzungen",
"sessionprovider-mediawiki-session-cookiesessionprovider": "cookiebasierten Sitzungen",
"sessionprovider-nocookies": "Cookies sind eventuell deaktiviert. Stelle sicher, dass Cookies aktiviert sind und versuche es erneut.",
- "randomrootpage": "Zufällige Stammseite"
+ "randomrootpage": "Zufällige Stammseite",
+ "log-action-filter-block": "Sperrtyp:",
+ "log-action-filter-contentmodel": "Typ der Inhaltsmodelländerung:",
+ "log-action-filter-delete": "Löschtyp:",
+ "log-action-filter-import": "Importtyp:",
+ "log-action-filter-managetags": "Typ der Markierungsverwaltungsaktion:",
+ "log-action-filter-move": "Verschiebungstyp:",
+ "log-action-filter-newusers": "Typ der Benutzerkontenerstellung:",
+ "log-action-filter-patrol": "Kontrolltyp:",
+ "log-action-filter-protect": "Schutztyp:",
+ "log-action-filter-rights": "Typ der Rechteänderung",
+ "log-action-filter-suppress": "Unterdrückungstyp",
+ "log-action-filter-upload": "Hochladetyp:",
+ "log-action-filter-all": "Alle",
+ "log-action-filter-block-block": "Sperren",
+ "log-action-filter-block-reblock": "Sperrveränderung",
+ "log-action-filter-block-unblock": "Freigaben",
+ "log-action-filter-contentmodel-change": "Inhaltsmodelländerung",
+ "log-action-filter-contentmodel-new": "Erstellung einer Seite mit einem Nicht-Standard-Inhaltsmodell",
+ "log-action-filter-delete-delete": "Seitenlöschung",
+ "log-action-filter-delete-restore": "Seitenwiederherstellung",
+ "log-action-filter-delete-event": "Logbucheintrag-Löschung",
+ "log-action-filter-delete-revision": "Versionslöschung",
+ "log-action-filter-import-interwiki": "Transwiki-Importe",
+ "log-action-filter-import-upload": "Import durch das Hochladen einer XML-Datei",
+ "log-action-filter-managetags-create": "Markierungserstellung",
+ "log-action-filter-managetags-delete": "Markierungslöschung",
+ "log-action-filter-managetags-activate": "Markierungsaktivierung",
+ "log-action-filter-managetags-deactivate": "Markierungsdeaktivierung",
+ "log-action-filter-move-move": "Verschiebung ohne Ãberschreibung von Weiterleitungen",
+ "log-action-filter-move-move_redir": "Verschiebung mit Ãberschreibung von Weiterleitungen",
+ "log-action-filter-newusers-create": "Erstellung durch anonymen Benutzer",
+ "log-action-filter-newusers-create2": "Erstellung durch registrierten Benutzer",
+ "log-action-filter-newusers-autocreate": "Automatische Erstellung",
+ "log-action-filter-newusers-byemail": "Erstellung mit per E-Mail zugesandtem Passwort",
+ "log-action-filter-patrol-patrol": "Manuelle Kontrolle",
+ "log-action-filter-patrol-autopatrol": "Automatische Kontrolle",
+ "log-action-filter-protect-protect": "Schutz",
+ "log-action-filter-protect-modify": "Schutzveränderung",
+ "log-action-filter-protect-unprotect": "Freigaben",
+ "log-action-filter-protect-move_prot": "Verschobener Seitenschutz",
+ "log-action-filter-rights-rights": "Manuelle Ãnderung",
+ "log-action-filter-rights-autopromote": "Automatische Ãnderung",
+ "log-action-filter-suppress-event": "Logbucheintrag-Unterdrückung",
+ "log-action-filter-suppress-revision": "Versionsunterdrückung",
+ "log-action-filter-suppress-delete": "Seitenunterdrückung",
+ "log-action-filter-suppress-block": "Benutzerunterdrückung durch Sperre",
+ "log-action-filter-suppress-reblock": "Benutzerunterdrückung durch Neusperre",
+ "log-action-filter-upload-upload": "Neue Hochladung",
+ "log-action-filter-upload-overwrite": "Wiederhochladung"
}
diff --git a/languages/i18n/diq.json b/languages/i18n/diq.json
index 059ce8b893..9aac75dd01 100644
--- a/languages/i18n/diq.json
+++ b/languages/i18n/diq.json
@@ -1611,8 +1611,6 @@
"categories": "Kategoriy",
"categoriespagetext": "{{PLURAL:$1|Kategoriya cêrene|Kategoriyanê cêrênan}} de peli ya zi medya estê.\n[[Special:UnusedCategories|Kategoriyê ke nêxebetiyenê]] tiya de nêmocniyayê.\n[[Special:WantedCategories|Kategoriyanê waÅteyeyan]] de zi bıvêne.",
"categoriesfrom": "Kategoriyê ke be ninan dest pêkenê, bımocne:",
- "special-categories-sort-count": "goreyê çendi rêz ker.",
- "special-categories-sort-abc": "alfabetik rêz ker",
"deletedcontributions": "Ä°Åtırakê karberi esterdi",
"deletedcontributions-title": "Ä°Åtırakê karberi esterdi",
"sp-deletedcontributions-contribs": "iÅtıraqi",
@@ -2178,10 +2176,6 @@
"import-logentry-upload-detail": "$1 {{PLURAL:$1|çımraviyarnayıÅ|çımraviyarnayıÅi}}",
"import-logentry-interwiki-detail": "$2 ra $1 {{PLURAL:$1|çımraviyarnayıÅ|çımraviyarnayıÅi}}",
"javascripttest": "CerebnayıÅê JavaScripti",
- "javascripttest-pagetext-noframework": "Na pela testanê JavaScripta gurweynayıÅi re abıryaya.",
- "javascripttest-pagetext-unknownframework": "Ãerçeweyê \"$1\" cerbnayıÅi xırabo.",
- "javascripttest-pagetext-frameworks": "Åıma ra reca xorê cêr ra test weçinê:$1",
- "javascripttest-pagetext-skins": "Testa akarfinayıÅi rê verqayt:",
"javascripttest-qunit-intro": "Mediawiki.org dı [dokumanê $1] bıvinê.",
"tooltip-pt-userpage": "Pela {{GENDER:|Åımaya karberi}}",
"tooltip-pt-anonuserpage": "pelê karberê IPyi",
@@ -2470,8 +2464,8 @@
"exif-colorspace": "Cayê rengi",
"exif-componentsconfiguration": "manayê qisimê hemi",
"exif-compressedbitsperpixel": "Modê komprasyonê resimi",
- "exif-pixelydimension": "Herayeya resimi",
- "exif-pixelxdimension": "Berzeya resimi",
+ "exif-pixelxdimension": "Herayeya resimi",
+ "exif-pixelydimension": "Berzeya resimi",
"exif-usercomment": "MıÅewreyê karberi",
"exif-relatedsoundfile": "Derhekê dosya yê vengi",
"exif-datetimeoriginal": "Zeman u tarixê data varaziyayiÅi",
@@ -3002,7 +2996,6 @@
"version-entrypoints-articlepath": "[https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgArticlePath Article path]",
"version-entrypoints-scriptpath": "[https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgScriptPath Script path]",
"redirect": "SerÅıkıtena dosya, karberi, pele ya ki revizyonê kamiya dosya",
- "redirect-legend": "HetenayıÅa dosya yana pela",
"redirect-summary": "Na pela xase to hetê yew dosya (nameyê dosya dayeyo), yew pele (kamiya revizyoni ya zi pele dayiya) ya zi yew pela karberi (kamiya karberiya reqemkiye dayiya) ser Åıknena. GurenayıÅ: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], ya zi [[{{#Special:Redirect}}/user/101]].",
"redirect-submit": "Åo",
"redirect-lookup": "Bewni",
@@ -3014,7 +3007,6 @@
"redirect-not-exists": "Erc nêvineyê",
"fileduplicatesearch": "Dosyayanê zey pêyan cı geyrê",
"fileduplicatesearch-summary": "Dosyanê çıftan bınê têmiyankewteyan de bıgeyre.",
- "fileduplicatesearch-legend": "kopyayê ena dosya bigêre",
"fileduplicatesearch-filename": "Nameyê dosyayi",
"fileduplicatesearch-submit": "Cı geyre",
"fileduplicatesearch-info": "$1 à $2 piksel Ebatê dosyayî: $3 Tipê MIMEî: $4",
diff --git a/languages/i18n/dsb.json b/languages/i18n/dsb.json
index 0817b873d8..f11718e702 100644
--- a/languages/i18n/dsb.json
+++ b/languages/i18n/dsb.json
@@ -1571,8 +1571,6 @@
"categories": "Kategorije",
"categoriespagetext": "{{PLURAL:$1|SlÄdujuca kategorija wopÅimujo|SlÄdujucej kategoriji wopÅimujotej|SlÄdujuce kategorije wopÅimuju|SlÄdujuce kategorije wopÅimuju}} boki abo medije.\n[[Special:UnusedCategories|Njewužywane kategorije]] se how njepokazuju.\nGlÄdaj teke [[Special:WantedCategories|póžedane kategorije]].",
"categoriesfrom": "Kategorije pokazaÅ, zachopinajucy z:",
- "special-categories-sort-count": "pÅewubÄrowaÅ pó licbje",
- "special-categories-sort-abc": "pÅewubÄrowaÅ pó alfabeÅe",
"deletedcontributions": "WulaÅ¡owane wužywarske pÅinoski",
"deletedcontributions-title": "WulaÅ¡owane wužywarske pÅinoski",
"sp-deletedcontributions-contribs": "pÅinoski",
@@ -2131,10 +2129,6 @@
"import-logentry-upload-detail": "{{PLURAL:$1|$1 wersija|$1 wersiji|$1 wersije}}",
"import-logentry-interwiki-detail": "{{PLURAL:$1|$1 wersija|$1 wersiji|$1 wersije}} wót $2",
"javascripttest": "JavaScriptowy test",
- "javascripttest-pagetext-noframework": "ToÅ ten bok jo pÅewjedowanjeju javascriptowych testow pÅewóstajony.",
- "javascripttest-pagetext-unknownframework": "Njeznaty wobÅuk \"$1\".",
- "javascripttest-pagetext-frameworks": "PÅ¡osym wubjeÅ jaden ze slÄdujucych testowaÅskich wobÅukow: $1",
- "javascripttest-pagetext-skins": "WubjeÅ drastwu za pÅewjeźenje testow:",
"javascripttest-qunit-intro": "GlÄdaj [$1 testowaÅsku dokumentaciju] na mediawiki.org.",
"tooltip-pt-userpage": "Twój wužywarski bok",
"tooltip-pt-anonuserpage": "Wužywarski bok za IP-adresu, z kótarejuž bok wobźÄÅajoÅ¡",
@@ -2381,8 +2375,8 @@
"exif-colorspace": "Barwowy rum",
"exif-componentsconfiguration": "Wóznam jadnotliwych komponentow",
"exif-compressedbitsperpixel": "KomprimÄrowane bity na piksel",
- "exif-pixelydimension": "Å yrokosÄ wobraza",
- "exif-pixelxdimension": "WusokosÄ wobraza",
+ "exif-pixelxdimension": "Å yrokosÄ wobraza",
+ "exif-pixelydimension": "WusokosÄ wobraza",
"exif-usercomment": "Komentary wužywarja",
"exif-relatedsoundfile": "PÅisÅuÅ¡na zukowa dataja",
"exif-datetimeoriginal": "Datum a cas wutwórjenja datow",
@@ -2814,7 +2808,6 @@
"version-entrypoints-header-entrypoint": "Zastupny dypk",
"version-entrypoints-header-url": "URL",
"redirect": "Pó datajowem mjenju, wužywarju, boku abo wersijowem ID dalej pósrÄdniÅ",
- "redirect-legend": "Do dataje abo boka dalej pósrÄdniÅ",
"redirect-summary": "ToÅ ten specialny bok pósrÄdnja se do dataje (datajowe mÄ jo pódane), boka (wersijowy ID abo ID boka jo pódany) abo wužywarskego boka (numeriski wužywarski ID jo pódany) dalej. WužyÅe:\n[[{{#Special:Redirect}}/file/PÅikÅad.jpg]], [[{{#Special:Redirect}}/page/64308]],[[{{#Special:Redirect}}/revision/328429]] abo [[{{#Special:Redirect}}/user/101]].",
"redirect-submit": "PytaÅ",
"redirect-lookup": "PytaÅ:",
@@ -2826,7 +2819,6 @@
"redirect-not-exists": "Gódnota njejo se namakaÅa",
"fileduplicatesearch": "Za duplikatnymi datajami pytaÅ",
"fileduplicatesearch-summary": "Za datajowymi duplikatami na zakÅaźe gótnoty hash pytaÅ.",
- "fileduplicatesearch-legend": "pytaÅ duplikata",
"fileduplicatesearch-filename": "Datajowe mÄ:",
"fileduplicatesearch-submit": "PytaÅ",
"fileduplicatesearch-info": "$1 Ã $2 Piksel wjelikosÄ dataja: $3 typ MIME: $4",
diff --git a/languages/i18n/el.json b/languages/i18n/el.json
index 16d8c33aad..5b96993ed8 100644
--- a/languages/i18n/el.json
+++ b/languages/i18n/el.json
@@ -45,7 +45,8 @@
"Stam.nikos",
"Giorgos456",
"SucreRouge",
- "Gts-tg"
+ "Gts-tg",
+ "Nemo bis"
]
},
"tog-underline": "Î¥ÏογÏάμμιÏη ÏÏ
νδÎÏμÏν:",
@@ -1329,7 +1330,7 @@
"recentchangeslinked-page": "Îνομα ÏελίδαÏ:",
"recentchangeslinked-to": "ÎμÏάνιÏη αλλαγÏν Ïε ÏÎµÎ»Î¯Î´ÎµÏ ÏÏ
νδεδεμÎÎ½ÎµÏ Î¼Îµ Ïην δεδομÎνη Ïελίδα ανÏί αÏ
ÏήÏ",
"recentchanges-page-added-to-category": "Î Ïελίδα [[:$1]] ÏÏοÏÏÎθηκε ÏÏην καÏηγοÏία",
- "recentchanges-page-added-to-category-bundled": "Î Ïελίδα [[:$1]] και {{PLURAL:$2|μία ακÏμα Ïελίδα|$2 ακÏμα ÏελίδεÏ}} ÏÏοÏÏÎθηκαν ÏÏην καÏηγοÏία",
+ "recentchanges-page-added-to-category-bundled": "Î Ïελίδα [[:$1]] και [[Special:WhatLinksHere/$1|{{PLURAL:$2|μία ακÏμα Ïελίδα|$2 ακÏμα ÏελίδεÏ}}]] ÏÏοÏÏÎθηκαν ÏÏην καÏηγοÏία",
"recentchanges-page-removed-from-category": "Î Ïελίδα [[:$1]] αÏαιÏÎθηκε αÏÏ Ïην καÏηγοÏία",
"recentchanges-page-removed-from-category-bundled": "Î Ïελίδα [[:$1]] και {{PLURAL:$2|μία ακÏμα Ïελίδα|$2 ακÏμα ÏελίδεÏ}} αÏαιÏÎθηκαν αÏÏ Ïην καÏηγοÏία",
"autochange-username": "ÎÏ
ÏÏμαÏη αλλαγή MediaWiki",
@@ -1810,8 +1811,6 @@
"categories-submit": "ÎμÏάνιÏη",
"categoriespagetext": "Îι ακÏλοÏ
Î¸ÎµÏ {{PLURAL:$1|καÏηγοÏία ÏεÏιÎÏει|καÏηγοÏÎ¯ÎµÏ ÏεÏιÎÏοÏ
ν}} ÏÎµÎ»Î¯Î´ÎµÏ Î® μÎÏα.\nÎι [[Special:UnusedCategories|αÏÏηÏιμοÏοίηÏÎµÏ ÎºÎ±ÏηγοÏίεÏ]] δεν εμÏανίζονÏαι εδÏ.\nÎείÏε εÏίÏÎ·Ï ÏÎ¹Ï [[Special:WantedCategories|ζηÏοÏÎ¼ÎµÎ½ÎµÏ ÎºÎ±ÏηγοÏίεÏ]].",
"categoriesfrom": "ÎμÏάνιÏη καÏηγοÏιÏν ÏοÏ
αÏÏίζοÏ
ν αÏÏ:",
- "special-categories-sort-count": "ÏαξινÏμηÏη καÏά αÏαÏίθμηÏη",
- "special-categories-sort-abc": "αλÏαβηÏική ÏαξινÏμηÏη",
"deletedcontributions": "ÎιαγεγÏαμμÎÎ½ÎµÏ ÏÏ
νειÏÏοÏÎÏ ÏÏήÏÏη",
"deletedcontributions-title": "ÎιαγεγÏαμμÎÎ½ÎµÏ ÏÏ
νειÏÏοÏÎÏ ÏÏήÏÏη",
"sp-deletedcontributions-contribs": "ÏÏ
νειÏÏοÏÎÏ",
@@ -2425,11 +2424,7 @@
"import-logentry-upload-detail": "{{PLURAL:$1|ÎιÏήÏθη $1 αναθεÏÏηÏη|ÎιÏήÏθηÏαν $1 αναθεÏÏήÏειÏ}}",
"import-logentry-interwiki-detail": "{{PLURAL:$1|ÎιÏήÏθη $1 αναθεÏÏηÏη|ÎιÏήÏθηÏαν $1 αναθεÏÏήÏειÏ}} αÏÏ $2",
"javascripttest": "Îοκιμή JavaScript",
- "javascripttest-pagetext-noframework": "ÎÏ
Ïή η Ïελίδα είναι δεÏμεÏ
μÎνη για Ïην εκÏÎλεÏη δοκιμÏν Ïε JavaScript.",
- "javascripttest-pagetext-unknownframework": "ÎγνÏÏÏο ÏλαίÏιο δοκιμÏν \" $1 \".",
"javascripttest-pagetext-unknownaction": "ÎγνÏÏÏη ενÎÏγεια «$1».",
- "javascripttest-pagetext-frameworks": "ΠαÏÎ±ÎºÎ±Î»Ï ÎµÏιλÎξÏε Îνα αÏÏ Ïα ακÏλοÏ
θα ÏλαίÏια δοκιμÏν: $1",
- "javascripttest-pagetext-skins": "ÎÏιλÎξÏε Îνα skin για να εκÏελÎÏεÏε δοκιμÎÏ Î¼Îµ αÏ
ÏÏ:",
"javascripttest-qunit-intro": "ÎναÏÏÎξÏε ÏÏην ενÏÏηÏα [ $1 ÏεκμηÏίÏÏη δοκιμÏν] ÏÏο mediawiki.org.",
"tooltip-pt-userpage": "Î Ïελίδα {{GENDER:|ÏÏήÏÏη ÏαÏ|ÏÏήÏÏÏÎ¹Î±Ï ÏαÏ}}",
"tooltip-pt-anonuserpage": "Î Ïελίδα ÏÏήÏÏη ÏÏον οÏοίο ανÏιÏÏοιÏεί η διεÏθÏ
νÏη IP ÏοÏ
ÎÏεÏε",
@@ -2686,8 +2681,8 @@
"exif-colorspace": "ΧÏÏμαÏική ÏεÏιοÏή",
"exif-componentsconfiguration": "ÎÏημα ÏοÏ
κάθε ÏÏοιÏείοÏ
",
"exif-compressedbitsperpixel": "ÎαÏάÏÏαÏη ÏÏ
μÏίεÏÎ·Ï ÎµÎ¹ÎºÏναÏ",
- "exif-pixelydimension": "ΠλάÏÎ¿Ï ÎµÎ¹ÎºÏναÏ",
- "exif-pixelxdimension": "ÎÏÎ¿Ï ÎµÎ¹ÎºÏναÏ",
+ "exif-pixelxdimension": "ΠλάÏÎ¿Ï ÎµÎ¹ÎºÏναÏ",
+ "exif-pixelydimension": "ÎÏÎ¿Ï ÎµÎ¹ÎºÏναÏ",
"exif-usercomment": "ΣÏÏλια ÏÏήÏÏη",
"exif-relatedsoundfile": "ΣÏεÏÎ¹ÎºÏ Î±ÏÏείο ήÏοÏ
",
"exif-datetimeoriginal": "ÎμεÏομηνία και ÏÏα ÏÎ·Ï ÏαÏαγÏÎ³Î®Ï ÏηÏιακÏν δεδομÎνÏν",
@@ -3128,7 +3123,6 @@
"version-libraries-description": "ΠεÏιγÏαÏή",
"version-libraries-authors": "ÎημιοÏ
Ïγοί",
"redirect": "ÎνακαÏεÏθÏ
νÏη καÏά αÏÏείο, ÏÏήÏÏη, Ïελίδα ή αναγνÏÏιÏÏÎ¹ÎºÏ Î±Î½Î±Î¸ÎµÏÏηÏηÏ",
- "redirect-legend": "ÎνακαÏεÏθÏ
νÏη Ïε Îνα αÏÏείο ή μια Ïελίδα",
"redirect-submit": "ÎεÏάβαÏη",
"redirect-lookup": "ÎναζήÏηÏη:",
"redirect-value": "Τιμή:",
@@ -3139,7 +3133,6 @@
"redirect-not-exists": "Î Ïιμή δε βÏÎθηκε",
"fileduplicatesearch": "ÎναζήÏηÏη για διÏλά αÏÏεία",
"fileduplicatesearch-summary": "ÎναζήÏηÏη για διÏλά αÏÏεία με βάÏη Ïην Ïιμή hash ÏοÏ
αÏÏείοÏ
.",
- "fileduplicatesearch-legend": "ÎναζήÏηÏη για διÏÎ»Ï Î±ÏÏείο",
"fileduplicatesearch-filename": "Îνομα αÏÏείοÏ
:",
"fileduplicatesearch-submit": "ÎναζήÏηÏη",
"fileduplicatesearch-info": "$1 à $2 Ïίξελ ÎÎÎ³ÎµÎ¸Î¿Ï Î±ÏÏείοÏ
: $3 ΤÏÏÎ¿Ï MIME: $4",
diff --git a/languages/i18n/en.json b/languages/i18n/en.json
index c405b383e4..f8c267a865 100644
--- a/languages/i18n/en.json
+++ b/languages/i18n/en.json
@@ -18,6 +18,7 @@
"tog-watchdefault": "Add pages and files I edit to my watchlist",
"tog-watchmoves": "Add pages and files I move to my watchlist",
"tog-watchdeletion": "Add pages and files I delete to my watchlist",
+ "tog-watchuploads": "Add new files I upload to my watchlist",
"tog-watchrollback": "Add pages where I have performed a rollback to my watchlist",
"tog-minordefault": "Mark all edits minor by default",
"tog-previewontop": "Show preview before edit box",
@@ -487,7 +488,7 @@
"noemail": "There is no email address recorded for user \"$1\".",
"noemailcreate": "You need to provide a valid email address.",
"passwordsent": "A new password has been sent to the email address registered for \"$1\".\nPlease log in again after you receive it.",
- "blocked-mailpassword": "Your IP address is blocked from editing, and so is not allowed to use the password recovery function to prevent abuse.",
+ "blocked-mailpassword": "Your IP address is blocked from editing. To prevent abuse, it is not allowed to use password recovery from this IP address.",
"eauthentsent": "A confirmation email has been sent to the specified email address.\nBefore any other email is sent to the account, you will have to follow the instructions in the email, to confirm that the account is actually yours.",
"throttled-mailpassword": "A password reset email has already been sent, within the last {{PLURAL:$1|hour|$1 hours}}.\nTo prevent abuse, only one password reset email will be sent per {{PLURAL:$1|hour|$1 hours}}.",
"signupstart": "",
@@ -678,7 +679,7 @@
"userpage-userdoesnotexist": "User account \"$1\" is not registered.\nPlease check if you want to create/edit this page.",
"userpage-userdoesnotexist-view": "User account \"$1\" is not registered.",
"blocked-notice-logextract": "This user is currently blocked.\nThe latest block log entry is provided below for reference:",
- "clearyourcache": "Note: After saving, you may have to bypass your browser's cache to see the changes.\n* Firefox / Safari: Hold Shift while clicking Reload , or press either Ctrl-F5 or Ctrl-R (â-R on a Mac)\n* Google Chrome: Press Ctrl-Shift-R (â-Shift-R on a Mac)\n* Internet Explorer: Hold Ctrl while clicking Refresh , or press Ctrl-F5 \n* Opera: Clear the cache in Tools â Preferences ",
+ "clearyourcache": "Note: After saving, you may have to bypass your browser's cache to see the changes.\n* Firefox / Safari: Hold Shift while clicking Reload , or press either Ctrl-F5 or Ctrl-R (â-R on a Mac)\n* Google Chrome: Press Ctrl-Shift-R (â-Shift-R on a Mac)\n* Internet Explorer: Hold Ctrl while clicking Refresh , or press Ctrl-F5 \n* Opera: Go to Menu â Settings (Opera â Preferences on a Mac) and then to Privacy & security â Clear browsing data â Cached images and files .",
"usercssyoucanpreview": "Tip: Use the \"{{int:showpreview}}\" button to test your new CSS before saving.",
"userjsyoucanpreview": "Tip: Use the \"{{int:showpreview}}\" button to test your new JavaScript before saving.",
"usercsspreview": "Remember that you are only previewing your user CSS.\nIt has not yet been saved! ",
@@ -1377,9 +1378,9 @@
"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 [[Special:WhatLinksHere/$1|{{PLURAL:$2|one page|$2 pages}}]] added to category",
+ "recentchanges-page-added-to-category-bundled": "[[:$1]] added to category, [[Special:WhatLinksHere/$1|this page is included within other pages]]",
"recentchanges-page-removed-from-category": "[[:$1]] removed from category",
- "recentchanges-page-removed-from-category-bundled": "[[:$1]] and [[Special:WhatLinksHere/$1|{{PLURAL:$2|one page|$2 pages}}]] removed from category",
+ "recentchanges-page-removed-from-category-bundled": "[[:$1]] removed from category, [[Special:WhatLinksHere/$1|this page is included within other pages]]",
"autochange-username": "MediaWiki automatic change",
"upload": "Upload file",
"uploadbtn": "Upload file",
@@ -1561,7 +1562,7 @@
"uploadstash-summary": "This page provides access to files that are uploaded or in the process of uploading, but are not yet published to the wiki. These files are not visible to anyone but the user who uploaded them.",
"uploadstash-clear": "Clear stashed files",
"uploadstash-nofiles": "You have no stashed files.",
- "uploadstash-badtoken": "Performing that action failed. Perhaps because your editing credentials expired. Please try again.",
+ "uploadstash-badtoken": "Performing that action failed, perhaps because your editing credentials expired. Please try again.",
"uploadstash-errclear": "Clearing the files failed.",
"uploadstash-refresh": "Refresh the list of files",
"uploadstash-thumbnail": "view thumbnail",
@@ -1932,8 +1933,6 @@
"categories-submit": "Show",
"categoriespagetext": "The following {{PLURAL:$1|category contains|categories contain}} pages or media.\n[[Special:UnusedCategories|Unused categories]] are not shown here.\nAlso see [[Special:WantedCategories|wanted categories]].",
"categoriesfrom": "Display categories starting at:",
- "special-categories-sort-count": "sort by count",
- "special-categories-sort-abc": "sort alphabetically",
"deletedcontributions": "Deleted user contributions",
"deletedcontributions-summary": "",
"deletedcontributions-title": "Deleted user contributions",
@@ -2300,7 +2299,7 @@
"unblock-summary": "",
"blockip": "Block {{GENDER:$1|user}}",
"blockip-legend": "Block user",
- "blockiptext": "Use the form below to block write access from a specific IP address or username.\nThis should be done only to prevent vandalism, and in accordance with [[{{MediaWiki:Policy-url}}|policy]].\nFill in a specific reason below (for example, citing particular pages that were vandalized).\nYou can block IP ranges using the [https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing CIDR] syntax; the largest allowed range is /$1 for IPv4 and /$2 for IPv6.",
+ "blockiptext": "Use the form below to block write access from a specific IP address or username.\nThis should be done only to prevent vandalism, and in accordance with [[{{MediaWiki:Policy-url}}|policy]].\nFill in a specific reason below (for example, citing particular pages that were vandalized).\nYou can block IP address ranges using the [https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing CIDR] syntax; the largest allowed range is /$1 for IPv4 and /$2 for IPv6.",
"ipaddressorusername": "IP address or username:",
"ipbexpiry": "Expiration:",
"ipbreason": "Reason:",
@@ -2328,6 +2327,7 @@
"ipb-unblock": "Unblock a username or IP address",
"ipb-blocklist": "View existing blocks",
"ipb-blocklist-contribs": "Contributions for {{GENDER:$1|$1}}",
+ "ipb-blocklist-duration-left": "$1 left",
"unblockip": "Unblock user",
"unblockiptext": "Use the form below to restore write access to a previously blocked IP address or username.",
"ipusubmit": "Remove this block",
@@ -2392,7 +2392,7 @@
"unblock-hideuser": "You cannot unblock this user, as their username has been hidden.",
"ipb_cant_unblock": "Error: Block ID $1 not found. It may have been unblocked already.",
"ipb_blocked_as_range": "Error: The IP address $1 is not blocked directly and cannot be unblocked.\nIt is, however, blocked as part of the range $2, which can be unblocked.",
- "ip_range_invalid": "Invalid IP range.",
+ "ip_range_invalid": "Invalid IP address range.",
"ip_range_toolarge": "Range blocks larger than /$1 are not allowed.",
"proxyblocker": "Proxy blocker",
"proxyblockreason": "Your IP address has been blocked because it is an open proxy.\nPlease contact your Internet service provider or technical support of your organization and inform them of this serious security problem.",
@@ -2579,14 +2579,7 @@
"import-logentry-interwiki": "transwikied $1",
"import-logentry-interwiki-detail": "$1 {{PLURAL:$1|revision|revisions}} imported from $2",
"javascripttest": "JavaScript testing",
- "javascripttest-backlink": "< $1",
- "javascripttest-title": "$1",
- "javascripttest-pagetext-noframework": "This page is reserved for running JavaScript tests.",
- "javascripttest-pagetext-unknownframework": "Unknown testing framework \"$1\".",
"javascripttest-pagetext-unknownaction": "Unknown action \"$1\".",
- "javascripttest-pagetext-frameworks": "Please choose one of the following testing frameworks: $1",
- "javascripttest-pagetext-skins": "Choose a skin to run the tests with:",
- "javascripttest-qunit-name": "QUnit",
"javascripttest-qunit-intro": "See [$1 testing documentation] on mediawiki.org.",
"accesskey-pt-userpage": ".",
"accesskey-pt-anonuserpage": ".",
@@ -2979,8 +2972,8 @@
"exif-colorspace": "Color space",
"exif-componentsconfiguration": "Meaning of each component",
"exif-compressedbitsperpixel": "Image compression mode",
- "exif-pixelydimension": "Image width",
- "exif-pixelxdimension": "Image height",
+ "exif-pixelxdimension": "Image width",
+ "exif-pixelydimension": "Image height",
"exif-usercomment": "User comments",
"exif-relatedsoundfile": "Related audio file",
"exif-datetimeoriginal": "Date and time of data generation",
@@ -3346,6 +3339,10 @@
"confirmemail_body_set": "Someone, probably you, from IP address $1,\nhas set the email address of the account \"$2\" to this address on {{SITENAME}}.\n\nTo confirm that this account really does belong to you and activate\nemail features on {{SITENAME}}, open this link in your browser:\n\n$3\n\nIf the account does *not* belong to you, follow this link\nto cancel the email address confirmation:\n\n$5\n\nThis confirmation code will expire at $4.",
"confirmemail_invalidated": "Email address confirmation canceled",
"invalidateemail": "Cancel email confirmation",
+ "notificationemail_subject_changed": "{{SITENAME}} registered email address has been changed",
+ "notificationemail_subject_removed": "{{SITENAME}} registered email address has been removed",
+ "notificationemail_body_changed": "Someone, probably you, from IP address $1,\nhas changed the email address of the account \"$2\" to \"$3\" on {{SITENAME}}.\n\nIf this was not you, contact a site administrator immediately.",
+ "notificationemail_body_removed": "Someone, probably you, from IP address $1,\nhas removed the email address of the account \"$2\" on {{SITENAME}}.\n\nIf this was not you, contact a site administrator immediately.",
"scarytranscludedisabled": "[Interwiki transcluding is disabled]",
"scarytranscludefailed": "[Template fetch failed for $1]",
"scarytranscludefailed-httpstatus": "[Template fetch failed for $1: HTTP $2]",
@@ -3440,7 +3437,7 @@
"watchlistedit-raw-done": "Your watchlist has been updated.",
"watchlistedit-raw-added": "{{PLURAL:$1|1 title was|$1 titles were}} added:",
"watchlistedit-raw-removed": "{{PLURAL:$1|1 title was|$1 titles were}} removed:",
- "watchlistedit-clear-title": "Cleared watchlist",
+ "watchlistedit-clear-title": "Clear watchlist",
"watchlistedit-clear-legend": "Clear watchlist",
"watchlistedit-clear-explain": "All of the titles will be removed from your watchlist",
"watchlistedit-clear-titles": "Titles:",
@@ -3571,7 +3568,6 @@
"version-libraries-description": "Description",
"version-libraries-authors": "Authors",
"redirect": "Redirect by file, user, page, revision, or log ID",
- "redirect-legend": "Redirect to a file or page",
"redirect-text": "",
"redirect-summary": "This special page redirects to a file (given the filename), a page (given a revision ID or page ID), a user page (given a numeric user ID), or a log entry (given the log ID). Usage: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], [[{{#Special:Redirect}}/user/101]], or [[{{#Special:Redirect}}/logid/186]].",
"redirect-submit": "Go",
@@ -3585,7 +3581,6 @@
"redirect-not-exists": "Value not found",
"fileduplicatesearch": "Search for duplicate files",
"fileduplicatesearch-summary": "Search for duplicate files based on hash values.",
- "fileduplicatesearch-legend": "Search for a duplicate",
"fileduplicatesearch-filename": "Filename:",
"fileduplicatesearch-submit": "Search",
"fileduplicatesearch-info": "$1 Ã $2 pixel File size: $3 MIME type: $4",
@@ -3792,7 +3787,7 @@
"logentry-protect-protect-cascade": "$1 {{GENDER:$2|protected}} $3 $4 [cascading]",
"logentry-protect-modify": "$1 {{GENDER:$2|changed}} protection level for $3 $4",
"logentry-protect-modify-cascade": "$1 {{GENDER:$2|changed}} protection level for $3 $4 [cascading]",
- "logentry-rights-rights": "$1 {{GENDER:$2|changed}} group membership for $3 from $4 to $5",
+ "logentry-rights-rights": "$1 {{GENDER:$2|changed}} group membership for {{GENDER:$6|$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",
"logentry-upload-upload": "$1 {{GENDER:$2|uploaded}} $3",
@@ -3907,6 +3902,7 @@
"api-error-unknownerror": "Unknown error: \"$1\".",
"api-error-uploaddisabled": "Uploading is disabled on this wiki.",
"api-error-verification-error": "This file might be corrupt, or have the wrong extension.",
+ "api-error-was-deleted": "A file of this name has been previously uploaded and subsequently deleted.",
"duration-seconds": "$1 {{PLURAL:$1|second|seconds}}",
"duration-minutes": "$1 {{PLURAL:$1|minute|minutes}}",
"duration-hours": "$1 {{PLURAL:$1|hour|hours}}",
@@ -4002,6 +3998,7 @@
"special-characters-group-ipa": "IPA",
"special-characters-group-symbols": "Symbols",
"special-characters-group-greek": "Greek",
+ "special-characters-group-greekextended": "Greek extended",
"special-characters-group-cyrillic": "Cyrillic",
"special-characters-group-arabic": "Arabic",
"special-characters-group-arabicextended": "Arabic extended",
@@ -4029,5 +4026,54 @@
"sessionprovider-generic": "$1 sessions",
"sessionprovider-mediawiki-session-cookiesessionprovider": "cookie-based sessions",
"sessionprovider-nocookies": "Cookies may be disabled. Ensure you have cookies enabled and start again.",
- "randomrootpage": "Random root page"
+ "randomrootpage": "Random root page",
+ "log-action-filter-block": "Type of block:",
+ "log-action-filter-contentmodel": "Type of contentmodel modification:",
+ "log-action-filter-delete": "Type of deletion:",
+ "log-action-filter-import": "Type of import:",
+ "log-action-filter-managetags": "Type of tag management action:",
+ "log-action-filter-move": "Type of move:",
+ "log-action-filter-newusers": "Type of account creation:",
+ "log-action-filter-patrol": "Type of patrol:",
+ "log-action-filter-protect": "Type of protection:",
+ "log-action-filter-rights": "Type of right change",
+ "log-action-filter-suppress": "Type of suppression",
+ "log-action-filter-upload": "Type of upload:",
+ "log-action-filter-all": "All",
+ "log-action-filter-block-block": "Block",
+ "log-action-filter-block-reblock": "Block modification",
+ "log-action-filter-block-unblock": "Unblock",
+ "log-action-filter-contentmodel-change": "Change of Contentmodel",
+ "log-action-filter-contentmodel-new": "Creation of page with non-standard Contentmodel",
+ "log-action-filter-delete-delete": "Page deletion",
+ "log-action-filter-delete-restore": "Page undeletion",
+ "log-action-filter-delete-event": "Log deletion",
+ "log-action-filter-delete-revision": "Revision deletion",
+ "log-action-filter-import-interwiki": "Transwiki import",
+ "log-action-filter-import-upload": "Import by XML upload",
+ "log-action-filter-managetags-create": "Tag creation",
+ "log-action-filter-managetags-delete": "Tag deletion",
+ "log-action-filter-managetags-activate": "Tag activation",
+ "log-action-filter-managetags-deactivate": "Tag deactivation",
+ "log-action-filter-move-move": "Move without overwriting of redirects",
+ "log-action-filter-move-move_redir": "Move with overwriting of redirects",
+ "log-action-filter-newusers-create": "Creation by anonymous user",
+ "log-action-filter-newusers-create2": "Creation by registered user",
+ "log-action-filter-newusers-autocreate": "Automatic creation",
+ "log-action-filter-newusers-byemail": "Creation with password sent by e-mail",
+ "log-action-filter-patrol-patrol": "Manual patrol",
+ "log-action-filter-patrol-autopatrol": "Automatic patrol",
+ "log-action-filter-protect-protect": "Protection",
+ "log-action-filter-protect-modify": "Protection modification",
+ "log-action-filter-protect-unprotect": "Unprotection",
+ "log-action-filter-protect-move_prot": "Moved protection",
+ "log-action-filter-rights-rights": "Manual change",
+ "log-action-filter-rights-autopromote": "Automatic change",
+ "log-action-filter-suppress-event": "Log suppression",
+ "log-action-filter-suppress-revision": "Revision suppression",
+ "log-action-filter-suppress-delete": "Page suppression",
+ "log-action-filter-suppress-block": "User supppression by block",
+ "log-action-filter-suppress-reblock": "User suppression by reblock",
+ "log-action-filter-upload-upload": "New upload",
+ "log-action-filter-upload-overwrite": "Reupload"
}
diff --git a/languages/i18n/eo.json b/languages/i18n/eo.json
index 8e163a759f..eba4a9957b 100644
--- a/languages/i18n/eo.json
+++ b/languages/i18n/eo.json
@@ -45,7 +45,8 @@
"Matma Rex",
"Xð",
"Robin van der Vliet",
- "Zciric"
+ "Zciric",
+ "Psychoslave"
]
},
"tog-underline": "Substreki ligilojn",
@@ -63,6 +64,7 @@
"tog-watchdefault": "Aldoni al mia atentaro paÄojn kaj dosierojn redaktitajn de mi",
"tog-watchmoves": "Aldoni paÄojn kaj dosierojn, kiujn mi movas, al mia atentaro",
"tog-watchdeletion": "Aldoni paÄojn kaj dosierojn, kiujn mi forigas, al mia atentaro",
+ "tog-watchuploads": "Aldonu novajn dosierojn ke mi alÅutas al mia atentaro",
"tog-watchrollback": "Aldoni paÄojn, kie mi amasmalfaris, al mia atentaro.",
"tog-minordefault": "Marki defaÅlte Äiujn redaktojn kiel etajn",
"tog-previewontop": "Montri antaÅrigardon antaÅ redaktilo",
@@ -80,6 +82,7 @@
"tog-watchlisthidebots": "KaÅi robotajn redaktojn de la atentaro",
"tog-watchlisthideminor": "KaÅi malgrandajn redaktojn de la atentaro",
"tog-watchlisthideliu": "KaÅi redaktojn de ensalutitaj uzantoj de la atentaro",
+ "tog-watchlistreloadautomatically": "ReÅarÄi la atentaron aÅtomate Äiam filtro estas ÅanÄita (Necesi Äavoskripton)",
"tog-watchlisthideanons": "KaÅi redaktojn de anonimuloj de la atentaro",
"tog-watchlisthidepatrolled": "KaÅi patrolitajn redaktojn de la atentaro",
"tog-watchlisthidecategorization": "KaÅu enkategoriigon de paÄoj",
@@ -104,13 +107,13 @@
"thursday": "ĵaÅdo",
"friday": "vendredo",
"saturday": "sabato",
- "sun": "Dim",
- "mon": "Lun",
- "tue": "Mar",
+ "sun": "dim",
+ "mon": "lun",
+ "tue": "mar",
"wed": "Mer",
"thu": "Ä´aÅ",
"fri": "Ven",
- "sat": "Sab",
+ "sat": "sab",
"january": "januaro",
"february": "februaro",
"march": "marto",
@@ -189,7 +192,7 @@
"anontalk": "Diskuto",
"navigation": "Navigado",
"and": " kaj",
- "qbfind": "Trovi",
+ "qbfind": "SerÄi",
"qbbrowse": "Foliumi",
"qbedit": "Redakti",
"qbpageoptions": "Äi tiu paÄo",
@@ -237,11 +240,11 @@
"talkpagelinktext": "diskuto",
"specialpage": "Speciala PaÄo",
"personaltools": "Personaj iloj",
- "articlepage": "Rigardi artikolon",
+ "articlepage": "Vidi paÄenhavon",
"talk": "Diskuto",
"views": "Vidoj",
"toolbox": "Iloj",
- "userpage": "Rigardi personan paÄon",
+ "userpage": "Vidi uzantan paÄon",
"projectpage": "Rigardi projektopaÄon",
"imagepage": "Vidi dosieropaÄon",
"mediawikipage": "Vidi mesaÄopaÄon",
@@ -345,6 +348,7 @@
"databaseerror-query": "Mendo: $1",
"databaseerror-function": "Funkcio: $1",
"databaseerror-error": "Eraro: $1",
+ "transaction-duration-limit-exceeded": "Por eviti krei egan atendotempon de replikado, tiu transakcio estis Äesigita pro la skribdaÅro ($1) superigis la limon da $2 {{plural:$2|sekondo|sekondoj}}.",
"laggedslavemode": "Avertu: la paÄo eble ne enhavas lastatempajn Äisdatigojn.",
"readonly": "Datumbazo Ålosita, nurlega",
"enterlockreason": "Bonvolu klarigi, kial oni Ålosas la datumbazon, kaj\nla estimatan tempon de malÅlosado.",
@@ -384,12 +388,12 @@
"perfcached": "La sekvantaj informoj venas el kaÅmemoro kaj eble ne estas Äisdataj. Maksimumo de {{PLURAL:$1|unu rezulto estas disponebla|$1 rezultoj estas disponeblaj}} en la kaÅmemoro.",
"perfcachedts": "La jenaj datumoj estas el kaÅmemoro kaj estis laste Äisdatigitaj $1. Maksimumo de {{PLURAL:$4|unu rezulto estas disponebla|$4 rezultoj estas disponeblaj}} en la kaÅmemoro.",
"querypage-no-updates": "Äisdatigoj por Äi tiu paÄo estas nune neebligitaj.\nDatumoj Äi tie ne estos nune refreÅigitaj.",
- "viewsource": "Rigardi vikitekston",
+ "viewsource": "Vidi vikitekston",
"viewsource-title": "Vidi fonton por $1",
"actionthrottled": "Agado limigita",
"actionthrottledtext": "Por kontraÅi misuzon, vi estas limigita farante Äi tiun agon tro pluroble en mallonga tempdaÅro, kaj vi transpasis Äi tiun limon. Bonvolu refaru post kelkaj minutoj.",
"protectedpagetext": "Tiu Äi paÄo estas Ålosita por malebligi redaktadon.",
- "viewsourcetext": "Vi povas rigardi kaj kopii la fonton de la paÄo.",
+ "viewsourcetext": "Vi povas vidi kaj kopii la fonton de la paÄo.",
"viewyourtext": "Vi povas vidi kaj kopii la fonton de viaj redaktoj al Äi tiu paÄo.",
"protectedinterface": "Äi tiu paÄo provizas interfacan tekston por la programaro, kaj estas Ålosita por malebligi misuzon.\nPor aldoni aÅ ÅanÄi tradukojn por Äiuj vikioj, bonvolu uzi [//translatewiki.net/ translatewiki.net], la projekton por provizi tradukojn por MediaWiki.",
"editinginterface": "Atentu: Vi redaktas paÄon, kiu provizas interfacan tekston por la programaro.\nÅanÄoj de Äi tiu teksto ÅanÄos aspekton de la interfaco por aliaj uzantoj de Äi tiu vikio.\nPor aldoni aÅ ÅanÄi tradukojn por Äiuj vikioj, bonvolu uzi [//translatewiki.net/ translatewiki.net], la projekton por provizi tradukojn por MediaWiki.",
@@ -500,7 +504,7 @@
"noemail": "RetpoÅtadreso ne estas registrita por uzanto \"$1\".",
"noemailcreate": "Vi devas provizi validan retadreson",
"passwordsent": "Oni sendis novan pasvorton al la retpoÅtadreso\nregistrita por \"$1\".\nBonvolu ensaluti denove ricevinte Äin.",
- "blocked-mailpassword": "Via IP-adreso estas forbarita de redaktado, kaj tial\nne rajtas uzi la pasvorto-rekovran funkcion por malebligi misuzon.",
+ "blocked-mailpassword": "Via IP-adreso estas forbarita de redaktado. Por preventi fiuzojn, la pasvorto-restaÅron estas malpermesita per tiu IP-adreso.",
"eauthentsent": "Konfirma retmesaÄo estis sendita al la nomita retadreso. AntaÅ ol iu ajn alia mesaÄo estos sendita al la konto, vi devos sekvi la instrukciojn en la mesaÄo por konfirmi ke la konto ja estas via.",
"throttled-mailpassword": "RetpoÅto kun reÅargita pasvorto estis jam sendita ene de la {{PLURAL:$1|lasta horo|lastaj $1 horoj}}.\nPor preventi misuzon, nur unu reÅargita pasvorto estos sendita dum {{PLURAL:$1|horo|$1 horoj}}.",
"mailerror": "Okazis eraro sendante retpoÅtaĵon: $1",
@@ -537,7 +541,7 @@
"newpassword": "Nova pasvorto",
"retypenew": "Retajpi novan pasvorton",
"resetpass_submit": "Fari pasvorton kaj ensaluti",
- "changepassword-success": "Via pasvorto estis sukcese ÅanÄita!",
+ "changepassword-success": "Via pasvorto estis ÅanÄita!",
"changepassword-throttled": "Vi tro ofte provis ensaluti al Äi tiu konto.\nBonvolu atendi $1 antaÅ ol reprovi.",
"botpasswords": "Robotaj pasvortoj",
"botpasswords-summary": "Robotaj pasvortoj ebligas aliron al uzanto-konto per API sen uzado de Äefaj ensalutaj datumoj de la konto. La uzanto-rajtoj disponeblaj dum ensaluto per robota pasvorto povas esti limigitaj.\n\nSe vi ne scias, kial vi devus fari tion, vi probable maldevus fari tion. Neniu devus peti vin generi pasvorton tie Äi kaj transdoni Äin al li.",
@@ -552,14 +556,24 @@
"botpasswords-label-cancel": "Nuligi",
"botpasswords-label-delete": "Forigi",
"botpasswords-label-resetpassword": "Rekomencigi la pasvorton",
+ "botpasswords-label-grants": "Uzeblaj permesdonoj:",
+ "botpasswords-help-grants": "Äiu permesdono provizas aliron al listitaj uzantaj permisoj, kiujn uzantkonto jam havas. Vidu la [[Special:ListGrants|tabelon de permisdonoj]] por pli da informo.",
"botpasswords-label-restrictions": "Limigoj de uzado:",
+ "botpasswords-label-grants-column": "Permisdonita",
"botpasswords-bad-appid": "La robota nomo \"$1\" estas malvalida.",
+ "botpasswords-insert-failed": "Aldono de la robota nomo \"$1\" ne sukcesis. Äu Äi jam estis aldonita?",
+ "botpasswords-update-failed": "Äisdatigo de la robota nomo \"$1\" ne sukcesis. Äu Äi estis forigita?",
"botpasswords-created-title": "Robota pasvorto kreita",
- "botpasswords-created-body": "La robota pasvorto \"$1\" estis sukcese kreita.",
+ "botpasswords-created-body": "La robota pasvorto por robota nomo \"$1\" de la uzanto \"$2\" estis kreita.",
"botpasswords-updated-title": "Robota pasvorto Äisdatigita",
- "botpasswords-updated-body": "La robota pasvorto \"$1\" estis sukcese Äisdatigita.",
+ "botpasswords-updated-body": "La robota pasvorto por robota nomo \"$1\" de la uzanto \"$2\" estis Äisdatigita.",
"botpasswords-deleted-title": "Robota pasvorto forigita",
- "botpasswords-deleted-body": "La robota pasvorto \"$1\" estis forigita.",
+ "botpasswords-deleted-body": "La robota pasvorto por robota nomo \"$1\" de la uzanto \"$2\" estis forigita.",
+ "botpasswords-newpassword": "La nova pasvorto por ensaluti kun $1 estas $2 . Bonvolu registri tiun por referenconto.",
+ "botpasswords-no-provider": "Robotopasvortensalutoprovizilo (''BotPasswordsSessionProvider'') maldisponeblas.",
+ "botpasswords-restriction-failed": "Limigoj pri robota pasvorto maleblas tiun uzantonomon.",
+ "botpasswords-invalid-name": "La difinita uzantnomo malenhavas la robotopasvortan disigilon (\"$1\").",
+ "botpasswords-not-exist": "Uzanto \"$1\" ne havas robotopasvorton, kiu nomiÄas \"$2\".",
"resetpass_forbidden": "Pasvortoj ne estas ÅanÄeblaj",
"resetpass-no-info": "Vi devas ensaluti por atingi Äi tiun paÄon rekte.",
"resetpass-submit-loggedin": "ÅanÄi pasvorton",
@@ -587,6 +601,7 @@
"passwordreset-emailtext-user": "Uzanto $1 de {{SITENAME}} petis restarigo de via pasvorto por {{SITENAME}}\n($4). La {{PLURAL:$3|jena uzanto-konto estas asociita|jenaj uzanto-kontoj estas asociitaj}} kun Äi tiu retpoÅtadreso:\n\n$2\n\nÄi {{PLURAL:$3|tiu provizora pasvorto|tiuj provizoraj pasvortoj}} findatiÄos {{PLURAL:$5|unu tagon|$5 tagojn}}.\nVi devas ensaluti kaj elekti novan pasvorton nun. Se iu alia petis Äi tion,\naÅ se vi memoris vian originalan pasvorton, kaj vi ne plu volas ÅanÄi\nÄin, vi povas ignori Äi tiun mesaÄon kaj uzi vian malnovan pasvorton.",
"passwordreset-emailelement": "Salutnomo: \n$1\n\nProvizora pasvorto: \n$2",
"passwordreset-emailsentemail": "Se tiu Äu retpoÅta adreso estas kunligita kun via konto, tiam al Äi tiu adreso estos sendita retpoÅto por renovigi pasvorton.",
+ "passwordreset-emailsentusername": "Se estas retpoÅta adreso, kiu estas asocigita kun tiu uzantnomo, tiam sendos retpôstan mesaÄon pri reasigno de pasvorto.",
"passwordreset-emailsent-capture": "RetpoÅto kun renovigita pasvorto estis sendita, kiu estas montrata malsupre.",
"passwordreset-emailerror-capture": "RetpoÅto kun renovigita pasvorto estis generita, montrata sube, sed sendado al la {{GENDER:$2|uzanto}} malsukcesis: $1",
"changeemail": "ÅanÄi aÅ forigi retpoÅtadreson",
@@ -613,7 +628,7 @@
"bold_tip": "Grasa teksto",
"italic_sample": "Kursiva teksto",
"italic_tip": "Kursiva teksto",
- "link_sample": "Ligtitolo",
+ "link_sample": "Titolo de la ligilo",
"link_tip": "Interna ligilo",
"extlink_sample": "http://www.example.com ligtitolo",
"extlink_tip": "Ekstera ligilo (memoru http:// prefikson)",
@@ -655,7 +670,7 @@
"nosuchsectiontext": "Vi provis redakti sekcion, kiu ne ekzistas.\nÄi eble estis movita aÅ forigita dum vi rigardis la paÄon.",
"loginreqtitle": "Nepre ensaluti",
"loginreqlink": "ensaluti",
- "loginreqpagetext": "Vi devas $1 por rigardi aliajn paÄojn.",
+ "loginreqpagetext": "Bonvolu $1 por vidi aliajn paÄojn.",
"accmailtitle": "La pasvorto estas sendita.",
"accmailtext": "Hazarde generita pasvorto por [[User talk:$1|$1]] estis sendita al $2.\n\nLa pasvorto por Äi tiu nova konto povas esti ÅanÄita en la paÄo ''[[Special:ChangePassword|ÅanÄi pasvorton]]'' dum ensalutado.",
"newarticle": "(Nova)",
@@ -699,7 +714,7 @@
"copyrightwarning2": "Bonvolu noti ke Äiuj kontribuoj al {{SITENAME}} povas esti reredaktitaj, ÅanÄitaj aÅ forigitaj de aliaj kontribuantoj. Se vi ne deziras, ke viaj verkoj estu senkompate reredaktitaj, ne publikigu ilin Äi tie. \nVi ankaÅ promesu al ni ke vi verkis tion mem aÅ kopiis el publika domajno aÅ simila libera fonto (vidu $1 por detaloj).\n'''NE PROPONU KOPIRAJTITAJN VERKOJN SEN PERMESO!'''",
"editpage-cannot-use-custom-model": "La enhavomodelo de Äi tiu paÄo ne povas esti ÅanÄata.",
"longpageerror": "'''Eraro: La teksto, kiun vi prezentis, longas {{PLURAL:$1|$1 kilobajton|$1 kilobajtojn}}, kio estas pli longa ol la maksimumo de {{PLURAL:$2|$2 kilobajto|$2 kilobajtoj}}.'''\nÄi ne povas esti konservita.",
- "readonlywarning": "'''AVERTO: La datumbazo estas Ålosita por teknika laboro, do vi ne povas konservi viajn redaktojn Äi-momente.\nVi eble volus elkopii kaj englui la tekston al tekstdosiero por konservi Äin por posta uzo.'''\n\nLa administranto kiu Ålosis Äin donis Äi tiun eksplikaĵon: $1",
+ "readonlywarning": "'''AVERTO: La datumbazo estas Ålosita por teknika laboro, do vi ne povas konservi viajn redaktojn Äi-momente.'''\nVi eble volus elkopii kaj alglui vian tekston al tekstdosiero kaj konservi Äin por posta uzo.\n\nLa administranto kiu Ålosis Äin donis Äi tiun eksplikaĵon: $1",
"protectedpagewarning": "'''Averto: Äi tiu paÄo estas Ålosita kontraÅ redaktado krom de administrantoj.'''\nJen la lasta protokolero provizita por via referenco:",
"semiprotectedpagewarning": "'''Notu:''' Äi tiu paÄo estas Ålosita tiel ke nur ensalutintaj uzantoj povas redakti Äin.\nJen la lasta protokolero por via referenco:",
"cascadeprotectedwarning": "Averto: Äi tiu paÄo estas Ålosita, tiel ke nur uzantoj kun administrantaj privilegioj povas redakti Äin, Äar Äi estas inkludita en la {{PLURAL:$1|sekvan kaskade protektitan paÄon|sekvajn kaskade protektitajn paÄojn}}:",
@@ -718,9 +733,10 @@
"permissionserrors": "Eraro pri permeso",
"permissionserrorstext": "Vi ne rajtas fari tion pro la {{PLURAL:$1|sekva kialo|sekvaj kialoj}}:",
"permissionserrorstext-withaction": "Vi ne rajtas $2, pro la {{PLURAL:$1|jena kialo|jenaj kialoj}}:",
- "contentmodelediterror": "Vi ne povas prilabori Äi tiun version, Äar Äia enhavomodelo $1
kaj la aktuala enhavomodelo de la paÄo estas $2
.",
+ "contentmodelediterror": "Vi ne povas prilabori Äi tiun reviziaĵo, Äar Äia enhavoÅablono estas $1
, kiu malsamas la aktualan enhavoÅablonon de la paÄo $2
.",
"recreate-moveddeleted-warn": "'''Averto: Vi rekreas paÄon, kiu estis antaÅe forigita.'''\n\nVi konsideru, Äu konvenas daÅre redakti Äi tiun paÄon.\nJen la protokolo de forigoj kaj alinomigado por via oportuno:",
"moveddeleted-notice": "Äi tiu paÄo estis forigita.\nPliaj detaloj estas en protokolo pri forigado kaj alinomado de tiu Äi paÄo.",
+ "moveddeleted-notice-recent": "Pardonon, tiu paÄo freÅdate estis forigita (en la dauro de la lasta 24 horoj).\nLa forigo kaj la movprotokolo pri la paÄo estas provizitaj sube por referenco.",
"log-fulllog": "Vidi kompletan protokolon",
"edit-hook-aborted": "Redakto estis Äesigita per etendaĵo de la Vikia softvaro.\nÄi ne donis eksplikon.",
"edit-gone-missing": "Ne eblis Äisdatigi la paÄon.\nVerÅajne Äi estis forigita.",
@@ -743,6 +759,7 @@
"content-model-css": "CSS",
"content-json-empty-object": "Malplena objeto",
"content-json-empty-array": "Malplena tabelo",
+ "duplicate-args-warning": "'''Averto:''' [[:$1]] vokas je [[:$2]] kun pli ol unu valoro por la parametro \"$3\". Nur la lasta liverita valoro estas uzonta.",
"duplicate-args-category": "PaÄoj kun pluroblaj argumentoj en Åablonvokoj",
"duplicate-args-category-desc": "La paÄo enhavas uzon de Åablono kun pluroble uzitaj argumentoj, kiel ekzemple {{foo|bar=1|bar=2}}
aÅ {{foo|bar|1=baz}}
.",
"expensive-parserfunction-warning": "Averto: Äi tiu paÄo enhavas tro da multekostaj sintaksaj funkcio-vokoj.\n\nÄi havu malpli ol $2 {{PLURAL:$2|vokon|vokojn}}, sed nun estas $1 {{PLURAL:$1|voko|vokoj}}.",
@@ -772,7 +789,7 @@
"cantcreateaccounttitle": "Ne eblas krei konton",
"cantcreateaccount-text": "Konto-kreado de Äi tiu IP-adreso ('''$1''') estis forbarita de [[User:$3|$3]].\n\nLa kialo donata de $3 estas ''$2''.",
"cantcreateaccount-range-text": "La kreado de kontoj de IP-adresoj en la intervalo $1 , kiu inkludas vian IP-adreson ($4 ), estis blokita de [[User:$3|$3]].\n\nLa donita kialo de $3 estas $2 ",
- "viewpagelogs": "Rigardi la protokolojn por tiu Äi paÄo",
+ "viewpagelogs": "Vidi la protokolojn por tiu Äi paÄo",
"nohistory": "Ne ekzistas historio de redaktoj por Äi tiu paÄo.",
"currentrev": "Aktuala versio",
"currentrev-asof": "Nuna versio ekde $1",
@@ -845,9 +862,9 @@
"revdelete-unsuppress": "Forigi limigojn al restarigitaj versioj",
"revdelete-log": "Kialo:",
"revdelete-submit": "Apliki al {{PLURAL:$1|elektita revizio|elektitaj revizioj}}",
- "revdelete-success": "'''Revizia videbleco estas sukcese Äisdatigita.'''",
+ "revdelete-success": "'''Revizivideblecon Äisdatigis.'''",
"revdelete-failure": "'''Videblecon de revizio ne eblis Äisdatigi:'''\n$1",
- "logdelete-success": "'''Videbleco de evento sukcese farita.'''",
+ "logdelete-success": "'''Protokolovideblecon ensignitan.'''",
"logdelete-failure": "'''Protokola videbleco ne estis akordebla:'''\n$1",
"revdel-restore": "ÅanÄi videblecon",
"pagehist": "PaÄa historio",
@@ -878,7 +895,13 @@
"mergehistory-empty": "Neniuj versioj estas kunigeblaj.",
"mergehistory-done": "$3 {{PLURAL:$3|versio|versioj}} de $1 sukcese estis {{PLURAL:$3|kunigita|kunigitaj}} en [[:$2]].",
"mergehistory-fail": "Ne povis fari la historian kunigon; bonvolu konstati la paÄajn kaj tempajn parametrojn.",
+ "mergehistory-fail-bad-timestamp": "Tempomarko estas malvalida.",
"mergehistory-fail-invalid-source": "Fonta paÄo estas malvalida.",
+ "mergehistory-fail-invalid-dest": "Cela paÄo estas malvalida.",
+ "mergehistory-fail-no-change": "Historio-kunfandado kunfandis neniun revizion. Bonvolu rekontroli la paÄon kaj la tempo-parametrojn.",
+ "mergehistory-fail-permission": "NesufiÄa permesoj por kunfadi historion.",
+ "mergehistory-fail-self-merge": "Fonta kaj cela paÄoj samas.",
+ "mergehistory-fail-timestamps-overlap": "Fonta revizio surkunigas aÅ postokuras la celan revizion.",
"mergehistory-fail-toobig": "Ne eblas kunigi historiojn Äar pli ol sojlo de $1 {{PLURAL:$1|revizio|revizioj}} estus {{PLURAL:$1|movita|movitaj}}.",
"mergehistory-no-source": "FontpaÄo $1 ne ekzistas.",
"mergehistory-no-destination": "CelpaÄo $1 ne ekzistas.",
@@ -898,7 +921,7 @@
"lineno": "Linio $1:",
"compareselectedversions": "Kompari la elektitajn versiojn",
"showhideselectedversions": "Montri/kaÅi elektitajn versiojn",
- "editundo": "malfari",
+ "editundo": "Redaktomalfaru",
"diff-empty": "(Neniu diferenco)",
"diff-multi-sameuser": "({{PLURAL:$1|Unu meza versio|$1 mezaj versioj}} de la sama uzanto ne montriÄas)",
"diff-multi-otherusers": "({{PLURAL:$1|Unu meza versio|$1 mezaj versioj}} de {{PLURAL:$2|alia uzanto|$2 uzantoj}} ne montriÄas)",
@@ -921,7 +944,7 @@
"searchmenu-new": "Krei la paÄon \"[[:$1]]\" en Äi tiu vikio! {{PLURAL:$2|0=|Vidu ankaÅ la paÄon trovitan per via serÄo.|Vidu ankaÅ la trovitajn serÄrezultojn.}}",
"searchprofile-articles": "Enhavaj paÄoj",
"searchprofile-images": "Plurmedio",
- "searchprofile-everything": "Äio",
+ "searchprofile-everything": "Äion",
"searchprofile-advanced": "Progresa",
"searchprofile-articles-tooltip": "SerÄo en $1",
"searchprofile-images-tooltip": "SerÄi dosierojn",
@@ -934,6 +957,7 @@
"search-category": "(kategorio $1)",
"search-file-match": "(kongruas kun dosiera enhavo)",
"search-suggest": "Äu vi intenciis: $1",
+ "search-rewritten": "Montru rezultojn por $1. SerÄita anstataÅ $2.",
"search-interwiki-caption": "Kunprojektoj",
"search-interwiki-default": "Rezultoj de $1:",
"search-interwiki-more": "(plu)",
@@ -944,6 +968,7 @@
"showingresultsinrange": "Malsupre montriÄas {{PLURAL:$1|1 rezulto|$1 rezultoj}} en la intervalo #$2 Äis #$3 .",
"search-showingresults": "{{PLURAL:$4|Rezulto $1 el $3 |Rezultoj $1 - $2 el $3 }}",
"search-nonefound": "La serÄomendo rezultis kun neniuj trafoj.",
+ "search-nonefound-thiswiki": "Neniu rezulto kongruis la peton tra tiu retejo.",
"powersearch-legend": "Progresa serÄo",
"powersearch-ns": "SerÄi en nomspacoj:",
"powersearch-togglelabel": "Elekti:",
@@ -996,6 +1021,7 @@
"prefs-help-recentchangescount": "Äi tiu inkluzivas lastajn ÅanÄojn, paÄajn historiojn, kaj protokolojn.",
"prefs-help-watchlist-token2": "Tio estas la sekreta Ålosilo al la retfluo de via atentaro.\nÄiu, kiu konas Äin, povas legi vian atentaron. Do, ne kunhavigu Äin.\nSe vi devas, [[Special:ResetTokens|vi povas rekomencigi Äin]].",
"savedprefs": "Viaj preferoj estas konservitaj.",
+ "savedrights": "La uzanto-rajtojn de {{GENDER:$1|$1}} konservigis.",
"timezonelegend": "Horzono:",
"localtime": "Loka tempo:",
"timezoneuseserverdefault": "Uzi defaÅlton de servilo ($1)",
@@ -1066,10 +1092,10 @@
"userrights": "Prizorgi rajtojn de uzantoj",
"userrights-lookup-user": "Administri grupojn de uzantoj",
"userrights-user-editname": "Entajpu salutnomon:",
- "editusergroup": "Redakti grupojn de uzantoj",
+ "editusergroup": "Redakti grupojn de {{GENDER:$1|uzanto}}",
"editinguser": "ÅanÄado de uzanto-rajtoj de la {{GENDER:$1|uzanto|uzantino}} [[User:$1|$1]] $2",
"userrights-editusergroup": "Redakti grupojn de uzantoj",
- "saveusergroups": "Konservi grupojn de uzantoj",
+ "saveusergroups": "Konservi grupojn de {{GENDER:$1|viruzuloj|uzulinoj|uzantoj}}",
"userrights-groupsmember": "Membro de:",
"userrights-groupsmember-auto": "Implica membro de:",
"userrights-groups-help": "Vi povas modifi la grupojn kiun Äi uzanto enestas.\n* Markita markbutono signifas ke la uzanto estas en tiu grupo.\n* Nemarkita markbutono signifas ke la uzanto ne estas in tiu grupo.\n* Steleto (*) signifas ke vi ne povas forigi la grupon post vi aldonis Äin, aÅ male.",
@@ -1081,14 +1107,14 @@
"userrights-changeable-col": "Grupoj kiujn vi povas ÅanÄi",
"userrights-unchangeable-col": "Grupoj kiujn vi ne povas ÅanÄi",
"userrights-conflict": "Konflikto Äe la ÅanÄo de uzantorajtoj! Bonvolu kontroli kaj konfirmi viajn ÅanÄojn.",
- "userrights-removed-self": "Vi sukcese nuligis viajn proprajn rajtojn. Do vi ne plu rajtas aliri Äi tiun paÄon.",
+ "userrights-removed-self": "Vi nuligis viajn proprajn rajtojn, do vi ne plu rajtas aliri Äi tiun paÄon.",
"group": "Grupo:",
"group-user": "Uzantoj",
"group-autoconfirmed": "AÅtomate konfirmitaj uzantoj",
"group-bot": "Robotoj",
"group-sysop": "Administrantoj",
"group-bureaucrat": "Burokratoj",
- "group-suppress": "Superrigardoj",
+ "group-suppress": "Foriganaro",
"group-all": "(Äiuj)",
"group-user-member": "{{GENDER:$1|uzanto|uzantino}}",
"group-autoconfirmed-member": "{{GENDER:$1|aÅtomate konfirmita uzanto|aÅtomate konfirmita uzantino}}",
@@ -1101,12 +1127,13 @@
"grouppage-bot": "{{ns:project}}:Robotoj",
"grouppage-sysop": "{{ns:project}}:Administrantoj",
"grouppage-bureaucrat": "{{ns:project}}:Burokratoj",
- "grouppage-suppress": "{{ns:project}}:Superrigardo",
+ "grouppage-suppress": "{{ns:project}}:Forigi",
"right-read": "Legi paÄojn",
"right-edit": "Redakti paÄojn",
"right-createpage": "Kreu paÄojn (kiuj ne estas diskuto-paÄoj)",
"right-createtalk": "Krei diskuto-paÄojn",
"right-createaccount": "Krei novajn uzanto-kontojn",
+ "right-autocreateaccount": "AÅtomate ensaluti eksteruzantan konton",
"right-minoredit": "Marki redaktojn kiel etajn",
"right-move": "Movi paÄojn",
"right-move-subpages": "Alinomigi paÄojn kun Äiaj subpaÄoj",
@@ -1129,7 +1156,7 @@
"right-bigdelete": "Forigi paÄojn kun grandaj historioj",
"right-deletelogentry": "Forigi kaj malforigi specifajn enmetojn en la registro.",
"right-deleterevision": "Forigi kaj malforigi specifajn versiojn de paÄoj",
- "right-deletedhistory": "Rigardi listanojn de forigitaj historioj, sen ties asociaj tekstoj",
+ "right-deletedhistory": "Vidi forigitajn historieroj, sen ties asociaj tekstoj",
"right-deletedtext": "Rigardi forigitan tekston kaj ÅanÄojn inter forigitaj revizioj.",
"right-browsearchive": "SerÄi forigitajn paÄojn",
"right-undelete": "Restarigi paÄon",
@@ -1151,7 +1178,7 @@
"right-edituserjs": "Redaktu JS-dosierojn de aliaj uzantoj",
"right-editmyusercss": "Redakti viajn proprajn CSS-dosierojn",
"right-editmyuserjs": "Redakti viajn proprajn JavaScript-dosierojn",
- "right-viewmywatchlist": "Rigardi vian atentaron",
+ "right-viewmywatchlist": "Vidi vian propran atentaron",
"right-editmywatchlist": "Redakti vian propran atentaron. Notu, ke kelkaj agoj ankoraÅ ebligas aldoni paÄojn sen Äi tiu rajto.",
"right-viewmyprivateinfo": "Vidi viajn proprajn privatajn informojn (ekz. retpoÅtan adreson, veran nomon)",
"right-editmyprivateinfo": "Redakti viajn proprajn privatajn informojn (ekz. retpoÅtan adreson, veran nomon)",
@@ -1163,7 +1190,7 @@
"right-importupload": "Importi paÄojn de dosiera alÅuto",
"right-patrol": "Marki redaktojn kiel patrolitajn",
"right-autopatrol": "Fari redaktojn aÅtomate markitajn kiel patrolitajn",
- "right-patrolmarks": "Rigardi patrolmarkojn de lastaj ÅanÄoj",
+ "right-patrolmarks": "Vidi patrolmarkojn de lastaj ÅanÄoj",
"right-unwatchedpages": "Vidi la liston de nepriatentitaj paÄoj",
"right-mergehistory": "Kunfandigi la historiojn de paÄoj",
"right-userrights": "Redakti Äiujn uzanto-rajtojn",
@@ -1175,8 +1202,36 @@
"right-managechangetags": "Kreado kaj forigado de [[Special:Tags|etikedoj]] de datumbazo",
"right-applychangetags": "Aldoni [[Special:Tags|etikedojn]] al propraj ÅanÄoj",
"right-changetags": "Aldoni kaj forigi arbitrajn [[Special:Tags|etikedojn]] Äe unuopaj revizioj kaj protokoleroj",
+ "grant-generic": "\"$1\" rajtaro",
+ "grant-group-page-interaction": "Interagi paÄojn",
+ "grant-group-file-interaction": "Interagi aÅdvidaĵajn dosierojn",
+ "grant-group-watchlist-interaction": "Interagi vian atentaron",
"grant-group-email": "Sendi retpoÅton",
+ "grant-group-high-volume": "Efektivigi ampleksege aktivecon",
+ "grant-group-customization": "Personecigoj kaj preferoj",
+ "grant-group-administration": "Efektivigi administrajn agojn",
+ "grant-group-other": "Diversaj aktivecoj",
+ "grant-blockusers": "Bloki kaj malbloki uzantojn",
"grant-createaccount": "Krei kontojn",
+ "grant-createeditmovepage": "Krei, redakti kaj alinomi paÄojn",
+ "grant-delete": "Forigi paÄojn, reviziaĵojn kaj protokolerojn",
+ "grant-editinterface": "Redakti la MediaVikian nomspacon kaj la CSS/Äavoskripto de uzanto",
+ "grant-editmycssjs": "Redakti vian uzantan CSS/Äavoskripton",
+ "grant-editmyoptions": "Redakti vian uzantan preferojn",
+ "grant-editmywatchlist": "Redakti vian atentaron",
+ "grant-editpage": "Redakti ekzistantajn paÄojn",
+ "grant-editprotected": "Redakti protektitajn paÄojn",
+ "grant-highvolume": "Ampleksegaj redaktado",
+ "grant-oversight": "KaÅi uzantojn kaj forigi reviziaĵojn",
+ "grant-patrol": "Patroli ÅanÄojn al pâgoj",
+ "grant-protect": "Protekti kaj malprotekti paÄojn",
+ "grant-rollback": "Malvalidi ÅanÄojn al paÄoj",
+ "grant-sendemail": "RetpoÅti al aliaj uzantoj",
+ "grant-uploadeditmovefile": "AlÅuti, anstataÅigi kaj alinomi dosierojn",
+ "grant-uploadfile": "AlÅuti novajn dosierojn",
+ "grant-basic": "Bazaj rajtoj",
+ "grant-viewdeleted": "Vidi forigitajn dosierojn kaj paÄojn",
+ "grant-viewmywatchlist": "Rigardi vian atentaron",
"newuserlogpage": "Protokolo de uzanto-kreado",
"newuserlogpagetext": "Jen protokolo de lastaj kreadoj de uzantoj.",
"rightslog": "Protokolo de uzanto-rajtoj",
@@ -1186,7 +1241,8 @@
"action-createpage": "krei paÄojn",
"action-createtalk": "krei diskuto-paÄojn",
"action-createaccount": "krei Äi tiun uzanto-konton",
- "action-history": "rigardi historion de tiu Äi paÄo",
+ "action-autocreateaccount": "AÅtomate krei tiun eksteruzantan konton",
+ "action-history": "vidi historion de tiu Äi paÄo",
"action-minoredit": "marki Äi tiun redakton eta",
"action-move": "movi Äi tiun paÄon",
"action-move-subpages": "movi Äi tiun paÄon, kaj ties subpaÄojn",
@@ -1244,7 +1300,7 @@
"recentchanges-submit": "Montri",
"rcnotefrom": "Malsupre estas la {{PLURAL:$5|ÅanÄo|ÅanÄoj}} ekde $3, $4 (montrante Äis $1 ).",
"rclistfrom": "Montri novajn ÅanÄojn ekde \"$3 $2\"",
- "rcshowhideminor": "$1 redaktetojn",
+ "rcshowhideminor": "$1 etajn redaktojn",
"rcshowhideminor-show": "Montri",
"rcshowhideminor-hide": "KaÅi",
"rcshowhidebots": "$1 robotojn",
@@ -1262,6 +1318,7 @@
"rcshowhidemine": "$1 miajn redaktojn",
"rcshowhidemine-show": "Montri",
"rcshowhidemine-hide": "KaÅi",
+ "rcshowhidecategorization": "$1 paÄokategoriadon",
"rcshowhidecategorization-show": "Montri",
"rcshowhidecategorization-hide": "KaÅi",
"rclinks": "Montri $1 lastajn ÅanÄojn dum la $2 lastaj tagoj. $3",
@@ -1280,13 +1337,18 @@
"rc-enhanced-expand": "Montri detalojn (per JavaScript)",
"rc-enhanced-hide": "KaÅi detalojn",
"rc-old-title": "originale kreita kiel \"$1\"",
- "recentchangeslinked": "Rilataj paÄoj",
+ "recentchangeslinked": "Rilataj ÅanÄoj",
"recentchangeslinked-feed": "Rilataj paÄoj",
- "recentchangeslinked-toolbox": "Rilataj paÄoj",
+ "recentchangeslinked-toolbox": "Rilataj ÅanÄoj",
"recentchangeslinked-title": "ÅanÄoj rilataj al \"$1\"",
"recentchangeslinked-summary": "Jen listo de ÅanÄoj faritaj lastatempe al paÄoj ligitaj el specifa paÄo (aÅ al membroj de specifa kategorio).\nPaÄoj en [[Special:Watchlist|via atentaro]] estas '''grasaj'''.",
"recentchangeslinked-page": "Nomo de paÄo:",
"recentchangeslinked-to": "Montru ÅanÄojn al paÄoj ligitaj al la specifa paÄo anstataÅe.",
+ "recentchanges-page-added-to-category": "[[:$1]] kategorialdonita",
+ "recentchanges-page-added-to-category-bundled": "[[:$1]] kategorialdonita, [[Special:WhatLinksHere/$1|tiu paÄo estas inkluzivita ene de aliaj paÄoj]]",
+ "recentchanges-page-removed-from-category": "[[:$1]] kategoriforigita",
+ "recentchanges-page-removed-from-category-bundled": "[[:$1]] kategoriforigita, [[Special:WhatLinksHere/$1|tiu paÄo estas inkluzivita ene de aliaj paÄoj]]",
+ "autochange-username": "AÅtomata ÅanÄo de Mediavikio",
"upload": "AlÅuti dosieron",
"uploadbtn": "AlÅuti dosieron",
"reuploaddesc": "Reveni al la alÅuta formularo.",
@@ -1354,6 +1416,15 @@
"uploaddisabledtext": "AlÅutado de dosieroj estas malebligita.",
"php-uploaddisabledtext": "Dosiera alÅutado estas malÅalta en PHP. Bonvolu kontroli la preferon file_uploads.",
"uploadscripted": "HTML-aĵo aÅ skriptokodaĵo troviÄas en tiu Äi tiu dosiero, kiun TTT-foliumilo eble interpretus erare.",
+ "upload-scripted-pi-callback": "MalalÅuteblas dosieron, kiu enhavas instrukcion de XML-stilfolia traktado",
+ "uploaded-script-svg": "Trovis skriptelbero \"$1\" en la alÅutita SVGa dosiero.",
+ "uploaded-hostile-svg": "Trovis malsekura CSS en la stilero de alÅutita SVGa dosiero.",
+ "uploaded-event-handler-on-svg": "Ensigni eventotraktilajn atributojn $1=\"$2\"
estas malpermisita en SVGaj dosieroj.",
+ "uploaded-href-attribute-svg": "Atributoj je \"href\" en SVGaj dosieroj nur povas ligi al \"http://\" aÅ \"https://\" celoj, trovis <$1 $2=\"$3\">
.",
+ "uploaded-href-unsafe-target-svg": "Trovis je \"href\" ligita al malsekuraj datenoj: URIa celo <$1 $2=\"$3\">
en la alÅuta SVGa dosiero.",
+ "uploaded-animate-svg": "Trovis markon je \"animate\", kiu povus ÅanÄi la atributon je \"href\", per uzi la atributon je \"from\" <$1 $2=\"$3\">
en la alÅuta SVGa dosiero.",
+ "uploaded-setting-event-handler-svg": "Ensigni eventotraktilajn atributojn estas blokita, trovis <$1 $2=\"$3\">
en la alÅuta SVGa dosiero.",
+ "uploaded-setting-href-svg": "Uzi la markon je \"set\" por aldoni atributon je \"href\" al ujero estas blokita.",
"uploadscriptednamespace": "Äi tiu SVG-dosiero enhavas nevalidan nomspacon \"$1\"",
"uploadinvalidxml": "Ne eblas interpreti la XML-sintakson en la alÅutita dosiero",
"uploadvirus": "Viruso troviÄas en la dosiero! Detaloj: $1",
@@ -1438,6 +1509,7 @@
"uploadstash-badtoken": "Malsukcesis tiu ago, eble pro tio ke viaj ensalutiloj senvalidiÄis. Reprovu.",
"uploadstash-errclear": "Sensukcesis la forigo de la dosieroj.",
"uploadstash-refresh": "Aktualigi la dosierliston.",
+ "uploadstash-thumbnail": "Vidi bildetigon",
"invalid-chunk-offset": "Malvalida deÅovo de dosierpeco",
"img-auth-accessdenied": "Atingo malpermisita",
"img-auth-nopathinfo": "Mankas PATH_INFO (informo pri dosiervojo).\nVia servilo ne estas konfigurita por sendi Äi tiun informon.\nEble Äi estas CGI-bazita kaj ne subtenas img_auth.\nVidu https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Image_Authorization (angle).",
@@ -1486,7 +1558,7 @@
"listfiles-latestversion-no": "Ne",
"file-anchor-link": "Dosiero",
"filehist": "Dosiera historio",
- "filehist-help": "Klaku daton/tempon por rigardi la dosieron kiel Äin Åajnitan tiame.",
+ "filehist-help": "Klaku daton/tempon por vidi la dosieron kiel Äin Åajnitan tiame.",
"filehist-deleteall": "forigi Äiujn",
"filehist-deleteone": "forigi",
"filehist-revert": "restarigi",
@@ -1503,7 +1575,7 @@
"linkstoimage": "La {{PLURAL:$1|jena paÄo|jenaj paÄoj}} ligas al Äi tiu dosiero:",
"linkstoimage-more": "Pli ol $1 {{PLURAL:$1|paÄo|paÄoj}} ligas Äi tiun dosieron.\nLa jena listo montras la {{PLURAL:$1|unua paÄligilo|unuaj $1 paÄligiloj}} al nur Äi tiu dosiero.\n[[Special:WhatLinksHere/$2|Plena listo]] estas atingebla.",
"nolinkstoimage": "Neniu paÄo ligas al Äi tiu dosiero.",
- "morelinkstoimage": "Rigardi [[Special:WhatLinksHere/$1|pliajn ligilojn]] al Äi tiu dosiero.",
+ "morelinkstoimage": "Vidi [[Special:WhatLinksHere/$1|pliajn ligilojn]] al Äi tiu dosiero.",
"linkstoimage-redirect": "$1 (alidirektilo al dosiero) $2",
"duplicatesoffile": "La {{PLURAL:$1|jena dosiero estas duplikato|jenaj dosieroj estas duplikatoj}} de Äi tiu dosiero ([[Special:FileDuplicateSearch/$2|pluaj detaloj]]):",
"sharedupload": "Äi tiu dosiero estas de $1 kaj estas uzebla de aliaj projektoj.",
@@ -1563,7 +1635,7 @@
"randomincategory-submit": "Ek!",
"randomredirect": "Hazarda alidirekto",
"randomredirect-nopages": "Estas neniuj alidirektiloj en la nomspaco \"$1\".",
- "statistics": "Statistiko",
+ "statistics": "Statistikoj",
"statistics-header-pages": "PaÄaj statistikoj",
"statistics-header-edits": "Redaktaj statistikoj",
"statistics-header-users": "Pri la uzantaro",
@@ -1680,7 +1752,7 @@
"nopagetext": "La cela paÄo kiun vi enigis ne ekzistas.",
"pager-newer-n": "{{PLURAL:$1|pli nova 1|pli novaj $1}}",
"pager-older-n": "{{PLURAL:$1|pli malnova 1|pli malnovaj $1}}",
- "suppress": "Superrigardo",
+ "suppress": "Forigu",
"querypage-disabled": "Tiu Äi speciala paÄo estas malfunkciigita pro rendimentaj kialoj.",
"apihelp": "Helpo pri API",
"apihelp-no-such-module": "Modulo \"$1\" ne estis trovita.",
@@ -1723,7 +1795,7 @@
"allpagesto": "Montri paÄoj finante de:",
"allarticles": "Äiuj paÄoj",
"allinnamespace": "Äiuj paÄoj ($1 nomspaco)",
- "allpagessubmit": "Ek!",
+ "allpagessubmit": "Ek",
"allpagesprefix": "Montri paÄojn kun prefikso:",
"allpagesbadtitle": "La donata paÄo estis nevalida aÅ havis interlingvan aÅ intervikian prefikson. Äi eble enhavas unu aÅ plurajn signojn kiu ne povas esti uzataj en titoloj.",
"allpages-bad-ns": "{{SITENAME}} ne havas nomspacon \"$1\".",
@@ -1735,8 +1807,6 @@
"categories-submit": "Montri",
"categoriespagetext": "La {{PLURAL:$1|jena kategorio|jenaj kategorioj}} ekzistas jam en la vikio.\n[[Special:UnusedCategories|Neuzataj kategorioj]] ne estis montrataj Äi tie.\nVidu ankaÅ [[Special:WantedCategories|Dezirataj kategorioj]].",
"categoriesfrom": "Montri kategoriojn komencante de:",
- "special-categories-sort-count": "oridigi laÅ nombrado",
- "special-categories-sort-abc": "ordigi laÅ alfabeto",
"deletedcontributions": "Forigitaj kontribuoj de uzantoj",
"deletedcontributions-title": "Forigitaj kontribuoj de uzantoj",
"sp-deletedcontributions-contribs": "kontribuoj",
@@ -1776,6 +1846,7 @@
"listgrouprights-namespaceprotection-header": "Nomspacaj restriktoj",
"listgrouprights-namespaceprotection-namespace": "Nomspaco",
"listgrouprights-namespaceprotection-restrictedto": "Rajtoj, kiuj permesas al uzanto redakti",
+ "listgrants": "Rajdonaro",
"trackingcategories": "Kategorioj por kontrolado",
"trackingcategories-summary": "Äi tiu paÄo listigas kategoriojn por kontrolado, aÅtomate farita de la Mediavikia programaro. Ties nomoj estas ÅanÄebla, ÅanÄante la paran sistemmesaÄon en la nomspaco {{ns:8}}.",
"trackingcategories-msg": "Kategorio pri kontrolado",
@@ -1899,7 +1970,7 @@
"deleteprotected": "Vi ne povas forigi Äi tiun paÄon Äar Äi estis protektita.",
"deleting-backlinks-warning": "'''Atentigo:'''\n[[Special:WhatLinksHere/{{FULLPAGENAME}}|Aliaj paÄoj]] ligas al aÅ transkludas tiun Äi forigotan paÄon.",
"rollback": "Restarigi antaÅan redakton",
- "rollbacklink": "malfari",
+ "rollbacklink": "malvalidi",
"rollbacklinkcount": "nuligi $1 {{PLURAL:$1|redakton|redaktojn}}",
"rollbacklinkcount-morethan": "nuligi pli ol $1 {{PLURAL:$1|redakton|redaktojn}}",
"rollbackfailed": "Malfaro malsukcesis",
@@ -2334,11 +2405,7 @@
"import-logentry-upload-detail": "$1 {{PLURAL:$1|revizio importita|revizioj importitaj}}",
"import-logentry-interwiki-detail": "Importis $1 {{PLURAL:$1|revizion|reviziojn}} de $2",
"javascripttest": "Äavoskripta testado",
- "javascripttest-pagetext-noframework": "Äi tiu paÄo estas konservita por funkciigi testojn de JavaScript.",
- "javascripttest-pagetext-unknownframework": "Nekonta test-framo \"$1\".",
"javascripttest-pagetext-unknownaction": "Nekonata ago \"$1\".",
- "javascripttest-pagetext-frameworks": "Bonvolu elekti unu el la jenaj test-framoj: $1",
- "javascripttest-pagetext-skins": "Elektu kun kio etoso irigi la testojn:",
"javascripttest-qunit-intro": "Vidu [$1 testa dokumentaro] en mediawiki.org.",
"tooltip-pt-userpage": "Via uzantpaÄo",
"tooltip-pt-anonuserpage": "La uzantopaÄo por la IP adreso sub kiu vi estas redaktanta",
@@ -2365,9 +2432,9 @@
"tooltip-search": "SerÄi tra {{SITENAME}}",
"tooltip-search-go": "Iru al paÄo kun Äi preciza nomo se Äi ekzistas",
"tooltip-search-fulltext": "SerÄi la paÄojn por Äi tiu teksto",
- "tooltip-p-logo": "ÄefpaÄo",
- "tooltip-n-mainpage": "Viziti la ÄefpaÄon",
- "tooltip-n-mainpage-description": "Iri al la ÄefpaÄon",
+ "tooltip-p-logo": "Viziti la ÄefpaÄon",
+ "tooltip-n-mainpage": "Viziti la ÄefpaÄon",
+ "tooltip-n-mainpage-description": "Viziti la ÄefpaÄon",
"tooltip-n-portal": "Pri la projekto, kion vi povas fari, kie vi povas trovi ion",
"tooltip-n-currentevents": "Trovi fonajn informojn pri nunaj eventoj",
"tooltip-n-recentchanges": "Listo de la lastaj ÅanÄoj en la vikio.",
@@ -2393,7 +2460,7 @@
"tooltip-ca-nstab-mediawiki": "Rigardi la sisteman mesaÄon",
"tooltip-ca-nstab-template": "Rigardi la Åablonon",
"tooltip-ca-nstab-help": "Rigardi la helppaÄon",
- "tooltip-ca-nstab-category": "Vidu la paÄon de kategorioj",
+ "tooltip-ca-nstab-category": "Vidi la paÄon de la kategorio",
"tooltip-minoredit": "Marki tiun ÅanÄon kiel etan",
"tooltip-save": "Konservi viajn ÅanÄojn",
"tooltip-preview": "AntaÅrigardi viajn ÅanÄojn. Bonvolu uzi tion antaÅ ol konservi ilin!",
@@ -2404,7 +2471,7 @@
"tooltip-watchlistedit-raw-submit": "Äisdatigi atentaron",
"tooltip-recreate": "Rekrei la paÄon malgraÅ Äi estis forigita",
"tooltip-upload": "EkalÅuti",
- "tooltip-rollback": "\"Restarigi antaÅan\" restarigas redakto(j)n al Äi tiu paÄo de la lasta kontribuanto per unu klako.",
+ "tooltip-rollback": "\"Malvalidi\" malfaras redakto(j)n al Äi tiu paÄo de la lasta kontribuanto per unu klako.",
"tooltip-undo": "\"Malfari\" malfaris Äi tiun redakton kaj malfermas la redakto-paÄon en antaÅvida reÄimo. Permesas aldoni kialon en la resumo.",
"tooltip-preferences-save": "Konservi preferojn",
"tooltip-summary": "Enigu mallongan resumon",
@@ -2599,8 +2666,8 @@
"exif-colorspace": "Kolor-spaco",
"exif-componentsconfiguration": "Signifo de Äiu kompono",
"exif-compressedbitsperpixel": "ReÄimo de bilda densigado",
- "exif-pixelydimension": "LarÄeco de bildo",
- "exif-pixelxdimension": "Alteco de bildo",
+ "exif-pixelxdimension": "LarÄeco de bildo",
+ "exif-pixelydimension": "Alteco de bildo",
"exif-usercomment": "Komentoj de uzanto",
"exif-relatedsoundfile": "Rilata son-dosiero",
"exif-datetimeoriginal": "Dato kaj tempo de datuma generado",
@@ -3093,7 +3160,6 @@
"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]].",
"redirect-submit": "Ek",
"redirect-lookup": "TraserÄi:",
@@ -3105,7 +3171,6 @@
"redirect-not-exists": "Valoro ne trovita",
"fileduplicatesearch": "SerÄu duplikatajn dosierojn",
"fileduplicatesearch-summary": "SerÄi duplikatajn dosierojn bazite de haketvaloro.",
- "fileduplicatesearch-legend": "SerÄi duplikaton",
"fileduplicatesearch-filename": "Dosiernomo:",
"fileduplicatesearch-submit": "SerÄi",
"fileduplicatesearch-info": "$1 Ã $2 rastrumero Dosiera pezo: $3 MIME-tipo: $4",
@@ -3488,5 +3553,9 @@
"mw-widgets-dateinput-placeholder-day": "JJJJ-MM-TT",
"mw-widgets-dateinput-placeholder-month": "JJJJ-MM",
"api-error-blacklisted": "Bonvolu elekti alian, priskriban titolon.",
- "randomrootpage": "Hazarda radika paÄo"
+ "randomrootpage": "Hazarda radika paÄo",
+ "log-action-filter-all": "Äia",
+ "log-action-filter-protect-unprotect": "Malprotektado",
+ "log-action-filter-upload-upload": "NovalÅuta",
+ "log-action-filter-upload-overwrite": "RealÅuta"
}
diff --git a/languages/i18n/es.json b/languages/i18n/es.json
index d84ac8c479..210f886cac 100644
--- a/languages/i18n/es.json
+++ b/languages/i18n/es.json
@@ -137,7 +137,9 @@
"YoViajo",
"Asierog",
"Mgpena",
- "Transonlohk"
+ "Transonlohk",
+ "Eloy",
+ "Lemondoge"
]
},
"tog-underline": "Subrayar los enlaces:",
@@ -155,6 +157,7 @@
"tog-watchdefault": "Añadir las páginas y archivos que edite a mi lista de seguimiento",
"tog-watchmoves": "Añadir las páginas y archivos que mueva a mi lista de seguimiento",
"tog-watchdeletion": "Añadir las páginas y archivos que borre a mi lista de seguimiento",
+ "tog-watchuploads": "Agregar nuevos archivos puedo subir a mi lista de favoritos",
"tog-watchrollback": "Añadir las páginas donde haya realizado una reversión a mi lista de seguimiento",
"tog-minordefault": "Marcar todas las ediciones como menores de manera predeterminada",
"tog-previewontop": "Mostrar previsualización antes del cuadro de edición",
@@ -365,7 +368,7 @@
"copyrightpage": "{{ns:project}}:Derechos de autor",
"currentevents": "Actualidad",
"currentevents-url": "Project:Actualidad",
- "disclaimers": "Aviso legal",
+ "disclaimers": "Exoneraciones",
"disclaimerpage": "Project:Descargo general",
"edithelp": "Ayuda de edición",
"helppage-top-gethelp": "Ayuda",
@@ -413,6 +416,7 @@
"site-atom-feed": "Canal Atom de $1",
"page-rss-feed": "Canal RSS «$1»",
"page-atom-feed": "Canal Atom de «$1»",
+ "feed-atom": "Atom",
"red-link-title": "$1 (la página no existe)",
"sort-descending": "Orden descendente",
"sort-ascending": "Orden ascendente",
@@ -576,7 +580,7 @@
"nocookieslogin": "{{SITENAME}} utiliza cookies para la autenticación de usuarios. Las cookies están desactivadas en tu navegador. Por favor, actÃvalas e inténtalo de nuevo.",
"nocookiesfornew": "No se pudo crear la cuenta de usuario, porque no pudimos confirmar su origen.\nAsegúrate de que tienes las cookies activadas, luego recarga esta página e inténtalo de nuevo.",
"noname": "No se ha especificado un nombre de usuario válido.",
- "loginsuccesstitle": "Has accedido correctamente",
+ "loginsuccesstitle": "Has accedido",
"loginsuccess": "Has accedido a {{SITENAME}} como «$1». ",
"nosuchuser": "No existe ningún usuario llamado «$1».\nLos nombres de usuario son sensibles a las mayúsculas.\nRevisa tu ortografÃa, o [[Special:UserLogin/signup|crea una cuenta nueva]].",
"nosuchusershort": "No existe ningún usuario llamado «$1». Comprueba que lo has escrito correctamente.",
@@ -595,7 +599,7 @@
"noemail": "No hay una dirección de correo electrónico registrada para «$1».",
"noemailcreate": "Necesitas proporcionar una dirección de correo electrónico válida.",
"passwordsent": "Se ha enviado una nueva contraseña al correo electrónico de «$1».\nPor favor, identifÃcate de nuevo tras recibirla.",
- "blocked-mailpassword": "Tu dirección IP está bloqueada, y no se te permite el uso de la función de recuperación de contraseñas para prevenir abusos.",
+ "blocked-mailpassword": "Tu dirección IP está bloqueada para editar. Para prevenir abusos, no se permite el uso de la función de recuperación de contraseñas desde esta dirección IP.",
"eauthentsent": "Se ha enviado un correo electrónico de confirmación a la dirección especificada.\nAntes de que se envÃe cualquier otro correo a la cuenta tienes que seguir las instrucciones enviadas en el mensaje para asà confirmar que la dirección te pertenece.",
"throttled-mailpassword": "Ya se ha enviado un recordatorio de contraseña en {{PLURAL:$1|la última hora|las últimas $1 horas}}.\nPara evitar los abusos, solo se enviará un recordatorio de contraseña cada {{PLURAL:$1|hora|$1 horas}}.",
"mailerror": "Error al enviar el mensaje: $1",
@@ -648,6 +652,7 @@
"botpasswords-label-delete": "Borrar",
"botpasswords-label-resetpassword": "Restablecer la contraseña",
"botpasswords-label-grants": "Permisos aplicables:",
+ "botpasswords-help-grants": "Cada concesión le da acceso a los permisos listados que el usuario ya posea. Véase la [[Special:ListGrants|lista de concesiones]] para más información.",
"botpasswords-label-restrictions": "Restricciones de uso:",
"botpasswords-label-grants-column": "Concedido",
"botpasswords-bad-appid": "El nombre del bot \"$1\" no es válido.",
@@ -985,10 +990,13 @@
"mergehistory-empty": "No hay revisiones fusionables.",
"mergehistory-done": "Se {{PLURAL:$3|fusionó una revisión|fusionaron $3 revisiones}} de $1 en [[:$2]].",
"mergehistory-fail": "No se puede realizar la fusión de historiales, por favor revisa la página y los parámetros de tiempo.",
+ "mergehistory-fail-bad-timestamp": "La marca de tiempo no es válida.",
"mergehistory-fail-invalid-source": "La página de origen no es válida.",
"mergehistory-fail-invalid-dest": "La página de destino no es válida.",
+ "mergehistory-fail-no-change": "La fusión historiales no fusionó ninguna revisión. Vuelve a comprobar los parámetros de página y tiempo.",
"mergehistory-fail-permission": "Permisos insuficientes para fusionar el historial.",
"mergehistory-fail-self-merge": "Las páginas de origen y destino son la misma.",
+ "mergehistory-fail-timestamps-overlap": "Las revisiones de origen se superponen o vienen después de las de destino.",
"mergehistory-fail-toobig": "No se puede fusionar el historial ya que más del lÃmite de $1 {{PLURAL:$1|revisión|revisiones}} se moverÃan.",
"mergehistory-no-source": "La página origen $1 no existe.",
"mergehistory-no-destination": "La página destino $1 no existe.",
@@ -1432,9 +1440,9 @@
"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-added-to-category-bundled": "[[:$1]] añadida a la categorÃa, [[Special:WhatLinksHere/$1|esta página está incluida en otras páginas]]",
"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",
+ "recentchanges-page-removed-from-category-bundled": "[[:$1]] eliminada de la categorÃa, [[Special:WhatLinksHere/$1|esta página está incluida en otras páginas]]",
"autochange-username": "Cambio automático de MediaWiki",
"upload": "Subir archivo",
"uploadbtn": "Subir un archivo",
@@ -1507,7 +1515,8 @@
"uploaded-script-svg": "Se encontró el elemento habilitado para secuencias de órdenes «$1» en el archivo SVG cargado.",
"uploaded-hostile-svg": "Se encontró código CSS no seguro en el elemento de estilo del archivo SVG cargado.",
"uploaded-event-handler-on-svg": "No está permitido configurar atributos controladores de eventos $1=\"$2\"
en los archivos SVG.",
- "uploaded-href-unsafe-target-svg": "Se encontró un \"href\" hacia un destino inseguro <$1 $2=\"$3\">
en el archivo SVG cargado.",
+ "uploaded-href-attribute-svg": "Los atributos href
en archivos SVG sólo tienen permitido enlazar a objetivos http:// o https://, se encontró <$1 $2=\"$3\">
.",
+ "uploaded-href-unsafe-target-svg": "Se encontró un href
hacia un destino inseguro <$1 $2=\"$3\">
en el archivo SVG cargado.",
"uploaded-animate-svg": "Se encontró un etiqueta \"animate\" que puede estar cambiando \"href\", mediante el atributo \"from\" <$1 $2=\"$3\">
en el archivo SVG cargado.",
"uploaded-setting-event-handler-svg": "Está bloqueada la configuración de atributos controladores de eventos. Se encontró <$1 $2=\"$3\">
en el archivo SVG cargado.",
"uploaded-setting-href-svg": "Está bloqueado el uso de la etiqueta \"set\" para añadir un atributo \"href\" al elemento padre.",
@@ -1519,8 +1528,8 @@
"uploadinvalidxml": "No se pudo analizar el XML del archivo cargado.",
"uploadvirus": "¡El archivo contiene un virus!\nDetalles: $1",
"uploadjava": "El archivo es un ZIP que contiene un archivo .class de Java.\nNo se permite subir archivos Java, porque pueden causar que se puedan saltar restricciones de seguridad.",
- "upload-source": "Archivo origen",
- "sourcefilename": "Nombre del archivo origen:",
+ "upload-source": "Archivo de origen",
+ "sourcefilename": "Nombre del archivo de origen:",
"sourceurl": "URL de origen:",
"destfilename": "Nombre del archivo de destino:",
"upload-maxfilesize": "Tamaño máximo del archivo: $1",
@@ -1528,6 +1537,7 @@
"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-thumb-name": "Esto luce como el tÃtulo de una miniatura. Por favor, no vuelva a subir miniaturas a la misma wiki. Si no es el caso, por favor corrija el nombre del archivo por uno que tenga más sentido, y no tenga el prefijo de miniatura.",
"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.\nElige un nombre más descriptivo para tu archivo.",
"filename-prefix-blacklist": " # \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 # ",
"upload-proto-error": "Protocolo incorrecto",
@@ -1560,9 +1570,10 @@
"foreign-structured-upload-form-label-not-own-work-local-local": "Quizás también quieras probar [[Special:Upload|la página predeterminada de subidas]].",
"foreign-structured-upload-form-label-own-work-message-default": "Entiendo que voy a subir este archivo a un repositorio compartido. Confirmo que estoy haciéndolo que siguiendo los términos de servicio y polÃticas de licenciamiento de allÃ.",
"foreign-structured-upload-form-label-not-own-work-message-default": "Si usted no es capaz de cargar este archivo en virtud de las polÃticas del repositorio compartido, por favor cierre este cuadro de diálogo y probar con otro método.",
+ "foreign-structured-upload-form-label-not-own-work-local-default": "Puede que también quieras usar [[Special:Upload|la página de subidas en {{SITENAME}}]], si se puede subir este archivo bajo sus polÃticas.",
"foreign-structured-upload-form-label-own-work-message-shared": "Doy fe que soy dueño de los derechos de autor de este archivo, y acepto irrevocablemente liberar este archivo a Wikimedia Commons bajo la licencia [https://creativecommons.org/licenses/by-sa/4.0/ Creative Commons Attribution-ShareAlike 4.0], y acepto los [https://wikimediafoundation.org/wiki/Terms_of_Use Términos de Uso].",
"foreign-structured-upload-form-label-not-own-work-message-shared": "Si no es dueño de los derechos de autor de este archivo, o desea publicarlo bajo una licencia diferentes, considere usar el [https://commons.wikimedia.org/wiki/Special:UploadWizard Asistente de Carga de Commons].",
- "foreign-structured-upload-form-label-not-own-work-local-shared": "Puede que también quiera usar [[Special:Upload|la página de carga {{SITENAME}}]], si el sitio permite la subida de este archivo bajo sus polÃticas.",
+ "foreign-structured-upload-form-label-not-own-work-local-shared": "Puede que también quieras usar [[Special:Upload|la página de subidas en {{SITENAME}}]], si el sitio permite la subida de este archivo bajo sus polÃticas.",
"backend-fail-stream": "No se pudo transmitir el archivo «$1».",
"backend-fail-backup": "No se pudo hacer copia de seguridad del archivo «$1».",
"backend-fail-notexists": "El archivo $1 no existe.",
@@ -1570,16 +1581,16 @@
"backend-fail-notsame": "Ya existe un archivo distinto en \"$1\".",
"backend-fail-invalidpath": "$1 no es una ruta de almacenamiento válida",
"backend-fail-delete": "No se pudo borrar el archivo «$1».",
- "backend-fail-describe": "No pudieron cambiar los metadatos del archivo \"$1\".",
- "backend-fail-alreadyexists": "El archivo $1 ya existe.",
- "backend-fail-store": "No se pudo almacenar el archivo $1 en $2.",
- "backend-fail-copy": "No se pudo copiar el archivo $1 a $2.",
- "backend-fail-move": "No se pudo trasladar el archivo $1 a $2.",
+ "backend-fail-describe": "No se pudieron cambiar los metadatos del archivo \"$1\".",
+ "backend-fail-alreadyexists": "El archivo \"$1\" ya existe.",
+ "backend-fail-store": "No se pudo almacenar el archivo \"$1\" en \"$2\".",
+ "backend-fail-copy": "No se pudo copiar el archivo \"$1\" a \"$2\".",
+ "backend-fail-move": "No se pudo trasladar el archivo \"$1\" a \"$2\".",
"backend-fail-opentemp": "No se pudo crear archivo temporal.",
"backend-fail-writetemp": "No se pudo escribir en el archivo temporal.",
"backend-fail-closetemp": "No se pudo cerrar el archivo temporal.",
"backend-fail-read": "No se pudo leer el archivo «$1».",
- "backend-fail-create": "No se pudo escribir el archivo $1.",
+ "backend-fail-create": "No se pudo escribir el archivo \"$1\".",
"backend-fail-maxsize": "No se pudo escribir el archivo \"$1\" porque es mayor a {{PLURAL:$2|un byte|$2 bytes}}.",
"backend-fail-readonly": "El servidor (back-end) de almacenamiento \"$1\" está actualmente en estado de sólo lectura. La razón aducida es: $2 ",
"backend-fail-synced": "El archivo \"$1\" se encuentra en un estado incoherente dentro de los servidores (backends) de almacenamiento interno",
@@ -1611,6 +1622,7 @@
"uploadstash-badtoken": "No se pudo realizar la acción. Es posible que haya finalizado el tiempo de espera de la sesión. Inténtalo de nuevo.",
"uploadstash-errclear": "Falló el borrado de los archivos.",
"uploadstash-refresh": "Actualizar la lista de archivos",
+ "uploadstash-thumbnail": "ver miniatura",
"invalid-chunk-offset": "Desplazamiento inválido del fragmento",
"img-auth-accessdenied": "Acceso denegado",
"img-auth-nopathinfo": "Falta PATH_INFO.\nEl servidor no está configurado para proporcionar esta información.\nEs posible que esté basado en CGI y que no sea compatible con img_auth.\nConsulte https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Image_Authorization.",
@@ -1650,7 +1662,7 @@
"listfiles_date": "Fecha",
"listfiles_name": "Nombre",
"listfiles_user": "Usuario",
- "listfiles_size": "Tamaño (bytes)",
+ "listfiles_size": "Tamaño",
"listfiles_description": "Descripción",
"listfiles_count": "Versiones",
"listfiles-show-all": "Incluir versiones antiguas de las imágenes",
@@ -1670,13 +1682,13 @@
"filehist-nothumb": "Sin miniatura",
"filehist-user": "Usuario",
"filehist-dimensions": "Dimensiones",
- "filehist-filesize": "Tamaño",
+ "filehist-filesize": "Tamaño del archivo",
"filehist-comment": "Comentario",
"imagelinks": "Usos del archivo",
"linkstoimage": "{{PLURAL:$1|La siguiente página enlaza|Las siguientes páginas enlazan}} a este archivo:",
"linkstoimage-more": "Hay más de {{PLURAL:$1|una página que enlaza|$1 páginas que enlazan}} con este archivo.\nLa lista siguiente sólo muestra {{PLURAL:$1|la primera página que enlaza|las primeras $1 páginas que enlazan}} con este archivo.\nTambién puedes consultar la [[Special:WhatLinksHere/$2|lista completa]].",
"nolinkstoimage": "No hay páginas que enlacen a esta imagen.",
- "morelinkstoimage": "Vea [[Special:WhatLinksHere/$1|más enlaces]] a este archivo.",
+ "morelinkstoimage": "Mira [[Special:WhatLinksHere/$1|más enlaces]] a este archivo.",
"linkstoimage-redirect": "$1 (archivo de redirección) $2",
"duplicatesoffile": "{{PLURAL:$1|El siguiente archivo es un duplicado|Los siguientes $1 archivos son duplicados}} de éste ([[Special:FileDuplicateSearch/$2|más detalles]]):",
"sharedupload": "Este archivo es de $1 y puede ser usado por otros proyectos.",
@@ -1735,19 +1747,19 @@
"randomincategory-category": "CategorÃa:",
"randomincategory-legend": "Página aleatoria en categorÃa",
"randomincategory-submit": "Ir",
- "randomredirect": "Ir a una redirección cualquiera",
+ "randomredirect": "Redirección aleatoria",
"randomredirect-nopages": "No hay redirecciones en el espacio de nombres «$1».",
"statistics": "EstadÃsticas",
"statistics-header-pages": "EstadÃsticas de páginas",
"statistics-header-edits": "EstadÃsticas de ediciones",
- "statistics-header-users": "EstadÃsticas de usuario",
+ "statistics-header-users": "EstadÃsticas de usuarios",
"statistics-header-hooks": "Otras estadÃsticas",
"statistics-articles": "Páginas de contenido",
"statistics-pages": "Páginas",
"statistics-pages-desc": "Todas las páginas en el wiki, incluyendo páginas de discusión, redirecciones, etc.",
"statistics-files": "Archivos subidos",
"statistics-edits": "Ediciones en páginas desde que {{SITENAME}} fue instalado",
- "statistics-edits-average": "Media de ediciones por página",
+ "statistics-edits-average": "Promedio de ediciones por página",
"statistics-users": "[[Special:ListUsers|Usuarios]] registrados",
"statistics-users-active": "Usuarios activos",
"statistics-users-active-desc": "Usuarios que han ejecutado una acción en {{PLURAL:$1|el último dÃa|los últimos $1 dÃas}}",
@@ -1771,7 +1783,7 @@
"withoutinterwiki-summary": "Las siguientes páginas no enlazan a versiones en otros idiomas:",
"withoutinterwiki-legend": "Prefijo",
"withoutinterwiki-submit": "Mostrar",
- "fewestrevisions": "ArtÃculos con menos ediciones",
+ "fewestrevisions": "Páginas con el menor número de revisiones",
"nbytes": "$1 {{PLURAL:$1|byte|bytes}}",
"ncategories": "$1 {{PLURAL:$1|categorÃa|categorÃas}}",
"ninterwikis": "$1 {{PLURAL:$1|interwiki|interwikis}}",
@@ -1781,15 +1793,15 @@
"nrevisions": "$1 {{PLURAL:$1|revisión|revisiones}}",
"nimagelinks": "Usado en {{PLURAL:$1|una página|$1 páginas}}",
"ntransclusions": "usado en {{PLURAL:$1|una página|$1 páginas}}",
- "specialpage-empty": "Esta página está vacÃa.",
+ "specialpage-empty": "No hay resultados para este informe.",
"lonelypages": "Páginas huérfanas",
"lonelypagestext": "Las siguientes páginas no están enlazadas ni transcluidas en otras páginas de {{SITENAME}}.",
"uncategorizedpages": "Páginas sin categorizar",
"uncategorizedcategories": "CategorÃas sin categorizar",
- "uncategorizedimages": "Imágenes sin categorizar",
+ "uncategorizedimages": "Archivos sin categorizar",
"uncategorizedtemplates": "Plantillas sin categorizar",
"unusedcategories": "CategorÃas sin uso",
- "unusedimages": "Imágenes sin uso",
+ "unusedimages": "Archivos sin uso",
"wantedcategories": "CategorÃas requeridas",
"wantedpages": "Páginas requeridas",
"wantedpages-summary": "Lista de páginas inexistentes con el mayor número de enlaces a ellas, excluyendo páginas que son solo redirecciones a ellas. Para ver una lista de páginas inexistentes con redirecciones apuntando a ellas, consulta [[{{#special:BrokenRedirects}}|la lista de redirecciones rotas]].",
@@ -1800,7 +1812,7 @@
"wantedfiletext-nocat": "Los siguientes archivos están en uso, pero no existen. Es posible que algunos de ellos estén almacenados en repositorios externos y se hayan incluido aquà por error; dichas entradas aparecen tachadas.",
"wantedfiletext-nocat-noforeign": "Los siguientes archivos están en uso, pero no existen.",
"wantedtemplates": "Plantillas requeridas",
- "mostlinked": "ArtÃculos más enlazados",
+ "mostlinked": "Páginas más enlazadas",
"mostlinkedcategories": "CategorÃas más enlazadas",
"mostlinkedtemplates": "Páginas más transcluidas",
"mostcategories": "Páginas con más categorÃas",
@@ -1843,7 +1855,7 @@
"newpages": "Páginas nuevas",
"newpages-submit": "Mostrar",
"newpages-username": "Nombre de usuario",
- "ancientpages": "ArtÃculos más antiguos",
+ "ancientpages": "Páginas más antiguas",
"move": "Trasladar",
"movethispage": "Trasladar esta página",
"unusedimagestext": "Los siguientes archivos existen pero no están insertados en ninguna página.\nTen en cuenta que otros sitios web pueden enlazar un archivo directamente por la URL, y por tanto pueden estar listados aquà a pesar de estar siendo usados de forma activa.",
@@ -1859,10 +1871,13 @@
"apihelp": "Ayuda de la API",
"apihelp-no-such-module": "No se encontró el módulo \"$1\".",
"apisandbox": "Zona de pruebas API",
+ "apisandbox-jsonly": "Se requiere JavaScript para utilizar la zona de pruebas de API.",
"apisandbox-api-disabled": "La API está desactivada en este sitio.",
- "apisandbox-intro": "Usa esta página para experimentar con la '''API de servicio web de MediaWiki'''.\nPara más detalles sobre el uso de la API, visita [//www.mediawiki.org/wiki/API:Main_page su documentación]. Ejemplo: [//www.mediawiki.org/wiki/API#A_simple_example obtener el contenido de una Página principal]. Selecciona una acción para ver más ejemplos.\n\nObserva que, aunque sea una página de pruebas, las acciones que realices en esta página pueden modificar el wiki.",
+ "apisandbox-intro": "Usa esta página para experimentar con la API de servicio web de MediaWiki .\nPara más detalles sobre el uso de la API, visita [[mw:API:Main page|su documentación]]. Ejemplo: [//www.mediawiki.org/wiki/API#A_simple_example obtener el contenido de una Página principal]. Selecciona una acción para ver más ejemplos.\n\nObserva que, aunque sea una página de pruebas, las acciones que realices en esta página pueden modificar el wiki.",
"apisandbox-fullscreen": "Expandir panel",
+ "apisandbox-fullscreen-tooltip": "Expande el panel de la zona de pruebas hasta llenar la ventana del navegador.",
"apisandbox-unfullscreen": "Mostrar página",
+ "apisandbox-unfullscreen-tooltip": "Reduce el panel de la zona de pruebas, para que los enlaces de navegación MediaWiki estén disponibles.",
"apisandbox-submit": "Realizar solicitud",
"apisandbox-reset": "Limpiar",
"apisandbox-retry": "Reintentar",
@@ -1876,6 +1891,7 @@
"apisandbox-dynamic-parameters-add-placeholder": "Nombre del parámetro",
"apisandbox-dynamic-error-exists": "Ya existe un parámetro llamado \"$1\".",
"apisandbox-deprecated-parameters": "Parámetros desaconsejados",
+ "apisandbox-fetch-token": "Auto-llenar el token",
"apisandbox-submit-invalid-fields-title": "Algunos campos no son válidos",
"apisandbox-submit-invalid-fields-message": "Por favor, corrige los campos señalados e inténtalo de nuevo.",
"apisandbox-results": "Resultados",
@@ -1904,11 +1920,11 @@
"showhideselectedlogentries": "Cambiar la visibilidad de las entradas del registro seleccionadas",
"log-edit-tags": "Editar las etiquetas de las entradas del registro seleccionadas",
"checkbox-select": "Seleccionar: $1",
- "checkbox-all": "Todas",
- "checkbox-none": "Ninguna",
- "checkbox-invert": "Invertir",
+ "checkbox-all": "todas",
+ "checkbox-none": "ninguna",
+ "checkbox-invert": "invertir",
"allpages": "Todas las páginas",
- "nextpage": "Siguiente página ($1)",
+ "nextpage": "Página siguiente ($1)",
"prevpage": "Página anterior ($1)",
"allpagesfrom": "Mostrar páginas que empiecen por:",
"allpagesto": "Mostrar páginas terminadas con:",
@@ -1926,8 +1942,6 @@
"categories-submit": "Mostrar",
"categoriespagetext": "Las siguientes {{PLURAL:$1|categorÃa contiene|categorÃas contienen}} páginas o medios.\nNo se muestran aquà las [[Special:UnusedCategories|categorÃas sin uso]].\nVéase también las [[Special:WantedCategories|categorÃas requeridas]].",
"categoriesfrom": "Mostrar categorÃas que empiecen por:",
- "special-categories-sort-count": "ordenar por conteo",
- "special-categories-sort-abc": "ordenar alfabéticamente",
"deletedcontributions": "Contribuciones borradas de usuario",
"deletedcontributions-title": "Contribuciones borradas de usuario",
"sp-deletedcontributions-contribs": "contribuciones",
@@ -1950,13 +1964,13 @@
"activeusers-hidesysops": "Ocultar administradores",
"activeusers-noresult": "No se encontraron usuarios.",
"activeusers-submit": "Mostrar usuarios activos",
- "listgrouprights": "Permisos del grupo de usuarios",
- "listgrouprights-summary": "La siguiente es una lista de los grupos de usuario definidos en esta wiki y de sus privilegios de acceso asociados.\nPuede haber información adicional sobre privilegios individuales en [[{{MediaWiki:Listgrouprights-helppage}}]]",
+ "listgrouprights": "Permisos de los grupos de usuarios",
+ "listgrouprights-summary": "La siguiente es una lista de los grupos de usuarios definidos en esta wiki y de sus permisos de acceso asociados.\nPuede haber [[{{MediaWiki:Listgrouprights-helppage}}|información adicional]] sobre permisos individuales.",
"listgrouprights-key": "Leyenda:\n* Derecho concedido \n* Derecho revocado ",
"listgrouprights-group": "Grupo",
"listgrouprights-rights": "Derechos",
- "listgrouprights-helppage": "Help:Derechos de grupos",
- "listgrouprights-members": "(ver los miembros de este grupo)",
+ "listgrouprights-helppage": "Help:Permisos de grupos",
+ "listgrouprights-members": "(lista de miembros)",
"listgrouprights-addgroup": "Agregar {{PLURAL:$2|grupo|grupos}}: $1",
"listgrouprights-removegroup": "Eliminar {{PLURAL:$2|grupo|grupos}}: $1",
"listgrouprights-addgroup-all": "Agregar todos los grupos",
@@ -1968,7 +1982,8 @@
"listgrouprights-namespaceprotection-header": "Restricciones del espacio de nombres",
"listgrouprights-namespaceprotection-namespace": "Espacio de nombres",
"listgrouprights-namespaceprotection-restrictedto": "Derechos de usuario para editar",
- "listgrants": "Subvenciones",
+ "listgrants": "Concesiones",
+ "listgrants-summary": "La siguiente es una lista de concesiones con sus permisos de usuario asociados. Los usuarios pueden autorizar aplicaciones para que usen sus cuentas, pero con permisos limitados basados en las concesiones que el usuario le dio a la aplicación. De todas formas, una aplicación actuando a nombre de un usuario no puede hacer uso de permisos que el usuario no posea.\nPuede haber [[{{MediaWiki:Listgrouprights-helppage}}|información adicional]] sobre permisos individuales.",
"listgrants-grant": "Conceder",
"listgrants-rights": "Derechos",
"trackingcategories": "CategorÃas de seguimiento",
@@ -2025,12 +2040,12 @@
"addedwatchtext-short": "La página \"$1\" ha sido añadida a tu lista de seguimiento.",
"removewatch": "Quitar de la 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.",
+ "removedwatchtext-short": "La página \"$1\" ha sido eliminada de tu lista de seguimiento.",
"watch": "Vigilar",
"watchthispage": "Vigilar esta página",
"unwatch": "Dejar de vigilar",
"unwatchthispage": "Dejar de vigilar",
- "notanarticle": "No es un artÃculo",
+ "notanarticle": "No es una página de contenido",
"notvisiblerev": "La última revisión de un usuario diferente ha sido borrada",
"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.",
@@ -2053,23 +2068,23 @@
"watcherrortext": "Ocurrió un error al cambiar la configuración de tu lista de seguimiento para «$1».",
"enotif_reset": "Marcar todas las páginas como visitadas",
"enotif_impersonal_salutation": "usuario de {{SITENAME}}",
- "enotif_subject_deleted": "$2 ha borrado la página $1 de {{SITENAME}}",
- "enotif_subject_created": "$2 ha creado la página $1 en {{SITENAME}}",
- "enotif_subject_moved": "$2 ha trasladado la página $1 de {{SITENAME}}",
- "enotif_subject_restored": "$2 ha restaurado la página $1 de {{SITENAME}}",
- "enotif_subject_changed": "$2 ha modificado la página $1 de {{SITENAME}}",
+ "enotif_subject_deleted": "$2 {{GENDER:$2|borró}} la página $1 de {{SITENAME}}",
+ "enotif_subject_created": "$2 {{GENDER:$2|creó}} la página $1 de {{SITENAME}}",
+ "enotif_subject_moved": "$2 {{GENDER:$2|trasladó}} la página $1 de {{SITENAME}}",
+ "enotif_subject_restored": "$2 {{GENDER:$2|restauró}} la página $1 de {{SITENAME}}",
+ "enotif_subject_changed": "$2 {{GENDER:$2|cambió}} la página $1 de {{SITENAME}}",
"enotif_body_intro_deleted": "La página $1 de {{SITENAME}} ha sido borrada el $PAGEEDITDATE por {{GENDER:$2|$2}}, véase $3.",
"enotif_body_intro_created": "La página $1 de {{SITENAME}} ha sido creada el $PAGEEDITDATE por {{GENDER:$2|$2}}, véase $3 para la revisión actual.",
"enotif_body_intro_moved": "La página $1 de {{SITENAME}} ha sido trasladada el $PAGEEDITDATE por {{GENDER:$2|$2}}, véase $3 para la revisión actual.",
"enotif_body_intro_restored": "La página $1 de {{SITENAME}} ha sido restaurada el $PAGEEDITDATE por {{GENDER:$2|$2}}, véase $3 para la revisión actual.",
"enotif_body_intro_changed": "La página $1 de {{SITENAME}} ha sido cambiada el $PAGEEDITDATE por {{GENDER:$2|$2}}, véase $3 para la revisión actual.",
- "enotif_lastvisited": "Consulta $1 para ver todos los cambios realizados desde tu última visita.",
+ "enotif_lastvisited": "Consulta $1 para ver todos los cambios desde tu última visita.",
"enotif_lastdiff": "Consulta $1 para ver este cambio.",
"enotif_anon_editor": "usuario anónimo $1",
"enotif_body": "Hola, $WATCHINGUSERNAME:\n\n$PAGEINTRO $NEWPAGE\n\nResumen del editor: $PAGESUMMARY $PAGEMINOREDIT\n\nContacta al editor:\ncorreo: $PAGEEDITOR_EMAIL\nwiki: $PAGEEDITOR_WIKI\n\nNo enviaremos más notificaciones si ocurre más actividad, a menos que visites esta página con la sesión iniciada. También puedes restablecer los estados de notificación para todas las páginas en tu lista de seguimiento.\n\nAtentamente, el sistema de notificaciones de {{SITENAME}}\n\n--\nPara cambiar tus ajustes de notificación por correo, visita\n{{canonicalurl:{{#special:Preferences}}}}\n\nPara cambiar los ajustes de tu lista de seguimiento, visita\n{{canonicalurl:{{#special:EditWatchlist}}}}\n\nPara quitar la página de tu lista de seguimiento, visita\n$UNWATCHURL\n\nPara ayuda y comentarios:\n$HELPPAGE",
"created": "creada",
"changed": "modificada",
- "deletepage": "Borrar esta página",
+ "deletepage": "Borrar página",
"confirm": "Confirmar",
"excontent": "el contenido era: «$1»",
"excontentauthor": "el contenido era: «$1», y el único autor fue «[[Special:Contributions/$2|$2]]» ([[User talk:$2|discusión]])",
@@ -2173,13 +2188,13 @@
"maximum-size": "Tamaño máximo:",
"pagesize": "(bytes)",
"restriction-edit": "Editar",
- "restriction-move": "Pueden trasladar",
+ "restriction-move": "Trasladar",
"restriction-create": "Crear",
"restriction-upload": "Subir",
"restriction-level-sysop": "completamente protegida",
"restriction-level-autoconfirmed": "semiprotegida",
"restriction-level-all": "cualquier nivel",
- "undelete": "Restaurar una página borrada",
+ "undelete": "Ver páginas borradas",
"undeletepage": "Ver y restaurar páginas borradas",
"undeletepagetitle": "Las siguientes son las revisiones borradas de [[:$1|$1]] .",
"viewdeletedpage": "Ver páginas borradas",
@@ -2206,7 +2221,7 @@
"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",
- "undelete-search-prefix": "Mostrar páginas que empiecen por:",
+ "undelete-search-prefix": "Mostrar páginas que empiecen con:",
"undelete-search-submit": "Buscar",
"undelete-no-results": "No se encontraron páginas borradas para ese criterio de búsqueda.",
"undelete-filename-mismatch": "No se puede restaurar la revisión con marca de tiempo $1: no concuerda el nombre del archivo.",
@@ -2244,7 +2259,7 @@
"sp-contributions-uploads": "subidas",
"sp-contributions-logs": "registros",
"sp-contributions-talk": "discusión",
- "sp-contributions-userrights": "gestión de permisos del usuario",
+ "sp-contributions-userrights": "gestión de permisos de usuario",
"sp-contributions-blocked-notice": "Este usuario está actualmente bloqueado. La última entrada del registro de bloqueos es presentada debajo para mayor referencia:",
"sp-contributions-blocked-notice-anon": "Esta dirección IP se encuentra actualmente bloqueada.\nA continuación se muestra la última entrada del registro de bloqueos para mayor referencia.",
"sp-contributions-search": "Buscar contribuciones",
@@ -2303,6 +2318,7 @@
"ipb-unblock": "Desbloquear un usuario o una IP",
"ipb-blocklist": "Ver bloqueos vigentes",
"ipb-blocklist-contribs": "Contribuciones de {{GENDER:$1|$1}}",
+ "ipb-blocklist-duration-left": "$1 restantes",
"unblockip": "Desbloquear usuario",
"unblockiptext": "Use el formulario a continuación para devolver los permisos de escritura a una dirección IP que ha sido bloqueada.",
"ipusubmit": "Desactivar este bloqueo",
@@ -2544,11 +2560,7 @@
"import-logentry-upload-detail": "$1 {{PLURAL:$1|revisión importada|revisiones importadas}}",
"import-logentry-interwiki-detail": "$1 {{PLURAL:$1|revisión importada|revisiones importadas}} desde $2",
"javascripttest": "Pruebas de JavaScript",
- "javascripttest-pagetext-noframework": "Esta página está reservada para ejecutar pruebas de JavaScript.",
- "javascripttest-pagetext-unknownframework": "Marco de pruebas desconocido \"$1\".",
"javascripttest-pagetext-unknownaction": "La acción «$1» es desconocida.",
- "javascripttest-pagetext-frameworks": "Selecciona uno de los marcos de pruebas siguientes: $1",
- "javascripttest-pagetext-skins": "Elige una apariencia con la que ejecutar las pruebas:",
"javascripttest-qunit-intro": "Consulta la [$1 documentación sobre las pruebas] en mediawiki.org.",
"tooltip-pt-userpage": "Tu página de {{GENDER:|usuario|usuaria}}",
"tooltip-pt-anonuserpage": "La página de usuario de la IP desde la que editas",
@@ -2772,18 +2784,18 @@
"months": "{{PLURAL:$1|$1 mes|$1 meses}}",
"years": "{{PLURAL:$1|$1 año|$1 años}}",
"ago": "hace $1",
- "just-now": "Ahora mismo",
+ "just-now": "ahora mismo",
"hours-ago": "hace $1 {{PLURAL:$1|hora|horas}}",
"minutes-ago": "hace {{PLURAL:$1|un minuto|$1 minutos}}",
"seconds-ago": "hace $1 {{PLURAL:$1|segundo|segundos}}",
- "monday-at": "El lunes a las $1",
- "tuesday-at": "El martes a las $1",
- "wednesday-at": "El miércoles a las $1",
- "thursday-at": "El jueves a las $1",
- "friday-at": "El viernes a las $1",
- "saturday-at": "El sábado a las $1",
- "sunday-at": "El domingo a las $1",
- "yesterday-at": "Ayer a las $1",
+ "monday-at": "el lunes a las $1",
+ "tuesday-at": "el martes a las $1",
+ "wednesday-at": "el miércoles a las $1",
+ "thursday-at": "el jueves a las $1",
+ "friday-at": "el viernes a las $1",
+ "saturday-at": "el sábado a las $1",
+ "sunday-at": "el domingo a las $1",
+ "yesterday-at": "ayer a las $1",
"bad_image_list": "El formato es el siguiente:\n\nSolo se reconocen elementos de lista (lÃneas que comienzan con «*»).\nEl primer enlace de cada lÃnea debe ser un enlace al archivo que se quiere bloquear.\nTodos los demás enlaces en la misma lÃnea se tomarán como excepciones (es decir, páginas donde sà se puede usar el archivo).",
"metadata": "Metadatos",
"metadata-help": "Este archivo contiene información adicional, probablemente añadida por la cámara digital o el escáner usado para crearlo o digitalizarlo.\nSi el archivo ha sido modificado desde su estado original, pueden haberse perdido algunos detalles.",
@@ -2823,8 +2835,8 @@
"exif-colorspace": "Espacio de color",
"exif-componentsconfiguration": "Significado de cada componente",
"exif-compressedbitsperpixel": "Modo de compresión de la imagen",
- "exif-pixelydimension": "Ancho de la imagen",
- "exif-pixelxdimension": "Altura de la imagen",
+ "exif-pixelxdimension": "Anchura de la imagen",
+ "exif-pixelydimension": "Altura de la imagen",
"exif-usercomment": "Comentarios de usuario",
"exif-relatedsoundfile": "Archivo de audio relacionado",
"exif-datetimeoriginal": "Fecha y hora de la generación de los datos",
@@ -2955,7 +2967,7 @@
"exif-attributionurl": "Cuando reutilices este trabajo, por favor enlaza a",
"exif-preferredattributionname": "Al volver a utilizar este trabajo, por favor da crédito",
"exif-pngfilecomment": "Comentario de archivo PNG",
- "exif-disclaimer": "Descargo",
+ "exif-disclaimer": "Exoneración de responsabilidad",
"exif-contentwarning": "Advertencia de contenido",
"exif-giffilecomment": "Comentario de archivo GIF",
"exif-intellectualgenre": "Tipo de elemento",
@@ -2974,6 +2986,9 @@
"exif-copyrighted-true": "Con derechos de autor",
"exif-copyrighted-false": "No se ha definido el estado del copyright",
"exif-photometricinterpretation-1": "Blanco y negro (el negro es 0)",
+ "exif-photometricinterpretation-4": "Máscara de transparencia",
+ "exif-photometricinterpretation-5": "Separados (Probablemente CMYK)",
+ "exif-photometricinterpretation-32803": "Matriz de filtro de color",
"exif-unknowndate": "Fecha desconocida",
"exif-orientation-1": "Normal",
"exif-orientation-2": "Volteada horizontalmente",
@@ -3151,6 +3166,10 @@
"confirmemail_body_set": "Alguien, probablemente tú, ha establecido la dirección de correo electrónico de la cuenta $2 a esta dirección en {{SITENAME}}, desde la dirección IP $1.\n\nPara confirmar que esta cuenta realmente te pertenece y activar las funciones de correo electrónico en {{SITENAME}}, sigue este enlace en tu navegador:\n\n$3\n\nSi la cuenta *no* te pertenece, sigue este otro enlace para cancelar la confirmación:\n\n$5\n\nEste código de confirmación expirará el $4.",
"confirmemail_invalidated": "La confirmación de la dirección de correo electrónico ha sido cancelada",
"invalidateemail": "Cancelar confirmación de correo electrónico",
+ "notificationemail_subject_changed": "{{SITENAME}} dirección de correo electrónico registrada ha sido cambiado",
+ "notificationemail_subject_removed": "{{SITENAME}} dirección de correo electrónico ha sido eliminada",
+ "notificationemail_body_changed": "Alguien, probablemente tú, desde la dirección IP $1,\nha cambiado la dirección de correo electrónico de la cuenta \"$2\" \"$3\" en {{SITENAME}}.\n\nSi esto no fue usted, póngase en contacto con un administrador del sitio inmediatamente.",
+ "notificationemail_body_removed": "Alguien, probablemente tú, desde la dirección IP $1,\nse ha eliminado la dirección de correo electrónico de la cuenta \"$2\" en {{SITENAME}}.\n\nSi esto no fue usted, póngase en contacto con un administrador del sitio inmediatamente.",
"scarytranscludedisabled": "[Transclusión interwiki está deshabilitada]",
"scarytranscludefailed": "[Obtención de plantilla falló para $1]",
"scarytranscludefailed-httpstatus": "[Error de recuperación de plantilla para $1: HTTP $2]",
@@ -3206,7 +3225,7 @@
"watchlistedit-raw-done": "Tu lista de seguimiento se ha actualizado.",
"watchlistedit-raw-added": "{{PLURAL:$1|Se ha añadido una página|Se han añadido $1 páginas}}:",
"watchlistedit-raw-removed": "{{PLURAL:$1|Una página ha sido borrada|$1 páginas han sido borradas}}:",
- "watchlistedit-clear-title": "Lista de seguimiento vaciada",
+ "watchlistedit-clear-title": "Vaciar la lista de seguimiento",
"watchlistedit-clear-legend": "Vaciar la lista de seguimiento",
"watchlistedit-clear-explain": "Todos los tÃtulos serán eliminados de tu lista de seguimiento",
"watchlistedit-clear-titles": "TÃtulos:",
@@ -3271,7 +3290,6 @@
"version-libraries-description": "Descripción",
"version-libraries-authors": "Autores",
"redirect": "Redirigir por archivo, o identificador de usuario, página, revisión o registro",
- "redirect-legend": "Redirigir a un archivo o página",
"redirect-summary": "Esta página especial redirige a un archivo (dado un nombre), a una página (dado un identificador de revisión o de página), a una página de usuario (dado un identificador numérico de usuario) o a una entrada del registro (dado un identificador de registro). Uso: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], [[{{#Special:Redirect}}/user/101]] o [[{{#Special:Redirect}}/logid/186]].",
"redirect-submit": "Ir",
"redirect-lookup": "Buscar:",
@@ -3284,7 +3302,6 @@
"redirect-not-exists": "No se encontró el valor",
"fileduplicatesearch": "Búsqueda de archivos duplicados",
"fileduplicatesearch-summary": "Búsqueda de archivos duplicados en base a su valor hash.",
- "fileduplicatesearch-legend": "Busca duplicados",
"fileduplicatesearch-filename": "Nombre de archivo:",
"fileduplicatesearch-submit": "Buscar",
"fileduplicatesearch-info": "$1 à $2 pÃxeles Tamaño: $3 Tipo MIME: $4",
@@ -3369,9 +3386,11 @@
"tags-deactivate-not-allowed": "No es posible desactivar la etiqueta «$1».",
"tags-deactivate-submit": "Desactivar",
"tags-apply-no-permission": "No tienes permiso para aplicar etiquetas de cambios, junto con tus cambios.",
+ "tags-apply-blocked": "No puedes aplicar etiquetas de cambio con tus cambios mientras estés {{GENDER:|bloqueado|bloqueada}}.",
"tags-apply-not-allowed-one": "No se permite aplicar manualmente la etiqueta «$1».",
"tags-apply-not-allowed-multi": "{{PLURAL:$2|La siguiente etiqueta no se puede|Las siguientes etiquetas no se pueden}} aplicar manualmente: $1",
"tags-update-no-permission": "No tienes permiso para agregar o quitar etiquetas de cambio de las revisiones individuales o las entradas del registro.",
+ "tags-update-blocked": "No puedes añadir o eliminar etiquetas de cambio mientras estés {{GENDER:|bloqueado|bloqueada}}.",
"tags-update-add-not-allowed-one": "No se permite la adición manual de la etiqueta «$1».",
"tags-update-add-not-allowed-multi": "{{PLURAL:$2|La siguiente etiqueta no se puede|Las siguientes etiquetas no se pueden}} agregar manualmente: $1",
"tags-update-remove-not-allowed-one": "No se permite eliminar la etiqueta «$1».",
@@ -3483,7 +3502,7 @@
"logentry-protect-protect-cascade": "$1 {{GENDER:$2|protegió}} a $3 $4 [en cascada]",
"logentry-protect-modify": "$1 {{GENDER:$2|cambió}} el nivel de protección de $3 $4",
"logentry-protect-modify-cascade": "$1 {{GENDER:$2|cambió}} el nivel de protección de $3 $4 [en cascada]",
- "logentry-rights-rights": "$1 modificó los grupos a los que pertenece $3: de $4 a $5",
+ "logentry-rights-rights": "$1 {{GENDER:$2|modificó}} los grupos a los que pertenece {{GENDER:$6|$3}}: de $4 a $5",
"logentry-rights-rights-legacy": "$1 {{GENDER:$2|modificó}} los grupos a los que pertenece $3",
"logentry-rights-autopromote": "$1 ha sido {{GENDER:$2|promocionado|promocionada}} automáticamente de $4 a $5",
"logentry-upload-upload": "$1 {{GENDER:$2|subió}} $3",
@@ -3576,6 +3595,7 @@
"api-error-unknownerror": "Error desconocido: «$1».",
"api-error-uploaddisabled": "Las subidas están desactivadas en este wiki.",
"api-error-verification-error": "Este archivo puede estar dañado, o tiene una extensión incorrecta.",
+ "api-error-was-deleted": "Un archivo de este nombre se ha subido previamente y eliminado posteriormente.",
"duration-seconds": "$1 {{PLURAL:$1|segundo|segundos}}",
"duration-minutes": "$1 {{PLURAL:$1|minuto|minutos}}",
"duration-hours": "$1 {{PLURAL:$1|hora|horas}}",
@@ -3667,6 +3687,7 @@
"special-characters-group-ipa": "AFI",
"special-characters-group-symbols": "SÃmbolos",
"special-characters-group-greek": "Griego",
+ "special-characters-group-greekextended": "Griego extendido",
"special-characters-group-cyrillic": "CirÃlico",
"special-characters-group-arabic": "Ãrabe",
"special-characters-group-arabicextended": "Arábico extendido",
@@ -3690,9 +3711,58 @@
"mw-widgets-titleinput-description-new-page": "la página aún no existe",
"mw-widgets-titleinput-description-redirect": "redirigir a $1",
"api-error-blacklisted": "Elige un tÃtulo diferente, más descriptivo.",
- "sessionmanager-tie": "No se pueden combinar múltiples tipos de autentificación de solicitudes: $1",
+ "sessionmanager-tie": "No se pueden combinar múltiples tipos de autenticación de solicitudes: $1.",
"sessionprovider-generic": "sesiones $1",
"sessionprovider-mediawiki-session-cookiesessionprovider": "sesiones basadas en cookies",
"sessionprovider-nocookies": "Puede que las cookies estén desactivadas. ActÃvalas y comienza de nuevo.",
- "randomrootpage": "Página raÃz aleatoria"
+ "randomrootpage": "Página raÃz aleatoria",
+ "log-action-filter-block": "Tipo de bloqueo:",
+ "log-action-filter-contentmodel": "Tipo de contentmodel modificación:",
+ "log-action-filter-delete": "Tipo de eliminación:",
+ "log-action-filter-import": "Tipo de importación:",
+ "log-action-filter-managetags": "Tipo de administración de la etiqueta de acción:",
+ "log-action-filter-move": "Tipo de movimiento:",
+ "log-action-filter-newusers": "Tipo de creación de la cuenta:",
+ "log-action-filter-patrol": "Tipo de verificación:",
+ "log-action-filter-protect": "Tipo de protección:",
+ "log-action-filter-rights": "El tipo de cambio correcto",
+ "log-action-filter-suppress": "Tipo de supresión",
+ "log-action-filter-upload": "Tipo de subida:",
+ "log-action-filter-all": "Todas",
+ "log-action-filter-block-block": "Bloquear",
+ "log-action-filter-block-reblock": "Modificación de bloqueo",
+ "log-action-filter-block-unblock": "Desbloquear",
+ "log-action-filter-contentmodel-change": "Cambio de modelo de contenido",
+ "log-action-filter-contentmodel-new": "Creación de página con modelo de contenidos no estándar",
+ "log-action-filter-delete-delete": "Eliminación de páginas",
+ "log-action-filter-delete-restore": "Restauración de páginas",
+ "log-action-filter-delete-event": "Eliminación de registros",
+ "log-action-filter-delete-revision": "Eliminación de revisión",
+ "log-action-filter-import-interwiki": "Importación transwiki",
+ "log-action-filter-import-upload": "Importar mediante carga de XML",
+ "log-action-filter-managetags-create": "Creación de etiqueta",
+ "log-action-filter-managetags-delete": "Eliminación de etiqueta",
+ "log-action-filter-managetags-activate": "Activación de etiqueta",
+ "log-action-filter-managetags-deactivate": "Desactivación de etiquetas",
+ "log-action-filter-move-move": "Traslado sin sobrescritura de redirecciones",
+ "log-action-filter-move-move_redir": "Traslado con sobrescritura de redirecciones",
+ "log-action-filter-newusers-create": "La creación por usuario anónimo",
+ "log-action-filter-newusers-create2": "La creación por usuario registrado",
+ "log-action-filter-newusers-autocreate": "Creación automática",
+ "log-action-filter-newusers-byemail": "Creación con la contraseña enviada por correo",
+ "log-action-filter-patrol-patrol": "Verificación manual",
+ "log-action-filter-patrol-autopatrol": "Verificación automática",
+ "log-action-filter-protect-protect": "Protección",
+ "log-action-filter-protect-modify": "Modificación de protección",
+ "log-action-filter-protect-unprotect": "Desprotección",
+ "log-action-filter-protect-move_prot": "Protección contra traslados",
+ "log-action-filter-rights-rights": "Cambio manual",
+ "log-action-filter-rights-autopromote": "Cambio automático",
+ "log-action-filter-suppress-event": "Supresión de registros",
+ "log-action-filter-suppress-revision": "Supresión de revisiones",
+ "log-action-filter-suppress-delete": "Supresión de páginas",
+ "log-action-filter-suppress-block": "Usuario supppression por bloque",
+ "log-action-filter-suppress-reblock": "Usuario supresión de rebloqueo",
+ "log-action-filter-upload-upload": "Subida nueva",
+ "log-action-filter-upload-overwrite": "Volver a subir"
}
diff --git a/languages/i18n/et.json b/languages/i18n/et.json
index 5ce19556b4..038f8234b0 100644
--- a/languages/i18n/et.json
+++ b/languages/i18n/et.json
@@ -1278,7 +1278,7 @@
"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-added-to-category-bundled": "kategooriasse lisatud \"[[:$1]]\" ja veel [[Special:WhatLinksHere/$1|{{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}}",
"autochange-username": "MediaWiki automaatne muudatus",
@@ -1746,8 +1746,6 @@
"categories-submit": "Näita",
"categoriespagetext": "Vikis on {{PLURAL:$1|järgmine kategooria|järgmised kategooriad}}.\nSiin ei näidata [[Special:UnusedCategories|kasutamata kategooriaid]].\nVaata ka [[Special:WantedCategories|puuduvaid kategooriaid]].",
"categoriesfrom": "Näita kategooriaid alates:",
- "special-categories-sort-count": "järjesta hulga järgi",
- "special-categories-sort-abc": "järjesta tähestikuliselt",
"deletedcontributions": "Kustutatud kaastöö",
"deletedcontributions-title": "Kasutaja kustutatud kaastöö",
"sp-deletedcontributions-contribs": "kaastöö",
@@ -2359,11 +2357,7 @@
"import-logentry-upload-detail": "$1 {{PLURAL:$1|redaktsioon|redaktsiooni}} imporditud",
"import-logentry-interwiki-detail": "$1 {{PLURAL:$1|redaktsioon|redaktsiooni}} imporditud asukohast $2",
"javascripttest": "JavaScripti katsetamine",
- "javascripttest-pagetext-noframework": "Seda lehekülge hoitakse JavaScripti katsete jaoks.",
- "javascripttest-pagetext-unknownframework": "Tundmatu katseraamistik \"$1\".",
"javascripttest-pagetext-unknownaction": "Tundmatu toiming \"$1\".",
- "javascripttest-pagetext-frameworks": "Palun vali üks järgmistest katseraamistikest: $1",
- "javascripttest-pagetext-skins": "Vali kujundus, millega katsetada:",
"javascripttest-qunit-intro": "Vaata [$1 katsetamise dokumentatsiooni] asukohas mediawiki.org.",
"tooltip-pt-userpage": "Sinu kasutajaleht",
"tooltip-pt-anonuserpage": "Sinu IP-aadressi kasutajalehekülg",
@@ -2631,8 +2625,8 @@
"exif-colorspace": "Värviruum",
"exif-componentsconfiguration": "Iga komponendi tähendus",
"exif-compressedbitsperpixel": "Pildi pakkimise meetod",
- "exif-pixelydimension": "Pildi laius",
- "exif-pixelxdimension": "Pildi kõrgus",
+ "exif-pixelxdimension": "Pildi laius",
+ "exif-pixelydimension": "Pildi kõrgus",
"exif-usercomment": "Kasutaja kommentaarid",
"exif-relatedsoundfile": "Seotud helifail",
"exif-datetimeoriginal": "Andmete loomise kuupäev ja kellaaeg",
@@ -3091,7 +3085,6 @@
"version-libraries-description": "Kirjeldus",
"version-libraries-authors": "Autorid",
"redirect": "Ãmbersuunamine faili, kasutaja, lehekülje või redaktsiooni identifikaatori järgi",
- "redirect-legend": "Ãmbersuunamine faili juurde või leheküljele",
"redirect-summary": "See erilehekülg suunab ümber faili (toodud failinimi), lehekülje (toodud redaktsiooni või lehekülje identifikaator) või kasutajalehekülje (toodud numbriline kasutaja identfikaator) juurde. Kasutamine: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]] või [[{{#Special:Redirect}}/user/101]].",
"redirect-submit": "Mine",
"redirect-lookup": "Leia:",
@@ -3103,7 +3096,6 @@
"redirect-not-exists": "Väärtust ei leitud",
"fileduplicatesearch": "Faili duplikaatide otsimine",
"fileduplicatesearch-summary": "Otsi duplikaatfaile nende räsiväärtuse järgi.",
- "fileduplicatesearch-legend": "Duplikaadi otsimine",
"fileduplicatesearch-filename": "Faili nimi:",
"fileduplicatesearch-submit": "Otsi",
"fileduplicatesearch-info": "$1 à $2 pikslit Faili suurus: $3 MIME-tüüp: $4",
diff --git a/languages/i18n/eu.json b/languages/i18n/eu.json
index e99ed78f69..9531e2ca91 100644
--- a/languages/i18n/eu.json
+++ b/languages/i18n/eu.json
@@ -593,7 +593,7 @@
"newarticle": "(Berria)",
"newarticletext": "Orrialde hau ez da existitzen oraindik. Orrialde sortu nahi baduzu, beheko koadroan idazten hasi zaitezke (ikus [$1 laguntza orrialdea] informazio gehiagorako). Hona nahi gabe etorri bazara, nabigatzaileko '''atzera''' botoian klik egin.",
"anontalkpagetext": "----''Orrialde hau konturik sortu ez edo erabiltzen ez duen erabiltzaile anonimo baten eztabaida orria da.\nBere IP helbidea erabili beharko da beraz identifikatzeko.\nErabiltzaile batek baino gehiagok IP bera erabil dezakete ordea.\nErabiltzaile anonimoa bazara eta zurekin zerikusirik ez duten mezuak jasotzen badituzu, mesedez [[Special:UserLogin/signup|Izena eman]] edo [[Special:UserLogin|saioa hasi]] etorkizunean horrelakoak gerta ez daitezen.''",
- "noarticletext": "Oraindik ez dago testurik orri honetan.\nEdukiz hornitzeko, aukera hauek dituzu: beste orri batzuetan [[Special:Search/{{PAGENAME}}|orri izenburu hau bilatzea]],\n[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} lotutako logak bilatzea],\nedo [{{fullurl:{{FULLPAGENAME}}|action=edit}} orri hau editatzea] .",
+ "noarticletext": "Oraindik ez dago testurik orri honetan.\nEdukiz hornitzeko, aukera hauek dituzu: beste orri batzuetan [[Special:Search/{{PAGENAME}}|orri izenburu hau bilatzea]],\n[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} lotutako logak bilatzea],\nedo [{{fullurl:{{FULLPAGENAME}}|action=edit}} orri hau sortzea] .",
"noarticletext-nopermission": "Une honetan ez dago testurik orrialde honetan.\nBeste orrialdeetan [[Special:Search/{{PAGENAME}}|izenburu hau bilatu dezakezu]],\nedo [{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} erlazionatutako erregistroak bilatu] , baina ez duzu orrialde hau sortzeko baimenik.",
"userpage-userdoesnotexist": "\"$1 \" lankidea ez dago erregistatuta. Mesedez, konprobatu orri hau editatu/sortu nahi duzun.",
"userpage-userdoesnotexist-view": "\"$1\" erabiltzaile-kontua ez dago erregistraturik.",
@@ -1602,8 +1602,6 @@
"categories-submit": "Erakutsi",
"categoriespagetext": "Ondorengo {{PLURAL:$1|kategoria honek|kategoria hauek}} orriak edo fitxategiak {{PLURAL:$1|dauzka|dauzkate}}.\n[[Special:UnusedCategories|Erabili gabeko kategoriak]] ez dira hemen erakusten.\nIkus, gainera, [[Special:WantedCategories|kategoriarik eskatuenak]].",
"categoriesfrom": "Honela hasten diren kategoriak erakutsi:",
- "special-categories-sort-count": "kontatetzearen arabera ordenatu",
- "special-categories-sort-abc": "alfabetikoki aldatu",
"deletedcontributions": "Ezabatutako ekarpenak",
"deletedcontributions-title": "Ezabatutako ekarpenak",
"sp-deletedcontributions-contribs": "ekarpenak",
@@ -2165,11 +2163,7 @@
"import-logentry-upload-detail": "$1 {{PLURAL:$1|berrikuspen|berrikuspen}}",
"import-logentry-interwiki-detail": "$1 {{PLURAL:$1|berrikuspen|berrikuspen}} $2-(e)tik",
"javascripttest": "JavaScript frogatzen",
- "javascripttest-pagetext-noframework": "Orrialde hau JavaScript frogak egiteko gordeta dago.",
- "javascripttest-pagetext-unknownframework": "Froga eremu ez-ezaguna \"$1\".",
"javascripttest-pagetext-unknownaction": "Ekintza ezezaguna \"$1\".",
- "javascripttest-pagetext-frameworks": "Mesedez, aukera ezazu froga eremu hauetako bat: $1",
- "javascripttest-pagetext-skins": "Aukeratu frogak egiteko itxura bat:",
"javascripttest-qunit-intro": "Ikusi [$1 frogen dokumentazioa] mediawiki.org orrialdean.",
"tooltip-pt-userpage": "{{GENDER:|Zure lankide}} orria",
"tooltip-pt-anonuserpage": "Zure IParen lankide orrialdea",
@@ -2177,7 +2171,7 @@
"tooltip-pt-anontalk": "Zure IParen eztabaida",
"tooltip-pt-preferences": "{{GENDER:|Zure}} hobespenak",
"tooltip-pt-watchlist": "Jarraitzen dituzun orrialdeen zerrenda.",
- "tooltip-pt-mycontris": "Nire ekarpenen zerrenda",
+ "tooltip-pt-mycontris": "{{GENDER:|Nire}} ekarpenen zerrenda",
"tooltip-pt-anoncontribs": "IP helbide honetatik egindako aldaketen zerrenda",
"tooltip-pt-login": "Izen ematera gonbidatzen zaitugu.",
"tooltip-pt-logout": "Saioa itxi",
@@ -2209,7 +2203,7 @@
"tooltip-t-recentchangeslinked": "Orri honetatik lotura duten orrietako azken aldaketak",
"tooltip-feed-rss": "Orrialde honen RSS jarioa",
"tooltip-feed-atom": "Orrialde honen atom jarioa",
- "tooltip-t-contributions": "Lankide honen ekarpen zerrenda ikusi",
+ "tooltip-t-contributions": "{{GENDER:$1|Lankide honen}} ekarpen zerrenda ikusi",
"tooltip-t-emailuser": "Lankide honi e-posta mezua bidali",
"tooltip-t-info": "Orrialde honi buruzko informazio gehiago",
"tooltip-t-upload": "Irudiak edo media fitxategiak igo",
@@ -2423,8 +2417,8 @@
"exif-colorspace": "Kolore tartea",
"exif-componentsconfiguration": "Osagai bakoitzaren esanahia",
"exif-compressedbitsperpixel": "Irudi konpresio mota",
- "exif-pixelydimension": "Irudiaren zabalera",
- "exif-pixelxdimension": "Irudiaren altuera",
+ "exif-pixelxdimension": "Irudiaren zabalera",
+ "exif-pixelydimension": "Irudiaren altuera",
"exif-usercomment": "Erabiltzailearen iruzkinak",
"exif-relatedsoundfile": "Harremanetan dagoen audio fitxategia",
"exif-datetimeoriginal": "Datuen sorreraren data eta ordua",
@@ -2874,7 +2868,6 @@
"version-libraries-description": "Deskribapena",
"version-libraries-authors": "Egileak",
"redirect": "Birzuzendu fitxategi, lankide edo berrikuspen IDaren arabera",
- "redirect-legend": "Orrialde edo fitxategi batera birzuzendu",
"redirect-submit": "Joan",
"redirect-lookup": "Ikuskatu:",
"redirect-value": "Balioa:",
@@ -2885,7 +2878,6 @@
"redirect-not-exists": "Ez da baliorik aurkitu",
"fileduplicatesearch": "Artxibo bikoiztuen bilaketa",
"fileduplicatesearch-summary": "Bikoiztutako fitxategiak bilatu bere hash balioaren arabera.",
- "fileduplicatesearch-legend": "Duplikatu bat bilatu",
"fileduplicatesearch-filename": "Fitxategi izena:",
"fileduplicatesearch-submit": "Bilaketa",
"fileduplicatesearch-info": "$1 Ã $2 pixel Fitxategiaren tamaina: $3 MIME mota: $4",
diff --git a/languages/i18n/ext.json b/languages/i18n/ext.json
index ba573084a4..93d25bf156 100644
--- a/languages/i18n/ext.json
+++ b/languages/i18n/ext.json
@@ -969,8 +969,6 @@
"allpages-bad-ns": "{{SITENAME}} nu tieni el espaciu e nombris \"$1\".",
"categories": "Categorias",
"categoriespagetext": "Las siguientis categorias contienin artÃculus u archivus murtimeya.\n[[Special:UnusedCategories|Unused categories]] are not shown here.\nAlso see [[Special:WantedCategories|wanted categories]].",
- "special-categories-sort-count": "ordenal pol cuenta",
- "special-categories-sort-abc": "ordenal alfabeticamenti",
"deletedcontributions": "Contribucionis el usuáriu esborrás",
"deletedcontributions-title": "Contribucionis el usuáriu esborrás",
"linksearch": "Atihus estelnus",
@@ -1463,8 +1461,8 @@
"exif-colorspace": "Espaciu e colol",
"exif-componentsconfiguration": "Senificau e ca componenti",
"exif-compressedbitsperpixel": "Mó de compresión la imahin",
- "exif-pixelydimension": "Anchón la imahin premitiu",
- "exif-pixelxdimension": "Artu la imahin premitiu",
+ "exif-pixelxdimension": "Anchón la imahin premitiu",
+ "exif-pixelydimension": "Artu la imahin premitiu",
"exif-usercomment": "Comentárius del usuáriu",
"exif-relatedsoundfile": "Archivu d'audiu relacionau",
"exif-datetimeoriginal": "Fecha i ora la heneración los datus",
@@ -1693,7 +1691,6 @@
"version-software-product": "Proutu",
"version-software-version": "Velsión",
"fileduplicatesearch": "Landeal archivus dupricaus",
- "fileduplicatesearch-legend": "Landeal dupricaus",
"fileduplicatesearch-filename": "Nombri el archivu:",
"fileduplicatesearch-submit": "Landeal",
"fileduplicatesearch-info": "$1 Ã $2 pixel Grandol del archivu: $3 Crasi MIME: $4",
diff --git a/languages/i18n/fa.json b/languages/i18n/fa.json
index cf13d37b3f..eac16c4033 100644
--- a/languages/i18n/fa.json
+++ b/languages/i18n/fa.json
@@ -51,7 +51,8 @@
"Mahdy Saffar",
"Arian Ar",
"Ms96",
- "Freshman404"
+ "Freshman404",
+ "Hamisun"
]
},
"tog-underline": "خط Ú©Ø´Ûد٠زÛر Ù¾ÛÙÙدÙا:",
@@ -512,7 +513,7 @@
"noemail": "ÙÛÚ Ø¢Ø¯Ø±Ø³ اÛÙ
ÛÙÛ Ø¨Ø±Ø§Û Ú©Ø§Ø±Ø¨Ø± «$1» ثبت Ùشد٠است.",
"noemailcreate": "Ø´Ù
ا باÛد ÛÚ© آدرس اÛÙ
Û٠درست ÙراÙÙ
Ú©ÙÛد",
"passwordsent": "گذرÙاÚÙâØ§Û Ø¬Ø¯Ûد ب٠آدرس اÛÙ
Û٠ثبت Ø´Ø¯Ù Ø¨Ø±Ø§Û Â«$1» ارسا٠شد.\nÙØ·Ùا٠پس از درÛاÙت Ø¢ÙØ Ø¯Ùبار٠ب٠سÛستÙ
Ùارد Ø´ÙÛد.",
- "blocked-mailpassword": "ÙشاÙÛ Ø¢ÛâÙ¾Û Ø´Ù
ا از ÙÛراÛØ´ بازداشت٠شدÙâاست ٠از اÛ٠ر٠ب٠Ù
ÙظÙر جÙÙÚ¯ÛØ±Û Ø§Ø² سÙءاستÙاد٠اجازÙ٠بÙرÙâÚ¯ÛØ±Û Ø§Ø² ÙابÙÛت بازÛØ§Ø¨Û Ú¯Ø°Ø±ÙاÚ٠را Ùدارد.",
+ "blocked-mailpassword": "ÙشاÙÛ Ø¢ÛâÙ¾Û Ø´Ù
ا از ÙÛراÛØ´ بازداشت٠شدÙâاست. ب٠Ù
ÙظÙر جÙÙÚ¯ÛØ±Û Ø§Ø² سÙءاستÙاد٠اجازÙ٠بÙرÙâÚ¯ÛØ±Û Ø§Ø² ÙابÙÛت بازÛØ§Ø¨Û Ú¯Ø°Ø±ÙاÚ٠از اÛ٠آÛâÙ¾Û Ø±Ø§ Ùدارد.",
"eauthentsent": "ÛÚ© اÛÙ
Û٠تأÛÛد Ø¨Ø±Ø§Û Ø¢Ø¯Ø±Ø³ اÛÙ
Û٠ب٠ÙشاÙÛ Ù
Ùرد Ùظر ارسا٠شد.\nÙب٠از اÛÙک٠اÛÙ
Û٠دÛÚ¯Ø±Û Ùاب٠ارسا٠ب٠اÛ٠آدرس Ø¨Ø§Ø´Ø¯Ø Ø¨Ø§Ûد دستÙرÙاÛÛ Ú©Ù Ø¯Ø± آ٠اÛÙ
Û٠آÙ
د٠است را جÙت تأÛÛد اÛÙ Ù
ساÙ٠ک٠اÛ٠آدرس Ù
تعÙ٠ب٠شÙ
Ø§Ø³ØªØ Ø§Ø¬Ø±Ø§ Ú©ÙÛد.",
"throttled-mailpassword": "ÛÚ© اÛÙ
Û٠بازÙشاÙÛ Ú¯Ø°Ø±ÙاÚ٠در $1 {{PLURAL:$1|ساعت|ساعت}} گذشت٠Ùرستاد٠شد٠است.\nØ¨Ø±Ø§Û Ø¬ÙÙÚ¯ÛØ±Û Ø§Ø² سÙءاستÙادÙØ Ùر $1 {{PLURAL:$1|ساعت|ساعت}} تÙÙا ÛÚ© اÛÙ
Û٠بازÙشاÙÛ Ú¯Ø°Ø±ÙاÚÙ Ùرستاد٠Ù
ÛâØ´Ùد.",
"mailerror": "خطا در ارسا٠اÛÙ
ÛÙ: $1",
@@ -1299,7 +1300,7 @@
"recentchanges-noresult": "ÙÛÚ ØªØºÛÛØ±Û Ø¯Ø± Ø·Ù٠دÙرÙ٠تعÛÛÙâشد٠با اÛÙ Ù
عÛارÙا ÙÙ
âØ®ÙاÙÛ Ùداشت.",
"recentchanges-feed-description": "آخرÛ٠تغÛÛرات ÙÛÚ©Û Ø±Ø§ در اÛÙ Ø®Ùراک Ù¾ÛâÚ¯ÛØ±Û Ú©ÙÛد.",
"recentchanges-label-newpage": "اÛÙ ÙÛراÛØ´ صÙØÙâØ§Û ØªØ§Ø²Ù Ø§Ûجاد کرد",
- "recentchanges-label-minor": "اÛÙ ÛÚ© ÙÛراÛØ´ جزئÛâاست",
+ "recentchanges-label-minor": "اÛÙ ÛÚ© ÙÛراÛØ´ Ø¬Ø²Ø¦Û Ø§Ø³Øª",
"recentchanges-label-bot": "اÛÙ ÙÛراÛØ´ را ÛÚ© ربات اÙجاÙ
داد٠است",
"recentchanges-label-unpatrolled": "اÛÙ ÙÛراÛØ´ ÙÙÙز گشتâزÙÛ Ùشد٠است",
"recentchanges-label-plusminus": "ØجÙ
صÙØ٠ب٠اÙداز٠اÛÙ Ù
Ùدار باÛت تغÛÛر ÛاÙت٠است",
@@ -1354,9 +1355,9 @@
"recentchangeslinked-page": "ÙاÙ
صÙØÙ:",
"recentchangeslinked-to": "ÙÙ
اÛØ´ تغÛÛرات صÙØÙâÙاÛÛ Ú©Ù Ø¨Ù ØµÙØÙ٠دادÙâشد٠پÛÙÙد دارÙد",
"recentchanges-page-added-to-category": "[[:$1]] ب٠رد٠اضاÙ٠شد",
- "recentchanges-page-added-to-category-bundled": "[[:$1]] Ù {{PLURAL:$2|ÛÚ© صÙØÙ|$2 صÙØÙ}}٠دÛگر ب٠رد٠اضاÙ٠شدÙد",
+ "recentchanges-page-added-to-category-bundled": "[[:$1]] Ù [[Special:WhatLinksHere/$1|{{PLURAL:$2|ÛÚ© صÙØÙ|$2 صÙØÙ}}]]دÛگر ب٠رد٠اضاÙ٠شدÙد",
"recentchanges-page-removed-from-category": "[[:$1]] از رد٠Øذ٠شد",
- "recentchanges-page-removed-from-category-bundled": "[[:$1]] Ù {{PLURAL:$2|ÛÚ© صÙØÙ|$2 صÙØÙ}}٠دÛگر از رد٠Øذ٠شدÙد",
+ "recentchanges-page-removed-from-category-bundled": "[[:$1]] Ù [[Special:WhatLinksHere/$1|{{PLURAL:$2|ÛÚ© صÙØÙ|$2 صÙØÙ}}]] دÛگر از رد٠Øذ٠شدÙد",
"autochange-username": "تغÛÛرات Ø®Ùدکار Ù
دÛاÙÛÚ©Û",
"upload": "Ø¨Ø§Ø±Ú¯Ø°Ø§Ø±Û Ù¾Ø±ÙÙدÙ",
"uploadbtn": "Ø¨Ø§Ø±Ú¯Ø°Ø§Ø±Û Ù¾Ø±ÙÙدÙ",
@@ -1535,6 +1536,7 @@
"uploadstash-badtoken": "اÙجاÙ
اÛ٠اÙداÙ
ÙاÙ
ÙÙ٠بÙØ¯Ø Ø§ØتÙ
اÙا٠ب٠اÛ٠دÙÛ٠ک٠اعتبار ÙÛراÛØ´ Ø´Ù
ا ب٠اتÙ
اÙ
رسÛد٠است. ÙØ·Ùا٠دÙبار٠اÙ
تØا٠کÙÛد.",
"uploadstash-errclear": "پاکâکرد٠پرÙÙدÙâÙا ÙاÙ
ÙÙ٠بÙد.",
"uploadstash-refresh": "تاز٠کرد٠ÙÙرست پرÙÙدÙâÙا",
+ "uploadstash-thumbnail": "ÙÙ
اÛØ´ بÙداÙگشتÛ",
"invalid-chunk-offset": "جابجاÛÛ ÙاÙ
عتبر ÙطعÙ",
"img-auth-accessdenied": "Ù
Ùع دسترسÛ",
"img-auth-nopathinfo": "PATH_INFO Ù
ÙجÙد ÙÛست.\nسرÙر Ø´Ù
ا Ø¨Ø±Ø§Û Ø±Ø¯Ú©Ø±Ø¯Ù Ø§ÛÙ Ù
Ùدار تÙظÛÙ
ÙشدÙâاست.\nÙ
Ù
ک٠است Ù
بتÙÛ Ø¨Ø± سÛâجÛâØ¢Û Ø¨Ø§Ø´Ø¯ ٠از img_auth پشتÛباÙÛ ÙÚ©Ùد.\nhttps://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Image_Authorization را ببÛÙÛد.",
@@ -1855,8 +1857,6 @@
"categories-submit": "ÙÙ
اÛØ´",
"categoriespagetext": "{{PLURAL:$1|ردÙÙ|ردÙâÙاÛ}} زÛر Ø¯Ø§Ø±Ø§Û ØµÙØات Ûا پرÙÙدÙâÙاÛÛ {{PLURAL:$1|است|ÙستÙد}}.\n[[Special:UnusedCategories|ردÙâÙØ§Û Ø§Ø³ØªÙادÙâÙشدÙ]] در اÛÙجا ÙÙ
اÛØ´ داد٠ÙشدÙâاÙد.\nÙÙ
ÚÙÛÙ [[Special:WantedCategories|ردÙâÙØ§Û Ù
Ùرد ÙÛاز]] را ببÛÙÛد.",
"categoriesfrom": "ÙÙ
اÛØ´ ردÙâÙا با شرÙع از:",
- "special-categories-sort-count": "Ù
رتب کرد٠بر اساس تعداد",
- "special-categories-sort-abc": "Ù
رتب کرد٠اÙÙباÛÛ",
"deletedcontributions": "Ù
شارکتâÙØ§Û ØØ°ÙâشدÙ",
"deletedcontributions-title": "Ù
شارکتâÙØ§Û ØØ°ÙâشدÙ",
"sp-deletedcontributions-contribs": "Ù
شارکتâÙا",
@@ -2233,6 +2233,7 @@
"ipb-unblock": "باز کرد٠ÙاÙ
Ú©Ø§Ø±Ø¨Ø±Û Ûا ÙشاÙÛ Ø¢ÛâÙ¾Û",
"ipb-blocklist": "دÛد٠Ùطع دسترسÛâÙØ§Û Ù
ÙجÙد",
"ipb-blocklist-contribs": "Ù
شارکتâÙØ§Û $1",
+ "ipb-blocklist-duration-left": "$1 باÙÛ Ù
اÙدÙ",
"unblockip": "باز کرد٠کاربر",
"unblockiptext": "Ø¨Ø±Ø§Û Ø¨Ø§Ø²Ú¯Ø±Ø¯Ø§ÙØ¯Ù Ø¯Ø³ØªØ±Ø³Û ÙÙشت٠ب٠ÛÚ© ÙشاÙÛ Ø¢ÛâÙ¾Û Ûا ÙاÙ
Ú©Ø§Ø±Ø¨Ø±Û Ø¨Ø³ØªÙâشد٠از ÙرÙ
زÛر استÙاد٠کÙÛد.",
"ipusubmit": "باز کرد٠دسترسÛ",
@@ -2474,11 +2475,7 @@
"import-logentry-upload-detail": "$1 {{PLURAL:$1|ÙسخÙ|ÙسخÙ}} ÙاردشدÙ",
"import-logentry-interwiki-detail": "$1 {{PLURAL:$1|ÙسخÙ|ÙسخÙ}} Ùاردشد٠از $2",
"javascripttest": "آزÙ
اÛØ´ جاÙا اسکرÛپت",
- "javascripttest-pagetext-noframework": "اÛ٠صÙØÙ Ø¨Ø±Ø§Û Ø§Ø¬Ø±Ø§Û Ø¢Ø²Ù
اÛØ´âÙØ§Û Ø¬Ø§Ùا اسکرÛپت Ú©Ùار گذاشت٠شدÙâاست.",
- "javascripttest-pagetext-unknownframework": "ÚارÚÙب آزÙ
اÛØ´Û ÙاشÙاخت٠«$1».",
"javascripttest-pagetext-unknownaction": "تابع ÙاشÙاختÙÙ \"$1\".",
- "javascripttest-pagetext-frameworks": "ÙØ·Ùا٠ÛÚ©Û Ø§Ø² ÚارÚÙبâÙØ§Û Ø¢Ø²Ù
اÛØ´ زÛر را اÙتخاب Ú©ÙÛد: $1",
- "javascripttest-pagetext-skins": "Ù¾ÙستÙâØ§Û Ø±Ø§ Ø¨Ø±Ø§Û Ø§Ø¬Ø±Ø§Û Ø¢Ø²Ù
اÛØ´âÙا اÙتخاب Ú©ÙÛد:",
"javascripttest-qunit-intro": "[$1 Ù
ستÙدات آزÙ
اÛØ´] را در mediawiki.org ببÛÙÛد.",
"tooltip-pt-userpage": "صÙØÙÙ {{GENDER:|Ú©Ø§Ø±Ø¨Ø±Û Ø´Ù
ا}}",
"tooltip-pt-anonuserpage": "صÙØÙÙ Ú©Ø§Ø±Ø¨Ø±Û ÙشاÙÛ Ø¢ÛâÙ¾ÛâØ§Û Ú©Ù Ø¨Ø§ Ø¢Ù ÙÛراÛØ´ Ù
ÛâÚ©ÙÛد",
@@ -2740,8 +2737,8 @@
"exif-colorspace": "ÙØ¶Ø§Û Ø±ÙÚ¯Û",
"exif-componentsconfiguration": "Ù
عÙÛ Ùر ÛÚ© از Ù
ؤÙÙÙâÙا",
"exif-compressedbitsperpixel": "ØاÙت ÙشردÙâØ³Ø§Ø²Û ØªØµÙÛر",
- "exif-pixelydimension": "Ù¾ÙÙØ§Û ØªØµÙÛر",
- "exif-pixelxdimension": "بÙÙØ¯Û ØªØµÙÛر",
+ "exif-pixelxdimension": "Ù¾ÙÙØ§Û ØªØµÙÛر",
+ "exif-pixelydimension": "بÙÙØ¯Û ØªØµÙÛر",
"exif-usercomment": "تÙضÛØات کاربر",
"exif-relatedsoundfile": "پرÙÙدÙ٠صÙØªÛ Ù
ربÙØ·",
"exif-datetimeoriginal": "تارÛØ® ٠زÙ
ا٠تÙÙÛد دادÙâÙا",
@@ -3129,7 +3126,7 @@
"watchlistedit-raw-done": "ÙÙرست Ù¾ÛâÚ¯ÛرÛâÙØ§Û Ø´Ù
ا ب٠رÙز شد.",
"watchlistedit-raw-added": "$1 عÙÙا٠ب٠ÙÙرست Ù¾ÛâÚ¯ÛرÛâÙا اضاÙÙ {{PLURAL:$1|شد|شدÙد}}:",
"watchlistedit-raw-removed": "$1 عÙÙا٠ØØ°Ù {{PLURAL:$1|شد|شدÙد}}:",
- "watchlistedit-clear-title": "ÙÙرست Ù¾ÛÚ¯ÛØ±Û Ù¾Ø§Ú©Ø³Ø§Ø²ÛâشدÙ",
+ "watchlistedit-clear-title": "Ù¾Ø§Ú©Ø³Ø§Ø²Û ÙÙرست Ù¾ÛÚ¯ÛرÛ",
"watchlistedit-clear-legend": "Ù¾Ø§Ú©Ø³Ø§Ø²Û ÙÙرست Ù¾ÛÚ¯ÛرÛ",
"watchlistedit-clear-explain": "ÙÙ
٠عÙاÙÛ٠از ÙÙرست Ù¾ÛÚ¯ÛرÛÙØ§Û Ø´Ù
ا ØØ°Ù Ø®ÙاÙد شد",
"watchlistedit-clear-titles": "عÙÙاÙâÙا:",
@@ -3246,7 +3243,6 @@
"version-libraries-description": "تÙضÛØات",
"version-libraries-authors": "ÙÙÛسÙدگاÙ",
"redirect": "تغÛÛرÙ
سÛر تÙسط پرÙÙدÙØ Ú©Ø§Ø±Ø¨Ø±Ø ØµÙØÙ Ûا سÛاÙÙÙ Ø´ÙاسÙÙ ÙسخÙ",
- "redirect-legend": "تغÛÛرÙ
سÛر ب٠ÛÚ© پرÙÙد٠Ûا صÙØÙ",
"redirect-summary": "اÛ٠صÙØÙÙ ÙÛÚ٠ب٠پرÙÙد٠(ÙاÙ
پرÙÙد٠دادÙâشدÙ)Ø ØµÙØÙ (Ø´Ù
ار٠شÙاسÙ٠صÙØÙ Ûا Ø´Ù
ار٠ÙسخÙ٠دادÙâشدÙ) Ûا صÙØÙÙ Ú©Ø§Ø±Ø¨Ø±Û (Ø´ÙاسÙÙ Ø¹Ø¯Ø¯Û Ú©Ø§Ø±Ø¨Ø±Û Ø¯Ø§Ø¯ÙâشدÙ) تغÛÛرÙ
سÛر Ù
ÛâÛابد. طرز استÙادÙ: [[{{#Special:Redirect}}/file/Example.jpg]]Ø \n[[{{#Special:Redirect}}/page/64308]]Ø [[{{#Special:Redirect}}/revision/328429]] Ûا [[{{#Special:Redirect}}/user/101]] Ûا\n[[{{#Special:Redirect}}/logid/186]].",
"redirect-submit": "برÙ",
"redirect-lookup": "جستجÙ:",
@@ -3259,7 +3255,6 @@
"redirect-not-exists": "Ù
Ùدار Ù¾Ûدا Ùشد",
"fileduplicatesearch": "Ø¬Ø³ØªØ¬Ù Ø¨Ø±Ø§Û Ù¾Ø±ÙÙدÙâÙØ§Û ØªÚ©Ø±Ø§Ø±Û",
"fileduplicatesearch-summary": "Ø¬Ø³ØªØ¬Ù Ø¨Ø±Ø§Û Ù¾Ø±ÙÙدÙâÙØ§Û ØªÚ©Ø±Ø§Ø±Û Ø¨Ø± اساس Ù
Ùدار درÙÙ
âشدÙ٠آÙâÙا صÙرت Ù
ÛâÚ¯Ûرد.",
- "fileduplicatesearch-legend": "جستجÙÛ Ù
Ùارد تکرارÛ",
"fileduplicatesearch-filename": "ÙاÙ
پرÙÙدÙ:",
"fileduplicatesearch-submit": "جستجÙ",
"fileduplicatesearch-info": "$1 à $2 Ù¾Ûکس٠اÙدازÙ٠پرÙÙدÙ: $3 ÙÙع MIME: $4",
@@ -3643,6 +3638,7 @@
"special-characters-group-ipa": "Ø¢ÙاÙÚ¯Ø§Ø±Û Ø¨ÛÙâاÙÙ
ÙÙÛ",
"special-characters-group-symbols": "ÙÙ
ادÙا",
"special-characters-group-greek": "ÛÙÙاÙÛ",
+ "special-characters-group-greekextended": "ÛÙÙاÙÛ ÙدÛÙ
Û",
"special-characters-group-cyrillic": "سÛرÛÙÛÚ©",
"special-characters-group-arabic": "عربÛ",
"special-characters-group-arabicextended": "Ø¹Ø±Ø¨Û Ú¯Ø³ØªØ±Ø´âÛاÙتÙ",
@@ -3668,5 +3664,46 @@
"sessionprovider-generic": "$1 ÙصÙ",
"sessionprovider-mediawiki-session-cookiesessionprovider": "ÙصÙâÙØ§Û Ú©ÙÚ©ÛâÙ
ØÙر",
"sessionprovider-nocookies": "Ú©ÙÚ©ÛâÙا Ù
Ù
ک٠است غÛر Ùعا٠شد٠باشÙد. اطÙ
ÛÙا٠کسب Ú©ÙÛد Ú©Ù Ú©ÙÚ©ÛâÙا را Ùعا٠کردÙâاÛد ٠دÙبار٠آغاز Ú©ÙÛد.",
- "randomrootpage": "صÙØÙ٠رÛØ´Ù٠تصادÙÛ"
+ "randomrootpage": "صÙØÙ٠رÛØ´Ù٠تصادÙÛ",
+ "log-action-filter-block": "ÙÙع بست٠شدÙ:",
+ "log-action-filter-delete": "ÙÙع ØØ°Ù:",
+ "log-action-filter-import": "ÙÙع Ùاردات",
+ "log-action-filter-managetags": "ÙÙع Ù
دÛرÛت",
+ "log-action-filter-move": "ÙÙع Øرکت",
+ "log-action-filter-newusers": "ÙÙع اÛجاد Øساب",
+ "log-action-filter-patrol": "ÙÙع گشت:",
+ "log-action-filter-protect": "ÙÙع Ù
ØاÙظت",
+ "log-action-filter-rights": "رÙØ´ تغÛÛر صØÛØ",
+ "log-action-filter-suppress": "رÙØ´ سرکÙب",
+ "log-action-filter-upload": "ÙÙع بارگذارÛ",
+ "log-action-filter-all": "ÙÙ
Ù",
+ "log-action-filter-block-block": "بستÙ",
+ "log-action-filter-block-reblock": "تصØÛØ Ø¨Ùاک",
+ "log-action-filter-block-unblock": "باز شدÙ",
+ "log-action-filter-contentmodel-change": "تغÛÛر ÙÙع Ù
ØتÙا",
+ "log-action-filter-delete-delete": "Øذ٠صÙØÙ",
+ "log-action-filter-delete-restore": "اØÛØ§Û ØµÙØÙ",
+ "log-action-filter-delete-event": "Øذ٠سÛاÙÙ",
+ "log-action-filter-delete-revision": "ØØ°Ù ÙÛراÛØ´",
+ "log-action-filter-import-interwiki": "ÙرÙØ¯Û ØªØ±Ø§ÙسÙÛÚ©Û",
+ "log-action-filter-managetags-create": "اÛجاد تگ",
+ "log-action-filter-managetags-delete": "Øذ٠کرد٠تگ",
+ "log-action-filter-managetags-activate": "ÙعاÙØ³Ø§Ø²Û ØªÚ¯",
+ "log-action-filter-managetags-deactivate": "تغÛÛر تگ",
+ "log-action-filter-newusers-create": "اÛجاد شد٠تÙسط کاربر ÙاشÙاس",
+ "log-action-filter-newusers-create2": "اÛجاد شد٠تÙسط کاربر ثبت ÙاÙ
شدÙ",
+ "log-action-filter-newusers-autocreate": "اÛجاد Ø®Ùدکار",
+ "log-action-filter-newusers-byemail": "اÛجاد پسÙرد با ارسا٠ب٠اÛÙ
ÛÙ",
+ "log-action-filter-patrol-autopatrol": "گشت Ø®Ùدکار",
+ "log-action-filter-protect-protect": "Ù
ØاÙظت",
+ "log-action-filter-protect-modify": "اصÙØ§Ø ØÙاظت",
+ "log-action-filter-protect-unprotect": "خرÙج از Ù
ØاÙظت",
+ "log-action-filter-protect-move_prot": "Øرکت Ù
ØاÙظت شدÙ",
+ "log-action-filter-rights-rights": "تغÛبر دستÛ",
+ "log-action-filter-rights-autopromote": "تغÛÛر اتÙÙ
اتÛÚ©",
+ "log-action-filter-suppress-event": "جÙÙÚ¯ÛØ±Û Ø§Ø² ÙرÙد",
+ "log-action-filter-suppress-revision": "جÙÙÚ¯ÛØ±Û Ø§Ø² ÙÛراÛØ´",
+ "log-action-filter-suppress-delete": "Ù
تÙÙÙ Ø³Ø§Ø²Û ØµÙØÙ",
+ "log-action-filter-upload-upload": "Ø¨Ø§Ø±Ú¯Ø°Ø§Ø±Û Ø¬Ø¯Ûد",
+ "log-action-filter-upload-overwrite": "Ø¨Ø§Ø±Ú¯Ø°Ø§Ø±Û Ø¯ÙبارÙ"
}
diff --git a/languages/i18n/fi.json b/languages/i18n/fi.json
index 126c430d99..a2001d41c8 100644
--- a/languages/i18n/fi.json
+++ b/languages/i18n/fi.json
@@ -47,7 +47,9 @@
"Macofe",
"Beluga",
"Pyscowicz",
- "Olimar"
+ "Olimar",
+ "Mikahama",
+ "01miki10"
]
},
"tog-underline": "Linkkien alleviivaus:",
@@ -65,6 +67,7 @@
"tog-watchdefault": "Lisää muokkaamani sivut ja tiedostot tarkkailulistalleni",
"tog-watchmoves": "Lisää siirtämäni sivut ja tiedostot tarkkailulistalleni",
"tog-watchdeletion": "Lisää poistamani sivut ja tiedostot tarkkailulistalleni",
+ "tog-watchuploads": "Lisää tallentamani tiedostot tarkkailulistalleni",
"tog-watchrollback": "Lisää tarkkailulistalleni ne sivut, joissa olen käyttänyt palautus-toimintoa.",
"tog-minordefault": "Merkitse kaikki muutokset oletuksena pieniksi",
"tog-previewontop": "Näytä esikatselu muokkauskentän yläpuolella",
@@ -505,7 +508,7 @@
"noemail": "Käyttäjälle $1 ei ole määritelty sähköpostiosoitetta.",
"noemailcreate": "Sinun on annettava voimassa oleva sähköpostiosoite",
"passwordsent": "Uusi salasana on lähetetty käyttäjän $1 sähköpostiosoitteeseen.\nOle hyvä ja kirjaudu sisään kun olet saanut sen.",
- "blocked-mailpassword": "Osoitteellesi on asetettu muokkausesto, joka estää käyttämästä salasanamuistutustoimintoa.",
+ "blocked-mailpassword": "IP-osoitteellesi on asetettu muokkausesto. Väärinkäytön estämiseksi salasanamuistutustoiminnon käyttö tästä IP-osoitteesta on kielletty.",
"eauthentsent": "Varmennussähköposti on lähetetty annettuun sähköpostiosoitteeseen.\nMuita viestejä ei lähetetä, ennen kuin olet toiminut viestin ohjeiden mukaan ja varmistanut, että sähköpostiosoite kuuluu sinulle.",
"throttled-mailpassword": "Salasananpalautusviesti on lähetetty {{PLURAL:$1|kuluvan|kuluvien $1}} tunnin aikana. Salasananpalautusviestejä lähetetään enintään {{PLURAL:$1|tunnin|$1 tunnin}} välein.",
"mailerror": "Virhe lähetettäessä sähköpostia: $1",
@@ -545,7 +548,12 @@
"changepassword-success": "Salasanasi on vaihdettu!",
"changepassword-throttled": "Olet tehnyt liian monta äskettäistä kirjautumisyritystä.\nOdota $1 ennen kuin yrität uudelleen.",
"botpasswords": "Botin salasanat",
+ "botpasswords-summary": "Bottisalasanat mahdollistavat pääsyn käyttäjätunnukselle API:n kautta käyttämättä tunnuksen pääkirjautumistietoja. Käyttäjäoikeudet voivat olla rajoitettuja kirjauduttaessa sisään bottisalasanalla.\n\nJos et tiedä, miksi haluaisit tehdä tämän, on parasta olla tekemättä sitä. Kenenkään ei koskaan pitäisi pyytää sinua luomaan bottisalasanaa ja antamaan sen hänelle.",
"botpasswords-disabled": "Botin salasanat on poistettu käytöstä.",
+ "botpasswords-no-central-id": "Käyttääksesi bottisalasanoja sinun täytyy olla kirjautuneena sisään keskitetyllä tunnuksella.",
+ "botpasswords-existing": "Olemassaolevat bottisalasanat",
+ "botpasswords-createnew": "Luo uusi bottisalasana",
+ "botpasswords-editexisting": "Muokkaa olemassaolevaa bottisalasanaa",
"botpasswords-label-appid": "Botin nimi:",
"botpasswords-label-create": "Luo",
"botpasswords-label-update": "Päivitä",
@@ -553,12 +561,26 @@
"botpasswords-label-delete": "Poista",
"botpasswords-label-resetpassword": "Uudista salasana",
"botpasswords-label-grants": "Valittavissa olevat toimintaoikeudet:",
- "botpasswords-label-restrictions": "Käytön rajoitukset:",
+ "botpasswords-label-restrictions": "Käyttörajoitukset:",
+ "botpasswords-bad-appid": "Botin nimi \"$1\" ei kelpaa.",
+ "botpasswords-insert-failed": "Botin nimen \"$1\" lisääminen epäonnsitui. Onko se jo lisätty?",
+ "botpasswords-update-failed": "Botin nimen \"$1\" päivittäminen epäonnistui. Onko se poistettu?",
+ "botpasswords-created-title": "Bottisalasana luotu",
+ "botpasswords-created-body": "Bottisalasana käyttäjän \"$2\" bottinimelle \"$1\" luotiin.",
+ "botpasswords-updated-title": "Bottisalasana päivitetty",
+ "botpasswords-updated-body": "Bottisalasana käyttäjän \"$2\" bottinimelle \"$1\" päivitettiin.",
+ "botpasswords-deleted-title": "Bottisalasana poistettu",
+ "botpasswords-deleted-body": "Bottisalasana käyttäjän \"$2\" bottinimelle \"$1\" poistettiin.",
+ "botpasswords-newpassword": "Uusi salasana kirjautumiseen käyttäjällä $1 on $2 . Säilytä tämä myöhempää käyttöä varten. ",
+ "botpasswords-no-provider": "BotPasswordsSessionProvider ei ole saatavilla.",
+ "botpasswords-restriction-failed": "Bottisalasanan rajoitukset estävät tämän sisäänkirjautumisen.",
+ "botpasswords-invalid-name": "Annetussa käyttäjätunnuksessa ei ole bottisalasanan erotinta (\"$1\").",
+ "botpasswords-not-exist": "Käyttäjällä \"$1\" ei ole bottisalasanaa nimellä \"$2\".",
"resetpass_forbidden": "Salasanoja ei voi vaihtaa.",
"resetpass-no-info": "Et voi nähdä tätä sivua kirjautumatta sisään.",
"resetpass-submit-loggedin": "Muuta salasana",
"resetpass-submit-cancel": "Peruuta",
- "resetpass-wrong-oldpass": "Virheellinen väliaikainen tai nykyinen salasana.\nOlet saattanut jo onnistuneesti vaihtaa salasanasi tai pyytää uutta väliaikaista salasanaa.",
+ "resetpass-wrong-oldpass": "Virheellinen väliaikainen tai nykyinen salasana.\nOlet saattanut jo vaihtaa salasanasi tai pyytää uutta väliaikaista salasanaa.",
"resetpass-recycled": "Sinun täytyy valita uudeksi salasanaksi jokin muu kuin nykyinen salasanasi.",
"resetpass-temp-emailed": "Olet kirjautunut sisään väliaikaisella sähköpostitse toimitetulla koodilla.\nJotta pääset kirjautumaan sisään kunnolla, sinun on nyt asetettava uusi salasana tässä:",
"resetpass-temp-password": "Väliaikainen salasana:",
@@ -656,7 +678,7 @@
"newarticle": "(Uusi)",
"newarticletext": "Linkki toi sivulle, jota ei vielä ole.\nVoit luoda sivun kirjoittamalla alla olevaan kenttään (katso [$1 ohjesivulta] lisätietoja).\nJos et halua luoda sivua, käytä selaimen paluutoimintoa.",
"anontalkpagetext": "----''Tämä on nimettömän käyttäjän keskustelusivu. Hän ei ole joko luonut itselleen käyttäjätunnusta tai ei käytä sitä. Siksi hänet tunnistetaan nyt numeerisella IP-osoitteella. Kyseinen IP-osoite voi olla useamman henkilön käytössä. Jos olet nimetön käyttäjä, ja sinusta tuntuu, että aiheettomia kommentteja on ohjattu sinulle, [[Special:UserLogin/signup|luo itsellesi käyttäjätunnus]] tai [[Special:UserLogin|kirjaudu sisään]] välttääksesi jatkossa sekaannukset muiden nimettömien käyttäjien kanssa.''",
- "noarticletext": "Tällä hetkellä tällä sivulla ei ole tekstiä.\nVoit [[Special:Search/{{PAGENAME}}|etsiä sivun nimellä]] muilta sivuilta,\n[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} hakea aiheeseen liittyviä lokeja]\ntai [{{fullurl:{{FULLPAGENAME}}|action=edit}} muokata tätä sivua] .",
+ "noarticletext": "Tällä hetkellä tällä sivulla ei ole tekstiä.\nVoit [[Special:Search/{{PAGENAME}}|etsiä sivun nimellä]] muilta sivuilta,\n[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} hakea aiheeseen liittyviä lokeja]\ntai [{{fullurl:{{FULLPAGENAME}}|action=edit}} luoda tämän sivun] .",
"noarticletext-nopermission": "Tällä hetkellä tällä sivulla ei ole tekstiä.\nVoit [[Special:Search/{{PAGENAME}}|etsiä sivun nimellä]] muilta sivuilta tai [{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} hakea aiheeseen liittyviä lokeja] , mutta sinulla ei ole oikeutta luoda tätä sivua.",
"missing-revision": "Sivusta \"{{FULLPAGENAME}}\" ei ole olemassa versiota $1.\n\nYleensä tämä johtuu vanhentuneesta historialinkistä sivulle, joka on poistettu.\nTarkempia tietoja löytyy [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} poistolokista].",
"userpage-userdoesnotexist": "Käyttäjätunnusta \"$1\" ei ole rekisteröity. \nVarmista, haluatko luoda tämän sivun tai muokata sitä.",
@@ -675,7 +697,7 @@
"previewnote": "'''Tämä on vasta sivun esikatselu.'''\nTekemiäsi muutoksia ei ole vielä tallennettu.",
"continue-editing": "Siirry muokkauskenttään",
"previewconflict": "Tämä esikatselu näyttää miltä muokkausalueella oleva teksti näyttää tallennettuna.",
- "session_fail_preview": "'''Muokkaustasi ei voitu tallentaa, koska istuntosi tiedot ovat kadonneet.''' Yritä uudelleen. Jos ongelma ei katoa, yritä [[Special:UserLogout|kirjautua ulos]] ja takaisin sisään.",
+ "session_fail_preview": "Muokkaustasi ei voitu tallentaa, koska istuntosi tiedot ovat kadonneet.\n\nSaatat olla kirjautunut ulos. '''Varmista, että olet edelleen kirjautunut sisään ja yritä uudelleen'''. Jos ongelma ei katoa, yritä [[Special:UserLogout|kirjautua ulos]] ja takaisin sisään, ja varmista, että selaimesi sallii evästeet tältä sivustolta.",
"session_fail_preview_html": "'''Muokkaustasi ei voitu tallentaa, koska istuntosi tiedot ovat kadonneet.'''\n\nEsikatselu on piilotettu varokeinona JavaScript-hyökkäyksiä vastaan â tässä wikissä on HTML-tila päällä.\n\nYritä uudelleen. Jos ongelma ei katoa, yritä [[Special:UserLogout|kirjautua ulos]] ja takaisin sisään.",
"token_suffix_mismatch": "'''Muokkauksesi on hylätty, koska asiakasohjelmasi ei osaa käsitellä välimerkkejä muokkaustarkisteessa. Syynä voi olla viallinen välityspalvelin.'''",
"edit_form_incomplete": "'''Osa muokkauslomakkeesta ei saavuttanut palvelinta. Tarkista, että muokkauksesi ovat vahingoittumattomia ja yritä uudelleen.'''",
@@ -842,9 +864,9 @@
"revdelete-unsuppress": "Poista rajoitukset palautetuilta versioilta",
"revdelete-log": "Syy:",
"revdelete-submit": "Toteuta {{PLURAL:$1|valittuun versioon|valittuihin versioihin}}",
- "revdelete-success": "'''Version näkyvyys päivitetty.'''",
+ "revdelete-success": "Version näkyvyys päivitetty.",
"revdelete-failure": "'''Version näkyvyyden muuttaminen ei onnistunut:'''\n$1",
- "logdelete-success": "'''Lokitapahtuman näkyvyyttä on muutettu.'''",
+ "logdelete-success": "Lokitapahtuman näkyvyyttä on muutettu.",
"logdelete-failure": "'''Lokin näkyvyyttä ei voitu asettaa:'''\n$1",
"revdel-restore": "muuta näkyvyyttä",
"pagehist": "Sivun muutoshistoria",
@@ -1087,7 +1109,7 @@
"userrights-changeable-col": "Ryhmät, joita voit muuttaa",
"userrights-unchangeable-col": "Ryhmät, joita et voi muuttaa",
"userrights-conflict": "Päällekkäinen käyttöoikeuksien muutos! Tarkista tekemäsi muutokset ja vahvista ne.",
- "userrights-removed-self": "Poistit onnistuneesti omat oikeutesi. Tämän jälkeen et enää pääse tälle sivulle.",
+ "userrights-removed-self": "Poistit omat oikeutesi. Tämän vuoksi sinulla ei enää ole oikeutta päästä tälle sivulle.",
"group": "Ryhmä",
"group-user": "käyttäjät",
"group-autoconfirmed": "automaattisesti hyväksytyt käyttäjät",
@@ -1323,9 +1345,9 @@
"recentchangeslinked-page": "Sivun nimi:",
"recentchangeslinked-to": "Näytä sen sijaan muutokset sivuihin, joista on linkki tähän sivuun",
"recentchanges-page-added-to-category": "[[:$1]] lisätty luokkaan",
- "recentchanges-page-added-to-category-bundled": "[[:$1]] ja {{PLURAL:$2|one page|$2 pages}} lisätty luokkaan",
+ "recentchanges-page-added-to-category-bundled": "[[:$1]] lisätty luokkaan, [[Special:WhatLinksHere/$1|tämä sivu on sisällytetty muihin sivuihin]]",
"recentchanges-page-removed-from-category": "[[:$1]] poistettu luokasta",
- "recentchanges-page-removed-from-category-bundled": "[[:$1]] ja {{PLURAL:$2|one page|$2 pages}} poistettu luokasta",
+ "recentchanges-page-removed-from-category-bundled": "[[:$1]] poistettu luokasta, [[Special:WhatLinksHere/$1|tämä sivu on sisällytetty muihin sivuihin]]",
"autochange-username": "MediaWiki automaattinen muutos",
"upload": "Tallenna tiedosto",
"uploadbtn": "Tallenna tiedosto",
@@ -1398,7 +1420,8 @@
"uploaded-script-svg": "Found scriptable element \"$1\" in the uploaded SVG file.",
"uploaded-hostile-svg": "Tallennetun SVG-tiedoston tyylielementissä löytyi turvaton CSS.",
"uploaded-event-handler-on-svg": "Setting event-handler attributes $1=\"$2\"
is not allowed in SVG files.",
- "uploaded-href-unsafe-target-svg": "Found href to unsafe target <$1 $2=\"$3\">
in the uploaded SVG file.",
+ "uploaded-href-attribute-svg": "href-attribuutit SVG-tiedostoissa saavat linkittää vain http://- tai https://-kohteisiin, löytyi <$1 $2=\"$3\">
.",
+ "uploaded-href-unsafe-target-svg": "Löytyi href epäturvalliseen dataan: URI-kohde <$1 $2=\"$3\">
tallennetussa SVG-tiedostossa.",
"uploaded-animate-svg": "Found \"animate\" tag that might be changing href, using the \"from\" attribute <$1 $2=\"$3\">
in the uploaded SVG file.",
"uploaded-setting-event-handler-svg": "Setting event-handler attributes is blocked, found <$1 $2=\"$3\">
in the uploaded SVG file.",
"uploaded-setting-href-svg": "Using the \"set\" tag to add \"href\" attribute to parent element is blocked.",
@@ -1431,6 +1454,7 @@
"upload-too-many-redirects": "URL sisälsi liian monta ohjausta",
"upload-http-error": "HTTP-virhe: $1",
"upload-copy-upload-invalid-domain": "Tiedostojen tallentamista tästä verkko-osoitteesta ei ole sallittu.",
+ "upload-foreign-cant-upload": "Tätä wikiä ei ole konfiguroitu tallentamaan tiedostoja pyydettyyn ulkoiseen tiedostovarastoon.",
"upload-dialog-title": "Tiedoston tallennus",
"upload-dialog-button-cancel": "Peru",
"upload-dialog-button-done": "Valmis",
@@ -1438,7 +1462,9 @@
"upload-dialog-button-upload": "Tallenna",
"upload-form-label-infoform-title": "Yksityiskohdat",
"upload-form-label-infoform-name": "Nimi",
+ "upload-form-label-infoform-name-tooltip": "Tiedoston yksilöllinen ja kuvaava otsikko, jota käytetään tiedostonimenä. Voit käyttää tavallista kieltä välilyönnein. Ãlä sisällytä tiedoston päätettä.",
"upload-form-label-infoform-description": "Kuvaus",
+ "upload-form-label-infoform-description-tooltip": "Kuvaa lyhyesti kaikkea, mikä on teoksessa huomionarvoista.\nJos kyseessä on valokuva, mainitse kuvatut pääasiat, tapahtuma tai paikka.",
"upload-form-label-usage-title": "Käyttö",
"upload-form-label-usage-filename": "Tiedostonimi",
"foreign-structured-upload-form-label-own-work": "Tämä on oma työni",
@@ -1498,9 +1524,10 @@
"uploadstash-summary": "Tämä sivu tarjoaa pääsyn tiedostoihin, jotka on tallennettu tai joiden tallennus on käynnissä, mutta joita ei ole vielä julkaistu tässä wikissä. Vain tiedostot tallentanut käyttäjä voi tarkastella näitä tiedostoja.",
"uploadstash-clear": "Poista muistissa olevat tiedostot",
"uploadstash-nofiles": "Sinulla ei ole muistissa olevia tiedostoja.",
- "uploadstash-badtoken": "Toiminnon suoritus epäonnistui. Tähän voi olla syynä muokkausvaltuuksien vanhentuminen. Yritä uudelleen.",
- "uploadstash-errclear": "Muistin tyhjennys epäonnistui.",
+ "uploadstash-badtoken": "Toiminnon suorittaminen epäonnistui. Tähän saattaa olla syynä muokkausvaltuuksiesi vanhentuminen. Yritä uudelleen.",
+ "uploadstash-errclear": "Tiedostojen tyhjentäminen epäonnistui.",
"uploadstash-refresh": "Päivitä tiedostoluettelo",
+ "uploadstash-thumbnail": "näytä pienoiskuva",
"invalid-chunk-offset": "Kelpaamaton siirtymä lohkoissa",
"img-auth-accessdenied": "Pääsy estetty",
"img-auth-nopathinfo": "PATH_INFO puuttuu.\nPalvelintasi ei ole asetettu välittämään tätä tietoa.\nSe saattaa olla CGI-pohjainen eikä voi tukea img_authia.\nLisätietoja löytyy sivulta https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Image_Authorization.",
@@ -1633,10 +1660,10 @@
"statistics-header-hooks": "Muut tilastot",
"statistics-articles": "Sisältösivuja",
"statistics-pages": "Sivuja",
- "statistics-pages-desc": "Kaikki sivut, sisältäen keskustelusivut, ohjaukset ja muut.",
+ "statistics-pages-desc": "Kaikki wikissä olevat sivut, mukaan lukien keskustelusivut, ohjaussivut ynnä muut.",
"statistics-files": "Tallennettuja tiedostoja",
"statistics-edits": "Muokkauksia {{GRAMMAR:genitive|{{SITENAME}}}} perustamisen jälkeen",
- "statistics-edits-average": "Keskimäärin yhtä sivua muokattu",
+ "statistics-edits-average": "Muokkausten keskiarvo yhdellä sivulla",
"statistics-users": "Rekisteröityneitä [[Special:ListUsers|käyttäjiä]]",
"statistics-users-active": "Aktiivisia käyttäjiä",
"statistics-users-active-desc": "Käyttäjät, jotka ovat suorittaneet jonkin toiminnon {{PLURAL:$1|edellisen päivän|edellisten $1 päivän}} aikana.",
@@ -1748,13 +1775,18 @@
"apihelp": "API-apu",
"apihelp-no-such-module": "Moduulia â$1â ei löydy.",
"apisandbox": "API-hiekkalaatikko",
+ "apisandbox-jsonly": "JavaScript vaaditaan API-hiekkalaatikon käyttämiseen.",
"apisandbox-api-disabled": "API on poistettu käytöstä tällä sivustolla.",
- "apisandbox-intro": "Tämä on '''MediaWiki API:n''' hiekkalaatikko.\n[//www.mediawiki.org/wiki/API:Main_page API-dokumentaatio] kertoo lisää API:en käytöstä.",
+ "apisandbox-intro": "Käytä tätä sivua kokeillaksesi '''MediaWikin verkkopalvelun API:a'''.\n[[mw:API:Main page|API-dokumentaatio]] kertoo lisää API:en käytöstä. Esimerkki: [//www.mediawiki.org/wiki/API#A_simple_example hae etusivun sisältö]. Valitse toiminto nähdäksesi lisää esimerkkejä.\n\nHuomioi, että vaikka tämä on hiekkalaatikko, sivulla suorittamasi toiminnot saattavat muokata wikiä.",
"apisandbox-fullscreen": "Laajenna paneeli",
- "apisandbox-unfullscreen": "Näytä sivu",
+ "apisandbox-fullscreen-tooltip": "Laajenna hiekkalaatikkopaneeli täyttämään selainikkuna.",
+ "apisandbox-unfullscreen": "Palaa sivunäkymään",
+ "apisandbox-unfullscreen-tooltip": "Pienennä hiekkalaatikkopaneelia, jotta MediaWikin navigaatiolinkit ovat saatavilla.",
"apisandbox-submit": "Tee pyyntö",
"apisandbox-reset": "Tyhjennä",
"apisandbox-retry": "Yritä uudestaan",
+ "apisandbox-loading": "Ladataan tietoja API-moduulista \"$1\"...",
+ "apisandbox-load-error": "Tapahtui virhe ladattaessa tietoja API-moduulista \"$1\": $2",
"apisandbox-no-parameters": "Tässä API-moduulissa ei ole parametreja.",
"apisandbox-helpurls": "Linkit ohjeisiin",
"apisandbox-examples": "Esimerkit",
@@ -1769,6 +1801,7 @@
"apisandbox-results": "Tulokset",
"apisandbox-sending-request": "API-pyyntöä lähetetään...",
"apisandbox-loading-results": "API-tuloksia vastaanotetaan...",
+ "apisandbox-results-error": "Tapahtui virhe ladattaessa API-kyselyn vastausta: $1",
"apisandbox-request-url-label": "Pyynnön URL",
"apisandbox-request-time": "Pyyntöön kulunut aika: {{PLURAL:$1|$1 ms}}",
"apisandbox-alert-page": "Tällä sivulla olevat kentät eivät ole kelvollisia.",
@@ -1812,8 +1845,6 @@
"categories-submit": "Näytä",
"categoriespagetext": "{{PLURAL:$1|Seuraava luokka sisältää|Seuraavat luokat sisältävät}} sivuja tai mediatiedostoja.\n[[Special:UnusedCategories|Käyttämättömiä luokkia]] ei näytetä.\nKatso myös [[Special:WantedCategories|halutut luokat]].",
"categoriesfrom": "Näytä alkaen luokasta",
- "special-categories-sort-count": "järjestä koon mukaan",
- "special-categories-sort-abc": "järjestä nimen mukaan",
"deletedcontributions": "Poistetut muokkaukset",
"deletedcontributions-title": "Poistetut muokkaukset",
"sp-deletedcontributions-contribs": "muokkaukset",
@@ -1958,7 +1989,7 @@
"deletepage": "Poista sivu",
"confirm": "Toteuta",
"excontent": "sisälsi: â$1â",
- "excontentauthor": "sisältö oli: \"$1\", ja ainoa muokkaaja oli \"[[Special:Contributions/$2|$2]]\"",
+ "excontentauthor": "sisältö oli: \"$1\", ja ainoa muokkaaja oli \"[[Special:Contributions/$2|$2]]\" ([[User talk:$2|keskustelu]])",
"exbeforeblank": "ennen tyhjentämistä sisälsi: â$1â",
"delete-confirm": "Poista â$1â",
"delete-legend": "Sivun poisto",
@@ -2189,6 +2220,7 @@
"ipb-unblock": "Poista käyttäjän tai IP-osoitteen muokkausesto",
"ipb-blocklist": "Näytä voimassa olevat estot",
"ipb-blocklist-contribs": "Käyttäjän {{GENDER:$1|$1}} muokkaukset",
+ "ipb-blocklist-duration-left": "$1 jäljellä",
"unblockip": "Muokkauseston poisto käyttäjältä",
"unblockiptext": "Tällä lomakkeella voit poistaa käyttäjän tai IP-osoitteen muokkauseston.",
"ipusubmit": "Poista tämä esto",
@@ -2331,7 +2363,7 @@
"imageinvalidfilename": "Kohdetiedoston nimi on virheellinen",
"fix-double-redirects": "Päivitä kaikki vanhalle nimelle viittaavat ohjaukset ohjaamaan uudelle nimelle",
"move-leave-redirect": "Jätä paikalle ohjaus",
- "protectedpagemovewarning": "'''Varoitus:''' Tämä sivu on lukittu siten, että vain ylläpitäjät voivat siirtää sitä.\nAlla on viimeisin lokitapahtuma:",
+ "protectedpagemovewarning": "'''Varoitus:''' Tämä sivu on lukittu siten, että vain ylläpitäjät voivat siirtää sen.\nAlla on viimeisin lokitapahtuma:",
"semiprotectedpagemovewarning": "Tämä sivu on lukittu siten, että vain rekisteröityneet käyttäjät voivat siirtää sitä.\nAlla on viimeisin lokitapahtuma:",
"move-over-sharedrepo": "[[:$1]] on olemassa yhteisessä tietovarastossa. Tiedoston siirtäminen tälle nimelle korvaa yhteisen tiedoston.",
"file-exists-sharedrepo": "Valittu tiedostonimi on jo käytössä jaetussa varastossa.\nValitse toinen nimi.",
@@ -2430,11 +2462,7 @@
"import-logentry-upload-detail": "$1 {{PLURAL:$1|versio|versiota}} tuotiin",
"import-logentry-interwiki-detail": "$1 {{PLURAL:$1|versio|versiota}} tuotiin wikistä $2",
"javascripttest": "JavaScriptin testaus",
- "javascripttest-pagetext-noframework": "Tämä sivu on varattu JavaScript-testien suorittamiseen.",
- "javascripttest-pagetext-unknownframework": "Tuntematon testausalusta $1.",
"javascripttest-pagetext-unknownaction": "Tuntematon toiminto \"$1\".",
- "javascripttest-pagetext-frameworks": "Valitse yksi seuraavista testausalustoista: $1",
- "javascripttest-pagetext-skins": "Valitse testauksessa käytettävä ulkoasu",
"javascripttest-qunit-intro": "Katso [$1 testausohjeet] mediawiki.orgissa.",
"tooltip-pt-userpage": "{{GENDER:|Oma käyttäjäsivusi}}",
"tooltip-pt-anonuserpage": "IP-osoitteesi käyttäjäsivu",
@@ -2511,11 +2539,13 @@
"print.css": "/* Tämä sivu sisältää tulostettua sivua muuttavia tyylejä */",
"noscript.css": "/* Tämä sivun tyylit muuttavat niiden käyttäjien tyylejä, joilla JavaScript ei ole käytössä */",
"group-autoconfirmed.css": "/* Tämä sivun tyylit muuttavat automaattisesti hyväksyttyjen käyttäjien tyylejä */",
+ "group-user.css": "/* Tämän sivun CSS vaikuttaa vain rekisteröityneisiin käyttäjiin */",
"group-bot.css": "/* Tämä sivun tyylit muuttavat bottien tyylejä */",
"group-sysop.css": "/* Tämä sivun tyylit muuttavat ylläpitäjien tyylejä */",
"group-bureaucrat.css": "/* Tämä sivun tyylit muuttavat byrokraattien tyylejä */",
"common.js": "/* Tämän sivun JavaScript-koodi liitetään jokaiseen sivulataukseen */",
"group-autoconfirmed.js": "/* Tämän sivun JavaScript-koodi liitetään vain automaattisesti hyväksytyille käyttäjille */",
+ "group-user.js": "/* Tämän sivun JavaScript ladataan vain rekisteröityneille käyttäjille */",
"group-bot.js": "/* Tämän sivun JavaScript-koodi liitetään vain boteille */",
"group-sysop.js": "/* Tämän sivun JavaScript-koodi liitetään vain ylläpitäjille */",
"group-bureaucrat.js": "/* Tämän sivun JavaScript-koodi liitetään vain byrokraateille */",
@@ -2702,8 +2732,8 @@
"exif-colorspace": "Väriavaruus",
"exif-componentsconfiguration": "Kunkin komponentin määritelmä",
"exif-compressedbitsperpixel": "Kuvan pakkaustapa",
- "exif-pixelydimension": "Kuvan leveys",
- "exif-pixelxdimension": "Kuvan korkeus",
+ "exif-pixelxdimension": "Kuvan leveys",
+ "exif-pixelydimension": "Kuvan korkeus",
"exif-usercomment": "Käyttäjän kommentit",
"exif-relatedsoundfile": "Liitetty äänitiedosto",
"exif-datetimeoriginal": "Luontipäivämäärä",
@@ -2852,7 +2882,12 @@
"exif-compression-6": "JPEG (vanha)",
"exif-copyrighted-true": "Tekijänoikeuksien alainen",
"exif-copyrighted-false": "Tekijänoikeustiedot puuttuvat",
+ "exif-photometricinterpretation-0": "Mustavalkoinen (valkoinen on 0)",
"exif-photometricinterpretation-1": "Mustavalkoinen (musta on 0)",
+ "exif-photometricinterpretation-3": "Paletti",
+ "exif-photometricinterpretation-4": "Läpinäkyvyysmaski",
+ "exif-photometricinterpretation-9": "CIE L*a*b* (ICC-koodaus)",
+ "exif-photometricinterpretation-10": "CIE L*a*b* (ITU-koodaus)",
"exif-unknowndate": "Tuntematon päiväys",
"exif-orientation-1": "Normaali",
"exif-orientation-2": "Käännetty vaakasuunnassa",
@@ -3029,6 +3064,10 @@
"confirmemail_body_set": "Joku, todennäköisesti sinä, IP-osoitteesta $1 on vaihtanut {{GRAMMAR:inessive|{{SITENAME}}}} tunnuksen $2 sähköpostiosoitteeksi tämän osoitteen.\n\nVarmenna, että tämä tunnus kuuluu sinulle ja aktivoi sähköpostitoiminnot uudelleen avaamalla seuraava linkki selaimellasi:\n\n$3\n\nJos tunnus ei kuulu sinulle, peruuta sähköpostiosoitteen varmennus avaamalla seuraava linkki:\n\n$5\n\nVarmennuskoodi vanhenee $4.",
"confirmemail_invalidated": "Sähköpostiosoitteen varmennus peruutettiin",
"invalidateemail": "Sähköpostiosoitteen varmennuksen peruuttaminen",
+ "notificationemail_subject_changed": "Sivuston {{SITENAME}} rekisteröity sähköpostiosoite on vaihdettu",
+ "notificationemail_subject_removed": "Sivuston {{SITENAME}} rekisteröity sähköpostiosoite on poistettu",
+ "notificationemail_body_changed": "Joku, todennäköisesti sinä, IP-osoitteesta $1 on vaihtanut tunnuksen \"$2\" sähköpostiosoitteeksi \"$3\" sivustolla {{SITENAME}}.\n\nJos se et ollut sinä, ota yhteyttä sivuston ylläpitäjään välittömästi.",
+ "notificationemail_body_removed": "Joku, todennäköisesti sinä, IP-osoitteesta $1 on poistanut tunnuksen \"$2\" sähköpostiosoitteen sivustolla {{SITENAME}}.\n\nJos se et ollut sinä, ota yhteyttä sivuston ylläpitäjään välittömästi.",
"scarytranscludedisabled": "[Wikienvälinen sisällytys ei ole käytössä]",
"scarytranscludefailed": "[Mallineen hakeminen epäonnistui: $1]",
"scarytranscludefailed-httpstatus": "[Mallineen hakeminen epäonnistui: $1 HTTP $2]",
@@ -3069,6 +3108,7 @@
"autoredircomment": "Ak: Ohjaus sivulle [[$1]]",
"autosumm-new": "Ak: Uusi sivu: $1",
"autosumm-newblank": "Ak: Luotiin tyhjä sivu",
+ "size-bytes": "$1 {{PLURAL:$1|tavu|tavua}}",
"size-kilobytes": "$1 KiB",
"size-megabytes": "$1 MiB",
"size-gigabytes": "$1 GiB",
@@ -3077,6 +3117,7 @@
"size-exabytes": "$1 EiB",
"size-zetabytes": "$1 ZiB",
"size-yottabytes": "$1 YiB",
+ "size-pixel": "$1 {{PLURAL:$1|pikseli|pikseliä}}",
"bitrate-bits": "$1 bit/s",
"bitrate-kilobits": "$1 kbit/s",
"bitrate-megabits": "$1 Mbit/s",
@@ -3101,7 +3142,7 @@
"watchlistedit-raw-done": "Tarkkailulistasi on päivitetty.",
"watchlistedit-raw-added": "{{PLURAL:$1|Yksi sivu|$1 sivua}} lisättiin:",
"watchlistedit-raw-removed": "{{PLURAL:$1|Yksi sivu|$1 sivua}} poistettiin:",
- "watchlistedit-clear-title": "Tyhjä tarkkailulista",
+ "watchlistedit-clear-title": "Tyhjennä tarkkailulista",
"watchlistedit-clear-legend": "Tyhjennä tarkkailulista",
"watchlistedit-clear-explain": "Kaikki sivut poistetaan tarkkailulistaltasi",
"watchlistedit-clear-titles": "Sivujen nimet:",
@@ -3164,7 +3205,6 @@
"version-libraries-description": "Kuvaus",
"version-libraries-authors": "Tekijät",
"redirect": "Ohjaus tiedoston, käyttäjän, sivun, sivuversion tai lokin tunnistenumeron mukaan",
- "redirect-legend": "Ohjaus tiedostoon tai sivulle",
"redirect-summary": "Tämä toimintosivu ohjaa tiedostoon (tiedostonimen mukaan), sivulle (version tunnistenumeron tai sivun tunnistenumeron mukaan), käyttäjäsivulle (käyttäjän tunnistenumeron mukaan) taikka lokimerkintään (lokin tunnistenumeron mukaan). Käytetään seuraavasti: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]],[[{{#Special:Redirect}}/user/101]] tai [[{{#Special:Redirect}}/logid/186]].",
"redirect-submit": "Siirry",
"redirect-lookup": "Hae:",
@@ -3177,7 +3217,6 @@
"redirect-not-exists": "Arvoa ei löytynyt",
"fileduplicatesearch": "Kaksoiskappaleiden haku",
"fileduplicatesearch-summary": "Etsii tiedoston kaksoiskappaleita hajautusarvon perusteella.",
- "fileduplicatesearch-legend": "Etsi kaksoiskappaleita",
"fileduplicatesearch-filename": "Tiedostonimi",
"fileduplicatesearch-submit": "Etsi",
"fileduplicatesearch-info": "$1 à $2 kuvapistettä Tiedostokoko: $3 MIME-tyyppi: $4",
@@ -3378,7 +3417,7 @@
"logentry-protect-protect-cascade": "$1 {{GENDER:$2|suojasi}} kohteen $3 $4 [tarttuvasti]",
"logentry-protect-modify": "$1 {{GENDER:$2|muutti}} suojauksen tasoa kohteessa $3 $4",
"logentry-protect-modify-cascade": "$1 {{GENDER:$2|muutti}} suojauksen tasoa kohteessa $3 $4 [tarttuvasti]",
- "logentry-rights-rights": "$1 {{GENDER:$2|muutti}} käyttäjän $3 oikeudet ryhmistä $4 ryhmiin $5",
+ "logentry-rights-rights": "$1 {{GENDER:$2|muutti}} käyttäjän {{GENDER:$6|$3}} oikeudet ryhmistä $4 ryhmiin $5",
"logentry-rights-rights-legacy": "$1 {{GENDER:$2|muutti}} käyttäjän $3 jäsenyyttä ryhmässä",
"logentry-rights-autopromote": "Käyttäjän $1 oikeudet {{GENDER:$2|muuttuivat}} automaattisesti ryhmistä $4 ryhmiin $5",
"logentry-upload-upload": "$1 {{GENDER:$2|tallensi}} tiedoston $3",
@@ -3471,6 +3510,7 @@
"api-error-unknownerror": "Tuntematon virhe: $1.",
"api-error-uploaddisabled": "Tiedostojen tallentaminen ei ole käytössä.",
"api-error-verification-error": "Tiedosto voi olla vioittunut, tai sillä saattaa olla väärä tiedostopääte.",
+ "api-error-was-deleted": "Tämänniminen tiedosto on aikaisemmin tallennettu ja sittemmin poistettu.",
"duration-seconds": "$1 {{PLURAL:$1|sekunti|sekuntia}}",
"duration-minutes": "$1 {{PLURAL:$1|minuutti|minuuttia}}",
"duration-hours": "$1 {{PLURAL:$1|tunti|tuntia}}",
@@ -3561,6 +3601,7 @@
"special-characters-group-ipa": "Kansainvälinen foneettinen kirjaimisto (IPA)",
"special-characters-group-symbols": "Symbolit",
"special-characters-group-greek": "Kreikka",
+ "special-characters-group-greekextended": "Laajennettu kreikka",
"special-characters-group-cyrillic": "Kyrillinen",
"special-characters-group-arabic": "Arabia",
"special-characters-group-arabicextended": "Laajennettu arabia",
@@ -3588,5 +3629,53 @@
"sessionprovider-generic": "$1 istuntoa",
"sessionprovider-mediawiki-session-cookiesessionprovider": "istuntoja, joissa on evästeet käytössä",
"sessionprovider-nocookies": "Evästeet on voitu poistaa käytöstä. Varmista, että sinulla on evästeet käytössä ja yritä sitten uudelleen.",
- "randomrootpage": "Satunnainen juurisivu"
+ "randomrootpage": "Satunnainen juurisivu",
+ "log-action-filter-block": "Eston tyyppi:",
+ "log-action-filter-contentmodel": "Sisältömallin muutoksen tyyppi:",
+ "log-action-filter-delete": "Poiston tyyppi:",
+ "log-action-filter-import": "Tuonnin tyyppi:",
+ "log-action-filter-managetags": "Merkkausten hallintatoimenpiteen tyyppi:",
+ "log-action-filter-move": "Siirron tyyppi:",
+ "log-action-filter-newusers": "Käyttäjätunnuksen luomisen tyyppi:",
+ "log-action-filter-patrol": "Tarkastuksen tyyppi:",
+ "log-action-filter-protect": "Suojauksen tyyppi:",
+ "log-action-filter-rights": "Käyttöoikeuksien muutoksen tyyppi:",
+ "log-action-filter-suppress": "Häivyttämisen tyyppi:",
+ "log-action-filter-upload": "Tallennuksen tyyppi:",
+ "log-action-filter-all": "Kaikki",
+ "log-action-filter-block-block": "Eston asettaminen",
+ "log-action-filter-block-reblock": "Estoasetusten muuttaminen",
+ "log-action-filter-block-unblock": "Eston poistaminen",
+ "log-action-filter-contentmodel-change": "Sisältömallin muuttaminen",
+ "log-action-filter-delete-delete": "Sivun poistaminen",
+ "log-action-filter-delete-restore": "Sivun palauttaminen",
+ "log-action-filter-delete-event": "Lokimerkinnän poistaminen",
+ "log-action-filter-delete-revision": "Version piilottaminen",
+ "log-action-filter-import-interwiki": "Tuonti wikien välillä",
+ "log-action-filter-import-upload": "Tuonti XML-tallennuksella",
+ "log-action-filter-managetags-create": "Merkkauksen luominen",
+ "log-action-filter-managetags-delete": "Merkkauksen tuhoaminen",
+ "log-action-filter-managetags-activate": "Merkkauksen ottaminen käyttöön",
+ "log-action-filter-managetags-deactivate": "Merkkauksen poistaminen käytöstä",
+ "log-action-filter-move-move": "Siirto ilman että ohjaussivu korvataan",
+ "log-action-filter-move-move_redir": "Siirto joka korvaa ohjauksen",
+ "log-action-filter-newusers-create": "Luonut rekisteröimätön käyttäjä",
+ "log-action-filter-newusers-create2": "Luonut rekisteröity käyttäjä",
+ "log-action-filter-newusers-autocreate": "Luotu automaattisesti",
+ "log-action-filter-newusers-byemail": "Luotu salasanalla, joka on lähetetty sähköpostitse",
+ "log-action-filter-patrol-patrol": "Manuaalinen tarkastus",
+ "log-action-filter-patrol-autopatrol": "Automaattinen tarkastus",
+ "log-action-filter-protect-protect": "Suojauksen asettaminen",
+ "log-action-filter-protect-modify": "Suojausasetusten muuttaminen",
+ "log-action-filter-protect-unprotect": "Suojauksen poistaminen",
+ "log-action-filter-protect-move_prot": "Suojausasetusten siirtäminen",
+ "log-action-filter-rights-rights": "Käsin tehty muutos",
+ "log-action-filter-rights-autopromote": "Automaattinen muutos",
+ "log-action-filter-suppress-event": "Lokimerkinnän häivyttäminen",
+ "log-action-filter-suppress-revision": "Version häivyttäminen",
+ "log-action-filter-suppress-delete": "Sivun häivyttäminen",
+ "log-action-filter-suppress-block": "Käyttäjätunnuksen häivyttäminen estämällä se",
+ "log-action-filter-suppress-reblock": "Käyttäjätunnuksen häivyttäminen uudella estolla",
+ "log-action-filter-upload-upload": "Uusi tallennus",
+ "log-action-filter-upload-overwrite": "Päälletallennus"
}
diff --git a/languages/i18n/fr.json b/languages/i18n/fr.json
index bcea637c5b..00cc2da135 100644
--- a/languages/i18n/fr.json
+++ b/languages/i18n/fr.json
@@ -137,7 +137,9 @@
"Lbayle",
"Cl3m3n7",
"C13m3n7",
- "Gnangbade"
+ "Gnangbade",
+ "Frigory",
+ "Lemondoge"
]
},
"tog-underline": "Soulignement des liensâ¯:",
@@ -148,44 +150,45 @@
"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-editondblclick": "Modifier des pages sur double-clic",
+ "tog-showtoolbar": "Afficher la barre dâoutils dâédition",
+ "tog-editondblclick": "Modifier les pages avec un 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 à ma liste de suivi les pages et les fichiers que je modifie",
"tog-watchmoves": "Ajouter à ma liste de suivi les pages et les fichiers que je renomme",
"tog-watchdeletion": "Ajouter à ma liste de suivi les pages et les fichiers que je supprime",
+ "tog-watchuploads": "Ajouter les nouveaux fichiers que jâimporte à ma liste de suivi",
"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 avant la zone de modification",
+ "tog-minordefault": "Marquer mes modifications comme étant mineures par défaut",
+ "tog-previewontop": "Afficher la prévisualisation avant la zone dâédition",
"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 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-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 des pages ou des fichiers",
+ "tog-enotifrevealaddr": "Afficher mon adresse électronique dans les courriels de notification",
+ "tog-shownumberswatching": "Afficher le nombre dâutilisateurs qui suivent la page",
"tog-oldsig": "Signature existante :",
"tog-fancysig": "Traiter la signature comme du wikitexte (sans lien automatique)",
"tog-uselivepreview": "Utiliser lâaperçu rapide",
- "tog-forceeditsummary": "M'avertir lorsque je n'ai pas spécifié de résumé de modification",
+ "tog-forceeditsummary": "Mâavertir lorsque je nâai pas spécifié de résumé de modification",
"tog-watchlisthideown": "Masquer mes propres modifications dans la liste de suivi",
"tog-watchlisthidebots": "Masquer les modifications faites par des robots dans la liste de suivi",
"tog-watchlisthideminor": "Masquer les modifications mineures dans la liste de suivi",
"tog-watchlisthideliu": "Masquer les modifications faites par des utilisateurs inscrits dans la liste de suivi",
"tog-watchlistreloadautomatically": "Recharger automatiquement la liste de suivi lorsque les options de filtrage sont modifiées (JavaScript requis)",
- "tog-watchlisthideanons": "Masquer les modifications d'utilisateurs anonymes dans la liste de suivi",
+ "tog-watchlisthideanons": "Masquer les modifications dâutilisateurs anonymes dans la liste de suivi",
"tog-watchlisthidepatrolled": "Masquer les modifications relues 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-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",
"tog-norollbackdiff": "Ne pas afficher le diff après avoir révoqué",
- "tog-useeditwarning": "M'avertir quand je quitte une page de modification sans publier les changements",
- "tog-prefershttps": "Toujours utiliser une connexion sécurisée en étant connecté(e)",
+ "tog-useeditwarning": "Mâavertir quand je quitte une page de modification sans publier les changements",
+ "tog-prefershttps": "Conserver une connexion sécurisée une fois connecté(e)",
"underline-always": "Toujours",
"underline-never": "Jamais",
- "underline-default": "Valeur par défaut du navigateur ou du thème",
- "editfont-style": "Style de police de la zone de modification :",
+ "underline-default": "Valeur par défaut du thème ou du navigateur",
+ "editfont-style": "Style de police de la zone dâédition :",
"editfont-default": "Police par défaut du navigateur",
"editfont-monospace": "Police à chasse fixe",
"editfont-sansserif": "Police sans-serif",
@@ -240,33 +243,33 @@
"oct": "oct",
"nov": "nov",
"dec": "déc",
- "january-date": "$1 janvier",
- "february-date": "$1 février",
- "march-date": "$1 mars",
- "april-date": "$1 avril",
- "may-date": "$1 mai",
- "june-date": "$1 juin",
- "july-date": "$1 juillet",
- "august-date": "$1 août",
- "september-date": "$1 septembre",
- "october-date": "$1 octobre",
- "november-date": "$1 novembre",
- "december-date": "$1 décembre",
+ "january-date": "{{PLURAL:$1|1=1áµÊ³|$1}} janvier",
+ "february-date": "{{PLURAL:$1|1=1áµÊ³|$1}} février",
+ "march-date": "{{PLURAL:$1|1=1áµÊ³|$1}} mars",
+ "april-date": "{{PLURAL:$1|1=1áµÊ³|$1}} avril",
+ "may-date": "{{PLURAL:$1|1=1áµÊ³|$1}} mai",
+ "june-date": "{{PLURAL:$1|1=1áµÊ³|$1}} juin",
+ "july-date": "{{PLURAL:$1|1=1áµÊ³|$1}} juillet",
+ "august-date": "{{PLURAL:$1|1=1áµÊ³|$1}} août",
+ "september-date": "{{PLURAL:$1|1=1áµÊ³|$1}} septembre",
+ "october-date": "{{PLURAL:$1|1=1áµÊ³|$1}} octobre",
+ "november-date": "{{PLURAL:$1|1=1áµÊ³|$1}} novembre",
+ "december-date": "{{PLURAL:$1|1=1áµÊ³|$1}} décembre",
"period-am": "AM",
"period-pm": "PM",
"pagecategories": "{{PLURAL:$1|Catégorie|Catégories}}",
"category_header": "Pages dans la catégorie « $1 »",
"subcategories": "Sous-catégories",
"category-media-header": "Média dans la catégorie « $1 »",
- "category-empty": "Cette catégorie ne contient aucune page ou fichier multimédia. ",
+ "category-empty": "Cette catégorie ne contient actuellement aucune page ni fichier multimédia. ",
"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.",
+ "category-subcat-count": "Cette catégorie {{PLURAL:$2|0=ne comprend aucune sous-catégorie|1=comprend seulement la sous-catégorie ci-dessous|comprend les $2 sous-catégories, dont {{PLURAL:$1|0=aucune|1=celle|les $1}} ci-dessous}}.",
"category-subcat-count-limited": "Cette catégorie comprend {{PLURAL:$1|la sous-catégorie|les $1 sous-catégories}} ci-dessous.",
- "category-article-count": "Cette catégorie contient {{PLURAL:$2|seulement la page suivante|$2 pages, dont {{PLURAL:$1|celle|les $1}} ci-dessous}}.",
- "category-article-count-limited": "{{PLURAL:$1|La page suivante figure|Les $1 pages suivantes figurent}} dans la présente catégorie.",
- "category-file-count": "Cette catégorie contient {{PLURAL:$2|le fichier suivant|$2 fichiers, dont {{PLURAL:$1|celui|les $1}} ci-dessous}}.",
- "category-file-count-limited": "{{PLURAL:$1|Le fichier suivant figure|Les $1 fichiers suivants figurent}} dans la présente catégorie.",
+ "category-article-count": "Cette catégorie {{PLURAL:$2|0=ne comprend aucune page|1=comprend seulement la page ci-dessous|comprend $2 pages, dont {{PLURAL:$1|0=aucune|1=celle|les $1}} ci-dessous}}.",
+ "category-article-count-limited": "{{PLURAL:$1|0=Aucune page ne figure|1=La page suivante figure|Les $1 pages suivantes figurent}} dans la présente catégorie.",
+ "category-file-count": "Cette catégorie {{PLURAL:$2|0=ne comprend aucun fichier|1=comprend le fichier suivant|comprend $2 fichiers, dont {{PLURAL:$1|0=aucun|1=celui|les $1}} ci-dessous}}.",
+ "category-file-count-limited": "{{PLURAL:$1|0=Aucun fichier ne figure|1=Le fichier suivant figure|Les $1 fichiers suivants figurent}} dans la présente catégorie.",
"listingcontinuesabbrev": "(suite)",
"index-category": "Pages indexées",
"noindex-category": "Pages non indexées",
@@ -347,17 +350,17 @@
"redirectpagesub": "Page de redirection",
"redirectto": "Rediriger vers :",
"lastmodifiedat": "Dernière modification de cette page le $1, à $2.",
- "viewcount": "Cette page a été consultée {{PLURAL:$1|une fois|$1 fois}}.",
+ "viewcount": "Cette page {{PLURAL:$1|0=nâa jamais été consultée|1=a été consultée une seule fois|a été consultée $1 fois}}.",
"protectedpage": "Page protégée",
"jumpto": "Aller à :",
"jumptonavigation": "navigation",
"jumptosearch": "rechercher",
- "view-pool-error": "Désolé, les serveurs sont surchargés en ce moment.\nTrop d'utilisateurs cherchent à consulter cette page.\nVeuillez attendre un moment avant de retenter l'accès à celle ci.\n$1",
- "generic-pool-error": "Désolé, les serveurs sont surchargés pour le moment.\nTrop dâutilisateurs essayent de consulter cette ressource.\nVeuillez attendre un peu avant de réessayer dâaccéder à celle-ci.",
- "pool-timeout": "Délai d'attente dépassé",
- "pool-queuefull": "La file d'attente est pleine",
+ "view-pool-error": "Désolé, les serveurs sont surchargés en ce moment.\nTrop dâutilisateurs cherchent à consulter cette page.\nVeuillez attendre un peu avant de réessayer dâaccéder à celle-ci.\n\n$1",
+ "generic-pool-error": "Désolé, les serveurs sont surchargés en ce moment.\nTrop dâutilisateurs cherchent à consulter cette ressource.\nVeuillez attendre un peu avant de tenter à nouveau lâaccès à celle-ci.",
+ "pool-timeout": "Délai dâattente du verrou dépassé",
+ "pool-queuefull": "La file des processus est pleine",
"pool-errorunknown": "Erreur inconnue",
- "pool-servererror": "Le service de comptage de la réserve nâest pas disponible ($1).",
+ "pool-servererror": "Le service de réservation nâest pas disponible ($1).",
"poolcounter-usage-error": "Erreur dâutilisation : $1",
"aboutsite": "Ã propos de {{SITENAME}}",
"aboutpage": "Project:Ã propos",
@@ -378,7 +381,7 @@
"privacypage": "Project:Confidentialité",
"badaccess": "Erreur de permissions",
"badaccess-group0": "Vous nâavez pas les droits suffisants pour réaliser lâaction demandée.",
- "badaccess-groups": "Lâaction que vous essayez de réaliser nâest permise quâaux utilisateurs {{PLURAL:$2|du groupe|d'un des groupes}} : $1.",
+ "badaccess-groups": "Lâaction que vous essayez de réaliser nâest permise quâaux utilisateurs {{PLURAL:$2|du groupe|dâun des groupes}} : $1.",
"versionrequired": "Version $1 de MediaWiki nécessaire",
"versionrequiredtext": "La version $1 de MediaWiki est nécessaire pour utiliser cette page.\nConsultez [[Special:Version|la page des versions]].",
"ok": "Valider",
@@ -429,26 +432,26 @@
"nstab-category": "Catégorie",
"mainpage-nstab": "Accueil",
"nosuchaction": "Action inconnue",
- "nosuchactiontext": "Lâaction spécifiée dans lâURL est invalide.\nVous avez peut-être mal entré lâURL ou suivi un lien erroné.\nIl peut également sâagir dâun bogue dans le logiciel utilisé par {{SITENAME}}.",
+ "nosuchactiontext": "Lâaction spécifiée dans lâURL est invalide.\nVous avez peut-être mal entré lâURL ou suivi un lien erroné.\nIl peut également sâagir dâune anomalie dans le logiciel utilisé par {{SITENAME}}.",
"nosuchspecialpage": "Page spéciale inexistante",
- "nospecialpagetext": "Vous avez demandé une page spéciale qui n'existe pas. \n\nUne liste des pages spéciales valides se trouve sur [[Special:SpecialPages|{{int:specialpages}}]].",
+ "nospecialpagetext": "Vous avez demandé une page spéciale qui nâexiste pas. \n\nUne liste des pages spéciales valides se trouve sur [[Special:SpecialPages|{{int:specialpages}}]].",
"error": "Erreur",
"databaseerror": "Erreur de la base de données",
- "databaseerror-text": "Une erreur de requête de base de données s'est produite. Cela peut provenir d'un bogue dans le logiciel.",
- "databaseerror-textcl": "Une erreur de requête de base de données s'est produite.",
+ "databaseerror-text": "Une erreur de requête de base de données sâest produite.\nCela peut provenir dâune anomalie dans le logiciel.",
+ "databaseerror-textcl": "Une erreur de requête de base de données sâest produite.",
"databaseerror-query": "Requête : $1",
"databaseerror-function": "Fonction : $1",
"databaseerror-error": "Erreur : $1",
- "transaction-duration-limit-exceeded": "Pour éviter une trop forte augmentation du délai de réplication, cette transaction a été annulée car la durée dâécriture ($1) a dépassé la limite de {{PLURAL:$2|seconde|secondes}}. Si vous cherchez à modifier un grand nombre dâéléments simultanément, essayez plutôt dâeffectuer lâopération en plusieurs étapes.",
+ "transaction-duration-limit-exceeded": "Pour éviter une trop forte augmentation du délai de réplication, cette transaction a été annulée car la durée dâécriture ($1) a dépassé la limite de $2 seconde{{PLURAL:$2||s}}. Si vous cherchez à modifier un grand nombre dâéléments simultanément, essayez plutôt dâeffectuer lâopération en plusieurs étapes.",
"laggedslavemode": "Attention, cette page peut ne pas contenir les toutes dernières modifications effectuées",
"readonly": "Base de données verrouillée",
- "enterlockreason": "Indiquez la raison du verrouillage ainsi qu'une estimation de sa durée",
- "readonlytext": "Les ajouts et mises à jour de la base de données sont actuellement bloqués, probablement pour permettre la maintenance de la base, après quoi, tout rentrera dans l'ordre.\n\nL'administrateur système ayant verrouillé la base de données a fourni l'explication suivante : $1",
- "missing-article": "La base de données nâa pas trouvé le texte dâune page quâelle aurait dû trouver, intitulée « $1 » $2.\n\nGénéralement, cela survient en suivant un lien vers un diff périmé ou vers lâhistorique dâune page supprimée.\n\nSi ce nâest pas le cas, il peut sâagir dâun bogue dans le programme.\nVeuillez le signaler à un [[Special:ListUsers/sysop|administrateur]] sans oublier de lui indiquer lâURL du lien.",
+ "enterlockreason": "Indiquez la raison du verrouillage ainsi quâune estimation de sa durée",
+ "readonlytext": "Les ajouts et mises à jour de la base de données sont actuellement bloqués, probablement pour permettre la maintenance de la base, après quoi, tout rentrera dans lâordre.\n\nLâadministrateur système ayant verrouillé la base de données a fourni lâexplication suivante : $1",
+ "missing-article": "La base de données nâa pas trouvé le texte dâune page quâelle aurait dû trouver, intitulée « $1 » $2.\n\nGénéralement, cela survient en suivant un lien vers un diff périmé ou vers lâhistorique dâune page supprimée.\n\nSi ce nâest pas le cas, il peut sâagir dâune anomalie dans le programme.\nVeuillez la signaler à un [[Special:ListUsers/sysop|administrateur]] sans oublier de lui indiquer lâURL de la page.",
"missingarticle-rev": "(numéro de version : $1)",
"missingarticle-diff": "(diff : $1, $2)",
"readonly_lag": "La base de données a été automatiquement verrouillée pendant que les serveurs secondaires rattrapent leur retard sur le serveur principal.",
- "nonwrite-api-promise-error": "Lâentête HTTP 'Promise-Non-Write-API-Action' a été envoyé mais la requête a été faite à un module dâécriture de lâAPI.",
+ "nonwrite-api-promise-error": "Lâentête HTTP « Promise-Non-Write-API-Action: » a été envoyé mais la requête a été faite à un module dâécriture de lâAPI.",
"internalerror": "Erreur interne",
"internalerror_info": "Erreur interne : $1",
"internalerror-fatal-exception": "Erreur fatale de type « $1 »",
@@ -460,79 +463,79 @@
"directorynotreadableerror": "Le répertoire «â¯$1â¯Â» nâest pas lisible.",
"filenotfound": "Impossible de trouver le fichier « $1 ».",
"unexpected": "Valeur inattendue : « $1 » = « $2 ».",
- "formerror": "Erreur : Impossible de soumettre le formulaire.",
+ "formerror": "Erreur : impossible de soumettre le formulaire.",
"badarticleerror": "Cette action ne peut pas être effectuée sur cette page.",
"cannotdelete": "Impossible de supprimer la page ou le fichier « $1 ».\nLa suppression a peut-être déjà été effectuée par quelquâun dâautre.",
"cannotdelete-title": "Impossible de supprimer la page « $1 »",
- "delete-hook-aborted": "Suppression annulée par une extension.\nAucune explication n'a été fournie.",
+ "delete-hook-aborted": "Suppression annulée par une extension.\nAucune explication nâa été fournie.",
"no-null-revision": "Impossible de créer une nouvelle révision vide pour la page «â¯$1â¯Â»",
"badtitle": "Mauvais titre",
- "badtitletext": "Le titre de la page demandée est invalide, vide, ou il sâagit dâun titre inter-langue ou inter-projet mal formé. Il contient peut-être un ou plusieurs caractères qui ne peuvent pas être utilisés dans les titres.",
- "title-invalid-empty": "Le titre de la page demandée est vide ou contient seulement le nom d'un espace de noms.",
+ "badtitletext": "Le titre de la page demandée est non valide, vide, ou mal formé sâil sâagit dâun titre inter-langue ou inter-projet.\nIl contient peut-être un ou plusieurs caractères qui ne peuvent pas être utilisés dans les titres.",
+ "title-invalid-empty": "Le titre de la page demandée est vide ou contient seulement le nom dâun espace de noms.",
"title-invalid-utf8": "Le titre de la page demandée contient une séquence UTF-8 invalide.",
"title-invalid-interwiki": "La page cible contient un lien interwiki ne pouvant être utilisé dans les titres.",
"title-invalid-talk-namespace": "Le titre de la page demandée fait référence à une page de discussion qui peut ne pas exister.",
"title-invalid-characters": "Le titre de la page demandée contient des caractères non valides : « $1 ».",
- "title-invalid-relative": "Le titre contient un chemin relatif. Les titres référençant des pages relatives (./, ../) sont invalides, car il seront souvent inaccessibles à partir des explorateurs des utilisateurs.",
- "title-invalid-magic-tilde": "Le titre de la page demandée contient une séquence invalide de tilde magiques (~~~ ).",
- "title-invalid-too-long": "La demande de titre de la page est trop longue. Il ne doit pas être de plus de $1 {{PLURAL:$1|octets|bytes}} dans l'encodage UTF-8.",
+ "title-invalid-relative": "Le titre contient un chemin relatif. Les titres référençant des pages relatives (./, ../) sont non valides car il seront souvent inaccessibles pour certains explorateurs des utilisateurs.",
+ "title-invalid-magic-tilde": "Le titre de la page demandée contient une séquence de tilde magiques non valide (~~~ ).",
+ "title-invalid-too-long": "La titre de la page demandée est trop long. Il ne doit pas dépasser $1 {{PLURAL:$1|octet|octets}} dans lâencodage UTF-8.",
"title-invalid-leading-colon": "Le titre de la page demandée contient un deux-points invalide au début.",
- "perfcached": "Les données suivantes sont en cache et peuvent ne pas être à jour. Un maximum de {{PLURAL:$1|un résultat|$1 résultats}} est disponible dans le cache.",
- "perfcachedts": "Les données suivantes sont en cache et ont été mises à jour pour la dernière fois le $1. Un maximum de {{PLURAL:$4|un résultat est disponible|$4 résultats sont disponibles}} dans le cache.",
- "querypage-no-updates": "Les mises à jour pour cette page sont actuellement désactivées. Les données ci-dessous ne sont pas mises à jour.",
+ "perfcached": "Les données suivantes sont en cache et peuvent ne pas être à jour. Un maximum de {{PLURAL:$1|1=un résultat|$1 résultats}} est disponible dans le cache.",
+ "perfcachedts": "Les données suivantes sont en cache et ont été mises à jour pour la dernière fois le $1. Un maximum de {{PLURAL:$4|1=un résultat est disponible|$4 résultats sont disponibles}} dans le cache.",
+ "querypage-no-updates": "Les mises à jour pour cette page sont actuellement désactivées.\nLes données ci-dessous ne seront pas mises à jour.",
"viewsource": "Voir le texte source",
"viewsource-title": "Voir la source de $1",
"actionthrottled": "Action limitée",
- "actionthrottledtext": "Pour lutter contre les abus, 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.",
+ "actionthrottledtext": "Pour lutter contre les abus, lâutilisation de cette action est limitée à un certain nombre de fois dans un laps de temps assez court et vous avez dépassé cette limite.\nVeuillez essayer à 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 cette page.",
"viewyourtext": "Vous pouvez voir et copier le contenu de vos modifications à 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.",
+ "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": "Attention : 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.",
+ "translateinterface": "Pour ajouter ou modifier des traductions pour tous les wikis, veuillez utiliser [//translatewiki.net/ translatewiki.net], le projet de localisation de MediaWiki.",
"cascadeprotected": "Cette page est protégée contre les modifications car elle est transcluse par {{PLURAL:$1|la page suivante, qui a été protégée|les pages suivantes, qui ont été protégées}} avec lâoption « protection en cascade » activée :\n$2",
- "namespaceprotected": "Vous n'avez pas la permission de modifier les pages de l'espace de noms « '''$1''' ».",
- "customcssprotected": "Vous n'avez pas la permission de modifier cette page de CSS, car elle contient les paramètres personnels d'un autre utilisateur.",
- "customjsprotected": "Vous n'avez pas la permission de modifier cette page de JavaScript, car elle contient les paramètres personnels d'un autre utilisateur.",
+ "namespaceprotected": "Vous nâavez pas la permission de modifier les pages de lâespace de noms « $1 ».",
+ "customcssprotected": "Vous nâavez pas la permission de modifier cette page de CSS, car elle contient les paramètres personnels dâun autre utilisateur.",
+ "customjsprotected": "Vous nâavez pas la permission de modifier cette page de JavaScript, car elle contient les paramètres personnels dâun autre utilisateur.",
"mycustomcssprotected": "Vous nâavez pas le droit de modifier cette page CSS.",
"mycustomjsprotected": "Vous nâavez pas le droit de modifier cette page JavaScript.",
- "myprivateinfoprotected": "Vous nâavez pas les droits pour modifier vos informations personnelles.",
- "mypreferencesprotected": "Vous nâavez pas les droits pour modifier vos préférences.",
- "ns-specialprotected": "Les pages dans l'espace de noms « {{ns:special}} » ne peuvent pas être modifiées.",
- "titleprotected": "Ce titre a été protégé à la création par [[User:$1|$1]].\nLe motif fourni est $2 .",
- "filereadonlyerror": "Impossible de modifier le fichier « $1 » parce que le répertoire de fichiers « $2 » est en lecture seule.\n\nL'administrateur système qui l'a verrouillé a fourni ce motif : « $3 ».",
- "invalidtitle-knownnamespace": "Titre invalide avec l'espace de noms « $2 » et l'intitulé « $3 »",
- "invalidtitle-unknownnamespace": "Titre invalide avec le numéro d'espace de noms $1 et l'intitulé « $2 » inconnus",
+ "myprivateinfoprotected": "Vous nâavez pas le droit de modifier vos informations personnelles.",
+ "mypreferencesprotected": "Vous nâavez pas le droit de modifier vos préférences.",
+ "ns-specialprotected": "Les pages dans lâespace de noms « {{ns:special}} » ne peuvent pas être modifiées.",
+ "titleprotected": "Ce titre a été protégé contre toute création par [[User:$1|$1]].\nLe motif fourni est $2 .",
+ "filereadonlyerror": "Impossible de modifier le fichier « $1 » parce que le répertoire de fichiers « $2 » est en lecture seule.\n\nLâadministrateur système qui lâa verrouillé a fourni ce motif : « $3 ».",
+ "invalidtitle-knownnamespace": "Titre non valide avec lâespace de noms « $2 » et lâintitulé « $3 »",
+ "invalidtitle-unknownnamespace": "Titre non valide avec le numéro dâespace de noms $1 inconnu et lâintitulé « $2 »",
"exception-nologin": "Non connecté",
"exception-nologin-text": "Veuillez vous connecter pour pouvoir accéder à cette page ou cette action.",
"exception-nologin-text-manual": "Veuillez vous $1 pour pouvoir accéder à cette page ou cette action.",
- "virus-badscanner": "Mauvaise configuration : scanneur de virus inconnu : ''$1''",
+ "virus-badscanner": "Mauvaise configuration : analyseur de virus inconnu : $1 ",
"virus-scanfailed": "Ãchec de la recherche (code $1)",
"virus-unknownscanner": "antivirus inconnu :",
- "logouttext": "'''Vous êtes à présent déconnecté{{GENDER:||e}}.'''\n\nNotez que certaines pages peuvent être encore affichées comme si vous étiez toujours connecté, jusquâà ce que vous effaciez le cache de votre navigateur.",
+ "logouttext": "Vous êtes à présent déconnecté{{GENDER:||e|(e)}}. \n\nNotez que certaines pages peuvent être encore affichées comme si vous étiez toujours connecté, jusquâà ce que vous effaciez le cache de votre navigateur.",
"cannotlogoutnow-title": "Impossible de se déconnecter maintenant",
"cannotlogoutnow-text": "La déconnexion nâest pas possible en utilisant $1.",
- "welcomeuser": "Bienvenue, $1 !",
- "welcomecreation-msg": "Votre compte a été créé.\nN'oubliez pas de modifier [[Special:Preferences|vos préférences pour {{SITENAME}}]].",
- "yourname": "Nom d'utilisateur :",
- "userlogin-yourname": "Nom d'utilisateur",
- "userlogin-yourname-ph": "Entrez votre nom d'utilisateur",
- "createacct-another-username-ph": "Saisir le nom dâutilisateur",
- "yourpassword": "Mot de passe :",
+ "welcomeuser": "Bienvenue, $1 !",
+ "welcomecreation-msg": "Votre compte a été créé.\nVous pouvez modifier [[Special:Preferences|vos préférences pour {{SITENAME}}]] si vous le souhaitez.",
+ "yourname": "Nom dâutilisateur :",
+ "userlogin-yourname": "Nom dâutilisateur",
+ "userlogin-yourname-ph": "Entrez votre nom dâutilisateur",
+ "createacct-another-username-ph": "Entrez le nom dâutilisateur",
+ "yourpassword": "Mot de passe :",
"userlogin-yourpassword": "Mot de passe",
"userlogin-yourpassword-ph": "Entrez votre mot de passe",
"createacct-yourpassword-ph": "Entrez un mot de passe",
"yourpasswordagain": "Confirmez le mot de passe :",
"createacct-yourpasswordagain": "Confirmez le mot de passe",
"createacct-yourpasswordagain-ph": "Entrez à nouveau le mot de passe",
- "remembermypassword": "Me reconnecter automatiquement lors des prochaines visites avec ce navigateur (au maximum $1 {{PLURAL:$1|jour|jours}})",
+ "remembermypassword": "Me reconnecter automatiquement lors des prochaines visites avec ce navigateur (durant au maximum $1 jour{{PLURAL:$1||s}})",
"userlogin-remembermypassword": "Garder ma session active",
"userlogin-signwithsecure": "Utiliser une connexion sécurisée",
"cannotloginnow-title": "Impossible de se connecter maintenant",
"cannotloginnow-text": "La connexion nâest pas possible en utilisant $1.",
"yourdomainname": "Votre domaine :",
"password-change-forbidden": "Vous ne pouvez pas modifier les mots de passe sur ce wiki.",
- "externaldberror": "Une erreur s'est produite avec la base de données d'authentification externe, ou bien vous ne pouvez pas mettre à jour votre compte externe.",
+ "externaldberror": "Une erreur sâest produite sur la base de données dâauthentification externe, ou bien vous nâêtes pas autorisé à mettre à jour votre compte externe.",
"login": "Connexion",
"nav-login-createaccount": "Créer un compte ou se connecter",
"userlogin": "Créer un compte ou se connecter",
@@ -540,22 +543,22 @@
"logout": "Se déconnecter",
"userlogout": "Déconnexion",
"notloggedin": "Non connecté",
- "userlogin-noaccount": "Vous n'avez pas de compte ?",
+ "userlogin-noaccount": "Vous nâavez pas de compte ?",
"userlogin-joinproject": "Rejoignez {{SITENAME}}",
- "nologin": "Vous n'avez pas de compte ? $1.",
+ "nologin": "Vous nâavez pas de compte ? $1.",
"nologinlink": "Créer un compte",
"createaccount": "Créer un compte",
- "gotaccount": "Vous avez déjà un compte ? '''$1'''.",
+ "gotaccount": "Vous avez déjà un compte ? $1.",
"gotaccountlink": "Connectez-vous",
"userlogin-resetlink": "Vous avez oublié vos détails de connexion ?",
"userlogin-resetpassword-link": "Mot de passe oublié�",
- "userlogin-helplink2": "Aide à la connexion",
- "userlogin-loggedin": "Vous êtes déjà connecté{{GENDER:$1||e}} en tant que {{GENDER:$1|$1}}.\nUtilisez le formulaire ci-dessous pour vous connecter avec un autre compte utilisateur.",
+ "userlogin-helplink2": "Aide pour se connecter",
+ "userlogin-loggedin": "Vous êtes déjà connecté{{GENDER:$1||e|(e)}} en tant que $1.\nUtilisez le formulaire ci-dessous pour vous connecter avec un autre compte utilisateur.",
"userlogin-createanother": "Créer un autre compte",
"createacct-emailrequired": "Adresse de courriel",
"createacct-emailoptional": "Adresse de courriel (facultative)",
"createacct-email-ph": "Entrez votre adresse de courriel",
- "createacct-another-email-ph": "Saisir lâadresse de courriel",
+ "createacct-another-email-ph": "Entrez lâadresse de courriel",
"createaccountmail": "Utiliser un mot de passe aléatoire temporaire et lâenvoyer à lâadresse de courriel spécifiée",
"createacct-realname": "Nom réel (facultatif)",
"createaccountreason": "Motif :",
@@ -564,65 +567,65 @@
"createacct-submit": "Créez votre compte",
"createacct-another-submit": "Créer le compte",
"createacct-benefit-heading": "{{SITENAME}} est écrit par des gens comme vous.",
- "createacct-benefit-body1": "{{PLURAL:$1|modification|modifications}}",
- "createacct-benefit-body2": "{{PLURAL:$1|article|articles}}",
+ "createacct-benefit-body1": "modification{{PLURAL:$1||s}}",
+ "createacct-benefit-body2": "page{{PLURAL:$1||s}}",
"createacct-benefit-body3": "{{PLURAL:$1|contributeur récent|contributeurs récents}}",
"badretype": "Les mots de passe que vous avez saisis ne correspondent pas.",
"usernameinprogress": "Une création de compte pour ce nom dâutilisateur est déjà en cours.\nVeuillez patienter.",
- "userexists": "Nom d'utilisateur entré déjà utilisé.\nVeuillez choisir un nom différent.",
+ "userexists": "Nom dâutilisateur entré déjà utilisé.\nVeuillez choisir un nom différent.",
"loginerror": "Erreur de connexion",
"createacct-error": "Erreur lors de la création du compte",
"createaccounterror": "Impossible de créer le compte : $1",
- "nocookiesnew": "Le compte utilisateur a été créé, mais vous n'êtes pas connecté{{GENDER:||e}}. {{SITENAME}} utilise des cookies pour la connexion mais vous les avez désactivés. Veuillez les activer et vous reconnecter avec le même nom et le même mot de passe.",
- "nocookieslogin": "{{SITENAME}} utilise des cookies pour la connexion mais vous les avez désactivés. Veuillez les activer et vous reconnecter.",
- "nocookiesfornew": "Le compte utilisateur n'a pas été créé, car nous n'avons pas pu identifier son origine.\nVérifiez que vous avez activé les cookies, rechargez la page et réessayez.",
- "noname": "Vous n'avez pas saisi un nom d'utilisateur valide.",
+ "nocookiesnew": "Le compte utilisateur a été créé, mais vous nâêtes pas connecté{{GENDER:||e|(e)}}.\n{{SITENAME}} utilise des cookies pour conserver la connexion mais vous les avez désactivés.\nVeuillez les activer et vous reconnecter avec le même nom et le même mot de passe.",
+ "nocookieslogin": "{{SITENAME}} utilise des cookies pour conserver la connexion mais vous les avez désactivés.\nVeuillez les activer et vous reconnecter.",
+ "nocookiesfornew": "Le compte utilisateur nâa pas été créé, car nous nâavons pas pu identifier son origine.\nVérifiez que vous avez activé les cookies, rechargez la page et essayez à nouveau.",
+ "noname": "Vous nâavez pas saisi un nom dâutilisateur valide.",
"loginsuccesstitle": "Connecté",
- "loginsuccess": "Vous êtes maintenant connecté{{GENDER:$1||e}} à {{SITENAME}} en tant que « $1 ».",
- "nosuchuser": "L'utilisateur « $1 » n'existe pas.\nLes noms d'utilisateurs sont sensibles à la casse.\nVérifiez l'orthographe, ou [[Special:UserLogin/signup|créez un nouveau compte]].",
- "nosuchusershort": "Il n'y a pas de contributeur avec le nom « $1 ». Veuillez vérifier l'orthographe.",
- "nouserspecified": "Vous devez saisir un nom d'utilisateur.",
+ "loginsuccess": "Vous êtes maintenant connecté{{GENDER:$1||e|(e)}} à {{SITENAME}} en tant que « $1 ».",
+ "nosuchuser": "L'utilisateur « $1 » nâexiste pas.\nLes noms dâutilisateurs sont sensibles à la casse.\nVérifiez lâorthographe, ou [[Special:UserLogin/signup|créez un nouveau compte]].",
+ "nosuchusershort": "Il nây a pas de contributeur avec le nom « $1 ».\nVeuillez vérifier lâorthographe.",
+ "nouserspecified": "Vous devez saisir un nom dâutilisateur.",
"login-userblocked": "Cet utilisateur est bloqué. Connexion non autorisée.",
- "wrongpassword": "Le mot de passe est incorrect. Veuillez essayer à nouveau.",
- "wrongpasswordempty": "Vous n'avez pas entré de mot de passe. Veuillez essayer à nouveau.",
+ "wrongpassword": "Le mot de passe est incorrect.\nVeuillez essayer à nouveau.",
+ "wrongpasswordempty": "Vous nâavez entré aucun mot de passe.\nVeuillez essayer à nouveau.",
"passwordtooshort": "Votre mot de passe doit contenir au moins $1 caractère{{PLURAL:$1||s}}.",
- "passwordtoolong": "Les mots de passe ne peuvent pas dépasser {{PLURAL:$1|1 caractère|$1 caractères}}.",
+ "passwordtoolong": "Les mots de passe ne peuvent pas dépasser $1 caractère{{PLURAL:$1||s}}.",
"passwordtoopopular": "Les mots de passe trop courants ne peuvent pas être utilisés. Veuillez choisir un mot de passe plus original.",
- "password-name-match": "Votre mot de passe doit être différent de votre nom d'utilisateur.",
- "password-login-forbidden": "L'utilisation de ce nom d'utilisateur et/ou de ce mot de passe a été interdite.",
+ "password-name-match": "Votre mot de passe doit être différent de votre nom dâutilisateur.",
+ "password-login-forbidden": "Lâutilisation de ce nom dâutilisateur et/ou de ce mot de passe a été interdite.",
"mailmypassword": "Réinitialiser le mot de passe",
"passwordremindertitle": "Nouveau mot de passe temporaire pour {{SITENAME}}",
- "passwordremindertext": "Quelqu'un (probablement vous, ayant l'adresse IP $1) a demandé un nouveau mot de\npasse pour {{SITENAME}} ($4). Un mot de passe temporaire a été créé pour\nl'utilisateur « $2 » et est « $3 ». Si cela était votre intention, vous devrez\nvous connecter et choisir un nouveau mot de passe.\nVotre mot de passe temporaire expirera dans $5 jour{{PLURAL:$5||s}}.\n\nSi vous n'êtes pas l'auteur de cette demande, ou si vous vous souvenez à présent\nde votre ancien mot de passe et que vous ne souhaitez plus en changer, vous\npouvez ignorer ce message et continuer à utiliser votre ancien mot de passe.",
- "noemail": "Aucune adresse de courriel n'a été enregistrée pour l'utilisateur « $1 ».",
+ "passwordremindertext": "Quelquâun (probablement vous, ayant lâadresse IP $1) a demandé un nouveau mot de\npasse pour {{SITENAME}} ($4). Un mot de passe temporaire pour lâutilisateur\n« $2 » a été créé et est « $3 ». Si cela était votre intention,\nvous devrez vous connecter et choisir un nouveau mot de passe.\nVotre mot de passe temporaire expirera dans $5 jour{{PLURAL:$5||s}}.\n\nSi vous nâêtes pas lâauteur de cette demande, ou si vous vous souvenez à présent de\nvotre mot de passe et ne souhaitez plus en changer, vous pouvez ignorer ce message\net continuer à utiliser votre ancien mot de passe.",
+ "noemail": "Aucune adresse de courriel nâa été enregistrée pour l'utilisateur « $1 ».",
"noemailcreate": "Vous devez fournir une adresse de courriel valide",
- "passwordsent": "Un nouveau mot de passe a été envoyé à l'adresse de courriel de l'utilisateur « $1 ». Veuillez vous reconnecter après l'avoir reçu.",
- "blocked-mailpassword": "Votre adresse IP est bloquée en écriture, la fonction de rappel du mot de passe est donc désactivée pour éviter les abus.",
+ "passwordsent": "Un nouveau mot de passe a été envoyé à lâadresse de courriel de lâutilisateur « $1 ».\nVeuillez vous reconnecter après lâavoir reçu.",
+ "blocked-mailpassword": "Votre adresse IP est bloquée pour la modification. Pour éviter les abus, il nâest pas autorisé dâutiliser la récupération de mot de passe à partir de cette adresse IP.",
"eauthentsent": "Un courriel de confirmation a été envoyé à lâadresse indiquée.\nAvant quâun autre courriel ne soit envoyé à ce compte, vous devrez suivre les instructions du courriel et confirmer que le compte est bien le vôtre.",
- "throttled-mailpassword": "Un courriel de réinitialisation de votre mot de passe a déjà été envoyé durant {{PLURAL:$1|la dernière heure|les $1 dernières heures}}. Afin d'éviter les abus, un seul courriel de réinitialisation de votre mot de passe sera envoyé par {{PLURAL:$1|heure|intervalle de $1 heures}}.",
- "mailerror": "Erreur lors de l'envoi du courriel : $1",
- "acct_creation_throttle_hit": "Quelqu'un utilisant votre adresse IP a créé {{PLURAL:$1|un compte|$1 comptes}} au cours des dernières 24 heures, ce qui constitue la limite autorisée dans cet intervalle de temps.\nPar conséquent, la création de compte a été temporairement désactivée pour cette adresse IP.",
+ "throttled-mailpassword": "Un courriel de réinitialisation de votre mot de passe a déjà été envoyé durant {{PLURAL:$1|la dernière heure|les $1 dernières heures}}. \nAfin dâéviter les abus, un seul courriel de réinitialisation de votre mot de passe sera envoyé par {{PLURAL:$1|heure|intervalle de $1 heures}}.",
+ "mailerror": "Erreur lors de lâenvoi du courriel : $1",
+ "acct_creation_throttle_hit": "Les visiteurs de ce wiki qui utilisent votre adresse IP ont créé {{PLURAL:$1|un compte|$1 comptes}} au cours des dernières 24 heures, ce qui est la limite maximale autorisée dans cet intervalle de temps.\nPar conséquent, la création de comptes pour les visiteurs utilisant cette adresse IP est temporairement suspendue.",
"emailauthenticated": "Votre adresse de courriel a été confirmée le $2 à $3.",
- "emailnotauthenticated": "Votre adresse de courriel n'est pas encore confirmée. Aucun courriel ne sera envoyé pour chacune des fonctions suivantes.",
+ "emailnotauthenticated": "Votre adresse de courriel nâest pas encore confirmée.\nAucun courriel ne sera envoyé pour chacune des fonctions suivantes.",
"noemailprefs": "Indiquez une adresse de courriel dans vos préférences pour utiliser ces fonctions.",
"emailconfirmlink": "Confirmez votre adresse de courriel",
- "invalidemailaddress": "Cette adresse courriel ne peut pas être acceptée car elle semble avoir un format incorrect.\nEntrez une adresse bien formatée ou laissez ce champ vide.",
+ "invalidemailaddress": "Cette adresse courriel ne peut pas être acceptée car son format paraît incorrect.\nEntrez une adresse bien formatée ou laissez ce champ vide.",
"cannotchangeemail": "Les adresses de courriel des comptes ne peuvent pas être modifiées sur ce wiki.",
"emaildisabled": "Ce site ne peut pas envoyer de courriels.",
"accountcreated": "Compte créé",
"accountcreatedtext": "Le compte utilisateur pour [[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|discussion]]) a été créé.",
"createaccount-title": "Création dâun compte pour {{SITENAME}}",
"createaccount-text": "Quelquâun a créé un compte pour votre adresse de courriel sur {{SITENAME}} ($4) intitulé « $2 », avec le mot de passe « $3 ».\nVous devriez ouvrir une session et modifier dès à présent votre mot de passe.\n\nIgnorez ce message si ce compte a été créé par erreur.",
- "login-throttled": "Vous avez tenté un trop grand nombre de connexions dernièrement.\nVeuillez attendre $1 avant d'essayer à nouveau.",
+ "login-throttled": "Vous avez tenté dernièrement un nombre trop élevé de connexions.\nVeuillez attendre $1 avant dâessayer à nouveau.",
"login-abort-generic": "Votre tentative de connexion a échoué",
"login-migrated-generic": "Votre compte a été migré, et votre nom dâutilisateur nâexiste plus sur ce wiki.",
"loginlanguagelabel": "Langue : $1",
- "suspicious-userlogout": "Votre demande de déconnexion a été refusée car il semble qu'elle a été envoyée par un navigateur cassé ou la mise en cache d'un proxy.",
- "createacct-another-realname-tip": "Le vrai nom est optionnel.\nSi vous décidez de le fournir, il sera utilisé pour attribuer à lâutilisateur ses travaux.",
+ "suspicious-userlogout": "Votre demande de déconnexion a été refusée car elle paraît avoir été envoyée par un navigateur défectueux ou depuis le cache dâun service mandataire.",
+ "createacct-another-realname-tip": "Le véritable nom est optionnel.\nSi vous décidez de le fournir, il sera utilisé pour créditer lâauteur de ses travaux.",
"pt-login": "Se connecter",
"pt-login-button": "Se connecter",
"pt-createaccount": "Créer un compte",
"pt-userlogout": "Se déconnecter",
- "php-mail-error-unknown": "Erreur inconnue dans la fonction mail() de PHP.",
+ "php-mail-error-unknown": "Erreur inconnue dans la fonction mail()
de PHP.",
"user-mail-no-addy": "Tenté d'envoyer un courriel sans adresse de courriel",
"user-mail-no-body": "Essai d'envoi d'un courriel avec un corps vide ou déraisonnablement court.",
"changepassword": "Changer de mot de passe",
@@ -913,17 +916,17 @@
"rev-deleted-event": "(détails de lâentrée retirée)",
"rev-deleted-user-contribs": "[nom d'utilisateur ou adresse IP retiré - modification masquée sur les contributions]",
"rev-deleted-text-permission": "Cette version de la page a été '''effacée'''.\nDes détails sont disponibles dans le [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} journal des suppressions].",
- "rev-suppressed-text-permission": "Cette version de la page a été supprimée .\nLes détails se trouvent dans le [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} journal des masquages].",
- "rev-deleted-text-unhide": "Cette version de la page a été '''effacée'''.\nDes détails sont disponibles dans [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} le journal des suppressions].\nVous pouvez toujours [$1 voir cette version] si vous le voulez.",
- "rev-suppressed-text-unhide": "Cette version de la page a été '''supprimée'''.\nDes détails sont disponibles dans [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} le journal des masquages].\nVous pouvez toujours [$1 voir cette version] si vous le voulez.",
- "rev-deleted-text-view": "Cette version de la page a été '''effacée'''.\nVous pouvez la visualiser ; des détails sont disponibles dans le [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} journal des suppressions].",
- "rev-suppressed-text-view": "Cette version de la page a été '''supprimée'''.\nVous pouvez la visualiser ; des détails sont disponibles dans le [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} journal des masquages].",
- "rev-deleted-no-diff": "Vous ne pouvez pas voir ce diff parce qu'une des versions a été '''effacée'''.\nDes détails sont disponibles dans le [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} journal des suppressions].",
- "rev-suppressed-no-diff": "Vous ne pouvez pas voir cette différence car une des révisions a été '''supprimée'''.",
- "rev-deleted-unhide-diff": "Une des révisions de cette différence a été '''effacée'''.\nDes détails sont disponibles dans le [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} journal des suppressions].\nVous pouvez toujours [$1 voir cette différence] si vous le voulez.",
- "rev-suppressed-unhide-diff": "L'une des révisions de ce diff a été '''supprimée'''.\nDes détails sont disponibles dans le [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} journal des masquages].\nVous pouvez toujours [$1 voir ce diff] si vous souhaitez poursuivre.",
- "rev-deleted-diff-view": "Une des révisions de ce diff a été '''effacée'''.\nVous pouvez voir ce diff ; des détails sont disponibles dans le [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} journal des suppressions].",
- "rev-suppressed-diff-view": "Une des révisions de ce diff a été '''supprimée'''.\nVous pouvez voir ce diff ; des détails sont disponibles dans le [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} journal des masquages].",
+ "rev-suppressed-text-permission": "Cette version de la page a été masquée .\nLes détails se trouvent dans le [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} journal des masquages].",
+ "rev-deleted-text-unhide": "Cette version de la page a été supprimée .\nDes détails sont disponibles dans [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} le journal des suppressions].\nVous pouvez toujours [$1 voir cette version] si vous le voulez.",
+ "rev-suppressed-text-unhide": "Cette version de la page a été masquée .\nDes détails sont disponibles dans [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} le journal des masquages].\nVous pouvez toujours [$1 voir cette version] si vous le voulez.",
+ "rev-deleted-text-view": "Cette version de la page a été supprimée .\nVous pouvez la visualiser ; des détails sont disponibles dans le [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} journal des suppressions].",
+ "rev-suppressed-text-view": "Cette version de la page a été masquée .\nVous pouvez la visualiser ; des détails sont disponibles dans le [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} journal des masquages].",
+ "rev-deleted-no-diff": "Vous ne pouvez pas voir ce diff parce qu'une des versions a été supprimée .\nDes détails sont disponibles dans le [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} journal des suppressions].",
+ "rev-suppressed-no-diff": "Vous ne pouvez pas voir cette différence car une des révisions a été masquée .",
+ "rev-deleted-unhide-diff": "Une des révisions de cette différence a été supprimée .\nDes détails sont disponibles dans le [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} journal des suppressions].\nVous pouvez toujours [$1 voir cette différence] si vous le voulez.",
+ "rev-suppressed-unhide-diff": "Lâune des révisions de ce diff a été masquée .\nDes détails sont disponibles dans le [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} journal des masquages].\nVous pouvez toujours [$1 voir ce diff] si vous souhaitez poursuivre.",
+ "rev-deleted-diff-view": "Une des révisions de ce diff a été supprimée .\nVous pouvez voir ce diff ; des détails sont disponibles dans le [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} journal des suppressions].",
+ "rev-suppressed-diff-view": "Une des révisions de ce diff a été masquée .\nVous pouvez voir ce diff ; des détails sont disponibles dans le [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} journal des masquages].",
"rev-delundel": "afficher/masquer",
"rev-showdeleted": "afficher",
"revisiondelete": "Supprimer ou restaurer des événements",
@@ -1106,7 +1109,7 @@
"rows": "Rangées :",
"columns": "Colonnes :",
"searchresultshead": "Filtrer avec cette valeur",
- "stub-threshold": "Seuil pour le formatage des liens bouchons ($1) :",
+ "stub-threshold": "Seuil pour le formatage des liens dâébauche ($1) :",
"stub-threshold-sample-link": "exemple",
"stub-threshold-disabled": "Désactivé",
"recentchangesdays": "Nombre de jours à afficher dans les modifications récentes :",
@@ -1309,7 +1312,7 @@
"grant-createaccount": "Créer des comptes",
"grant-createeditmovepage": "Créer, modifier et déplacer des pages",
"grant-delete": "Supprimer les pages, les révisions et les entrées du journal",
- "grant-editinterface": "Modifier lâespace de noms MédiaWiki et le CSS/JavaScript utilisateur",
+ "grant-editinterface": "Modifier lâespace de noms MediaWiki et le CSS/JavaScript utilisateur",
"grant-editmycssjs": "Modifier votre CSS/JavaScript utilisateur",
"grant-editmyoptions": "Modifier vos préférences utilisateur",
"grant-editmywatchlist": "Modifier votre liste de suivi",
@@ -1440,10 +1443,10 @@
"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 [[Special:WhatLinksHere/$1|{{PLURAL:$2|une page ajoutée|$2 pages ajoutées}}]] à la catégorie",
+ "recentchanges-page-added-to-category-bundled": "[[:$1]] ajouté à la catégorie, [[Special:WhatLinksHere/$1|cette page est incluse dans dâautres]]",
"recentchanges-page-removed-from-category": "[[:$1]] supprimé de la catégorie",
- "recentchanges-page-removed-from-category-bundled": "[[:$1]] et [[Special:WhatLinksHere/$1|{{PLURAL:$2|une page|$2 pages}}]] {{PLURAL:$2|retirée|retirées}} de la catégorie",
- "autochange-username": "Modification automatique de MédiaWiki",
+ "recentchanges-page-removed-from-category-bundled": "[[:$1]] supprimée de la catégorie, [[Special:WhatLinksHere/$1|cette page est incluse dans dâautres]]",
+ "autochange-username": "Modification automatique de MediaWiki",
"upload": "Importer un fichier",
"uploadbtn": "Importer le fichier",
"reuploaddesc": "Annuler et retourner au formulaire d'import",
@@ -1622,6 +1625,7 @@
"uploadstash-badtoken": "Lâexécution de cette action a échoué, peut-être parce que vos informations dâidentification ont expiré. Veuillez réessayer.",
"uploadstash-errclear": "La suppression des fichiers a échoué.",
"uploadstash-refresh": "Actualiser la liste des fichiers",
+ "uploadstash-thumbnail": "afficher la vignette",
"invalid-chunk-offset": "Offset de segment non valide",
"img-auth-accessdenied": "Accès refusé",
"img-auth-nopathinfo": "PATH_INFO manquant.\nVotre serveur n'est pas paramétré pour transmettre cette information.\nIl fonctionne peut-être en CGI et ne supporte pas img_auth.\nVoir : https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Image_Authorization.",
@@ -1877,7 +1881,7 @@
"apisandbox-fullscreen": "Développer le panneau",
"apisandbox-fullscreen-tooltip": "Ãtendre le panneau du bac à sable pour remplir la fenêtre du navigateur.",
"apisandbox-unfullscreen": "Afficher la page",
- "apisandbox-unfullscreen-tooltip": "Réduire le panneau du bac à sable, pour que les liens de navigation de MédiaWiki soient disponibles.",
+ "apisandbox-unfullscreen-tooltip": "Réduire le panneau du bac à sable, pour que les liens de navigation de MediaWiki soient disponibles.",
"apisandbox-submit": "Faire la demande",
"apisandbox-reset": "Effacer",
"apisandbox-retry": "Réessayer",
@@ -1943,8 +1947,6 @@
"categories-submit": "Lister",
"categoriespagetext": "{{PLURAL:$1|La catégorie suivante est utilisée|Les catégories suivantes sont utilisées}} par des pages ou fichiers.\n[[Special:UnusedCategories|Les catégories inutilisées]] ne sont pas affichées ici.\nVoyez aussi [[Special:WantedCategories|les catégories demandées]].",
"categoriesfrom": "Afficher les catégories à partir de :",
- "special-categories-sort-count": "tri par nombre d'éléments",
- "special-categories-sort-abc": "tri alphabétique",
"deletedcontributions": "Contributions supprimées",
"deletedcontributions-title": "Contributions supprimées",
"sp-deletedcontributions-contribs": "contributions",
@@ -2321,6 +2323,7 @@
"ipb-unblock": "Débloquer un compte utilisateur ou une adresse IP",
"ipb-blocklist": "Voir les blocages existants",
"ipb-blocklist-contribs": "Contributions pour {{GENDER:$1|$1}}",
+ "ipb-blocklist-duration-left": "$1 restant",
"unblockip": "Débloquer un utilisateur ou une adresse IP",
"unblockiptext": "Utilisez le formulaire ci-dessous pour redonner les droits dâécriture à une adresse IP ou un nom dâutilisateur.",
"ipusubmit": "Supprimer ce blocage",
@@ -2384,7 +2387,7 @@
"unblock-hideuser": "Vous ne pouvez pas débloquer cet utilisateur, car son nom dâutilisateur a été masqué.",
"ipb_cant_unblock": "Erreur : identifiant de blocage $1 non trouvé.\nIl est possible qu'un déblocage ait déjà été effectué.",
"ipb_blocked_as_range": "Erreur : l'adresse IP $1 n'est pas bloquée directement et ne peut donc pas être débloquée.\nElle fait cependant partie de la plage $2 qui, elle, peut être débloquée.",
- "ip_range_invalid": "Plage IP incorrecte.",
+ "ip_range_invalid": "Plage dâadresses IP incorrecte.",
"ip_range_toolarge": "Les blocages de plages plus grandes que /$1 ne sont pas autorisées.",
"proxyblocker": "Bloqueur de mandataires",
"proxyblockreason": "Votre adresse IP a été bloquée car il s'agit d'un mandataire ouvert.\nVeuillez contacter votre fournisseur d'accès Internet ou votre support technique et l'informer de ce sérieux problème de sécurité.",
@@ -2562,11 +2565,7 @@
"import-logentry-upload-detail": "$1 {{PLURAL:$1|révision importée|révisions importées}}",
"import-logentry-interwiki-detail": "$1 {{PLURAL:$1|révision importée|révisions importées}} depuis $2",
"javascripttest": "Test de JavaScript",
- "javascripttest-pagetext-noframework": "Cette page est réservée pour l'exécution des tests JavaScript.",
- "javascripttest-pagetext-unknownframework": "Structure « $1 » inconnue.",
"javascripttest-pagetext-unknownaction": "Action «â¯$1â¯Â» inconnue.",
- "javascripttest-pagetext-frameworks": "Veuillez choisir l'une des structures de test suivantes : $1",
- "javascripttest-pagetext-skins": "Choisissez un habillage avec lequel lancer les tests :",
"javascripttest-qunit-intro": "Voir [$1 la documentation de test] sur mediawiki.org.",
"tooltip-pt-userpage": "{{GENDER:|Votre}} page utilisateur",
"tooltip-pt-anonuserpage": "La page utilisateur de l'IP avec laquelle vous contribuez",
@@ -2663,9 +2662,9 @@
"anonusers": "{{PLURAL:$2|l'utilisateur anonyme|les utilisateurs anonymes}} $1 de {{SITENAME}}",
"creditspage": "Crédits de la page",
"nocredits": "Il n'y a pas d'informations d'attribution disponibles pour cette page.",
- "spamprotectiontitle": "Filtre de protection anti-pollution",
- "spamprotectiontext": "La page que vous avez voulu sauvegarder a été bloquée par le filtre anti-pollution. Ceci est probablement dû à l'introduction d'un lien vers un site externe apparaissant sur la liste noire.",
- "spamprotectionmatch": "La chaîne de caractères « '''$1''' » a déclenché le détecteur de pollution.",
+ "spamprotectiontitle": "Filtre de protection anti-pollupostage",
+ "spamprotectiontext": "La page que vous avez voulu sauvegarder a été bloquée par le filtre anti-spam. Ceci est probablement dû à l'introduction d'un lien vers un site externe apparaissant sur la liste noire.",
+ "spamprotectionmatch": "Le texte suivant a déclenché notre filtre de protection anti-pollupostage : $1",
"spambot_username": "Nettoyage de pourriels par MediaWiki",
"spam_reverting": "Rétablissement de la dernière version ne contenant pas de lien vers $1",
"spam_blanking": "Toutes les versions contenant des liens vers $1 sont blanchies",
@@ -2851,8 +2850,8 @@
"exif-colorspace": "Espace colorimétrique",
"exif-componentsconfiguration": "Signification de chaque composante",
"exif-compressedbitsperpixel": "Mode de compression de l'image",
- "exif-pixelydimension": "Largeur de l'image",
- "exif-pixelxdimension": "Hauteur de l'image",
+ "exif-pixelxdimension": "Largeur de l'image",
+ "exif-pixelydimension": "Hauteur de l'image",
"exif-usercomment": "Commentaires de l'utilisateur",
"exif-relatedsoundfile": "Fichier audio associé",
"exif-datetimeoriginal": "Date de la prise originelle",
@@ -3003,6 +3002,7 @@
"exif-copyrighted-true": "Soumis au droit d'auteur",
"exif-copyrighted-false": "Ãtat des droits dâauteur non défini",
"exif-photometricinterpretation-1": "Noir et blanc (0 pour le noir)",
+ "exif-photometricinterpretation-4": "Masque de transparence",
"exif-unknowndate": "Date inconnue",
"exif-orientation-1": "Normale",
"exif-orientation-2": "Inversée horizontalement",
@@ -3182,6 +3182,10 @@
"confirmemail_body_set": "Quelquâun, probablement vous, depuis lâadresse IP $1, a modifié lâadresse de courriel du compte «â¯$2â¯Â» en celle-ci sur {{SITENAME}}.\n\nPour confirmer que ce compte vous appartient et réactiver les fonctions de courriel sur {{SITENAME}}, ouvrez ce lien dans votre navigateur Web :\n\n$3\n\nCe code de confirmation expirera le $4.\n\nSi le compte ne vous appartient *pas*, suivez plutôt ce lien pour annuler la confirmation de lâadresse de courriel :\n\n$5",
"confirmemail_invalidated": "Confirmation de lâadresse courriel annulée",
"invalidateemail": "Annuler la confirmation de l'adresse de courriel",
+ "notificationemail_subject_changed": "Lâadresse courriel enregistrée sur {{SITENAME}} a été changée",
+ "notificationemail_subject_removed": "Lâadresse courriel enregistrée sur {{SITENAME}} a été supprimée",
+ "notificationemail_body_changed": "Quelquâun, probablement vous, connecté depuis lâadresse IP $1,\na changé lâadresse courriel associée au compte « $2 » sur {{SITENAME}}\nen « $3 ».\n\nSi ce nâétait pas vous, contactez un administrateur du site immédiatement.",
+ "notificationemail_body_removed": "Quelquâun, probablement vous, connecté depuis lâadresse IP $1,\na suprrimé lâadresse courriel associée au compte « $2 » sur {{SITENAME}}.\n\nSi ce nâétait pas vous, contactez un administrateur du site immédiatement.",
"scarytranscludedisabled": "[La transclusion interwiki est désactivée]",
"scarytranscludefailed": "[La récupération de modèle a échoué pour $1]",
"scarytranscludefailed-httpstatus": "[Ãchec de la récupération du modèle pour $1 : HTTP $2 ]",
@@ -3256,7 +3260,7 @@
"watchlistedit-raw-done": "Votre liste de suivi a été mise à jour.",
"watchlistedit-raw-added": "{{PLURAL:$1|Un titre a été ajouté|$1 titres ont été ajoutés}} :",
"watchlistedit-raw-removed": "{{PLURAL:$1|Un titre a été retiré|$1 titres ont été retirés}} :",
- "watchlistedit-clear-title": "Liste de suivi vidée",
+ "watchlistedit-clear-title": "Vider la liste de suivi",
"watchlistedit-clear-legend": "Effacer la liste de suivi",
"watchlistedit-clear-explain": "Tous les titres seront supprimés de votre liste de suivi",
"watchlistedit-clear-titles": "Titres :",
@@ -3373,7 +3377,6 @@
"version-libraries-description": "Description",
"version-libraries-authors": "Auteurs",
"redirect": "Rediriger par ID de fichier, utilisateur, page, révision ou journal",
- "redirect-legend": "Rediriger vers une page ou un fichier",
"redirect-summary": "Cette page spéciale redirige vers un fichier (nom de fichier fourni), une page (ID de révision ou de page fourni), une page dâutilisateur (identifiant numérique de lâutilisateur fourni), ou une entrée de journal (ID du journal fourni). Utilisation : [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], [[{{#Special:Redirect}}/user/101]], ou [[{{#Special:Redirect}}/logid/186]].",
"redirect-submit": "Valider",
"redirect-lookup": "Recherche :",
@@ -3386,7 +3389,6 @@
"redirect-not-exists": "Valeur non trouvée",
"fileduplicatesearch": "Recherche de doublons",
"fileduplicatesearch-summary": "Recherche des copies de fichiers identiques d'après leur empreinte de hachage.",
- "fileduplicatesearch-legend": "Rechercher un doublon",
"fileduplicatesearch-filename": "Nom du fichier :",
"fileduplicatesearch-submit": "Rechercher",
"fileduplicatesearch-info": "$1 Ã $2 pixels Taille du fichier : $3 Type MIME : $4",
@@ -3407,7 +3409,7 @@
"specialpages-group-pagetools": "Outils pour les pages",
"specialpages-group-wiki": "Données et outils",
"specialpages-group-redirects": "Pages spéciales redirigées",
- "specialpages-group-spam": "Outils anti-pourriel",
+ "specialpages-group-spam": "Outils anti-spam",
"specialpages-group-developer": "Outils du développeur",
"blankpage": "Page vide",
"intentionallyblankpage": "Cette page est laissée intentionnellement (presque) vide.",
@@ -3587,7 +3589,7 @@
"logentry-protect-protect-cascade": "$1 {{GENDER:$2|a protégé}} $3 $4 [protection en cascade]",
"logentry-protect-modify": "$1 {{GENDER:$2|a modifié}} le niveau de protection de $3 $4",
"logentry-protect-modify-cascade": "$1 {{GENDER:$2|a modifié}} le niveau de protection de $3 $4 [protection en cascade]",
- "logentry-rights-rights": "$1 {{GENDER:$2|a modifié}} l'appartenance au groupe pour $3 de $4 à $5",
+ "logentry-rights-rights": "$1 a modifié lâappartenance au groupe pour {{GENDER:$6|$3}} de $4 à $5",
"logentry-rights-rights-legacy": "$1 {{GENDER:$2|a modifié}} l'appartenance au groupe pour $3",
"logentry-rights-autopromote": "$1 {{GENDER:$2|a été promu}} automatiquement de $4 à $5",
"logentry-upload-upload": "$1 {{GENDER:$2|a téléchargé}} $3",
@@ -3680,6 +3682,7 @@
"api-error-unknownerror": "Erreur inconnue : « $1 ».",
"api-error-uploaddisabled": "Le téléversement est désactivé sur ce wiki.",
"api-error-verification-error": "Ce fichier peut être corrompu, ou son extension est incorrecte.",
+ "api-error-was-deleted": "Un fichier portant ce nom a déjà été importé puis supprimé.",
"duration-seconds": "$1 seconde{{PLURAL:$1||s}}",
"duration-minutes": "$1 minute{{PLURAL:$1||s}}",
"duration-hours": "$1 heure{{PLURAL:$1||s}}",
@@ -3770,6 +3773,7 @@
"special-characters-group-ipa": "API",
"special-characters-group-symbols": "symboles",
"special-characters-group-greek": "grec",
+ "special-characters-group-greekextended": "Grec étendu",
"special-characters-group-cyrillic": "cyrillique",
"special-characters-group-arabic": "arabe",
"special-characters-group-arabicextended": "arabe étendu",
@@ -3797,5 +3801,54 @@
"sessionprovider-generic": "sessions $1",
"sessionprovider-mediawiki-session-cookiesessionprovider": "sessions basées sur les cookies",
"sessionprovider-nocookies": "Les cookies peuvent être désactivés. Assurez-vous que vous avez activé les cookies et recommencez.",
- "randomrootpage": "Page racine aléatoire"
+ "randomrootpage": "Page racine aléatoire",
+ "log-action-filter-block": "Type de blocage :",
+ "log-action-filter-contentmodel": "Type de modification de modèle de contenu :",
+ "log-action-filter-delete": "Type de suppression :",
+ "log-action-filter-import": "Type dâimport :",
+ "log-action-filter-managetags": "Type dâaction de gestion des étiquettes :",
+ "log-action-filter-move": "Type de déplacement :",
+ "log-action-filter-newusers": "Type de création de compte :",
+ "log-action-filter-patrol": "Type de patrouille :",
+ "log-action-filter-protect": "Type de protection :",
+ "log-action-filter-rights": "Type de changement de droit",
+ "log-action-filter-suppress": "Type de suppression",
+ "log-action-filter-upload": "Type de téléversement :",
+ "log-action-filter-all": "Tout",
+ "log-action-filter-block-block": "Blocage",
+ "log-action-filter-block-reblock": "Modification de blocage",
+ "log-action-filter-block-unblock": "Débloquer",
+ "log-action-filter-contentmodel-change": "Changement de modèle de contenu",
+ "log-action-filter-contentmodel-new": "Création de page avec un modèle de contenu non-standard",
+ "log-action-filter-delete-delete": "Suppression de pages",
+ "log-action-filter-delete-restore": "Restauration de page",
+ "log-action-filter-delete-event": "Suppression du journal",
+ "log-action-filter-delete-revision": "Suppression de révison",
+ "log-action-filter-import-interwiki": "Import transwiki",
+ "log-action-filter-import-upload": "Import par téléversement XML",
+ "log-action-filter-managetags-create": "Création de balise",
+ "log-action-filter-managetags-delete": "Suppression de balise",
+ "log-action-filter-managetags-activate": "Activation de lâétiquette",
+ "log-action-filter-managetags-deactivate": "Désactivation de lâétiquette",
+ "log-action-filter-move-move": "Renommage sans écrasement des redirections",
+ "log-action-filter-move-move_redir": "Renommage avec écrasement des redirections",
+ "log-action-filter-newusers-create": "Création par un utilisateur anonyme",
+ "log-action-filter-newusers-create2": "Création par un utilisateur inscrit",
+ "log-action-filter-newusers-autocreate": "Création automatique",
+ "log-action-filter-newusers-byemail": "Création avec le mot de passe envoyé par courriel",
+ "log-action-filter-patrol-patrol": "Patrouille manuelle",
+ "log-action-filter-patrol-autopatrol": "Patrouille automatique",
+ "log-action-filter-protect-protect": "Protection",
+ "log-action-filter-protect-modify": "Modification de la protection",
+ "log-action-filter-protect-unprotect": "Levée de la protection",
+ "log-action-filter-protect-move_prot": "Protection de renommage",
+ "log-action-filter-rights-rights": "Changement manuel",
+ "log-action-filter-rights-autopromote": "Changement automatique",
+ "log-action-filter-suppress-event": "Suppression de journal",
+ "log-action-filter-suppress-revision": "Suppression de révision",
+ "log-action-filter-suppress-delete": "Suppression de page",
+ "log-action-filter-suppress-block": "Suppression dâutilisateur par blocage",
+ "log-action-filter-suppress-reblock": "Suppression dâutilisateur par blocage réitéré",
+ "log-action-filter-upload-upload": "Nouveau téléversement",
+ "log-action-filter-upload-overwrite": "Réitérer le téléversement"
}
diff --git a/languages/i18n/frp.json b/languages/i18n/frp.json
index f58c6f2cd4..6f53f2679e 100644
--- a/languages/i18n/frp.json
+++ b/languages/i18n/frp.json
@@ -16,7 +16,7 @@
"tog-hidepatrolled": "Cachiér los changements gouardâs dedens los dèrriérs changements",
"tog-newpageshidepatrolled": "Cachiér les pâges gouardâyes dedens la lista de les pâges novèles",
"tog-hidecategorization": "Cachiér la catègorisacion de les pâges",
- "tog-extendwatchlist": "Ãpatar la lista de gouârda por montrar tôs los changements et pas ren que los ples novéls",
+ "tog-extendwatchlist": "Ãpatar la lista de gouârda por montrar tôs los changements et pas mas que los ples novéls",
"tog-usenewrc": "Rassemblar los changements per pâge dedens los dèrriérs changements et la lista de gouârda",
"tog-numberheadings": "Numerotar ôtomaticament los titros de sèccion",
"tog-showtoolbar": "Montrar la bârra dâoutils de changement",
@@ -26,6 +26,7 @@
"tog-watchdefault": "Apondre a ma lista de gouârda les pâges et los fichiérs que chanjo",
"tog-watchmoves": "Apondre a ma lista de gouârda les pâges et los fichiérs que dèplaço",
"tog-watchdeletion": "Apondre a ma lista de gouârda les pâges et los fichiérs que suprimo",
+ "tog-watchuploads": "Apondre a ma lista de gouârda los novéls fichiérs que tèlèchârjo",
"tog-watchrollback": "Apondre a ma lista de gouârda les pâges que jâé fêt na rèvocacion",
"tog-minordefault": "Marcar per dèfôt tôs los changements coment petiôts",
"tog-previewontop": "Montrar lâapèrçu dâamont la zona de changement",
@@ -40,11 +41,11 @@
"tog-uselivepreview": "Empleyér lâapèrçu rapido",
"tog-forceeditsummary": "Mè balyér na semonce quand jâé pas buchiê de rèsumâ de changement",
"tog-watchlisthideown": "Cachiér mos changements dedens la lista de gouârda",
- "tog-watchlisthidebots": "Cachiér los changements fêts per des robots dedens la lista de gouârda",
+ "tog-watchlisthidebots": "Cachiér los changements fêts per los robots dedens la lista de gouârda",
"tog-watchlisthideminor": "Cachiér los petiôts changements dedens la lista de gouârda",
- "tog-watchlisthideliu": "Cachiér los changements fêts per des utilisators branchiês dedens la lista de gouârda",
+ "tog-watchlisthideliu": "Cachiér los changements fêts per los utilisators branchiês dedens la lista de gouârda",
"tog-watchlistreloadautomatically": "Rechargiér ôtomaticament la lista de gouârda quand los chouèx de filtrâjo sont changiês (JavaScript nècèssèro)",
- "tog-watchlisthideanons": "Cachiér los changements fêts per des utilisators anonimos dedens la lista de gouârda",
+ "tog-watchlisthideanons": "Cachiér los changements fêts per los utilisators anonimos dedens la lista de gouârda",
"tog-watchlisthidepatrolled": "Cachiér los changements gouardâs dedens la lista de gouârda",
"tog-watchlisthidecategorization": "Cachiér la catègorisacion de les pâges",
"tog-ccmeonemails": "Mè mandar na copia des mèssâjos que mando ux ôtros utilisators",
@@ -52,7 +53,7 @@
"tog-showhiddencats": "Montrar les catègories cachiêes",
"tog-norollbackdiff": "Pas fâre vêre la dif sur na rèvocacion",
"tog-useeditwarning": "Mè balyér na semonce quand quito na pâge de changement sen encartar los changements",
- "tog-prefershttps": "Empleyér tot lo temps un branchement sècurisâ en étent branchiê(e)",
+ "tog-prefershttps": "Empleyér tot lo temps un branchement sècurisâ en étent branchiê",
"underline-always": "Tot lo temps",
"underline-never": "Jamés",
"underline-default": "Valor per dèfôt de lâhabelyâjo du navegator",
@@ -128,8 +129,8 @@
"pagecategories": "Catègori{{PLURAL:$1|a|es}}",
"category_header": "Pâges dedens la catègoria « $1 »",
"subcategories": "Sot-catègories",
- "category-media-header": "Fichiérs multimèdiâ dedens la catègoria « $1 »",
- "category-empty": "Ora cela catègoria contint gins de pâge de fichiér multimèdiâ. ",
+ "category-media-header": "Mèdiâ dedens la catègoria « $1 »",
+ "category-empty": "Ora cela catègoria contint gins de pâge de mèdiâ. ",
"hidden-categories": "{{PLURAL:$1|Catègoria cachiêe|Catègories cachiêes}}",
"hidden-category-category": "Catègories cachiêes",
"category-subcat-count": "Cela catègoria at {{PLURAL:$2|mas que cela sot-catègoria-que.|{{PLURAL:$1|cela sot-catègoria|celes $1 sot-catègories}}-que, sur na soma de $2.}}",
@@ -158,8 +159,8 @@
"qbedit": "Changiér",
"qbpageoptions": "Cela pâge",
"qbmyoptions": "Mes pâges",
- "faq": "Quèstions sovent posâyes",
- "faqpage": "Project:Quèstions sovent posâyes",
+ "faq": "Quèstions sovent pôses",
+ "faqpage": "Project:Quèstions sovent pôses",
"actions": "Accions",
"namespaces": "Ãspâços de noms",
"variants": "Vèrsions",
@@ -278,7 +279,7 @@
"viewdeleted": "Vos voléd vêre $1 ?",
"restorelink": "{{PLURAL:$1|un changement suprimâ|$1 changements suprimâs}}",
"feedlinks": "Flux :",
- "feed-invalid": "Tipo dâabonement du flux pas justo.",
+ "feed-invalid": "Tipo dâabonament du flux pas justo.",
"feed-unavailable": "Los flux de sindicacion sont pas disponiblos",
"site-rss-feed": "Flux RSS de $1",
"site-atom-feed": "Flux Atom de $1",
@@ -289,7 +290,7 @@
"sort-ascending": "Betar en ôrdre crèssent",
"nstab-main": "Pâge",
"nstab-user": "Pâge utilisator",
- "nstab-media": "Fichiér multimèdiâ",
+ "nstab-media": "Pâge mèdiâ",
"nstab-special": "Pâge spèciâla",
"nstab-project": "Pâge projèt",
"nstab-image": "Fichiér",
@@ -357,8 +358,8 @@
"protectedpagetext": "Cela pâge est étâye protègiêe por empachiér son changement ou ben dâôtres accions.",
"viewsourcetext": "Vos pouede vêre et copiyér lo tèxto sôrsa de cela pâge.",
"viewyourtext": "Vos pouede vêre et copiyér lo tèxto sôrsa de voutros changements a cela pâge.",
- "protectedinterface": "Cela pâge balye de tèxto dâentèrface por la programeria sur cél vouiqui et est vêr protègiêe por èvitar los abus.\nPor apondre ou ben changiér de traduccions sur tôs los vouiquis, se vos plét empleyéd [//translatewiki.net/ translatewiki.net], lo projèt de localisacion de MediaWiki.",
- "editinginterface": "Atencion : vos éte aprés changiér na pâge empleyêe por fâre lo tèxto dâentèrface de la programeria.\nLos changements sè cognetront sur lâaparence de lâentèrface utilisator por los ôtros utilisators de cél vouiqui.",
+ "protectedinterface": "Cela pâge balye de tèxto dâentredoux por la programeria sur cél vouiqui et est vêr protègiêe por èvitar los abus.\nPor apondre ou ben changiér de traduccions sur tôs los vouiquis, se vos plét empleyéd [//translatewiki.net/ translatewiki.net], lo projèt de localisacion de MediaWiki.",
+ "editinginterface": "Atencion : vos éte aprés changiér na pâge empleyêe por fâre lo tèxto dâentredoux de la programeria.\nLos changements sè cognetront sur lâaparence de lâentredoux utilisator por los ôtros utilisators de cél vouiqui.",
"translateinterface": "Por apondre changiér de traduccions sur tôs los vouiquis, se vos plét empleyéd [//translatewiki.net/ translatewiki.net], lo projèt de localisacion de MediaWiki.",
"cascadeprotected": "Cela pâge est protègiêe contre los changements, el est transcllua per {{PLURAL:$1|cela pâge-que quâest étâye protègiêe|celes pâges-que que sont étâyes protègiêes}} avouéc lo chouèx « protèccion en cascâda » activâ :\n$2",
"namespaceprotected": "Vos éd pas la pèrmission de changiér les pâges de lâèspâço de noms « $1 ».",
@@ -447,7 +448,7 @@
"nocookieslogin": "{{SITENAME}} emplèye de raportiors (cookies ) por lo branchement mas vos los éd dèsactivâs.\nSe vos plét, activâd-los et pués tornâd èprovar.",
"nocookiesfornew": "Lo comptio utilisator est pas étâ fêt, nos ens pas possu confirmar son origina.\nControlâd que vos éd activâ los raportiors (cookies ), rechargiéd la pâge et pués tornâd èprovar.",
"noname": "Vos éd pas spècifiâ un nom dâutilisator justo.",
- "loginsuccesstitle": "Branchiê(e)",
+ "loginsuccesstitle": "Branchiê",
"loginsuccess": "Ora vos éte branchiê{{GENDER:$1||e}} a {{SITENAME}} coment « $1 ». ",
"nosuchuser": "Y at gins dâutilisator avouéc lo nom « $1 ».\nLos noms dâutilisator sont sensiblos a la câssa.\nSe vos plét, controlâd lâortografia ou ben [[Special:UserLogin/signup|féte un comptio novél]].",
"nosuchusershort": "Y at gins dâutilisator avouéc lo nom « $1 ».\nSe vos plét, controlâd lâortografia.",
@@ -466,9 +467,9 @@
"noemail": "Nionâadrèce èlèctronica est étâye encartâye por lâutilisator « $1 ».",
"noemailcreate": "Vos dête balyér unâadrèce èlèctronica justa.",
"passwordsent": "Un contresegno novél est étâ mandâ a lâadrèce èlèctronica de lâutilisator « $1 ».\nSe vos plét, tornâd-vos branchiér aprés lâavêr reçu.",
- "blocked-mailpassword": "Voutron adrèce IP est blocâye en ècritura, la fonccion de sovegnence du contresegno est vêr dèsactivâye por èvitar los abus.",
+ "blocked-mailpassword": "Voutron adrèce IP est blocâye en ècritura. Por èvitar los abus, o est pas possiblo dâempleyér la sovegnence du contresegno dês celâadrèce IP.",
"eauthentsent": "Un mèssâjo de confirmacion est étâ mandâ a lâadrèce èlèctronica spècifiâye.\nDevant quâun ôtro mèssâjo seye mandâ a cél comptio, vos devréd siuvre les enstruccions du mèssâjo et pués confirmar que lo comptio est franc lo voutro.",
- "throttled-mailpassword": "Un mèssâjo de remêsâa zérô de voutron contresegno est ja étâ mandâ pendent {{PLURAL:$1|lâhora passâye|les $1 hores passâyes}}.\nPor èvitar los abus, ren que yon serat mandâ per {{PLURAL:$1|hora|entèrvalo de $1 hores}}.",
+ "throttled-mailpassword": "Un mèssâjo de remêsâa zérô de voutron contresegno est ja étâ mandâ pendent {{PLURAL:$1|lâhora passâye|les $1 hores passâyes}}.\nPor èvitar los abus, mas que yon serat mandâ per {{PLURAL:$1|hora|entèrvalo de $1 hores}}.",
"mailerror": "Fôta pendent lâèxpèdicion du mèssâjo : $1",
"acct_creation_throttle_hit": "Des vesitors de cél vouiqui quâemplèyont voutron adrèce IP ant fêt $1 comptio{{PLURAL:$1||s}} pendent lo jorn passâ, cen quâest lo més ôtorisâ dens ceti temps.\nDu côp los vesitors quâemplèyont celâadrèce IP pôvont fâre gins de comptio por lo moment.",
"emailauthenticated": "Voutron adrèce èlèctronica est étâye confirmâye lo $2 a $3.",
@@ -601,7 +602,7 @@
"image_sample": "Ãgzemplo.jpg",
"image_tip": "Fichiér apondu",
"media_sample": "Ãgzemplo.ogg",
- "media_tip": "Lim de vers un fichiér multimèdiâ",
+ "media_tip": "Lim de vers un fichiér",
"sig_tip": "Voutra signatura avouéc lâhorodatâjo",
"hr_tip": "Legne plana (pas nen abusar)",
"summary": "Rèsumâ :",
@@ -659,7 +660,7 @@
"previewconflict": "Cél apèrçu fât vêre lo tèxto de la zona de changement de dâamont coment aparêtrat se vos chouèsésséd de lâencartar.",
"session_fail_preview": "Dèsolâ ! Nos povens pas encartar voutron changement a côsa dâuna pèrda dâenformacions sur voutra sèssion.\n\nPôt-étre vos éte étâ dèbranchiê. Se vos plét, controlâd que vos éte adés branchiê et pués tornâd èprovar. \nSe cen tôrne pas reussir, èprovâd de vos [[Special:UserLogout|dèbranchiér]] et pués de vos tornar branchiér, et controlâd que voutron navegator accèpte los raportiors (cookies ) de cél seto.",
"session_fail_preview_html": "Dèsolâ ! Nos povens pas encartar voutron changement a côsa dâuna pèrda dâenformacions sur voutra sèssion.\n\nPerce que {{SITENAME}} at activâ lâHTML bruto, lâapèrçu est étâ cachiê por prèvegnir les ataques per JavaScript. \n\nSe lâèprôva de changement est lèg·itima, se vos plét tornâd èprovar. \nSe cen tôrne pas reussir, èprovâd de vos [[Special:UserLogout|dèbranchiér]] et pués de vos tornar branchiér, et controlâd que voutron navegator accèpte los raportiors (cookies ) de cél seto.",
- "token_suffix_mismatch": "Voutron changement est pas étâ accèptâ, voutron cliant at mècllâ los caractèros de ponctuacion dedens lo jeton de changement. \nLo changement est étâ refusâ por empachiér la corrupcion du tèxto de la pâge.\nDes côps cél problèmo arreve quand vos empleyéd un sèrviço de sèrvior mandatèro (proxy ) Vouèbe anonimo quâest pas de sûr.",
+ "token_suffix_mismatch": "Voutron changement est pas étâ accèptâ, voutron cliant at mècllo los caractèros de ponctuacion dedens lo jeton de changement. \nLo changement est étâ refusâ por empachiér la corrupcion du tèxto de la pâge.\nDes côps cél problèmo arreve quand vos empleyéd un sèrviço de sèrvior mandatèro (proxy ) Vouèbe anonimo quâest pas de sûr.",
"edit_form_incomplete": "Doux-três parties du formulèro de changement ant pas avengiê lo sèrvior ; controlâd que voutros changements sont entactos et pués tornâd èprovar. ",
"editing": "Changement de $1",
"creating": "Crèacion de $1",
@@ -675,7 +676,7 @@
"copyrightwarning": "Se vos plét, notâd que totes les contribucions a {{SITENAME}} sont considèrâyes coment publeyêes desot los tèrmos de la $2 (vêde $1 por més de dètalys).\nSe vos voléd pas que voutros ècrits seyont changiês sen pediêt et pués redistribuâs a volontât, adonc mandâd-los pas ique. \nVos nos assurâd asse-ben que vos éd cen ècrit vos-mémo ou ben que vos lâéd copiyê dâuna sôrsa que vint du domêno publico ou dâunâôtra ressôrsa libra.\nEmpleyéd gins dâôvra desot drêt dâôtor sen pèrmission èxprèssa ! ",
"copyrightwarning2": "Se vos plét, notâd que totes les contribucions a {{SITENAME}} pôvont étre changiêes enlevâyes per dâôtros contributors.\nSe vos voléd pas que voutros ècrits seyont changiês sen pediêt, adonc mandâd-los pas ique. \nVos nos assurâd asse-ben que vos éd cen ècrit vos-mémo ou ben que vos lâéd copiyê dâuna sôrsa que vint du domêno publico ou dâunâôtra ressôrsa libra (vêde $1 por més de dètalys).\nEmpleyéd gins dâôvra desot drêt dâôtor sen pèrmission èxprèssa ! ",
"editpage-cannot-use-custom-model": "Lo modèlo de contegnu de cela pâge pôt pas étre changiê.",
- "longpageerror": "Fôta : lo tèxto que vos éd mandâ fât {{PLURAL:$1|un Kio|$1 Kio}}, cen que dèpâsse la limita fixâye a {{PLURAL:$2|un Kio|$2 Kio}}. \nPôt pas étre encartâ.",
+ "longpageerror": "Fôta : lo tèxto que vos éd mandâ fât {{PLURAL:$1|un Kio|$1 Kio}}, cen que dèpâsse la limita fixa a {{PLURAL:$2|un Kio|$2 Kio}}. \nPôt pas étre encartâ.",
"readonlywarning": "Atencion : la bâsa de balyês est étâye cotâye por na rotina dâentretin, cen fât que vos porréd vêr pas encartar voutros changements orendrêt. \nVos pouede copiyér et côlar voutron tèxto dedens un fichiér tèxto et pués lâencartar por ples târd.\n\nLâadministrator sistèmo que lâat cotâ at balyê celâèxplicacion : $1",
"protectedpagewarning": "Atencion : cela pâge est étâye protègiêe por que solament los utilisators quâant los drêts dâadministrator la pouessont changiér. \nLa dèrriére entrâ du jornâl est balyêe ce-desot coment rèference :",
"semiprotectedpagewarning": "Nota : cela pâge est étâye protègiêe por que solament los utilisators encartâs la pouessont changiér.\nLa dèrriére entrâ du jornâl est balyêe ce-desot coment rèference :",
@@ -1106,7 +1107,7 @@
"right-upload": "Tèlèchargiér de fichiérs",
"right-reupload": "Ãcllafar un fichiér ègzistent",
"right-reupload-own": "Ãcllafar un fichiér ègzistent tèlèchargiê per sè-mémo",
- "right-reupload-shared": "Ãcllafar localament un fichiér present sur un dèpôt de fichiérs multimèdiâ partagiê",
+ "right-reupload-shared": "Ãcllafar localament un fichiér present sur un dèpôt mèdiâ partagiê",
"right-upload_by_url": "Tèlèchargiér un fichiér dês unâURL",
"right-purge": "Purgiér lo cacho du seto dâuna pâge sen confirmacion",
"right-autoconfirmed": "Pas étre afèctâ per les limitacions de dèbit liyêes a les adrèces IP",
@@ -1134,7 +1135,7 @@
"right-editprotected": "Changiér les pâges protègiêes avouéc « {{int:protect-level-sysop}} »",
"right-editsemiprotected": "Changiér les pâges protègiêes avouéc « {{int:protect-level-autoconfirmed}} »",
"right-editcontentmodel": "Changiér lo modèlo de contegnu dâuna pâge",
- "right-editinterface": "Changiér lâentèrface utilisator",
+ "right-editinterface": "Changiér lâentredoux utilisator",
"right-editusercssjs": "Changiér los fichiérs CSS et JavaScript dâôtros utilisators",
"right-editusercss": "Changiér los fichiérs CSS dâôtros utilisators",
"right-edituserjs": "Changiér los fichiérs JavaScript dâôtros utilisators",
@@ -1166,7 +1167,7 @@
"right-changetags": "Apondre et enlevar de façon arbitrèra de [[Special:Tags|balises]] sur des vèrsions endividuèles et des entrês de jornâl",
"grant-generic": "Ensemblo de drêts « $1 »",
"grant-group-page-interaction": "Entèrag·ir avouéc de pâges",
- "grant-group-file-interaction": "Entèrag·ir avouéc de fichiérs multimèdiâ",
+ "grant-group-file-interaction": "Entèrag·ir avouéc de mèdiâs",
"grant-group-watchlist-interaction": "Entèrag·ir avouéc voutra lista de gouârda",
"grant-group-email": "Mandar un mèssâjo",
"grant-group-high-volume": "Fâre unâactivitât de grôs volumo",
@@ -1307,18 +1308,18 @@
"recentchangeslinked-page": "Nom de la pâge :",
"recentchangeslinked-to": "Montrar per contre los changements de les pâges quâant un lim de vers la pâge balyêe",
"recentchanges-page-added-to-category": "[[:$1]] apondua a la catègoria",
- "recentchanges-page-added-to-category-bundled": "[[:$1]] et {{PLURAL:$2|na pâge apondua|$2 pâges apondues}} a la catègoria",
+ "recentchanges-page-added-to-category-bundled": "[[:$1]] apondua a la catègoria, [[Special:WhatLinksHere/$1|cela pâge est rapondua dedens dâôtres]]",
"recentchanges-page-removed-from-category": "[[:$1]] enlevâye de la catègoria",
- "recentchanges-page-removed-from-category-bundled": "[[:$1]] et {{PLURAL:$2|na pâge enlevâye|$2 pâges enlevâyes}} de la catègoria",
+ "recentchanges-page-removed-from-category-bundled": "[[:$1]] enlevâye de la catègoria, [[Special:WhatLinksHere/$1|cela pâge est rapondua dedens dâôtres]]",
"autochange-username": "Changement ôtomatico de MediaWiki",
"upload": "Tèlèchargiér un fichiér",
"uploadbtn": "Tèlèchargiér lo fichiér",
"reuploaddesc": "Anular lo tèlèchargement et pués tornar u formulèro de tèlèchargement",
"upload-tryagain": "Mandar la dèscripcion du fichiér changiê",
- "uploadnologin": "Pas branchiê(ye)",
+ "uploadnologin": "Pas branchiê",
"uploadnologintext": "Se vos plét, vos vos dête $1 por povêr tèlèchargiér de fichiérs.",
"upload_directory_missing": "Lo rèpèrtouèro de tèlèchargement ($1) est entrovâblo et at pas possu étre fêt per lo sèrvior Vouèbe.",
- "upload_directory_read_only": "Lo rèpèrtouèro de tèlèchargement ($1) est pas enscriptiblo dês lo sèrvior Vouèbe.",
+ "upload_directory_read_only": "Lo rèpèrtouèro de tèlèchargement ($1) est pas enscriptiblo per lo sèrvior Vouèbe.",
"uploaderror": "Fôta pendent lo tèlèchargement",
"upload-recreate-warning": "Atencion : un fichiér avouéc cél nom est étâ suprimâ dèplaciê. \n\nLo jornâl de les suprèssions et des dèplacements de cela pâge est balyê ique por comoditât :",
"uploadtext": "Empleyéd lo formulèro ce-desot por tèlèchargiér de fichiérs.\nPor vêre rechèrchiér de fichiérs tèlèchargiês dês devant, vêde la [[Special:FileList|lista des fichiérs tèlèchargiês]]. Los (re-)tèlèchargements sont asse-ben encartâs dessus lo [[Special:Log/upload|jornâl des tèlèchargements]], et les suprèssions dessus lo [[Special:Log/delete|jornâl de les suprèssions]].\n\nPor rapondre un fichiér dedens na pâge, empleyéd un lim de yona de celes fôrmes-que :\n* [[ {{ns:file}}:Fichiér.jpg]]
por empleyér la vèrsion en plêna largior du fichiér\n* [[ {{ns:file}}:Fichiér.png|200px|thumb|left|tèxto dèscriptif]]
por empleyér na miniatura de 200 pixèls de lârjo dedens na bouètâa gôche avouéc « tèxto dèscriptif » coment dèscripcion\n* [[ {{ns:media}}:Fichiér.ogg]]
por liyér tot drêt vers lo fichiér sen lo fâre vêre",
@@ -1387,8 +1388,8 @@
"uploaded-animate-svg": "La balisa « animate » est étâye trovâye que porrêt changiér lo href en empleyent lâatribut « from » <$1 $2=\"$3\">
dedens lo fichiér SVG tèlèchargiê.",
"uploaded-setting-event-handler-svg": "La dèfinicion dâatributs de maneyor dâèvènement est dèfendua, <$1 $2=\"$3\">
est étâ trovâ dedens lo fichiér SVG tèlèchargiê.",
"uploaded-setting-href-svg": "Lâusâjo de la balisa « set » por apondre un atribut « href » a la piéce parenta est dèfendu.",
- "uploaded-wrong-setting-svg": "Lâusâjo de la balisa « set » por apondre na ciba distanta/balyês/scripte a un atribut quint que seye est dèfendu. <set to=\"$1\">
est étâ trovâ dedens lo fichiér SVG tèlèchargiê.",
- "uploaded-setting-handler-svg": "Los SVG que dèfenéssont lâatribut « handler » avouéc distant/balyês/scripte sont dèfendus. $1=\"$2\"
est étâ trovâ dedens lo fichiér SVG tèlèchargiê.",
+ "uploaded-wrong-setting-svg": "Lâusâjo de la balisa « set » por apondre na ciba distanta / balyês / scripte a un atribut quint que seye est dèfendu. <set to=\"$1\">
est étâ trovâ dedens lo fichiér SVG tèlèchargiê.",
+ "uploaded-setting-handler-svg": "Los SVG que dèfenéssont lâatribut « handler » avouéc distant / balyês / scripte sont dèfendus. $1=\"$2\"
est étâ trovâ dedens lo fichiér SVG tèlèchargiê.",
"uploaded-remote-url-svg": "Los SVG que dèfenéssont un atribut de stilo quint que seye avouéc unâURL distanta sont dèfendus. $1=\"$2\"
est étâ trovâ dedens lo fichiér SVG tèlèchargiê.",
"uploaded-image-filter-svg": "Un filtro dâémâge avouéc URL est étâ trovâ : <$1 $2=\"$3\">
dedens lo fichiér SVG tèlèchargiê.",
"uploadscriptednamespace": "Cél fichiér SVG contint un èspâço de noms « $1 » pas ôtorisâ.",
@@ -1489,6 +1490,7 @@
"uploadstash-badtoken": "Lâègzécucion de celâaccion at pas reussi. Pôt-étre perce que voutros identifients de changement ant èxpirâ. Se vos plét, tornâd èprovar.",
"uploadstash-errclear": "La vouegiê des fichiérs at pas reussi.",
"uploadstash-refresh": "Rafrèchir la lista des fichiérs",
+ "uploadstash-thumbnail": "vêre la miniatura",
"invalid-chunk-offset": "Dèplacement de bocon pas justo",
"img-auth-accessdenied": "Accès refusâ",
"img-auth-nopathinfo": "PATH_INFO entrovâblo.\nVoutron sèrvior est pas configurâ por passar celâenformacion.\nPôt-étre que fonccione en CGI et recognêt vêr pas img_auth.\nVêde https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Image_Authorization.",
@@ -1520,7 +1522,7 @@
"upload_source_file": "(lo fichiér que vos éd chouèsi dês voutron ordenator)",
"listfiles-delete": "suprimar",
"listfiles-summary": "Cela pâge spèciâla montre tôs los fichiérs tèlèchargiês.",
- "listfiles_search_for": "Rechèrchiér un nom de fichiér multimèdiâ :",
+ "listfiles_search_for": "Rechèrchiér un nom de mèdiâ :",
"listfiles-userdoesnotexist": "Lo comptio utilisator « $1 » est pas encartâ.",
"imgfile": "fichiér",
"listfiles": "Lista de fichiérs",
@@ -1709,7 +1711,7 @@
"protectedpages-unknown-timestamp": "Encognua",
"protectedpages-unknown-performer": "Utilisator encognu",
"protectedtitles": "Titros protègiês",
- "protectedtitles-summary": "Cela pâge liste los titros que sont ora protègiês contre la crèacion. Por na lista de les pâges ègzistentes protègiêes, vêde [[{{#special:ProtectedPages}}|{{int:protectedpages}}]].",
+ "protectedtitles-summary": "Cela pâge liste los titros que sont ora protègiês contre la crèacion. Por na lista de les pâges ègzistentes que sont protègiêes, vêde [[{{#special:ProtectedPages}}|{{int:protectedpages}}]].",
"protectedtitlesempty": "Ora nion titro est protègiê avouéc celos paramètros.",
"protectedtitles-submit": "Fâre vêre los titros",
"listusers": "Lista des utilisators",
@@ -1807,10 +1809,8 @@
"cachedspecial-refresh-now": "Vêre la ples novèla.",
"categories": "Catègories",
"categories-submit": "Montrar",
- "categoriespagetext": "{{PLURAL:$1|Cela catègoria-que contint|Celes catègories-que contegnont}} de pâges de fichiérs multimèdiâ.\nLes [[Special:UnusedCategories|catègories pas empleyêes]] sont pas montrâyes ique.\nVêde avouéc les [[Special:WantedCategories|catègories demandâyes]].",
+ "categoriespagetext": "{{PLURAL:$1|Cela catègoria-que contint|Celes catègories-que contegnont}} de pâges de mèdiâs.\nLes [[Special:UnusedCategories|catègories pas empleyêes]] sont pas montrâyes ique.\nVêde avouéc les [[Special:WantedCategories|catègories demandâyes]].",
"categoriesfrom": "Fâre vêre les catègories dês :",
- "special-categories-sort-count": "chouèx per comptâjo",
- "special-categories-sort-abc": "chouèx alfabètico",
"deletedcontributions": "Contribucions suprimâyes",
"deletedcontributions-title": "Contribucions suprimâyes",
"sp-deletedcontributions-contribs": "contribucions",
@@ -2188,6 +2188,7 @@
"ipb-unblock": "Dèblocar un nom dâutilisator unâadrèce IP",
"ipb-blocklist": "Vêre los blocâjos ègzistents",
"ipb-blocklist-contribs": "Contribucions por {{GENDER:$1|$1}}",
+ "ipb-blocklist-duration-left": "$1 que réstont",
"unblockip": "Dèblocar un utilisator",
"unblockiptext": "Empleyéd lo formulèro ce-desot por rètablir lâaccès en ècritura dês unâadrèce IP blocâye un nom dâutilisator blocâ los côps devant.",
"ipusubmit": "Enlevar cél blocâjo",
@@ -2263,7 +2264,7 @@
"ipbnounblockself": "Vos éte pas ôtorisâ{{GENDER:||ye}} a vos dèblocar vos-mém{{GENDER:|o|a}}.",
"lockdb": "Cotar la bâsa de balyês",
"unlockdb": "Dècotar la bâsa de balyês",
- "lockdbtext": "Lo vèrroly de la bâsa de balyês empachierat tôs los utilisators de changiér de pâges, dâencartar lors prèferences, de changiér lor lista de gouârda et pués de fâre totes les ôtres opèracions quâant fôta de changements dedens la bâsa de balyês.\nSe vos plét, confirmâd quâo est franc cen que vos voléd fâre et que vos la dècoteréd setout que voutra rotina dâentretin serat chavonâye.",
+ "lockdbtext": "Lo vèrroly de la bâsa de balyês empachierat tôs los utilisators de changiér de pâges, dâencartar lors prèferences, de changiér lor lista de gouârda et pués de fâre totes les ôtres opèracions quâant fôta de changements dedens la bâsa de balyês.\nSe vos plét, confirmâd quâo est franc cen que vos voléd fâre et que vos la dècoteréd setout que voutra rotina dâentretin serat chavona.",
"unlockdbtext": "La fin du vèrroly de la bâsa de balyês tornerat pèrmetre a tôs los utilisators de changiér de pâges, dâencartar lors prèferences, de changiér lor lista de gouârda et pués de fâre totes les ôtres opèracions quâant fôta de changements dedens la bâsa de balyês.\nSe vos plét, confirmâd quâo est franc cen que vos voléd fâre.",
"lockconfirm": "Ouè, confirmo que vuel cotar la bâsa de balyês.",
"unlockconfirm": "Ouè, confirmo que vuel dècotar la bâsa de balyês.",
@@ -2272,9 +2273,9 @@
"locknoconfirm": "Vos éd pas pouentâ la câsa de confirmacion.",
"lockdbsuccesssub": "Vèrroly de la bâsa de balyês reussi",
"unlockdbsuccesssub": "Vèrroly de la bâsa de balyês enlevâ",
- "lockdbsuccesstext": "La bâsa de balyês est étâye cotâye. \nOubliâd pas de la [[Special:UnlockDB|dècotar]] quand vos aréd chavonâ voutra rotina dâentretin.",
+ "lockdbsuccesstext": "La bâsa de balyês est étâye cotâye. \nOubliâd pas de la [[Special:UnlockDB|dècotar]] quand vos aréd chavono voutra rotina dâentretin.",
"unlockdbsuccesstext": "La bâsa de balyês est étâye dècotâye.",
- "lockfilenotwritable": "Lo fichiér de vèrroly de la bâsa de balyês est pas enscriptiblo.\nPor cotar dècotar la bâsa de balyês, dêt étre enscriptiblo dês lo sèrvior Vouèbe.",
+ "lockfilenotwritable": "Lo fichiér de vèrroly de la bâsa de balyês est pas enscriptiblo.\nPor cotar dècotar la bâsa de balyês, dêt étre enscriptiblo per lo sèrvior Vouèbe.",
"databasenotlocked": "La bâsa de balyês est pas cotâye.",
"lockedbyandtime": "(per {{GENDER:$1|$1}} lo $2 a $3)",
"move-page": "Dèplaciér $1",
@@ -2284,7 +2285,7 @@
"movepagetalktext": "Se vos pouentâd cela câsa, la pâge de discussion associyêe serat asse-ben dèplaciêe ôtomaticament, a muens quâuna pâge de discussion pas voueda ègzisteye ja desot lo novél nom.\n\nDens cél câs, vos devréd dèplaciér fusionar la pâge a la man se vos o voléd.",
"moveuserpage-warning": "Atencion : vos éte prèst a dèplaciér na pâge utilisator. Se vos plét, notâd que solament la pâge serat dèplaciêe et que lâutilisator serat pas renomâ.",
"movecategorypage-warning": "Atencion : vos éte prèst a dèplaciér na pâge de catègoria. Se vos plét, notâd que solament la pâge serat dèplaciêe et que pas yona de les pâges de la vielye catègoria serat betâye dedens la novèla.",
- "movenologintext": "Vos dête étre un utilisator encartâ et [[Special:UserLogin|branchiê]] por povêr dèplaciér na pâge.",
+ "movenologintext": "Vos dête étre un utilisator encartâ et pués étre [[Special:UserLogin|branchiê]] por povêr dèplaciér na pâge.",
"movenotallowed": "Vos éd pas la pèrmission de dèplaciér de pâges.",
"movenotallowedfile": "Vos éd pas la pèrmission de dèplaciér de fichiérs.",
"cant-move-user-page": "Vos éd pas la pèrmission de dèplaciér de pâges utilisator (en defôr de sot-pâges).",
@@ -2429,11 +2430,7 @@
"import-logentry-upload-detail": "$1 {{PLURAL:$1|vèrsion importâye|vèrsions importâyes}}",
"import-logentry-interwiki-detail": "$1 {{PLURAL:$1|vèrsion importâye|vèrsions importâyes}} dês $2",
"javascripttest": "Ãprôva de JavaScript",
- "javascripttest-pagetext-noframework": "Cela pâge est resèrvâye por lâègzécucion de les èprôves de JavaScript.",
- "javascripttest-pagetext-unknownframework": "Câdro dâèprôva « $1 » encognu.",
"javascripttest-pagetext-unknownaction": "Accion « $1 » encognua.",
- "javascripttest-pagetext-frameworks": "Se vos plét, chouèsésséd yon de celos câdros dâèprôva-que : $1",
- "javascripttest-pagetext-skins": "Chouèsésséd un habelyâjo por emmodar les èprôves :",
"javascripttest-qunit-intro": "Vêde la [$1 documentacion de les èprôves] dessus mediawiki.org.",
"tooltip-pt-userpage": "{{GENDER:|Voutra}} pâge utilisator",
"tooltip-pt-anonuserpage": "La pâge utilisator por lâadrèce IP que vos empleyéd",
@@ -2482,7 +2479,7 @@
"tooltip-t-permalink": "Lim fixo de vers cela vèrsion de la pâge",
"tooltip-ca-nstab-main": "Vêre la pâge de contegnu",
"tooltip-ca-nstab-user": "Vêre la pâge utilisator",
- "tooltip-ca-nstab-media": "Vêre la pâge du fichiér multimèdiâ",
+ "tooltip-ca-nstab-media": "Vêre la pâge mèdiâ",
"tooltip-ca-nstab-special": "O est na pâge spèciâla que pôt pas étre changiêe",
"tooltip-ca-nstab-project": "Vêre la pâge projèt",
"tooltip-ca-nstab-image": "Vêre la pâge du fichiér",
@@ -2596,27 +2593,30 @@
"patrol-log-page": "Jornâl de gouârda",
"patrol-log-header": "Vê-que un jornâl de les vèrsions gouardâyes.",
"log-show-hide-patrol": "$1 lo jornâl de gouârda",
- "deletedrevision": "La vielye vèrsion $1 at étâ suprimâ.",
- "filedeleteerror-short": "Ãrror pendent la suprèssion du fichiér : $1",
- "filedeleteerror-long": "Des èrrors ont étâ rencontrâs pendent la suprèssion du fichiér :\n\n$1",
- "filedelete-missing": "Lo fichiér « $1 » pôt pas étre suprimâ perce quâègziste pas.",
- "filedelete-old-unregistered": "La vèrsion du fichiér spècefiâ « $1 » est pas dens la bâsa de balyês.",
- "filedelete-current-unregistered": "Lo fichiér spècefiâ « $1 » est pas dens la bâsa de balyês.",
- "filedelete-archive-read-only": "Lo dossiér dâarch·ivâjo « $1 » pôt pas étre changiê per lo sèrvor.",
+ "log-show-hide-tag": "$1 lo jornâl de les balises",
+ "deletedrevision": "Vielye vèrsion $1 suprimâye",
+ "filedeleteerror-short": "Fôta pendent la suprèssion du fichiér : $1",
+ "filedeleteerror-long": "Des fôtes sont étâyes rencontrâyes pendent la suprèssion du fichiér :\n\n$1",
+ "filedelete-missing": "Lo fichiér « $1 » pôt pas étre suprimâ, ègziste pas.",
+ "filedelete-old-unregistered": "La vèrsion du fichiér spècifiâye « $1 » est pas dedens la bâsa de balyês.",
+ "filedelete-current-unregistered": "Lo fichiér spècifiâ « $1 » est pas dedens la bâsa de balyês.",
+ "filedelete-archive-read-only": "Lo rèpèrtouèro dâarch·ivâjo « $1 » est pas enscriptiblo per lo sèrvior Vouèbe.",
"previousdiff": "â Changement devant",
"nextdiff": "Changement aprés â",
- "mediawarning": "'''Atencion :''' ceti tipo de fichiér pôt contegnir de code mâlvelyent.\nSe vos lâègzécutâd, voutron sistèmo pôt étre compromês.",
- "imagemaxsize": "Format lo ples grant de les émâges : ''(por les pâges de dèscripcion dâémâges)''",
- "thumbsize": "Talye de la figura :",
+ "mediawarning": "Atencion : cél tipo de fichiér pôt contegnir de code mâlvelyent.\nSe vos lâègzécutâd, voutron sistèmo pôt étre compromètu.",
+ "imagemaxsize": "Talye maximon de les émâges :(por les pâges de dèscripcion de fichiérs) ",
+ "thumbsize": "Talye de la miniatura :",
"widthheightpage": "$1 à $2, $3 pâge{{PLURAL:$3||s}}",
"file-info": "Talye du fichiér : $1, tipo MIME : $2",
"file-info-size": "$1 à $2 pixèls, talye du fichiér : $3, tipo MIME : $4",
"file-info-size-pages": "$1 à $2 pixèls, talye du fichiér : $3, tipo MIME : $4, $5 pâge{{PLURAL:$5||s}}",
- "file-nohires": "Gins de rèsolucion ples hôta disponibla.",
- "svg-long-desc": "Fichiér SVG, rèsolucion de $1 à $2 pixèls, talye : $3",
- "svg-long-error": "Fichiér SVG envalido : $1",
+ "file-nohires": "Niona rèsolucion ples hôta disponibla.",
+ "svg-long-desc": "Fichiér SVG, nominalament $1 à $2 pixèls, talye du fichiér : $3",
+ "svg-long-desc-animated": "Fichiér SVG animâ, nominalament $1 à $2 pixèls, talye du fichiér : $3",
+ "svg-long-error": "Fichiér SVG pas justo : $1",
"show-big-image": "Fichiér dâorigina",
- "show-big-image-preview": "Talye de ceti apèrçu : $1.",
+ "show-big-image-preview": "Talye de cél apèrçu : $1.",
+ "show-big-image-preview-differ": "Talye de cél apèrçu $3 du fichiér $2 : $1.",
"show-big-image-other": "{{PLURAL:$2|Ãtra rèsolucion|Ãtres rèsolucions}} : $1.",
"show-big-image-size": "$1 à $2 pixèls",
"file-info-gif-looped": "en boclla",
@@ -2624,12 +2624,16 @@
"file-info-png-looped": "en boclla",
"file-info-png-repeat": "jouyê $1 côp{{PLURAL:$1||s}}",
"file-info-png-frames": "$1 émâge{{PLURAL:$1||s}}",
- "newimages": "Galerie des novéls fichiérs",
- "imagelisttext": "Vê-que una lista de '''$1''' {{PLURAL:$1|fichiér rengiê|fichiérs rengiês}} $2.",
- "newimages-summary": "Ceta pâge spèciâla montre los dèrriérs fichiérs tèlèchargiês.",
- "newimages-legend": "Nom du fichiér",
- "newimages-label": "Nom du fichiér (ou ben una partia de ceti) :",
- "noimages": "Gins de fichiér a fâre vêre.",
+ "file-no-thumb-animation": "Nota : a côsa de limitacions tècniques, les miniatures de cél fichiér seront pas animâyes. ",
+ "file-no-thumb-animation-gif": "Nota : a côsa de limitacions tècniques, les miniatures dâémâges GIF en hôta rèsolucion coment ceta seront pas animâyes. ",
+ "newimages": "Galeria des novéls fichiérs",
+ "imagelisttext": "Vê-que na lista de $1 {{PLURAL:$1|fichiér rengiê|fichiérs rengiês}} $2.",
+ "newimages-summary": "Cela pâge spèciâla montre los dèrriérs fichiérs tèlèchargiês.",
+ "newimages-legend": "Filtro",
+ "newimages-label": "Nom du fichiér (ou ben na partia de ceti) :",
+ "newimages-showbots": "Montrar los tèlèchargements per los robots",
+ "newimages-hidepatrolled": "Cachiér los tèlèchargements gouardâs",
+ "noimages": "Ren a fâre vêre.",
"ilsubmit": "Rechèrchiér",
"bydate": "per dâta",
"sp-newimages-showfrom": "Montrar los novéls fichiérs dês lo $1 a $2",
@@ -2638,14 +2642,28 @@
"minutes": "$1 menut{{PLURAL:$1|a|es}}",
"hours": "$1 hor{{PLURAL:$1|a|es}}",
"days": "$1 jorn{{PLURAL:$1||s}}",
+ "weeks": "$1 seman{{PLURAL:$1|a|es}}",
+ "months": "{{PLURAL:$1|$1 mês}}",
+ "years": "$1 an{{PLURAL:$1||s}}",
"ago": "cen fât $1",
"just-now": "drêt-ora",
- "bad_image_list": "Lo format est ceti :\n\nSolament les listes dâènumèracion (que començont per *) sont considèrâs.\nLo premiér lim dâuna legne dêt étre vers celi dâuna crouye émâge.\nLos ôtros lims sur la méma legne sont considèrâs coment des èxcèpcions, per ègzemplo des pâges sur lesquintes lâémâge pôt aparêtre.",
+ "hours-ago": "cen fât $1 hor{{PLURAL:$1|a|es}}",
+ "minutes-ago": "cen fât $1 menut{{PLURAL:$1|a|es}}",
+ "seconds-ago": "cen fât $1 second{{PLURAL:$1|a|es}}",
+ "monday-at": "Delon a $1",
+ "tuesday-at": "Demârs a $1",
+ "wednesday-at": "Demécro a $1",
+ "thursday-at": "Dejô a $1",
+ "friday-at": "Devendro a $1",
+ "saturday-at": "Dessando a $1",
+ "sunday-at": "Demenge a $1",
+ "yesterday-at": "Hièr a $1",
+ "bad_image_list": "Lo format est ceti :\n\nSolament les piéces de lista (les legnes que començont per *) sont considèrâyes.\nLo premiér lim dâuna legne dêt étre celi dâun crouyo fichiér.\nLos ôtros lims sur la méma legne sont considèrâs coment dâèxcèpcions, per ègzemplo des pâges que lo fichiér pôt aparêtre dessus.",
"metadata": "Mètabalyês",
- "metadata-help": "Ceti fichiér contint des enformacions de ples, probâblament apondues per lâaparèly-fotô numerico ou ben lo scanor utilisâ por lo fâre.\nSe lo fichiér at étâ changiê dês son ètat originâl, quârques dètalys pôvont pas reflètar a chavon lâémâge changiê.",
- "metadata-expand": "Montrar los dètalys ètendus",
- "metadata-collapse": "Cachiér los dètalys ètendus",
- "metadata-fields": "Los champs de mètabalyês dâémâge listâs dens cél mèssâjo seront betâs dedens la pâge de dèscripcion de lâémâge quand la trâbla de mètabalyês serat rèduita.\nLos ôtros champs seront cachiês per dèfôt.\n* make\n* model\n* datetimeoriginal\n* exposuretime\n* fnumber\n* isospeedratings\n* focallength\n* artist\n* copyright\n* imagedescription\n* gpslatitude\n* gpslongitude\n* gpsaltitude",
+ "metadata-help": "Cél fichiér contint dâenformacions de més, probâblament apondues per lâaparèly-fotô numerico lo scanor empleyê por lo fâre numerisar.\nSe lo fichiér est étâ changiê dês son ètat originâl, quârques dètalys pôvont pas remandar a chavon lo fichiér changiê.",
+ "metadata-expand": "Montrar los dètalys de més",
+ "metadata-collapse": "Cachiér los dètalys de més",
+ "metadata-fields": "Los champs de mètabalyês dâémâge listâs dens cél mèssâjo seront rapondus dedens la pâge de dèscripcion de lâémâge quand la trâbla de mètabalyês serat rèduita.\nLos ôtros champs seront cachiês per dèfôt.\n* make\n* model\n* datetimeoriginal\n* exposuretime\n* fnumber\n* isospeedratings\n* focallength\n* artist\n* copyright\n* imagedescription\n* gpslatitude\n* gpslongitude\n* gpsaltitude",
"metadata-langitem": "'''$2 :''' $1",
"exif-imagewidth": "Largior",
"exif-imagelength": "Hôtior",
@@ -2656,207 +2674,208 @@
"exif-samplesperpixel": "Nombro de composentes",
"exif-planarconfiguration": "Arrengement de les balyês",
"exif-ycbcrsubsampling": "Quota de sot-èchantelyonâjo de Y a C",
- "exif-ycbcrpositioning": "Posicionement Y et C",
+ "exif-ycbcrpositioning": "Posicionament Y et C",
"exif-xresolution": "Rèsolucion plana",
"exif-yresolution": "Rèsolucion drêta",
- "exif-stripoffsets": "Emplacement de les balyês de lâémâge",
+ "exif-stripoffsets": "Endrêt de les balyês de lâémâge",
"exif-rowsperstrip": "Nombro de legnes per benda",
- "exif-stripbytecounts": "Talye en octèts per benda",
+ "exif-stripbytecounts": "Octèts per benda comprimâye",
"exif-jpeginterchangeformat": "Posicion du SOI JPEG",
- "exif-jpeginterchangeformatlength": "Talye en octèts de les balyês JPEG",
+ "exif-jpeginterchangeformatlength": "Octèts de les balyês JPEG",
"exif-whitepoint": "Cromaticitât du pouent blanc",
"exif-primarychromaticities": "Cromaticitât de les colors primères",
"exif-ycbcrcoefficients": "Factors de la matrice de transformacion de lâèspâço colorimètrico",
- "exif-referenceblackwhite": "Valors de refèrence nêr et blanc",
+ "exif-referenceblackwhite": "Cobla de valors de rèference nêr et blanc",
"exif-datetime": "Dâta et hora de changement du fichiér",
"exif-imagedescription": "Titro de lâémâge",
"exif-make": "Fabrecant de lâaparèly-fotô",
"exif-model": "Modèlo de lâaparèly-fotô",
- "exif-software": "Programeria utilisâ",
+ "exif-software": "Programeria empleyêe",
"exif-artist": "Ãtor",
- "exif-copyright": "Dètentor du drêt dâôtor",
+ "exif-copyright": "Dètentior des drêts dâôtor",
"exif-exifversion": "Vèrsion Exif",
- "exif-flashpixversion": "Vèrsion FlashPix recognua",
+ "exif-flashpixversion": "Vèrsion Flashpix recognua",
"exif-colorspace": "Ãspâço colorimètrico",
"exif-componentsconfiguration": "Significacion de châque composenta",
"exif-compressedbitsperpixel": "Fôrma de comprèssion de lâémâge",
- "exif-pixelydimension": "Largior de lâémâge",
- "exif-pixelxdimension": "Hôtior de lâémâge",
- "exif-usercomment": "Comentèros a lâusanciér",
+ "exif-pixelxdimension": "Largior de lâémâge",
+ "exif-pixelydimension": "Hôtior de lâémâge",
+ "exif-usercomment": "Comentèros de lâutilisator",
"exif-relatedsoundfile": "Fichiér ôdiô associyê",
- "exif-datetimeoriginal": "Dâta et hora de la g·ènèracion de les balyês",
+ "exif-datetimeoriginal": "Dâta et hora de la prêsa originâla",
"exif-datetimedigitized": "Dâta et hora de la numerisacion",
- "exif-subsectime": "Dâta et hora en fraccions de secondes de changement du fichiér",
- "exif-subsectimeoriginal": "Dâta et hora en fraccions de secondes de la g·ènèracion de les balyês",
- "exif-subsectimedigitized": "Dâta et hora en fraccions de secondes de la numerisacion",
+ "exif-subsectime": "Dâta et hora en fraccions de seconda",
+ "exif-subsectimeoriginal": "Dâta et hora de la prêsa originâla en fraccions de seconda",
+ "exif-subsectimedigitized": "Dâta et hora de la numerisacion en fraccions de seconda",
"exif-exposuretime": "Temps dâèxposicion",
- "exif-exposuretime-format": "$1 s ($2)",
- "exif-fnumber": "Nombro f",
+ "exif-exposuretime-format": "$1 s ($2 s)",
+ "exif-fnumber": "Uvèrtura",
"exif-exposureprogram": "Programo dâèxposicion",
"exif-spectralsensitivity": "Sensibilitât spèctrâla",
"exif-isospeedratings": "Sensibilitât ISO",
"exif-shutterspeedvalue": "Vitèsse dâètopâ de lâAPEX",
"exif-aperturevalue": "Uvèrtura de lâAPEX",
- "exif-brightnessvalue": "Luminance APEX",
- "exif-exposurebiasvalue": "Corrèccion dâèxposicion",
- "exif-maxaperturevalue": "Uvèrtura la ples granta",
- "exif-subjectdistance": "Distance du sujèt",
+ "exif-brightnessvalue": "Brilyent de lâAPEX",
+ "exif-exposurebiasvalue": "Corrèccion dâèxposicion de lâAPEX",
+ "exif-maxaperturevalue": "Uvèrtura maximon",
+ "exif-subjectdistance": "Distance de la chousa",
"exif-meteringmode": "Fôrma de mesera",
"exif-lightsource": "Sôrsa de lumiére",
"exif-flash": "Ãludo",
"exif-focallength": "Longior focâla",
- "exif-subjectarea": "Emplacement du sujèt",
- "exif-flashenergy": "Nèrf de lâèludo",
+ "exif-subjectarea": "Sôl de la chousa",
+ "exif-flashenergy": "Ãnèrg·ia de lâèludo",
"exif-focalplanexresolution": "Rèsolucion plana de la vision focâla",
"exif-focalplaneyresolution": "Rèsolucion drêta de la vision focâla",
"exif-focalplaneresolutionunit": "Unitât de rèsolucion de la vision focâla",
- "exif-subjectlocation": "Posicion du sujèt",
- "exif-exposureindex": "Endèxe dâèxposicion",
+ "exif-subjectlocation": "Endrêt de la chousa",
+ "exif-exposureindex": "Endèx dâèxposicion",
"exif-sensingmethod": "Tipo de captior",
"exif-filesource": "Sôrsa du fichiér",
"exif-scenetype": "Tipo de scèna",
"exif-customrendered": "Rendu dâémâge pèrsonalisâ",
"exif-exposuremode": "Fôrma dâèxposicion",
"exif-whitebalance": "Balance des blancs",
- "exif-digitalzoomratio": "Quota dâagrantissement numerico (''zoom'')",
- "exif-focallengthin35mmfilm": "Longior focâla por un filme 35 mm",
- "exif-scenecapturetype": "Tipo de prêsa de la scèna",
- "exif-gaincontrol": "Contrôlo de scèna",
- "exif-contrast": "Contraste",
+ "exif-digitalzoomratio": "Quota dâagrantissement numerico (zoom )",
+ "exif-focallengthin35mmfilm": "Longior focâla por un filmo 35 mm",
+ "exif-scenecapturetype": "Tipo de captura de la scèna",
+ "exif-gaincontrol": "Contrôlo de la scèna",
+ "exif-contrast": "Contrasto",
"exif-saturation": "Saturacion",
- "exif-sharpness": "Prècision",
+ "exif-sharpness": "Nètetât",
"exif-devicesettingdescription": "Dèscripcion de la configuracion du dispositif",
- "exif-subjectdistancerange": "Distance du sujèt",
- "exif-imageuniqueid": "Numerô solèt de lâémâge",
+ "exif-subjectdistancerange": "Ãchiéla de distance de la chousa",
+ "exif-imageuniqueid": "Identifient solèt de lâémâge",
"exif-gpsversionid": "Vèrsion de la balisa GPS",
- "exif-gpslatituderef": "Latituda bise (''nord'') ou mié-jorn (''sud'')",
+ "exif-gpslatituderef": "Latituda bise (nord ) ou ben mié-jorn (sud )",
"exif-gpslatitude": "Latituda",
- "exif-gpslongituderef": "Longituda levant (''èst'') ou ponant (''ouèst'')",
+ "exif-gpslongituderef": "Longituda levant (èste ) ou ben cuchient (ouèste )",
"exif-gpslongitude": "Longituda",
- "exif-gpsaltituderef": "Refèrence dâhôtior",
+ "exif-gpsaltituderef": "Rèference dâhôtior",
"exif-gpsaltitude": "Hôtior",
"exif-gpstimestamp": "Hora GPS (relojo atomico)",
- "exif-gpssatellites": "Satèlites utilisâs por la mesera",
+ "exif-gpssatellites": "Satèlitos empleyês por la mesera",
"exif-gpsstatus": "Ãtat du recevior",
"exif-gpsmeasuremode": "Fôrma de mesera",
"exif-gpsdop": "Prècision de la mesera",
- "exif-gpsspeedref": "Unitât de vitèsse du recevior GPS",
+ "exif-gpsspeedref": "Unitât de vitèsse",
"exif-gpsspeed": "Vitèsse du recevior GPS",
- "exif-gpstrackref": "Refèrence por la dirèccion du mouvement",
+ "exif-gpstrackref": "Rèference por la dirèccion du mouvement",
"exif-gpstrack": "Dirèccion du mouvement",
- "exif-gpsimgdirectionref": "Refèrence por la dirèccion de lâémâge",
+ "exif-gpsimgdirectionref": "Rèference por la dirèccion de lâémâge",
"exif-gpsimgdirection": "Dirèccion de lâémâge",
- "exif-gpsmapdatum": "Sistèmo g·eodèsico utilisâ",
- "exif-gpsdestlatituderef": "Refèrence por la latituda de la dèstinacion",
+ "exif-gpsmapdatum": "Balyês de sondâjo g·eodèsico empleyêes",
+ "exif-gpsdestlatituderef": "Rèference por la latituda de la dèstinacion",
"exif-gpsdestlatitude": "Latituda de la dèstinacion",
- "exif-gpsdestlongituderef": "Refèrence por la longituda de la dèstinacion",
+ "exif-gpsdestlongituderef": "Rèference por la longituda de la dèstinacion",
"exif-gpsdestlongitude": "Longituda de la dèstinacion",
- "exif-gpsdestbearingref": "Refèrence por lo relèvament de la dèstinacion",
+ "exif-gpsdestbearingref": "Rèference por lo relèvament de la dèstinacion",
"exif-gpsdestbearing": "Relèvament de la dèstinacion",
- "exif-gpsdestdistanceref": "Refèrence por la distance a la dèstinacion",
+ "exif-gpsdestdistanceref": "Rèference por la distance a la dèstinacion",
"exif-gpsdestdistance": "Distance a la dèstinacion",
- "exif-gpsprocessingmethod": "Nom du tipo de trètament du GPS",
- "exif-gpsareainformation": "Nom de la zona GPS",
+ "exif-gpsprocessingmethod": "Nom de la mètoda de trètament du GPS",
+ "exif-gpsareainformation": "Nom du sôl GPS",
"exif-gpsdatestamp": "Dâta GPS",
"exif-gpsdifferential": "Corrèccion difèrencièla GPS",
"exif-jpegfilecomment": "Comentèro de fichiér JPEG",
"exif-keywords": "Mots-cllâfs",
- "exif-worldregioncreated": "Règ·ion du mondo que la fotô at étâ prêsa",
- "exif-countrycreated": "Payis que la fotô at étâ prêsa",
- "exif-countrycodecreated": "Code du payis que la fotô at étâ prêsa",
- "exif-provinceorstatecreated": "Province ou ben ètat que la fotô at étâ prêsa",
- "exif-citycreated": "Vela que la fotô at étâ prêsa",
- "exif-sublocationcreated": "Partia de la vela que la fotô at étâ prêsa",
- "exif-worldregiondest": "Règ·ion du mondo montrâ",
+ "exif-worldregioncreated": "Règ·ion du mondo yô que la fotô est étâye prêsa",
+ "exif-countrycreated": "Payis yô que la fotô est étâye prêsa",
+ "exif-countrycodecreated": "Code du payis yô que la fotô est étâye prêsa",
+ "exif-provinceorstatecreated": "Province Ãtat yô que la fotô est étâye prêsa",
+ "exif-citycreated": "Vela yô que la fotô est étâye prêsa",
+ "exif-sublocationcreated": "Partia de la vela yô que la fotô est étâye prêsa",
+ "exif-worldregiondest": "Règ·ion du mondo montrâye",
"exif-countrydest": "Payis montrâ",
"exif-countrycodedest": "Code du payis montrâ",
- "exif-provinceorstatedest": "Province ou ben ètat montrâ",
- "exif-citydest": "Vela montrâ",
- "exif-sublocationdest": "Partia de la vela montrâ",
+ "exif-provinceorstatedest": "Province Ãtat montrâ(ye)",
+ "exif-citydest": "Vela montrâye",
+ "exif-sublocationdest": "Partia de la vela montrâye",
"exif-objectname": "Titro côrt",
"exif-specialinstructions": "Enstruccions spèciâles",
"exif-headline": "Titro",
"exif-credit": "Crèdit / fornissor",
"exif-source": "Sôrsa",
"exif-editstatus": "Statut èditoriâl de lâémâge",
- "exif-urgency": "Urgence",
- "exif-fixtureidentifier": "Nom de lâoutil",
+ "exif-urgency": "Prèssa",
+ "exif-fixtureidentifier": "Nom de la colona",
"exif-locationdest": "Endrêt fotografiâ",
"exif-locationdestcode": "Code de lâendrêt fotografiâ",
- "exif-objectcycle": "Moment de la jornâ que ceti mèdia est dèstinâ",
- "exif-contact": "Enformacions de contacte",
+ "exif-objectcycle": "Temps de la jornâ que cél mèdiâ y est dèstinâ",
+ "exif-contact": "Enformacions de contacto",
"exif-writer": "Ãtor",
"exif-languagecode": "Lengoua",
"exif-iimversion": "Vèrsion IIM",
- "exif-iimcategory": "Catègorie",
- "exif-iimsupplementalcategory": "Catègories de ples",
- "exif-datetimeexpires": "Pas utilisar aprés",
+ "exif-iimcategory": "Catègoria",
+ "exif-iimsupplementalcategory": "Catègories de més",
+ "exif-datetimeexpires": "Pas empleyér aprés",
"exif-datetimereleased": "Paru lo",
- "exif-originaltransmissionref": "Code de lâendrêt de la transmission originâla",
- "exif-identifier": "Numerô",
- "exif-lens": "Lentelye utilisâ",
+ "exif-originaltransmissionref": "Code dâendrêt de la transmission originâla",
+ "exif-identifier": "Identifient",
+ "exif-lens": "Lentelye empleyêe",
"exif-serialnumber": "Numerô de sèria de lâaparèly-fotô",
"exif-cameraownername": "Propriètèro de lâaparèly-fotô",
"exif-label": "Lambél",
"exif-datetimemetadata": "Dâta du dèrriér changement de les mètabalyês",
- "exif-nickname": "Nom enformèl de lâémâge",
+ "exif-nickname": "Nom famelyér de lâémâge",
"exif-rating": "Nota (sur 5)",
- "exif-rightscertificate": "Cèrtificat dâadministracion des drêts",
+ "exif-rightscertificate": "Cèrtificat de maneyance des drêts",
"exif-copyrighted": "Statut des drêts dâôtor",
- "exif-copyrightowner": "Propriètèro du drêt dâôtor",
+ "exif-copyrightowner": "Dètentior des drêts dâôtor",
"exif-usageterms": "Condicions dâusâjo",
- "exif-webstatement": "Dècllaracion des drêts dâôtor en legne",
- "exif-originaldocumentid": "Numerô solèt du document originâl",
- "exif-licenseurl": "URL de la licence",
+ "exif-webstatement": "Dècllaracion de drêts dâôtor en legne",
+ "exif-originaldocumentid": "Identifient solèt du document originâl",
+ "exif-licenseurl": "URL de la licence des drêts dâôtor",
"exif-morepermissionsurl": "Enformacions sur les licences altèrnatives",
- "exif-attributionurl": "Pendent lo reusâjo de cela ôvra, volyéd liyér a",
- "exif-preferredattributionname": "Pendent lo reusâjo de cela ôvra, volyéd crèditar",
+ "exif-attributionurl": "Pendent lo reusâjo de celâôvra, se vos plét liyéd a",
+ "exif-preferredattributionname": "Pendent lo reusâjo de celâôvra, se vos plét crèditâd",
"exif-pngfilecomment": "Comentèro de fichiér PNG",
- "exif-disclaimer": "Avèrtissement",
- "exif-contentwarning": "Avèrtissement sur lo contegnu",
+ "exif-disclaimer": "Semonce de nan-rèsponsabilitât",
+ "exif-contentwarning": "Semonce sur lo contegnu",
"exif-giffilecomment": "Comentèro de fichiér GIF",
- "exif-intellectualgenre": "Tipo dâèlèment",
- "exif-subjectnewscode": "Code du sujèt",
+ "exif-intellectualgenre": "Tipo de piéce",
+ "exif-subjectnewscode": "Code de la chousa",
"exif-scenecode": "Code de scèna IPTC",
"exif-event": "Ãvènement fotografiâ",
- "exif-organisationinimage": "Organisacion fotografiâ",
- "exif-personinimage": "Pèrsona fotografiâ",
- "exif-originalimageheight": "Hôtior de lâémâge devant quâel èye étâ tornâ cadrar",
- "exif-originalimagewidth": "Largior de lâémâge devant quâel èye étâ tornâ cadrar",
- "exif-compression-1": "Pas comprèssâ",
- "exif-compression-2": "CCITT tropa 3 longior du codâjo Huffman changiê de dimension 1",
- "exif-compression-3": "CCITT tropa 3 codâjo du faxe",
- "exif-compression-4": "CCITT tropa 4 codâjo du faxe",
+ "exif-organisationinimage": "Organisacion fotografiâye",
+ "exif-personinimage": "Pèrsona fotografiâye",
+ "exif-originalimageheight": "Hôtior de lâémâge devant que seye étâye recadrâye",
+ "exif-originalimagewidth": "Largior de lâémâge devant que seye étâye recadrâye",
+ "exif-compression-1": "Pas damâ",
+ "exif-compression-2": "CCITT Groupo 3 Longior du codâjo Huffman changiê de dimension 1",
+ "exif-compression-3": "CCITT Groupo 3 codâjo du faxe",
+ "exif-compression-4": "CCITT Groupo 4 codâjo du faxe",
"exif-compression-6": "JPEG (viely)",
- "exif-copyrighted-true": "Somês a drêt dâôtor",
- "exif-copyrighted-false": "Domêno publico",
+ "exif-copyrighted-true": "Protègiê per los drêts dâôtor",
+ "exif-copyrighted-false": "Ãtat des drêts dâôtor pas dèfeni",
+ "exif-photometricinterpretation-1": "Nêr et blanc (0 por lo nêr)",
"exif-unknowndate": "Dâta encognua",
"exif-orientation-1": "Normala",
- "exif-orientation-2": "Envèrsâ dâaplan",
- "exif-orientation-3": "Veriê de 180°",
- "exif-orientation-4": "Envèrsâ dâaplomb",
- "exif-orientation-5": "Veriê de 90° dens la dirèccion antihorèra et envèrsâ dâaplomb",
- "exif-orientation-6": "Veriê de 90° dens la dirèccion antihorèra",
- "exif-orientation-7": "Veriê de 90° dens la dirèccion horèra et envèrsâ dâaplomb",
- "exif-orientation-8": "Veriê de 90° dens la dirèccion horèra",
- "exif-planarconfiguration-1": "Balyês ategnentes",
- "exif-planarconfiguration-2": "Balyês sèparâs",
+ "exif-orientation-2": "Envèrsâye dâaplan",
+ "exif-orientation-3": "Veriêe de 180°",
+ "exif-orientation-4": "Envèrsâye dâaplomb",
+ "exif-orientation-5": "Veriêe de 90° du fllanc antihorèro et envèrsâye dâaplomb",
+ "exif-orientation-6": "Veriêe de 90° du fllanc antihorèro",
+ "exif-orientation-7": "Veriêe de 90° du fllanc horèro et envèrsâye dâaplomb",
+ "exif-orientation-8": "Veriêe de 90° du fllanc horèro",
+ "exif-planarconfiguration-1": "format en bocons",
+ "exif-planarconfiguration-2": "format plan",
"exif-colorspace-65535": "Pas calibrâ",
- "exif-componentsconfiguration-0": "Ãgziste pas",
+ "exif-componentsconfiguration-0": "ègziste pas",
"exif-componentsconfiguration-5": "V",
"exif-exposureprogram-0": "Pas dèfeni",
- "exif-exposureprogram-1": "Manuèl",
+ "exif-exposureprogram-1": "Manuâl",
"exif-exposureprogram-2": "Programo normal",
"exif-exposureprogram-3": "Prioritât a lâuvèrtura",
"exif-exposureprogram-4": "Prioritât a lâètopior",
"exif-exposureprogram-5": "Programo crèacion (prèference a la provondior de champ)",
"exif-exposureprogram-6": "Programo accion (prèference a la vitèsse dâètopâ)",
- "exif-exposureprogram-7": "Fôrma portrèt (por clich·ês de prés avouéc fond pas nèt)",
- "exif-exposureprogram-8": "Fôrma payisâjo (por des clich·ês de payisâjos nèts)",
- "exif-subjectdistance-value": "$1 mètre{{PLURAL:$1||s}}",
+ "exif-exposureprogram-7": "Fôrma portrèt (por visions de prés avouéc dèrriér troblo)",
+ "exif-exposureprogram-8": "Fôrma payisâjo (por visions de payisâjos avouéc dèrriér nèt)",
+ "exif-subjectdistance-value": "$1 mètro{{PLURAL:$1||s}}",
"exif-meteringmode-0": "Encognua",
"exif-meteringmode-1": "Moyena",
- "exif-meteringmode-2": "Moyena èquilibrâ u centro",
+ "exif-meteringmode-2": "Moyena dâaplomb u centro",
"exif-meteringmode-3": "Pouent",
"exif-meteringmode-4": "MultiPouent",
"exif-meteringmode-5": "Modèlo",
@@ -3147,7 +3166,6 @@
"redirect-submit": "Emmodar",
"fileduplicatesearch": "Rechèrche des fichiérs en doblo",
"fileduplicatesearch-summary": "Rechèrche des fichiérs en doblo dâaprés lor mârca de chaplâjo.",
- "fileduplicatesearch-legend": "Rechèrche dâun doblo",
"fileduplicatesearch-filename": "Nom du fichiér :",
"fileduplicatesearch-submit": "Rechèrchiér",
"fileduplicatesearch-info": "$1 à $2 pixèls Talye du fichiér : $3 Tipo MIME : $4",
diff --git a/languages/i18n/frr.json b/languages/i18n/frr.json
index 0306e65208..c52df0a8b8 100644
--- a/languages/i18n/frr.json
+++ b/languages/i18n/frr.json
@@ -10,7 +10,8 @@
"ìë¼",
"Purodha",
"Macofe",
- "Matma Rex"
+ "Matma Rex",
+ "Nemo bis"
]
},
"tog-underline": "Ferwisangen onerstrik:",
@@ -1252,7 +1253,7 @@
"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-added-to-category-bundled": "[[:$1]] an [[Special:WhatLinksHere/$1|{{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",
@@ -1682,8 +1683,6 @@
"categories": "Kategoriin",
"categoriespagetext": "{{PLURAL:$1|Detdiar kategorii häält|Jodiar kategoriin hual}} sidjen of datein.\n[[Special:UnusedCategories|Leesag kategoriin]] wurd heer ei uunwiset.\nLuke uk bi det list faan [[Special:WantedCategories|nuadag kategoriin]].",
"categoriesfrom": "Wise kategoriin mä began üüb:",
- "special-categories-sort-count": "Efter taalen sortiaret",
- "special-categories-sort-abc": "Efter't alfabeet sortiaret",
"deletedcontributions": "Stregen bidracher",
"deletedcontributions-title": "Stregen bidracher",
"sp-deletedcontributions-contribs": "Bidracher",
@@ -2280,11 +2279,7 @@
"import-logentry-upload-detail": "$1 {{PLURAL:$1|werjuun|werjuunen}} importiaret",
"import-logentry-interwiki-detail": "$1 {{PLURAL:$1|werjuun|werjuunen}} faan $2 importiaret",
"javascripttest": "JavaScript-test",
- "javascripttest-pagetext-noframework": "Detdiar sidj as för JavaScript-tests föörsen.",
- "javascripttest-pagetext-unknownframework": "Ãnbekäänd test-framework â$1â.",
"javascripttest-pagetext-unknownaction": "Ãnbekäänd aktjuun â$1â.",
- "javascripttest-pagetext-frameworks": "Schük ian faan jodiar test-frameworks ütj: $1",
- "javascripttest-pagetext-skins": "Schük en brüker-skak ütj, am di test ütjtufeeren:",
"javascripttest-qunit-intro": "Luke efter bi [$1 test dokumentatjuun] üüb mediawiki.org",
"tooltip-pt-userpage": "Din brükersidj",
"tooltip-pt-anonuserpage": "Brükersidj faan det IP-adres, faan huar ütj dü werkest",
@@ -2535,8 +2530,8 @@
"exif-colorspace": "Klöörenrüm",
"exif-componentsconfiguration": "Enkelt komponenten",
"exif-compressedbitsperpixel": "Komprimiaret bits per pixel",
- "exif-pixelydimension": "Bilbreetje",
- "exif-pixelxdimension": "Bilhööchde",
+ "exif-pixelxdimension": "Bilbreetje",
+ "exif-pixelydimension": "Bilhööchde",
"exif-usercomment": "Brüker komentaaren",
"exif-relatedsoundfile": "Ferbünjen tuundatei",
"exif-datetimeoriginal": "Dootem an klooktidj faan't knipsin",
@@ -2975,7 +2970,6 @@
"version-libraries-description": "Beskriiwang",
"version-libraries-authors": "Skriiwern",
"redirect": "Widjerfeerang faan en brüker, en sidj, en sidjenwerjuun of en datei.",
- "redirect-legend": "Widjerfeerang üüb en sidjenwerjuun of datei.",
"redirect-summary": "Detdiar spezial-sidj feert widjer üüb en brükersidj, sidj, sidjenwerjuun of datei.\nAn det woort so brükt: [[{{#Special:Redirect}}/user/101]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]] of [[{{#Special:Redirect}}/file/Example.jpg]].",
"redirect-submit": "Widjer",
"redirect-lookup": "Schük:",
@@ -2987,7 +2981,6 @@
"redirect-not-exists": "Wäärs ei fünjen",
"fileduplicatesearch": "Schük dobelt datein",
"fileduplicatesearch-summary": "Dobelt datein schük üüb grünjlaag faan hör hash-wäärs",
- "fileduplicatesearch-legend": "Dobelt datein schük",
"fileduplicatesearch-filename": "Dateinööm:",
"fileduplicatesearch-submit": "Schük",
"fileduplicatesearch-info": "$1 Ã $2 pixel Dateigrate: $3 MIME-typ: $4",
diff --git a/languages/i18n/fy.json b/languages/i18n/fy.json
index 80329a0eda..41368ee86d 100644
--- a/languages/i18n/fy.json
+++ b/languages/i18n/fy.json
@@ -15,7 +15,8 @@
"Robin0van0der0vliet",
"Macofe",
"Xð",
- "Robin van der Vliet"
+ "Robin van der Vliet",
+ "PiefPafPier"
]
},
"tog-underline": "Keppelings ûnderstreekje:",
@@ -287,6 +288,7 @@
"nstab-template": "Berjocht",
"nstab-help": "Helpside",
"nstab-category": "Kategory",
+ "mainpage-nstab": "Haadside",
"nosuchaction": "Unbekende aksje.",
"nosuchactiontext": "De opdracht yn de URL is ûnjildich.\nMooglik hasto in typefout makke yn de URL of in ferkearde keppeling folge.\nIt soe likegoed in programmatuerflater fan {{SITENAME}} wêze kinne.",
"nosuchspecialpage": "Unbekende side",
@@ -1262,8 +1264,6 @@
"categories": "Kategoryen",
"categoriespagetext": "De folgjende kategoriyen befetsje siden of mediatriemmen.\n[[Special:UnusedCategories|Net brûkte kategoryen]] wurde hjir net werjûn.\nSjuch ek [[Special:WantedCategories|net-besteande kategoryen mei ferwizings]].",
"categoriesfrom": "Kategoryen werjaan fan .. ôf:",
- "special-categories-sort-count": "op tal sortearje",
- "special-categories-sort-abc": "alfabetysk sortearje",
"deletedcontributions": "Wiske meidogger bydragen",
"deletedcontributions-title": "Wiske meidogger bydragen",
"sp-deletedcontributions-contribs": "bydragen",
@@ -1428,6 +1428,7 @@
"contributions": "{{GENDER:$1|Meidogger}}-bydragen",
"contributions-title": "Bydragen fan $1",
"mycontris": "Bydragen",
+ "anoncontribs": "Bydragen",
"contribsub2": "Foar {{GENDER:$3|$1}} ($2)",
"nocontribs": "Der binne gjin feroarings fûn dyt't hjirmei oerienkomme.",
"uctop": "(lêste feroaring)",
@@ -1579,7 +1580,7 @@
"tooltip-pt-preferences": "Myn foarkarynstellings",
"tooltip-pt-watchlist": "List fan siden dy'sto besjochst op feroarings",
"tooltip-pt-mycontris": "Oersjocht fan jo bydragen",
- "tooltip-pt-login": "Jo wurde fan herten útnoege jo oan te melden, mar it hoecht net.",
+ "tooltip-pt-login": "Jo wurde fan herten útnûge jo oan te melden, mar it hoecht net.",
"tooltip-pt-logout": "Ofmelde",
"tooltip-ca-talk": "Oerlis oer dizze side",
"tooltip-ca-edit": "Jo kinne dizze side bewurkje. Brûk a.j.w. de foarbyldwerjefteknop foar't Jo de boel bewarje.",
@@ -1737,8 +1738,8 @@
"exif-exifversion": "Exif-ferzje",
"exif-colorspace": "Kleurromte",
"exif-compressedbitsperpixel": "Ofbylding kompresjemetoade",
- "exif-pixelydimension": "Ofbyldingsbreedte",
- "exif-pixelxdimension": "Ofbyldingshichte",
+ "exif-pixelxdimension": "Ofbyldingsbreedte",
+ "exif-pixelydimension": "Ofbyldingshichte",
"exif-usercomment": "Opmerkings",
"exif-relatedsoundfile": "Besibbe audiotriem",
"exif-datetimeoriginal": "Tiidstip gegevensoanmaak",
@@ -1929,7 +1930,6 @@
"redirect-file": "Triemnamme",
"redirect-not-exists": "Wearde net fûn",
"fileduplicatesearch": "Sykje op duplikaten",
- "fileduplicatesearch-legend": "Sykje op duplikaten",
"fileduplicatesearch-filename": "Triemnamme:",
"fileduplicatesearch-submit": "Sykje",
"fileduplicatesearch-info": "$1 Ã $2 pixel Triemgrutte: $3 MIME-type: $4",
@@ -1974,8 +1974,8 @@
"comparepages": "Siden ferlykje",
"compare-page1": "Side 1",
"compare-page2": "Side 2",
- "compare-rev1": "Revyzje 1",
- "compare-rev2": "Revyzje 2",
+ "compare-rev1": "Refyzje 1",
+ "compare-rev2": "Refyzje 2",
"compare-submit": "Ferlykje",
"compare-invalid-title": "Unjildige titel.",
"htmlform-submit": "Ferstjoere",
@@ -2005,7 +2005,7 @@
"duration-weeks": "$1 {{PLURAL:$1|wike|wiken}}",
"duration-years": "$1 {{PLURAL:$1|jier|jierren}}",
"duration-decades": "$1 {{PLURAL:$1|desennium|desennia}}",
- "duration-centuries": "$1 {{PLURAL:$1|ieu|ieuwen}}",
+ "duration-centuries": "$1 {{PLURAL:$1|iuw|iuwen}}",
"limitreport-cputime-value": "$1 {{PLURAL:$1|sekonde|sekonden}}",
"limitreport-walltime-value": "$1 {{PLURAL:$1|sekonde|sekonden}}",
"limitreport-ppvisitednodes-value": "$1/$2",
@@ -2051,7 +2051,7 @@
"special-characters-group-arabic": "Arabysk",
"special-characters-group-arabicextended": "Arabysk útwreide",
"special-characters-group-persian": "Perzysk",
- "special-characters-group-hebrew": "Hebrieusk",
+ "special-characters-group-hebrew": "Hebriuwsk",
"special-characters-group-bangla": "Bengaalsk",
"special-characters-group-tamil": "Tamyl",
"special-characters-group-telugu": "Telugu",
diff --git a/languages/i18n/ga.json b/languages/i18n/ga.json
index fce0339619..06cbd5c5b7 100644
--- a/languages/i18n/ga.json
+++ b/languages/i18n/ga.json
@@ -151,6 +151,7 @@
"actions": "GnÃomhartha",
"namespaces": "Ainmspásanna",
"variants": "Leaganacha Malartacha",
+ "navigation-heading": "Roghchlár nascleanúna",
"errorpagetitle": "Earráid",
"returnto": "Fill ar ais go $1.",
"tagline": "Ã {{SITENAME}}.",
@@ -268,6 +269,7 @@
"nstab-template": "Teimpléad",
"nstab-help": "Cabhair",
"nstab-category": "Catagóir",
+ "mainpage-nstab": "An prÃomhleathanach",
"nosuchaction": "NÃl a leithéid de ghnÃomh ann",
"nosuchactiontext": "NÃl aithnÃonn an vicà an gnÃomh atá ann san URL.\nAn ndearna tú botún san URL, no ar lean tú nasc mÃcheart?\nAn bhfuil fadhb sna bogearraà atá in usáid ar {{SITENAME}}?",
"nosuchspecialpage": "NÃl a leithéid de leathanach speisialta ann",
@@ -313,9 +315,16 @@
"welcomecreation-msg": "CruthaÃodh do chuntas.",
"yourname": "D'ainm úsáideora",
"userlogin-yourname": "Ainm úsáideora",
+ "userlogin-yourname-ph": "Iontráil d'ainm úsáideora",
"yourpassword": "D'fhocal faire",
+ "userlogin-yourpassword": "Pasfhocal",
+ "userlogin-yourpassword-ph": "Iontráil do phasfhocal",
+ "createacct-yourpassword-ph": "Iontráil pasfhocal",
"yourpasswordagain": "Athiontráil d'fhocal faire",
+ "createacct-yourpasswordagain": "Deimhnigh an pasfhocal",
+ "createacct-yourpasswordagain-ph": "Iontráil an pasfhocal arÃs",
"remembermypassword": "Cuimhnigh ar m'fhocal faire ar an rÃomhaire seo (ar feadh uastréimhse de $1 {{PLURAL:$1|lá|lá}})",
+ "userlogin-remembermypassword": "Coinnigh logáilte isteach mé",
"yourdomainname": "D'fhearann",
"externaldberror": "Bhà earráid bhunachair sonraà ann maidir le fÃordheimhniú seachtrach, nóThere was either an external authentication database error or you are not allowed to update your external account.",
"login": "Logáil isteach",
@@ -325,13 +334,18 @@
"logout": "Logáil amach",
"userlogout": "Logáil amach",
"notloggedin": "NÃl tú logáilte isteach",
+ "userlogin-noaccount": "NÃl cuntas agat?",
+ "userlogin-joinproject": "Cláraigh le {{SITENAME}}",
"nologin": "Nach bhfuil logáil isteach agat? '''$1'''.",
"nologinlink": "Cruthaigh cuntas",
"createaccount": "Cruthaigh cuntas nua",
"gotaccount": "An bhfuil cuntas agat cheana féin? '''$1'''.",
"gotaccountlink": "Logáil isteach",
"userlogin-resetlink": "Sonraà logála isteach dearmadta agat?",
+ "userlogin-resetpassword-link": "Pasfhocal dearmadta?",
+ "userlogin-helplink2": "Cabhair le logáil isteach",
"createacct-emailrequired": "Seoladh rÃomhphoist",
+ "createacct-emailoptional": "Seoladh rÃomhphoist (roghnach)",
"createacct-email-ph": "Iontráil do sheoladh rÃomhphoist",
"createacct-another-email-ph": "Iontráil seoladh rÃomhphoist",
"createaccountmail": "le rÃomhphost",
@@ -376,6 +390,10 @@
"createaccount-title": "Cuntas cruthú le {{SITENAME}}",
"createaccount-text": "Chruthaigh duine éigin cuntas do do sheoladh rÃomhphoist ar {{SITENAME}} ($4) leis an ainm \"$2\" agus pasfhocal \"$3\". Ba cheart duit logáil isteach agus do phasfhocal a athrú anois. Is féidir leat neamhaird a thabhairt don teachtaireacht seo má cruthaÃodh trà earráid Ã.",
"loginlanguagelabel": "Teanga: $1",
+ "pt-login": "Logáil isteach",
+ "pt-login-button": "Logáil isteach",
+ "pt-createaccount": "Cruthaigh cuntas",
+ "pt-userlogout": "Logáil amach",
"php-mail-error-unknown": "Earráid anaithnid i bhfeidhm mail() de chuid PHP",
"changepassword": "Athraigh d'fhocal faire",
"resetpass_announce": "Tá tú logáilte isteach le cód sealadach a seoladh chugat i r-phost.\nChun d'iarratas logáil isteach a chrÃochnú, caithfidh tú focal faire nua a roghnú anseo:",
@@ -663,21 +681,33 @@
"action-minoredit": "an athrú seo a mharcáil mar mionathrú",
"action-upload": "uaslódáil an comhad",
"nchanges": "{{PLURAL:$1|Athrú amháin|$1 athruithe}}",
+ "enhancedrc-history": "stair",
"recentchanges": "Athruithe is déanaÃ",
"recentchanges-legend": "Roghanna do na hathruithe is déanaÃ",
"recentchanges-summary": "Déan faire ar na hathruithe is déanaà sa vicà ar an leathanach seo.",
"recentchanges-feed-description": "Rianaigh na n-athruite vicà is déanaà sa fotha seo.",
+ "recentchanges-label-newpage": "CruthaÃodh lch nua leis an eagarthóireacht seo",
"recentchanges-label-minor": "Mionathrú é seo",
"recentchanges-label-bot": "ChomhlÃon róbó an t-athrú seo",
+ "recentchanges-legend-heading": "Eochair: ",
"recentchanges-legend-newpage": "$1 - leathanach nua",
"rcnotefrom": "Is iad seo a leanas na hathruithe ó $2 (go dti $1 taispeánaithe).",
"rclistfrom": "Taispeáin athruithe nua ó $3 $2 anuas",
"rcshowhideminor": "$1 mionathruithe",
+ "rcshowhideminor-show": "Taispeáin",
+ "rcshowhideminor-hide": "Folaigh",
"rcshowhidebots": "$1 róbónna",
- "rcshowhideliu": "$1 úsáideoirà atá logáilte isteach",
+ "rcshowhidebots-show": "Taispeáin",
+ "rcshowhidebots-hide": "Folaigh",
+ "rcshowhideliu": "$1 úsáideoir cláraithe",
+ "rcshowhideliu-hide": "Folaigh",
"rcshowhideanons": "$1 úsáideoirà gan ainm",
+ "rcshowhideanons-show": "Taispeáin",
+ "rcshowhideanons-hide": "Folaigh",
"rcshowhidepatr": "$1 athruithe faoi phatról",
"rcshowhidemine": "$1 mo chuid athruithe",
+ "rcshowhidemine-show": "Taispeáin",
+ "rcshowhidemine-hide": "Folaigh",
"rclinks": "Taispeáin an $1 athrú is déanaà sa $2 lá seo caite $3",
"diff": "difr",
"hist": "stair",
@@ -688,6 +718,7 @@
"boteditletter": "r",
"number_of_watching_users_pageview": "[{{PLURAL:$1|úsáideoir amháin|$1 úsáideoirÃ}} ag faire]",
"rc_categories_any": "Aon chatagóir",
+ "rc-change-size-new": "$1 {{PLURAL:$1|bheart|beart}} tar éis an athraithe",
"newsectionsummary": "/* $1 */ mÃr nua",
"rc-enhanced-expand": "Taispeáin mionsonraithe (JavaScript riachtanach)",
"rc-enhanced-hide": "Folaigh shonraÃ",
@@ -838,6 +869,7 @@
"pager-older-n": "{{PLURAL:$1|1 nÃos sine|$1 nÃos sine}}",
"booksources": "LeabharfhoinsÃ",
"booksources-search-legend": "Cuardaigh le foinsà leabhar",
+ "booksources-search": "Cuardaigh",
"specialloguserlabel": "Ãsáideoir:",
"speciallogtitlelabel": "Teideal:",
"log": "LogaÃ",
@@ -995,6 +1027,7 @@
"contributions": "Dréachtaà {{GENDER:$1|úsáideora}}",
"contributions-title": "Dréachtaà úsáideora do $1",
"mycontris": "DréachtaÃ",
+ "anoncontribs": "DréachtaÃ",
"contribsub2": "Do $1 ($2)",
"nocontribs": "Nà bhfuarthas aon athrú a bhà cosúil le na crÃtéir seo.",
"uctop": " (barr)",
@@ -1142,7 +1175,7 @@
"tooltip-pt-anonuserpage": "Leathanach úsáideora don IP ina dhéanann tú do chuid athruithe",
"tooltip-pt-mytalk": "Do leathanach phlé",
"tooltip-pt-anontalk": "Plé maidir le na hathruithe a dhéantar ón seoladh IP seo",
- "tooltip-pt-preferences": "Mo chuid sainroghanna",
+ "tooltip-pt-preferences": "{{GENDER:|Do}} chuid sainroghanna",
"tooltip-pt-watchlist": "Liosta de na leathanaigh a bhfuil tú á bhfaire ar athruithe",
"tooltip-pt-mycontris": "Liosta do chuid dréachtaÃ",
"tooltip-pt-login": "Moltar duit logáil isteach, ach nÃl sé riachtanach.",
@@ -1231,6 +1264,7 @@
"file-nohires": "NÃl aon taifeach is mó ar fáil.",
"svg-long-desc": "Comhad SVG, ainmniúil $1 à $2 picteilÃni, méid comhaid: $3",
"show-big-image": "Taispeáin leagan ardtaifigh den Ãomhá",
+ "show-big-image-size": "$1 Ã $2 picteilÃn",
"newimages": "Gailearaà na n-Ãomhánna nua",
"imagelisttext": "Tá liosta thÃos de {{PLURAL:$1|comhad amháin|$1 comhaid $2}}.",
"newimages-label": "Comhadainm (nó cuid de):",
@@ -1277,8 +1311,8 @@
"exif-colorspace": "Dathspás",
"exif-componentsconfiguration": "Ciall le gach giota",
"exif-compressedbitsperpixel": "Modh chomhbhrú na n-Ãomhánna",
- "exif-pixelydimension": "Leithead bailà don Ãomhá",
- "exif-pixelxdimension": "Airde bailà don Ãomhá",
+ "exif-pixelxdimension": "Leithead bailà don Ãomhá",
+ "exif-pixelydimension": "Airde bailà don Ãomhá",
"exif-usercomment": "Nótaà an úsáideora",
"exif-relatedsoundfile": "comhad gaolmhara fuaime",
"exif-datetimeoriginal": "Dáta agus am ghiniúint na sonraÃ",
@@ -1519,7 +1553,9 @@
"specialpages-group-wiki": "Sonraà vicà agus uirslÃ",
"specialpages-group-spam": "Uirlisà turscar",
"blankpage": "Leathanach bán",
+ "tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1|chlib amháin|clib}}]]: $2)",
"htmlform-selectorother-other": "Eile",
+ "logentry-move-move": "{{GENDER:$2|Bhog}} $1 an leathanach $3 go $4",
"feedback-cancel": "Cealaigh",
"feedback-message": "Teachtaireacht:",
"searchsuggest-search": "Cuardaigh",
diff --git a/languages/i18n/gan-hans.json b/languages/i18n/gan-hans.json
index 10a15b7598..1b46daa72e 100644
--- a/languages/i18n/gan-hans.json
+++ b/languages/i18n/gan-hans.json
@@ -1388,8 +1388,8 @@
"exif-colorspace": "é¢è²ç©ºé´",
"exif-componentsconfiguration": "æ¯é¨å𠮶ææ",
"exif-compressedbitsperpixel": "å¾åå缩模å¼",
- "exif-pixelydimension": "ææå¾å𠮶é",
- "exif-pixelxdimension": "ææå¾å𠮶é«",
+ "exif-pixelxdimension": "ææå¾å𠮶é",
+ "exif-pixelydimension": "ææå¾å𠮶é«",
"exif-usercomment": "ç¨æ·æè¦",
"exif-relatedsoundfile": "ç¸å
³ð ®¶å£°æ°èµæ",
"exif-datetimeoriginal": "èµæåä½æ¶é´",
diff --git a/languages/i18n/gan-hant.json b/languages/i18n/gan-hant.json
index 3894997a12..01edb80ece 100644
--- a/languages/i18n/gan-hant.json
+++ b/languages/i18n/gan-hant.json
@@ -1384,8 +1384,8 @@
"exif-colorspace": "é¡è²ç©ºé",
"exif-componentsconfiguration": "æ¯é¨åå°ææ",
"exif-compressedbitsperpixel": "ååå£ç¸®æ¨¡å¼",
- "exif-pixelydimension": "ææååå°é",
- "exif-pixelxdimension": "ææååå°é«",
+ "exif-pixelxdimension": "ææååå°é",
+ "exif-pixelydimension": "ææååå°é«",
"exif-usercomment": "ç¨æ¶æè¦",
"exif-relatedsoundfile": "ç¸éå°è²æ°£è³æ",
"exif-datetimeoriginal": "è³æåµä½æé",
diff --git a/languages/i18n/gd.json b/languages/i18n/gd.json
index 1bb1745180..d8659c0cc1 100644
--- a/languages/i18n/gd.json
+++ b/languages/i18n/gd.json
@@ -1618,8 +1618,6 @@
"categories": "Roinnean-seòrsa",
"categoriespagetext": "Tha duilleagan no meadhan {{PLURAL:$1|san roinn-seòrsa|sna roinnean-seòrsa|}} a leanas.\nChan fhaicear [[Special:UnusedCategories|roinnean-seòrsa gun chleachdadh an-seo]].\nThoir sùil air na [[Special:WantedCategories|roinnean-seòrsa a thathar 'gan iarraidh cuideachd]].",
"categoriesfrom": "Seall roinnean-seòrsa o seo a-mach:",
- "special-categories-sort-count": "seòrsaich a-rèir an uireid",
- "special-categories-sort-abc": "seòrsaich a rèir na h-aibidil",
"deletedcontributions": "Obair air a sguabadh à s",
"deletedcontributions-title": "Obair air a sguabadh à s",
"sp-deletedcontributions-contribs": "obair",
@@ -2202,10 +2200,6 @@
"import-logentry-upload-detail": "Chaidh $1 {{PLURAL:$1|mhùthadh|mùthadh|mùthaidhean|mùthadh}} ion-phortachadh",
"import-logentry-interwiki-detail": "Chaidh $1 {{PLURAL:$1|mhùthadh|mhùthadh|mùthaidhean|mùthadh}} ion-phortachadh o $2",
"javascripttest": "Deuchainn air JavaScript",
- "javascripttest-pagetext-noframework": "Tha an duilleag seo glèidhte airson deuchainnean JavaScript a ruith.",
- "javascripttest-pagetext-unknownframework": "Framework deuchainn \"$1\" neo-aithnichte.",
- "javascripttest-pagetext-frameworks": "Feuch an tagh thu aon dhe na frameworks deuchainn seo: $1",
- "javascripttest-pagetext-skins": "Tagh craiceann airson ruith nan deuchainnean:",
"javascripttest-qunit-intro": "Faic [$1 docamaideadh nan deuchainnean] air mediawiki.org.",
"tooltip-pt-userpage": "An duilleag phearsanta {{GENDER:|agad}}",
"tooltip-pt-anonuserpage": "Duilleag a' chleachdaiche airson an t-seòlaidh IP leis a bheil thu a' deasachadh",
@@ -2469,8 +2463,8 @@
"exif-colorspace": "Spàs datha",
"exif-componentsconfiguration": "Ciall aig gach co-phà irt",
"exif-compressedbitsperpixel": "Modh dùmhlachd-bhreacaidh an deilbh",
- "exif-pixelydimension": "Leud an deilbh",
- "exif-pixelxdimension": "Ãirde an deilbh",
+ "exif-pixelxdimension": "Leud an deilbh",
+ "exif-pixelydimension": "Ãirde an deilbh",
"exif-usercomment": "Beachdan nan cleachdaichean",
"exif-relatedsoundfile": "Faidhle fuaime co-cheangailte ris",
"exif-datetimeoriginal": "Ceann-là 's à m a chaidh an dà ta a chruthachadh",
@@ -2956,7 +2950,6 @@
"version-entrypoints-articlepath": "[https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgArticlePath Slighe artaigil]",
"version-entrypoints-scriptpath": "[https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgScriptPath slighe sgriobt]",
"redirect": "Ath-stiùireadh le faidhle, cleachdaiche, duilleag no ID a' mhùthaidh",
- "redirect-legend": "Cruthaich ath-stiùireadh gu faidhle no duilleag",
"redirect-summary": "Nì an duilleag shònraichte seo ath-stiùireadh gu faidhle (le ainm faidhle), duilleag (le ID a' mhùthaidh no ID na duilleige) no duilleag cleachdaiche (le à ireamh ID a' chleachdaiche). Seo mar a chleachdas tu e: [[{{#Special:Redirect}}/file/Ball-eisimpleir.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]] no [[{{#Special:Redirect}}/user/101]].",
"redirect-submit": "Siuthad",
"redirect-lookup": "Rannsaich:",
@@ -2968,7 +2961,6 @@
"redirect-not-exists": "Cha deach an luach a lorg",
"fileduplicatesearch": "Lorg airson faidhlichean dùblaichte",
"fileduplicatesearch-summary": "Lorg airson faidhlichean dùblaichte, stèidhichte air luachan hais.",
- "fileduplicatesearch-legend": "Lorg airson dùblachadh",
"fileduplicatesearch-filename": "Ainm an fhaidhle:",
"fileduplicatesearch-submit": "Lorg",
"fileduplicatesearch-info": "$1 à $2 piogsail Meud an fhaidhle: $3 Seòrsa MIME: $4",
diff --git a/languages/i18n/gl.json b/languages/i18n/gl.json
index 2a211ef6cd..0a4357fa59 100644
--- a/languages/i18n/gl.json
+++ b/languages/i18n/gl.json
@@ -40,6 +40,7 @@
"tog-watchdefault": "Engadir as páxinas e os ficheiros que edite á miña lista de vixilancia",
"tog-watchmoves": "Engadir as páxinas e os ficheiros que mova á miña lista de vixilancia",
"tog-watchdeletion": "Engadir as páxinas e os ficheiros que borre á miña lista de vixilancia",
+ "tog-watchuploads": "Engadir os novos ficheiros que subÃn á miña lista de vixilancia",
"tog-watchrollback": "Engadir as páxinas nas que realice unha reversión á miña lista de vixilancia",
"tog-minordefault": "Marcar todas as edicións como pequenas por defecto",
"tog-previewontop": "Mostrar a vista previa antes da caixa de edición",
@@ -480,7 +481,7 @@
"noemail": "O usuario \"$1\" non posúe ningún enderezo de correo electrónico rexistrado.",
"noemailcreate": "Ten que proporcionar un enderezo de correo electrónico válido",
"passwordsent": "Enviouse un contrasinal novo ao enderezo de correo electrónico rexistrado de \"$1\".\nPor favor, acceda ao sistema de novo tras recibilo.",
- "blocked-mailpassword": "O seu enderezo IP está bloqueado e ten restrinxida a edición de artigos. Tampouco se lle permite usar a función de recuperación do contrasinal para evitar abusos do sistema.",
+ "blocked-mailpassword": "O seu enderezo IP está bloqueado para editar. Tampouco se lle permite usar a función de recuperación do contrasinal para evitar abusos do sistema.",
"eauthentsent": "Envióuselle un correo electrónico de confirmación ao enderezo especificado.\nAntes de que se lle envÃe calquera outro correo a esta conta terá que seguir as instrucións que aparecen nesa mensaxe para confirmar que a conta é realmente súa.",
"throttled-mailpassword": "Enviouse un correo electrónico de restablecemento do contrasinal {{PLURAL:$1|na última hora|nas últimas $1 horas}}.\nPara evitar o abuso do sistema só se enviará unha mensaxe de restablecemento cada {{PLURAL:$1|hora|$1 horas}}.",
"mailerror": "Produciuse un erro ao enviar o correo electrónico: $1",
@@ -1322,9 +1323,9 @@
"recentchangeslinked-page": "Nome da páxina:",
"recentchangeslinked-to": "Mostrar os cambios relacionados das páxinas que ligan coa dada",
"recentchanges-page-added-to-category": "\"[[:$1]]\" engadiuse á categorÃa",
- "recentchanges-page-added-to-category-bundled": "\"[[:$1]]\" e [[Special:WhatLinksHere/$1|{{PLURAL:$2|unha páxina|$2 páxinas}}]] engadÃronse á categorÃa",
+ "recentchanges-page-added-to-category-bundled": "[[:$1]] engadida á categorÃa [[Special:WhatLinksHere/$1|esta páxina está incluÃda noutras páxinas]]",
"recentchanges-page-removed-from-category": "\"[[:$1]]\" eliminouse da categorÃa",
- "recentchanges-page-removed-from-category-bundled": "\"[[:$1]]\" e [[Special:WhatLinksHere/$1|{{PLURAL:$2|unha páxina|$2 páxinas}}]] elimináronse da categorÃa",
+ "recentchanges-page-removed-from-category-bundled": "[[:$1]] eliminada da categorÃa [[Special:WhatLinksHere/$1||esta páxina está incluÃda noutras páxinas]]",
"autochange-username": "Cambio automático de MediaWiki",
"upload": "Subir un ficheiro",
"uploadbtn": "Subir un ficheiro",
@@ -1431,7 +1432,7 @@
"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-foreign-cant-upload": "Esta wiki non está configurada para subir ficheiros ó repositorio de ficheiros externo solicitado.",
+ "upload-foreign-cant-upload": "Este wiki non está configurado para subir ficheiros ao repositorio de ficheiros externo solicitado.",
"upload-dialog-title": "Subir un ficheiro",
"upload-dialog-button-cancel": "Cancelar",
"upload-dialog-button-done": "Feito",
@@ -1504,6 +1505,7 @@
"uploadstash-badtoken": "A acción fallou, probablemente porque caducou a información de acceso. Por favor, inténteo de novo.",
"uploadstash-errclear": "Fallou o borrado de ficheiros.",
"uploadstash-refresh": "Actualizar a lista de ficheiros",
+ "uploadstash-thumbnail": "ver miniatura",
"invalid-chunk-offset": "Desprazamento inválido do fragmento",
"img-auth-accessdenied": "Acceso rexeitado",
"img-auth-nopathinfo": "Falta a PATH_INFO.\nO seu servidor non está configurado para pasar esta información.\nPode ser que estea baseado en CGI e non soporte img_auth.\nVéxase https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Image_Authorization.",
@@ -1803,7 +1805,7 @@
"checkbox-select": "Seleccionar: $1",
"checkbox-all": "Todos",
"checkbox-none": "Ningún",
- "checkbox-invert": "Invertir",
+ "checkbox-invert": "Inverter",
"allpages": "Todas as páxinas",
"nextpage": "Páxina seguinte ($1)",
"prevpage": "Páxina anterior ($1)",
@@ -1823,8 +1825,6 @@
"categories-submit": "Mostrar",
"categoriespagetext": "{{PLURAL:$1|A seguinte categorÃa contén|As seguintes categorÃas conteñen}} páxinas ou contidos multimedia.\nAquà non se mostran as [[Special:UnusedCategories|categorÃas sen uso]].\nOlle tamén as [[Special:WantedCategories|categorÃas requiridas]].",
"categoriesfrom": "Mostrar as categorÃas que comecen por:",
- "special-categories-sort-count": "ordenar por número",
- "special-categories-sort-abc": "ordenar alfabeticamente",
"deletedcontributions": "Contribucións borradas do usuario",
"deletedcontributions-title": "Contribucións borradas do usuario",
"sp-deletedcontributions-contribs": "contribucións",
@@ -1992,7 +1992,7 @@
"delete-toobig": "Esta páxina conta cun historial longo, de máis {{PLURAL:$1|dunha revisión|de $1 revisións}}.\nLimitouse a eliminación destas páxinas para previr problemas de funcionamento accidentais en {{SITENAME}}.",
"delete-warning-toobig": "Esta páxina conta cun historial de edicións longo, de máis {{PLURAL:$1|dunha revisión|de $1 revisións}}.\nAo eliminala pódense provocar problemas de funcionamento nas operacións da base de datos de {{SITENAME}};\nproceda con coidado.",
"deleteprotected": "Non pode borrar esta páxina porque está protexida.",
- "deleting-backlinks-warning": "Atención: [[Special:WhatLinksHere/{{FULLPAGENAME}}|Outras páxinas]] conteñen unha ligazón ou unha transclusión da páxina que está a piques de borrar.",
+ "deleting-backlinks-warning": "Atención: [[Special:WhatLinksHere/{{FULLPAGENAME}}|Outras páxinas]] conteñen unha ligazón ou unha transclusión da páxina que está a piques de borrar.",
"rollback": "Reverter as edicións",
"rollbacklink": "reverter",
"rollbacklinkcount": "reverter $1 {{PLURAL:$1|edición|edicións}}",
@@ -2201,6 +2201,7 @@
"ipb-unblock": "Desbloquear un usuario ou enderezo IP",
"ipb-blocklist": "Ver os bloqueos vixentes",
"ipb-blocklist-contribs": "Contribucións de {{GENDER:$1|$1}}",
+ "ipb-blocklist-duration-left": "$1 restantes",
"unblockip": "Desbloquear un usuario",
"unblockiptext": "Use o seguinte formulario para dar de novo acceso de escritura a un enderezo IP ou usuario que estea bloqueado.",
"ipusubmit": "Retirar o bloqueo",
@@ -2442,11 +2443,7 @@
"import-logentry-upload-detail": "{{PLURAL:$1|Importouse $1 revisión|Importáronse $1 revisións}}",
"import-logentry-interwiki-detail": "{{PLURAL:$1|Importouse $1 revisión|Importáronse $1 revisións}} desde $2",
"javascripttest": "Proba de JavaScript",
- "javascripttest-pagetext-noframework": "Esta páxina está reservada para executar probas do JavaScript.",
- "javascripttest-pagetext-unknownframework": "Descoñécese a infraestrutura dixital \"$1\" de probas.",
"javascripttest-pagetext-unknownaction": "Acción descoñecida \"$1\".",
- "javascripttest-pagetext-frameworks": "Seleccione unha das seguintes infraestruturas dixitais de probas: $1",
- "javascripttest-pagetext-skins": "Escolla a aparencia na que executar as probas:",
"javascripttest-qunit-intro": "Bótelle unha ollada á [$1 documentación das probas] en mediawiki.org.",
"tooltip-pt-userpage": "A súa páxina de {{GENDER:|usuario|usuaria}}",
"tooltip-pt-anonuserpage": "A páxina de usuario do enderezo IP desde o que está a editar",
@@ -2714,8 +2711,8 @@
"exif-colorspace": "Espazo de cor",
"exif-componentsconfiguration": "Significado de cada compoñente",
"exif-compressedbitsperpixel": "Modo de compresión da imaxe",
- "exif-pixelydimension": "Ancho da imaxe",
- "exif-pixelxdimension": "Altura da imaxe",
+ "exif-pixelxdimension": "Ancho da imaxe",
+ "exif-pixelydimension": "Altura da imaxe",
"exif-usercomment": "Comentarios do usuario",
"exif-relatedsoundfile": "Ficheiro de son relacionado",
"exif-datetimeoriginal": "Data e hora de xeración do ficheiro",
@@ -3041,6 +3038,10 @@
"confirmemail_body_set": "Alguén, probablemente vostede, desde o enderezo IP $1,\nestableceu este enderezo de correo electrónico como o da conta \"$2\" en {{SITENAME}}.\n\nPara confirmar que realmente esta conta lle pertence a vostede e activar\nas caracterÃsticas do correo electrónico en {{SITENAME}}, abra esta ligazón no seu navegador:\n\n$3\n\nSe a conta *non* é súa, siga estoutra ligazón\npara cancelar a confirmación do enderezo de correo electrónico:\n\n$5\n\nO código de confirmación caduca o $6 ás $7.",
"confirmemail_invalidated": "A confirmación do enderezo de correo electrónico foi cancelada",
"invalidateemail": "Cancelar a confirmación do correo electrónico",
+ "notificationemail_subject_changed": "A dirección de correo rexistrada en {{SITENAME}} foi modificada",
+ "notificationemail_subject_removed": "A dirección de correo rexistrada en {{SITENAME}} foi eliminada",
+ "notificationemail_body_changed": "Alguén, probablemente vostede, dende a dirección IP $1, cambiou a dirección de correo electrónico da conta \"$2\" a \"$3\" en {{SITENAME}}.\n\nSe non foi vostede, contacte cun administrador inmediatamente.",
+ "notificationemail_body_removed": "Alguén, probablemente vostede, dende a dirección IP $1, eliminou a dirección de correo electrónico da conta \"$2\" en {{SITENAME}}.\n\nSe non foi vostede, contacte cun administrador inmediatamente.",
"scarytranscludedisabled": "[A transclusión interwiki está desactivada]",
"scarytranscludefailed": "[Fallou a busca do modelo \"$1\"]",
"scarytranscludefailed-httpstatus": "[Fallou a busca do modelo \"$1\": HTTP $2]",
@@ -3161,7 +3162,6 @@
"version-libraries-description": "Descrición",
"version-libraries-authors": "Autores",
"redirect": "Redirixir por nome de ficheiro, usuario, páxina, modificación ou identificador de rexistro",
- "redirect-legend": "Redirixir a un ficheiro ou unha páxina",
"redirect-summary": "Esta páxina especial redirixe cara a un ficheiro (dado o nome), unha páxina (dado o ID da páxina ou o dunha revisión) ou unha páxina de usuario (dado o ID dun usuario), ou unha entrada do rexistro (dada polo ID do rexistro). Utilización: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]] ou [[{{#Special:Redirect}}/user/101]], ou [[{{#Special:Redirect}}/logid/186]].",
"redirect-submit": "Continuar",
"redirect-lookup": "Procurar:",
@@ -3174,7 +3174,6 @@
"redirect-not-exists": "Non se atopou o valor",
"fileduplicatesearch": "Procurar ficheiros duplicados",
"fileduplicatesearch-summary": "Procurar ficheiros duplicados a partir do valor de hash (un mecanismo de comprobación).",
- "fileduplicatesearch-legend": "Procurar un duplicado",
"fileduplicatesearch-filename": "Nome do ficheiro:",
"fileduplicatesearch-submit": "Procurar",
"fileduplicatesearch-info": "$1 à $2 pÃxeles Tamaño do ficheiro: $3 Tipo MIME: $4",
@@ -3375,7 +3374,7 @@
"logentry-protect-protect-cascade": "$1 {{GENDER:$2|protexeu}} a $3 $4 [en cascada]",
"logentry-protect-modify": "$1 {{GENDER:$2|cambiou}} o nivel de protección de $3 $4",
"logentry-protect-modify-cascade": "$1 {{GENDER:$2|cambiou}} o nivel de protección de $3 $4 [en cascada]",
- "logentry-rights-rights": "$1 {{GENDER:$2|cambiou}} o grupo ao que pertence $3 de $4 a $5",
+ "logentry-rights-rights": "$1 {{GENDER:$2|cambiou}} o grupo ao que pertence {{GENDER:$6|$3}} de $4 a $5",
"logentry-rights-rights-legacy": "$1 {{GENDER:$2|cambiou}} o grupo ao que pertence $3",
"logentry-rights-autopromote": "$1 foi {{GENDER:$2|promovido|promovida}} automaticamente de $4 a $5",
"logentry-upload-upload": "$1 {{GENDER:$2|cargou}} \"$3\"",
@@ -3468,6 +3467,7 @@
"api-error-unknownerror": "Erro descoñecido: \"$1\".",
"api-error-uploaddisabled": "As cargas están desactivadas neste wiki.",
"api-error-verification-error": "Este ficheiro poderÃa estar corrupto ou ter unha extensión incorrecta.",
+ "api-error-was-deleted": "Un ficheiro con este mesmo nome xa foi cargado con anterioridade e posteriormente eliminado.",
"duration-seconds": "$1 {{PLURAL:$1|segundo|segundos}}",
"duration-minutes": "$1 {{PLURAL:$1|minuto|minutos}}",
"duration-hours": "$1 {{PLURAL:$1|hora|horas}}",
@@ -3558,6 +3558,7 @@
"special-characters-group-ipa": "IPA",
"special-characters-group-symbols": "SÃmbolos",
"special-characters-group-greek": "Grego",
+ "special-characters-group-greekextended": "Grego estendido",
"special-characters-group-cyrillic": "CirÃlico",
"special-characters-group-arabic": "Ãrabe",
"special-characters-group-arabicextended": "Ãrabe estendido",
@@ -3585,5 +3586,54 @@
"sessionprovider-generic": "sesións $1",
"sessionprovider-mediawiki-session-cookiesessionprovider": "sesións baseadas nas cookies",
"sessionprovider-nocookies": "As cookies poden estar desactivadas. Asegúrese de que ten activas as cookies e comece de novo.",
- "randomrootpage": "Páxina raÃz ao chou"
+ "randomrootpage": "Páxina raÃz ao chou",
+ "log-action-filter-block": "Tipo de bloqueo:",
+ "log-action-filter-contentmodel": "Tipo de modificación de modelo de contido:",
+ "log-action-filter-delete": "Tipo de borrado:",
+ "log-action-filter-import": "Tipo de importación:",
+ "log-action-filter-managetags": "Tipo de acción de xestión das etiquetas:",
+ "log-action-filter-move": "Tipo de movemento:",
+ "log-action-filter-newusers": "Tipo de creación de conta:",
+ "log-action-filter-patrol": "Tipo de vixilancia:",
+ "log-action-filter-protect": "Tipo de protección:",
+ "log-action-filter-rights": "Tipo de cambio de dereito",
+ "log-action-filter-suppress": "Tipo de borrado",
+ "log-action-filter-upload": "Tipo de subida:",
+ "log-action-filter-all": "Todas",
+ "log-action-filter-block-block": "Bloquear",
+ "log-action-filter-block-reblock": "Modificación de bloqueo",
+ "log-action-filter-block-unblock": "Desbloquear",
+ "log-action-filter-contentmodel-change": "Cambio de modelo de contido",
+ "log-action-filter-contentmodel-new": "Creación de páxins cun modelo de contido non estándar",
+ "log-action-filter-delete-delete": "Borrado de páxinas",
+ "log-action-filter-delete-restore": "Restauración de páxinas",
+ "log-action-filter-delete-event": "Borrado de rexistros",
+ "log-action-filter-delete-revision": "Borrado de revisión",
+ "log-action-filter-import-interwiki": "Importar transwiki",
+ "log-action-filter-import-upload": "Importación por suba XML",
+ "log-action-filter-managetags-create": "Creación de etiqueta",
+ "log-action-filter-managetags-delete": "Borrado de etiqueta",
+ "log-action-filter-managetags-activate": "Activación de etiqueta",
+ "log-action-filter-managetags-deactivate": "Desactivación de etiqueta",
+ "log-action-filter-move-move": "Mover sen reescribir as redireccións",
+ "log-action-filter-move-move_redir": "Mover reescribindo as redireccións",
+ "log-action-filter-newusers-create": "Creación por usuario anónimo",
+ "log-action-filter-newusers-create2": "Creación por usuario rexistrado",
+ "log-action-filter-newusers-autocreate": "Creación automática",
+ "log-action-filter-newusers-byemail": "Creación con chave enviada por correo electrónico",
+ "log-action-filter-patrol-patrol": "Verificación manual",
+ "log-action-filter-patrol-autopatrol": "Verificación automática",
+ "log-action-filter-protect-protect": "Protección",
+ "log-action-filter-protect-modify": "Modificación de protección",
+ "log-action-filter-protect-unprotect": "Desproteccion",
+ "log-action-filter-protect-move_prot": "Protección contra movemento",
+ "log-action-filter-rights-rights": "Cambio manual",
+ "log-action-filter-rights-autopromote": "Cambio automático",
+ "log-action-filter-suppress-event": "Borrado de rexistro",
+ "log-action-filter-suppress-revision": "Borrado de revisión",
+ "log-action-filter-suppress-delete": "Borrado de páxina",
+ "log-action-filter-suppress-block": "Supresión de usuario por bloqueo",
+ "log-action-filter-suppress-reblock": "Supresión de usuario por bloqueo reiterado",
+ "log-action-filter-upload-upload": "Nova subida",
+ "log-action-filter-upload-overwrite": "Resubida"
}
diff --git a/languages/i18n/gom-deva.json b/languages/i18n/gom-deva.json
index b48844daa4..530a48cf3a 100644
--- a/languages/i18n/gom-deva.json
+++ b/languages/i18n/gom-deva.json
@@ -447,8 +447,8 @@
"compareselectedversions": "वà¥à¤à¤à¤¿à¤²à¥à¤²à¥à¤¯à¤¾ पà¥à¤¨à¤°à¥à¤¨à¤¿à¤¯à¤¾à¤³à¤¾à¤à¤à¥ तà¥à¤³à¤¾ à¤à¤°à¤¾à¤¤",
"editundo": "à¤à¥à¤²à¥à¤²à¥à¤ परतावà¤à¥à¤",
"diff-multi-sameuser": "(हà¥à¤¯à¤¾ वाà¤à¤à¤¡à¥à¤¯à¤¾ सयत {{PLURAL:$1|à¤à¥à¤²à¥à¤²à¥à¤ मदलà¥à¤ à¤à¤ à¤
वतरण दाà¤à¥à¤µà¤à¤ ना|à¤à¥à¤²à¥à¤²à¥à¤ मदलà¥à¤ $1 à¤
वतरण दाà¤à¥à¤µà¤à¤ ना}})",
- "searchresults": "सà¥à¤¦à¤¾à¤à¥ निà¤à¤¾à¤²",
- "searchresults-title": "\"$1\" हाà¤à¥à¤¯à¤¾ सà¥à¤¦à¤¾à¤à¥ निà¤à¤¾à¤²",
+ "searchresults": "सà¥à¤¦à¤¾à¤à¥ परिणामाà¤",
+ "searchresults-title": "\"$1\" हाà¤à¥à¤¯à¤¾ सà¥à¤¦à¤¾à¤à¥ परिणामाà¤",
"prevn": "à¤à¤¦à¤²à¥à¤{{PLURAL:$1|$1}}",
"nextn": "दà¥à¤¸à¤°à¥à¤ {{PLURAL:$1|$1}}",
"next-page": "दà¥à¤¸à¤°à¥à¤ पान",
diff --git a/languages/i18n/gom-latn.json b/languages/i18n/gom-latn.json
index d2611fe3b1..9441df7714 100644
--- a/languages/i18n/gom-latn.json
+++ b/languages/i18n/gom-latn.json
@@ -450,8 +450,8 @@
"compareselectedversions": "Nivodloleo uzollneo comparar kor",
"editundo": "kel'lem portavchem",
"diff-multi-sameuser": "(Heach vangdian {{PLURAL:$1|kel'lo modlo ek bodol dakhounk na|kel'le modle $1 bodlopam dakhounk nan}})",
- "searchresults": "Sodache nikal",
- "searchresults-title": "\"$1\" -khatir sodacho nikal",
+ "searchresults": "Sodache porinaman",
+ "searchresults-title": "\"$1\" -khatir sodache porinaman",
"prevn": "adlem {{PLURAL:$1|$1}}",
"nextn": "fuddlem {{PLURAL:$1|$1}}",
"next-page": "Fuddlem pan",
diff --git a/languages/i18n/grc.json b/languages/i18n/grc.json
index d3b1f9488e..1b3138d7a7 100644
--- a/languages/i18n/grc.json
+++ b/languages/i18n/grc.json
@@ -1135,8 +1135,6 @@
"allpages-bad-ns": "Τὸ {{SITENAME}} οá½Îº á¼Ïει á½Î½Î¿Î¼Î±Ïεá¿Î¿Î½ \"$1\".",
"categories": "ÎαÏηγοÏίαι",
"categoriesfrom": "ÎεικνÏναι καÏηγοÏÎ¯Î±Ï (γÏαμμαὶ á¼ÎºÎºÎ¹Î½Î¿Ï
μÎναι á¼Îº/á¼Î¾):",
- "special-categories-sort-count": "á¼ÏαÏιθμηÏικὴ ÏαξινÏμηÏιÏ",
- "special-categories-sort-abc": "á¼Î»ÏαβηÏικὴ ÏαξινÏμηÏιÏ",
"deletedcontributions": "ÎιαγÏάÏαι ÏÎ¿á½ºÏ á¼ÏάνοÏ
Ï Ïοῦ ÏÏÏμÎνοÏ
",
"deletedcontributions-title": "ÎιαγÏάÏαι ÏÎ¿á½ºÏ á¼ÏάνοÏ
Ï Ïοῦ ÏÏÏμÎνοÏ
",
"sp-deletedcontributions-contribs": "á¼ÏανoÏ",
@@ -1717,8 +1715,8 @@
"exif-colorspace": "ΧÏÏμαÏÎ¹Îºá½¸Ï ÏῶÏοÏ",
"exif-componentsconfiguration": "ÎÏημα á¼ÎºÎ¬ÏÏÎ·Ï ÏÏ
νιÏÏÏÏηÏ",
"exif-compressedbitsperpixel": "ΤÏÏÏÎ¿Ï ÏÏ
μÏιÎÏεÏÏ Îµá¼°ÎºÏνοÏ",
- "exif-pixelydimension": "ΠλάÏÎ¿Ï Îµá¼°ÎºÏνοÏ",
- "exif-pixelxdimension": "á½ÏÎ¿Ï Îµá¼°ÎºÏνοÏ",
+ "exif-pixelxdimension": "ΠλάÏÎ¿Ï Îµá¼°ÎºÏνοÏ",
+ "exif-pixelydimension": "á½ÏÎ¿Ï Îµá¼°ÎºÏνοÏ",
"exif-usercomment": "ΣÏÏλια ÏÏÏμÎνοÏ
",
"exif-relatedsoundfile": "ΣÏεÏιζÏμενον á¼ÏÏεá¿Î¿Î½ ἤÏοÏ
",
"exif-datetimeoriginal": "ΧÏονολογία καὶ á½¥Ïα ÏαÏαγÏγá¿Ï δεδομÎνÏν",
@@ -2005,7 +2003,6 @@
"version-software-version": "á¼ÎºÎ´Î¿ÏιÏ",
"fileduplicatesearch": "ÎήÏηÏÎ¹Ï Î´Î¹ÏλÏÏÏ
ÏÏν á¼ÏÏείÏν",
"fileduplicatesearch-summary": "ÎηÏεá¿Î½ διÏλÏÏÏ
Ïα á¼ÏÏεá¿Î± βάÏει κεÏμαÏιζομÎνÏν Ïιμῶν.",
- "fileduplicatesearch-legend": "ÎήÏηÏÎ¹Ï Î´Î¹ÏλÏÏÏ
ÏοÏ
",
"fileduplicatesearch-filename": "á½Î½Î¿Î¼Î± á¼ÏÏείοÏ
:",
"fileduplicatesearch-submit": "á¼Î½Î±Î¶Î®ÏηÏιÏ",
"fileduplicatesearch-info": "$1 à $2 pixel ÎÎÎ³ÎµÎ¸Î¿Ï á¼ÏÏείοÏ
: $3 MIME ÏÏÏοÏ: $4",
diff --git a/languages/i18n/gsw.json b/languages/i18n/gsw.json
index 77cfb9e892..75906f0631 100644
--- a/languages/i18n/gsw.json
+++ b/languages/i18n/gsw.json
@@ -1237,7 +1237,7 @@
"recentchangeslinked-page": "Syte:",
"recentchangeslinked-to": "Zeig Ãnderige uf Syte, wu uff die Syte verwyyse",
"recentchanges-page-added-to-category": "[[:$1]] zur Kategorie derzue ta",
- "recentchanges-page-added-to-category-bundled": "[[:$1]] und {{PLURAL:$2|ei|$2}} anderi Syte zur Kategorie derzue ta",
+ "recentchanges-page-added-to-category-bundled": "[[:$1]] und [[Special:WhatLinksHere/$1|{{PLURAL:$2|ei|$2}}]] anderi Syte zur Kategorie derzue ta",
"recentchanges-page-removed-from-category": "[[:$1]] vor Kategorie furtgnoh",
"recentchanges-page-removed-from-category-bundled": "[[:$1]] und {{PLURAL:$2|ei|$2}} anderi Syte vor Kategorie furtgnoh",
"autochange-username": "Automatischi MediaWiki-Ãnderig",
@@ -1697,8 +1697,6 @@
"categories": "Kategorie",
"categoriespagetext": "In {{PLURAL:$1|däre Kategorii|däne Kategorie}} het s Syte oder Dateie.\n[[Special:UnusedCategories|Nit benutzte Kategorie]] wäre do nit ufgfiert.\nLueg au d Lischt vu dr [[Special:WantedCategories|gwinschte Kategorie]].",
"categoriesfrom": "Zeig Kategorie ab:",
- "special-categories-sort-count": "Sortierig no Aazahl",
- "special-categories-sort-abc": "Sortierig no Alfabet",
"deletedcontributions": "Gleschti Bytreg",
"deletedcontributions-title": "Gleschti Bytreg",
"sp-deletedcontributions-contribs": "Byyträg",
@@ -2294,11 +2292,7 @@
"import-logentry-upload-detail": "$1 {{PLURAL:$1|Version|Versionen}} importiert",
"import-logentry-interwiki-detail": "$1 {{PLURAL:$1|Version|Versione}} us $2 importiert",
"javascripttest": "JavaScript-Tescht",
- "javascripttest-pagetext-noframework": "Die Syte isch reserviert fir JavaSkript-Tescht.",
- "javascripttest-pagetext-unknownframework": "Nit bekannt Framework â$1â.",
"javascripttest-pagetext-unknownaction": "Unbekannti Aktion «$1».",
- "javascripttest-pagetext-frameworks": "Bitte eis vu däne Framework uuswehle: $1",
- "javascripttest-pagetext-skins": "Wehl e Benutzeroberflechi uus fir d Durfierig vu dr Tescht:",
"javascripttest-qunit-intro": "Lueg d [$1 Dokumentation zue Tescht] uf mediawiki.org",
"tooltip-pt-userpage": "Dyyni Benutzersyte",
"tooltip-pt-anonuserpage": "D Benutzersyte vo der IP-Adress wo du mit schaffsch",
@@ -2549,8 +2543,8 @@
"exif-colorspace": "Farbruum",
"exif-componentsconfiguration": "Bedytig vu einzelne Komponente",
"exif-compressedbitsperpixel": "Komprimierti Bit pro Pixel",
- "exif-pixelydimension": "Bildbreiti",
- "exif-pixelxdimension": "Bildhechi",
+ "exif-pixelxdimension": "Bildbreiti",
+ "exif-pixelydimension": "Bildhechi",
"exif-usercomment": "Benutzerkommentar",
"exif-relatedsoundfile": "Zuegherigi Tondatei",
"exif-datetimeoriginal": "Erfassigszytpunkt",
@@ -2989,7 +2983,6 @@
"version-libraries-description": "Beschrybig",
"version-libraries-authors": "Autor/inne",
"redirect": "Wyterleitig uf Benutzersyte, Syte, Syteversion oder Datei",
- "redirect-legend": "Wyterleitig uf e Datei oder e Syte",
"redirect-summary": "Die Spezialsyte leitet wyter uf e Benutzersyte (numerischi Benutzerkännig aagee), Syte (Sytekännig aagee), Syteversion (Versionskännig aagee) oder Datei (Dateiname aagee). Benutzig: [[{{#Special:Redirect}}/user/101]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]] oder [[{{#Special:Redirect}}/file/Example.jpg]].",
"redirect-submit": "Gang",
"redirect-lookup": "Sueche:",
@@ -3001,7 +2994,6 @@
"redirect-not-exists": "Wärt nit gfunde",
"fileduplicatesearch": "Datei-Duplikat sueche",
"fileduplicatesearch-summary": "Suech no Datei-Duplikat uf dr Grundlag vu ihrem Hash-Wärt.",
- "fileduplicatesearch-legend": "No Duplikat sueche",
"fileduplicatesearch-filename": "Dateiname:",
"fileduplicatesearch-submit": "Sueche",
"fileduplicatesearch-info": "$1 Ã $2 Pixel Dateigressi: $3 MIME-Typ: $4",
diff --git a/languages/i18n/gu.json b/languages/i18n/gu.json
index 804c4f9c14..c478e9da3a 100644
--- a/languages/i18n/gu.json
+++ b/languages/i18n/gu.json
@@ -28,7 +28,8 @@
"NehalDaveND",
"Nisargjhaveri",
"Matma Rex",
- "Bhatakati aatma"
+ "Bhatakati aatma",
+ "YmKavishwar"
]
},
"tog-underline": "àªàª¡à«àªàª¨à« નà«àªà« લà«àªà« (àª
àªàª¡àª°àª²àª¾àªàª¨):",
@@ -575,7 +576,7 @@
"accmailtitle": "àªà«àªªà«àª¤àª¸àªàªà«àªàª¾ મà«àªàª²àªµàª¾àª®àª¾àª àªàªµà« àªà«.",
"accmailtext": "[[User talk:$1|$1]] માàªà« રàªà«àª² àªà«àªªà«àª¤àª¸àªàªà«àªàª¾ $2 નૠમà«àªàª²àª¾àªµà« દà«àªµàª¾àª àªà«. ઠનવા àªàª¾àª¤àª¾àª¨à«àªà«àªªà«àª¤àª¸àªàªà«àªàª¾ પà«àª°àªµà«àª¶ àªàª°à«àª¯àª¾ બાદ ''[[Special:ChangePassword|àªà«àªªà«àª¤àª¸àªàªà«àªàª¾ બદલà«]]'' વાપરà«àª¨à« બદલૠશàªàª¾àª¶à«.",
"newarticle": "(નવà«àª¨)",
- "newarticletext": "àªàªª àªà« àªàª¡à«àª¨à« àª
નà«àª¸àª°à«àª¨à« àª
હà«àª પહà«àªàªà«àª¯àª¾ àªà« તૠપાનà«àª àª
સà«àª¤àª¿àª¤à«àªµàª®àª¾àª નથà«.\n નવà«àª પાનà«àª બનાવવા માàªà« નà«àªà« àªàªªà«àª²àª¾ àªàª¾àª¨àª¾àª®àª¾àª લàªàªµàª¾àª¨à«àª શરૠàªàª°à« (વધૠમાહિતિ માàªà« [$1 મદદ] àªà«àª).\n àªà« àªàªª àªà«àª²àª®àª¾àª àª
હà«àª àªàªµà« àªàª¯àª¾ હà«àªµ તà«, àªàªªàª¨àª¾àª બà«àª°àª¾àªàªàª° નાઠ'''બà«àª''' બàªàª¨ પર àªà«àª²àª¿àª àªàª°à«àª¨à« પાàªàª¾ વળà«.",
+ "newarticletext": "'''ઠવિàªàª¿ પà«àª°àªàª²à«àªª પર ઠપà«àª°àªàª¾àª°àª¨à« લà«àª હાલમાઠનથà«''' \n----\n* [[Image:Searchtool.svg|25px|alt=|link=]] '''[[{{ns:special}}:Search/{{PAGENAME}}|â{{PAGENAME}}â]]''' માàªà« શà«àª§à«.\n* [[Image:Nuvola apps fonts.png|25px|alt=|link=]] àªà« લà«àªà«àª¨à«àª શà«àª°à«àª·àª ઠપà«àª°àª¤à«àª¯àª¯ સાથૠશરૠથાય àªà« તà«àª¨à« [[{{ns:special}}:Prefixindex/{{FULLPAGENAME}}|àªàªªàª¸àª°à«àª]] àªà«àª.\n* [[Image:Nuvola apps ksig.png|25px|alt=|link=]]
'''[{{SERVER}}{{localurl:{{NAMESPACE}}:{{PAGENAME}}|action=edit}} ઠશà«àª°à«àª·àªàª¨à«àª નવà«àª પà«àª·à«àª બનાવà«.]''' \n* [[Image:WP-TranslationProject TwoFlags.svg|25px|alt=|link=]] ''વà«àª¶à«àªµàª¿àª લà«àª યà«àªàª¨àª¾'' દà«àªµàª¾àª°àª¾ ઠલà«àªàª¨à« [//vs.aka-online.de/cgi-bin/globalwpsearch.pl?search={{PAGENAMEE}} àª
નà«àª¯ àªàª¾àª·àª¾àªàª®àª¾àª શà«àª§à«.]\n
\nયà«àªàª¦àª¾àª¨àªàª°à«àª¤àª¾àª માàªà«:\n* àªà« àªàªª હાલમાઠઠલà«àª બનાવૠરહà«àª¯àª¾ àªà« તૠપà«àª¤àª¾àª¨àª¾ બà«àª°àª¾àªàªàª°àª¨à« [{{SERVER}}{{localurl:{{NAMESPACE}}:{{PAGENAME}}|action=purge}} àªà«àª¶ àªàª¾àª²à«] àªàª°à«, àª
થવા થà«àª¡à« વધૠરાહ àªà«àª, પàªà« àªàª¾àª® àªàªàª³ વધારà«.\n* àªàª¦àª¾àª ઠપાનà«àª દà«àª° àªàª°àª¾àª¯à«àª àªà«, ઠàªà«àªµàª¾ માàªà« àªà«àªªàª¾ àªàª°à«àª¨à« [{{fullurl:Special:Log|type=delete&page={{FULLPAGENAMEE}}}} ઠપાનાનૠવિલà«àªªàª¨ àªàª¤àª¿àª¹àª¾àª¸] àªà«àª.\n* àªàªª ઠલà«àª બનાવવા માàªà« àªà« તૠàªà«àª°à«àªªàª¾ àªàª°à«àª¨à« નà«àªà« àªàªªà«àª²àª¾ àªàª¾àª¨àª¾àª®àª¾àª લàªàªµàª¾àª¨à«àª શરૠàªàª°à«.\n* àªà« àªàªª àªà«àª²àª®àª¾àª àª
હà«àª àªàªµà« àªàª¯àª¾ àªà« તૠàªàªªàª¨àª¾ બà«àª°àª¾àªàªàª°àª¨àª¾ બà«
ઠબàªàª¨ પર àªà«àª²àª¿àª àªàª°à«àª¨à« પરત ફરà«.
",
"anontalkpagetext": "----\nઠàªàª àª
àªà«àªàª¾àª¤ સàªà«àª¯àª¨à«àª àªàª°à«àªàª¾ પાનà«àª àªà« àªà«àª®àª£à« àªà«àª¯àª¾àª તૠપà«àª¤àª¾àª¨à«àª àªàª¾àª¤à«àª àªà«àª²à«àª¯à«àª નથૠàª
થવા તૠતà«àª¨à« વાપરતા નથà«. \nàªàª¥à« તà«àª®àª¨à« àªàª³àªàªµàª¾ માàªà« àª
મારૠસાàªàªà«àª¯àª¿àª IP સરનામાનૠમદદ લà«àªµà« પડૠàªà«.\nàªàªµà«àª IP સરનામà«àª àªàª£àª¾àª àª
નà«àª¯ સàªà«àª¯à« પણ વાપરતા હà«àª શàªà«.\nàªà« તમૠàª
àªà«àªàª¾àª¤ સàªà«àª¯ હà«àªµ àª
નૠમાનતા હà«àªµ àªà« àª
સàªàª§àª¿àª¤ àªàª¿àªªà«àªªàª£à«àª તમારૠતરફ વાળવામાઠàªàªµà« àªà«, તૠàªà«àªªàª¯àª¾ [[Special:UserLogin/signup|create an account]] àª
થવા [[Special:UserLogin|log in]]નૠàªàªªàª¯à«àª àªàª°àª¶à« àªà«àª¥à« તમનૠàªà«àª àª
àªà«àªàª¾àª¤ સàªà«àª¯ સમàªàªµàª¾àª¨à« àªà«àª² àªàªµàª¿àª·à«àª¯àª®àª¾àª àªàª¾àª³à« શàªàª¾àª¯.",
"noarticletext": "ઠપાનામાઠહાલમાઠàªà«àª માહિતિ નથà«.\nતમૠ[[Special:Search/{{PAGENAME}}|ઠશબà«àª¦]] ધરાવતાઠàª
નà«àª¯ લà«àªà« શà«àª§à« શàªà« àªà«, [{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} સàªàª²àªà«àª¨ માહિતિ પતà«àª°àªà«àª®àª¾àª શà«àª§à« શàªà« àªà«],\nàª
થવા [{{fullurl:{{FULLPAGENAME}}|action=edit}} ઠપાનામાઠફà«àª°àª«àª¾àª° àªàª°à«] માહિતિ àªàª®à«àª°àªµàª¾àª¨à«àª શરૠàªàª°à« શàªà« àªà« .",
"noarticletext-nopermission": "ઠપાનામાઠહાલમાઠàªà«àª માહિતિ નથà«.\nતમૠ[[Special:Search/{{PAGENAME}}|ઠશબà«àª¦]] ધરાવતાઠàª
નà«àª¯ લà«àªà« શà«àª§à« શàªà« àªà«, àª
થવા [{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} સàªàª²àªà«àª¨ માહિતિ પતà«àª°àªà«àª®àª¾àª શà«àª§à« શàªà« àªà«], પરàªàª¤à« તમનૠઠપાનà«àª બનાવવાનૠમàªàªà«àª°à« નથà«.",
@@ -1538,8 +1539,6 @@
"categories": "શà«àª°à«àª£à«àª",
"categoriespagetext": "નà«àªà«àª¨à« {{PLURAL:$1|શà«àª°à«àª£à«|શà«àª°à«àª£à«àª}}માઠપાના àªà« àª
નà«àª¯ સàªà«àª¯à« àªà«.\n[[Special:UnusedCategories|વણ વપરાયà«àª²à« શà«àª°à«àª£à«àª]] àª
તà«àª°à« દરà«àª¶àª¾àªµàªµàª¾àª®àª¾àª àªàªµà« નથà«.\n[[Special:WantedCategories|àªàªà«àªàª¿àª¤ શà«àª°à«àª£à«àª]] પણ àªà«àª àªà«àª.",
"categoriesfrom": "àªàª¨àª¾àª¥à« શરૠથતૠશà«àª°à«àª£à« દરà«àª¶àª¾àªµà«:",
- "special-categories-sort-count": "સàªàªà«àª¯àª¾ àªàª§àª¾àª°à«àª¤ àªàª¢àª¤àª¾ àªà«àª°àª®àª®àª¾àª વરà«àªà«àªàª°àª£ àªàª°à«",
- "special-categories-sort-abc": "મà«àª³àª¾àªà«àª·àª°à« પà«àª°àª®àª¾àª£à« àªà«àª વà«",
"deletedcontributions": "સàªà«àª¯àª¨à«àª યà«àªàª¦àª¾àª¨ àªà«àªàª¸à« નાàªà«",
"deletedcontributions-title": "સàªà«àª¯àª¨à«àª àªà«àªàª¸à«àª²à«àª યà«àªàª¦àª¾àª¨",
"sp-deletedcontributions-contribs": "યà«àªàª¦àª¾àª¨",
@@ -2083,11 +2082,7 @@
"import-logentry-upload-detail": "$1 {{PLURAL:$1|પà«àª¨àª°àª¾àªµàª°à«àª¤àª¨|પà«àª¨àª°àª¾àªµàª°à«àª¤àª¨à«}} àªàª¯àª¾àª¤ àªàª°à«àª² àªà«",
"import-logentry-interwiki-detail": "$2 માàªàª¥à« àªàª¯àª¾àª¤ àªàª°à«àª² $1 {{PLURAL:$1|પà«àª¨àª°àª¾àªµàª°à«àª¤àª¨|પà«àª¨àª°àª¾àªµàª°à«àª¤àª¨à«}}",
"javascripttest": "àªàª¾àªµàª¾ સà«àªà«àª°à«àªªà«àª પરà«àªà«àª·àª£",
- "javascripttest-pagetext-noframework": "ઠપાનà«àª àªàª¾àªµàª¾ સà«àªà«àª°à«àªªà«àª àªàª²àª¾àªµàªµàª¾ àªàª°àªà«àª·àª¿àª¤ àªà«.",
- "javascripttest-pagetext-unknownframework": "àª
àªàª¾àª£ àªàªàª¾àª¸àª£à« ફà«àª°à«àª®àªµàª°à«àª \"$1\".",
"javascripttest-pagetext-unknownaction": "\"$1\" àª
àªà«àªàª¾àª¤ àªà«àª°àª¿àª¯àª¾.",
- "javascripttest-pagetext-frameworks": "નà«àªà«àª¨àª¾àª®àª¾àªàª¥à« àªà«àª àªàª àªàªàª¾àª¸àª£à« ફà«àª°à«àª®àªµàª°à«àª પસàªàª¦ àªàª°à« : $1",
- "javascripttest-pagetext-skins": "àªàªàª¾àª¸àª£à« àªàª°àªµàª¾ માàªà«àª¨à« સà«àªà«àª¨ પસàªàª¦ àªàª°à«",
"javascripttest-qunit-intro": "mediawiki.org પર [$1 testing documentation] તપાસ માહિતૠàªà«àª",
"tooltip-pt-userpage": "{{GENDER:|તમારà«àª સàªà«àª¯}} પાનà«àª",
"tooltip-pt-anonuserpage": "IP સરનામà«àª માàªà«àª¨àª¾ સàªà«àª¯ પાનામાઠતમૠફà«àª°àª«àª¾àª° àªàª°à« રહà«àª¯àª¾àª àªà«.",
@@ -2320,8 +2315,8 @@
"exif-colorspace": "રàªàª માàªà« àªàªà«àª¯àª¾",
"exif-componentsconfiguration": "દરà«àª àªàª¾àªàª¨à« àª
રà«àª¥",
"exif-compressedbitsperpixel": "àªàª¿àª¤à«àª° સરàªàª¾àª®àª£à« મà«àª¡",
- "exif-pixelydimension": "àªàª¿àª¤à«àª° પહà«àª³àª¾àª",
- "exif-pixelxdimension": "àªàª¿àª¤à«àª°àª¨à« àªàªàªàª¾àª",
+ "exif-pixelxdimension": "àªàª¿àª¤à«àª° પહà«àª³àª¾àª",
+ "exif-pixelydimension": "àªàª¿àª¤à«àª°àª¨à« àªàªàªàª¾àª",
"exif-usercomment": "સàªà«àª¯àª¨à« àªàª¿àªªà«àªªàª£à«",
"exif-relatedsoundfile": "સàªàª¬àªàª§àª¿àª¤ શà«àª°àª¾àªµà«àª¯ ફાàªàª²à«",
"exif-datetimeoriginal": "નિરà«àª®àª¿àª¤à«àª¨à« સમય àª
નૠતારà«àª",
@@ -2744,7 +2739,6 @@
"version-entrypoints-header-url": "URL",
"version-libraries-library": "લાàªàª¬à«àª°à«àª°à«",
"version-libraries-version": "àªàªµà«àª¤à«àª¤àª¿",
- "redirect-legend": "ફાàªàª² àª
થવા પાનાઠતરફ વાળà«",
"redirect-submit": "àªàª¾àª",
"redirect-lookup": "àªà«àª:",
"redirect-value": "àªàª¿àªàª®àª¤:",
@@ -2755,7 +2749,6 @@
"redirect-not-exists": "àªàª¿àªàª®àª¤ મળૠનહà«",
"fileduplicatesearch": "નàªàª² ફાàªàª² શà«àª§à«",
"fileduplicatesearch-summary": "હà«àª¶ àªàª¿àªàª®àª¤ પર àªàª§àª¾àª°àª¿àª¤ àªàª¬à«àª¹à«àª¬ ફાàªàª²à« શà«àª§à«.",
- "fileduplicatesearch-legend": "નàªàª² શà«àª§à«",
"fileduplicatesearch-filename": "ફાàªàª² નામ",
"fileduplicatesearch-submit": "શà«àª§",
"fileduplicatesearch-info": "$1 à $2 પà«àªà«àª¸àª², ફાàªàª²àª¨à«àª àªàª¦: $3, MIME પà«àª°àªàª¾àª°: $4",
diff --git a/languages/i18n/he.json b/languages/i18n/he.json
index 3ae47f880b..ef46c809eb 100644
--- a/languages/i18n/he.json
+++ b/languages/i18n/he.json
@@ -33,28 +33,30 @@
"Eraab",
"Geagea",
"פ××××שער",
- "DatGuy"
+ "DatGuy",
+ "IKhitron"
]
},
"tog-underline": "ס×××× ×§×ש×ר×× ××§× ×ª×ת×:",
- "tog-hideminor": "×סתרת ש×× ×××× ××©× ××× ×רש××ת ×ש×× ×××× ×××ר×× ××",
- "tog-hidepatrolled": "×סתרת ש×× ×××× ×××ק×× ×רש××ת ×ש×× ×××× ×××ר×× ××",
+ "tog-hideminor": "×סתרת ער×××ת ××©× ××ת ×××£ ×ש×× ×××× ×××ר×× ××",
+ "tog-hidepatrolled": "×סתרת ש×× ×××× ×××ק×× ×××£ ×ש×× ×××× ×××ר×× ××",
"tog-newpageshidepatrolled": "×סתרת ×פ×× ×××ק×× ×רש××ת ××פ×× ×××ש××",
- "tog-hidecategorization": "×סתרת ס×××× ×פ×× ×ק×××ר××ת",
+ "tog-hidecategorization": "×סתרת ש×× ×××× ×ק×××ר××ת ×©× ×פ××",
"tog-extendwatchlist": "×ר××ת רש××ת ×××¢×§× ×× ×©×ª×¦×× ×ת ×× ×ש×× ××××, ×× ×¨×§ ×ת ×ש×× ×××× ×××ר×× ×× ××× ××£",
- "tog-usenewrc": "ק××××¥ ×ש×× ×××× ××¤× ××£ ×ש×× ×××× ×××ר×× ×× ××רש××ת ××עק×",
+ "tog-usenewrc": "ק××××¥ ×ש×× ×××× ××¤× ×פ×× ×××£ ×ש×× ×××× ×××ר×× ×× ××רש××ת ××עק×",
"tog-numberheadings": "×ספ×ר ××תר×ת ×××××××",
"tog-showtoolbar": "×צ×ת סר×× ×ער×××",
"tog-editondblclick": "ער××ת ×פ×× ×××××¦× ×פ×××",
- "tog-editsectiononrightclick": "×פע×ת ער××ת פסק××ת ×××צע×ת ××××¦× ××× ×ת ×¢× ××תר×ת ×פסק××ת",
+ "tog-editsectiononrightclick": "ער××ת פסק××ת ×××צע×ת ××××¦× ××× ×ת ×¢× ××תר×ת ×פסק××ת",
"tog-watchcreations": "××ספת ×פ×× ×©××¦×¨×ª× ×ק×צ×× ×©××¢×××ª× ×רש××ת ×××¢×§× ×©××",
"tog-watchdefault": "××ספת ×פ×× ×ק×צ×× ×©×¢×¨××ª× ×רש××ת ×××¢×§× ×©××",
"tog-watchmoves": "××ספת ×פ×× ×ק×צ×× ×©××¢××¨×ª× ×רש××ת ×××¢×§× ×©××",
"tog-watchdeletion": "××ספת ×פ×× ×ק×צ×× ×©×××§×ª× ×רש××ת ×××¢×§× ×©××",
- "tog-watchrollback": "××ספת ×פ×× ×©××× ×××¦×¢×ª× ×©×××ר ×××¨×¡× ×§×××ת ×רש××ת ×××¢×§× ×©××",
- "tog-minordefault": "ס×××× ×× ×¤×¢××ת ער××× ×××©× ×ת ××ר×רת ××××",
+ "tog-watchuploads": "××ספת ק×צ×× ××ש×× ×©××¢×××ª× ×רש××ת ×××¢×§× ×©××",
+ "tog-watchrollback": "××ספת ×פ×× ×©×××¦×¢×ª× ××× ×©×××ר ×××ר ×רש××ת ×××¢×§× ×©××",
+ "tog-minordefault": "ס×××× ×× ×¢×¨××× ×××©× ×ת ××ר×רת ××××",
"tog-previewontop": "×צ×ת תצ××× ×ק×××× ××¤× × ×ª××ת ×ער×××",
- "tog-previewonfirst": "×צ×ת תצ××× ×ק×××× ×ער××× ×¨×ש×× ×",
+ "tog-previewonfirst": "×צ×ת תצ××× ×ק×××× ×ער××× ×ר×ש×× ×",
"tog-enotifwatchlistpages": "×ש××× ×××× ×××\"× ××שר ××©×ª× × ××£ ×× ×§×××¥ ×רש××ת ×××¢×§× ×©××",
"tog-enotifusertalkpages": "×ש××× ×××× ×××\"× ××שר × ×¢×©× ×©×× ×× ×××£ ש××ת ××שת×ש ש××",
"tog-enotifminoredits": "×ש××× ×××× ×××\"× ×× ×¢× ×¢×¨×××ת ××©× ××ת ×©× ×פ×× ×ק×צ××",
@@ -62,30 +64,30 @@
"tog-shownumberswatching": "×צ×ת ×ספר ××שת×ש×× ××¢×ק×××",
"tog-oldsig": "××ת××× ×× ××××ת:",
"tog-fancysig": "×ת×××ס×ת ××ת××× ×ק×× ×××§× (××× ×§×ש×ר ×××××××)",
- "tog-uselivepreview": "ש×××ש ×תצ××× ×ק×××× ×××",
+ "tog-uselivepreview": "ש×××ש ×תצ××× ×ק×××× ×××ר×",
"tog-forceeditsummary": "×צ×ת ××××¨× ×עת ××× ×¡×ª תקצ×ר ער××× ×¨×ק",
"tog-watchlisthideown": "×סתרת ×ער×××ת ש×× ×רש××ת ××עק×",
"tog-watchlisthidebots": "×סתרת ער×××ת ×©× ××××× ×רש××ת ××עק×",
"tog-watchlisthideminor": "×סתרת ער×××ת ××©× ××ת ×רש××ת ××עק×",
"tog-watchlisthideliu": "×סתרת ער×××ת ×©× ×שת×ש×× ×¨×©×××× ×רש××ת ××עק×",
- "tog-watchlistreloadautomatically": "×¨×¢× ×× ××××××× ×©× ×¨×©××ת ×××¢×§× ××× ×¤×¢× ×©××¡× × ××©×ª× × (× ×רש JavaScript)",
+ "tog-watchlistreloadautomatically": "×¨×¢× ×× ××××××× ×©× ×¨×©××ת ×××¢×§× ××× ×¤×¢× ×©××¡× × ××©×ª× × (×ר×ש JavaScript)",
"tog-watchlisthideanons": "×סתרת ער×××ת ×©× ×שת×ש×× ×× ×× ××××× ×רש××ת ××עק×",
"tog-watchlisthidepatrolled": "×סתרת ער×××ת ×××ק×ת ×רש××ת ××עק×",
- "tog-watchlisthidecategorization": "×סתרת ס×××× ×פ×× ×ק×××ר××ת",
- "tog-ccmeonemails": "×ש××× ×××× ×עתק×× ×©× ××××¢×ת ×××ר ××ק×ר×× × ×©×©×××ª× ××שת×ש×× ××ר××",
- "tog-diffonly": "××××× ×צ×ת ת××× ×××£ ×ת×ת ××ש××××ת ××רס××ת",
+ "tog-watchlisthidecategorization": "×סתרת ש×× ×××× ×ק×××ר××ת ×©× ×פ××",
+ "tog-ccmeonemails": "×ש××× ×××× ×עתק×× ×©× ××××¢×ת ×××\"× ×©×©×××ª× ××שת×ש×× ××ר××",
+ "tog-diffonly": "××××× ×צ×ת ת××× ×××£ ×ת×ת ××ש×××ת ××רס××ת",
"tog-showhiddencats": "×צ×ת ק×××ר××ת ××סתר×ת",
"tog-norollbackdiff": "×ש××ת ××××××× ××× ××רס××ת ×××ר ××צ××¢ ש×××ר",
"tog-useeditwarning": "×צ×ת ××××¨× ×עת ×¢×××ת ××£ ער××× ×¢× ×©×× ×××× ×©××¨× × ×©×ר×",
"tog-prefershttps": "ת××× ××שת×ש ×תקש×רת ××××××ת ×××ר ××× ××¡× ××ש×××",
"underline-always": "ת×××",
"underline-never": "××¢××× ××",
- "underline-default": "×ר×רת ×××× ×©× ××¢×צ×× ×× ×©× ××פ×פ×",
+ "underline-default": "×ר×רת ××××× ×©× ××¢×צ×× ×× ×©× ××פ×פ×",
"editfont-style": "××××¤× ×ת××ת ×ער×××:",
- "editfont-default": "×ר×רת ×××× ×©× ××פ×פ×",
+ "editfont-default": "×ר×רת ××××× ×©× ××פ×פ×",
"editfont-monospace": "×××¤× ×ר××× ×§×××¢ (monospace)",
- "editfont-sansserif": "×××¤× ××× ×ª××× (sans-serif)",
- "editfont-serif": "×××¤× ×¢× ×ª××× (serif)",
+ "editfont-sansserif": "×××¤× ×× ××¢××¦× (sans-serif)",
+ "editfont-serif": "×××¤× ××¢××¦× (serif)",
"sunday": "ר×ש××",
"monday": "×©× ×",
"tuesday": "ש××ש×",
@@ -171,7 +173,7 @@
"article": "××£ ת×××",
"newwindow": "(× ×¤×ª× ××××× ××ש)",
"cancel": "×××××",
- "moredotdotdot": "×¢××â¦",
+ "moredotdotdot": "×¢××...",
"morenotlisted": "רש××× ×× ××× × ××××.",
"mypage": "××£ ×שת×ש",
"mytalk": "ש×××",
@@ -382,7 +384,7 @@
"actionthrottled": "×פע××× ××××××",
"actionthrottledtext": "××××¦×¢× × ×× ×©×××ש ×רע×, ק×××ת ××××× ×¢× ××צ××¢ פע××× ×× ×¤×¢××× ×¨××ת ××× ×××× ×§×¦×¨, ××ר×ת ××××××× ×××ת.\n× × ×× ×¡×ת ש×× ××¢×× ×ספר ×ק×ת.",
"protectedpagetext": "××£ ×× ×××× ××× ××× ××¢ ער××× ×פע×××ת ××ר×ת.",
- "viewsourcetext": "××פשר××ª× ×צפ×ת ×××§×¡× ××ק×ר ×©× ×××£ ×××עת×ק×.",
+ "viewsourcetext": "××פשר×ת×× ×צפ×ת ×××§×¡× ××ק×ר ×©× ×××£ ×××עת×ק×.",
"viewyourtext": "××פשר××ª× ×צפ×ת ×××§×¡× ××ק×ר ×©× ×ער×××ת ש×× ×××£ ××× ×××עת×ק×.",
"protectedinterface": "××£ ×× ××× ××× ×ס×רת ×פ×× ××ספק×× ××××¢×ת ×ער×ת ×ת××× × ××תר ×××§× ××, ××××× ××× ××× ××¢ ×ש×ת×ת.\n××× ×××ס××£ ×× ××©× ×ת תר××××× ××× ××ª×¨× ××××ק×, ×× × ×שת××©× ×Ö¾[//translatewiki.net/ translatewiki.net], פר×××§× ×תר××× ×©× ××××Ö¾××ק×.",
"editinginterface": "×××ר×: ×××£ ש××ª× ×¢×ר××× ××× ××× ××פ×× ××ספק×× ××××¢×ת ×ער×ת ×ת××× ×.\nש×× ×××× ×××£ ×× ×שפ××¢× ×¢× ×ª×¦××ת ××שק ××שת×ש ×©× ×שת×ש×× ××ר×× ××תר ×××§× ××.",
@@ -393,7 +395,7 @@
"customjsprotected": "××× × ×××¨×©× ×ער×× ××£ JavaScript ×× ××××× ×©××× ×××× ×××ר×ת ××ש××ת ×©× ×שת×ש ××ר.",
"mycustomcssprotected": "××× ×× ×רש×× ×ער×× ××£ CSS ××.",
"mycustomjsprotected": "××× ×× ×רש×× ×ער×× ××£ JavaScript ××.",
- "myprivateinfoprotected": "××× ×× ×רש×× ×ער×× ×ת ×××××¢ ×פר×× ×©××",
+ "myprivateinfoprotected": "××× ×× ×רש×× ×ער×× ×ת ×××××¢ ×פר×× ×©××.",
"mypreferencesprotected": "××× ×× ×רש×× ×ער×× ×ת ×××¢×פ×ת ש××.",
"ns-specialprotected": "×× × ××ª× ×ער×× ×פ×× ×××××××.",
"titleprotected": "[[User:$1|$1]] {{GENDER:$1|×פע××|×פע×××}} ××× × ×¢× ×××£ ××× ××¤× × ×צ×ר×.\n×ס××× ×©× ××ª× × ××× ××× $2 .",
@@ -406,7 +408,7 @@
"virus-badscanner": "×××ר×ת ש××××ת: ס×רק ××××ר×ס×× ××× × ××××¢: ''$1''",
"virus-scanfailed": "×סר××§× × ×ש×× (ק××: $1)",
"virus-unknownscanner": "×× ××Ö¾××ר×ס ×××ª× ××××¢:",
- "logouttext": "'''×צ××ª× ×× ×¢×ª× ×××ש×××.'''\n\nש××× ×× ×× ××ת×× ×©×פ×× ××××× ××ש××× ××××ת ××צ××× ××××× ××ª× ×¢×××× ××××ר×× ××ש××× ×¢× ×©×ª× ×§× ×ת ×××××× ×©× ××פ××¤× ×©×××.",
+ "logouttext": "×צ××ª× ×× ×¢×ª× ×××ש×××. \n\nש××× ×× ×× ××ת×× ×©×פ×× ××××× ××ש××× ××××ת ××צ××× ××××× ××ª× ×¢×××× ××××ר×× ××ש××× ×¢× ×©×ª× ×§× ×ת ×××××× ×©× ××פ××¤× ×©×××.",
"cannotlogoutnow-title": "×× × ××ª× ×צ×ת ×××ש××× ×¢×ש××",
"cannotlogoutnow-text": "××צ××× ××× × ×פשר×ת ×עת ש×××ש ×{{GRAMMAR:ת××××ת|$1}}.",
"welcomeuser": "×ר×× ××××, $1!",
@@ -493,12 +495,12 @@
"noemail": "×× ×¨×©××× ×ת××ת ×××ר ××ק×ר×× × ×¢××ר ×{{GENDER:$1|×שת×ש|×שת×שת}} \"$1\".",
"noemailcreate": "×ש ×ספק ×ת××ת ×××ר ××ק×ר×× × ×ª×§×× ×.",
"passwordsent": "ס×ס×× ×××©× × ×©××× ××ת××ת ××××ר ×××ק×ר×× × ×רש××× ×¢××ר \"$1\".\n×× × ×××× ×¡× ×××¨× ××תר ×××¨× ×©×ª×§××× ××ת×.",
- "blocked-mailpassword": "×ת××ת ×Ö¾IP ש×× × ×ס×× ×ער×××, ××פ××× ××× × ×××¨×©× ××שת×ש ××פשר×ת ש×××ר ×ס×ס××, ×××ת ××× ××× ××¢ × ×צ×× ××¨×¢× ×©× ×ת××× ×.",
+ "blocked-mailpassword": "×ת××ת ×Ö¾IP ש×× × ×ס×× ×ער×××. ××× ××× ××¢ × ×צ×× ×רע×, ××× × ×××¨×©× ××שת×ש ××פשר×ת ש×××ר ×ס×ס××.",
"eauthentsent": "×××\"× ××××ת × ×©×× ××ת××ת ××××\"× ×©×¦××× ×.\n××¤× × ×©×××¨× ×××\"× ××ר×× ××ש××× ××ש××× ×××, ×××× ×¢×××× ×פע×× ××¤× ×××ר××ת ××××\"×, ××× ××שר ש××ש××× ××× ×©××× ×××.",
"throttled-mailpassword": "××ר × ×©×× ×××\"× ×××פ×ס ×ס×ס×× ×{{PLURAL:$1|×©×¢× ×××ר×× ×|שעת××× ×××ר×× ×ת|Ö¾$1 ×שע×ת ×××ר×× ×ת}}.\n××× ××× ××¢ × ×צ×× ×רע×, ×××× ×××ש×× ×¨×§ ×××\"× ××× ××× ××× {{PLURAL:$1|שע×|שעת×××|$1 שע×ת}}.",
"mailerror": "ש×××× ×ש×××ת ×××ר: $1",
"acct_creation_throttle_hit": "××קר×× ××תר ×× ××¨× ×ת××ת ×Ö¾IP ש××× ××ר ××¦×¨× {{PLURAL:$1|×ש××× ×××|$1 ×ש××× ×ת}} ×××× ×××ר××. ××× ××קס×××× ×××תר ×תק××¤× ××.\n×פ×××, ××קר×× ××¨× ×ת××ת ×Ö¾IP ×××ת ×× ×××××× ××צ×ר ×ש××× ×ת × ×ספ×× ×ר××¢ ××.",
- "emailauthenticated": "×ת××ת ××××\"× ×©×× ××××ª× ×Ö¾$3, $2.",
+ "emailauthenticated": "×ת××ת ××××\"× ×©×× ××××ª× ×Ö¾$2 ××©×¢× $3.",
"emailnotauthenticated": "×ת××ת ××××\"× ×©××× ×¢×××× ×× ×××ת×.\n×× ××ש×× ××××× ×××\"× ×¢××ר ××£ ××ת ××ת××× ×ת ××××ת.",
"noemailprefs": "×ש ×צ××× ×ת××ת ×××\"× ×××¢×פ×ת ש×× ××× ×©×ª××× ×ת ××× ××¢×××.",
"emailconfirmlink": "××ש×ר ×ת××ת ××××\"× ×©××",
@@ -631,7 +633,7 @@
"hr_tip": "×§× ×××¤×§× (×שת××× ××××× ×¢ ×ש×××ש ×ק×)",
"summary": "תקצ×ר:",
"subject": "× ×ש×:",
- "minoredit": "××× ×©×× ×× ××©× ×",
+ "minoredit": "×××× ×¢×¨××× ××©× ×ת",
"watchthis": "××¢×§× ×××¨× ××£ ××",
"savearticle": "ש××ר×",
"preview": "תצ××× ×ק××××",
@@ -661,19 +663,19 @@
"accmailtitle": "×ס×ס×× × ×©×××",
"accmailtext": "ס×ס×× ×קר××ת ×¢××ר [[User talk:$1|$1]] × ×©××× ×× $2. × ××ª× ××©× ××ª× ×××£ '''[[Special:ChangePassword|ש×× ×× ×ס×ס××]]''' ×××ר ××× ×ס×.",
"newarticle": "(××ש)",
- "newarticletext": "×××¢×ª× ×××£ שע×××× ××× × × ×§×××.\n××× ××צ×ר ×ת ×××£ ×××, ×ת×××× ××ק××× ×ת××ת ×××§×¡× ×××× (ר×× ×ת [$1 ××£ ××¢×ר×] ×××××¢ × ×סף).\n×× ×××¢×ª× ×××× ×××¢×ת, ×××¦× ×¢× ×פת×ר ××××¨× (Back) ××פ××¤× ×©×××.",
+ "newarticletext": "×××¢×ª× ×××£ שע×××× ××× × ×§×××.\n××× ××צ×ר ×ת ×××£ ×××, ×ת×××× ××ק××× ×ת××ת ×××§×¡× ×©×××× (ר×× ×ת [$1 ××£ ××¢×ר×] ×××××¢ × ×סף).\n×× ×××¢×ª× ×××× ×××¢×ת, ×××¦× ×¢× ×פת×ר ××××¨× (Back) ××פ××¤× ×©×××.",
"anontalkpagetext": "----\n××× ××£ ש××× ×©× ×שת×ש ×× ×× ××× ×©×¢×××× ×× ×צר ×ש××× ××ער×ת, ×× ×©××× ×× ×שת×ש ××. \n××× ×¢××× × ××שת×ש ××ת××ת ×Ö¾IP ××ספר×ת ××× ××××ת×.\n××ת×× ×©×ת××ת IP ×× ×ª××× ×ש×תפת ××ספר ×שת×ש××.\n×× ××ª× ×שת×ש×× ×× ×× ××××× ××ר××ש×× ×©×§××××ª× ××××¢×ת ×××ª× ×¨×××× ×××ת, ×× × [[Special:UserLogin/signup|×¦×¨× ×ש×××]] ×× [[Special:UserLogin|×××× ×¡× ××ש×××]] ××× ××××× ×¢ ×××××× ×¢×ª××× ×¢× ×שת×ש×× ×× ×× ××××× × ×ספ××.",
- "noarticletext": "××× ×ר××¢ ××§×¡× ×××£ ×××.\n××פשר×ת×× [[Special:Search/{{PAGENAME}}|××פש ×ת ××תרת ×××£]] ××פ×× ××ר××,\n[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} ××פש ×ת ×××£ ××××× ××],\n×× [{{fullurl:{{FULLPAGENAME}}|action=edit}} ××צ×ר ×ת ×××£] .",
- "noarticletext-nopermission": "××× ×ר××¢ ××§×¡× ×××£ ×××.\n××פשר×ת×× [[Special:Search/{{PAGENAME}}|××פש ×ת ××תרת ×××£]] ××פ×× ××ר××,\n×× [{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} ××פש ×ת ×××£ ××××× ××] ,\n×× ××× ×× ××רש×× ××צ×ר ×ת ×××£.",
+ "noarticletext": "××× ×ר××¢ ××§×¡× ×××£ ×××.\n××פשר××ª× [[Special:Search/{{PAGENAME}}|××פש ×ת ××תרת ×××£]] ××פ×× ××ר××,\n[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} ××פש ×ת ×××£ ××××× ××],\n×× [{{fullurl:{{FULLPAGENAME}}|action=edit}} ××צ×ר ×ת ×××£] .",
+ "noarticletext-nopermission": "××× ×ר××¢ ××§×¡× ×××£ ×××.\n××פשר××ª× [[Special:Search/{{PAGENAME}}|××פש ×ת ××תרת ×××£]] ××פ×× ××ר×× ×× [{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} ××פש ×ת ×××£ ××××× ××] , ×× ××× ×× ×רש×× ××צ×ר ×ת ×××£.",
"missing-revision": "××¨×¡× #$1 ×©× ×××£ \"{{FULLPAGENAME}}\" ××× × ×§×××ת.\n\n×× × ××¨× ×××¨× ××× ×¢×Ö¾××× ××××¦× ×¢× ×§×ש×ר ××©× ×××¨×¡× ×§×××ת ×©× ××£ ×©× ××ק.\n×פשר ××צ×× ×¤×¨××× ×[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} ×××× ××××ק×ת].",
- "userpage-userdoesnotexist": "×ש××× ××שת×ש \"$1\" ××× × ×¨×©××.\n×× × ×××§× ×× ×רצ×× ×× ××צ×ר/×ער×× ××£ ××.",
+ "userpage-userdoesnotexist": "×ש××× ××שת×ש \"$1\" ××× × ×¨×©××.\n×× × ×Ö´Ö¼××§× ×× ×רצ×× ×× ××צ×ר/×ער×× ×ת ×××£ ×××.",
"userpage-userdoesnotexist-view": "×ש××× ××שת×ש \"$1\" ××× × ×¨×©××.",
"blocked-notice-logextract": "{{GENDER:$1|××שת×ש ××× ×ס××|××שת×שת ××× ×ס×××}} ×ר××¢.\n×פע××× ×××ר×× × ××××× ××ס×××ת ××צ×ת ××××:",
"clearyourcache": "×ער×: ×××ר ×ש××ר×, ××ת×× ×©×ª×¦×ר×× ×× ×§×ת ×ת ×××ר×× ×××××× (cache) ×©× ××פ××¤× ××× ×××××× ×ש×× ××××.\n* פ××רפ×קס / ספ×ר×: ×××¦× ××××××§× ×ת ××קש Shift ×עת ×××צת×× ×¢× ××¢×× × ×××ש (Reload), ×× ×××¦× ×¢× ×¦×ר××£ ××קש×× Ctrl-F5 ×× Ctrl-R (â-R ××××©× ×ק)\n* ×××× ×ר××: ×××¦× ×¢× ×¦×ר××£ ××קש×× Ctrl-Shift-R (â-Shift-R ××××©× ×ק)\n* ××× ××¨× × ×קספ××רר: ×××¦× ××××××§× ×ת ××קש Ctrl ×עת ×××צת×× ×¢× ×¨×¢× × (Refresh), ×× ×××¦× ×¢× ×¦×ר××£ ××קש×× Ctrl-F5 \n* ××פר×: × ×§× ×ת ×××××× ×Ö¾Toolsâ â Preferences ",
- "usercssyoucanpreview": "'''עצ×:''' ×שת××©× ××××¦× \"{{int:showpreview}}\" ××× ××××× ×ת ×××××× ×Ö¾CSS ×××ש ש××× ××¤× × ×ש××ר×.",
- "userjsyoucanpreview": "'''עצ×:''' ×שת××©× ××××¦× \"{{int:showpreview}}\" ××× ××××× ×ת סקר××¤× ×Ö¾JavaScript ×××ש ש××× ××¤× × ×ש××ר×.",
- "usercsspreview": "'''×××¨× ×©×× ×¨×§ תצ××× ×ק×××× ×©× ×××××× ×Ö¾CSS ש×××.'''\n'''××× ××¨× × ×©×ר!'''",
- "userjspreview": "'''×××¨× ×©×× ×¨×§ ×××ק×/תצ××× ×ק×××× ×©× ×¡×§×¨××¤× ×Ö¾JavaScript ש×××.'''\n'''××× ××¨× × ×©×ר!'''",
+ "usercssyoucanpreview": "עצ×: ×שת××©× ××פת×ר \"{{int:showpreview}}\" ××× ××××× ×ת ×××××× ×Ö¾CSS ×××ש ש××× ××¤× × ×ש××ר×.",
+ "userjsyoucanpreview": "עצ×: ×שת××©× ××פת×ר \"{{int:showpreview}}\" ××× ××××× ×ת סקר××¤× ×Ö¾JavaScript ×××ש ש××× ××¤× × ×ש××ר×.",
+ "usercsspreview": "×Ö´××¨× ×©×× ×¨×§ תצ××× ×ק×××× ×©× ×××××× ×Ö¾CSS ש×××.\n××× ×¢×××× ×× × ×©×ר! ",
+ "userjspreview": "×Ö´××¨× ×©×× ×¨×§ ×××ק×/תצ××× ×ק×××× ×©× ×¡×§×¨××¤× ×Ö¾JavaScript ש×××.\n××× ×¢×××× ×× × ×©×ר! ",
"sitecsspreview": "'''×××¨× ×©×× ×¨×§ תצ××× ×ק×××× ×©× ×××××× ×Ö¾CSS ×××.'''\n'''××× ××¨× × ×©×ר!'''",
"sitejspreview": "'''×××¨× ×©×× ×¨×§ תצ××× ×ק×××× ×©× ×§×× ×Ö¾JavaScript ×××.'''\n'''××× ××¨× × ×©×ר!'''",
"userinvalidcssjstitle": "'''×××ר×:''' ××¢×צ×× \"$1\" ××× × ×§×××.\n××¤× .css ×Ö¾.js ××ת×××× ××ש×ת ×שת×ש×× ×××תרת ×¢× ××ת××ת ק×× ×ת â ××ש×, {{ns:user}}:×××××/vector.css ××× {{ns:user}}:×××××/Vector.css.",
@@ -718,12 +720,12 @@
"sectioneditnotsupported-title": "ער××ת פסק××ת ××× × × ×ª××ת",
"sectioneditnotsupported-text": "ער××ת פסק××ת ××× × × ×ª××ת ×××£ ××.",
"permissionserrors": "ש×××ת ×רש××",
- "permissionserrorstext": "××× × ×××¨×©× ××צע פע××× ××, {{PLURAL:$1|××ס××× ××××|××ס×××ת ××××ת}}:",
- "permissionserrorstext-withaction": "××× × ×××¨×©× $2, ××{{PLURAL:$1|ס××× ××××|ס×××ת ××××ת}}:",
+ "permissionserrorstext": "××× ×× ××רש×× ××צע פע××× ××, {{PLURAL:$1|××ס××× ××××|××ס×××ת ××××ת}}:",
+ "permissionserrorstext-withaction": "××× ×× ××רש×× $2, {{PLURAL:$1|××ס××× ××××|××ס×××ת ××××ת}}:",
"contentmodelediterror": "×× × ××ª× ×ער×× ×ת ×××¨×¡× ×××ת ×× ×××× ×ת××× ×©×× ××× $1
, ×ש×× × ××××× ×ת××× ×× ×××× ×©× ×××£, $2
.",
"recreate-moveddeleted-warn": "'''×××ר×: ×× ×× ××צר×× ××£ ××ש ×©× ××ק ××¢×ר.'''\n\n×××× ×שק×× ×× ×××× ×× × ××× ×××ש×× ×ער×× ×ת ×××£.\n×××× × ××××ק×ת ××××¢×ר×ת ×©× ×××£ ××צ××× ××××:",
"moveddeleted-notice": "××£ ×× × ××ק.\n×××× × ××××ק×ת ××××¢×ר×ת ×©× ×××£ ××צ××× ××××.",
- "moveddeleted-notice-recent": "×צ×ער××, ×××£ ××× × ××ק ×××ר×× × (×Ö¾24 ×שע×ת ×××ר×× ×ת).\n×××× × ×××××§× ××××¢××¨× ×©× ×××£ ××צ××× ×××× ××¢×××.",
+ "moveddeleted-notice-recent": "×צ×ער××, ×××£ ××× × ××ק ×××ר×× × (×Ö¾24 ×שע×ת ×××ר×× ×ת).\n×××× × ××××ק×ת ××××¢×ר×ת ×©× ×××£ ××צ××× ×××× ××¢×××.",
"log-fulllog": "×צ×ת ××××× ××××",
"edit-hook-aborted": "×ער××× ××××× ×¢×Ö¾××× Hook.\n×× × ××ª× ×ס×ר ××××××.",
"edit-gone-missing": "×× × ××ª× ××¢××× ×ת ×××£.\n× ×¨×× ×©××× × ××ק.",
@@ -767,7 +769,7 @@
"parser-unstrip-loop-warning": "× ×צ×× ××××× ×פר×ס×",
"parser-unstrip-recursion-limit": "×¢××ק ×רק×רס×× ×©× ×פר××¡× ×¢×ר ×ת ×××××× ($1)",
"converter-manual-rule-error": "×ת×××ª× ×©×××× ×××× ××רת ×©×¤× ××× ×",
- "undo-success": "× ××ª× ×××× ×ת ×ער×××. ×× × ×Ö´××§× ×ת ×ש×××ת ××רס××ת ×××× ××× ××××× ×©×× ×× ×©××ª× ×¨×צ×× ×עש×ת, ××× ×©××¨× ×ת ×ש×× ×××× ×××× ××× ××צע ×ת ××××× ×ער×××.",
+ "undo-success": "× ××ª× ×××× ×ת ×ער×××.\n×× × ×Ö´Ö¼××§× ×ת ×ש×××ת ××רס××ת ×××× ××× ××××× ×©×× ××× ×× ×©××ª× ×¨×צ×× ×עש×ת, ××× ×©Ö´×××¨× ×ת ×ש×× ×××× ×××× ××× ×ס××× ×ת ××××× ×ער×××.",
"undo-failure": "×× × ××ª× ××× ×××× ×ת ×ער××× ×¢×§× ××ª× ×ש×ת ×¢× ×¢×¨×××ת ××××ר×ת ××תר.",
"undo-norev": "×× × ××ª× ××× ×××× ×ת ×ער××× ×× ××× ××× × ×§×××ת ×× ×× ××× × ××ק×.",
"undo-nochange": "× ×¨×× ×©×ער××× ××ר ×××××.",
@@ -817,8 +819,8 @@
"rev-deleted-unhide-diff": "××ת ×××רס××ת ש×××§×©×ª× ××ש××ת '''× ××ק×'''.\n× ××ª× ××צ×× ×¤×¨××× ×¢× ×× ×[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} ×××× ××××ק×ת].\n××ª× ×¢×××× ×××××× [$1 ×צפ×ת ××××××× ××× ××רס××ת] ×× ×רצ×× ×× ×××ש××.",
"rev-suppressed-unhide-diff": "××ת ×××רס××ת ש×××§×©×ª× ××ש××ת ×××¢××× .\n× ××ª× ××צ×× ×¤×¨××× ×¢× ×× ×[{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} ×××× ×××¢×××ת].\n××ª× ×¢×××× ×××××× [$1 ×צפ×ת ××××××× ××× ××רס××ת] ×× ×רצ×× ×× ×××ש××.",
"rev-deleted-diff-view": "××ת ×××רס××ת ש×××§×©×ª× ××ש××ת '''× ××ק×'''.\n××ª× ×¢×××× ×××××× ×צפ×ת ××××××× ××× ××רס××ת; × ××ª× ××צ×× ×¤×¨××× ×¢× ×× ×[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} ×××× ××××ק×ת].",
- "rev-suppressed-diff-view": "××ת ×××רס××ת ש×××§×©×ª× ××ש××ת ×××¢××× \n××ª× ×××××× ×צפ×ת ××××××× ××× ××רס××ת; × ××ª× ××צ×× ×¤×¨××× ×¢× ×× ×[{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} ×××× ×××¢×××ת].",
- "rev-delundel": "×צ××/×סתר×",
+ "rev-suppressed-diff-view": "××ת ×××רס××ת ש×××§×©×ª× ××ש××ת ×××¢××× .\n××ª× ×××××× ×צפ×ת ××××××× ××× ××רס××ת; × ××ª× ××צ×× ×¤×¨××× ×¢× ×× ×[{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} ×××× ×××¢×××ת].",
+ "rev-delundel": "ש×× ×× ××¦× ×תצ×××",
"rev-showdeleted": "×צ××",
"revisiondelete": "××××§× ×ש×××ר ×©× ×רס××ת",
"revdelete-nooldid-title": "×רסת ×××¨× ×××ª× ×ª×§×× ×",
@@ -849,18 +851,18 @@
"revdelete-unsuppress": "×סרת ×××××ת ××רס××ת ××ש×××ר×ת",
"revdelete-log": "ס×××:",
"revdelete-submit": "××צ××¢ ×¢× {{PLURAL:$1|×××¨×¡× ×©× ××ר×|××רס××ת ×©× ××ר×}}",
- "revdelete-success": "××¦× ×צ×ת ×××¨×¡× ×¢××××.",
- "revdelete-failure": "×× × ××ª× ××× ××¢××× ×ת ××¦× ×צ×ת ××רס×:\n$1",
- "logdelete-success": "××¦× ×צ×ת פע××ת ××××× ×¢××××.",
- "logdelete-failure": "×× × ××ª× ××× ××¢××× ×ת ××¦× ×צ×ת פע××ת ×××××:\n$1",
- "revdel-restore": "ש×× ×× ××צ××",
+ "revdelete-success": "××¦× ×תצ××× ×©× ×××¨×¡× ×©××Ö¼× ×.",
+ "revdelete-failure": "×× × ××ª× ××× ××©× ×ת ×ת ××¦× ×תצ××× ×©× ××רס×:\n$1",
+ "logdelete-success": "××¦× ×תצ××× ×©× ×¤×¢××ת ××××× ×©××Ö¼× ×.",
+ "logdelete-failure": "×× × ××ª× ××× ××©× ×ת ×ת ××¦× ×תצ××× ×©× ×××××:\n$1",
+ "revdel-restore": "ש×× ×× ××¦× ×תצ×××",
"pagehist": "××ס××ר××ת ×××£",
"deletedhist": "××רס××ת ××××ק×ת",
"revdelete-hide-current": "ש×××× ××סתרת ×פר×× ×ת×ר×× $2, $1: ×× ×××¨×¡× ×× ××××ת.\n×× × ××ª× ××סת×ר ××ת×.",
"revdelete-show-no-access": "ש×××× ××צ×ת ×פר×× ×ת×ר×× $2, $1: פר×× ×× ×¡××× ×\"×××××\".\n××× ×× ×××©× ××××.",
"revdelete-modify-no-access": "ש×××× ×ש×× ×× ×פר×× ×ת×ר×× $2, $1: פר×× ×× ×¡××× ×\"×××××\".\n××× ××× ×××©× ××××.",
"revdelete-modify-missing": "ש×××× ×ש×× ×× ×¤×¨×× ×ספר $1: ××× ××× × × ××¦× ××ס×ס ×× ×ª×× ××!",
- "revdelete-no-change": "'''×××ר×:''' ×פר×× ×ת×ר×× $2, $1 ××ר ×ש ×ת ×××ר×ת ××צ×× ×× ×רש×ת.",
+ "revdelete-no-change": "×××ר×: ×פר×× ×Ö¾$2, $1 ××ר ××× ×××ר×ת ×תצ××× ×©××קשת.",
"revdelete-concurrent-change": "ש×××× ×ש×× ×× ×פר×× ×ת×ר×× $2, $1: × ×¨×× ×©×צ×× ×©×× × ×¢×Ö¾××× ××ש×× ××ר ×××× ×©××ª× × ×ס××ª× ××©× ×ת ××ת×.\n×× × ×××§× ××××× ××.",
"revdelete-only-restricted": "ש×××× ××סתרת ×פר×× ×ת×ר×× $2, $1: ××× ××פשר××ª× ×××¢××× ×¤×¨×××× ××פע××× ××ער×ת ×××× ××××ר ×× ×××ת ××פשר×××ת ×× ×¨××ּת ×××ר×ת.",
"revdelete-reason-dropdown": "* ס×××ת ××××§× × ×¤×צ×ת\n** ×פרת ×××××ת ××צר××\n** תקצ×ר ער××× ×× ××××¢ ×××©× ×× ××××××\n** ×©× ×שת×ש ×× ××××\n** ××××¢ שע××× ××××ת ×ש×× ×רע",
@@ -894,8 +896,8 @@
"mergehistory-no-destination": "××£ ×××¢× $1 ××× × ×§×××.",
"mergehistory-invalid-source": "××£ ××ק×ר ×××× ××××ת ××¢× ××תרת תק×× ×.",
"mergehistory-invalid-destination": "××£ ×××¢× ×××× ××××ת ××¢× ××תרת תק×× ×.",
- "mergehistory-autocomment": "×××× ×ת [[:$1]] ×ת×× [[:$2]]",
- "mergehistory-comment": "×××× ×ת [[:$1]] ×ת×× [[:$2]]: $3",
+ "mergehistory-autocomment": "×××£ [[:$1]] ×××× ×ת×× [[:$2]]",
+ "mergehistory-comment": "×××£ [[:$1]] ×××× ×ת×× [[:$2]]: $3",
"mergehistory-same-destination": "××¤× ××ק×ר ××××¢× ××××",
"mergehistory-reason": "ס×××:",
"mergelog": "×××× ×××××××",
@@ -903,11 +905,11 @@
"mergelogpagetext": "×××× ×¨×©××× ×©× ×××××××× ×××ר×× ×× ×©× ×רס××ת ×××£ ××× ×ת×× ××£ ×©× ×.",
"history-title": "××ס××ר××ת ×רס××ת ×©× ×××£ \"$1\"",
"difference-title": "×××××× ××× ×רס××ת ×××£ \"$1\"",
- "difference-title-multipage": "×××××× ××× ×××£ \"$1\" ×××× ×××£ \"$2\"",
+ "difference-title-multipage": "×××××× ××× ×××£ \"$1\" ×××£ \"$2\"",
"difference-multipage": "(×××××× ××× ×פ××)",
"lineno": "ש××¨× $1:",
"compareselectedversions": "×ש×××ת ××רס××ת ×©× ××ר×",
- "showhideselectedversions": "×צ×ת/×סתרת ××רס××ת ×©× ××ר×",
+ "showhideselectedversions": "ש×× ×× ××¦× ×תצ××× ×©× ××רס××ת ×©× ××ר×",
"editundo": "×××××",
"diff-empty": "(××× ××××××)",
"diff-multi-sameuser": "({{PLURAL:$1|×רסת ××× ××× ××ת|$1 ×רס××ת ××× ×××}} ×©× ×××ª× ×שת×ש {{PLURAL:$1|××× × ××צ×ת|××× × ××צ××ת}})",
@@ -960,7 +962,7 @@
"powersearch-ns": "××פ×ש ×¢×Ö¾×¤× ×ר××× ×©×:",
"powersearch-togglelabel": "×××ר×:",
"powersearch-toggleall": "××××",
- "powersearch-togglenone": "××£ ×××",
+ "powersearch-togglenone": "××£ ×× ×××",
"powersearch-remember": "ש××רת ×××××¨× ×¢××ר ××פ×ש×× ×¢×ª×××××",
"search-external": "××פ×ש ××צ×× ×",
"searchdisabled": "××פ×ש ×{{grammar:ת××××ת|{{SITENAME}}}} ××× × ×××¤×¢× ×עת.\n××× ×ª××× ×פשר ××פש ×××צע×ת ××××.\nש××× ×× ×©××ת×× ×©×××××¢ ×©× {{SITENAME}} ×©× ××× × ××¢××××.",
@@ -978,14 +980,14 @@
"prefs-rc": "ש×× ×××× ××ר×× ××",
"prefs-watchlist": "רש××ת ××עק×",
"prefs-editwatchlist": "ער××ת רש××ת ××עק×",
- "prefs-editwatchlist-label": "ער××ת ער××× ×רש××ת ×××¢×§× ×©××:",
- "prefs-editwatchlist-edit": "צפ××× ××סרת ××תר×ת ×רש××ת ×××¢×§× ×©××",
+ "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-max": "×ספר ×ר××: 1000",
+ "prefs-watchlist-edits": "××ספר ××ר×× ×©× ×ער×××ת ש××צ××ת ×רש××ת ×××¢×§× ×××ר××ת:",
+ "prefs-watchlist-edits-max": "××× ×××תר: 1000",
"prefs-watchlist-token": "×ס×××× ×רש××ת ××עק×:",
"prefs-misc": "ש×× ×ת",
"prefs-resetpass": "ש×× ×× ×¡×ס××",
@@ -994,19 +996,19 @@
"prefs-email": "×פשר×××ת ×××\"×",
"prefs-rendering": "×ר××",
"saveprefs": "ש××ר×",
- "restoreprefs": "ש×××ר ××××ר×ת ××ת××ת××ת (××× ××ש×× ××ת)",
+ "restoreprefs": "ש×××ר ×××ר×ת ×ר×רת ××××× (××× ××ש×× ××ת)",
"prefs-editing": "ער×××",
"rows": "ש×ר×ת:",
"columns": "×¢××××ת:",
"searchresultshead": "××פ×ש",
- "stub-threshold": "סף ××¢×צ×× ×§×ש×ר×× ×קצר×ר×× ($1):",
+ "stub-threshold": "סף ××¢×צ×× ×§×ש×ר×× ×קצר×ר×× ($1):",
"stub-threshold-sample-link": "×××××",
"stub-threshold-disabled": "×××××",
- "recentchangesdays": "×ספר ××××× ×©××צ×× ×××£ ×ש×× ×××× ×××ר×× ××:",
+ "recentchangesdays": "×ספר ××××× ×©××צ××× ×××£ ×ש×× ×××× ×××ר×× ××:",
"recentchangesdays-max": "××× ×××תר {{PLURAL:$1|××× ×××|××××××|$1 ××××}}",
- "recentchangescount": "×ספר ×ער×××ת ש××צ×× ××ר×רת ××××:",
- "prefs-help-recentchangescount": "×××× ××£ ×ש×× ×××× ×××ר×× ××, ××¤× ××ס××ר××ת ×רס××ת ××××× ××.",
- "prefs-help-watchlist-token2": "××× ×××¤×ª× ×ס××× ×©× ×××× × ×©× ×¨×©××ת ×××¢×§× ×©××.\n×× ×× ×©××××¢ ×××ª× ×××× ×קר×× ×ת רש××ת ×××¢×§× ×©××, ××× ××× ×שתף ××ת×.\n[[Special:ResetTokens|×× ×ש ××× ×¦×ר×, ×פשר ××פס ×××ª× ×××]].",
+ "recentchangescount": "×ספר ×ער×××ת ש××צ××ת ××ר×רת ××××:",
+ "prefs-help-recentchangescount": "×××¢××¤× ×××ת ××××ת ×ת ××£ ×ש×× ×××× ×××ר×× ××, ××¤× ××ס××ר××ת ×רס××ת ××××× ××.",
+ "prefs-help-watchlist-token2": "××× ×××¤×ª× ×ס××× ×××× × ×©× ×¨×©××ת ×××¢×§× ×©××.\n×× ×× ×©××××¢ ×××ª× ×××× ×קר×× ×ת רש××ת ×××¢×§× ×©××, ××× ××× ×שתף ××ת×.\n[[Special:ResetTokens|×× ×ש ××× ×¦×ר×, ×פשר ××פס ×××ª× ×××]].",
"savedprefs": "×××¢×פ×ת ש×× × ×©×ר×.",
"savedrights": "×רש××ת {{GENDER:$1|××שת×ש|××שת×שת}} ×©× $1 × ×©×ר×.",
"timezonelegend": "×××ר ×××:",
@@ -1043,7 +1045,7 @@
"yourlanguage": "שפת ×××שק:",
"yourvariant": "ס×× ×××ª× ×שפת ×ת×××:",
"prefs-help-variant": "ס×× ×××ª× ××××¢××£ ××צ×ת ××¤× ×ת××× ××תר ×××§× ××.",
- "yournick": "×ת×××:",
+ "yournick": "×ת××× ××ש×:",
"prefs-help-signature": "×¢× ××××¢×ת ×××¤× ×©××× ×ש ××ת×× ×××צע×ת ×××§×¡× \"~~~~ \", ש×××ר ××ת××× ×©×× ×××ר×× ×ª×ר×× ×שע×.",
"badsig": "×ת××× ×ס××× × ×ª ש××××.\n× × ××××ק ×ת ת×××ת ×Ö¾HTML.",
"badsiglength": "×ת×××ª× ×ר××× ×××.\n×××¨× ××ת××× ××ר×× ××× {{PLURAL:$1|×ª× ×××|$1 ת××××}}.",
@@ -1054,8 +1056,8 @@
"prefs-help-gender": "××× ×××× ×××× ××¢××¤× ××.\n××ער×ת ×שת×שת ×××××¢ ×× ××× ××¤× ×ת ××××/××××× ××צ××× ×ת ×©× ××שת×ש ש×× ×××× ××ק×××§× ×× ×××.\n×××××¢ ×××× ×¦×××ר×.",
"email": "×××\"×",
"prefs-help-realname": "××× ×××× ×××× ×ת ××©× ××××ת×.\n××©× ×××××ª× ×¢×©×× ×ש×ש ××× ××××ס ×× ×ת ×¢×××ת×.",
- "prefs-help-email": "×ת××ת ×××ר ××ק×ר×× × ××× ××פצ××× ×××ת, ××× ××× ×××× ×ת ×××פ×ס ×ס×ס×× ×××§×¨× ×©×ª×©××× ××ת×.",
- "prefs-help-email-others": "××פשר××ª× ×× ××××ר ××פשר ×××ר×× ××צ×ר ×××ª× ×§×©×¨ ×××צע×ת ×××\"× ××¨× ×§×ש×ר ×××£ ××שת×ש ×× ×××£ ×ש××× ×©××.\n×ת××ת ××××\"× ×©×× ×× ×ª××שף ×ש×שת×ש×× ××ר×× ×××¦×¨× ×§×©×¨ ××ת×.",
+ "prefs-help-email": "×ת××ת ×××ר ××ק×ר×× × ××× ××פצ××× ××ת, ××× ××× ×××× ×ת ×××פ×ס ×ס×ס×× ×××§×¨× ×©×ª×©××× ××ת×.",
+ "prefs-help-email-others": "××פשר××ª× ×× ××××ר ××פשר ×××ר×× ××צ×ר ×××ª× ×§×©×¨ ×××צע×ת ×××\"× ××¨× ×§×ש×ר ×××£ ××שת×ש ×× ×××£ ×ש××× ×©××.\n×ת××ת ××××\"× ×©×× ×× ×ª××שף ×ש×שת×ש×× ××ר×× ×××¦×¨× ×××ª× ×§×©×¨.",
"prefs-help-email-required": "×ת××ת ×××ר ××ק×ר×× × × ×רשת ××ת××× ××תר.",
"prefs-info": "××××¢ ×ס×ס×",
"prefs-i18n": "××× ×××",
@@ -1093,7 +1095,7 @@
"userrights-notallowed": "××× ×× ×רש×× ×××ס××£ ×× ××ס×ר ×רש××ת ×©× ×שת×ש××.",
"userrights-changeable-col": "ק××צ×ת ש××פשר×ת×× ××©× ×ת",
"userrights-unchangeable-col": "ק××צ×ת ש××× ××פשר×ת×× ××©× ×ת",
- "userrights-conflict": "××ª× ×ש×ת ××× ×©×× ××× ×רש××ת ×שת×ש! ×× × ×××§× ×ת ×ש×× ×××× ×©××× ×××©×¨× ××ת×.",
+ "userrights-conflict": "××ª× ×ש×ת ××× ×©×× ××× ×רש××ת ×שת×ש! ×× × ×Ö´Ö¼××§× ×ת ×ש×× ×××× ×©××× ×××©×¨× ××ת×.",
"userrights-removed-self": "×סרת ×ת ×רש××ת ××שת×ש ×©× ×¢×¦××. ××× ××× ×× ×עת ×פשר×ת ××שת ×××£ ××.",
"group": "ק××צ×:",
"group-user": "×שת×ש××",
@@ -1101,20 +1103,20 @@
"group-bot": "×××××",
"group-sysop": "×פע××× ×ער×ת",
"group-bureaucrat": "×××ר×קר×××",
- "group-suppress": "×סת×ר××",
+ "group-suppress": "××¢×××××",
"group-all": "(××××)",
"group-user-member": "{{GENDER:$1|×שת×ש|×שת×שת}}",
"group-autoconfirmed-member": "{{GENDER:$1|×שת×ש ×ת×ק|×שת×שת ×ת×ק×}}",
"group-bot-member": "{{GENDER:$1|×××}}",
"group-sysop-member": "{{GENDER:$1|×פע×× ×ער×ת|×פע××ת ×ער×ת}}",
"group-bureaucrat-member": "{{GENDER:$1|×××ר×קר×|×××ר×קר××ת}}",
- "group-suppress-member": "{{GENDER:$1|×סת×ר|×סת×ר×}}",
+ "group-suppress-member": "{{GENDER:$1|××¢×××|××¢××××}}",
"grouppage-user": "{{ns:project}}:×שת×ש רש××",
"grouppage-autoconfirmed": "{{ns:project}}:×שת×ש ×ת×ק",
"grouppage-bot": "{{ns:project}}:×××",
"grouppage-sysop": "{{ns:project}}:×פע×× ×ער×ת",
"grouppage-bureaucrat": "{{ns:project}}:×××ר×קר×",
- "grouppage-suppress": "{{ns:project}}:×סת×ר",
+ "grouppage-suppress": "{{ns:project}}:××¢×××",
"right-read": "קר××ת ×פ××",
"right-edit": "ער××ת ×פ××",
"right-createpage": "×צ×רת ×פ×× ×©××× × ××¤× ×©×××",
@@ -1288,7 +1290,7 @@
"recentchanges-submit": "×צ××",
"rcnotefrom": "×××× {{PLURAL:$5|×ש×× ×× ×©××צע|×ש×× ×××× ×©××צע×}} ××× ×ââÖ«Ö¾$2 (×¢× $1 ××צ×××).",
"rclistfrom": "×צ×ת ש×× ×××× ××ש×× ××× ×Ö¾$2, $3",
- "rcshowhideminor": "$1 ש×× ×××× ××©× ×××",
+ "rcshowhideminor": "$1 ער×××ת ××©× ××ת",
"rcshowhideminor-show": "×צ×ת",
"rcshowhideminor-hide": "×סתרת",
"rcshowhidebots": "$1 ×××××",
@@ -1306,7 +1308,7 @@
"rcshowhidemine": "$1 ער×××ת ש××",
"rcshowhidemine-show": "×צ×ת",
"rcshowhidemine-hide": "×סתרת",
- "rcshowhidecategorization": "$1 ס×××× ×פ×× ×ק×××ר××ת",
+ "rcshowhidecategorization": "$1 ש×× ×××× ×ק×××ר××ת ×©× ×פ××",
"rcshowhidecategorization-show": "×צ×ת",
"rcshowhidecategorization-hide": "×סתרת",
"rclinks": "×צ×ת $1 ש×× ×××× ××ר×× ×× ×Ö¾$2 ××××× ×××ר×× ××. $3",
@@ -1333,9 +1335,9 @@
"recentchangeslinked-page": "×©× ×××£:",
"recentchangeslinked-to": "×צ×ת ×ש×× ×××× ××פ×× ××קשר×× ×××£ ×× ×ª×× ××ק×× ××ת",
"recentchanges-page-added-to-category": "×××£ [[:$1]] × ×סף ×ק×××ר××",
- "recentchanges-page-added-to-category-bundled": "×××£ [[:$1]] [[Special:WhatLinksHere/$1|{{PLURAL:$2|××¢×× ××£ ×××|××¢×× $2 ×פ××}}]] × ××¡×¤× ×ק×××ר××",
+ "recentchanges-page-added-to-category-bundled": "×××£ [[:$1]] × ×סף ×ק×××ר××, [[Special:WhatLinksHere/$1|×××× ××××× ××פ×× ××ר××]]",
"recentchanges-page-removed-from-category": "×××£ [[:$1]] ××סר ×ק×××ר××",
- "recentchanges-page-removed-from-category-bundled": "×××£ [[:$1]] [[Special:WhatLinksHere/$1|{{PLURAL:$2|××¢×× ××£ ×××|××¢×× $2 ×פ××}}]] ×××¡×¨× ×ק×××ר××",
+ "recentchanges-page-removed-from-category-bundled": "×××£ [[:$1]] ××סר ×ק×××ר××, [[Special:WhatLinksHere/$1|×××× ××××× ××פ×× ××ר××]]",
"autochange-username": "ש×× ×× ××××××× ×©× ××××Ö¾××ק×",
"upload": "××¢××ת ק×××¥ ×שרת",
"uploadbtn": "××¢×××",
@@ -1386,7 +1388,7 @@
"largefileserver": "×××× ×ק×××¥ ×××¨× ×××××ת ×שרת.",
"emptyfile": "× ×¨×× ×©×ק×××¥ ש××¢××ת ר×ק.\n××ת×× ×©×ס××× ××× ××× ×©×××ת ×ק××× ××©× ×ק×××¥.\n×ש ××××× ×©×× ×ק×××¥ ש×רצ×× × ×××¢××ת.",
"windows-nonascii-filename": "×תר ×××§× ×× ××× × ×ª××× ×ש××ת ק×צ×× ×¢× ×ª×××× ××××××× ×× ×ª×××× ×©××× × ××× ×××ת.",
- "fileexists": "ק×××¥ ××©× ××× ××ר ק×××, ×× × ×××§× ×ת [[:$1]] ×× ××× ×× ×××××× ×©×רצ×× ×× ××××××£ ××ת×.\n[[$1|thumb]]",
+ "fileexists": "ק×××¥ ××©× ××× ××ר ק×××, ×× × ×Ö´Ö¼××§× ×ת [[:$1]] ×× ××× ×× ×××××× ×©×רצ×× ×× ××××××£ ××ת×.\n[[$1|thumb]]",
"filepageexists": "××£ ת×××ר ×ק×××¥ ×¢××ר ק×××¥ ×× ××ר × ×צר ×[[:$1]] , ×× ×× ×§××× ×§×××¥ ××©× ××.\nת×××ר ×ק×××¥ שת×ת×× ×× ××פ××¢ ×××£ ת×××ר ×ק×××¥.\n××× ××ר×× ×× ×××פ××¢ ש×, ×××× ×¢×××× ×ער×× ×××ª× ××× ×ת. [[$1|thumb]]",
"fileexists-extension": "ק×××¥ ×¢× ×©× ×××× ××ר ק×××: [[$2|thumb]]\n* ×©× ×ק×××¥ ××××¢××: [[:$1]] \n* ×©× ×ק×××¥ ×ק×××: [[:$2]] \n×××× ×××× ×תת ×ק×××¥ ×©× ×¡×¤×¦××¤× ××תר?",
"fileexists-thumbnail-yes": "× ×¨×× ×©×ק×××¥ ××× ×ª××× × ××ק×× ×ª (××××ערת).\n[[$1|thumb]]\n×ש ××××ק ×ת ×ק×××¥ [[:$1]] .\n×× ×ק×××¥ ש××קת ××× ×××ª× ×ת××× × ××××× ×ק×ר×, ××× ×× ××ר×× ×××¢××ת ×× ×ª××× × ××××ערת.",
@@ -1429,7 +1431,7 @@
"upload-description": "ת×××ר ×ק×××¥",
"upload-options": "×פשר×××ת ××¢×××",
"watchthisupload": "××¢×§× ×××¨× ×§×××¥ ××",
- "filewasdeleted": "ק×××¥ ××©× ×× ××ר ×××¢×× ××¢×ר, ××××ר ××× × ××ק. ×× × ×××§× ×ת ×××£ $1 ××¤× × ×©×ª×ש××× ×××¢×××ª× ×©× ×ת.",
+ "filewasdeleted": "ק×××¥ ××©× ×× ××ר ×××¢×× ××¢×ר, ××××ר ××× × ××ק.\n×× × ×Ö´Ö¼××§× ×ת $1 ××¤× × ×©×ª×ש××× ×××¢××ת ×ת ×ק×××¥ ×©× ×ת.",
"filename-thumb-name": "× ×¨×× ×©××תרת ×ק×××¥ ××× ××תרת ×©× ×ª××× × ××ק×× ×ª (××××ערת). ×ש ××××× ×¢ ×××¢××ת ת××× ×ת ××××ער×ת ××××¨× ××××ª× ×תר ××ק×. ×× ×× ××× × ×ª××× × ××××ערת, ×ש ××ª×§× ×ת ×©× ×ק×××¥ ×× ×©×××× ×ש××¢××ª× ××תר ×ש×× ××××× ×ת ×ק××××ת ×©× ×ª××× × ××××ערת.",
"filename-bad-prefix": "×©× ×ק×××¥ ש××ª× ××¢××× ×ת××× ×Ö¾\"$1\" , ש××× ×©× ×©××× × ×ת×ר ×ת ×ק×××¥ ××××¨× ××× ×××§×¦× ×××××××ת ×¢×Ö¾××× ×צ×××ת ××××××××ת.\n×ש ××××ר ×©× ×ת××× ××תר ×ק×××¥, ש×ת×ר ×ת ת×× ××.",
"filename-prefix-blacklist": " # \n# ×ת×××ר ××× ×××ק××:\n# * ×× ××ר ××ª× \"#\" ×ס××£ ×ש××¨× ××× ×ער×\n# * ×× ×©××¨× ×× ×¨××§× ××× ×§××××ת ×ש××ת ק×צ×× ××פ×ס××× ×©×צ×××ת ××××××××ת × ××ª× ×ת ×××××××ת\nCIMG # Casio\nDSC_ # Nikon\nDSCF # Fuji\nDSCN # Nikon\nDUW # ×ספר ××פ×× ×× ×¡×××ר×××\nIMG # ××××\nJD # Jenoptik\nMGP # Pentax\nPICT # ש×× ×ת\n # ",
@@ -1515,6 +1517,7 @@
"uploadstash-badtoken": "××צ××¢ ×פע××× × ×ש×, ×××× ×××× ×¤×§×עת ת××§×¤× ×©× ×ס×××× ×ער××× ×©×××. × × ×× ×¡×ת ש××.",
"uploadstash-errclear": "×××קת ×ק×צ×× × ×ש××.",
"uploadstash-refresh": "×¨×¢× ×× ×¨×©××ת ×ק×צ××",
+ "uploadstash-thumbnail": "×צ×ת ת××× × ××××ערת",
"invalid-chunk-offset": "×××¡× ××ש ×× ×ª×§××",
"img-auth-accessdenied": "××××©× × ××ת×",
"img-auth-nopathinfo": "PATH_INFO ×סר.\n×שרת ××× × ××××ר ×××¢×רת ××××¢ ××.\n××ת×× ×©××× ×××סס ×¢× CGI ×××× ××× × ×××× ×ת××× ×Ö¾img_auth.\nר×× https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Image_Authorization.",
@@ -1606,7 +1609,7 @@
"filerevert-badversion": "××× ××¨×¡× ×ק×××ת ק×××ת ×©× ×ק×××¥ ש×××¢××ª× ×ת×ר×× ××××קש.",
"filedelete": "×××קת $1",
"filedelete-legend": "×××קת ק×××¥",
- "filedelete-intro": "××ª× ×¢××××× ××××ק ×ת ×ק×××¥ '''[[Media:$1|$1]]''' ××× ×¢× ×× ×××ס××ר×× ×©××.",
+ "filedelete-intro": "××ª× ×¢××××× ××××ק ×ת ×ק×××¥ [[Media:$1|$1]] ××× ×¢× ×× ××ס××ר××ת ××רס××ת ש××.",
"filedelete-intro-old": "××ª× ×××ק×× ×ת ×××¨×¡× ×©× '''[[Media:$1|$1]]''' ×Ö¾[$4 $3, $2].",
"filedelete-comment": "ס×××:",
"filedelete-submit": "×××ק×",
@@ -1674,7 +1677,7 @@
"brokenredirects-delete": "×××ק×",
"withoutinterwiki": "×פ×× ××× ×§×ש××¨× ×©×¤×",
"withoutinterwiki-summary": "××פ×× ××××× ××× × ×קשר×× ××רס××ת ש××× ×שפ×ת ××ר×ת:",
- "withoutinterwiki-legend": "××פ×× ××ת××××× ×â¦",
+ "withoutinterwiki-legend": "ת××××ת",
"withoutinterwiki-submit": "×צ××",
"fewestrevisions": "××פ×× ××¢×× ×ספר ×ער×××ת ×× ××× ×××תר",
"nbytes": "{{PLURAL:$1|××ת ×××|$1 ×ת××}}",
@@ -1712,8 +1715,8 @@
"mostimages": "×ק×צ×× ××ק×שר×× ×××תר",
"mostinterwikis": "××פ×× ×¢× ××ספר ××¨× ×××תר ×©× ×§×ש××¨× ××× ×××ק×",
"mostrevisions": "××פ×× ×¢× ×ספר ×ער×××ת ××××× ×××תר",
- "prefixindex": "רש××ת ××פ×× ××ת××××× ×â¦",
- "prefixindex-namespace": "רש××ת ××פ×× ××ת××××× ×⦠(××ר×× ××©× $1)",
+ "prefixindex": "×× ×פ×× ×¢× ×ת××××ת",
+ "prefixindex-namespace": "×× ×פ×× ×¢× ×ת××××ת (××ר×× ××©× $1)",
"prefixindex-submit": "×צ××",
"prefixindex-strip": "×סתרת ×ת××××ת ×רש×××",
"shortpages": "×פ×× ×§×¦×¨××",
@@ -1811,19 +1814,19 @@
"alllogstext": "תצ××× ×ש×××ת ×©× ×× ×¡××× ××××× ×× ××××× ×× ×{{grammar:ת××××ת|{{SITENAME}}}}.\n× ××ª× ×צ××¦× ×ת ×תצ××× ×¢×Ö¾××× ×××רת ס×× ×××××, ×©× ××שת×ש (ת××× ×¨×ש××ת) ×× ×××£ ×××שפע (×× ×× ×ª××× ×¨×ש××ת).",
"logempty": "××× ×¤×¨×××× ×ª××××× ×××××.",
"log-title-wildcard": "××פ×ש ××תר×ת ××ת××××ת ×××ת××ת ×××",
- "showhideselectedlogentries": "×צ×ת/×סתרת פע×××ת ××××× ×©× ××ר×",
- "log-edit-tags": "ער××ת ×ת×××ת ×©× ×¨×©×××ת ××××× ×©× ××ר×",
+ "showhideselectedlogentries": "ש×× ×× ××¦× ×תצ××× ×©× ×¤×¢×××ת ××××× ×©× ××ר×",
+ "log-edit-tags": "ער××ת ×ת×××ת ×©× ×¤×¢×××ת ××××× ×©× ××ר×",
"checkbox-select": "×××ר×: $1",
"checkbox-all": "××××",
"checkbox-none": "×× ××××",
- "checkbox-invert": "××פ××",
+ "checkbox-invert": "×פ×××",
"allpages": "×× ××פ××",
"nextpage": "×××£ ××× ($1)",
"prevpage": "×××£ ×ק××× ($1)",
"allpagesfrom": "×צ×ת ×פ×× ××× ×:",
"allpagesto": "×צ×ת ×פ×× ×¢×:",
"allarticles": "×× ××פ××",
- "allinnamespace": "×× ××פ×× (×ר×× ×©× $1)",
+ "allinnamespace": "×× ××פ×× (×ר×× ××©× $1)",
"allpagessubmit": "×צ××",
"allpagesprefix": "××פ×× ×©×©×× ×ת××× ×Ö¾:",
"allpagesbadtitle": "××תרת ×××£ ×©× ××ª× × ××××ª× ××ת×־תק×× × ×× ×©××××ª× ×× ×§××××ת ×©× ×§×ש×ר ××©×¤× ××רת ×× ×××××§× ××ר.\n××ת×× ×©××× ××××× ×ª× ××× ×× ××תר ××ס×ר×× ×ש×××ש ×××תר×ת.",
@@ -1836,8 +1839,6 @@
"categories-submit": "×צ××",
"categoriespagetext": "{{PLURAL:$1|×ק×××ר×× ×××× ××××ת|×ק×××ר××ת ××××ת ×××××ת}} ×פ×× ×× ×§×××¦× ××××.\n[[Special:UnusedCategories|ק×××ר××ת ש××× × ×ש×××ש]] ××× × ××צ××ת ×××.\nר×× ×× ×ת [[Special:WantedCategories|רש××ת ×ק×××ר××ת ××××קש×ת]].",
"categoriesfrom": "×צ×ת ק×××ר××ת ××× ×:",
- "special-categories-sort-count": "ס×××ר ××¤× ×ספר ××פ××",
- "special-categories-sort-abc": "ס×××ר ××¤× ×¡×ר ××××£ ××ת",
"deletedcontributions": "תר×××ת ×שת×ש ×××ק×ת",
"deletedcontributions-title": "תר×××ת ×שת×ש ×××ק×ת",
"sp-deletedcontributions-contribs": "תר×××ת",
@@ -1904,7 +1905,7 @@
"emailpagetext": "× ××ª× ××שת×ש ×××פס ××× ×ש××× ×××עת ×××ר ××ק×ר×× × {{GENDER:$1|××שת×ש ××|××שת×שת ××}}.\n×ת××ת ××××ר ×××ק×ר×× × ×©×ת×ת ×[[Special:Preferences|××¢×פ×ת ××שת×ש ש××]] ת×פ××¢ ××ת××ת ש×××××¢× × ×©××× ××× ×, ××× ××פשר ת×××× ×ש×ר×.",
"defemailsubject": "×××\"× ×{{grammar:ת××××ת|{{SITENAME}}}} ×××שת×ש \"$1\"",
"usermaildisabled": "ש×××ת ×××\"× ××שת×ש×× ×××××ת",
- "usermaildisabledtext": "××× ×× ×¨×©××× ×ש××× ×××ר ××ק×ר×× × ××שת×ש×× ××ר×× ××תר ××",
+ "usermaildisabledtext": "××× ×× ××רש×× ×ש××× ×××ר ××ק×ר×× × ××שת×ש×× ××ר×× ××תר ××",
"noemailtitle": "××× ×ת××ת ×××ר ××ק×ר×× ×",
"noemailtext": "×שת×ש ×× ×× ×××× ×ת××ת ×××ר ××ק×ר×× × ×ª×§×× ×.",
"nowikiemailtext": "×שת×ש ×× ××ר ש×× ×ק×× ×××ר ××ק×ר×× × ××שת×ש×× ××ר××.",
@@ -1926,7 +1927,7 @@
"usermessage-summary": "×ש×רת ×××עת ×ער×ת.",
"usermessage-editor": "ש××× ××××¢×ת ××ער×ת",
"watchlist": "רש××ת ××עק×",
- "mywatchlist": "רש××ת ×עק×",
+ "mywatchlist": "רש××ת ××עק×",
"watchlistfor2": "×¢××ר $1 $2",
"nowatchlist": "××× ×פ×× ×רש××ת ××עק×.",
"watchlistanontext": "× ×רשת ×× ××¡× ××ש××× ××× ×צפ×ת ×× ×ער×× ×¤×¨×××× ×רש××ת ××עק×.",
@@ -1957,10 +1958,10 @@
"wlshowhideanons": "×שת×ש×× ×× ×× ×××××",
"wlshowhidepatr": "ער×××ת ×××ק×ת",
"wlshowhidemine": "ער×××ת ש××",
- "wlshowhidecategorization": "ס×××× ×פ×× ×ק×××ר××ת",
+ "wlshowhidecategorization": "ש×× ×××× ×ק×××ר××ת ×©× ×פ××",
"watchlist-options": "×פשר×××ת ×רש××ת ××עק×",
- "watching": "××××¡×¤× ×רש××ת ××עק×â¦",
- "unwatching": "×××¡×¨× ×רש××ת ××עק×â¦",
+ "watching": "××××¡×¤× ×רש××ת ××עק×...",
+ "unwatching": "×××¡×¨× ×רש××ת ××עק×...",
"watcherrortext": "×××¨×¢× ×©×××× ×עת ש×× ×× ×××ר×ת רש××ת ×××¢×§× ×©× \"$1\".",
"enotif_reset": "ס×××× ×× ××פ×× ××××× × ×¦×¤×",
"enotif_impersonal_salutation": "×שת×ש ×{{GRAMMAR:ת××××ת|{{SITENAME}}}}",
@@ -2037,10 +2038,10 @@
"logentry-contentmodel-change-revert": "ש×××ר",
"protectlogpage": "×××× ××× ×ת",
"protectlogtext": "×××× ×¨×©××× ×©× ×©×× ××× ×××× × ×¢× ×פ××.\nר×× ×× ×ת [[Special:ProtectedPages|רש××ת ××פ×× ××××× ××]] ×× ××××ת.",
- "protectedarticle": "×פע×× ××× × ×¢× ×××£ \"[[$1]]\"",
- "modifiedarticleprotection": "ש×× × ×ת ר×ת ×××× × ×©× ×××£ \"[[$1]]\"",
- "unprotectedarticle": "×××× ×ת ×××× × ×¢× ×××£ \"[[$1]]\"",
- "movedarticleprotection": "××¢××ר ×ת ×××ר×ת ×××× × ×\"[[$2]]\" ×\"[[$1]]\"",
+ "protectedarticle": "××פע×× ××× × ×¢× ×××£ \"[[$1]]\"",
+ "modifiedarticleprotection": "ר×ת ×××× × ×©× ×××£ \"[[$1]]\" ש×× ×ª×",
+ "unprotectedarticle": "×××× × ×¢× ×××£ \"[[$1]]\" ××סר×",
+ "movedarticleprotection": "×××ר×ת ×××× × ×©× ×××£ \"[[$2]]\" ×××¢××¨× ×××£ \"[[$1]]\"",
"protect-title": "ש×× ×× ×¨×ת ×××× × ×©× ×××£ \"$1\"",
"protect-title-notallowed": "×צ×ת ר×ת ×××× × ×©× ×××£ \"$1\"",
"prot_1movedto2": "[[$1]] ×××¢×ר ××©× [[$2]]",
@@ -2113,15 +2114,15 @@
"undeletedrevisions-files": "{{PLURAL:$1|××¨×¡× ××ת|$1 ×רס××ת}} ×{{PLURAL:$2|ק×××¥ ×××|Ö¾$2 ק×צ××}} ש×××ר×",
"undeletedfiles": "{{PLURAL:$1|ש×××ר ק×××¥ ×××|ש××××¨× $1 ק×צ××}}",
"cannotundelete": "×ש×××ר × ×ש×:\n$1",
- "undeletedpage": "'''×××£ $1 ש×××ר ××צ×××.'''\n\nר×× ×ת [[Special:Log/delete|×××× ××××ק×ת]] ×רש××× ×©× ×××ק×ת ×ש×××ר×× ××ר×× ××.",
+ "undeletedpage": "×××£ $1 ש×××ר \n\nר×× ×ת [[Special:Log/delete|×××× ××××ק×ת]] ×רש××× ×©× ××××ק×ת ××ש×××ר×× ×©×××¦×¢× ×××ר×× ×.",
"undelete-header": "ר×× ×ת [[Special:Log/delete|×××× ××××ק×ת]] ××פ×× ×©× ×××§× ×××ר×× ×.",
"undelete-search-title": "××פ×ש ×פ×× ×©× ××ק×",
"undelete-search-box": "××פ×ש ×פ×× ×©× ××ק×",
"undelete-search-prefix": "×צ×ת ×פ×× ××× ×:",
"undelete-search-submit": "××פ×ש",
"undelete-no-results": "×× × ×צ×× ×פ×× ×ª××××× ××ר×××× ××××ק×ת.",
- "undelete-filename-mismatch": "ש×××ר ×רסת ×ק×××¥ ××ת×ר×× $1 × ×ש×: ×©× ×§×××¥ ×× ×ª×××",
- "undelete-bad-store-key": "ש×××ר ×רסת ×ק×××¥ ××ת×ר×× $1 × ×ש×: ×ק×××¥ ××× ×סר ××¤× × ××××ק×.",
+ "undelete-filename-mismatch": "×× × ××ª× ×ש××ר ×ת ×רסת ×ק×××¥ ×Ö¾$1: ×©× ×ק×××¥ ×× ×ª×××.",
+ "undelete-bad-store-key": "×× × ××ª× ×ש××ר ×ת ×רסת ×ק×××¥ ×Ö¾$1: ×ק×××¥ ××× ×סר ××¤× × ××××ק×.",
"undelete-cleanup-error": "ש×××ת ×עת ×××קת ק×××¥ ××ר×××× \"$1\" ש××× × ×ש×××ש.",
"undelete-missing-filearchive": "ש×××ר ק×××¥ ××ר×××× ×©××¡×¤×¨× $1 × ××©× ××××× ×©××× ××× × ××ס×ס ×× ×ª×× ××. ××ת×× ×©××× ××ר ש×××ר.",
"undelete-error": "ש×××× ×ש×××ר ××£",
@@ -2183,7 +2184,7 @@
"whatlinkshere-submit": "×צ××",
"autoblockid": "×ס××× ×××××××ת #$1",
"block": "×ס××ת ×שת×ש",
- "unblock": "ש×ר×ר ×שת×ש",
+ "unblock": "ש×ר×ר ×ס××× ×©× ×שת×ש",
"blockip": "×ס××ת {{GENDER:$1|×שת×ש|×שת×שת}}",
"blockip-legend": "×ס××ת ×שת×ש",
"blockiptext": "×שת××©× ×××פס ש×××× ××× ××ס×× ×ת ×רש××ת ××ת××× ××ת××ת IP ×× ×שת×ש ×ס×××××.\n×ס×××ת ×××× ×¦×¨×××ת ××ת×צע רק ××× ××× ××¢ ×ש×ת×, ×××ת×× ×[[{{MediaWiki:Policy-url}}|× ××××]].\n×× × ×××× ×ת ×ס××× ×פר×× ×ת ××ס××× ×××× (××××××, ×××צע×ת צ××× ×פ×× ×ס××××× ×©×ש××ת ××שת×ש).\n××פשר×ת×× ××ס×× ××××× ×ת×××ת IP ×××צע×ת ת×××ר [https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing CIDR]; ××××× ××××× ×××תר ×©× ××ª× ××ס×× ××× /$1 ×¢××ר IPv4 ×Ö¾/$2 ×¢××ר IPv6.",
@@ -2199,7 +2200,7 @@
"ipbother": "××× ××ר:",
"ipboptions": "שעת×××:2 hours,×××:1 day,ש×××©× ××××:3 days,ש×××¢:1 week,ש×××¢×××:2 weeks,×××ש:1 month,ש×××©× ×××ש××:3 months,ש××©× ×××ש××:6 months,×©× ×:1 year,××× ×××ª× ×××××:infinite",
"ipbhidename": "×סתרת ×©× ××שת×ש ××ער×××ת ×××רש×××ת",
- "ipbwatchuser": "××¢×§× ××ר ××£ ××שת×ש ×××£ ×ש××× ×©× ×שת×ש ××",
+ "ipbwatchuser": "××¢×§× ×××¨× ××£ ××שת×ש ×××£ ×ש××× ×©× ×שת×ש ××",
"ipb-disableusertalk": "××××× ××פשר×ת ×©× ××שת×ש ×ער×× ×ת ××£ ×ש××× ×©× ×¢×¦×× ×עת ××ס×××",
"ipb-change-block": "×ס××ת ××שת×ש ×××ש ×¢× ×××ר×ת ×××",
"ipb-confirm": "××ש×ר ××ס×××",
@@ -2214,6 +2215,7 @@
"ipb-unblock": "×סרת ×ס××× ×©× ×©× ×שת×ש ×× ×ת××ת IP",
"ipb-blocklist": "×צ×ת ××ס×××ת ×× ×××××ת",
"ipb-blocklist-contribs": "×תר×××ת ×©× {{GENDER:$1|$1}}",
+ "ipb-blocklist-duration-left": "× ××ª×¨× $1",
"unblockip": "ש×ר×ר ×ס×××",
"unblockiptext": "×שת××©× ×××פס ש×××× ××× ×××××ר ×ת ×רש××ת ××ת××× ××שת×ש ×× ×ת××ת IP ×ס××××.",
"ipusubmit": "ש×ר×ר ×ס×××",
@@ -2258,7 +2260,7 @@
"blocklogentry": "××¡× ×ת [[$1]] ×××©× $2 $3",
"reblock-logentry": "ש×× × ×ת ×××ר×ת ××ס××× ×©× [[$1]] ×¢× ××× ×¤×§××¢× ×©× $2 $3",
"blocklogtext": "××× ×××× ×¤×¢×××ת ××ס××× ××ש×ר×ר ×©× ×שת×ש××.\n×ת×××ת IP ×©× ×ס×× ×××××××ת ××× × ××פ××¢×ת.\nר×× ×× ×ת [[Special:BlockList|רש××ת ××ס××××]] ×רש××× ×©× ××ר××ת ××ס×××ת פע×××ת ×עת.",
- "unblocklogentry": "ש×רר ×ת $1",
+ "unblocklogentry": "ש×רר ×ת ××ס××× ×©× $1",
"block-log-flags-anononly": "×שת×ש×× ×× ×× ××××× ××××",
"block-log-flags-nocreate": "×צ×רת ×ש××× ×ת × ×ס××",
"block-log-flags-noautoblock": "×ס××× ×××××××ת ×××××ת",
@@ -2274,7 +2276,7 @@
"ipb_already_blocked": "××שת×ש \"$1\" ××ר × ×ס×.",
"ipb-needreblock": "$1 ××ר × ×ס×. ××× ×רצ×× × ××©× ×ת ×ת ×××ר×ת ××ס×××?",
"ipb-otherblocks-header": "{{PLURAL:$1|×ס××× ××רת|×ס×××ת ××ר×ת}}",
- "unblock-hideuser": "×× × ××ª× ×ש×רר ×שת×ש ××, ××××× ×©×©× ××שת×ש ש×× ××סתר.",
+ "unblock-hideuser": "××× ××פשר××ª× ×ש×רר ×ת ××ס××× ×©× ××שת×ש ×××, ××××× ×©×©× ××שת×ש ש×× ××סתר.",
"ipb_cant_unblock": "ש××××: ×ס××× ×ספר $1 ×× × ×צ××. ××ת×× ×©××× ××ר ש××רר×.",
"ipb_blocked_as_range": "ש××××: ×ת××ת ×Ö¾IP $1 ××× × ×ס××× ×ש×ר×ת ×××× ×× × ××ª× ×ש×רר ×ת ×ס××ת×. ×¢× ××ת, ××× ×ס××× ×××ק ×××××× $2, ×©× ××ª× ×ש×רר ×ת ×ס××ת×.",
"ip_range_invalid": "×××× IP ש×××.",
@@ -2290,7 +2292,7 @@
"lockdb": "× ×¢××ת ×ס×ס × ×ª×× ××",
"unlockdb": "ש×ר×ר ×ס×ס × ×ª×× ××",
"lockdbtext": "× ×¢××ת ×ס×ס ×× ×ª×× ×× ×ª×× ×¢ ××שת×ש×× ×ת ××פשר×ת ×ער×× ×פ××, ××©× ×ת ×ת ××¢×פ×ת×××, ×ער×× ×ת רש×××ת ×××¢×§× ×©×××, ×פע×××ת ××ר×ת ×××רש×ת ××צ××¢ ש×× ×××× ××ס×ס ×× ×ª×× ××.\n\n×× × ××©×¨× ×©×× ×× ×©××ª× ×ת×××× ×× ×עש×ת, ×שתש××¨×¨× ×ת ×ס×ס ×× ×ª×× ×× ×× ×¢××× ××שר פע××ת ×ת××××§× ×ª×¡×ª×××.",
- "unlockdbtext": "ש×ר×ר ×ס×ס ×× ×ª×× ×× ×× ×¢××× ××××ר ××שת×ש×× ×ת ×××××ת ×ער×× ×פ××, ××©× ×ת ×ת ××¢×פ×ת×××, ×ער×× ×ת רש×××ת ×××¢×§× ×©×××, ×××צע פע×××ת ××ר×ת ×××רש×ת ××צ××¢ ש×× ×××× ××ס×ס ×× ×ª×× ××\n×× × ××©×¨× ×©×× ×× ×©××××× ×ª×× ×עש×ת.",
+ "unlockdbtext": "ש×ר×ר ×ס×ס ×× ×ª×× ×× ×× ×¢××× ××××ר ××× ××שת×ש×× ×ת ×××××ת ×ער×× ×פ××, ××©× ×ת ×ת ××¢×פ×ת ××שת×ש ש×××, ×ער×× ×ת רש×××ת ×××¢×§× ×©×××, ×××צע פע×××ת ××ר×ת ×××רש×ת ××צ××¢ ש×× ×××× ××ס×ס ×× ×ª×× ××.\n×× × ××©×¨× ×©×× ×× ××× ×× ×©×רצ×× ×× ×עש×ת.",
"lockconfirm": "××, ×רצ×× × ×× ×¢×× ×ת ×ס×ס ×× ×ª×× ××.",
"unlockconfirm": "××, ×רצ×× × ×ש×רר ×ת ×ס×ס ×× ×ª×× ×× ×× ×¢×××.",
"lockbtn": "× ×¢××ת ×ס×ס ×× ×ª×× ××",
@@ -2325,7 +2327,7 @@
"movepage-moved-redirect": "× ××¦×¨× ××¤× ××.",
"movepage-moved-noredirect": "×צ×רת ×××¤× ×× ×××××.",
"articleexists": "ק××× ××ר ××£ ××××ª× ×©×, ×× ×©××©× ×©××רת ××× × ×ª×§××.\n× × ××××ר ×©× ××ר.",
- "cantmove-titleprotected": "××× × ×××¨×©× ×××¢××ר ×ת ×××£ ××©× ×× ××××× ×©××©× ×××ש ×××× ××¤× × ×צ×ר×",
+ "cantmove-titleprotected": "××× ×× ×רש×× ×××¢××ר ×ת ×××£ ××××, ×× ××©× ×××ש ×××× ××¤× × ×צ×ר×.",
"movetalk": "××¢××¨× ×× ×©× ××£ ×ש×××",
"move-subpages": "××¢×רת ×× ××¤× ×××©× × (×¢× $1)",
"move-talk-subpages": "××¢×רת ×× ××¤× ×××©× × ×©× ××£ ×ש××× (×¢× $1)",
@@ -2419,7 +2421,7 @@
"import-upload-filename": "×©× ×ק×××¥:",
"import-comment": "×ער×:",
"importtext": "× × ××××¦× ×ת ×ק×××¥ ××תר ××ק×ר ×××צע×ת ×[[Special:Export|××× ×××צ××]].\nש××¨× ×××ª× ××××©× ×©××× ×××¢×× ×××ª× ××××.",
- "importstart": "××××× ×פ××â¦",
+ "importstart": "××××× ×פ××...",
"import-revision-count": "{{PLURAL:$1|××¨×¡× ××ת|$1 ×רס××ת}}",
"importnopages": "××× ×פ×× ××××××.",
"imported-log-entries": "{{PLURAL:$1|××××× ×¤×¢××ת ×××× ××ת|××××× $1 פע×××ת ××××}}.",
@@ -2455,11 +2457,7 @@
"import-logentry-upload-detail": "{{PLURAL:$1|××¨×¡× ××ת ×××××|$1 ×רס××ת ×××××}}",
"import-logentry-interwiki-detail": "{{PLURAL:$1|××¨×¡× ××ת ×©× ×××£ $2 ×××××|$1 ×רס××ת ×©× ×××£ $2 ×××××}}",
"javascripttest": "×××קת JavaScript",
- "javascripttest-pagetext-noframework": "××£ ×× ×©××ר ××רצת ×××ק×ת JavaScript.",
- "javascripttest-pagetext-unknownframework": "ס×××ת ××××ק×ת \"$1\" ××× × ××××¢×.",
"javascripttest-pagetext-unknownaction": "×פע××× \"$1\" ××× × ××××¢×.",
- "javascripttest-pagetext-frameworks": "× × ××××ר ××ת ×ס××××ת ××××ק×ת ××××ת: $1",
- "javascripttest-pagetext-skins": "×××רת ×¢×צ×× ×©×××ª× ×××¨×¦× ××××ק×ת:",
"javascripttest-qunit-intro": "ר×× ×ת [$1 ת××¢×× ××××ק×ת] ××תר mediawiki.org.",
"tooltip-pt-userpage": "××£ {{GENDER:|××שת×ש|××שת×שת}} ש××",
"tooltip-pt-anonuserpage": "××£ ××שת×ש ×©× ×שת×ש ×× ×× ××× ××",
@@ -2469,9 +2467,9 @@
"tooltip-pt-watchlist": "רש××ת ××פ×× ×©××ª× ×¢×ק××× ×××¨× ×ש×× ×××× ×××",
"tooltip-pt-mycontris": "רש××ת ×תר×××ת ש××",
"tooltip-pt-anoncontribs": "רש××ת ×ער×××ת ×©× ×¢×©× ××ת××ת ×Ö¾IP ×××ת",
- "tooltip-pt-login": "×××××¥ ×××רש×, ×× ××× ×××× ×עש×ת ××",
+ "tooltip-pt-login": "×××××¥ ××××× ×¡ ××ש×××; ×¢× ××ת, ××× ×××× ×עש×ת ××ת",
"tooltip-pt-logout": "×צ××× ×××ש×××",
- "tooltip-pt-createaccount": "×××××¥ ××צ×ר ×ש××× ×××××× ×¡ ××××; ×¢× ××ת, ×× ××× × ××××",
+ "tooltip-pt-createaccount": "×××××¥ ××צ×ר ×ש××× ×××××× ×¡ ××××; ×¢× ××ת, ××× ×××× ×עש×ת ××ת",
"tooltip-ca-talk": "ש××× ×¢× ××£ ××",
"tooltip-ca-edit": "ער××ת ××£ ×× ×××צע×ת ק×× ××ק×",
"tooltip-ca-addsection": "××ספת ×¤×¡×§× ××ש×",
@@ -2503,7 +2501,7 @@
"tooltip-t-emailuser": "ש×××ת ×××ר ××ק×ר×× × {{GENDER:$1|××שת×ש ××|××שת×שת ××}}",
"tooltip-t-info": "××××¢ × ×סף ×¢× ××£ ××",
"tooltip-t-upload": "××¢××ת ק×צ××",
- "tooltip-t-specialpages": "רש××ת ×× ××פ×× ××××××××",
+ "tooltip-t-specialpages": "רש××× ×©× ×× ××פ×× ××××××××",
"tooltip-t-print": "××¨×¡× ××××¤×¡× ×©× ××£ ××",
"tooltip-t-permalink": "ק×ש×ר ק×××¢ ×××¨×¡× ×× ×©× ×××£",
"tooltip-ca-nstab-main": "צפ××× ×××£ ×ת×××",
@@ -2518,10 +2516,10 @@
"tooltip-ca-nstab-category": "צפ××× ×××£ ×ק×××ר××",
"tooltip-minoredit": "ס×××× ×¢×¨××× ×× ×××©× ×ת",
"tooltip-save": "ש××רת ×ש×× ×××× ×©××",
- "tooltip-preview": "תצ××× ×ק××××, ×× × ×שת××©× ××פשר×ת ×× ××¤× × ×ש××ר×!",
+ "tooltip-preview": "תצ××× ×ק×××× ×©× ×ש×× ×××× ×©××. × × ××שת×ש ××פשר×ת ×× ××¤× × ×ש××ר×.",
"tooltip-diff": "צפ××× ×ש×× ×××× ×©×¢×¨××ª× ××קס×",
"tooltip-compareselectedversions": "צפ××× ××ש×××ת ×©×ª× ×רס××ת ×©× ××£ ××",
- "tooltip-watch": "××ספת ××£ ×× ×רש××ת ××עק×",
+ "tooltip-watch": "××ספת ××£ ×× ×רש××ת ×××¢×§× ×©××",
"tooltip-watchlistedit-normal-submit": "×סרת ××פ××",
"tooltip-watchlistedit-raw-submit": "×¢×××× ×¨×©××ת ××עק×",
"tooltip-recreate": "×צ×רת ×××£ ×××ש ××ר×ת ש××× × ××ק",
@@ -2624,7 +2622,7 @@
"patrol-log-page": "×××× ×©×× ×××× ×××ק××",
"patrol-log-header": "×××× ×× ×צ×× ×רס××ת ×©× ××ק×.",
"log-show-hide-patrol": "$1 ×××× ×©×× ×××× ×××ק××",
- "log-show-hide-tag": "$1 ×××× ×ת×××ת",
+ "log-show-hide-tag": "$1 ×××× ×ª×××ת",
"deletedrevision": "××ק ××¨×¡× ××©× × $1",
"filedeleteerror-short": "ש×××× ××××קת ×ק×××¥: $1",
"filedeleteerror-long": "ש××××ת ש×××¨×¢× ×עת ×××קת ×ק×××¥:\n\n$1",
@@ -2635,8 +2633,8 @@
"previousdiff": "â ××¢×ר ××ש×××ת ××רס××ת ×ק×××ת",
"nextdiff": "××¢×ר ××ש×××ת ××רס××ת ×××× â",
"mediawarning": "×××ר×: ס×× ×§×××¥ ×× ×¢××× ××××× ×§×× ×××× ×.\n×רצת ×ק×× ×¢×××× ×ס×× ×ת ××××©× ×©××.",
- "imagemaxsize": "×××× ×ª××× × ×ר××: (×××¤× ×ª×××ר ק×××¥)",
- "thumbsize": "×ק×× × ××××× ×©×:",
+ "imagemaxsize": "×××× ×ª××× × ×ר××:(×××¤× ×ª×××ר ×©× ×§×צ××) ",
+ "thumbsize": "×××× ×©× ×ª××× ×ת ××××ער×ת:",
"widthheightpage": "$1 à $2 , {{PLURAL:$3|××£ ×××|$3 ×פ××}}",
"file-info": "×××× ×ק×××¥: $1, ס×× MIMEâ: $2",
"file-info-size": "$1 à $2 פ×קס×××, ×××× ×ק×××¥: $3, ס×× MIMEâ: $4",
@@ -2659,7 +2657,7 @@
"file-no-thumb-animation-gif": "'''×תש××ת ×××: ××©× ×××××ת ××× ××ת, ת××× ×ת ××××ער×ת ×©× ×ª××× ×ת GIF ××¢××ת ר××××צ×× ××××× ××× ××ת ×× ×ª×××× × ××× ×¤×©×ת.'''",
"newimages": "××ר××ת ק×צ×× ××ש××",
"imagelisttext": "×××× ×¨×©××× ×©× {{PLURAL:$1|ק×××¥ ×××|$1 ק×צ××}}, ××××× ×× $2:",
- "newimages-summary": "××£ ×× ×צ×× ×ת ×ק×צ×× ×××ר×× ×× ×©×××¢××",
+ "newimages-summary": "××£ ××××× ×× ×צ×× ×ת ×ק×צ×× ×××ר×× ×× ×©×××¢××.",
"newimages-legend": "××¡× ×",
"newimages-label": "×©× ×ק×××¥ (×× ××ק ××× ×):",
"newimages-showbots": "×צ×ת ××¢×××ת ש×××¦×¢× ×¢×Ö¾××× ×××××",
@@ -2731,8 +2729,8 @@
"exif-colorspace": "×ר×× ×צ××¢",
"exif-componentsconfiguration": "×ש××¢×ת ×× ×¨×××",
"exif-compressedbitsperpixel": "ש××ת ×××סת ×ת××× ×",
- "exif-pixelydimension": "ר××× ×ת××× × ×× ×××",
- "exif-pixelxdimension": "×××× ×ת××× × ×× ×××",
+ "exif-pixelxdimension": "ר××× ×ת××× × ×× ×××",
+ "exif-pixelydimension": "×××× ×ת××× × ×× ×××",
"exif-usercomment": "×ער×ת ××שת×ש",
"exif-relatedsoundfile": "ק×××¥ ש××¢ ×ק×שר",
"exif-datetimeoriginal": "×ת×ר×× ×××©×¢× ×©× ×צ×רת ×ק×××¥",
@@ -3072,9 +3070,13 @@
"confirmemail_body_set": "××ש××, ×× ×¨×× ××ª× (××ת××ת ×Ö¾IP ×××ת: $1),\n××××ר ×ת ×ת××ת ××××\"× ×©× ××ש××× \"$2\" ××ת××ת ×××ת ×{{grammar:ת××××ת|{{SITENAME}}}}.\n\n××× ×××ת ש×ש××× ×× ×××ת ש××× ××× ×××פע×× ×ת ש×ר××ª× ××××\"× ××תר, ×× × ×¤×ª×× ×ת ××ת××ת ×××× ××פ××¤× ×©×××:\n\n$3\n\n×× ××ש××× *××× ×* ש××× ×××, ×שת××©× ×ק×ש×ר ××× ××× ×××× ×ת ××××ת ×ת××ת ××××\"×:\n\n$5\n\nק×× ×××××ת ×פקע ×Ö¾$4.",
"confirmemail_invalidated": "××××ת ×ת××ת ××××\"× ××××",
"invalidateemail": "××××× ×××××ת ×©× ×ת××ת ××××\"×",
+ "notificationemail_subject_changed": "×ת××ת ××××ר ×××ק×ר×× × ×רש××× ×{{grammar:ת××××ת|{{SITENAME}}}} ××××פ×",
+ "notificationemail_subject_removed": "×ת××ת ××××ר ×××ק×ר×× × ×רש××× ×{{grammar:ת××××ת|{{SITENAME}}}} ××סר×",
+ "notificationemail_body_changed": "××ש××, ×× ×¨×× ××ª× (××ת××ת ×Ö¾IP ×××ת: $1),\nש×× × ×ת ×ת××ת ××××ר ×××ק×ר×× × ×©× ××ש××× \"$2\" ×Ö¾\"$3\" ×{{grammar:ת××××ת|{{SITENAME}}}}.\n\n×× ×× ××ª× ×¢×©××ª× ××ת, ×× × ×¦×¨× ×§×©×¨ ××××× ×¢× ×פע×× ×ער×ת ××תר.",
+ "notificationemail_body_removed": "××ש××, ×× ×¨×× ××ª× (××ת××ת ×Ö¾IP ×××ת: $1),\n×ס×ר ×ת ×ת××ת ××××ר ×××ק×ר×× × ×©× ××ש××× \"$2\" ×{{grammar:ת××××ת|{{SITENAME}}}}.\n\n×× ×× ××ª× ×¢×©××ª× ××ת, ×× × ×¦×¨× ×§×©×¨ ××××× ×¢× ×פע×× ×ער×ת ××תר.",
"scarytranscludedisabled": "[××××ת ×פ×× ××× ×תר×× ×××××ת]",
"scarytranscludefailed": "[××××ר ×ת×× ×ת × ××©× ×¢××ר $1]",
- "scarytranscludefailed-httpstatus": "[××××ר ×ת×× ×ת × ××©× ×¢××ר $1: HTTP $2]",
+ "scarytranscludefailed-httpstatus": "[××××ר ×ת×× ×ת × ××©× ×¢××ר $1: ××¦× HTTP $2]",
"scarytranscludetoolong": "[×ת××ת ×Ö¾URL ×ר××× ×××]",
"deletedwhileediting": "×××ר×: ××£ ×× × ××ק ×××ר ש×ת××ת ×ער××!",
"confirmrecreate": "×{{GENDER:$1|×שת×ש|×שת×שת}} [[User:$1|$1]] ([[User talk:$1|ש×××]]) {{GENDER:$1|××ק|××ק×}} ×ת ×××£ ××× ×××ר ש×ת××ת ×ער×× ××ת×, ××ס××× ××××:\n: $2 \n×ש ××שר ש××× ×רצ×× × ××צ×ר ×××ש ×ת ×××£.",
@@ -3135,9 +3137,9 @@
"watchlistedit-raw-done": "רש××ת ×××¢×§× ×¢×××× ×.",
"watchlistedit-raw-added": "{{PLURAL:$1|××תרת ××ת × ×ספ×|$1 ××תר×ת × ×ספ×}}:",
"watchlistedit-raw-removed": "{{PLURAL:$1|××תרת ××ת ××סר×|$1 ××תר×ת ××סר×}}:",
- "watchlistedit-clear-title": "רש××ת ×××¢×§× × ××ק×",
+ "watchlistedit-clear-title": "× ×ק×× ×¨×©××ת ××עק×",
"watchlistedit-clear-legend": "× ×ק×× ×¨×©××ת ××עק×",
- "watchlistedit-clear-explain": "×× ×××תר×ת ×©× ××פ×× ×©×××¡×¨× ×רש××ת ××עק×",
+ "watchlistedit-clear-explain": "×× ××פ×× ×××¡×¨× ×רש××ת ×××¢×§× ×©××",
"watchlistedit-clear-titles": "××תר×ת:",
"watchlistedit-clear-submit": "× ×ק×× ×¨×©××ת ×××¢×§× (×צ××ת×ת!)",
"watchlistedit-clear-done": "רש××ת ×××¢×§× ×©×× × ×קת×.",
@@ -3250,7 +3252,6 @@
"version-libraries-description": "ת×××ר",
"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]], ×× [[{{#Special:Redirect}}/logid/186]].",
"redirect-submit": "××¢×ר",
"redirect-lookup": "ס××:",
@@ -3263,7 +3264,6 @@
"redirect-not-exists": "××¢×¨× ×× × ×צ×",
"fileduplicatesearch": "××פ×ש ק×צ×× ×פ××××",
"fileduplicatesearch-summary": "××פ×ש ק×צ×× ×פ×××× ×¢× ×ס×ס ער×× ×××××× ×©×××.",
- "fileduplicatesearch-legend": "××פ×ש ק×צ×× ×פ××××",
"fileduplicatesearch-filename": "ק×××¥:",
"fileduplicatesearch-submit": "××פ×ש",
"fileduplicatesearch-info": "$1 à $2 פ×קס××× ×××× ×ק×××¥: $3 ס×× MIMEâ: $4",
@@ -3418,8 +3418,8 @@
"htmlform-user-not-valid": "$1 ××× × ×©× ×שת×ש תק××.",
"sqlite-has-fts": "$1 ×¢× ×ª×××× ×××פ×ש ×××§×¡× ×××",
"sqlite-no-fts": "$1 ××× ×ª×××× ×××פ×ש ×××§×¡× ×××",
- "logentry-delete-delete": "$1 {{GENDER:$2|××ק|××ק×}} ×ת ×××£ $3",
- "logentry-delete-restore": "$1 {{GENDER:$2|ש××ר|ש××ר×}} ×ת ×××£ $3",
+ "logentry-delete-delete": "$1 {{GENDER:$2|××ק|××ק×}} ×ת ×××£ $3",
+ "logentry-delete-restore": "$1 {{GENDER:$2|ש××ר|ש××ר×}} ×ת ×××£ $3",
"logentry-delete-event": "$1 {{GENDER:$2|ש×× ×|ש×× ×ª×}} ×ת ××¦× ×תצ××× ×©× {{PLURAL:$5|פע××ת ××××|$5 פע×××ת ××××}} ×©× $3: $4",
"logentry-delete-revision": "$1 {{GENDER:$2|ש×× ×|ש×× ×ª×}} ×ת ××¦× ×תצ××× ×©× {{PLURAL:$5|×רס×|$5 ×רס××ת}} ×××£ $3: $4",
"logentry-delete-event-legacy": "$1 {{GENDER:$2|ש×× ×|ש×× ×ª×}} ×ת ××¦× ×תצ××× ×©× ×¤×¢×××ת ×××× ×©× $3",
@@ -3437,7 +3437,7 @@
"revdelete-uname-unhid": "×סתרת ×©× ××שת×ש ×××××",
"revdelete-restricted": "× ××¡×¤× ×××××ת ××פע××× ×ער×ת",
"revdelete-unrestricted": "×××¡×¨× ×××××ת ××פע××× ×ער×ת",
- "logentry-block-block": "$1 {{GENDER:$2|×ס×|×ס××}} ×ת {{GENDER:$4|$3}} ×¢× ××× ×¤×§××¢× ×©× $5 $6",
+ "logentry-block-block": "$1 {{GENDER:$2|×ס×|×ס××}} ×ת {{GENDER:$4|$3}} ×××©× $5 $6",
"logentry-block-unblock": "$1 {{GENDER:$2|ש×רר|ש×רר×}} ×ת ××ס××× ×©× {{GENDER:$4|$3}}",
"logentry-block-reblock": "$1 {{GENDER:$2|ש×× ×|ש×× ×ª×}} ×ת ×××ר×ת ××ס××× ×©× {{GENDER:$4|$3}} ×¢× ××× ×¤×§××¢× ×©× $5 $6",
"logentry-suppress-block": "$1 {{GENDER:$2|×ס×|×ס××}} ×ת {{GENDER:$4|$3}} ×¢× ××× ×¤×§××¢× ×©× $5 $6",
@@ -3445,12 +3445,12 @@
"logentry-import-upload": "$1 {{GENDER:$2|××××|×××××}} ×ת $3 ×××צע×ת ××¢××ת ק×××¥",
"logentry-import-upload-details": "$1 {{GENDER:$2|××××|×××××}} ×ת $3 ×××צע×ת ××¢××ת ק×××¥ ({{PLURAL:$4|××¨×¡× ××ת|$4 ×רס××ת}})",
"logentry-import-interwiki": "$1 {{GENDER:$2|××××|×××××}} ×ת $3 ××תר ×××§× ××ר",
- "logentry-import-interwiki-details": "$1 {{GENDER:$2|××××|×××××}} ×ת $3 ×Ö¾$5 ({{PLURAL:$4|××¨×¡× ××ת|$4 ×רס××ת}})",
+ "logentry-import-interwiki-details": "$1 {{GENDER:$2|××××|×××××}} ×ת $3 ×Ö¾$5 ({{PLURAL:$4|××¨×¡× ××ת|$4 ×רס××ת}})",
"logentry-merge-merge": "$1 {{GENDER:$2|××××|×××××}} ×ת $3 ×ת×× $4 (×רס××ת ×¢× $5)",
- "logentry-move-move": "$1 {{GENDER:$2|××¢××ר|××¢××ר×}} ×ת ×××£ $3 ×{{GRAMMAR:ת××××ת|$4}}",
- "logentry-move-move-noredirect": "$1 {{GENDER:$2|××¢××ר|××¢××ר×}} ×ת ×××£ $3 ×{{GRAMMAR:ת××××ת|$4}} ××× ××ש××ר ××¤× ××",
- "logentry-move-move_redir": "$1 {{GENDER:$2|××¢××ר|××¢××ר×}} ×ת ×××£ $3 ×{{GRAMMAR:ת××××ת|$4}} ת×× ×ר×סת ××¤× ××",
- "logentry-move-move_redir-noredirect": "$1 {{GENDER:$2|××¢××ר|××¢××ר×}} ×ת ×××£ $3 ×{{GRAMMAR:ת××××ת|$4}} ת×× ×ר×סת ××¤× ×× ×××× ××ש××ר ××¤× ××",
+ "logentry-move-move": "$1 {{GENDER:$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-patrol-patrol": "$1 {{GENDER:$2|ס×××|ס××× ×}} ×ת ×××¨×¡× $4 ×××£ $3 ××××ק×",
"logentry-patrol-patrol-auto": "$1 {{GENDER:$2|ס×××|ס××× ×}} ×××××××ת ×ת ×××¨×¡× $4 ×××£ $3 ××××ק×",
"logentry-newusers-newusers": "×ש××× ××שת×ש $1 {{GENDER:$2|× ×צר}}",
@@ -3460,11 +3460,11 @@
"logentry-newusers-autocreate": "×ש××× ××שת×ש $1 {{GENDER:$2|× ×צר}} ×××××××ת",
"logentry-protect-move_prot": "$1 {{GENDER:$2|××¢××ר|××¢××ר×}} ×ת ×××ר×ת ×××× × ××××£ $4 ×× ×××£ $3",
"logentry-protect-unprotect": "$1 {{GENDER:$2|×ס×ר|×ס×ר×}} ×ת ×××× × ××××£ $3",
- "logentry-protect-protect": "$1 {{GENDER:$2|×××|××× ×}} ×¢× ×××£ $3 $4",
- "logentry-protect-protect-cascade": "$1 {{GENDER:$2|×××|××× ×}} ×¢× ×××£ $3 $4 [×××ר×]",
+ "logentry-protect-protect": "$1 {{GENDER:$2|×פע××|×פע×××}} ××× × ×¢× ×××£ $3 $4",
+ "logentry-protect-protect-cascade": "$1 {{GENDER:$2|×פע××|×פע×××}} ××× × ×¢× ×××£ $3 $4 [×××ר×]",
"logentry-protect-modify": "$1 {{GENDER:$2|ש×× ×|ש×× ×ª×}} ×ת ר×ת ×××× × ×©× ×××£ $3 $4",
"logentry-protect-modify-cascade": "$1 {{GENDER:$2|ש×× ×|ש×× ×ª×}} ×ת ר×ת ×××× × ×©× ×××£ $3 $4 [×××ר×]",
- "logentry-rights-rights": "$1 {{GENDER:$2|ש×× ×|ש×× ×ª×}} ×ת ××רש××ת ×©× $3 ×{{GRAMMAR:ת××××ת|$4}} ×{{GRAMMAR:ת××××ת|$5}}",
+ "logentry-rights-rights": "$1 {{GENDER:$2|ש×× ×|ש×× ×ª×}} ×ת ××רש××ת ×©× {{GENDER:$6|$3}} ×{{GRAMMAR:ת××××ת|$4}} ×{{GRAMMAR:ת××××ת|$5}}",
"logentry-rights-rights-legacy": "$1 {{GENDER:$2|ש×× ×|ש×× ×ª×}} ×ת ××רש××ת ×©× $3",
"logentry-rights-autopromote": "$1 ק××× ×××××××ת ×{{GRAMMAR:ת××××ת|$4}} ×{{GRAMMAR:ת××××ת|$5}}",
"logentry-upload-upload": "$1 {{GENDER:$2|××¢××|××¢×ת×}} ×ת $3",
@@ -3473,14 +3473,14 @@
"log-name-managetags": "×××× × ×××× ×ª×××ת",
"log-description-managetags": "××£ ×× ×××× ×¨×©××× ×©× ×¤×¢×××ת × ×××× ×קש×ר×ת ×[[Special:Tags|ת×××ת]]. ××××× ×××× ×¨×§ פע×××ת ש×××¦×¢× ××× ×ת ×¢×Ö¾××× ×פע×× ×ער×ת; ××ת×× ×©×ª×××ת ×××××¦×¨× ×× ×××××§× ×¢×Ö¾××× ×ª××× ×ª ×××××§× ××× ××ספת ×¢×¨× ××××× ××.",
"logentry-managetags-create": "$1 {{GENDER:$2|×צר|×צר×}} ×ת ×ת××ת \"$4\"",
- "logentry-managetags-delete": "$1 {{GENDER:$2|××ק|××ק×}} ×ת ×ת××ת \"4$\" (ש×××¡×¨× {{PLURAL:$5|×××¨×¡× ××ת/פר×× ×××× ×××|×Ö¾$5 ×רס××ת ×/×× ×¤×¨××× ××××}})",
+ "logentry-managetags-delete": "$1 {{GENDER:$2|××ק|××ק×}} ×ת ×ת××ת \"$4\" (ש×××¡×¨× {{PLURAL:$5|×××¨×¡× ××ת/פר×× ×××× ×××|×Ö¾$5 ×רס××ת ×/×× ×¤×¨××× ××××}})",
"logentry-managetags-activate": "$1 {{GENDER:$2|×פע××|×פע×××}} ×ת ×ת××ת \"$4\" ×ש×××ש ×¢×Ö¾××× ×שת×ש×× ××××××",
"logentry-managetags-deactivate": "$1 {{GENDER:$2|××××|×××××}} ×ת ×פע×ת ×ת××ת \"$4\" ×ש×××ש ×¢×Ö¾××× ×שת×ש×× ××××××",
"log-name-tag": "×××× ×ª×××ת",
"log-description-tag": "×××£ ××× ×ר×× ××ª× ×שת×ש×× ××ס××¤× [[Special:Tags|ת×××ת]] ××רס××ת ×× ×¨×©×××ת ×××× ×ס××××ת ×× ×ס××¨× ××ת×. ××××× ××× × ×צ×× ×¤×¢×××ת ת××× ×©×××¦×¢× ×××ק ×ער×××, ××××§× ×× ×¤×¢××× ××××.",
"logentry-tag-update-add-revision": "$1 {{GENDER:$2|××ס××£|××ס×פ×}} ×ת {{PLURAL:$7|×ת××ת|×ת×××ת}} $6 ×××¨×¡× $4 ×©× ×××£ $3",
"logentry-tag-update-add-logentry": "$1 {{GENDER:$2|××ס××£|××ס×פ×}} ×ת {{PLURAL:$7|×ת××ת|×ת×××ת}} $6 ×רש××ת ××××× $5 ×©× ×××£ $3",
- "logentry-tag-update-remove-revision": "$1 {{GENDER:$2|×ס×ר|×ס×ר×}} ×ת {{PLURAL:$9|×ת××ת|×ת×××ת}} $8 ××××¨×¡× $4 ×©× ×××£ $3",
+ "logentry-tag-update-remove-revision": "$1 {{GENDER:$2|×ס×ר|×ס×ר×}} ×ת {{PLURAL:$9|×ת××ת|×ת×××ת}} $8 ×××¨×¡× $4 ×©× ×××£ $3",
"logentry-tag-update-remove-logentry": "$1 {{GENDER:$2|×ס×ר|×ס×ר×}} ×ת {{PLURAL:$9|×ת××ת|×ת×××ת}} $8 ×רש××ת ××××× $5 ×©× ×××£ $3",
"logentry-tag-update-revision": "$1 {{GENDER:$2|×¢×××|×¢××× ×}} ×ת ×ת×××ת ×××¨×¡× $4 ×©× ×××£ $3 ({{PLURAL:$7|××ס××£|××ס×פ×}} ×ת $6; {{PLURAL:$9|×ס×ר|×ס×ר×}} ×ת $8)",
"logentry-tag-update-logentry": "$1 {{GENDER:$2|×¢×××|×¢××× ×}} ×ת ×ת×××ת ×רש××ת ××××× $5 ×©× ×××£ $3 ({{PLURAL:$7|××ס××£|××ס×פ×}} ×ת $6; {{PLURAL:$9|×ס×ר|×ס×ר×}} ×ת $8)",
@@ -3557,6 +3557,7 @@
"api-error-unknownerror": "ש×××× ×××ª× ××××¢×: \"$1\".",
"api-error-uploaddisabled": "×××¢××× ×××××ת ××תר ×××××§× ×××.",
"api-error-verification-error": "ק×××¥ ×× ×¢×©×× ××××ת פ××× ×× ××¢× ×¡×××ת ש××××.",
+ "api-error-was-deleted": "ק×××¥ ××©× ××× ×××¢×× ××ק×× ××תר ×× ××ק ×××ר ×××.",
"duration-seconds": "{{PLURAL:$1|×©× ×××|$1 ×©× ××ת}}",
"duration-minutes": "{{PLURAL:$1|×ק×|$1 ×ק×ת}}",
"duration-hours": "{{PLURAL:$1|שע×|שעת×××|$1 שע×ת}}",
@@ -3647,6 +3648,7 @@
"special-characters-group-ipa": "××פ××ת פ×× ×× ××× ××××× (IPA)",
"special-characters-group-symbols": "ס××× ××",
"special-characters-group-greek": "×××× ×",
+ "special-characters-group-greekextended": "×××× ×ת ××ר××ת",
"special-characters-group-cyrillic": "ק×ר×××",
"special-characters-group-arabic": "ער××",
"special-characters-group-arabicextended": "ער×× ××ר××",
@@ -3672,5 +3674,54 @@
"sessionprovider-generic": "×ת××ר×××ת ×©× $1",
"sessionprovider-mediawiki-session-cookiesessionprovider": "×ת××ר×××ת ××××סס×ת ×¢× ×¢××××ת",
"sessionprovider-nocookies": "××ת×× ×©×פשר×ת ×ש×××ש ××¢××××ת ×××××. ×ש ××××× ×©×פשר×ת ×ש×××ש ××¢××××ת ××פע×ת ×××ת××× ×××ש.",
- "randomrootpage": "××£ ש×רש ×קר××"
+ "randomrootpage": "××£ ש×רש ×קר××",
+ "log-action-filter-block": "ס×× ××ס×××ת:",
+ "log-action-filter-contentmodel": "ס×× ×ש×× ×××× ××××× ×ª×××:",
+ "log-action-filter-delete": "ס×× ××××ק×ת:",
+ "log-action-filter-import": "ס×× ×¤×¢×××ת ××××××:",
+ "log-action-filter-managetags": "ס×× ×¤×¢×××ת × ×××× ×ת×××ת:",
+ "log-action-filter-move": "ס×× ×××¢×ר×ת:",
+ "log-action-filter-newusers": "ס×× ×צ×ר×ת ××ש×××:",
+ "log-action-filter-patrol": "ס×× ×ש×× ×××× ××××ק××:",
+ "log-action-filter-protect": "ס×× ×××× ×ת:",
+ "log-action-filter-rights": "ס×× ×©×× ××× ××רש××",
+ "log-action-filter-suppress": "ס×× ×××¢×××ת",
+ "log-action-filter-upload": "ס×× ×××¢×××ת:",
+ "log-action-filter-all": "××××",
+ "log-action-filter-block-block": "×ס×××ת",
+ "log-action-filter-block-reblock": "ש×× ××× ×ס×××",
+ "log-action-filter-block-unblock": "ש×ר××¨× ×ס×××",
+ "log-action-filter-contentmodel-change": "ש×× ×××× ××××× ×ª×××",
+ "log-action-filter-contentmodel-new": "×צ×ר×ת ×פ×× ×¢× ×××× ×ª××× ××־ס×× ×ר××",
+ "log-action-filter-delete-delete": "×××קת ×פ××",
+ "log-action-filter-delete-restore": "ש×××ר ×פ×× ×××ק××",
+ "log-action-filter-delete-event": "×××קת פע×××ת ××××",
+ "log-action-filter-delete-revision": "×××קת ×רס××ת",
+ "log-action-filter-import-interwiki": "פע×××ת ××××× ×××ª×¨× ×××§× ××ר××",
+ "log-action-filter-import-upload": "פע×××ת ××××× ×¢×Ö¾××× ××¢××ת XML",
+ "log-action-filter-managetags-create": "×צ×ר×ת ×©× ×ª×××ת",
+ "log-action-filter-managetags-delete": "×××ק×ת ×©× ×ª×××ת",
+ "log-action-filter-managetags-activate": "×פע××ת ×©× ×ª×××ת",
+ "log-action-filter-managetags-deactivate": "××××× ×פע××ת ×©× ×ª×××ת",
+ "log-action-filter-move-move": "××¢×ר×ת ××× ×ר×סת ××¤× ××ת",
+ "log-action-filter-move-move_redir": "××¢×ר×ת ×¢× ×ר×סת ××¤× ××ת",
+ "log-action-filter-newusers-create": "×צ×ר×ת ×¢×Ö¾××× ×שת×ש×× ×× ×× ×××××",
+ "log-action-filter-newusers-create2": "×צ×ר×ת ×¢×Ö¾××× ×שת×ש×× ×¨×©××××",
+ "log-action-filter-newusers-autocreate": "×צ×ר×ת ××××××××ת",
+ "log-action-filter-newusers-byemail": "×צ×ר×ת ×¢× ×¡×ס×× ×©× ×©××× ××××\"×",
+ "log-action-filter-patrol-patrol": "ס×××× ××× ××× ××× ××××ק",
+ "log-action-filter-patrol-autopatrol": "ס×××× ×× ××××××××× ××××ק",
+ "log-action-filter-protect-protect": "××× ×ת",
+ "log-action-filter-protect-modify": "ש×× ××× ××× ×",
+ "log-action-filter-protect-unprotect": "×סר×ת ××× ×",
+ "log-action-filter-protect-move_prot": "××¢×ר×ת ×©× ××× ×",
+ "log-action-filter-rights-rights": "ש×× ×××× ××× ×××",
+ "log-action-filter-rights-autopromote": "ש×× ×××× ×××××××××",
+ "log-action-filter-suppress-event": "××¢×××ת ×©× ×¤×¢×××ת ××××",
+ "log-action-filter-suppress-revision": "××¢×××ת ×©× ×רס××ת",
+ "log-action-filter-suppress-delete": "××¢×××ת ×©× ×פ××",
+ "log-action-filter-suppress-block": "××¢×××ת ×©× ×שת×ש×× ×××צע×ת ×ס×××",
+ "log-action-filter-suppress-reblock": "××¢×××ת ×©× ×שת×ש×× ×××צע×ת ×ס××× ×××ש",
+ "log-action-filter-upload-upload": "××¢×××ת ××ש×ת",
+ "log-action-filter-upload-overwrite": "×ר×סת ק×צ×× ×§×××××"
}
diff --git a/languages/i18n/hi.json b/languages/i18n/hi.json
index 8477c662f5..b5f461d6f8 100644
--- a/languages/i18n/hi.json
+++ b/languages/i18n/hi.json
@@ -71,7 +71,9 @@
"Niharika29",
"à¤à¤¨à¤ राठà¤à¤à¥à¤",
"YmKavishwar",
- "Upendradutt93"
+ "Upendradutt93",
+ "Nemo bis",
+ "Wassan.anmol"
]
},
"tog-underline": "à¤à¤¡à¤¼à¤¿à¤¯à¤¾à¤ à¤
धà¥à¤°à¥à¤à¤¨:",
@@ -381,7 +383,7 @@
"laggedslavemode": "'''à¤à¥à¤¤à¤¾à¤µà¤¨à¥:''' यह पà¥à¤·à¥à¤ à¤
दà¥à¤¯à¤¤à¤¨à¥à¤¤ à¤à¤¾à¤¨à¤à¤¾à¤°à¥-यà¥à¤à¥à¤¤ ना हà¥à¤¨à¥ à¤à¥ à¤à¤¶à¤à¤à¤¾ हà¥à¥¤",
"readonly": "डाà¤à¤¾à¤¬à¥à¤¸ लà¥à¤ à¤à¤¿à¤¯à¤¾ हà¥à¤ हà¥",
"enterlockreason": "लà¥à¤ à¤à¤°à¤¨à¥ à¤à¤¾ à¤à¤¾à¤°à¤£ दà¥à¤à¤¿à¤, साथ हॠलà¥à¤ à¤à¥à¤²à¤¨à¥ à¤à¥ समय à¤à¤¾ लà¤à¤à¤ à¤à¤à¤²à¤¨ दà¥à¤à¤¿à¤¯à¥à¥¤",
- "readonlytext": "शायद मà¥à¤à¤à¥à¤¨à¤¨à¥à¤¸ à¤à¥ à¤à¤²à¤¤à¥ डाà¤à¤¾à¤¬à¥à¤¸ नयॠसà¤à¤ªà¤¾à¤¦à¤¨ à¤à¤° à¤
नà¥à¤¯ बदलावà¥à¤ सॠलà¥à¤ à¤à¤¿à¤¯à¤¾ à¤à¤¯à¤¾ हà¥, à¤à¤¿à¤¸à¤à¥ बाद यह सामानà¥à¤¯ सà¥à¤¥à¤¿à¤¤à¤¿ मà¥à¤ ठà¤à¤¾à¤¨à¤¾ à¤à¤¾à¤¹à¤¿à¤¯à¥à¥¤\n\nà¤à¤¿à¤¸ पà¥à¤°à¤¬à¤à¤§à¤ नॠयह लà¥à¤ à¤à¤¿à¤¯à¤¾ था à¤à¤¸à¤¨à¥ यह à¤à¤¾à¤°à¤£ दिया हà¥: $1",
+ "readonlytext": "शायद मà¥à¤à¤à¥à¤¨à¤¨à¥à¤¸ à¤à¥ à¤à¤²à¤¤à¥ डाà¤à¤¾à¤¬à¥à¤¸ नयॠसà¤à¤ªà¤¾à¤¦à¤¨ à¤à¤° à¤
नà¥à¤¯ बदलावà¥à¤ सॠलà¥à¤ à¤à¤¿à¤¯à¤¾ à¤à¤¯à¤¾ हà¥, à¤à¤¿à¤¸à¤à¥ बाद यह सामानà¥à¤¯ सà¥à¤¥à¤¿à¤¤à¤¿ मà¥à¤ ठà¤à¤¾à¤¨à¤¾ à¤à¤¾à¤¹à¤¿à¤¯à¥à¥¤\n\nà¤à¤¿à¤¸ à¤à¤¾à¤°à¥à¤¯à¤à¤¾à¤°à¥ पà¥à¤°à¤¬à¤à¤§à¤ नॠयह लà¥à¤ à¤à¤¿à¤¯à¤¾ था à¤à¤¸à¤¨à¥ यह à¤à¤¾à¤°à¤£ दिया हà¥: $1",
"missing-article": "डाà¤à¤¾à¤¬à¥à¤¸ मà¥à¤ $2 à¤à¥ à¤
à¤à¤¦à¤° à¤à¤¹à¥à¤ à¤à¥ \"$1\" नहà¥à¤ मिला।\n\nà¤à¤® तà¥à¤° पर हà¤à¤¾à¤ à¤à¤¾ à¤à¥à¤à¥ पà¥à¤·à¥à¤ à¤à¥ à¤à¤¤à¤¿à¤¹à¤¾à¤¸ à¤à¤¡à¤¼à¥ à¤à¤¾ पà¥à¤°à¤¯à¥à¤ à¤à¤°à¤¨à¥ पर à¤à¤¸à¤¾ हà¥à¤¤à¤¾ हà¥à¥¤\n\nà¤
à¤à¤° à¤à¤¸à¤¾ नहà¥à¤ हà¥, तॠशायद à¤à¤ªà¤¨à¥ सà¥à¥à¥à¤à¤µà¥à¤¯à¤° मà¥à¤ तà¥à¤°à¥à¤à¤¿ à¤à¥à¤ लॠहà¥à¥¤\nà¤à¥à¤ªà¤¯à¤¾ यà¥à¥°à¤à¤°à¥°à¤à¤² पतॠसमà¥à¤¤ à¤à¤¿à¤¸à¥ [[Special:ListUsers/sysop|पà¥à¤°à¤¬à¤à¤§à¤]] à¤à¥ à¤à¤¸à¤à¤¾ बà¥à¤¯à¥à¤°à¤¾ दà¥à¤à¥¤",
"missingarticle-rev": "(à¤
वतरण#: $1)",
"missingarticle-diff": "(à¤
à¤à¤¤à¤°: $1, $2)",
@@ -438,7 +440,7 @@
"mypreferencesprotected": "à¤à¤ªà¤à¥ पास à¤
पनॠवरà¥à¤¯à¤¤à¤¾à¤à¤ बदलनॠà¤à¥ à¤
नà¥à¤®à¤¤à¤¿ नहà¥à¤ हà¥à¥¤",
"ns-specialprotected": "विशà¥à¤· पà¥à¤·à¥à¤ समà¥à¤ªà¤¾à¤¦à¤¿à¤¤ नहà¥à¤ à¤à¤¿à¤¯à¥ à¤à¤¾ सà¤à¤¤à¥à¥¤",
"titleprotected": "सदसà¥à¤¯ [[User:$1|$1]] नॠà¤à¤¸ शà¥à¤°à¥à¤·à¤ à¤à¤¾ पà¥à¤·à¥à¤ बनानॠसॠसà¥à¤°à¤à¥à¤·à¤¿à¤¤ à¤à¤¿à¤¯à¤¾ हà¥à¤ हà¥à¥¤\nà¤à¤¸à¤à¥ लियॠनिमà¥à¤¨ à¤à¤¾à¤°à¤£ दिया à¤à¤¯à¤¾ हà¥: $2 ",
- "filereadonlyerror": "\"$1\" फ़ाà¤à¤² à¤à¥ बदलनॠमà¥à¤ à¤
सà¤à¥à¤·à¤® à¤à¥à¤¯à¥à¤à¤à¤¿ à¤à¤£à¥à¤¡à¤¾à¤° \"$2\" à¤à¤¸ समय 'à¤à¥à¤µà¤² पाठन हà¥à¤¤à¥' (रà¥à¤¡ à¤à¤¨à¤²à¥) हà¥à¥¤\n\nà¤à¤¿à¤¸ पà¥à¤°à¤¬à¤à¤§à¤ नॠयॠपà¥à¤°à¤¬à¤à¤§ लà¤à¤¾à¤¯à¤¾ हॠà¤à¤¨à¥à¤¹à¥à¤à¤¨à¥ निमà¥à¤¨ विवरण पà¥à¤°à¤¦à¤¾à¤¨ à¤à¤¿à¤¯à¤¾ हà¥: \"$3\"।",
+ "filereadonlyerror": "\"$1\" फ़ाà¤à¤² à¤à¥ बदलनॠमà¥à¤ à¤
सà¤à¥à¤·à¤® à¤à¥à¤¯à¥à¤à¤à¤¿ à¤à¤£à¥à¤¡à¤¾à¤° \"$2\" à¤à¤¸ समय 'à¤à¥à¤µà¤² पाठन हà¥à¤¤à¥' (रà¥à¤¡ à¤à¤¨à¤²à¥) हà¥à¥¤\n\nà¤à¤¿à¤¸ à¤à¤¾à¤°à¥à¤¯à¤à¤¾à¤°à¥ पà¥à¤°à¤¬à¤à¤§à¤ नॠयॠपà¥à¤°à¤¬à¤à¤§ लà¤à¤¾à¤¯à¤¾ हॠà¤à¤¨à¥à¤¹à¥à¤à¤¨à¥ निमà¥à¤¨ विवरण पà¥à¤°à¤¦à¤¾à¤¨ à¤à¤¿à¤¯à¤¾ हà¥: \"$3\"।",
"invalidtitle-knownnamespace": "\"$2\" नामसà¥à¤¥à¤¾à¤¨ à¤à¤° \"$3\" नाम वाला à¤à¤²à¤¤ शà¥à¤°à¥à¤·à¤",
"invalidtitle-unknownnamespace": "à¤
à¤à¥à¤à¤¾à¤¤ नामसà¥à¤¥à¤¾à¤¨ सà¤à¤à¥à¤¯à¤¾ $1 à¤à¤° नाम \"$2\" वाला à¤à¤²à¤¤ शà¥à¤°à¥à¤·à¤",
"exception-nologin": "लà¥à¤ à¤à¤¨ नहà¥à¤ à¤à¤¿à¤¯à¤¾ हà¥",
@@ -726,7 +728,7 @@
"continue-editing": "सà¤à¤ªà¤¾à¤¦à¤¨ à¤à¥à¤·à¥à¤¤à¥à¤° à¤à¥ à¤à¤¾à¤à¤",
"previewconflict": "यह à¤à¤²à¤ à¤à¤ªà¤°à¥ पाठसमà¥à¤ªà¤¾à¤¦à¤¨ à¤à¥à¤·à¥à¤¤à¥à¤° मà¥à¤ हà¥à¤ बदलाव दिà¤à¤¾à¤¤à¥ हà¥, à¤à¤° यदि à¤à¤ª à¤
à¤à¥ सà¤à¤à¥à¤¤à¥ हà¥à¤ तॠयहॠपाठसà¤à¤à¥à¤¯à¤¾ à¤à¤¾à¤à¤à¤¾à¥¤",
"session_fail_preview": "'''à¤à¥à¤·à¤®à¤¾ à¤à¤°à¥à¤! सà¥à¤¶à¤¨ डाà¤à¤¾ à¤à¥ नषà¥à¤ हà¥à¤¨à¥ à¤à¥ à¤à¤¾à¤°à¤£ à¤à¤ªà¤à¥ बदलाव सà¤à¤à¥à¤¯à¥ नहà¥à¤ à¤à¤¾ सà¤à¥à¥¤'''\nà¤à¥à¤ªà¤¯à¤¾ पà¥à¤¨: यतà¥à¤¨ à¤à¤°à¥à¤à¥¤ à¤
à¤à¤° à¤à¤¸à¤à¥ बाद à¤à¥ à¤à¤¸à¤¾ हॠहà¥à¤¤à¤¾ हॠतॠà¤à¥à¤ªà¤¯à¤¾ [[Special:UserLogout|लà¥à¤ à¤à¤à¤]] à¤à¤° à¤à¥ पà¥à¤¨à¤ लà¥à¤ à¤à¤¨ à¤à¤°à¥à¤à¥¤",
- "session_fail_preview_html": "'''à¤à¥à¤·à¤®à¤¾ à¤à¤°à¥à¤! सà¥à¤¶à¤¨ डाà¤à¤¾ à¤à¥ नषà¥à¤ हà¥à¤¨à¥ à¤à¥ à¤à¤¾à¤°à¤£ à¤à¤ªà¤à¥ बदलाव सà¤à¤à¥à¤¯à¥ नहà¥à¤ à¤à¤¾ सà¤à¥à¥¤'''\n\n''à¤à¥à¤à¤à¤¿ {{SITENAME}} पर raw HTML सà¤à¥à¤·à¤® हà¥, à¤à¤¾à¤µà¤¾à¤¸à¥à¤à¥à¤°à¤¿à¤ªà¥à¤ हमलà¥à¤ सॠबà¤à¤¾à¤µ à¤à¥ लियॠà¤à¤²à¤ नहà¥à¤ दिà¤à¤¾à¤ à¤à¤ हà¥à¥¤''\n\n'''à¤
à¤à¤° यह à¤à¤ªà¤à¤¾ वà¥à¤§ सà¤à¤ªà¤¾à¤¦à¤¨ यतà¥à¤¨ था, तॠà¤à¥à¤ªà¤¯à¤¾ पà¥à¤¨à¤ यतà¥à¤¨ à¤à¤°à¥à¤à¥¤'''\nà¤
à¤à¤° à¤à¤¸à¤à¥ बाद à¤à¥ à¤à¤¸à¤¾ हॠहà¥à¤¤à¤¾ हॠतॠà¤à¥à¤ªà¤¯à¤¾ [[Special:UserLogout|लà¥à¤ à¤à¤à¤]] à¤à¤° à¤à¥ पà¥à¤¨à¤ लà¥à¤ à¤à¤¨ à¤à¤°à¥à¤à¥¤",
+ "session_fail_preview_html": "à¤à¥à¤·à¤®à¤¾ à¤à¤°à¥à¤! सà¥à¤¶à¤¨ डाà¤à¤¾ à¤à¥ नषà¥à¤ हà¥à¤¨à¥ à¤à¥ à¤à¤¾à¤°à¤£ à¤à¤ªà¤à¥ बदलाव सà¤à¤à¥à¤¯à¥ नहà¥à¤ à¤à¤¾ सà¤à¥à¥¤\n\nà¤à¥à¤à¤à¤¿ {{SITENAME}} पर raw HTML सà¤à¥à¤·à¤® हà¥, à¤à¤¾à¤µà¤¾à¤¸à¥à¤à¥à¤°à¤¿à¤ªà¥à¤ हमलà¥à¤ सॠबà¤à¤¾à¤µ à¤à¥ लियॠà¤à¤²à¤ नहà¥à¤ दिà¤à¤¾à¤ à¤à¤ हà¥à¥¤ \n\nà¤
à¤à¤° यह à¤à¤ªà¤à¤¾ वà¥à¤§ सà¤à¤ªà¤¾à¤¦à¤¨ यतà¥à¤¨ था, तॠà¤à¥à¤ªà¤¯à¤¾ पà¥à¤¨à¤ यतà¥à¤¨ à¤à¤°à¥à¤à¥¤ \nà¤
à¤à¤° à¤à¤¸à¤à¥ बाद à¤à¥ à¤à¤¸à¤¾ हॠहà¥à¤¤à¤¾ हॠतॠà¤à¥à¤ªà¤¯à¤¾ [[Special:UserLogout|लà¥à¤ à¤à¤à¤]] à¤à¤° à¤à¥ पà¥à¤¨à¤ लà¥à¤ à¤à¤¨ à¤à¤°à¥à¤ तथा à¤à¤¾à¤à¤à¤¿à¤ यदि à¤à¤ªà¤à¤¾ बà¥à¤°à¤¾à¤à¤à¤¼à¤° à¤à¤¸ साà¤à¤ सॠà¤à¥à¤à¥à¤à¤¼ à¤à¥ à¤
नà¥à¤®à¤¤à¤¿ दà¥à¤¤à¤¾ हà¥à¥¤",
"token_suffix_mismatch": "'''à¤à¤ªà¤à¥ दà¥à¤µà¤¾à¤°à¤¾ à¤à¤¿à¤¯à¥ à¤à¤¯à¥ बदलाव रदà¥à¤¦ à¤à¤° दियॠà¤à¤¯à¥ हà¥à¤ à¤à¥à¤¯à¥à¤à¤à¤¿ à¤à¤ªà¤à¥ à¤à¥à¤²à¤¾à¤¯à¤à¤ नॠà¤à¤ªà¤à¥ सà¤à¤ªà¤¾à¤¦à¤¨ à¤à¥à¤à¤¨ मà¥à¤ दियॠहà¥à¤ विरामà¤à¤¿à¤¨à¥à¤¹à¥à¤ मà¥à¤ बदलाव à¤à¤¿à¤¯à¥ हà¥à¤à¥¤'''\nलà¥à¤ à¤à¥ पाठमà¥à¤ à¤à¤°à¤¾à¤¬à¥ ना à¤à¤¯à¥ à¤à¤¸à¤²à¤¿à¤¯à¥ à¤à¤ªà¤à¥ बदलाव रदà¥à¤¦ à¤à¤° दियॠà¤à¤¯à¥ हà¥à¤à¥¤\nà¤à¤¸à¤¾ तब à¤à¥ हॠसà¤à¤¤à¤¾ हॠयदि à¤à¤ª à¤à¥à¤ à¤à¤°à¤¾à¤¬ वà¥à¤¬-à¤à¤§à¤¾à¤°à¤¿à¤¤ à¤
नामठपà¥à¤°à¥à¤à¥à¤¸à¥ पà¥à¤°à¤¯à¥à¤ à¤à¤° रहॠहà¥à¤à¥¤",
"edit_form_incomplete": "'''समà¥à¤ªà¤¾à¤¦à¤¨ फ़à¥à¤°à¥à¤® à¤à¥ à¤à¥à¤ à¤à¤¾à¤ सरà¥à¤µà¤° तठनहà¥à¤ पहà¥à¤à¤ पाà¤; à¤à¤¾à¤à¤ लà¥à¤ à¤à¤¿ à¤à¤ªà¤à¥ दà¥à¤µà¤¾à¤°à¤¾ à¤à¤¿à¤¯à¥ बदलाव à¤
à¤à¥à¤·à¥à¤£à¥à¤£ हà¥à¤, à¤à¤° सहà¥à¤à¤¨à¥ à¤à¤¾ पà¥à¤¨à¤ यतà¥à¤¨ à¤à¤°à¥à¤à¥¤'''",
"editing": "$1 समà¥à¤ªà¤¾à¤¦à¤¨",
@@ -744,7 +746,7 @@
"copyrightwarning2": "{{SITENAME}} पर à¤à¤¿à¤¯à¤¾ à¤à¥à¤ à¤à¥ यà¥à¤à¤¦à¤¾à¤¨ à¤
नà¥à¤¯ सदसà¥à¤¯à¥à¤ दà¥à¤µà¤¾à¤°à¤¾ बदला à¤à¤¾ सà¤à¤¤à¤¾ हॠà¤à¤° हà¤à¤¾à¤¯à¤¾ à¤à¥ à¤à¤¾ सà¤à¤¤à¤¾ हà¥à¥¤\nà¤
à¤à¤° à¤à¤ªà¤à¥ à¤
पनॠलिà¤à¥ हà¥à¤ पाठमà¥à¤ सà¤à¤ªà¤¾à¤¦à¤¨ हà¥à¤¨à¤¾ नामà¤à¤à¥à¤° हॠतॠयहाठपर न लिà¤à¥à¤à¥¤ \nà¤à¤ª हमà¥à¤ यह à¤à¥ वà¤à¤¨ दà¥à¤¤à¥à¤ हà¥à¤ à¤à¤¿ यह à¤à¤ªà¤¨à¥ सà¥à¤µà¤¯à¤ लिà¤à¤¾ हॠà¤
थवा सारà¥à¤µà¤à¤¨à¤¿à¤ à¤à¥à¤·à¥à¤¤à¥à¤° या à¤à¤¿à¤¸à¥ समान मà¥à¤à¥à¤¤ सà¥à¤°à¥à¤¤ सॠपà¥à¤°à¤¤à¤¿à¤²à¤¿à¤ªà¤¿à¤¤ à¤à¤¿à¤¯à¤¾ हॠ(à¤
धिठà¤à¤¾à¤¨à¤à¤¾à¤°à¥ à¤à¥ लियॠ$1 दà¥à¤à¥à¤)।\n'''à¤à¥à¤ªà¥à¤°à¤¾à¤à¤ सà¥à¤°à¤à¥à¤·à¤¿à¤¤ à¤à¤¾à¤°à¥à¤¯à¥à¤ à¤à¥ बिना à¤
नà¥à¤®à¤¤à¤¿ à¤à¥ यहाठन डालà¥à¤!'''",
"editpage-cannot-use-custom-model": "à¤à¤¸ पà¥à¤·à¥à¤ à¤à¤¾ मà¥à¤à¥à¤¯ सामà¤à¥à¤°à¥ परिवरà¥à¤¤à¤¿à¤¤ नहà¥à¤ हà¥à¤à¥¤",
"longpageerror": "'''तà¥à¤°à¥à¤à¤¿: à¤à¤ªà¤à¤¾ दिया हà¥à¤ पाठ{{PLURAL:|$1 à¤à¤¿à¤²à¥à¤¬à¤¾à¤à¤|$1 à¤à¤¿à¤²à¥à¤¬à¤¾à¤à¤}} लà¤à¤¬à¤¾ हà¥, à¤à¥ {{PLURAL:|$2 à¤à¤¿à¤²à¥à¤¬à¤¾à¤à¤|$2 à¤à¤¿à¤²à¥à¤¬à¤¾à¤à¤}} à¤à¥ सà¥à¤®à¤¾ सॠबाहर हà¥à¥¤\nà¤à¤¸à¥ सà¤à¤à¥à¤¯à¤¾ नहà¥à¤ à¤à¤¾ सà¤à¤¤à¤¾à¥¤'''",
- "readonlywarning": "'''सावधान: डाà¤à¤¾à¤¬à¥à¤¸ à¤à¥ रà¤-रà¤à¤¾à¤µ à¤à¥ लियॠबà¤à¤¦ à¤à¤° दिया à¤à¤¯à¤¾ हà¥, à¤à¤¸à¤²à¤¿à¤¯à¥ à¤
à¤à¥ à¤à¤ªà¤à¥ बदलाव सà¤à¤à¥à¤ नहà¥à¤ à¤à¤¾ सà¤à¤¤à¥à¥¤\nà¤
à¤à¤° à¤à¤ª à¤à¤¾à¤¹à¥à¤ तॠà¤à¤¸ सामà¤à¥à¤°à¥ à¤à¥ बाद à¤à¥ लिठà¤à¥à¤ªà¥-पà¥à¤¸à¥à¤ à¤à¤° à¤à¥ à¤à¤¿à¤¸à¥ à¤à¥à¤à¥à¤¸à¥à¤ फ़ाà¤à¤² मà¥à¤ रठसà¤à¤¤à¥ हà¥à¤à¥¤'''\n\nबà¤à¤¦ à¤à¤°à¤¨à¥ वालॠपà¥à¤°à¤¬à¤à¤§à¤ नॠबà¤à¤¦ à¤à¤°à¤¨à¥ à¤à¤¾ यह à¤à¤¾à¤°à¤£ दिया हà¥: $1",
+ "readonlywarning": "सावधान: डाà¤à¤¾à¤¬à¥à¤¸ à¤à¥ रà¤-रà¤à¤¾à¤µ à¤à¥ लियॠबà¤à¤¦ à¤à¤° दिया à¤à¤¯à¤¾ हà¥, à¤à¤¸à¤²à¤¿à¤¯à¥ à¤
à¤à¥ à¤à¤ªà¤à¥ बदलाव सà¤à¤à¥à¤ नहà¥à¤ à¤à¤¾ सà¤à¤¤à¥à¥¤\nà¤
à¤à¤° à¤à¤ª à¤à¤¾à¤¹à¥à¤ तॠà¤à¤¸ सामà¤à¥à¤°à¥ à¤à¥ बाद à¤à¥ लिठà¤à¥à¤ªà¥-पà¥à¤¸à¥à¤ à¤à¤° à¤à¥ à¤à¤¿à¤¸à¥ à¤à¥à¤à¥à¤¸à¥à¤ फ़ाà¤à¤² मà¥à¤ रठसà¤à¤¤à¥ हà¥à¤à¥¤ \n\nबà¤à¤¦ à¤à¤°à¤¨à¥ वालॠà¤à¤¾à¤°à¥à¤¯à¤à¤¾à¤°à¥ पà¥à¤°à¤¬à¤à¤§à¤ नॠबà¤à¤¦ à¤à¤°à¤¨à¥ à¤à¤¾ यह à¤à¤¾à¤°à¤£ दिया हà¥: $1",
"protectedpagewarning": "'''à¤à¥à¤¤à¤¾à¤µà¤¨à¥: à¤à¤¸ पà¥à¤·à¥à¤ à¤à¥ सà¥à¤°à¤à¥à¤·à¤¿à¤¤ à¤à¤° दिया à¤à¤¯à¤¾ हॠà¤à¤° à¤à¤¸à¥ à¤à¥à¤µà¤² पà¥à¤°à¤¬à¤à¤§à¤ हॠसमà¥à¤ªà¤¾à¤¦à¤¿à¤¤ à¤à¤° सà¤à¤¤à¥ हà¥à¤à¥¤'''\nनवà¥à¤¨à¤¤à¤® लà¥à¤ पà¥à¤°à¤µà¤¿à¤·à¥à¤à¤¿ सà¤à¤¦à¤°à¥à¤ à¤à¥ लियॠनà¥à¤à¥ दॠहà¥:",
"semiprotectedpagewarning": "'''सà¥à¤à¤¨à¤¾:''' यह पà¥à¤·à¥à¤ सà¥à¤°à¤à¥à¤·à¤¿à¤¤ à¤à¤° दिया à¤à¤¯à¤¾ हॠà¤à¤° à¤à¤¸à¥ à¤à¥à¤µà¤² पà¤à¤à¥à¤à¥à¤¤ सदसà¥à¤¯ हॠसमà¥à¤ªà¤¾à¤¦à¤¿à¤¤ à¤à¤° सà¤à¤¤à¥ हà¥à¤à¥¤\nनवà¥à¤¨à¤¤à¤® लà¥à¤ पà¥à¤°à¤µà¤¿à¤·à¥à¤à¤¿ सà¤à¤¦à¤°à¥à¤ à¤à¥ लियॠनà¥à¤à¥ दॠहà¥:",
"cascadeprotectedwarning": "'''सावधान:''' यह पà¥à¤·à¥à¤ निमà¥à¤¨à¤²à¤¿à¤à¤¿à¤¤ सà¥à¤°à¤à¥à¤·à¤¾-सà¥à¤¢à¤¼à¥ {{PLURAL:$1|पà¥à¤·à¥à¤ सà¥|पनà¥à¤¨à¥à¤ सà¥}} à¤à¥à¤¡à¤¼à¤¾ हà¥à¤ हà¥à¤¨à¥ à¤à¥ à¤à¤¾à¤°à¤£ सà¥à¤°à¤à¥à¤·à¤¿à¤¤ हà¥, à¤à¤° à¤à¥à¤µà¤² पà¥à¤°à¤¬à¤à¤§à¤ हॠà¤à¤¸à¤®à¥à¤ बदलाव à¤à¤° सà¤à¤¤à¥ हà¥à¤:",
@@ -763,7 +765,7 @@
"permissionserrors": "à¤
धिà¤à¤¾à¤° तà¥à¤°à¥à¤à¤¿",
"permissionserrorstext": "निमà¥à¤¨à¤²à¤¿à¤à¤¿à¤¤ {{PLURAL:$1|à¤à¤¾à¤°à¤£|à¤à¤¾à¤°à¤£à¥à¤}} सॠà¤à¤ªà¤à¥ à¤à¤¸à¤¾ à¤à¤°à¤¨à¥ à¤à¥ à¤
नà¥à¤®à¤¤à¤¿ नहà¥à¤ हà¥à¤:",
"permissionserrorstext-withaction": "à¤à¤ªà¤à¥ $2 à¤à¥ à¤
नà¥à¤®à¤¤à¤¿ नहà¥à¤ हà¥à¤, निमà¥à¤¨à¤²à¤¿à¤à¤¿à¤¤ {{PLURAL:$1|à¤à¤¾à¤°à¤£|à¤à¤¾à¤°à¤£à¥à¤}} à¤à¥ वà¤à¤¹ सà¥:",
- "contentmodelediterror": "à¤à¤ª à¤à¤¸ पà¥à¤·à¥à¤ à¤à¤¾ à¤à¤¤à¤¿à¤¹à¤¾à¤¸ मà¥à¤ समà¥à¤ªà¤¾à¤¦à¤¨ नहà¥à¤ à¤à¤° सà¤à¤¤à¥ हà¥à¤ à¤à¥à¤¯à¥à¤à¤à¤¿ à¤à¤¸à¤à¤¾ सामà¤à¥à¤°à¥ $1
, à¤à¤° वरà¥à¤¤à¤®à¤¾à¤¨ सामà¤à¥à¤°à¥ $2
हà¥à¥¤",
+ "contentmodelediterror": "à¤à¤ª à¤à¤¸ पà¥à¤·à¥à¤ à¤à¤¾ à¤à¤¤à¤¿à¤¹à¤¾à¤¸ मà¥à¤ समà¥à¤ªà¤¾à¤¦à¤¨ नहà¥à¤ à¤à¤° सà¤à¤¤à¥ हà¥à¤ à¤à¥à¤¯à¥à¤à¤à¤¿ à¤à¤¸à¤à¤¾ सामà¤à¥à¤°à¥ $1
, à¤à¥ à¤à¥ वरà¥à¤¤à¤®à¤¾à¤¨ सामà¤à¥à¤°à¥ सॠ$2
à¤
लठहà¥à¥¤",
"recreate-moveddeleted-warn": "'''à¤à¥à¤¤à¤¾à¤µà¤¨à¥: à¤à¤ª à¤à¤ पहलॠहà¤à¤¾à¤ à¤à¤ पà¥à¤·à¥à¤ à¤à¥ पà¥à¤¨à¤°à¥à¤¨à¤¿à¤°à¥à¤®à¤¿à¤¤ à¤à¤° रहॠहà¥à¤à¥¤'''\n\nà¤à¤ª à¤à¥ विà¤à¤¾à¤° à¤à¤°à¤¨à¤¾ à¤à¤¾à¤¹à¤¿à¤¯à¥ à¤à¤¿ à¤à¥à¤¯à¤¾ à¤à¤¸ पà¥à¤·à¥à¤ à¤à¤¾ सà¤à¤ªà¤¾à¤¦à¤¨ à¤à¤¾à¤°à¥ रà¤à¤¨à¤¾ à¤à¤à¤¿à¤¤ हà¥à¤à¤¾à¥¤\nà¤à¤¸ पà¥à¤·à¥à¤ à¤à¥ हà¤à¤¾à¤¨à¥ व सà¥à¤¥à¤¾à¤¨à¤¾à¤à¤¤à¤°à¤£ à¤à¤¾ लà¥à¤ सà¥à¤µà¤¿à¤§à¤¾ à¤à¥ लियॠà¤à¤ªà¤²à¤¬à¥à¤§ हà¥:",
"moveddeleted-notice": "यह पà¥à¤·à¥à¤ हà¤à¤¾à¤¯à¤¾ à¤à¤¾ à¤à¥à¤à¤¾ हà¥à¥¤\nपà¥à¤·à¥à¤ à¤à¥ हà¤à¤¾à¤¨à¥ à¤à¤° सà¥à¤¥à¤¾à¤¨à¤¾à¤à¤¤à¤°à¤£ à¤à¤¾ लà¥à¤ सà¤à¤¦à¤°à¥à¤ à¤à¥ लिठनà¥à¤à¥ दिया à¤à¤¯à¤¾ हà¥à¥¤",
"moveddeleted-notice-recent": "à¤à¥à¤·à¤®à¤¾ à¤à¤°à¥à¤, यह पà¥à¤·à¥à¤ à¤à¥à¤ हॠसमय पहलॠहà¤à¤¾à¤¯à¤¾ à¤à¤¯à¤¾ हà¥à¥¤ (24 à¤à¤£à¥à¤à¥à¤ à¤à¥ à¤à¥à¤¤à¤°)\nà¤à¤¸à¤à¥ हà¤à¤¾à¤¯à¥ à¤à¤° सà¥à¤¥à¤¾à¤¨à¤¾à¤à¤¤à¤°à¤¿à¤¤ à¤à¤°à¤¨à¥ à¤à¤¾ लà¥à¤ नà¥à¤à¥ दिया हà¥à¤ हà¥à¥¤",
@@ -893,7 +895,7 @@
"revdelete-unsuppress": "पà¥à¤¨à¤°à¥à¤¸à¥à¤¥à¤¾à¤ªà¤¿à¤¤ à¤
वतरणà¥à¤ पर सॠपà¥à¤°à¤¤à¤¿à¤¬à¤¨à¥à¤§ हà¤à¤¾à¤à¤",
"revdelete-log": "à¤à¤¾à¤°à¤£:",
"revdelete-submit": "à¤à¤¯à¤¨à¤¿à¤¤ {{PLURAL:$1|à¤
वतरण|à¤
वतरणà¥à¤}} पर लाà¤à¥ à¤à¤°à¥à¤",
- "revdelete-success": "'''à¤
वतरण दà¥à¤¶à¥à¤¯à¤¤à¤¾ सफलतापà¥à¤°à¥à¤µà¤ à¤
दà¥à¤¯à¤¾à¤¤à¤¾à¤¨à¥à¤¤ à¤à¥ à¤à¤à¥¤'''",
+ "revdelete-success": "à¤
वतरण दà¥à¤¶à¥à¤¯à¤¤à¤¾ सफलतापà¥à¤°à¥à¤µà¤ à¤
दà¥à¤¯à¤¾à¤¤à¤¾à¤¨à¥à¤¤ à¤à¥ à¤à¤à¥¤",
"revdelete-failure": "'''à¤
वतरण दà¥à¤¶à¥à¤¯à¤¤à¤¾ à¤
दà¥à¤¯à¤¾à¤¤à¤¾à¤¨à¥à¤¤ नहà¥à¤ à¤à¥ à¤à¤¾ सà¤à¥:'''\n$1",
"logdelete-success": "लà¥à¤ दà¥à¤·à¥à¤¯à¤¤à¤¾ बदलॠà¤à¤à¥¤",
"logdelete-failure": "'''लà¥à¤ दà¥à¤¶à¥à¤¯à¤¤à¤¾ à¤à¤¾ à¤à¤®à¤¾à¤µ नहà¥à¤ à¤à¤¿à¤¯à¤¾ à¤à¤¾ सà¤à¤¾:'''\n$1",
@@ -1376,9 +1378,9 @@
"recentchangeslinked-page": "पà¥à¤·à¥à¤ नाम:",
"recentchangeslinked-to": "à¤à¤¸à¤à¥ बदलॠमà¥à¤ दियॠहà¥à¤ पà¥à¤·à¥à¤ सॠà¤à¥à¤¡à¥ पनà¥à¤¨à¥à¤à¤à¥ बदलाव दरà¥à¤¶à¤¾à¤¯à¥à¤",
"recentchanges-page-added-to-category": "[[:$1]] शà¥à¤°à¥à¤£à¥ मà¥à¤ à¤à¥à¤¡à¤¼à¤¾",
- "recentchanges-page-added-to-category-bundled": "[[:$1]] à¤à¤° {{PLURAL:$2|à¤à¤ पà¥à¤·à¥à¤ |$2 पà¥à¤·à¥à¤ }} शà¥à¤°à¥à¤£à¥ मà¥à¤ à¤à¥à¤¡à¤¼à¤¾",
+ "recentchanges-page-added-to-category-bundled": "[[:$1]] à¤à¤° [[Special:WhatLinksHere/$1|{{PLURAL:$2|à¤à¤ पà¥à¤·à¥à¤ |$2 पà¥à¤·à¥à¤ }}]] शà¥à¤°à¥à¤£à¥ मà¥à¤ à¤à¥à¤¡à¤¼à¤¾",
"recentchanges-page-removed-from-category": "[[:$1]] शà¥à¤°à¥à¤£à¥ सॠहà¤à¤¾",
- "recentchanges-page-removed-from-category-bundled": "[[:$1]] à¤à¤° {{PLURAL:$2|à¤à¤ पà¥à¤·à¥à¤ |$2 पà¥à¤·à¥à¤ }} शà¥à¤°à¥à¤£à¥ सॠहà¤à¤¾",
+ "recentchanges-page-removed-from-category-bundled": "[[:$1]] à¤à¤° [[Special:WhatLinksHere/$1|{{PLURAL:$2|à¤à¤ पà¥à¤·à¥à¤ |$2 पà¥à¤·à¥à¤ }}]] शà¥à¤°à¥à¤£à¥ सॠहà¤à¤¾",
"autochange-username": "मà¥à¤¡à¤¿à¤¯à¤¾à¤µà¤¿à¤à¤¿ सà¥à¤µà¤¤à¤ परिवरà¥à¤¤à¤¨",
"upload": "à¥à¤¾à¤à¤² à¤
पलà¥à¤¡ à¤à¤°à¥à¤",
"uploadbtn": "à¥à¤¾à¤à¤² à¤
पलà¥à¤¡ à¤à¤°à¥à¤",
@@ -1558,6 +1560,7 @@
"uploadstash-badtoken": "वह à¤à¤¾à¤°à¥à¤¯ à¤
सफल रहा, समà¥à¤à¤µà¤¤à¤ à¤à¤ªà¤à¥ समà¥à¤ªà¤¾à¤¦à¤¨ पà¥à¤°à¤®à¤¾à¤£à¤ªà¤¤à¥à¤° à¤à¥ à¤
वधि समापà¥à¤¤ हॠà¤à¤ हà¥à¥¤ पà¥à¤¨à¤ पà¥à¤°à¤¯à¤¾à¤¸ à¤à¤°à¥à¤à¥¤",
"uploadstash-errclear": "फ़ाà¤à¤²à¥à¤ à¤à¥ साफ़ à¤à¤°à¤¨à¤¾ à¤
सफल रहा।",
"uploadstash-refresh": "à¥à¤¾à¤à¤²à¥à¤ à¤à¥ सà¥à¤à¥ रिà¥à¥à¤°à¥à¤¶ à¤à¤°à¥à¤",
+ "uploadstash-thumbnail": "à¤à¤µà¤¿ दà¥à¤à¥à¤",
"invalid-chunk-offset": "à¤
à¤à¥à¤°à¤¾à¤¹à¥à¤¯ à¤à¤à¤ à¤à¥à¤¸à¥à¤",
"img-auth-accessdenied": "à¤
नà¥à¤®à¤¤à¤¿ नहà¥à¤ हà¥",
"img-auth-nopathinfo": "PATH_INFO मà¥à¤à¥à¤¦ नहà¥à¤ हà¥à¥¤\nà¤à¤ªà¤à¥ सरà¥à¤µà¤° मà¥à¤ à¤à¤¸ à¤à¤¾à¤¨à¤à¤¾à¤°à¥ à¤à¥ à¤à¥à¤à¤¨à¥ à¤à¥ लिठà¤à¤®à¤¾à¤µ नहà¥à¤ हà¥à¥¤\nयह सà¥à¥°à¤à¥à¥°à¤à¤-à¤à¤§à¤¾à¤°à¤¿à¤¤ हॠसà¤à¤¤à¤¾ हॠà¤à¤° img_auth à¤à¥ सà¥à¤µà¥à¤à¤¾à¤° नहà¥à¤ à¤à¤°à¤¤à¤¾ हà¥à¥¤\nhttps://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Image_Authorization दà¥à¤à¥à¤à¥¤",
@@ -1878,8 +1881,6 @@
"categories-submit": "दिà¤à¤¾à¤à¤",
"categoriespagetext": "निमà¥à¤¨à¥à¤à¥à¤¤ {{PLURAL:$1|शà¥à¤°à¥à¤£à¥|शà¥à¤°à¥à¤£à¤¿à¤¯à¥à¤}} मà¥à¤ पà¥à¤·à¥à¤ या मà¥à¤¡à¤¿à¤¯à¤¾ हà¥à¥¤\nà¤à¤¿à¤¨ शà¥à¤°à¥à¤£à¤¿à¤¯à¥à¤ à¤à¤¾ [[Special:UnusedCategories|à¤
पà¥à¤°à¤¯à¥à¤à¥à¤¤ शà¥à¤°à¥à¤£à¤¿à¤¯à¤¾à¤]] यहाठनहà¥à¤ दिà¤à¤¾à¤ à¤à¤ हà¥à¤à¥¤\n[[Special:WantedCategories|वाà¤à¤à¤¿à¤¤ शà¥à¤°à¥à¤£à¤¿à¤¯à¤¾à¤]] à¤à¥ दà¥à¤à¥à¤à¥¤",
"categoriesfrom": "à¤à¤¸ à¤
à¤à¥à¤·à¤° सॠशà¥à¤°à¥ हà¥à¤¨à¥ वालॠशà¥à¤°à¥à¤£à¥à¤¯à¤¾à¤ दरà¥à¤¶à¤¾à¤¯à¥à¤:",
- "special-categories-sort-count": "सà¤à¤à¥à¤¯à¤¾à¤¨à¥à¤¸à¤¾à¤° शà¤à¥à¤°à¤®à¤¾à¤à¤à¤¿à¤¤ à¤à¤°à¥à¤",
- "special-categories-sort-abc": "वरà¥à¤£à¤¾à¤¨à¥à¤à¥à¤°à¤® à¤à¥ à¤
नà¥à¤¸à¤¾à¤° दरà¥à¤¶à¤¾à¤¯à¥à¤",
"deletedcontributions": "हà¤à¤¾à¤ à¤à¤ सदसà¥à¤¯ यà¥à¤à¤¦à¤¾à¤¨",
"deletedcontributions-title": "हà¤à¤¾à¤ à¤à¤ सदसà¥à¤¯ यà¥à¤à¤¦à¤¾à¤¨",
"sp-deletedcontributions-contribs": "यà¥à¤à¤¦à¤¾à¤¨",
@@ -1964,7 +1965,7 @@
"emailccsubject": "à¤à¤ªà¤à¥ à¤-मà¥à¤² à¤à¥ पà¥à¤°à¤¤à¤¿ à¤à¥ $1 à¤à¥ à¤à¥à¤à¤¾ à¤à¤¯à¤¾: $2",
"emailsent": "à¤-मà¥à¤² à¤à¥à¤ दिया à¤à¤¯à¤¾ हà¥à¥¤",
"emailsenttext": "à¤à¤ªà¤à¤¾ à¤-मà¥à¤² सà¤à¤¦à¥à¤¶ à¤à¥à¤ दिया à¤à¤¯à¤¾ हà¥à¥¤",
- "emailuserfooter": "à¤à¤¸ à¤-मà¥à¤² à¤à¥ $1 दà¥à¤µà¤¾à¤°à¤¾ $2 à¤à¥ à¤à¥à¤à¤¾ à¤à¤¯à¤¾ था à¤à¤¿à¤¸à¤à¥ लिठ\"{{int:emailuser}}\" à¤à¤¾à¤°à¥à¤¯ à¤à¥ {{SITENAME}} पर पà¥à¤°à¤¯à¥à¤ मà¥à¤ लाया à¤à¤¯à¤¾ था।",
+ "emailuserfooter": "à¤à¤¸ à¤-मà¥à¤² à¤à¥ $1 {{GENDER:$1|दà¥à¤µà¤¾à¤°à¤¾}} {{GENDER:$2|$2}} à¤à¥ à¤à¥à¤à¤¾ à¤à¤¯à¤¾ था à¤à¤¿à¤¸à¤à¥ लिठ\"{{int:emailuser}}\" à¤à¤¾à¤°à¥à¤¯ à¤à¥ {{SITENAME}} पर पà¥à¤°à¤¯à¥à¤ मà¥à¤ लाया à¤à¤¯à¤¾ था।",
"usermessage-summary": "पà¥à¤°à¤£à¤¾à¤²à¥ सनà¥à¤¦à¥à¤¶ à¤à¥à¤¡à¤¼ रहा हà¥à¥¤",
"usermessage-editor": "सिसà¥à¤à¤® दà¥à¤¤",
"watchlist": "धà¥à¤¯à¤¾à¤¨à¤¸à¥à¤à¥",
@@ -1974,7 +1975,7 @@
"watchlistanontext": "à¤
पनॠधà¥à¤¯à¤¾à¤¨à¤¸à¥à¤à¥ मà¥à¤ मà¥à¤à¥à¤¦ पà¥à¤·à¥à¤ दà¥à¤à¤¨à¥ या फिर सà¤à¤ªà¤¾à¤¦à¤¿à¤¤ à¤à¤°à¤¨à¥ à¤à¥ लियॠà¤à¥à¤ªà¤¯à¤¾ लà¥à¤ à¤à¤¨ à¤à¤°à¥à¤à¥¤",
"watchnologin": "लà¥à¤ à¤à¤¨ नहà¥à¤ à¤à¤¿à¤¯à¤¾ हà¥",
"addwatch": "धà¥à¤¯à¤¾à¤¨à¤¸à¥à¤à¥ मà¥à¤ à¤à¥à¤¡à¤¼à¥à¤",
- "addedwatchtext": "à¤à¤ªà¤à¥ [[Special:Watchlist|धà¥à¤¯à¤¾à¤¨à¤¸à¥à¤à¥]] मà¥à¤ \"[[:$1]]\" पà¥à¤·à¥à¤ à¤à¥à¤¡à¤¼ दिया à¤à¤¯à¤¾ हà¥à¥¤\nà¤à¤µà¤¿à¤·à¥à¤¯ मà¥à¤ à¤à¤¸ पà¥à¤·à¥à¤ तथा à¤à¤¸à¤à¥ वारà¥à¤¤à¤¾ पà¥à¤·à¥à¤ मà¥à¤ हà¥à¤¨à¥ वालॠबदलाव à¤à¤ªà¤à¥ धà¥à¤¯à¤¾à¤¨à¤¸à¥à¤à¥ मà¥à¤ दिà¤à¥à¤à¤à¥à¥¤",
+ "addedwatchtext": "à¤à¤ªà¤à¥ [[Special:Watchlist|धà¥à¤¯à¤¾à¤¨à¤¸à¥à¤à¥]] मà¥à¤ \"[[:$1]]\" à¤à¤° à¤à¤¸à¤à¥ à¤à¤°à¥à¤à¤¾ पà¥à¤·à¥à¤ à¤à¥à¤¡à¤¼ दिठà¤à¤ हà¥à¤à¥¤",
"addedwatchtext-short": "पà¥à¤·à¥à¤ \"$1\" à¤à¥ à¤à¤ªà¤à¥ धà¥à¤¯à¤¾à¤¨à¤¸à¥à¤à¥ सॠà¤à¥à¤¡à¤¼à¤¾ à¤à¤¯à¤¾ हà¥à¥¤",
"removewatch": "धà¥à¤¯à¤¾à¤¨à¤¸à¥à¤à¥ सॠहà¤à¤¾à¤à¤",
"removedwatchtext": "\"[[:$1]]\" नामठपà¥à¤·à¥à¤ à¤à¥ à¤à¤ªà¤à¥ [[Special:Watchlist|धà¥à¤¯à¤¾à¤¨à¤¸à¥à¤à¥]] सॠहà¤à¤¾ दिया à¤à¤¯à¤¾ हà¥à¥¤",
@@ -2256,6 +2257,7 @@
"ipb-unblock": "सदसà¥à¤¯ à¤
थवा à¤à¤à¤ªà¥ à¤à¤¡à¥à¤°à¥à¤¸ à¤à¥ à¤
नबà¥à¤²à¥à¤ à¤à¤°à¥à¤",
"ipb-blocklist": "सदà¥à¤¯ बà¥à¤²à¥à¤ दà¥à¤à¥à¤",
"ipb-blocklist-contribs": "{{GENDER:$1|$1}} à¤à¥ लिठयà¥à¤à¤¦à¤¾à¤¨",
+ "ipb-blocklist-duration-left": "$1 बाà¤à¥",
"unblockip": "सदसà¥à¤¯ à¤à¥ à¤
नबà¥à¤²à¥à¤ à¤à¤°à¥à¤",
"unblockiptext": "पहलॠबà¥à¤²à¥à¤ à¤à¤¿à¤¯à¥ हà¥à¤ à¤à¤à¤ªà¥ à¤à¤¡à¥à¤°à¥à¤¸ या सदसà¥à¤¯à¤¨à¤¾à¤® à¤à¥ à¤
नबà¥à¤²à¥à¤ à¤à¤°à¤¨à¥ à¤à¥ लियॠनà¥à¤à¥ दिया à¤à¤¯à¤¾ फारà¥à¤® à¤à¤°à¥à¤à¥¤",
"ipusubmit": "यह à¤
वरà¥à¤§ हà¤à¤¾à¤à¤",
@@ -2497,11 +2499,7 @@
"import-logentry-upload-detail": "$1 à¤
वतरण à¤à¤¯à¤¾à¤¤ {{PLURAL:$1|à¤à¤¿à¤¯à¤¾ à¤à¤¯à¤¾|à¤à¤¿à¤¯à¥ à¤à¤}}",
"import-logentry-interwiki-detail": "$2 सॠ$1 à¤
वतरण à¤à¤¯à¤¾à¤¤ {{PLURAL:$1|à¤à¤¿à¤¯à¤¾ à¤à¤¯à¤¾|à¤à¤¿à¤¯à¥ à¤à¤}}",
"javascripttest": "à¤à¤¾à¤µà¤¾à¤¸à¥à¤à¥à¤°à¤¿à¤ªà¥à¤ परà¥à¤à¥à¤·à¤£",
- "javascripttest-pagetext-noframework": "यह पà¥à¤·à¥à¤ à¤à¤¾à¤µà¤¾à¤¸à¥à¤à¥à¤°à¤¿à¤ªà¥à¤ परà¥à¤à¥à¤·à¤£ à¤à¤²à¤¾à¤¨à¥ à¤à¥ लिठहà¥à¥¤",
- "javascripttest-pagetext-unknownframework": "à¤
à¤à¥à¤à¤¾à¤¤ परà¥à¤à¥à¤·à¤£ ढाà¤à¤à¤¾ \"$1\"",
"javascripttest-pagetext-unknownaction": "à¤
à¤à¥à¤à¤¾à¤¤ à¤à¥à¤°à¤¿à¤¯à¤¾ \"$1\" ।",
- "javascripttest-pagetext-frameworks": "à¤à¥à¤ªà¤¯à¤¾ निमà¥à¤¨ परà¥à¤à¥à¤·à¤£ ढाà¤à¤à¥à¤ मà¥à¤ सॠà¤à¤ à¤à¥à¤¨à¥à¤: $1",
- "javascripttest-pagetext-skins": "परà¥à¤à¥à¤·à¤£ à¤à¤°à¤¨à¥ à¤à¥ लिठतà¥à¤µà¤à¤¾ à¤à¥à¤¨à¥à¤:",
"javascripttest-qunit-intro": "mediawiki.org पर [$1 परà¥à¤à¥à¤·à¤£ à¤à¥ पà¥à¤°à¤²à¥à¤à¤¨] दà¥à¤à¥à¤à¥¤",
"tooltip-pt-userpage": "{{GENDER:|à¤à¤ªà¤à¤¾ पà¥à¤°à¤¯à¥à¤à¥à¤¤à¤¾}} पà¥à¤·à¥à¤ ",
"tooltip-pt-anonuserpage": "à¤à¤ª à¤à¤¿à¤¸ à¤à¤à¤ªà¥ सॠबदलाव à¤à¤° रहà¥à¤ हà¥à¤ à¤à¤¸à¤à¤¾ सदसà¥à¤¯ पान",
@@ -2769,8 +2767,8 @@
"exif-colorspace": "रà¤à¤ सà¥à¤¥à¤¾à¤¨",
"exif-componentsconfiguration": "हर à¤à¤à¤ à¤à¤¾ मतलब",
"exif-compressedbitsperpixel": "à¤à¤¿à¤¤à¥à¤° à¤à¥à¤®à¥à¤ªà¥à¤°à¥à¤¶à¤¨ मà¥à¤¡",
- "exif-pixelydimension": "à¤à¤µà¤¿ à¤à¥à¤¡à¤¼à¤¾à¤",
- "exif-pixelxdimension": "à¤à¤µà¤¿ à¤à¤à¤à¤¾à¤",
+ "exif-pixelxdimension": "à¤à¤µà¤¿ à¤à¥à¤¡à¤¼à¤¾à¤",
+ "exif-pixelydimension": "à¤à¤µà¤¿ à¤à¤à¤à¤¾à¤",
"exif-usercomment": "सदसà¥à¤¯ à¤à¤¿à¤ªà¥à¤ªà¤£à¥",
"exif-relatedsoundfile": "सà¤à¤¬à¤à¤§à¤¿à¤¤ धà¥à¤µà¤¨à¥ फ़ाà¤à¤²",
"exif-datetimeoriginal": "डाà¤à¤¾ बनानॠà¤à¤¾ दिनाà¤à¤ à¤à¤° समय",
@@ -3261,7 +3259,6 @@
"version-libraries-description": "विवरण",
"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]]।",
"redirect-submit": "à¤à¤¾à¤¯à¥à¤",
"redirect-lookup": "ढà¥à¤à¤¢à¥à¤:",
@@ -3274,7 +3271,6 @@
"redirect-not-exists": "यह मान पà¥à¤°à¤¾à¤ªà¥à¤¤ नहà¥à¤ हà¥à¤",
"fileduplicatesearch": "à¥à¤¾à¤à¤² दà¥à¤µà¤¿à¤°à¤¾à¤µà¥à¤¤à¥à¤¤à¤¿ à¤à¥à¤à¥à¤",
"fileduplicatesearch-summary": "हà¥à¤¶ वà¥à¤²à¥à¤¯à¥ à¤à¥ à¤
नà¥à¤¸à¤¾à¤° फ़ाà¤à¤² à¤à¥ दà¥à¤µà¤¿à¤°à¤¾à¤µà¥à¤¤à¥à¤¤à¤¿ à¤à¥à¤à¥à¤à¥¤",
- "fileduplicatesearch-legend": "दà¥à¤µà¤¿à¤°à¤¾à¤µà¥à¤¤à¥à¤¤à¤¿ à¤à¥ लियॠà¤à¥à¤à¥à¤",
"fileduplicatesearch-filename": "à¥à¤¾à¤à¤²à¤¨à¤¾à¤®:",
"fileduplicatesearch-submit": "à¤à¥à¤à¥à¤",
"fileduplicatesearch-info": "$1 à $2 पà¥à¤à¥à¤¸à¥à¤² à¥à¤¾à¤à¤² à¤à¤¾ à¤à¤à¤¾à¤°: $3 MIME पà¥à¤°à¤à¤¾à¤°: $4",
@@ -3568,6 +3564,7 @@
"api-error-unknownerror": "à¤
à¤à¥à¤à¤¾à¤¤ तà¥à¤°à¥à¤à¤¿: \" $1 \"",
"api-error-uploaddisabled": "à¤à¤¸ विà¤à¤¿ पर à¤
पलà¥à¤¡ à¤
à¤à¥à¤·à¤® हà¥.",
"api-error-verification-error": "यह फ़ाà¤à¤² दà¥à¤·à¤¿à¤¤ हॠसà¤à¤¤à¥ हà¥, या à¤à¤²à¤¤ à¤à¤à¥à¤¸à¤à¥à¤à¤¶à¤¨ हà¥à¥¤",
+ "api-error-was-deleted": "à¤à¤¸ नाम à¤à¤¾ फ़ाà¤à¤² पहलॠà¤
पलà¥à¤¡ हà¥à¤ था à¤à¤° हठà¤à¥ à¤à¤¯à¤¾ था।",
"duration-seconds": "$1 {{PLURAL:$1|सà¥
à¤à¥à¤à¤¡}}",
"duration-minutes": "$1 {{PLURAL:$1|मिनà¤}}",
"duration-hours": "$1 {{PLURAL:$1|à¤à¤à¤à¤¾|à¤à¤à¤à¥}}",
@@ -3658,6 +3655,7 @@
"special-characters-group-ipa": "à¤à¤à¤ªà¥à¤",
"special-characters-group-symbols": "पà¥à¤°à¤¤à¥à¤",
"special-characters-group-greek": "à¤à¥à¤°à¥à¤",
+ "special-characters-group-greekextended": "à¤à¥à¤°à¥à¤ विसà¥à¤¤à¥à¤¤",
"special-characters-group-cyrillic": "सिरिलिà¤",
"special-characters-group-arabic": "à¤
रबà¥",
"special-characters-group-arabicextended": "à¤
रबॠविसà¥à¤¤à¤¾à¤°à¤¿à¤¤",
@@ -3684,5 +3682,25 @@
"sessionprovider-generic": "$1 सतà¥à¤°",
"sessionprovider-mediawiki-session-cookiesessionprovider": "à¤à¥à¤à¥-à¤à¤§à¤¾à¤°à¤¿à¤¤ सतà¥à¤°",
"sessionprovider-nocookies": "हॠसà¤à¤¤à¤¾ हॠà¤à¤¿ à¤à¥à¤à¥ निषà¥à¤à¥à¤°à¤¿à¤¯ हà¥à¥¤ à¤à¥à¤ªà¤¯à¤¾ दà¥à¤à¥à¤ à¤à¤¿ à¤à¤° सà¤à¥à¤°à¤¿à¤¯ à¤à¤°à¥à¤à¥¤",
- "randomrootpage": "à¤
विशिषà¥à¤ मà¥à¤² पà¥à¤·à¥à¤ "
+ "randomrootpage": "à¤
विशिषà¥à¤ मà¥à¤² पà¥à¤·à¥à¤ ",
+ "log-action-filter-block": "पà¥à¤°à¤¤à¤¿à¤¬à¤à¤§ à¤à¥ पà¥à¤°à¤à¤¾à¤°:",
+ "log-action-filter-delete": "हà¤à¤¾à¤¨à¥ à¤à¥ पà¥à¤°à¤à¤¾à¤°:",
+ "log-action-filter-patrol": "परà¥à¤à¥à¤·à¤£ à¤à¥ पà¥à¤°à¤à¤¾à¤°:",
+ "log-action-filter-protect": "सà¥à¤°à¤à¥à¤·à¤¾ à¤à¥ पà¥à¤°à¤à¤¾à¤°:",
+ "log-action-filter-upload": "à¤
पलà¥à¤¡ à¤à¥ पà¥à¤°à¤à¤¾à¤°:",
+ "log-action-filter-all": "सà¤à¥",
+ "log-action-filter-block-block": "à¤
वरà¥à¤§",
+ "log-action-filter-block-reblock": "à¤
वरà¥à¤§ परिवरà¥à¤¤à¤¨",
+ "log-action-filter-block-unblock": "à¤
वरà¥à¤§à¤°à¤¹à¤¿à¤¤",
+ "log-action-filter-delete-delete": "पà¥à¤·à¥à¤ हà¤à¤¾à¤¨à¤¾",
+ "log-action-filter-delete-restore": "पà¥à¤·à¥à¤ न हà¤à¤¾à¤¨à¤¾",
+ "log-action-filter-delete-event": "पà¥à¤·à¥à¤ हà¤à¤¾à¤¨à¥ à¤à¤¾ लà¥à¤",
+ "log-action-filter-delete-revision": "à¤
वतरण हà¤à¤¾à¤¨à¤¾",
+ "log-action-filter-patrol-patrol": "à¤
पनॠसॠपरà¥à¤à¥à¤·à¤£",
+ "log-action-filter-patrol-autopatrol": "सà¥à¤µà¤¤à¤ पà¥à¤¨à¤°à¥à¤à¥à¤·à¤£",
+ "log-action-filter-protect-protect": "सà¥à¤°à¤à¥à¤·à¤¾",
+ "log-action-filter-protect-modify": "सà¥à¤°à¤à¥à¤·à¤¾ परिवरà¥à¤¤à¤¨",
+ "log-action-filter-protect-unprotect": "à¤
सà¥à¤°à¤à¥à¤·à¤¾",
+ "log-action-filter-upload-upload": "नया à¤
पलà¥à¤¡",
+ "log-action-filter-upload-overwrite": "फिर सॠà¤
पलà¥à¤¡"
}
diff --git a/languages/i18n/hif-latn.json b/languages/i18n/hif-latn.json
index e18aa14f46..6586e89434 100644
--- a/languages/i18n/hif-latn.json
+++ b/languages/i18n/hif-latn.json
@@ -1636,8 +1636,6 @@
"categories": "Vibhag",
"categoriespagetext": "Niche ke {{PLURAL:$1|vibhag me|vibhag me}} panna aur media hae.\n[[Special:UnusedCategories|Unused categories]] hian nai dekhawa jaawe hae.\n[[Special:WantedCategories|wanted categories]] ke bhi dekho.",
"categoriesfrom": "Vibhag jon ki hian pe suruu hoe hai, ke dekhao:",
- "special-categories-sort-count": "ginti se sort karo",
- "special-categories-sort-abc": "alphabetically sort karo",
"deletedcontributions": "Sadasya ke yogdaan ke mitae dia hai",
"deletedcontributions-title": "Sadasya ke yogdaan ke mitae dia hai",
"sp-deletedcontributions-contribs": "yogdaan",
@@ -2216,11 +2214,7 @@
"import-logentry-upload-detail": "$1 {{PLURAL:$1|badlao|badlao}} import karaa gais hae",
"import-logentry-interwiki-detail": "$1 {{PLURAL:$1|badlao|badlao}} $2 se import karaa gais hae",
"javascripttest": "JavaScript ke testing",
- "javascripttest-pagetext-noframework": "Ii panna ke JavaScript test ke kare ke khatir reserve karaa gais hae.",
- "javascripttest-pagetext-unknownframework": "Anjaan testing framework \"$1\".",
"javascripttest-pagetext-unknownaction": "Unknown action \"$1\".",
- "javascripttest-pagetext-frameworks": "Meharbaani kar ke ek testing framework ke chuno: $1",
- "javascripttest-pagetext-skins": "Test kare ke khatir ek chamrraa ke chuno:",
"javascripttest-qunit-intro": "mediawiki.org me [$1 testing documentation] ke dekho.",
"tooltip-pt-userpage": "Aap ke sadasya panna",
"tooltip-pt-anonuserpage": "IP jisme se aap edit karta hai ke sadasya panna",
@@ -2466,8 +2460,8 @@
"exif-colorspace": "Rang ke jagha",
"exif-componentsconfiguration": "Har ek component ke matlab",
"exif-compressedbitsperpixel": "Chapa ke compression mode",
- "exif-pixelydimension": "Chaapa ke thiik chaurrai",
- "exif-pixelxdimension": "Chaapa ke thiik uunchai",
+ "exif-pixelxdimension": "Chaapa ke thiik chaurrai",
+ "exif-pixelydimension": "Chaapa ke thiik uunchai",
"exif-usercomment": "Sadasysa ke bichar",
"exif-relatedsoundfile": "Saathe waala awaaj waala file",
"exif-datetimeoriginal": "Data generation ke tarik aur time",
@@ -2902,7 +2896,6 @@
"version-libraries-library": "Library",
"version-libraries-version": "Version",
"redirect": "File, sadasya, panna, nai to, revision ID se redirect",
- "redirect-legend": "File nai to panna pe redirect karo",
"redirect-summary": "Ii khaas panna ek file (given the filename), panna (given a revision ID or page ID), nai to, sadasya ke panna (given a numeric user ID) pe redirect hoe hae. Usage: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], or [[{{#Special:Redirect}}/user/101]].",
"redirect-submit": "Jaao",
"redirect-lookup": "Lookup:",
@@ -2914,7 +2907,6 @@
"redirect-not-exists": "Value ke nai paawa gais hae",
"fileduplicatesearch": "Duplicate files ke khojo",
"fileduplicatesearch-summary": "Duplicate files based on hash values ke khojo.",
- "fileduplicatesearch-legend": "Ek duplicate ke khojo",
"fileduplicatesearch-filename": "File ke naam:",
"fileduplicatesearch-submit": "Khojo",
"fileduplicatesearch-info": "$1 Ã $2 pixel File size: $3 MIME type: $4",
diff --git a/languages/i18n/hr.json b/languages/i18n/hr.json
index dbe4fcb6ff..0c33094733 100644
--- a/languages/i18n/hr.json
+++ b/languages/i18n/hr.json
@@ -609,7 +609,7 @@
"newarticle": "(Novo)",
"newarticletext": "DoÅ¡li ste na stranicu koja joÅ¡ ne postoji.\nAko želite stvoriti tu stranicu, poÄnite tipkati u prozor ispod ovog teksta (pogledajte [$1 stranicu za pomoÄ]).\nAko ste ovamo dospjeli sluÄajno, kliknite gumb '''natrag''' (back) u svom pregledniku.",
"anontalkpagetext": "----''Ovo je stranica za razgovor s neprijavljenim suradnikom koji joÅ¡ nije otvorio suradniÄki raÄun ili se njime ne koristi. Zbog toga se moramo služiti brojÄanom IP adresom kako bismo ga identificirali. Takvu adresu Äesto može dijeliti viÅ¡e ljudi. Ako ste neprijavljeni suradnik i smatrate da su Vam upuÄeni irelevantni komentari, molimo Vas da [[Special:UserLogin/signup|otvorite suradniÄki raÄun]] ili [[Special:UserLogin|se prijavite]] te tako u buduÄnosti izbjegnete zamjenu s drugim neprijavljenim suradnicima.''",
- "noarticletext": "Na ovoj stranici trenutaÄno nema sadržaja.\nMožete [[Special:Search/{{PAGENAME}}|potražiti ovaj naslov]] na drugim stranicama,\n[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} pretražiti povezane evidencije]\nili [{{fullurl:{{FULLPAGENAME}}|action=edit}} urediti ovu stranicu] .",
+ "noarticletext": "Na ovoj stranici trenutaÄno nema sadržaja.\nMožete [[Special:Search/{{PAGENAME}}|potražiti ovaj naslov]] na drugim stranicama,\n[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} pretražiti povezane evidencije]\nili [{{fullurl:{{FULLPAGENAME}}|action=edit}} stvoriti ovu stranicu] .",
"noarticletext-nopermission": "Ova stranica nema sadržaja.\nMožete [[Special:Search/{{PAGENAME}}|tražiti naslov ove stranice]] na drugim stranicama ili [{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} pretražiti povezane evidencije] , ali ne možete stvoriti ovu stranicu.",
"missing-revision": "UreÄivanje broj $1 na stranici \"{{FULLPAGENAME}}\" ne postoji.\n\nOvo je obiÄno uzrokovano kada kliknete na zastarjelu poveznicu na stranice koja je obrisana.\nViÅ¡e informacija možete pronaÄi u [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} evidenciji brisanja].",
"userpage-userdoesnotexist": "SuradniÄko ime \"$1 \" nije prijavljeno. Jeste li sigurni da želite stvoriti/ureÄivati ovu stranicu?",
@@ -1644,8 +1644,6 @@
"categories-submit": "Prikaži",
"categoriespagetext": "SljedeÄe {{PLURAL:$1|kategorija sadrži|kategorije sadrže}} stranice ili datoteke.\n[[Special:UnusedCategories|NekoriÅ¡tene kategorije]] ovdje nisu prikazane.\nTakoÄer pogledajte [[Special:WantedCategories|tražene kategorije]].",
"categoriesfrom": "Prikaži kategorije poÄevÅ¡i od:",
- "special-categories-sort-count": "razvrstavanje po broju",
- "special-categories-sort-abc": "abecedno razvrstavanje",
"deletedcontributions": "Obrisani suradniÄki doprinosi",
"deletedcontributions-title": "Obrisani suradniÄki doprinosi",
"sp-deletedcontributions-contribs": "doprinosi",
@@ -2213,18 +2211,14 @@
"import-logentry-upload-detail": "$1 {{PLURAL:$1|izmjena|izmjene|izmjena}}",
"import-logentry-interwiki-detail": "$1 {{PLURAL:$1|promjena|promjene|promjena}} od $2",
"javascripttest": "Testiranje JavaScripta",
- "javascripttest-pagetext-noframework": "Ova je stranica rezervirana za izvršavanje JavaScript testova.",
- "javascripttest-pagetext-unknownframework": "Nepoznata testna okolina \"$1\".",
- "javascripttest-pagetext-frameworks": "Molimo izaberite jednu od sljedeÄih testnih okolina: $1",
- "javascripttest-pagetext-skins": "Izaberite temu (''skin'') za testiranje:",
"javascripttest-qunit-intro": "Pogledajte [$1 testnu dokumentaciju] na mediawiki.org.",
"tooltip-pt-userpage": "Stranica suradnika {{GENDER:|Your user}}",
"tooltip-pt-anonuserpage": "SuradniÄka stranica za IP adresu pod kojom ureÄujete",
- "tooltip-pt-mytalk": "Moja stranica za razgovor",
+ "tooltip-pt-mytalk": "Vaša stranica za razgovor",
"tooltip-pt-anontalk": "Razgovor o suradnicima s ove IP adrese",
"tooltip-pt-preferences": "Vaše postavke",
"tooltip-pt-watchlist": "Popis stranica koje pratite.",
- "tooltip-pt-mycontris": "Popis mojih doprinosa",
+ "tooltip-pt-mycontris": "Popis Vaših doprinosa",
"tooltip-pt-login": "Predlažemo Vam da se prijavite, ali nije obvezno.",
"tooltip-pt-logout": "Odjavi se",
"tooltip-pt-createaccount": "Nudimo vam moguÄnost da napravite raÄun i prijavite se, iako to nije nužno.",
@@ -2467,8 +2461,8 @@
"exif-colorspace": "Kolor prostor",
"exif-componentsconfiguration": "ZnaÄenje pojedinih komponenti",
"exif-compressedbitsperpixel": "Dubina boje poslije sažimanja",
- "exif-pixelydimension": "VažeÄa Å¡irina slike",
- "exif-pixelxdimension": "VažeÄa visina slike",
+ "exif-pixelxdimension": "VažeÄa Å¡irina slike",
+ "exif-pixelydimension": "VažeÄa visina slike",
"exif-usercomment": "SuradniÄki komentar",
"exif-relatedsoundfile": "Povezani zvuÄni zapis",
"exif-datetimeoriginal": "Datum i vrijeme slikanja",
@@ -2954,7 +2948,6 @@
"redirect-file": "DatoteÄno ime",
"fileduplicatesearch": "Traži kopije datoteka",
"fileduplicatesearch-summary": "Traži kopije datoteka na temelju njihove hash vrijednosti.",
- "fileduplicatesearch-legend": "Traži kopije datoteka",
"fileduplicatesearch-filename": "Ime datoteke:",
"fileduplicatesearch-submit": "Traži",
"fileduplicatesearch-info": "$1 Ã $2 piksela VeliÄina datoteke: $3 MIME tip: $4",
diff --git a/languages/i18n/hrx.json b/languages/i18n/hrx.json
index 160e2b6d02..af3840ce1f 100644
--- a/languages/i18n/hrx.json
+++ b/languages/i18n/hrx.json
@@ -1558,8 +1558,6 @@
"categories": "Kategoriee",
"categoriespagetext": "Follichende {{PLURAL:$1|Kategorie enthält|Kategorie enthalle}} Seite orrer Dateie.\n[[Special:UnusedCategories|Verwaiste Kategorie]] werre hie net uffgeführt.\nSieh ooch die List von der [[Special:WantedCategories|gewünschte Kategorie]].",
"categoriesfrom": "Zeich Kategorie ab:",
- "special-categories-sort-count": "Sortierung noh Oonzoohl",
- "special-categories-sort-abc": "Sortierung noh Alphabet",
"deletedcontributions": "Abgewischte Beiträch",
"deletedcontributions-title": "Abgewischte Beiträch",
"sp-deletedcontributions-contribs": "Benutzerbeiträche",
@@ -2124,10 +2122,6 @@
"import-logentry-upload-detail": "$1 {{PLURAL:$1|Version|Versione}}",
"import-logentry-interwiki-detail": "$1 {{PLURAL:$1|Version|Versione}} von $2",
"javascripttest": "JavaScript-Test",
- "javascripttest-pagetext-noframework": "Die Seit ist JavaSkript-Tests voarbehalt.",
- "javascripttest-pagetext-unknownframework": "Unbekanntes Framework \"$1\".",
- "javascripttest-pagetext-frameworks": "Bittschön wähl en von der follichende Prüfumgebunge aus: $1",
- "javascripttest-pagetext-skins": "Wähl en Benutzeroberfläch zur Doorrichführung von der Test aus:",
"javascripttest-qunit-intro": "Sieh die [$1 Dokumentation zu Tests] uff mediawiki.org",
"tooltip-pt-userpage": "Dein Benutzerseit",
"tooltip-pt-anonuserpage": "Benutzerseit von der IP-Adress von der aus du Ãnnrunge doorrichführst",
@@ -2370,8 +2364,8 @@
"exif-colorspace": "Farrebraum",
"exif-componentsconfiguration": "Bedeitung einzelner Komponente",
"exif-compressedbitsperpixel": "Komprimierte Bits por Pixel",
- "exif-pixelydimension": "Bildbreit",
- "exif-pixelxdimension": "Bildhöch",
+ "exif-pixelxdimension": "Bildbreit",
+ "exif-pixelydimension": "Bildhöch",
"exif-usercomment": "Benutzerkommentare",
"exif-relatedsoundfile": "Zugehöriche Tondatei",
"exif-datetimeoriginal": "Erfassungszeitpunkt",
@@ -2794,7 +2788,6 @@
"version-libraries-description": "Beschreibung",
"version-libraries-authors": "Autore",
"redirect": "Weiterleitung uff Benutzerseit, Seit, Seiteversion orrer Datei",
- "redirect-legend": "Weiterleitung uff en Benutzerseit, Seit, Seiteversion orrer Datei",
"redirect-summary": "Die Spezialseit leitet uff en Benutzerseit (numerische Benutzerkennung oongeb), Seit (Seitekennung oongeb), Seiteversion (Versionskennung oongeb) orrer Datei (Dateinoome oongeb) weiter. Benutzung: [[{{#Special:Redirect}}/user/101]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]] orrer [[{{#Special:Redirect}}/file/Example.jpg]].",
"redirect-submit": "Los, geh",
"redirect-lookup": "Suche:",
@@ -2806,7 +2799,6 @@
"redirect-not-exists": "Der Weart woard net gefund",
"fileduplicatesearch": "Dateiduplikatsuch",
"fileduplicatesearch-summary": "Such noh Dateiduplikate uff Basis von ihres Hashwearte.",
- "fileduplicatesearch-legend": "Such noh Duplikate",
"fileduplicatesearch-filename": "Dateinoome:",
"fileduplicatesearch-submit": "Such",
"fileduplicatesearch-info": "$1 à $2 Pixel Dateigröss: $3 MIME-Typ: $4",
diff --git a/languages/i18n/hsb.json b/languages/i18n/hsb.json
index 6e8b482cab..f8069bfc74 100644
--- a/languages/i18n/hsb.json
+++ b/languages/i18n/hsb.json
@@ -1619,8 +1619,6 @@
"categories": "Kategorije",
"categoriespagetext": "{{PLURAL:$1|SlÄdowaca kategorija wobsahuje|SlÄdowacej kategoriji wobsahujetej|SlÄdowace kategorije wobsahuja|SlÄdowace kategorije wobsahuja}} strony abo medije.\n[[Special:UnusedCategories|Njewužiwane kategorije]] so tu njepokazuja.\nHlej tež [[Special:WantedCategories|požadane kategorije]].",
"categoriesfrom": "Kategorije pokazaÄ, zapoÄinajo z:",
- "special-categories-sort-count": "Po liÄbje sortÄrowaÄ",
- "special-categories-sort-abc": "Alfabetisce sortÄrowaÄ",
"deletedcontributions": "wuÅ¡mórnjene pÅinoÅ¡ki",
"deletedcontributions-title": "wuÅ¡mórnjene pÅinoÅ¡ki",
"sp-deletedcontributions-contribs": "pÅinoÅ¡ki",
@@ -2198,11 +2196,7 @@
"import-logentry-upload-detail": "$1 {{PLURAL:$1|wersija importowana|wersiji importowanej|wersije importowane|wersijow importowane}}",
"import-logentry-interwiki-detail": "$1 {{PLURAL:$1|wersija|wersiji|wersije|wersijow}} z $2 {{PLURAL:$1|importowana|importowanej|importowane|importowanych}}",
"javascripttest": "JavaScriptowy test",
- "javascripttest-pagetext-noframework": "Tuta strona je za pÅewjedźenje javascriptowych testow pÅewostajena.",
- "javascripttest-pagetext-unknownframework": "Njeznaty wobÅuk \"$1\".",
"javascripttest-pagetext-unknownaction": "Njeznata akcija \"$1\"",
- "javascripttest-pagetext-frameworks": "ProÅ¡u wubjer jedyn ze slÄdowacych testowanskich wobÅukow: $1",
- "javascripttest-pagetext-skins": "Wubjer drastu za pÅewjedźenje testow:",
"javascripttest-qunit-intro": "Hlej [$1 testowansku dokumentaciju] na mediawiki.org.",
"tooltip-pt-userpage": "Twoja wužiwarska strona",
"tooltip-pt-anonuserpage": "Wužiwarska strona IP-adresy, z kotrejž tuchwilu dźÄÅaÅ¡",
@@ -2455,8 +2449,8 @@
"exif-colorspace": "Barbny rum",
"exif-componentsconfiguration": "Woznam kóždeje komponenty",
"exif-compressedbitsperpixel": "Modus wobrazoweje kompresije",
- "exif-pixelydimension": "Å ÄrokosÄ wobraza",
- "exif-pixelxdimension": "WysokosÄ wobraza",
+ "exif-pixelxdimension": "Å ÄrokosÄ wobraza",
+ "exif-pixelydimension": "WysokosÄ wobraza",
"exif-usercomment": "PÅispomjenja wužiwarja",
"exif-relatedsoundfile": "Zwjazana zynkowa dataja",
"exif-datetimeoriginal": "Datum a Äas wutworjenja datow",
@@ -2892,7 +2886,6 @@
"version-libraries-library": "Biblioteka",
"version-libraries-version": "Wersija",
"redirect": "Po datajowym mjenje, wužiwarju, stronje abo wersijowym ID dale sposrÄdkowaÄ",
- "redirect-legend": "Do dataje abo strony dale sposrÄdkowaÄ",
"redirect-summary": "Tuta specialna strona so do dataje (datajowe mjeno je podate), strony (wersijowy ID abo ID strony je podaty) abo wužiwarskeje strony (numeriski wužiwarski ID je podaty) dale sposrÄdkuje. WužiÄe:\n[[{{#Special:Redirect}}/file/PÅikÅad.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]] abo [[{{#Special:Redirect}}/user/101]].",
"redirect-submit": "Los",
"redirect-lookup": "PytaÄ:",
@@ -2904,7 +2897,6 @@
"redirect-not-exists": "Hódnota njeje so namakaÅa",
"fileduplicatesearch": "Dwójne dataje pytaÄ",
"fileduplicatesearch-summary": "Pytanje za duplikatnymi datajemi na zakÅadźe jich haÅ¡oweje hódnoty.",
- "fileduplicatesearch-legend": "Duplikaty pytaÄ",
"fileduplicatesearch-filename": "Datajowe mjeno:",
"fileduplicatesearch-submit": "PytaÄ",
"fileduplicatesearch-info": "$1 Ã $2 pikselow Datajowa wulkosÄ: $3 Typ MIME: $4",
diff --git a/languages/i18n/hu.json b/languages/i18n/hu.json
index e6565237ee..621b567de0 100644
--- a/languages/i18n/hu.json
+++ b/languages/i18n/hu.json
@@ -43,7 +43,8 @@
"Matma Rex",
"JulesWinnfield-hu",
"Bencoke",
- "Máté"
+ "Máté",
+ "Wolf Rex"
]
},
"tog-underline": "Hivatkozások aláhúzása:",
@@ -501,7 +502,7 @@
"noemail": "â$1â e-mail cÃme nincs megadva.",
"noemailcreate": "Meg kell adnod egy valós e-mail cÃmet",
"passwordsent": "Az új jelszót elküldtük â$1â e-mail cÃmére.\nLépj be a levélben található adatokkal.",
- "blocked-mailpassword": "Az IP-cÃmedet blokkoltuk, azaz eltiltottunk a szerkesztéstÅl, ezért a visszaélések elkerülése érdekében a jelszó-visszaállÃtás funkciót nem használhatod.",
+ "blocked-mailpassword": "Az IP-cÃmed blokkoltuk. A visszaélések megelÅzése érdekében a jelszó-visszaállÃtás funkció nem használható errÅl az IP-cÃmrÅl.",
"eauthentsent": "Egy ellenÅrzÅ e-mailt küldtünk a megadott cÃmre. MielÅtt más leveleket kaphatnál, igazolnod kell az e-mailben Ãrt utasÃtásoknak megfelelÅen, hogy valóban a tiéd a megadott cÃm.",
"throttled-mailpassword": "Már elküldtünk egy jelszóemlékeztetÅt az utóbbi {{PLURAL:$1|egy|$1}} órában.\nA visszaélések elkerülése végett {{PLURAL:$1|egy|$1}} óránként csak egy jelszó-emlékeztetÅt küldünk.",
"mailerror": "Hiba történt az e-mail küldése közben: $1",
@@ -538,7 +539,7 @@
"newpassword": "Ãj jelszó:",
"retypenew": "Ãj jelszó ismét:",
"resetpass_submit": "Add meg a jelszót és jelentkezz be",
- "changepassword-success": "A jelszavad megváltoztatása sikeresen befejezÅdött!",
+ "changepassword-success": "A jelszavad megváltozott!",
"changepassword-throttled": "Túl sok hibás bejelentkezés.\nVárj $1, mielÅtt újra próbálkozol.",
"botpasswords": "Botjelszavak",
"botpasswords-summary": "A botjelszavak lehetÅvé teszik egy felhasználói fiókhoz való hozzáférést az API-n keresztül a fiók fÅ bejelentkezési adatainak megadása nélkül. A botjelszóval történÅ bejelentkezéskor a felhasználói jogok korlátozottak lehetnek.\n\nHa nem tudod, hogy miért szeretnél ilyet, valószÃnűleg nem kell csinálnod. Soha senkinek nem szabadna megkérnie téged, hogy generálj neki egyet, hogy odaadhasd neki.",
@@ -853,7 +854,7 @@
"revdelete-unsuppress": "Korlátozások eltávolÃtása a visszaállÃtott változatokról",
"revdelete-log": "Ok:",
"revdelete-submit": "Alkalmazás a kiválasztott {{PLURAL:$1|változatra|változatokra}}",
- "revdelete-success": "'''A változat láthatósága sikeresen frissÃtve.'''",
+ "revdelete-success": "A változat láthatósága sikeresen frissÃtve.",
"revdelete-failure": "'''Nem sikerült frissÃteni a változat láthatóságát:'''\n$1",
"logdelete-success": "'''Az esemény láthatóságának beállÃtása sikeresen elvégezve.'''",
"logdelete-failure": "'''Nem sikerült módosÃtani a naplóbejegyzés láthatóságát:'''\n$1",
@@ -889,6 +890,7 @@
"mergehistory-fail-bad-timestamp": "Ãrvénytelen idÅbélyeg.",
"mergehistory-fail-invalid-source": "Ãrvénytelen forráslap.",
"mergehistory-fail-invalid-dest": "Ãrvénytelen céllap.",
+ "mergehistory-fail-permission": "Nincsen jogod a laptörténetek egyesÃtéséhez.",
"mergehistory-fail-self-merge": "A forrás- és céllap megegyezik.",
"mergehistory-fail-toobig": "Nem lehetséges a laptörténetek egyesÃtése, mivel több mint $1 {{PLURAL:$1|változást}} kellene áthelyezni.",
"mergehistory-no-source": "Nem létezik forráslap $1 néven.",
@@ -1332,7 +1334,7 @@
"recentchangeslinked-page": "Lap neve:",
"recentchangeslinked-to": "Inkább az erre linkelŠlapok változtatásait mutasd",
"recentchanges-page-added-to-category": "[[:$1]] hozzáadva a kategóriához",
- "recentchanges-page-added-to-category-bundled": "[[:$1]] és {{PLURAL:$2|egy oldal|$2 oldal}} hozzáadva a kategóriához",
+ "recentchanges-page-added-to-category-bundled": "[[:$1]] és [[Special:WhatLinksHere/$1|{{PLURAL:$2|egy oldal|$2 oldal}}]] hozzáadva a kategóriához",
"recentchanges-page-removed-from-category": "[[:$1]] eltávolÃtva a kategóriából",
"recentchanges-page-removed-from-category-bundled": "[[:$1]] és {{PLURAL:$2|egy oldal|$2 oldal}} eltávolÃtva a kategóriából",
"upload": "Fájl feltöltése",
@@ -1508,6 +1510,7 @@
"uploadstash-badtoken": "A művelet végrehajtása sikertelen volt. Lehetséges, hogy lejártak a szerkesztést hitelesÃtÅ adataid. Próbáld újra!",
"uploadstash-errclear": "A fájlok törlése nem sikerült.",
"uploadstash-refresh": "Fájlok listájának frissÃtése",
+ "uploadstash-thumbnail": "bélyegkép megjelenÃtése",
"invalid-chunk-offset": "Ãrvénytelen darab eltolás",
"img-auth-accessdenied": "Hozzáférés megtagadva",
"img-auth-nopathinfo": "Hiányzó PATH_INFO.\nA szerver nincs beállÃtva, hogy továbbÃtsa ezt az információt.\nLehet, hogy CGI-alapú, és nem támogatja az img_auth-ot.\nLásd https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Image_Authorization!",
@@ -1571,7 +1574,7 @@
"filehist-comment": "Megjegyzés",
"imagelinks": "Fájlhasználat",
"linkstoimage": "Az alábbi {{PLURAL:$1|lap hivatkozik|lapok hivatkoznak}} erre a fájlra:",
- "linkstoimage-more": "Több, mint {{PLURAL:$1|egy|$1}} oldal hivatkozik erre a fájlra.\nA következŠlista csak az {{PLURAL:$1|elsŠlinket|elsŠ$1 linket}} tartalmazza.\nA teljes lista [[Special:WhatLinksHere/$2|ezen a lapon]] található meg.",
+ "linkstoimage-more": "Több mint $1 oldal hivatkozik erre a fájlra.\nA következŠlista csak az {{PLURAL:$1|elsŠlinket|elsŠ$1 linket}} tartalmazza.\nA teljes lista [[Special:WhatLinksHere/$2|ezen a lapon]] található meg.",
"nolinkstoimage": "Erre a fájlra nem hivatkozik lap.",
"morelinkstoimage": "[[Special:WhatLinksHere/$1|További hivatkozások]] megtekintése",
"linkstoimage-redirect": "$1 (fájlátirányÃtás) $2",
@@ -1759,6 +1762,8 @@
"apisandbox-jsonly": "Az API-homokozó használatához JavaScriptre van szükség.",
"apisandbox-api-disabled": "API le van tiltva ezen az oldalon.",
"apisandbox-intro": "Ezen az oldalon kÃsérletezhetsz a MediaWiki web service API -val.\nA használattal kapcsolatos további részletek az [[mw:API:Main page|API-dokumentációnál]] találhatók. Példa: [//www.mediawiki.org/wiki/API#A_simple_example olvasd el a fÅoldal tartalomjegyzékét]. További példákért válassz egy tevékenységet!\n\nFigyelj rá, hogy bár ez csak egy âhomokozóâ, ettÅl még az általad végzett műveletek módosÃthatják a wikit!",
+ "apisandbox-fullscreen": "Panel kinyitása",
+ "apisandbox-unfullscreen": "Lap mutatása",
"apisandbox-submit": "Kérés végrehajtása",
"apisandbox-reset": "Törlés",
"apisandbox-retry": "Ãjra",
@@ -1818,8 +1823,6 @@
"categories-submit": "Mutat",
"categoriespagetext": "A következŠ{{PLURAL:$1|kategória tartalmaz|kategóriák tartalmaznak}} lapokat vagy fájlokat.\nA [[Special:UnusedCategories|nem használt kategóriák]] nem jelennek meg.\nLásd még a [[Special:WantedCategories|keresett kategóriák]] listáját.",
"categoriesfrom": "Kategóriák listázása a következÅ névtÅl kezdve:",
- "special-categories-sort-count": "rendezés elemszám szerint",
- "special-categories-sort-abc": "rendezés ABC szerint",
"deletedcontributions": "Törölt szerkesztések",
"deletedcontributions-title": "Törölt szerkesztések",
"sp-deletedcontributions-contribs": "közreműködései",
@@ -2006,6 +2009,7 @@
"changecontentmodel-title-label": "LapcÃm",
"changecontentmodel-model-label": "Ãj tartalommodell",
"changecontentmodel-reason-label": "Indoklás:",
+ "changecontentmodel-submit": "Változtatás",
"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á.",
@@ -2194,6 +2198,7 @@
"ipb-unblock": "Felhasználónév vagy IP-cÃm blokkolásának feloldása",
"ipb-blocklist": "LétezŠblokkok megtekintése",
"ipb-blocklist-contribs": "$1 közreműködései",
+ "ipb-blocklist-duration-left": "$1 van hátra",
"unblockip": "Blokk feloldása",
"unblockiptext": "Itt tudod visszaadni egy blokkolt felhasználónévnek vagy IP-nek a szerkesztési jogosultságot.",
"ipusubmit": "Blokk eltávolÃtása",
@@ -2435,11 +2440,7 @@
"import-logentry-upload-detail": "$1 változat importálva",
"import-logentry-interwiki-detail": "$1 változat innen: $2",
"javascripttest": "JavaScript tesztelés",
- "javascripttest-pagetext-noframework": "Ez az oldal JavaStript tesztek futtatására van fenntartva.",
- "javascripttest-pagetext-unknownframework": "Ismeretlen teszt keretrendszer: $1.",
"javascripttest-pagetext-unknownaction": "Ismeretlen akció: $1",
- "javascripttest-pagetext-frameworks": "Kérlek válaszd valamelyik teszt keretrendszert az alábbiak közül: $1",
- "javascripttest-pagetext-skins": "Válassz egy megjelenÃtÅ felületet, amin a tesztet futtatod:",
"javascripttest-qunit-intro": "Lásd a [$1 tesztelési dokumentációt] a mediawiki.org helyen.",
"tooltip-pt-userpage": "A szerkesztÅlapod",
"tooltip-pt-anonuserpage": "Az általad használt IP-cÃmhez tartozó felhasználói lap",
@@ -2705,8 +2706,8 @@
"exif-colorspace": "SzÃntér",
"exif-componentsconfiguration": "Az egyes összetevÅk jelentése",
"exif-compressedbitsperpixel": "KéptömörÃtési mód",
- "exif-pixelydimension": "Képszélesség",
- "exif-pixelxdimension": "Képmagasság",
+ "exif-pixelxdimension": "Képszélesség",
+ "exif-pixelydimension": "Képmagasság",
"exif-usercomment": "Felhasználók megjegyzései",
"exif-relatedsoundfile": "Kapcsolódó hangfájl",
"exif-datetimeoriginal": "EXIF információ létrehozásának dátuma",
@@ -3148,7 +3149,6 @@
"version-libraries-description": "LeÃrás",
"version-libraries-authors": "SzerzÅk",
"redirect": "ÃtirányÃtás fájl, szerkesztÅ, oldal vagy oldalváltozat alapján",
- "redirect-legend": "ÃtirányÃtás egy fájlra vagy lapra",
"redirect-summary": "Ez a speciális lap átirányÃt egy fájlra (megadott fájlnévvel), lapra (megadott lapváltozat- vagy lapazonosÃtó számmal) vagy felhasználóra (felhasználó azonosÃtószáma alapján). Használat: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]] vagy [[{{#Special:Redirect}}/user/101]].",
"redirect-submit": "Mehet",
"redirect-lookup": "Keresés:",
@@ -3160,7 +3160,6 @@
"redirect-not-exists": "Ãrték nem található",
"fileduplicatesearch": "Duplikátumok keresése",
"fileduplicatesearch-summary": "Fájlok duplikátumainak keresése hash értékük alapján.",
- "fileduplicatesearch-legend": "Duplikátum keresése",
"fileduplicatesearch-filename": "Fájlnév:",
"fileduplicatesearch-submit": "Keresés",
"fileduplicatesearch-info": "$1 à $2 pixel Fájlméret: $3 MIME-tÃpus: $4",
@@ -3562,5 +3561,15 @@
"sessionprovider-generic": "$1-munkamenetek",
"sessionprovider-mediawiki-session-cookiesessionprovider": "sütialapú munkamenetek",
"sessionprovider-nocookies": "A sütik le lehetnek tiltva. Engedélyezd a sütiket, és próbáld meg újra!",
- "randomrootpage": "Véletlen lap a gyökérbÅl"
+ "randomrootpage": "Véletlen lap a gyökérbÅl",
+ "log-action-filter-delete": "Törlés tÃpusa:",
+ "log-action-filter-import": "Importálás tÃpusa:",
+ "log-action-filter-all": "Mind",
+ "log-action-filter-block-block": "Blokk",
+ "log-action-filter-block-reblock": "Blokk módosÃtása",
+ "log-action-filter-block-unblock": "Blokk feloldása",
+ "log-action-filter-newusers-autocreate": "Automatikus létrehozás",
+ "log-action-filter-protect-protect": "Lapvédelem",
+ "log-action-filter-protect-unprotect": "Védelem feloldása",
+ "log-action-filter-upload-upload": "Ãj feltöltés"
}
diff --git a/languages/i18n/hy.json b/languages/i18n/hy.json
index 7b0dd885f5..ed8b068783 100644
--- a/languages/i18n/hy.json
+++ b/languages/i18n/hy.json
@@ -531,7 +531,7 @@
"preview": "ÕÕ¡ÕÕ¡Õ¤Õ«Õ¿Õ¸ÖÕ´",
"showpreview": "ÕÕ¡ÕÕ¡Õ¤Õ«Õ¿Õ¥Õ¬",
"showdiff": "Ô¿Õ¡Õ¿Õ¡ÖÕ¾Õ¡Õ® ÖÕ¸ÖÕ¸ÕÕ¸ÖÕ©ÕµÕ¸ÖÕ¶Õ¶Õ¥ÖÕ¨",
- "blankarticle": "Ô¶Õ£Õ¸ÖÕ·Õ¡ÖÕ¸ÖÕ´: Ô·Õ»Õ¨, Õ¸ÖÕ¨ Ô´Õ¸ÖÖ Õ½Õ¿Õ¥Õ²Õ®Õ¸ÖÕ´ Õ¥Ö, Õ¤Õ¡Õ¿Õ¡ÖÕ¯ Õ§:\nÔµÕ©Õ¥ Õ¶Õ¸ÖÕ«Ö Õ½Õ¥Õ²Õ´Õ¥Ö Â«\"{{int:savearticle}}\"» Õ¯Õ¸Õ³Õ¡Õ¯Õ¨, Õ§Õ»Õ¨ Õ¯Õ½Õ¿Õ¥Õ²Õ®Õ¾Õ« Õ¡Õ¼Õ¡Õ¶Ö Õ¸ÖÖÕ§ Õ¢Õ¸Õ¾Õ¡Õ¶Õ¤Õ¡Õ¯Õ¸ÖÕ©ÕµÕ¡Õ¶:",
+ "blankarticle": "Ô¶Õ£Õ¸ÖÕ·Õ¡ÖÕ¸ÖÕ´: Ô·Õ»Õ¨, Õ¸ÖÕ¨ Ô´Õ¸ÖÖ Õ½Õ¿Õ¥Õ²Õ®Õ¸ÖÕ´ Õ¥Ö, Õ¤Õ¡Õ¿Õ¡ÖÕ¯ Õ§:\nÔµÕ©Õ¥ Õ¶Õ¸ÖÕ«Ö Õ½Õ¥Õ²Õ´Õ¥Ö Â«{{int:savearticle}}» Õ¯Õ¸Õ³Õ¡Õ¯Õ¨, Õ§Õ»Õ¨ Õ¯Õ½Õ¿Õ¥Õ²Õ®Õ¾Õ« Õ¡Õ¼Õ¡Õ¶Ö Õ¸ÖÖÕ§ Õ¢Õ¸Õ¾Õ¡Õ¶Õ¤Õ¡Õ¯Õ¸ÖÕ©ÕµÕ¡Õ¶:",
"anoneditwarning": "ÕÖÕ·Õ¡Õ¤ÖÕ¸ÖÕ©ÕµÕ¸ÖÕ¶, Ô´Õ¸ÖÖ Õ¹Õ¥Ö Õ´Õ¿Õ¥Õ¬ Õ°Õ¡Õ´Õ¡Õ¯Õ¡ÖÕ£Ö ÕÕ¡Õ¶Õ¯Õ¡ÖÕ¡Õ® ÕÕ´Õ¢Õ¡Õ£ÖÕ´Õ¡Õ¶ Õ¤Õ¥ÕºÖÕ¸ÖÕ´ ÕÕ¥Ö IP Õ°Õ¡Õ½ÖÕ¥Õ¶ Õ¯Õ¤Õ¡Õ¼Õ¶Õ¡ Õ¢Õ¸Õ¬Õ¸ÖÕ«Õ¶ Õ¿Õ¥Õ½Õ¡Õ¶Õ¥Õ¬Õ«Ö ÔµÕ©Õ¥ Ô´Õ¸ÖÖ [$1 Õ´Õ¸ÖÕ¿Ö Õ£Õ¸ÖÕ®Õ¥Ö] Õ¯Õ¡Õ´ [$2 Õ½Õ¿Õ¥Õ²Õ®Õ¥Ö Õ´Õ¡Õ½Õ¶Õ¡Õ¯ÖÕ¡ÕµÕ«Õ¶ Õ°Õ¡Õ·Õ«Õ¾] , ÕÕ¥Ö Õ¯Õ¡Õ¿Õ¡ÖÕ¡Õ® ÕÕ´Õ¢Õ¡Õ£ÖÕ¸ÖÕ´Õ¶Õ¥ÖÕ¨ Õ¯Õ¯Õ¡ÕºÕ¾Õ¥Õ¶ ÕÕ¥Ö Õ´Õ¡Õ½Õ¶Õ¡Õ¯ÖÕ¡ÕµÕ«Õ¶ Õ¡Õ¶Õ¾Õ¡Õ¶ Õ°Õ¥Õ¿, Õ«Õ¶Õ¹ÕºÕ¥Õ½ Õ¶Õ¡Ö Õ¯Õ¸ÖÕ¶Õ¥Õ¶Õ¡Ö Õ¡ÕµÕ¬ Õ¡Õ¼Õ¡Õ¾Õ¥Õ¬Õ¸ÖÕ©ÕµÕ¸ÖÕ¶Õ¶Õ¥ÖÖ",
"anonpreviewwarning": "Ô´Õ¸ÖÖ Õ¹Õ¥Ö Õ´Õ¿Õ¥Õ¬ Õ°Õ¡Õ´Õ¡Õ¯Õ¡ÖÕ£Ö\nÕÕ«Õ·Õ¥Õ¬Õ¸Õ¾ ÕÕ¥Ö Õ¯Õ¡Õ¿Õ¡ÖÕ¡Õ® ÕÕ´Õ¢Õ¡Õ£ÖÕ¸ÖÕ´Õ¨, Õ¡ÕµÕ¶ Õ¯ÕºÕ¡Õ°Õ¡Õ¶Õ¾Õ« ÕÕ¥Ö IP Õ°Õ¡Õ½ÖÕ¥Õ« Õ°Õ¥Õ¿ Õ´Õ«Õ¡Õ½Õ«Õ¶ Õ¡ÕµÕ½ Õ§Õ»Õ« ÕÕ´Õ¢Õ¡Õ£ÖÕ¸ÖÕ´Õ¶Õ¥ÖÕ« ÕºÕ¡Õ¿Õ´Õ¸ÖÕ©ÕµÕ¡Õ¶ Õ´Õ¥Õ»Ö ",
"missingsummary": "'''ÕÕ«Õ·Õ¥ÖÕ¸ÖÕ´.''' Ô´Õ¸ÖÖ Õ¹Õ¥Ö Õ¿Õ¾Õ¥Õ¬ ÕÕ´Õ¢Õ¡Õ£ÖÕ´Õ¡Õ¶ Õ¡Õ´ÖÕ¸ÖÕ¸ÖÕ´Ö Â«Õիշել» Õ¯Õ¸Õ³Õ¡Õ¯Õ« Õ¯ÖÕ¯Õ¶Õ¡Õ¯Õ« Õ´Õ¡Õ¿Õ¶Õ¡Õ°Õ¡ÖÕ´Õ¡Õ¶ Õ¤Õ¥ÕºÖÕ¸ÖÕ´ ÖÕ¸ÖÕ¸ÕÕ¸ÖÕ©ÕµÕ¸ÖÕ¶Õ¶Õ¥ÖÕ¨ Õ¯Õ°Õ«Õ·Õ¾Õ¥Õ¶ Õ¡Õ¼Õ¡Õ¶Ö Õ¡Õ´ÖÕ¸ÖÕ´Õ¡Õ¶Ö",
@@ -915,6 +915,7 @@
"recentchanges": "ÕÕ¥ÖÕ»Õ«Õ¶ ÖÕ¸ÖÕ¸ÕÕ¸ÖÕ©ÕµÕ¸ÖÕ¶Õ¶Õ¥Ö",
"recentchanges-legend": "ÕÕ¥ÖÕ»Õ«Õ¶ ÖÕ¸ÖÕ¸ÕÕ¸ÖÕ©ÕµÕ¸ÖÕ¶Õ¶Õ¥ÖÕ« Õ¶Õ¡ÕÕ¨Õ¶Õ¿ÖÕ¸ÖÕ©ÕµÕ¸ÖÕ¶Õ¶Õ¥Ö",
"recentchanges-summary": "ÕÕ¥Õ¿ÖÕ¥Ö Õ¾Õ«ÖÕ«Õ¸ÖÕ´ Õ¯Õ¡Õ¿Õ¡ÖÕ¾Õ¡Õ® Õ¾Õ¥ÖÕ»Õ«Õ¶ ÖÕ¸ÖÕ¸ÕÕ¸ÖÕ©ÕµÕ¸ÖÕ¶Õ¶Õ¥ÖÕ«Õ¶ Õ¡ÕµÕ½ Õ§Õ»Õ¸ÖÕ´Ö",
+ "recentchanges-noresult": "ÕÖÕ¾Õ¡Õ® ÕªÕ¡Õ´Õ¡Õ¶Õ¡Õ¯Õ¡Õ°Õ¡Õ¿Õ¾Õ¡Õ®Õ¸ÖÕ´ Õ¡ÕµÕ½ Õ¯Õ¡ÖÕ£Õ¡Õ¾Õ¸ÖÕ¸ÖÕ´Õ¶Õ¥ÖÕ¸Õ¾ ÖÕ¸ÖÕ¸ÕÕ¸ÖÕ©ÕµÕ¸ÖÕ¶ Õ¹Õ« Õ¥Õ²Õ¥Õ¬Ö",
"recentchanges-feed-description": "ÕÕ¥Õ¿ÖÕ¥Ö Õ¾Õ«ÖÕ«Õ¸ÖÕ´ Õ¯Õ¡Õ¿Õ¡ÖÕ¾Õ¡Õ® Õ¾Õ¥ÖÕ»Õ«Õ¶ ÖÕ¸ÖÕ¸ÕÕ¸ÖÕ©ÕµÕ¸ÖÕ¶Õ¶Õ¥ÖÕ«Õ¶ Õ¡ÕµÕ½ Õ½Õ¶Õ¸ÖÖÕ´Õ¡Õ¶ Õ´Õ¥Õ»Ö",
"recentchanges-label-newpage": "Ô±ÕµÕ½ ÕÕ´Õ¢Õ¡Õ£ÖÕ´Õ¡Õ´Õ¢ Õ½Õ¿Õ¥Õ²Õ®Õ¾Õ¥Õ¬ Õ§ Õ¶Õ¸Ö Õ§Õ»",
"recentchanges-label-minor": "ÕÕ¡ Õ¹Õ¶Õ¹Õ«Õ¶ ÕÕ´Õ¢Õ¡Õ£ÖÕ¸ÖÕ´ Õ§",
@@ -1920,7 +1921,6 @@
"version-poweredby-credits": "Ô±ÕµÕ½ Õ¾Õ«ÖÕ«Õ¶ Õ¡Õ·ÕÕ¡Õ¿Õ¸ÖÕ´ Õ§ '''[https://www.mediawiki.org/ MediaWiki]'''ÖÕ¸Õ¾, copyright © 2001-$1 $2Ö",
"fileduplicatesearch": "ÕÕ¶Õ¿ÖÕ¥Õ¬ Õ¯ÖÕ¯Õ¶Ö
ÖÕ«Õ¶Õ¡Õ¯ ÕºÕ¡Õ¿Õ¯Õ¥ÖÕ¶Õ¥Ö",
"fileduplicatesearch-summary": "ÕÕ¶Õ¿ÖÕ¥Õ¬ Õ¯ÖÕ¯Õ¶Ö
ÖÕ«Õ¶Õ¡Õ¯ ÕºÕ¡Õ¿Õ¯Õ¥ÖÕ¶Õ¥ÖÕ Õ°Õ¥Õ· Õ¡ÖÕªÕ¥ÖÕ¶Õ¥ÖÕ« Õ°Õ«Õ´Õ¡Õ¶ Õ¾ÖÕ¡",
- "fileduplicatesearch-legend": "ÕÕ¶Õ¿ÖÕ¥Õ¬ Õ¯ÖÕ¯Õ¶Ö
ÖÕ«Õ¶Õ¡Õ¯Õ¶Õ¥Ö",
"fileduplicatesearch-filename": "ÕÕ«Õ·ÖÕ« Õ¡Õ¶Õ¸ÖÕ¶â¤",
"fileduplicatesearch-submit": "ÕÖÕ¸Õ¶Õ¥Õ¬",
"fileduplicatesearch-info": "$1 Ã $2 ÖÕ«ÖÕ½Õ¥Õ¬ ÕÕ«Õ·ÖÕ« Õ¹Õ¡ÖÕ¨Õ $3 MIME-Õ¿Õ«ÕºÕ¨Õ $4",
diff --git a/languages/i18n/ia.json b/languages/i18n/ia.json
index 34755d7d86..ebba6310e3 100644
--- a/languages/i18n/ia.json
+++ b/languages/i18n/ia.json
@@ -472,7 +472,7 @@
"noemail": "Il non ha un adresse de e-mail registrate pro le usator \"$1\".",
"noemailcreate": "Es necessari fornir un adresse de e-mail valide",
"passwordsent": "Un nove contrasigno ha essite inviate al adresse de e-mail registrate pro \"$1\".\nPer favor aperi session de novo post reciper lo.",
- "blocked-mailpassword": "Tu adresse IP es blocate de facer modificationes, e pro impedir le abuso, le uso del function pro recuperar contrasignos es equalmente blocate.",
+ "blocked-mailpassword": "Tu adresse IP es blocate pro modification. Pro evitar abusos, il non es permittite recuperar contrasignos ab iste adresse IP.",
"eauthentsent": "Un message de confirmation ha essite inviate al adresse de e-mail specificate.\nPro permitter que le systema invia altere messages a iste adresse, tu debe sequer le instructiones in iste message pro confirmar que le adresse es realmente tue.",
"throttled-mailpassword": "Un message pro le reinitialisation del contrasigno ha jam essite inviate intra le ultime {{PLURAL:$1|hora|$1 horas}}.\nPro prevenir le abuso, solmente un message pro le reinitialisation del contrasigno essera inviate per {{PLURAL:$1|hora|$1 horas}}.",
"mailerror": "Error de inviar e-mail: $1",
@@ -538,6 +538,7 @@
"botpasswords-deleted-title": "Contrasigno de robot delite",
"botpasswords-deleted-body": "Le contrasigno pro le robot \"$1\" del usator \"$2\" ha essite delite.",
"botpasswords-newpassword": "Le nove contrasigno pro aperir session con $1 es $2 . Per favor, conserva isto pro uso futur. ",
+ "botpasswords-no-provider": "BotPasswordsSessionProvider non es disponibile.",
"botpasswords-restriction-failed": "Session impedite per restrictiones de contrasigno de robot.",
"botpasswords-invalid-name": "Iste nomine de usator non contine le separator pro contrasigno de robot (\"$1\").",
"botpasswords-not-exist": "Le usator \"$1\" non ha un contrasigno de robot del nomine \"$2\".",
@@ -1313,9 +1314,9 @@
"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-added-to-category-bundled": "[[:$1]] e [[Special:WhatLinksHere/$1|{{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",
+ "recentchanges-page-removed-from-category-bundled": "[[:$1]] e [[Special:WhatLinksHere/$1|{{PLURAL:$2|un pagina|$2 paginas}}]] removite del categoria",
"autochange-username": "Cambiamento automatic de MediaWiki",
"upload": "Incargar file",
"uploadbtn": "Incargar file",
@@ -1388,7 +1389,8 @@
"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 $1=\"$2\"
non es permittite in files SVG.",
- "uploaded-href-unsafe-target-svg": "Un href a un objectivo non secur <$1 $2=\"$3\">
se trova in le file SVG incargate.",
+ "uploaded-href-attribute-svg": "Le attributos href in files SVG pote solmente ligar a adresses http:// o https://, ma un adresse <$1 $2=\"$3\">
ha essite trovate.",
+ "uploaded-href-unsafe-target-svg": "Un href a datos non secur: le URI <$1 $2=\"$3\">
se trova in le file SVG incargate.",
"uploaded-animate-svg": "Un etiqueta \"animate\" que poterea cambiar le href, usante le attributo \"from\" <$1 $2=\"$3\">
, 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 <$1 $2=\"$3\">
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.",
@@ -1421,6 +1423,7 @@
"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-foreign-cant-upload": "Iste wiki non es configurate pro incargar files al repositorio de files externe demandate.",
"upload-dialog-title": "Incargar file",
"upload-dialog-button-cancel": "Cancellar",
"upload-dialog-button-done": "Facite",
@@ -1428,7 +1431,9 @@
"upload-dialog-button-upload": "Incargar",
"upload-form-label-infoform-title": "Detalios",
"upload-form-label-infoform-name": "Nomine",
+ "upload-form-label-infoform-name-tooltip": "Un titulo descriptive e unic pro le file, que servira de nomine de file. Tu pote usar linguage simple con spatios. Non includer le extension del nomine del file.",
"upload-form-label-infoform-description": "Description",
+ "upload-form-label-infoform-description-tooltip": "Describe brevemente tote le aspectos notabile de iste obra. Pro un photo, mentiona le cosas principal que es representate, le occasion o le loco.",
"upload-form-label-usage-title": "Uso",
"upload-form-label-usage-filename": "Nomine del file",
"foreign-structured-upload-form-label-own-work": "Iste es mi proprie obra",
@@ -1461,7 +1466,7 @@
"backend-fail-read": "Non poteva leger le file $1",
"backend-fail-create": "Non poteva crear le file $1.",
"backend-fail-maxsize": "Impossibile scriber le file $1 perque illo es plus grande que {{PLURAL:$2|un byte|$2 bytes}}.",
- "backend-fail-readonly": "Le systema de immagazinage \"$1\" es actualmente in lectura sol. Le sequente motivo esseva specificate: \"$2\"",
+ "backend-fail-readonly": "Le systema de immagazinage \"$1\" es actualmente in lectura sol. Le ration indicate es: \"$2\"",
"backend-fail-synced": "Le file \"$1\" es in un stato inconsistente inter le systemas interne de immagazinage",
"backend-fail-connect": "Impossibile connecter al systema de immagazinage \"$1\".",
"backend-fail-internal": "Un error incognite occurreva in le systema de immagazinage \"$1\".",
@@ -1491,6 +1496,7 @@
"uploadstash-badtoken": "Le execution de iste action ha fallite, forsan perque le datos del session ha expirate. Tenta lo de novo.",
"uploadstash-errclear": "Le radimento del files ha fallite.",
"uploadstash-refresh": "Refrescar le lista de files",
+ "uploadstash-thumbnail": "vider miniatura",
"invalid-chunk-offset": "Position de segmento invalide",
"img-auth-accessdenied": "Accesso refusate",
"img-auth-nopathinfo": "PATH_INFO manca.\nLe servitor non ha essite configurate pro passar iste information.\nIllo pote esser basate super CGI e non pote supportar img_auth.\nVide https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Image_Authorization.",
@@ -1688,6 +1694,7 @@
"mostrevisions": "Paginas le plus modificate",
"prefixindex": "Tote le paginas con prefixo",
"prefixindex-namespace": "Tote le paginas con prefixo (spatio de nomines $1)",
+ "prefixindex-submit": "Monstrar",
"prefixindex-strip": "Remover prefixo in lista",
"shortpages": "Paginas curte",
"longpages": "Paginas longe",
@@ -1705,11 +1712,13 @@
"protectedpages-performer": "Protegite per",
"protectedpages-params": "Parametros de protection",
"protectedpages-reason": "Motivo",
+ "protectedpages-submit": "Monstrar paginas",
"protectedpages-unknown-timestamp": "Incognite",
"protectedpages-unknown-performer": "Usator incognite",
"protectedtitles": "Titulos protegite",
"protectedtitles-summary": "Iste pagina lista titulos actualmente protegite contra creation. Pro un lista de paginas existente que ha essite protegite, vide [[{{#special:ProtectedPages}}|{{int:protectedpages}}]].",
"protectedtitlesempty": "Nulle titulos es actualmente protegite con iste parametros.",
+ "protectedtitles-submit": "Monstrar titulos",
"listusers": "Lista de usatores",
"listusers-editsonly": "Monstrar solmente usatores con modificationes",
"listusers-creationsort": "Ordinar per data de creation",
@@ -1717,6 +1726,7 @@
"usereditcount": "$1 {{PLURAL:$1|modification|modificationes}}",
"usercreated": "{{GENDER:$3|Create}} le $1 a $2",
"newpages": "Nove paginas",
+ "newpages-submit": "Monstrar",
"newpages-username": "Nomine de usator:",
"ancientpages": "Paginas le plus ancian",
"move": "Renominar",
@@ -1734,14 +1744,39 @@
"apihelp": "Adjuta con le API",
"apihelp-no-such-module": "Modulo \"$1\" non trovate.",
"apisandbox": "Cassa de sablo pro API",
+ "apisandbox-jsonly": "JavaScript es necessari pro usar le cassa a sablo del API.",
"apisandbox-api-disabled": "Le API ha essite disactivate in iste sito.",
- "apisandbox-intro": "Usa iste pagina pro experimentar con le '''API de servicio web de MediaWiki'''.\nConsulta [//www.mediawiki.org/wiki/API:Main_page le documentation del API] pro ulterior detalios concernente le uso del API. Per exemplo: [//www.mediawiki.org/wiki/API#A_simple_example obtener le contento de un Pagina principal]. Selige un action pro vider altere exemplos.",
+ "apisandbox-intro": "Usa iste pagina pro experimentar con le API de servicio web de MediaWiki .\nConsulta [[mw:API:Main page|le documentation del API]] pro ulterior detalios concernente le uso del API. Per exemplo: [//www.mediawiki.org/wiki/API#A_simple_example obtener le contento de un Pagina principal]. Selige un action pro vider altere exemplos.\n\nAttention: Ben que isto es un cassa a sablo, le actiones que tu exeque in iste pagina pote modificar tote le wiki.",
+ "apisandbox-fullscreen": "Expander pannello",
+ "apisandbox-fullscreen-tooltip": "Expander le pannello del cassa a sablo pro impler le fenestra del navigator.",
+ "apisandbox-unfullscreen": "Monstrar pagina",
+ "apisandbox-unfullscreen-tooltip": "Reducer le pannello del cassa a sablo de sorta que le ligamines de navigation de MediaWiki es disponibile.",
"apisandbox-submit": "Facer requesta",
"apisandbox-reset": "Rader",
- "apisandbox-examples": "Exemplo",
- "apisandbox-results": "Resultato",
+ "apisandbox-retry": "Reprobar",
+ "apisandbox-loading": "Carga information pro le modulo API \"$1\"...",
+ "apisandbox-load-error": "Un error ha occurrite durante le cargamento del information pro le modulo API \"$1\": $2",
+ "apisandbox-no-parameters": "Iste modulo API non ha parametros.",
+ "apisandbox-helpurls": "Ligamines de adjuta",
+ "apisandbox-examples": "Exemplos",
+ "apisandbox-dynamic-parameters": "Parametros additional",
+ "apisandbox-dynamic-parameters-add-label": "Adder parametro:",
+ "apisandbox-dynamic-parameters-add-placeholder": "Nomine del parametro",
+ "apisandbox-dynamic-error-exists": "Un parametro con le nomine \"$1\" jam existe.",
+ "apisandbox-deprecated-parameters": "Parametros obsolescente",
+ "apisandbox-fetch-token": "Auto-reimpler le indicio",
+ "apisandbox-submit-invalid-fields-title": "Alcun campos non es valide",
+ "apisandbox-submit-invalid-fields-message": "Per favor, corrige le campos marcate e reproba.",
+ "apisandbox-results": "Resultatos",
+ "apisandbox-sending-request": "Invia requesta API...",
+ "apisandbox-loading-results": "Recipe resultatos API...",
+ "apisandbox-results-error": "Un error ha occurrite durante le cargamento del responsa al consulta API: $1.",
"apisandbox-request-url-label": "URL de requesta:",
- "apisandbox-request-time": "Duration del requesta: $1",
+ "apisandbox-request-time": "Duration del requesta: {{PLURAL:$1|$1 ms}}",
+ "apisandbox-results-fixtoken": "Corrige le indicio e reinvia",
+ "apisandbox-results-fixtoken-fail": "Impossibile recuperar indicio \"$1\".",
+ "apisandbox-alert-page": "Certe campos in iste pagina non es valide.",
+ "apisandbox-alert-field": "Le valor de iste campo non es valide.",
"booksources": "Fontes de libros",
"booksources-search-legend": "Cercar fontes de libros",
"booksources-search": "Cercar",
@@ -1750,12 +1785,17 @@
"specialloguserlabel": "Executor:",
"speciallogtitlelabel": "Objectivo (titulo o {{ns:user}}:nomine de usator):",
"log": "Registros",
+ "logeventslist-submit": "Monstrar",
"all-logs-page": "Tote le registros public",
"alllogstext": "Presentation combinate de tote le registros disponibile de {{SITENAME}}.\nPro restringer le presentation, selige un typo de registro, le nomine de usator (sensibile al majusculas e minusculas), o le pagina in question (etiam sensibile al majusculas e minusculas).",
"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",
+ "checkbox-select": "Seliger: $1",
+ "checkbox-all": "Totes",
+ "checkbox-none": "Nulle",
+ "checkbox-invert": "Inverter",
"allpages": "Tote le paginas",
"nextpage": "Sequente pagina ($1)",
"prevpage": "Precedente pagina ($1)",
@@ -1772,10 +1812,9 @@
"cachedspecial-viewing-cached-ts": "Tu vide un version in cache de iste pagina, que pote non esser completemente actual.",
"cachedspecial-refresh-now": "Vider le plus recente.",
"categories": "Categorias",
+ "categories-submit": "Monstrar",
"categoriespagetext": "Le sequente {{PLURAL:$1|categoria|categorias}} contine paginas o multimedia.\nLe [[Special:UnusedCategories|categorias non usate]] non se monstra hic.\nVide etiam le [[Special:WantedCategories|categorias desirate]].",
"categoriesfrom": "Monstrar categorias a partir de:",
- "special-categories-sort-count": "ordinar per numero",
- "special-categories-sort-abc": "ordinar alphabeticamente",
"deletedcontributions": "Contributiones delite de usatores",
"deletedcontributions-title": "Contributiones delite de usatores",
"sp-deletedcontributions-contribs": "contributiones",
@@ -1797,6 +1836,7 @@
"activeusers-hidebots": "Celar bots",
"activeusers-hidesysops": "Celar administratores",
"activeusers-noresult": "Nulle usator trovate.",
+ "activeusers-submit": "Monstrar usatores active",
"listgrouprights": "Derectos del gruppos de usatores",
"listgrouprights-summary": "Lo sequente es un lista de gruppos de usatores definite in iste wiki, con lor derectos de accesso associate.\nIl pote haber [[{{MediaWiki:Listgrouprights-helppage}}|informationes additional]] super derectos individual.",
"listgrouprights-key": "Legenda:\n* Derecto concedite \n* Derecto revocate ",
@@ -1815,6 +1855,10 @@
"listgrouprights-namespaceprotection-header": "Restrictiones de spatio de nomines",
"listgrouprights-namespaceprotection-namespace": "Spatio de nomines",
"listgrouprights-namespaceprotection-restrictedto": "Derecto(s) que permitte al usator de modificar",
+ "listgrants": "Concessiones",
+ "listgrants-summary": "Lo sequente es un lista de concessiones con lor accesso associate a derectos de usator. Le usatores pote autorisar applicationes a usar lor conto, ma con permissiones limitate secundo le concessiones que le usator ha date al application. Nonobstante, un application agente in nomine de un usator non pote vermente usar derectos que le usator non ha.\nIl ha possibilemente [[{{MediaWiki:Listgrouprights-helppage}}|informationes supplementari]] sur derectos individual.",
+ "listgrants-grant": "Conceder",
+ "listgrants-rights": "Derectos",
"trackingcategories": "Categorias de sequimento",
"trackingcategories-summary": "Iste pagina lista le categorias de sequimento que es automaticamente plenate per le software MediaWiki. Lor nomines pote esser cambiate alterante le correspondente messages de systema in le spatio de nomines \"{{ns:8}}\".",
"trackingcategories-msg": "Categoria de sequimento",
@@ -1882,6 +1926,7 @@
"wlnote": "Ecce le ultime {{PLURAL:$1|modification|$1 modificationes}} durante le ultime {{PLURAL:$2|hora|$2 horas}}, a partir del $3 a $4.",
"wlshowlast": "Monstrar le ultime $1 horas $2 dies",
"watchlist-hide": "Celar",
+ "watchlist-submit": "Monstrar",
"wlshowtime": "Periodo de tempore a monstrar:",
"wlshowhideminor": "modificationes minor",
"wlshowhidebots": "robots",
@@ -1889,6 +1934,7 @@
"wlshowhideanons": "usatores anonyme",
"wlshowhidepatr": "modificationes patruliate",
"wlshowhidemine": "mi modificationes",
+ "wlshowhidecategorization": "categorisation de paginas",
"watchlist-options": "Optiones del observatorio",
"watching": "Observation in curso...",
"unwatching": "Disobservation in curso...",
@@ -1919,6 +1965,7 @@
"delete-confirm": "Deler \"$1\"",
"delete-legend": "Deler",
"historywarning": "Attention: Le pagina que tu vole deler ha un historia de circa $1 {{PLURAL:$1|version|versiones}}:",
+ "historyaction-submit": "Monstrar",
"confirmdeletetext": "Tu va deler un pagina con tote su historia.\nPer favor confirma que tu ha le intention de facer isto, que tu comprende le consequentias, e que tu face isto in accordo con [[{{MediaWiki:Policy-url}}|le politicas]].",
"actioncomplete": "Action complete",
"actionfailed": "Action fallite",
@@ -1935,7 +1982,7 @@
"delete-toobig": "Iste pagina ha un grande historia de modificationes con plus de $1 {{PLURAL:$1|version|versiones}}.\nLe deletion de tal paginas ha essite restringite pro impedir le disruption accidental de {{SITENAME}}.",
"delete-warning-toobig": "Iste pagina ha un grande historia de modificationes con plus de $1 {{PLURAL:$1|version|versiones}}.\nLe deletion de illo pote disrumper le operationes del base de datos de {{SITENAME}};\nprocede con caution.",
"deleteprotected": "Tu non pote deler iste pagina perque illo ha essite protegite.",
- "deleting-backlinks-warning": "'''Attention:''' Il ha [[Special:WhatLinksHere/{{FULLPAGENAME}}|altere paginas]] que liga a o transclude le pagina que tu es sur le puncto de deler.",
+ "deleting-backlinks-warning": "Attention: Il ha [[Special:WhatLinksHere/{{FULLPAGENAME}}|altere paginas]] que liga a o transclude le pagina que tu es sur le puncto de deler.",
"rollback": "Revocar modificationes",
"rollbacklink": "revocar",
"rollbacklinkcount": "revocar $1 {{PLURAL:$1|modification|modificationes}}",
@@ -1961,6 +2008,7 @@
"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-new": "$1 {{GENDER:$2|creava}} le pagina $3 con le modello de contento non predefinite \"$5\"",
"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",
@@ -2109,12 +2157,13 @@
"whatlinkshere-hidelinks": "$1 ligamines",
"whatlinkshere-hideimages": "$1 le ligamines a files",
"whatlinkshere-filters": "Filtros",
+ "whatlinkshere-submit": "Va",
"autoblockid": "Auto-blocada â$1",
"block": "Blocar usator",
"unblock": "Disblocar usator",
"blockip": "Blocar {{GENDER:$1|usator}}",
"blockip-legend": "Blocar usator",
- "blockiptext": "Usa le formulario infra pro blocar le accesso de scriptura\na partir de un adresse IP specific.\nIsto debe esser facite solmente pro impedir vandalismo, e de\naccordo con le [[{{MediaWiki:Policy-url}}|politica de {{SITENAME}}]].\nScribe un motivo specific infra (per exemplo, citante paginas\nspecific que ha essite vandalisate).",
+ "blockiptext": "Usa le formulario infra pro blocar le accesso de scriptura\na partir de un adresse IP specific.\nIsto debe esser facite solmente pro impedir vandalismo, e de\naccordo con le [[{{MediaWiki:Policy-url}}|politica de {{SITENAME}}]].\nScribe un motivo specific infra (per exemplo, citante paginas\nspecific que ha essite vandalisate).\nTu pote blocar intervallos de adresses IP con le syntaxe [https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing CIDR]; le intervallo le plus grande permittite es /$1 pro IPv4 e /$2 pro IPv6.",
"ipaddressorusername": "Adresse IP o nomine de usator:",
"ipbexpiry": "Expiration:",
"ipbreason": "Motivo:",
@@ -2142,6 +2191,7 @@
"ipb-unblock": "Disblocar un nomine de usator o un adresse IP",
"ipb-blocklist": "Vider blocadas existente",
"ipb-blocklist-contribs": "Contributiones de {{GENDER:$1|$1}}",
+ "ipb-blocklist-duration-left": "$1 restante",
"unblockip": "Disblocar adresse IP",
"unblockiptext": "Usa le formulario infra pro restaurar le accesso de scriptura\na un adresse IP blocate previemente.",
"ipusubmit": "Cancellar iste blocada",
@@ -2196,6 +2246,7 @@
"block-log-flags-hiddenname": "nomine de usator celate",
"range_block_disabled": "Le capacitate del administratores a blocar intervallos de adresses IP es disactivate.",
"ipb_expiry_invalid": "Tempore de expiration invalide.",
+ "ipb_expiry_old": "Le hora de expiration es in le passato.",
"ipb_expiry_temp": "Le blocadas de nomines de usator celate debe esser permanente.",
"ipb_hide_invalid": "Impossibile supprimer iste conto; illo ha plus de {{PLURAL:$1|un modification|$1 modificationes}}.",
"ipb_already_blocked": "\"$1\" es ja blocate",
@@ -2232,8 +2283,8 @@
"lockedbyandtime": "(per $1 le $2 a $3)",
"move-page": "Renominar $1",
"move-page-legend": "Renominar pagina",
- "movepagetext": "Per medio del formulario hic infra tu pote renominar un pagina, transferente tote su historia al nove nomine.\nLe ancian titulo devenira un pagina de redirection verso le nove titulo.\nTu pote actualisar automaticamente le redirectiones que puncta verso le titulo original.\nSi tu prefere non facer isto, non oblida de reparar omne redirectiones [[Special:DoubleRedirects|duple]] o [[Special:BrokenRedirects|rupte]].\nTu ha le responsabilitate de assecurar que le ligamines continua a punctar verso le paginas correcte.\n\nNota que le pagina '''non''' essera renominate si existe jam un pagina sub le nove titulo, excepte si iste es un redirection sin historia de modificationes passate.\nIsto te lassa le possibilitate de restaurar le titulo original de un pagina si tu ha committite un error, sin permitter te de supplantar un pagina existente.\n\n'''Attention!'''\nIsto pote esser un cambio drastic e inexpectate pro un pagina popular;\nper favor assecura te de haber comprendite le consequentias de isto ante de continuar.",
- "movepagetext-noredirectfixer": "Per medio del formulario infra tu pote renominar un pagina, transferente tote su historia al nove nomine.\nLe ancian titulo devenira un pagina de redirection verso le nove titulo.\nNon oblida de reparar omne redirectiones [[Special:DoubleRedirects|duple]] o [[Special:BrokenRedirects|rupte]].\nTu ha le responsabilitate de assecurar que le ligamines continua a punctar verso le paginas correcte.\n\nNota que le pagina '''non''' essera renominate si existe jam un pagina sub le nove titulo, excepte si iste es un redirection sin historia de modificationes passate.\nIsto te lassa le possibilitate de restaurar le titulo original de un pagina si tu ha committite un error, sin permitter te de supplantar un pagina existente.\n\n'''Attention!'''\nIsto pote esser un cambio drastic e inexpectate pro un pagina popular;\nper favor assecura te de haber comprendite le consequentias de isto ante de continuar.",
+ "movepagetext": "Per medio del formulario hic infra tu pote renominar un pagina, transferente tote su historia al nove nomine.\nLe ancian titulo devenira un pagina de redirection verso le nove titulo.\nTu pote actualisar automaticamente le redirectiones que puncta verso le titulo original.\nSi tu prefere non facer isto, non oblida de reparar omne redirectiones [[Special:DoubleRedirects|duple]] o [[Special:BrokenRedirects|rupte]].\nTu ha le responsabilitate de assecurar que le ligamines continua a punctar verso le paginas correcte.\n\nNota que le pagina non essera renominate si existe jam un pagina sub le nove titulo, excepte si iste es un redirection sin historia de modificationes passate.\nIsto te lassa le possibilitate de restaurar le titulo original de un pagina si tu ha committite un error, sin permitter te de supplantar un pagina existente.\n\nAttention: \nisto pote esser un cambio drastic e inexpectate pro un pagina popular;\nper favor assecura te de haber comprendite le consequentias de isto ante de continuar.",
+ "movepagetext-noredirectfixer": "Per medio del formulario infra tu pote renominar un pagina, transferente tote su historia al nove nomine.\nLe ancian titulo devenira un pagina de redirection verso le nove titulo.\nNon oblida de reparar omne redirectiones [[Special:DoubleRedirects|duple]] o [[Special:BrokenRedirects|rupte]].\nTu ha le responsabilitate de assecurar que le ligamines continua a punctar verso le paginas correcte.\n\nNota que le pagina non essera renominate si existe jam un pagina sub le nove titulo, excepte si iste es un redirection sin historia de modificationes passate.\nIsto te lassa le possibilitate de restaurar le titulo original de un pagina si tu ha committite un error, sin permitter te de supplantar un pagina existente.\n\nAttention: \nisto pote esser un cambio drastic e inexpectate pro un pagina popular;\nper favor assecura te de haber comprendite le consequentias de isto ante de continuar.",
"movepagetalktext": "Si tu marca iste quadrato, le pagina de discussion associate essera automaticamente renominate al nove titulo, a minus que un pagina de discussion non vacue ja existe sub le nove nomine.\n\nIn tal caso, tu debera renominar o fusionar le pagina manualmente si desirate.",
"moveuserpage-warning": "'''Attention:''' Tu es super le puncto de renominar un pagina de usator. Nota ben que solmente le pagina, e ''non'' le usator, essera renominate.",
"movecategorypage-warning": "Attention: Tu es sur le puncto de renominar un pagina de categoria. Nota ben que solmente le pagina essera renominate e tote le paginas in le ancian categoria non essera recategorisate in le nove.",
@@ -2267,7 +2318,7 @@
"movenosubpage": "Iste pagina non ha subpaginas.",
"movereason": "Motivo:",
"revertmove": "reverter",
- "delete_and_move_text": "==Deletion requirite==\nLe pagina de destination \"[[:$1]]\" existe ja.\nEsque tu vole deler lo pro permitter le renomination?",
+ "delete_and_move_text": "Le pagina de destination \"[[:$1]]\" jam existe.\nVole tu deler lo pro permitter iste renomination?",
"delete_and_move_confirm": "Si, deler le pagina",
"delete_and_move_reason": "Delite pro permitter le renomination de \"[[$1]]\"",
"selfmove": "Le titulos de origine e de destination es identic;\nnon pote renominar un pagina al mesme titulo.",
@@ -2285,7 +2336,7 @@
"move-leave-redirect": "Lassar un redirection",
"protectedpagemovewarning": "'''Attention:''' Iste pagina ha essite protegite de sorta que solmente usatores con privilegios de administrator pote renominar lo. Le ultime entrata del registro es fornite hic infra pro referentia:",
"semiprotectedpagemovewarning": "'''Nota:''' Iste pagina ha essite protegite de sorta que solmente usatores registrate pote renominar lo. Le ultime entrata del registro es fornite hic infra pro referentia:",
- "move-over-sharedrepo": "== File existe ==\n[[:$1]] existe in un repositorio partite. Si le file es renominate a iste titulo, illo supplantara le file partite.",
+ "move-over-sharedrepo": "[[:$1]] jam existe in un repositorio commun. Si le file es renominate a iste titulo, illo supplantara le file commun.",
"file-exists-sharedrepo": "Le nomine de file seligite es ja in uso in un repositorio partite.\nPer favor selige un altere nomine.",
"export": "Exportar paginas",
"exporttext": "Tu pote exportar le texto e historia de modificationes de un pagina particular o collection de paginas, incapsulate in un poco de XML.\nIsto pote esser importate in un altere wiki que usa MediaWiki via le [[Special:Import|pagina pro importar]].\n\nPro exportar paginas, entra le titulos in le quadro de texto infra, un titulo per linea, e indica si tu vole haber le version currente con tote le versiones ancian, con le lineas de historia de paginas, o simplemente le version actual con le informationes super le ultime modification.\n\nIn le secunde caso tu pote etiam usar un ligamine, p.ex. [[{{#Special:Export}}/{{MediaWiki:Mainpage}}]] pro le pagina \"[[{{MediaWiki:Mainpage}}]]\".",
@@ -2301,6 +2352,7 @@
"export-download": "Salveguardar como file",
"export-templates": "Includer patronos",
"export-pagelinks": "Includer paginas ligate a un profunditate de:",
+ "export-manual": "Adder paginas manualmente:",
"allmessages": "Messages del systema",
"allmessagesname": "Nomine",
"allmessagesdefault": "Texto predefinite",
@@ -2364,7 +2416,7 @@
"import-nonewrevisions": "Nulle version ha essite importate (totes esseva jam presente o ha essite saltate a causa de errores).",
"xml-error-string": "$1 al linea $2, col $3 (byte $4): $5",
"import-upload": "Incargar datos XML",
- "import-token-mismatch": "Perdita del datos del session. Per favor reprova.",
+ "import-token-mismatch": "Perdita del datos del session.\n\nEs possibile que tu session ha essite claudite. Per favor, verifica que tu session es ancora aperte e tenta lo de novo .\nSi le problema persiste, proba a [[Special:UserLogout|clauder session]] e aperir un nove session, verificante que tu navigator accepta le cookies ab iste sito.",
"import-invalid-interwiki": "Non pote importar ab le wiki specificate.",
"import-error-edit": "Le pagina \"$1\" non ha essite importate perque tu non ha le permission de modificar lo.",
"import-error-create": "Le pagina \"$1\" non ha essite importate perque tu non ha le permission de crear lo.",
@@ -2381,11 +2433,7 @@
"import-logentry-upload-detail": "$1 {{PLURAL:$1|version|versiones}} importate",
"import-logentry-interwiki-detail": "$1 {{PLURAL:$1|version|versiones}} importate desde $2",
"javascripttest": "Test de JavaScript",
- "javascripttest-pagetext-noframework": "Iste pagina es reservate pro le execution de tests de JavaScript.",
- "javascripttest-pagetext-unknownframework": "Structura de test \"$1\" incognite.",
"javascripttest-pagetext-unknownaction": "Action \"$1\" incognite.",
- "javascripttest-pagetext-frameworks": "Per favor selige un del sequente structuras de test: $1",
- "javascripttest-pagetext-skins": "Selige un apparentia con le qual executar le tests:",
"javascripttest-qunit-intro": "Vide [$1 documentation de tests] sur mediawiki.org.",
"tooltip-pt-userpage": "{{GENDER:|Tu}} pagina de usator",
"tooltip-pt-anonuserpage": "Le pagina de usator pro le adresse IP desde le qual tu face modificationes",
@@ -2426,7 +2474,7 @@
"tooltip-feed-rss": "Syndication RSS pro iste pagina",
"tooltip-feed-atom": "Syndication Atom pro iste pagina",
"tooltip-t-contributions": "Un lista de contributiones de {{GENDER:$1|iste usator}}",
- "tooltip-t-emailuser": "Inviar un e-mail a iste usator",
+ "tooltip-t-emailuser": "Inviar un e-mail a {{GENDER:$1|iste usator}}",
"tooltip-t-info": "Plus information super iste pagina",
"tooltip-t-upload": "Incargar files",
"tooltip-t-specialpages": "Lista de tote le paginas special",
@@ -2466,7 +2514,7 @@
"lastmodifiedatby": "Le modification le plus recente de iste pagina esseva facite le $1 a $2 per $3.",
"othercontribs": "A base de contributiones per $1.",
"others": "alteres",
- "siteusers": "le {{PLURAL:$2|usator|usatores}} $1 de {{SITENAME}}",
+ "siteusers": "le {{PLURAL:$2|{{GENDER:$1|usator}}|usatores}} $1 de {{SITENAME}}",
"anonusers": "le {{PLURAL:$2|usator|usatores}} anonyme $1 de {{SITENAME}}",
"creditspage": "Autores del pagina",
"nocredits": "Nulle information es disponibile super le autores de iste pagina.",
@@ -2527,6 +2575,7 @@
"pageinfo-category-files": "Numero de files",
"markaspatrolleddiff": "Marcar como patruliate",
"markaspatrolledtext": "Marcar iste pagina como patruliate",
+ "markaspatrolledtext-file": "Marcar iste version del file como patruliate",
"markedaspatrolled": "Marcate como patruliate",
"markedaspatrolledtext": "Le version seligite de [[:$1]] ha essite marcate como patruliate.",
"rcpatroldisabled": "Patrulia de modificationes recente disactivate",
@@ -2578,6 +2627,7 @@
"newimages-legend": "Filtro",
"newimages-label": "Nomine del file (o un parte de illo):",
"newimages-showbots": "Monstrar files incargate per robots",
+ "newimages-hidepatrolled": "Celar le files incargate patruliate",
"noimages": "Nihil a vider.",
"ilsubmit": "Cercar",
"bydate": "per data",
@@ -2641,8 +2691,8 @@
"exif-colorspace": "Spatio de colores",
"exif-componentsconfiguration": "Significato de cata componente",
"exif-compressedbitsperpixel": "Modo de compression del imagine",
- "exif-pixelydimension": "Latitude del imagine",
- "exif-pixelxdimension": "Altitude del imagine",
+ "exif-pixelxdimension": "Latitude del imagine",
+ "exif-pixelydimension": "Altitude del imagine",
"exif-usercomment": "Commentos del usator",
"exif-relatedsoundfile": "File audio connexe",
"exif-datetimeoriginal": "Data e hora del generation del datos",
@@ -2790,6 +2840,7 @@
"exif-compression-4": "CCITT Group 4 codification fax",
"exif-copyrighted-true": "Sub copyright",
"exif-copyrighted-false": "Stato de copyright non definite",
+ "exif-photometricinterpretation-1": "Nigre e blanc (0 pro nigre)",
"exif-unknowndate": "Data incognite",
"exif-orientation-1": "Normal",
"exif-orientation-2": "Invertite horizontalmente",
@@ -2971,8 +3022,8 @@
"scarytranscludefailed-httpstatus": "[Obtention de patrono fallite pro $1: HTTP $2]",
"scarytranscludetoolong": "[URL es troppo longe]",
"deletedwhileediting": "'''Attention:''' Iste pagina esseva delite post que tu comenciava a modificar lo!",
- "confirmrecreate": "Le usator [[User:$1|$1]] ([[User talk:$1|discussion]]) ha delite iste pagina post que tu comenciava a modificar lo, dante le motivo:\n: ''$2''\nPer favor confirma que tu realmente vole recrear iste pagina.",
- "confirmrecreate-noreason": "Le usator [[User:$1|$1]] ([[User talk:$1|discussion]]) ha delite iste pagina post que tu comenciava a modificar lo. Per favor confirma que tu realmente vole recrear iste pagina.",
+ "confirmrecreate": "Le usator [[User:$1|$1]] ([[User talk:$1|discussion]]) ha {{GENDER:$1|delite}} iste pagina post que tu comenciava a modificar lo, dante le motivo:\n: $2 \nPer favor confirma que tu realmente vole recrear iste pagina.",
+ "confirmrecreate-noreason": "Le usator [[User:$1|$1]] ([[User talk:$1|discussion]]) ha {{GENDER:$1|delite}} iste pagina post que tu comenciava a modificar lo. Per favor confirma que tu realmente vole recrear iste pagina.",
"recreate": "Recrear",
"confirm_purge_button": "OK",
"confirm-purge-top": "Rader le cache de iste pagina?",
@@ -3032,6 +3083,7 @@
"watchlisttools-edit": "Vider e modificar le observatorio",
"watchlisttools-raw": "Modificar observatorio crude",
"signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|discussion]])",
+ "timezone-local": "Local",
"duplicate-defaultsort": "Attention: Le clave de ordination predefinite \"$2\" supplanta le anterior clave de ordination predefinite \"$1\".",
"duplicate-displaytitle": "Attention: Le titulo a monstrar \"$2\" supplanta le ancian titulo a monstrar \"$1\".",
"invalid-indicator-name": "Error: Le attributo name
del indicatores del stato del pagina non pote esser vacue.",
@@ -3082,8 +3134,7 @@
"version-libraries-license": "Licentia",
"version-libraries-description": "Description",
"version-libraries-authors": "Autores",
- "redirect": "Rediriger per nomine de file, ID de usator, ID de pagina o ID de version",
- "redirect-legend": "Rediriger a un file o pagina",
+ "redirect": "Rediriger per ID de file, usator, pagina, version o registro",
"redirect-summary": "Iste pagina special redirige a un file (si es date le nomine de un file), a un pagina (si es date un ID de version o ID de pagina) o a un pagina de usator (si es date un ID de usator numeric). Usage: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]] o [[{{#Special:Redirect}}/user/101]].",
"redirect-submit": "Va",
"redirect-lookup": "Cercar:",
@@ -3095,7 +3146,6 @@
"redirect-not-exists": "Valor non trovate",
"fileduplicatesearch": "Cercar files duplicate",
"fileduplicatesearch-summary": "Cercar files duplicate a base de lor summas de verification ''(hash).''",
- "fileduplicatesearch-legend": "Cercar un duplicato",
"fileduplicatesearch-filename": "Nomine del file:",
"fileduplicatesearch-submit": "Cercar",
"fileduplicatesearch-info": "$1 Ã $2 pixel Grandor del file: $3 Typo MIME: $4",
diff --git a/languages/i18n/id.json b/languages/i18n/id.json
index be3b009ec9..e19b63b4f1 100644
--- a/languages/i18n/id.json
+++ b/languages/i18n/id.json
@@ -44,7 +44,8 @@
"Matma Rex",
"WongKentir",
"Rachmat.Wahidi",
- "Arief"
+ "Arief",
+ "Nemo bis"
]
},
"tog-underline": "Garis bawahi pranala:",
@@ -1354,7 +1355,7 @@
"recentchangeslinked-page": "Nama halaman:",
"recentchangeslinked-to": "Perlihatkan perubahan dari halaman-halaman yang terhubung dengan halaman yang disajikan",
"recentchanges-page-added-to-category": "[[:$1]] ditambahkan pada kategori",
- "recentchanges-page-added-to-category-bundled": "[[:$1]] dan {{PLURAL:$2|satu halaman|$2 halaman-halaman}} lagi halaman ditambahkan pada kategori",
+ "recentchanges-page-added-to-category-bundled": "[[:$1]] dan [[Special:WhatLinksHere/$1|{{PLURAL:$2|satu halaman|$2 halaman-halaman}}]] lagi halaman ditambahkan pada kategori",
"recentchanges-page-removed-from-category": "[[:$1]] dihapus dari kategori",
"recentchanges-page-removed-from-category-bundled": "[[:$1]] dan {{PLURAL:$2|satu halaman|$2 halaman-halaman}} lagi halaman dihapus dari kategori",
"autochange-username": "Perubahan otomatis MediaWiki",
@@ -1837,8 +1838,6 @@
"categories-submit": "Tampilkan",
"categoriespagetext": "{{PLURAL:$1|Kategori berikut|Kategori-kategori berikut}} memiliki isi halaman atau media.\n[[Special:UnusedCategories|Kategori yang tak digunakan]] tidak ditampilkan di sini.\nLihat pula [[Special:WantedCategories|kategori yang diinginkan]].",
"categoriesfrom": "Tampilkan kategori-kategori dimulai dengan:",
- "special-categories-sort-count": "urutkan menurut jumlah",
- "special-categories-sort-abc": "urutkan menurut abjad",
"deletedcontributions": "Kontribusi yang dihapus",
"deletedcontributions-title": "Kontribusi yang dihapus",
"sp-deletedcontributions-contribs": "kontribusi",
@@ -2458,11 +2457,7 @@
"import-logentry-upload-detail": "$1 {{PLURAL:$1|revisi|revisi}} diimpor",
"import-logentry-interwiki-detail": "$1 {{PLURAL:$1|revisi}} diimpor dari $2",
"javascripttest": "Pengujian JavaScript",
- "javascripttest-pagetext-noframework": "Halaman ini disediakan untuk pengujian JavaScript yang sedang berjalan.",
- "javascripttest-pagetext-unknownframework": "Pengujian kerangka kerja \"$1\" tidak diketahui",
"javascripttest-pagetext-unknownaction": "Tindakan \"$1\" tidak dikenali.",
- "javascripttest-pagetext-frameworks": "Silakan pilih satu di antara kerangka kerja pengujian berikut: $1",
- "javascripttest-pagetext-skins": "Pilih kulit yang ingin Anda uji:",
"javascripttest-qunit-intro": "Lihat [$1 dokumentasi pengujian] di mediawiki.org.",
"tooltip-pt-userpage": "Halaman {{GENDER:|pengguna Anda}}",
"tooltip-pt-anonuserpage": "Halaman pengguna IP Anda",
@@ -2755,8 +2750,8 @@
"exif-colorspace": "Ruang warna",
"exif-componentsconfiguration": "Arti tiap komponen",
"exif-compressedbitsperpixel": "Mode kompresi gambar",
- "exif-pixelydimension": "Lebar gambar",
- "exif-pixelxdimension": "Tinggi gambar",
+ "exif-pixelxdimension": "Lebar gambar",
+ "exif-pixelydimension": "Tinggi gambar",
"exif-usercomment": "Komentar pengguna",
"exif-relatedsoundfile": "Berkas audio yang berhubungan",
"exif-datetimeoriginal": "Tanggal dan waktu pembuatan data",
@@ -3272,7 +3267,6 @@
"version-libraries-description": "Deskripsi",
"version-libraries-authors": "Pembuat",
"redirect": "Pengalihan berdasarkan ID berkas, pengguna, halaman, revisi, atau log",
- "redirect-legend": "Pengalihan ke sebuah berkas atau halaman",
"redirect-summary": "Halaman istimewa ini beralih ke berkas (sesuai nama berkasnya), halaman (sesuai ID revisinya), atau halaman pengguna (sesuai ID numerik penggunanya). Penggunaan: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revision/328429]], atau [[{{#Special:Redirect}}/user/101]].",
"redirect-submit": "Lanjut",
"redirect-lookup": "Pencarian:",
@@ -3285,7 +3279,6 @@
"redirect-not-exists": "Nilai tidak ditemukan",
"fileduplicatesearch": "Pencarian berkas duplikat",
"fileduplicatesearch-summary": "Pencarian duplikat berkas berdasarkan nilai hash-nya.",
- "fileduplicatesearch-legend": "Cari duplikat",
"fileduplicatesearch-filename": "Nama berkas:",
"fileduplicatesearch-submit": "Cari",
"fileduplicatesearch-info": "$1 Ã $2 piksel Besar berkas: $3 Tipe MIME: $4",
diff --git a/languages/i18n/ilo.json b/languages/i18n/ilo.json
index 326843788a..e54d6cf89f 100644
--- a/languages/i18n/ilo.json
+++ b/languages/i18n/ilo.json
@@ -8,7 +8,8 @@
"Urhixidur",
"××¢×¨× ×¨××× ××ר×",
"ìë¼",
- "Macofe"
+ "Macofe",
+ "Nemo bis"
]
},
"tog-underline": "Pinag-ugisan ti silpo:",
@@ -1301,7 +1302,7 @@
"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-added-to-category-bundled": "nainayon ti [[:$1]] ken [[Special:WhatLinksHere/$1|{{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",
"autochange-username": "Automatiko a panagbaliw iti MediaWiki",
@@ -1786,8 +1787,6 @@
"categories-submit": "Ipakita",
"categoriespagetext": "Ti sumaganad a {{PLURAL:$1|kategoria ket aglaon|katkategoria ket aglaon}} kadagiti panid wenno midia.\n[[Special:UnusedCategories|Dagiti saan a nausar a kategoria]] ket saan a maiparang ditoy.\nKitaen met [[Special:WantedCategories|dagiti makiddaw a kategoria]].",
"categoriesfrom": "Ipakita dagiti kategoria a mangrugi iti:",
- "special-categories-sort-count": "ilasin babaen ti bilang",
- "special-categories-sort-abc": "ilasin nga alpabetiko",
"deletedcontributions": "Dagiti naikkat a kontribusion ti agar-aramat",
"deletedcontributions-title": "Dagiti naikkat a kontribusion ti agar-aramat",
"sp-deletedcontributions-contribs": "dagiti kontribusion",
@@ -2403,11 +2402,7 @@
"import-logentry-upload-detail": "$1 {{PLURAL:$1|a rebision|kadagiti rebision}} ti naala",
"import-logentry-interwiki-detail": "$1 {{PLURAL:$1|rebision|dagiti rebision}} ti naala manipud ti $2",
"javascripttest": "Panagsubok ti JavaScript",
- "javascripttest-pagetext-noframework": "Daytoy a panid ket naireserba para iti panagpataray kadagiti panagsubok ti JavaScript.",
- "javascripttest-pagetext-unknownframework": "Di ammo a tabas ti panagsubok ti \"$1\".",
"javascripttest-pagetext-unknownaction": "Di ammo a tignay ti \"$1\".",
- "javascripttest-pagetext-frameworks": "Pangngaasi nga agpili ti maysa kadagiti sumaganad a tabas ti panagsubok: $1",
- "javascripttest-pagetext-skins": "Agpili ti kudil a pangipatarayan kadagiti panagsubok:",
"javascripttest-qunit-intro": "Kitaen ti [ $1 dukomentasion ti panagsubok] idiay mediawiki.org.",
"tooltip-pt-userpage": "Panidmo nga agar-aramat",
"tooltip-pt-anonuserpage": "Ti panid ti agar-aramat para iti daytoy nga IP a pagtaengan a kas ur-urnosem",
@@ -2658,8 +2653,8 @@
"exif-colorspace": "Espasio ti maris",
"exif-componentsconfiguration": "Kaibuksilan iti tunggal maysa a komponente",
"exif-compressedbitsperpixel": "Moda ti kompresion ti ladawan",
- "exif-pixelydimension": "Kaakaba ti ladawan",
- "exif-pixelxdimension": "Katayag ti ladawan",
+ "exif-pixelxdimension": "Kaakaba ti ladawan",
+ "exif-pixelydimension": "Katayag ti ladawan",
"exif-usercomment": "Dagiti komentario ti agar-aramat",
"exif-relatedsoundfile": "Mainaig a papeles ti audio",
"exif-datetimeoriginal": "Petsa ken oras ti pannakaaramid ti datos",
@@ -3097,7 +3092,6 @@
"version-libraries-description": "Deskripsion",
"version-libraries-authors": "Dagiti mannurat",
"redirect": "Baw-ing babaen ti papeles, agar-aramat, panid, rebision, wenno ID ti listaan",
- "redirect-legend": "Ibaw-ing iti papeles wenno panid",
"redirect-summary": "Daytoy nga espesial a panid ket maibaw-ing iti papeles (iti nagan ti papeles), ti panid (iti ID ti rebision wenno ID ti panid), wenno ti panid ti agar-aramat (iti numeriko nga ID ti agar-aramat). Panagusar:\n[[{{#Special:Redirect}}/file/Example.jpg]], \n[[{{#Special:Redirect}}/page/64308]], \n[[{{#Special:Redirect}}/revision/328429]], wenno\n[[{{#Special:Redirect}}/user/101]].",
"redirect-submit": "Inkan",
"redirect-lookup": "Kitaen:",
@@ -3110,7 +3104,6 @@
"redirect-not-exists": "Saan a nabirukan ti pateg",
"fileduplicatesearch": "Agbiruk kadagiti duplikado a papeles",
"fileduplicatesearch-summary": "Agbiruk kadagiti duplikado a papeles a naibatay kadagiti pateg ti hash.",
- "fileduplicatesearch-legend": "Agbiruk para iti duplikado",
"fileduplicatesearch-filename": "Nagan ti papeles:",
"fileduplicatesearch-submit": "Biruken",
"fileduplicatesearch-info": "$1 Ã $2 a piksel Rukod ti papeles: $3 Kita ti MIME: $4",
diff --git a/languages/i18n/inh.json b/languages/i18n/inh.json
index 6b9434ee34..5e2b5faec8 100644
--- a/languages/i18n/inh.json
+++ b/languages/i18n/inh.json
@@ -59,82 +59,82 @@
"editfont-monospace": "ÐаÑÑ
алон заÑба",
"editfont-sansserif": "Ðелгало йоаÑа ÑÑиÑÑ",
"editfont-serif": "Ðелгало йола ÑÑиÑÑ",
- "sunday": "Ð|иÑанди",
- "monday": "ÐÑÑоÑ",
- "tuesday": "ШинаÑа",
+ "sunday": "кIиÑанди",
+ "monday": "оÑÑоÑ",
+ "tuesday": "ÑинаÑа",
"wednesday": "ÐÑ
аÑÑа",
- "thursday": "ÐÑа",
- "friday": "ÐÓаÑÑаÑка",
- "saturday": "ШоаÑÑа",
+ "thursday": "еÑа",
+ "friday": "пÓаÑÑаÑка",
+ "saturday": "ÑоаÑÑа",
"sun": "Ð|и",
"mon": "ÐÑ",
- "tue": "Ши",
+ "tue": "Шин",
"wed": "ÐÑ
а",
"thu": "ÐÑ",
"fri": "Ð|аÑ",
"sat": "Шоа",
- "january": "ÐажгамÑÑ
ой",
- "february": "СаÑкÑÑ",
- "march": "ÐÑÑÑÑ
Ñол",
- "april": "ТÑÑоли",
- "may_long": "ÐекаÑг",
- "june": "ÐÑÑинг",
- "july": "Ð|имаÑÑ",
- "august": "Ðангал",
- "september": "Ðоажол",
- "october": "Тов",
- "november": "ÐайÑил",
- "december": "ЧанÑаÑ",
+ "january": "ÐгIой бÑÑÑ",
+ "february": "СаÑ-кÑÑ Ð±ÑÑÑ",
+ "march": "ÐÑÑÑ-Ñ
Ñал бÑÑÑ",
+ "april": "ТÑÑоли бÑÑÑ",
+ "may_long": "Села бÑÑÑ",
+ "june": "ÐÑинга бÑÑÑ",
+ "july": "ÐаÑÑамеа\\Ðеа бÑÑÑ",
+ "august": "ÐÑÑÑ
али бÑÑÑ",
+ "september": "Тов\\ÐиÑ
ий бÑÑÑ",
+ "october": "ÐÑдаÑий\\ÐÑÑÑ
Iий бÑÑÑ",
+ "november": "Ðай Ñилла бÑÑÑ",
+ "december": "Чан-ÑÐ°Ñ Ð±ÑÑÑ",
"january-gen": "ÐажгамÑÑ
ой беÑÑ",
- "february-gen": "СаÑкÑÑ Ð±ÐµÑÑ",
+ "february-gen": "СаÑ-кÑÑ Ð±ÐµÑÑ",
"march-gen": "ÐÑÑÑÑ
Ñол беÑÑ",
"april-gen": "ТÑÑоли беÑÑ",
- "may-gen": "ÐекаÑг беÑÑ",
- "june-gen": "ÐÑÑинг беÑÑ",
- "july-gen": "Ð|имаÑÑ Ð±ÐµÑÑ",
- "august-gen": "Ðангал беÑÑ",
- "september-gen": "Ðоажол беÑÑ",
- "october-gen": "Тов беÑÑ",
- "november-gen": "ÐайÑил беÑÑ",
+ "may-gen": "Села беÑÑ",
+ "june-gen": "ÐÑинга беÑÑ",
+ "july-gen": "ÐаÑÑамеа\\Ðеа беÑÑ",
+ "august-gen": "ÐеÑÑ
али беÑÑ",
+ "september-gen": "Тов\\ÐиÑ
ий беÑÑ",
+ "october-gen": "ÐÑдаÑий\\ÐÑÑÑ
Iий беÑÑ",
+ "november-gen": "Ðай Ñилла беÑÑ",
"december-gen": "ЧанÑÐ°Ñ Ð±ÐµÑÑ",
- "jan": "Ðажг.",
- "feb": "СаÑк.",
- "mar": "ÐÑÑÑ.",
- "apr": "TÑÑ.",
- "may": "Ðек.",
- "jun": "ÐÑÑ.",
- "jul": "Ð|им.",
- "aug": "Ðанг.",
- "sep": "Ðоаж.",
- "oct": "Тов.",
- "nov": "ÐайÑ.",
- "dec": "ЧанÑ.",
+ "jan": "ÐгIой",
+ "feb": "СаÑ-кÑÑ",
+ "mar": "ÐÑÑÑ-Ñ
Ñал",
+ "apr": "TÑÑоли",
+ "may": "Села",
+ "jun": "Ðангал\\ÐÑинга",
+ "jul": "ÐаÑÑамеа\\Ðеа",
+ "aug": "ÐÑÑÑ
али",
+ "sep": "Тов\\ÐиÑ
ий",
+ "oct": "ÐÑдаÑий\\ÐÑÑÑ
Iий",
+ "nov": "Ðай Ñилла",
+ "dec": "Чан-ÑаÑ",
"january-date": "ÐажгамÑÑ
ой $1",
- "february-date": "СаÑкÑÑ $1",
+ "february-date": "СаÑ-кÑÑ Ð±ÑÑÑ $1",
"march-date": "ÐÑÑÑÑ
Ñол $1",
"april-date": "ТÑÑоли $1",
- "may-date": "ÐекаÑг $1",
+ "may-date": "Села бÑÑÑ $1",
"june-date": "ÐÑÑинг $1",
"july-date": "Ð|имаÑÑ $1",
"august-date": "Ðангал $1",
"september-date": "Ðоажол $1",
"october-date": "Тов $1",
- "november-date": "ÐайÑил $1",
+ "november-date": "Ðай Ñилла бÑÑÑ $1",
"december-date": "ЧанÑÐ°Ñ $1",
"period-am": "ÐЦ",
"period-pm": "ÐТ",
- "pagecategories": "{{PLURAL:$1|1=ÐаÑаг|ÐаÑагаÑ}}",
+ "pagecategories": "{{PLURAL:$1|1=ÐаÑегоÑи|ÐаÑегоÑеÑ}}",
"category_header": "\"$1\" ÐаÑага ÑÑÑа оаг|онаÑ",
"subcategories": "ЧÑÑакаÑагаÑ",
- "category-media-header": "\"$1\" ÐаÑага ÑÑÑа паÑлаÑ",
+ "category-media-header": "\"$1\" ÐаÑегоÑи ÑÑÑа ÑайлаÑ",
"category-empty": "''УкÑ
каÑага ÑÑ ÑÑ
ÑаккÑ
а оаг|Ð¾Ð½Ð°Ñ Ðµ паÑÐ»Ð°Ñ ÑÑ.''",
- "hidden-categories": "{{PLURAL:$1|1=ÐÑайла каÑаг|ÐÑайла каÑагаÑ}}",
+ "hidden-categories": "{{PLURAL:$1|1=ÐÑайла каÑегоÑи|ÐÑайла каÑегоÑеÑ}}",
"hidden-category-category": "ÐÑайла каÑагаÑ",
"category-subcat-count": "{{PLURAL:$2|УкÑ
каÑагa Ñ|еÑ
ÑаÑа бÑÑ
каÑаг ÑÑлоаÑ.|{{PLURAL:$1|1=$1 бÑÑ
каÑаг Ñ
ÑаÑ
ÑекÑ
а Ñ|$1 бÑÑ
каÑÐ°Ð³Ð°Ñ Ñ
ÑаÑ
ÑекÑ
а Ñ}} $2 йолаÑаÑex.}}",
"category-subcat-count-limited": "УкÑ
каÑагa ÑÑ {{PLURAL:$1|1=$1 к|алкаÑаг|$1 к|алкаÑагаÑ}}.",
"category-article-count": "{{PLURAL:$2|УкÑ
каÑага ÑÑ
Ñа оаг|Ñв маÑа ÑÑлоаÑаÑ.|{{PLURAL:$1|1=$1 оаг|Ñв Ñ
ÑаÑ
екÑ
а Ñ|$1 оаг|oÐ½Ð°Ñ Ñ
ÑаÑ
екÑ
а Ñ}} ÑкÑ
каÑага $2 йолаÑаÑeÑ
.}}",
"category-article-count-limited": "УкÑ
каÑага ÑÑ {{PLURAL:$1|1=$1 оаг|Ñв|$1 оаг|oнаÑ}}.",
- "category-file-count": "{{PLURAL:$2|УкÑ
каÑаг ÑÑ ÑÑ
Ñа лÑÑÐ´Ð°Ñ Ð¼Ð°Ñа даÑ.|{{PLURAL:$1|1=$1 лÑÑÐ´Ð°Ñ Ñ
ÑаÑ
ÑекÑ
а Ñ|$1 лÑÑдаÑÐ°Ñ Ñ
ÑаÑ
ÑекÑ
а Ñ}} ÑкÑ
каÑагa $2 долаÑаÑÑeÑ
.}}",
+ "category-file-count": "{{PLURAL:$2|УкÑ
каÑагоÑи ÑÑ ÑаI маÑа Ñайл ÑÑ.|{{PLURAL:$1|1=$1 Ñайл Ñ
ÑаÑ
ÑокÑ
Ð°Ñ Ñ|$1 Ñайл Ñ
ÑаÑ
ÑокÑ
Ð°Ñ Ñ}} ÑкÑ
каÑегоÑи $2 долаÑаÑeÑ
.}}",
"category-file-count-limited": "УкÑ
каÑага ÑÑ {{PLURAL:$1|1=$1 лÑÑдаÑ|$1 лÑÑдаÑаÑ}}.",
"listingcontinuesabbrev": "д|аÑ
о",
"index-category": "Ð|аÑ
Ñожама оаг|онаÑ",
@@ -149,8 +149,8 @@
"mypage": "Oаг|Ñв",
"mytalk": "ÐÑвÑам",
"anontalk": "ÐÑвÑаÑ",
- "navigation": "ÐаÑкÑаÑоÑ
каÑг",
- "and": " кÑ
Ñ",
+ "navigation": "ÐавигаÑи",
+ "and": " а",
"qbfind": "ÐаÑ
аÑ",
"qbbrowse": "Ð|аÑгÑаÑÑа",
"qbedit": "Ð¥ÑвÑа",
@@ -159,26 +159,26 @@
"faq": "ÐТХ",
"faqpage": "Project:ÐТХ",
"actions": "Ð¥|амдаÑаÑ",
- "namespaces": "Ц|еÑий аÑенаÑ",
- "variants": "ÐеÑкепаÑ",
- "navigation-heading": "ÐаÑкÑагойÑаÑа Ñ
оÑжаг|иÑÑ",
+ "namespaces": "ЦIеÑий моÑÑаÑ",
+ "variants": "ÐеÌпаÑ",
+ "navigation-heading": "ÐавигаÑен менÑ",
"errorpagetitle": "Ð|алаÑ",
"returnto": "ÑÑ $1 оаг|он Ñ|а ÑÑ
аг|о",
- "tagline": "ÐеÑал ÑкÑ
азаÑа Ñ {{SITENAME}}",
+ "tagline": "ÐеÑал ÑкÑ
азаÑа: {{grammar:genitive|{{SITENAME}}}}",
"help": "ÐÓо",
"search": "ÐаÑ
аp",
- "searchbutton": "ÐаÑ
аÑ",
+ "searchbutton": "Ð¥ÑалáÑ
а",
"go": "ÐеÑ
Ñа г|о",
- "searcharticle": "ÐеÑ
Ñа г|о",
+ "searcharticle": "ÐеÑ
Ñавала",
"history": "ÐÑÑоÑи",
"history_short": "ÐÑÑоÑи",
"updatedmarker": "Со Ñ
анаÑа денÑа Ñ
ÑвÑÐ°Ð¼Ð°Ñ Ñ
иннaд",
- "printableversion": "ÐепаÑоÑ
аÑа нийÑÑ
Ñал",
- "permalink": "Ðаиман лаÑÑÐ°Ñ Ð¹Ð¾Ð»Ð° Ñ
ÑожадеÑг",
+ "printableversion": "ÐаÑба ÑоÑ
аÑа веÑÑи",
+ "permalink": "Ðаиман лаÑÑÐ°Ñ Ð¹Ð¾Ð»Ð° Ñ
ÑожаÑÑг",
"print": "ÐепаÑоÑ
аÑ",
- "view": "Ð|аÑгÑаÑÑам",
+ "view": "Ð¥ÑажаÑ",
"view-foreign": "Ðазаоаг|он ÑÑ $1 Ñ
Ñажа",
- "edit": "Ð¥ÑвÑа",
+ "edit": "ÐийÑде",
"edit-local": "Ð¥ÑвÑа локалÑни йоазонÑа ÑÑÑÑ Ð¾ÑÑадаÑ",
"create": "Ð¥Ñаде",
"create-local": "ТIаÑоÑ
а локалÑни йоазонÑа ÑÑÑÑ Ð¾ÑÑадаÑ",
@@ -196,67 +196,67 @@
"unprotectthispage": "ÐоÑам Ñ
ÑвÑа",
"newpage": "ÐеÑда оагÓÑв",
"talkpage": "УкÑ
оаг|он Ñ|а дÑвÑам бе",
- "talkpagelinktext": "дÑвÑам",
+ "talkpagelinktext": "дÑвÑа оÑÑадаÑ",
"specialpage": "Ð|ÑлакÑ
адаÑа оаг|Ñв",
- "personaltools": "Са г|иÑÑаÑ",
+ "personaltools": "ÐоакÑаÑÑ
оÑÑн гÓиÑÑаÑ",
"articlepage": "Ðоазон Ñ|а б|аÑгÑаÑÑа",
- "talk": "ÐÑвÑам",
- "views": "ÐÓаÑгÑаÑÑамаÑ",
+ "talk": "ÐÑвÑа оÑÑадаÑ",
+ "views": "Ð¥ÑажаÑаÑ",
"toolbox": "ÐÓиÑÑаÑ",
"userpage": "ÐоакÑоÑÑ
оÑÑн оаг|он Ñ|а б|аÑгÑаÑÑа",
"projectpage": "Ð¥ÑаÑ
ÑоадайÑама оаг|oн Ñ|а б|аÑгÑаÑÑа",
"imagepage": "ÐÑÑдаÑа оаг|oн Ñ|а б|аÑгÑаÑÑа",
"mediawikipage": "Xоаман оаг|Ñв Ñ
ÑаÑ
ÑокÑ
а",
"templatepage": "Ч|абала оаг|oн Ñ|а б|аÑгÑаÑÑа",
- "viewhelppage": "ÐÓо деÑ
а",
+ "viewhelppage": "ÐÓо Ñ
ÑаÑÑаÑ",
"categorypage": "ÐаÑага оаг|oн Ñ|а б|аÑгÑаÑÑа",
"viewtalkpage": "ÐÑвÑамага б|аÑгÑаÑÑа",
"otherlanguages": "ÐÑ
ÑÑа меÑÑаеÑ
",
- "redirectedfrom": "($1 Ñ|aÑа Ñ
ÑадейÑа да)",
+ "redirectedfrom": "($1 ÑIaÑа Ñ
ÑаÑ
ÑÐ¾Ð¶Ð°Ð´Ð°Ñ Ð´Ð°)",
"redirectpagesub": "Ð|а-Ñ
Ñа дайÑа оаг|Ñв",
- "redirectto": "Ð|аÑ
Ñожаде ÑкÑ
Ñ|а:",
- "lastmodifiedat": "УкÑ
оаг|oн Ñ|еÑ
ÑаÑа Ñ
ÑвÑам: $2, $1.",
+ "redirectto": "ТIаÑ
ÑÐ¾Ð¶Ð°Ð´Ð°Ñ ÑкÑ
аза:",
+ "lastmodifiedat": "УкÑ
оагIoн ÑIеÑ
Ñ
ÑаÑа Ñ
ÑвÑам: $2, $1.",
"viewcount": "УкÑ
оаг|oн Ñ|а б|аÑгÑаÑÑаб {{PLURAL:$1|ÑÑ
ÑааÑа\n|$1 times}}. {{PLURAL:$1|1=ÑÑ
Ñазза|$1за}}.",
"protectedpage": "ÐоÑама оаг|Ñв",
- "jumpto": "УкÑ
аза деÑ
Ñаг|о:",
- "jumptonavigation": "наÑкÑаÑоxкаÑ",
- "jumptosearch": "лaÑ
аp",
+ "jumpto": "ÐеÑ
Ñавала ÑкÑ
аза:",
+ "jumptonavigation": "навигаÑи",
+ "jumptosearch": "лаÑ
аÑ",
"pool-timeout": "ЧIегаÑоÑ
аÑа ÑабаÑан Ñ
а ÑакÑ
аÑÑннай",
"pool-queuefull": "ХаÑÑаÑий ÑÓа Ñ
Ñалдизад",
"pool-errorunknown": "ÐÐ¾Ð²Ð·Ð°Ñ Ð´Ð¾Ð°Ñа гÓалаÑ",
"poolcounter-usage-error": "ÐелдаÑа г|алаÑ: $1",
- "aboutsite": "ÐоаÑам {{SITENAME}}",
+ "aboutsite": "{{grammar:genitive|{{SITENAME}}}} лаÑÑа",
"aboutpage": "Project:ÐоаÑам",
"copyright": "$1 ÑÑлоаÑамаÑа ÑIакÑ
оаÑÐ°Ñ Ð´Ð°.",
"copyrightpage": "{{ns:project}}:ЯздаÑÑÑнна бокÑо",
- "currentevents": "Ð¥ÓанзаÑа Ñ
оамаÑ",
- "currentevents-url": "Project:Ð¥ÓанзаÑа Ñ
оамаÑ",
- "disclaimers": "ÐокÑонаÑ
ÑÑ
авалаp",
- "disclaimerpage": "Project:ÐокÑонаÑ
ÑÑ
авалаp",
+ "currentevents": "Ð¥ÓанзаÑа Ñ
инна Ñ
IамаÑ",
+ "currentevents-url": "Project:Ð¥ÓанзаÑа Ñ
инна Ñ
IамаÑ",
+ "disclaimers": "ÐеÑ
кÑокÑ
ам Ñ
ÑаÑаÑÑаÑ",
+ "disclaimerpage": "Project:ÐеÑ
кÑокÑ
ам Ñ
ÑаÑаÑÑаÑ",
"edithelp": "Ð¥ÑвÑама гÓо",
"helppage-top-gethelp": "ÐÓо",
"mainpage": "ÐеÑÑеÑа оагÓÑв",
"mainpage-description": "ÐеÑÑеÑа оагÓÑв",
"policy-url": "Project:ÐокÑонаÑ",
- "portal": "ÐÑлламков",
- "portal-url": "Project:ÐÑлламков",
- "privacy": "ÐаÑлбокÑо",
- "privacypage": "Project:ÐаÑлбокÑо",
+ "portal": "ЮкÑаÑа ков",
+ "portal-url": "Project:ЮкÑаÑа ков",
+ "privacy": "ÐÑайлагIаÑа Ñ
Iамай полиÑика",
+ "privacypage": "Project:ÐÑайлагIаÑа Ñ
Iамай полиÑика",
"badaccess": "ЧÑвалаÑa гÓалаÑ",
"badaccess-group0": "ÐÐ°Ñ Ñ
ÑадийÑ
а дÑлаÑÑ
Iам ÑÑн де йиÑÑÑ.",
"badaccess-groups": "ÐаÑ
Ñа кÑ
оаÑаÑÐ´Ð°Ñ {{PLURAL:$2|1=ÑоабаÑаÑа|ÑоабаÑкаÑа}} $1 дакÑалаÑÑаÑÑ
ой маÑа де бокÑо ÑÑ.",
"versionrequired": "$1 MediaWiki доÑжам ÑÑа",
"versionrequiredtext": "УкÑ
оагÓÑв бeлÑ
а MediaWiki доÑÐ¶Ð°Ð¼Ð°Ñ ÑÑа $1. Ð¥Ñажа [[Special:Version|version page]].",
"ok": "Ð¥Óаа",
- "retrievedfrom": "\"$1\" ÐÓÑвам",
+ "retrievedfrom": "Ð¥ÑаÑÑ â «$1»",
"youhavenewmessages": "ÐÐ°Ñ $1 ($2) дÓайийÑад",
"youhavenewmessagesmulti": "ÐÐ°Ñ $1ÑÑ ÐºÐµÑда Ñ
Ð¾Ð°Ð¼Ð°Ñ Ð´ÓайийÑад",
- "editsection": "Ñ
ÑвÑа",
+ "editsection": "нийÑде",
"editold": "Ñ
ÑвÑа",
"viewsourceold": "xÑайоагÓа кÑайлоÑг ÑÓа бÓаÑгÑаÑÑа",
"editlink": "Ñ
ÑвÑа",
- "viewsourcelink": "xÑайоагÓа кÑайлоÑг ÑÓа бÓаÑгÑаÑÑа",
- "editsectionhint": "ÐекÑам Ñ
ÑвÑа: $1",
+ "viewsourcelink": "Ð¥Ñажа дIÐ°Ð´Ð¾Ð»Ð°Ð»Ñ ÐºÐ¾Ìдага",
+ "editsectionhint": "ÐáкÑа Ñ
ÑвÑа: $1",
"toc": "ЧÑлоаÑам",
"showtoc": "Ñ
ÑаÑ
ÑокÑ
а",
"hidetoc": "кÑайладаккÑ
а",
@@ -269,7 +269,7 @@
"restorelink": "{{PLURAL:$1|1=д|адaÑккÑ
а Ñ
ÑвÑам|$1 д|адaÑккÑ
а Ñ
ÑвÑамаÑ}}",
"feedlinks": "Ð¦Ñ ÑайпаÑа:",
"site-rss-feed": "$1 RSS мÑгÓ",
- "site-atom-feed": "$1 Atom мÑгÓ",
+ "site-atom-feed": "$1 â Atom-мÑгI",
"page-rss-feed": "\"$1\" RSS мÑгÓ",
"page-atom-feed": "«$1» â Atom-мÑгI",
"red-link-title": "$1 (ÑкÑ
ÑайпаÑа оагÓÑв ÑÑ)",
@@ -277,12 +277,12 @@
"nstab-user": "ÐакÑалаÑÑаÑÑ
о",
"nstab-media": "ÐедиÑаг",
"nstab-special": "ÐÓÑлакÑ
а оагÓÑв",
- "nstab-project": "Ð¥ÑаÑ
оадайÑамаÑ
лаÑÑа",
- "nstab-image": "ÐаÑл",
+ "nstab-project": "ÐÑоекÑаÑ
лаÑÑа",
+ "nstab-image": "Файл",
"nstab-mediawiki": "Хоам",
- "nstab-template": "ЧIабал",
+ "nstab-template": "Ðеп",
"nstab-help": "ÐÓо",
- "nstab-category": "ÐаÑаг",
+ "nstab-category": "ÐаÑегоÑи",
"mainpage-nstab": "ÐеÑÑеÑа оагÓÑв",
"nosuchaction": "Ð¦Ñ ÑайпаÑа дÑлаÑÑ
Iам баÑ",
"nosuchspecialpage": "Ðзза мо гÓон оагÓÑв ÑÑ",
@@ -297,7 +297,7 @@
"internalerror_info": "ЧÑÑа гÓалаÑ: $1",
"cannotdelete-title": "ÐагIÑв дIаÑккÑ
а Ð¹Ð¸Ñ ÑÑ \"$1\"",
"badtitle": "ÐÐµÐ³Ð°Ñ Ð¹Ð¾Ð°Ñа ÑÓи",
- "badtitletext": "ÐеÑ
Ð°Ñ Ð´Ð¾Ð»Ð° оагÓÑвни ÑÓи, нийÑа ÑÑ, ÑÑÑÑа Ñ Ðµ меÑÑаÑкÑаÑа е маÑÑаÑкÑаÑа ÑÓи Ñ
аÑÑаÑ
Ñ Ñ. ЦÓеÑа ÑкÑе Ð¼ÐµÐ³Ð°Ñ Ð´Ð¾Ð°Ñа Ñ
аÑакÑÐ°Ñ Ð½Ð¸Ð¹Ñаденна Ñ
ила Ð¼ÐµÐ³Ð°Ñ Ð´Ð°.",
+ "badtitletext": "ÐÐ·Ð°Ñ Ð¹Ð¾Ð»Ð° оагÓÑва ÑÓи нийÑа ÑÑ, ÑÑÑÑа Ñ, е Ñ
аÑÑаÑ
Ñ Ñ Ð¼ÐµÑÑаÑкÑаÑа ÑIи е инÑеÑвики ÑÓи. ÐÑÑÑа, ÑÓеÑа ÑкÑе оÑÑаде Ð¼ÐµÐ³Ð°Ñ Ð´Ð¾Ð°Ñа Ñ
ÑаÑакÑÐ°Ñ Ð½Ð¸Ð¹Ñаденна Ñ
ила ÑаÑлÑÑ Ð´Ð°.",
"viewsource": "ÐIаÑгÑаÑÑам",
"actionthrottled": "СиÑ
ален овзамал",
"protectedpagetext": "ÐÑ Ð¾Ð°Ð³|Ñв кÑайла Ñ Ñ
ÑвÑÐ°Ð¼Ð°Ñ Ð´ÐµÑгдоаÑÐ°Ñ Ðµ кÑ
Ñ Ð´Ð¾Ð»Ð° Ñ
|амдаÑаÑ.",
@@ -320,7 +320,7 @@
"notloggedin": "ÐÐ°Ñ Ñоай ÑÓи Ñ
ÑааÑннадаÑ",
"nologin": "Ðеламе дIаÑÐ·Ð´Ð°Ñ Ð´Ð°Ñ? '''$1'''.",
"nologinlink": "Ðеламе дIаÑÐ·Ð´Ð°Ñ ÐºÑ
олла",
- "createaccount": "ÐеÑда дакÑалаÑÑаÑÑ
о кÑ
олла",
+ "createaccount": "УÑÑÑа ÑÐ·Ð´Ð°Ñ ÐºÑ
олла",
"gotaccount": "УкÑ
аза дÓаÑзабенна дий Ñо? '''$1'''.",
"gotaccountlink": "ЧÑвала/Ñла",
"userlogin-resetlink": "ЧÑвала/Ñла ÑÓии дIоагÓаи дийÑаденнадий?",
@@ -334,7 +334,8 @@
"emailconfirmlink": "ÐоаÑжален Ñ
оамни Ñ
ÑожадоÑг дIаÑIоагIаде",
"loginlanguagelabel": "ÐоÑÑ: $1",
"pt-login": "ЧÑвала/Ñла",
- "pt-createaccount": "ÐакÑалаÑÑаÑÑ
о кÑ
олла",
+ "pt-createaccount": "УÑÑÑа ÑÐ·Ð´Ð°Ñ ÐºÑ
олла",
+ "pt-userlogout": "ÐÑавала/Ñла",
"changepassword": "ÐÑайладIоaгIа дIаÑ
ÑвÑаÑ",
"oldpassword": "ÐÑаÑна кÑайладIоагÓа:",
"newpassword": "ÐеÑда кÑайладIоагÓа:",
@@ -348,7 +349,7 @@
"italic_sample": "ÐÑлга Ñздам",
"italic_tip": "ÐÑлга Ñздам",
"link_sample": "Óинка коÑÑале",
- "link_tip": "ЧÑÑаÓинк",
+ "link_tip": "ЧÑÑа Ñ
ÑожаÑÑг",
"extlink_sample": "Óинка коÑÑале http://www.example.com",
"extlink_tip": "ÐÑен Óинка (http:// ÑамагÓаÑ
дийÑа ма ле)",
"headline_sample": "ÐоÑÑален Ñздам",
@@ -356,7 +357,7 @@
"nowiki_sample": "УкÑ
аза кийÑаде Ð´ÐµÐ·Ð°Ñ Ð´Ð¾Ð°Ñа Ñздам оÑÑаде",
"nowiki_tip": "ÐаÑÑа-бÑÑÑамлоÑг ÑеÑкамза диÑа",
"image_tip": "ЧÑÑÑккÑ
а паÑла",
- "media_tip": "ÐаÑла Óинк",
+ "media_tip": "Файлан ÑIаÑ
ÑожаваÑ",
"sig_tip": "ШÑн кÑлгаÑÐ·Ð´Ð°Ñ Ð°, Ñ
ÓанзаÑа Ñ
а а",
"hr_tip": "ÐÑÑ
ала мÑÐ³Ó (Ð¼Ð¾Ð³Ð°Ñ ÑайпаÑа к|еззига Ñ
айÑаде)",
"summary": "Ð¥ÑвÑамий белгалдеÑ",
@@ -376,38 +377,38 @@
"loginreqpagetext": "ÐÑ
Ñйола оагÓÑвнаÑка Ñ
ÑожаÑгдолаÑ, Ð¾Ð°Ñ $1 де деза.",
"accmailtitle": "ÐÑайладIоагÓа дÓадаÑ
ÑийÑад",
"newarticle": "(KеÑда)",
- "newarticletext": "Шо йоаÑа оагÓÑв ÑÓа ÓинкаÑа деÑ
ÑадаÑннад.\nÐз Ñ
Ñае, кÓалÑ
агÓа доала коÑаÑÑ Ñздам оÑÑÑзаде (кÑ
еÑа Ñ
ала дале [$1 новкÑоÑÑала оагÓÑв ÑÓа] бÓаÑгÑаÑÑа).\nЦаÑ
Ð¾Ð²Ñ ÑкÑ
аза нийÑадена дале, ÑÑ
авала/Ñла ÑÑ
а ÑоÓобама ÑÓа пÓелга ÑоÓобе.",
- "noarticletext": "Ð¥Iанз ÑкÑ
оагÓÑв ÑÓа Ñздам доаÑÐ°Ñ Ð´Ð°.\n[[Special:Search/{{PAGENAME}}|ÑÑ ÑайпаÑа ÑÓи дÑвÑам коÑаде]] кÑ
Ñдола йоазÑваÑкаÑ
йийÑа Ñ ÑÑн, веÑÑа\n[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} ÑаÑа дола ÑапÑаÑий йоазÑв каÑае], е\n'''[{{fullurl:{{FULLPAGENAME}}|action=edit}} изза мо ÑÓи Ð¹Ð¾Ð»Ð°Ñ Ð¾Ð°Ð³ÓÑв ела]''' .",
+ "newarticletext": "Шо Ñ
ÑожаÑÑгаÑа деÑ
ÑадаÑннад йоаÑа оагÓÑв ÑÓа.\nÐз кÑ
оллаÑгÑÐ¹Ð¾Ð»Ð°Ñ ÐºÓалÑ
агÓа доала коÑаÑÑ ÑекÑÑ IоÑÑÑзаде (нагаÑ
Ñа кÑ
еÑаде Ñ
ала дале [$1 новкÑоÑÑалан оагÓÑвага] Ñ
Ñажа).\nЦа Ñ
Ð¾Ð²Ñ ÑкÑ
аза нийÑденнадале, Ñоай бÑаÑзеÑа кнопка '''ЮÑ
а''' ÑÓа пÓелга ÑоÓабе.",
+ "noarticletext": "Ð¥Iанз ÑкÑ
оагÓÑв ÑÓа ÑекÑÑ ÑÑ.\nШÑн аÑÑÑÑв ба [[Special:Search/{{PAGENAME}}|ÑÑ ÑайпаÑа ÑÓи Ñ
ÑоаÑÑ ÐºÐ¾Ñаде]] кÑ
Ñйола йоазÑÐ²Ð°Ñ ÑÑ, иÑÑÑа\n[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} ÑаÑа дола ÑепÑаÑий ÑздаÑÑаÑ], е\n'''[{{fullurl:{{FULLPAGENAME}}|action=edit}} изза мо ÑÓи Ð¹Ð¾Ð»Ð°Ñ Ð¾Ð°Ð³ÓÑв кÑ
олла]''' .",
"noarticletext-nopermission": "Ð¥Iанз ÑкÑ
оагÓÑв ÑÓа Ñздам даÑ.\nШÑн Ð¹Ð¸Ñ Ñ, кÑ
Ñдола йоазÑвнаÑкаÑ
[[Special:Search/{{PAGENAME}}|дола ÑÓеÑий Ñ
аÑÑам коÑае]] е [{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} нийÑамий ÑепÑаÑа йоазÑÐ²Ð½Ð°Ñ ÐºÐ¾Ñае]. ",
"note": "'''Ð¥ÓамоалаÑ:'''",
"previewnote": "'''Ð¥ÑалÑ
е б|аÑгÑаÑÑам маÑа баÑ.'''\nЯздам кÑ
Ñ ÑÐ·Ð´Ð°Ñ Ð´Ð°Ñ!",
- "editing": "ÐÓалаÑнийÑдаÑ: $1",
- "editingsection": "ÐIалаÑнийÑÐ´Ð°Ñ $1 (оагÓÑвдакÑа)",
+ "editing": "Ð¥ÑвÑам: $1",
+ "editingsection": "Ð¥ÑвÑам: $1 (оагÓÑва дáкÑа)",
"editingcomment": "ÐÓалаÑнийÑÐ´Ð°Ñ $1 (кеÑда декÑам)",
"editconflict": "ÐÓалаÑнийÑдаÑа кÑовÑам: $1",
"yourtext": "Ð¥Ñа Ñздам",
"copyrightwarning": "ТеÑкам бе, $2 ($1 Ñ
Ñажа) бокÑонаÑа лоÑадеÑ, ÑÓаÑ
Ñежама кÓала ÑллаÑ, Ð¾Ð°Ñ Ð¼ÐµÐ» ÑÑÑккÑ
Ð°Ñ Ð´Ð¾Ð»Ð° Ñ
оамаÑ, ÑÐ·Ð´Ð°Ð¼Ð°Ñ Ð´Ð¾Ð»Ð³Ð°.\nÐаггаÑ
Ñ Ñанна Ñоай ÑÐ·Ð´Ð°Ð¼Ð°Ñ Ð¿ÑÑам доаÑÐ°Ñ Ð¼Ð°Ð»Ð° волаÑÐ²Ñ Ñаго Ñ
ÑвÑа е кÑ
Ñ Ð´Ð¾Ð»Ð° моÑÑиге ÑздеÑдолаÑ, безам беÑи, ÑкÑ
аз ÓоÑÑÑаÑздеÑа, дикаÑгÓа да. \nÐÐ°Ñ Ð´Ð¾Ñ Ð»Ñ, Ð´Ð°Ñ Ð´Ð¾Ð»Ð° Ñ
ÑвÑама да волга/йолга, е Ð¾Ð°Ñ Ð¿ÑÑам Ð´Ð¾Ð»Ð°Ñ ÓоÑÑÑÐ·Ð´ÐµÑ Ð´Ð° кÑ
ÑÑеÑа меÑÑигаÑа Ñоай ÑздамаÑ/Ñ
оамаÑ.\n'''ЯздаÑÑ
ой бокÑоÑа лоÑÐ°Ð´ÐµÑ Ð´Ð¾Ð»Ð° Ñ
ÓамаÑ, ÑаÑа пÑÑам доаÑаÑ, ÓоÑÑмаÑзаде!'''",
"templatesused": "УкÑ
бÓаÑгоагÓÑвни оагÓÑв ÑÓа лелаÑÑ {{PLURAL:$1|1=ÐÑÑкеп|ÐÑÑкепаÑ}}:",
"templatesusedpreview": "Ð¥ÑалÑ
е бÓаÑгÑаÑÑама оагÓÑв ÑÓа Ð»ÐµÐ»Ð°Ð´ÐµÑ Ð´Ð¾Ð»Ð° {{PLURAL:$1|1=ÐÑÑкеп|ÐÑÑкепаÑ}}:",
- "template-protected": "(лоÑам лаÑÑа)",
+ "template-protected": "(лоÑÐ°Ð´Ð°Ñ Ð´Ð°)",
"template-semiprotected": "(дакÑа-лоÑам)",
"hiddencategories": "ÐÑ Ð¾Ð°Ð³ÓÑв ÑкÑ
{{PLURAL:$1|1=кÑайла ÑаÑегаÑа|кÑайла ÑаÑегаÑÑа}} дакÑа лоаÑа:",
"permissionserrorstext-withaction": "$2 де бокÑо ÑÑ {{PLURAL:$1|1=из баÑ
Ñан долаÑ|из баÑ
ÑÐ°Ð½Ð°Ñ Ð´Ð¾Ð»Ð°Ñ}}:",
"recreate-moveddeleted-warn": "'''Ðем бе! Шо Ñ
ÑалÑ
Ñ
е дIайоаккÑ
Ð°Ñ Ñ
инна оагÓÑв Ñ
Ñае гÓеÑÑа.'''\n\nÐ¥Ñажа, бокÑонÑаÑ
Ñ ÐµÐ·Ð°Ñ Ð¹Ð¾Ð»Ð³Ð°.\nÐÓалÑ
агIа ÑкÑ
оагÓÑви дÓадаккÑ
ами ÑÓи Ñ
ÑвÑами ÑепÑаÑÐ°Ñ Ñ
ÑекÑ
а да.",
- "moveddeleted-notice": "ÐÑ Ð¾Ð°Ð³ÓÑв дÓаÑÑккÑ
а Ñ
иннай.\nÐовкÑоÑÑала, кÓалÑ
а дÓадаккÑ
ама а Ñ
ÑвÑама а ÑепÑаÑаÑкеÑа нийÑама йоазÑÐ²Ð½Ð°Ñ Ñ
ÑаÑ
ÑекÑ
а Ñ.",
+ "moveddeleted-notice": "ÐÑ Ð¾Ð°Ð³ÓÑв дÓаÑккÑ
а Ñ
иннай.\nÐовкÑоÑÑала, кÓалÑ
а Ñ
ÑаÑ
ÑекÑ
а да дÓадаккÑ
ама а Ñ
ÑвÑама а ÑепÑаÑаÑкаÑа ÑздаÑаÑ.",
"log-fulllog": "ÐеÑÑига ÑапÑаÑа бÓаÑгÑаÑÑа",
"edit-conflict": "Ð¥ÑвÑамий кÑовÑам.",
"post-expand-template-inclusion-warning": "ÐембаккÑ
ам: жамIан ÑIÐ°Ð±Ð°Ð»Ð°Ñ ÑÑлоаÑа дÑÑÑам геÑÑаÑа доккÑ
а да.\nЦÑ
Ñадола ÑIÐ°Ð±Ð°Ð»Ð°Ñ ÑÑлоаÑалÑÑгдаÑ.",
"post-expand-template-inclusion-category": "ЧÑлоаÑа ÑIабала Ð¼ÐµÐ³Ð°Ñ Ð´Ð¾Ð»Ð° дÑÑÑам дÑкÑ
алена ÑÓеÑ
Ñайоала оагÓÑвнаÑ",
"post-expand-template-argument-warning": "Ðем бе! ÐÑ Ð¾Ð°Ð³ÓÑв ÑÐ°Ó ÐºÑÑкепа |аÑÐ»Ð´Ð¾Ñ Ð¼Ð°Ñа ÑÑлоаÑаÑ, ÑÑ
адаÑÑаÑа Ñел доккÑ
а дÑÑÑам йолаÑ.\nÐ¦Ñ ÑайпаÑа |аÑлдеÑÐ°Ñ ÓокÓаладаÑкÑ
а да.",
"post-expand-template-argument-category": "ÐÑÑкепий ÑеÑкамза |аÑлдеÑÐ°Ñ ÑÑлоаÑа оагÓÑвнаÑ",
- "viewpagelogs": "УкÑ
оагÓÑва ÑепÑаÑÐ°Ñ Ñ
ÑокÑ
а",
- "currentrev-asof": "$1 ÑÓа ÑггаÑа ÑÓеÑ
ÑаÑа доÑжам",
- "revisionasof": "$1 доÑжам",
+ "viewpagelogs": "УкÑ
оагÓон ÑепÑаÑÐ°Ñ Ñ
ÑокÑ
а",
+ "currentrev-asof": "ÑÓеÑ
Ñ
ÑаÑа веÑÑи $1",
+ "revisionasof": "ÐеÑÑи $1",
"revision-info": "$1; $2 Ñ
ÑвÑам",
- "previousrevision": "â XÑалÑ
йоаг|аÑаÑ",
+ "previousrevision": "â XÑалÑ
аÑÑа",
"nextrevision": "ТIеÑ
ÑайоагIаÑÐ°Ñ â",
- "currentrevisionlink": "Ðола доÑжам",
+ "currentrevisionlink": "Ð¥IанзаÑа веÑÑи",
"cur": "Ñ
Óанз.",
"next": "ÑÓеÑ
Ñ.",
"last": "Ñ
ÑалÑ
.",
@@ -422,7 +423,7 @@
"history-feed-title": "Ð¥ÑвÑамий иÑÑоÑи",
"history-feed-description": "УкÑ
оагÓÑви вики ÑÓа Ñ
ÑвÑамий иÑÑоÑи",
"history-feed-item-nocomment": "$1гÓаÑа $2гÓаÑÑ",
- "rev-delundel": "Ñ
ÑаÑ
ÑокÑ
а/кÑайлаÑÑккÑ
а",
+ "rev-delundel": "Ñ
ÑаÑ
ÑокÑ
а/кÑайлаÑккÑ
а",
"rev-showdeleted": "Ñ
ÑаÑ
ÑокÑ
а",
"revdelete-show-file-submit": "XÓаа",
"revdelete-radio-set": "ÐÑайла",
@@ -438,34 +439,34 @@
"mergehistory-empty": "ÐIаÑагIаÑоÑ
аÑа Ñ
ÑвÑÐ°Ð¼Ð°Ñ ÐºÐ¾ÑаÑÑ ÑÑ.",
"mergehistory-reason": "ÐаÑ
Ñан:",
"revertmerge": "ÐекÑа",
- "history-title": "\"$1\" â Ñ
ÑвÑамий иÑÑоÑи",
+ "history-title": "\"$1\" â Ñ
ÑвÑамай иÑÑоÑи",
"lineno": "ÐÑгI $1:",
"compareselectedversions": "Ð¥ÑаÑжа доÑжамаÑа ÑаÑона ÑIа Ñ
Ñажа",
"editundo": "ÑÑ
авала/Ñла",
- "searchresults": "ТоÑ
кама гIÑлакÑ
аÑ
илаÑ",
- "searchresults-title": "\"$1\" ÑоÑ
ка",
+ "searchresults": "ÐаÑ
Ð°Ñ ÑакÑ
Ð´Ð¾Ð°Ð»Ð°Ñ ÐºÐ¾ÑадаÑÑ",
+ "searchresults-title": "«$1» лаÑ
аÑ",
"notextmatches": "ÐагIÑвнаÑа Ñздамий вIаÑагIакÑ
еÑаÑÐ°Ñ Ð´Ð°Ñ",
"prevn": "{{PLURAL:$1|Ñ
ÑалÑ
йоагlÐ°Ñ $1|Ñ
ÑалÑ
йоагlаÑÐ°Ñ $1|Ñ
ÑалÑ
йоагlаÑÐ°Ñ $1}}",
- "nextn": "{{PLURAL:$1|ÑlеÑ
ÑайоагlÐ°Ñ $1|ÑlеÑ
ÑайоагlаÑÐ°Ñ $1|ÑlеÑ
ÑайоагlаÑÐ°Ñ $1}}",
+ "nextn": "{{PLURAL:$1|1=ÑIеÑ
ÑайоагIаÑ|ÑIеÑ
ÑайоагIаÑаÑ}} $1",
"prevn-title": "{{PLURAL:$1|1=$1 Ñ
ÑалÑ
аÑа йоазÑв|$1 Ñ
ÑалÑ
аÑа йоазÑвнаÑ}}",
"nextn-title": "{{PLURAL:$1|1=$1 ÑIеÑ
ÑаÑа йоазÑв|$1 ÑIеÑ
ÑаÑа йоазÑвнаÑ}}",
- "shown-title": "УкÑ
оагIÑвни $1 {{PLURAL:$1|1=йоазÑв|йоазÑвнаÑ}} Ñ
ÑаÑ
ÑокÑ
а",
+ "shown-title": "Ð¥ÑóкÑ
а $1 {{PLURAL:$1|Ð´Ð°Ñ Ð¹Ð¾Ð°Ð·Ð¾|Ð´Ð°Ñ Ð¹Ð¾Ð°Ð·Ð¾Ð½Ð°Ñ}} ÑкÑ
оáгIÑвна ÑIа",
"viewprevnext": "($1 {{int:pipe-separator}} $2) ($3) Ñ
Ñажа",
"searchmenu-exists": "'''УкÑ
маÑÑа-Ñ
ÑаÑ
ÑоадайÑÐ°Ð¼Ð°Ñ ÐµÑ Ð¾Ð°Ð³|Ñв \"[[:$1]]\" Ñ'''",
- "searchmenu-new": "'''УкÑ
\"[[:$1]]\" маÑÑа-Ñ
ÑаÑ
оадайÑÐ°Ð¼Ð°Ñ Ð¾Ð°Ð³IÑв Ñ
Ñае!'''",
- "searchprofile-articles": "Ðомлен оагIÑвнаÑ",
- "searchprofile-images": "ÐедиÑаг",
- "searchprofile-everything": "ÐаÑÑана",
- "searchprofile-advanced": "ШеÑа Ñ",
- "searchprofile-articles-tooltip": "$1ÑÑ Ð»Ð°Ñ
аÑ",
- "searchprofile-images-tooltip": "ÐаÑлий лаÑ
аÑ",
- "searchprofile-everything-tooltip": "ÐаÑÑадола оагIÑвний лаÑ
Ð°Ñ (дÑвÑама оагIÑÐ²Ð½Ð°Ñ ÑÑлоаÑаÑ)",
+ "searchmenu-new": "ÐÑ
олла оагIÑв «[[:$1]]» ÑкÑ
вики-пÑоекÑе! \n{{PLURAL:$2|0=|ÐÑÑÑа Ñ
Ñажа Ñ
Ñай лийÑ
а оагIÑвнага.|ÐÑÑÑа Ñ
Ñажа Ñ
Ñай лаÑ
аÑа Ñ
ÑаÑ
иннаÑаÑка.}}",
+ "searchprofile-articles": "ÐеÑÑеÑа оагIонаÑ",
+ "searchprofile-images": "ÐÑлÑÑимедиа",
+ "searchprofile-everything": "ÐаÑÑанаÑ
Ñа",
+ "searchprofile-advanced": "ШеÑдаÑ",
+ "searchprofile-articles-tooltip": "$1 ÑÑ Ð»Ð°Ñ
аÑ",
+ "searchprofile-images-tooltip": "Ð¤Ð°Ð¹Ð»Ð°Ñ Ð»Ð°Ñ
аÑ",
+ "searchprofile-everything-tooltip": "ÐаÑÑайола оагIÐ¾Ð½Ð°Ñ ÑIа лаÑ
Ð°Ñ (дÑвÑÐ°Ñ Ð¾ÑÑадаÑа оагIÐ¾Ð½Ð°Ñ ÑÑлоаÑаÑ)",
"searchprofile-advanced-tooltip": "IоÑÑÑзаÑÑ ÑIеÑаÑенаÑкаÑ
лаÑ
а",
"search-result-size": "$1 ({{PLURAL:$2|$2 доÑ|$2 деÑаÑ}})",
"search-result-category-size": "{{PLURAL:$1|1=$1 дакÑа|$1 дакÑаÑ}} ({{PLURAL:$2|1=$2 кIалÑаÑег|$2 кIалÑаÑегаÑ}}, {{PLURAL:$3|1=$3 паÑла|$3 паÑлий}})",
"search-redirect": "($1 деÑ
ÑаÑÑÑÑккÑ
аÑ)",
"search-section": " (дакÑа $1)",
- "search-suggest": "Iа лоÑ
Ð°Ñ Ð¸Ð· Ñ
ила мега: $1",
+ "search-suggest": "Ð¥Ñона ÑÑÐ°Ñ ÐµÑ Ñ
ила мега: $1",
"search-interwiki-caption": "ÐаÑгалон Ñ
ÑаÑ
ÑоадайÑамаÑ",
"search-interwiki-default": "$1 Ñ
ÑаÑ
иннаÑаÑ:",
"search-interwiki-more": "(кÑ
а)",
@@ -537,40 +538,44 @@
"right-createtalk": "дÑвÑама оагIÑвний Ñ
ÑакÑ
оллам",
"right-move": "ÐагIÑвний ÑIи Ñ
ÑвÑа",
"right-movefile": "ÐаÑлий ÑIи Ñ
ÑвÑа",
- "newuserlogpage": "ÐакÑалаÑÑаÑÑ
оÑий дIаÑзбeнна ÑапÑаÑ",
+ "newuserlogpage": "ÐоакÑаÑÑ
ой дIаÑÐ·Ð±Ð°Ñ ÑапÑаÑ",
"rightslog": "ÐакÑалаÑÑаÑÑ
оÑÑнна бокÑона ÑепÑаÑ",
"action-read": "УкÑ
оагIÑви деÑам",
"action-edit": "ÐÑ Ð¾Ð°Ð³IÑв Ñ
ÑвÑа",
"nchanges": "$1 {{PLURAL:$1|1=Ñ
ÑвÑам|Ñ
ÑвÑамаÑ}}",
- "enhancedrc-history": "ÐÑÑоÑи",
+ "enhancedrc-history": "иÑÑоÑи",
"recentchanges": "ÐеÑда Ñ
ÑвÑамаÑ",
"recentchanges-legend": "ÐеÑда Ñ
ÑвÑамий оÑÑамаÑ",
"recentchanges-summary": "ÐIалÑ
агIа лоаÑамий доаламе ÑIеÑ
ÑаÑа оагIÑвний Ñ
ÑвÑÐ°Ð¼Ð°Ñ Ð´IаÑÐ·Ð°Ð´Ð°Ñ Ð´Ð° {{grammar:genitive|{{SITENAME}}}}.",
"recentchanges-feed-description": "УкÑ
лаÑамÑа ÑIеÑ
ÑаÑа маÑÑаÑ
ÑвÑамаÑÑ ÑеÑкам бе.",
- "recentchanges-label-newpage": "УкÑ
Ñ
ÑвÑамаÑа кеÑда оагIÑв Ð´Ð°Ñ Ñ
иннад",
- "recentchanges-label-minor": "ÐIамига Ñ
ÑвÑам Ñ",
- "recentchanges-label-bot": "ÐÑ Ñ
ÑвÑам бIаÑаÑа ÑÑ Ðµ",
+ "recentchanges-label-newpage": "УкÑ
Ñ
ÑвÑамаÑа кеÑда оагIÑв кÑ
елла Ñ
иннай",
+ "recentchanges-label-minor": "ÐÑ Ð·Iамига Ñ
ÑвÑам ба",
+ "recentchanges-label-bot": "ÐÑ Ñ
ÑвÑам боÑаÑа Ð±Ð°Ñ Ð±Ð°",
"recentchanges-label-unpatrolled": "ÐÑ Ñ
ÑвÑам Ñий моÑÑиге кÑ
Ñ Ð´IадеÑ
ÑаÑÑккÑ
аÑÑ.",
+ "recentchanges-label-plusminus": "байÑаÑкаÑ
Ñ Ð±Ð¾Ð°Ñам Ñ
ÑвÑаÑ",
+ "recentchanges-legend-heading": "Ðегенда: ",
+ "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (Ñ
Ñажа иÑÑÑа [[Special:NewPages|кеÑда оагIÑвнаÑка]])",
"rcnotefrom": "ÐIалÑ
агIа Ñ
ÑвÑÐ°Ð¼Ð°Ñ Ñ
ÑаÑ
ÑекÑ
а Ñ $2 денза ($1 кÑ
аÑалÑа).",
"rclistfrom": "$3 $2 ÑIаÑа Ñ
ÑвÑÐ°Ð¼Ð°Ñ Ñ
ÑаÑ
ÑокÑ
а",
"rcshowhideminor": "$1 зIамига Ñ
ÑвÑамаÑ",
"rcshowhideminor-hide": "ÐÑайлдаккÑ
а",
"rcshowhidebots": "$1 боÑаÑ",
"rcshowhidebots-show": "Ð¥ÑаÑ
ÑокÑ
а",
- "rcshowhideliu": "ЧÑбаÑннаÑаÑа дакÑалаÑÑаÑÑ
оÑий $1",
+ "rcshowhideliu": "$1 бовзийÑаÑÑаÑа доакÑаÑÑ
ой",
"rcshowhideliu-hide": "ÐÑайлдаккÑ
а",
"rcshowhideanons": "$1 ÑIиÑÑккÑ
анза дакÑалаÑÑаÑÑ
ой",
+ "rcshowhideanons-show": "Ð¥ÑаÑ
ÑокÑ
а",
"rcshowhideanons-hide": "ÐÑайлдаккÑ
а",
"rcshowhidepatr": "$1 ÑеÑкам Ð´Ð°Ñ Ñ
ÑвÑамаÑ",
"rcshowhidemine": "$1 Ñай Ñ
ÑвÑамаÑ",
"rcshowhidemine-hide": "ÐÑайлдаккÑ
а",
"rclinks": "$2 динаÑ
$3 $1 Ñ
инна ÑIеÑ
ÑаÑа Ñ
ÑвÑÐ°Ð¼Ð°Ñ Ñ
ÑаÑ
ÑокÑ
а",
- "diff": "кÑ
Ñ.",
+ "diff": "баÑÑ
ало",
"hist": "иÑÑоÑи",
"hide": "ÐÑайлдаккÑ
а",
"show": "Ð¥ÑаÑ
ÑокÑ
а",
- "minoreditletter": "м",
- "newpageletter": "Ð",
+ "minoreditletter": "зI",
+ "newpageletter": "Ð",
"boteditletter": "б",
"rc_categories_any": "ÐоллагIа а",
"rc-change-size-new": "Ð¥ÑвÑам баÑннаÑÑл ÑÓеÑ
ÑагIа бола боаÑам: $1 {{PLURAL:$1|байÑ}}",
@@ -578,19 +583,19 @@
"rc-enhanced-hide": "Ðа даÑÑа ÑÑлоаÑÐ°Ð¼Ð°Ñ ÐºÑайладаккÑ
а",
"recentchangeslinked": "ÐаÑгалон Ñ
ÑвÑамаÑ",
"recentchangeslinked-feed": "ÐаÑгалон Ñ
ÑвÑамаÑ",
- "recentchangeslinked-toolbox": "ÐаÑгалон Ñ
ÑвÑамаÑ",
+ "recentchangeslinked-toolbox": "УкÑ
анÑа вIаÑагIдÑвзаденна Ñ
ÑвÑамаÑ",
"recentchangeslinked-title": "$1Ñа Ñ
ÑалаÑÑа Ñ
ÑвÑамаÑ",
"recentchangeslinked-summary": "ÐÑ, Iинк ÑÑ Ð¹Ð¾Ð»Ð° оагIÑв (е ÑкÑ
ÑаÑегаÑÑ ÑÑйоагIаÑаÑ), дÑкÑ
а Ñ
а йоаÑÐ°Ñ Ñ
ÑийÑа оагIÑвнаÑкий дагаÑле Ñ.\n[[Special:Watchlist|ШÑн ÑеÑкама дагаÑленаÑкаÑ
]] ÑÑйоагIа оагIÑÐ²Ð½Ð°Ñ '''белгалаÑÑ Ñ'''.",
"recentchangeslinked-page": "ÐагIÑва ÑIи",
"recentchangeslinked-to": "ÐагIÑÐ²Ð½Ð°Ñ ÑIа Ñ
ÑвÑÐ°Ð¼Ð°Ñ Ñ
ÑаÑ
ÑокÑ
а, Ñ
ÑаÑ
ÑекÑ
а йола оагIÑв ÑIа IÐ¸Ð½ÐºÐ°Ñ ÐµÑ Ð¹Ð¾Ð»Ð°.",
- "upload": "ÐаÑл ÑÑÑÑккÑ
а",
+ "upload": "Файл ÑÑÑккÑ
а",
"uploadbtn": "ÐаÑл ÑÑÑÑккÑ
а",
"uploadlogpage": "ЧÑÑÑккÑ
амий ÑепÑаÑ",
"filedesc": "ÐоаÑа лоаÑам",
"fileuploadsummary": "ÐоаÑа лоаÑам:",
"license": "ЦIийÑздаÑ",
"license-header": "ЦIийÑздаÑ",
- "imgfile": "паÑл",
+ "imgfile": "Ñайл",
"listfiles": "ÐаÑлий дагаÑÑе",
"listfiles_date": "ÐенÑ
а",
"listfiles_name": "ÐаÑла ÑIи",
@@ -598,23 +603,23 @@
"listfiles_size": "ÐÑÑÑам",
"listfiles_description": "ÐоаÑам",
"listfiles_count": "ÐоÑжамаÑ",
- "file-anchor-link": "ÐаÑл",
- "filehist": "ÐаÑла иÑÑоÑи",
- "filehist-help": "Ð¥ÑалÑ
е паÑла миÑÑа Ñ
иннай Ñ
ÑожаpгволаÑ/йолаÑ, денÑаÑÑаÑ
/ÑаÑ
ÑаÑа ÑIа пIелга ÑIообе.",
+ "file-anchor-link": "Файл",
+ "filehist": "Файлан иÑÑоÑи",
+ "filehist-help": "Ðнопка ÑаÑÑаÑ
Ñ/Ñ
а ÑоIае ÑÑ Ñ
ан Ñайл миÑÑа Ñ
иннай Ñ
ÑожаpгволаÑ/йолаÑ",
"filehist-revert": "ÑÑ
аÑÑккÑ
а",
"filehist-current": "xIанзаÑа",
- "filehist-datetime": "ÐенÑаÑÑаÑ
/Ха",
- "filehist-thumb": "ÐIамигаÑÑÑÑанÑе",
- "filehist-thumbtext": "$1 доÑжаме зIамигÑÑÑÑанÑoa",
- "filehist-user": "ÐакÑалаÑÑаÑÑ
о",
- "filehist-dimensions": "Ð¥Iамана дÑÑÑам",
+ "filehist-datetime": "ТаÑÑаÑ
Ñ/Ха",
+ "filehist-thumb": "ÐIамигаÑÑÑÑ",
+ "filehist-thumbtext": "ÐIамига ÑÑÑÑ ÑкÑ
веÑÑин $1",
+ "filehist-user": "ÐоакÑаÑÑ
о",
+ "filehist-dimensions": "Файлан боаÑам",
"filehist-filesize": "ÐаÑла ÑÑÑаÑал",
- "filehist-comment": "Ð¥IамоалаÑ",
- "imagelinks": "ÐаÑлий пайда ÑÑа",
- "linkstoimage": "{{PLURAL:$1|1=ТIеÑ
ÑайоагIа $1 оагIÑв Iинк дÑ|ТIеÑ
ÑайоагIа $1 оагIÑÐ²Ð½Ð°Ñ IÐ¸Ð½ÐºÐ°Ñ Ð´Ñ}} ÑкÑ
паÑла ÑIа:",
+ "filehist-comment": "ÐелгалдаккÑ
аÑ",
+ "imagelinks": "Файла пайда ÑÑаÑ",
+ "linkstoimage": "{{PLURAL:$1|1=ТIеÑ
ÑайоагIаÑа $1 оагIÑво ÑIаÑ
ÑожавÑ|ТIеÑ
ÑайоагIаÑа $1 оагIÑвнаÑа ÑIаÑ
ÑожавÑ}} ÑкÑ
Ñайла ÑIа:",
"nolinkstoimage": "Ðола паÑла ÑIа Iинк Ñ Ð¾Ð°Ð³IÑÐ²Ð½Ð°Ñ Ð´Ð°Ñ",
"sharedupload": "ÐÑ Ð¿Ð°Ñла $1ÑеÑа Ñ, кÑ
ÑÑа Ñ
ÑаÑ
ÑоадайÑамÑа Ñ
ÑаÑ
айÑаде йийÑÐ°Ð¹Ð¾Ð»Ð°Ñ Ñ.",
- "sharedupload-desc-here": "ÐÑ Ð¿Ð°Ñл $1ÑаÑа Ñ, кÑ
Ñдола Ñ
ÑаÑ
ÑоадайÑамаÑа Ñ
айÑамбе Ð¹Ð¸Ð¹Ñ Ð¹Ð¾Ð»Ð°Ñ Ð´Ð°.\nЦÑн [$2 лоаÑама оагIÑвÑа] лоаÑа маIÐ°Ð½Ð´Ð°Ñ ÐºIалÑ
агIа лаÑÑа.",
+ "sharedupload-desc-here": "ÐÑ Ñайл $1 ÑÑÑа Ñ, иÑÑÑа кÑ
Ñйола пÑоекÑÐ°Ñ ÑÑ Ð¿Ð°Ð¹Ð´Ð° ÑÑа аÑÑÑÑв Ð±Ð¾Ð»Ð°Ñ Ñ.\nЦÑн [$2 йоазонÑа ÑÑÑÑ Ð¾ÑÑадаÑа оагIон] инÑоÑмаÑи кIалÑ
аÑ
Ñ Ñ
ÑайоалаÑй.",
"uploadnewversion-linktext": "УкÑ
паÑлий кеÑда бIаÑа ÑÑÑÑккÑ
а",
"filerevert-comment": "ÐаÑ
Ñан:",
"filedelete-comment": "ÐаÑ
Ñан:",
@@ -622,7 +627,7 @@
"filedelete-reason-otherlist": "ÐÑ
Ñдола баÑ
Ñан",
"download": "Ñ
ÑаÑÑÑÑккÑ
а",
"unwatchedpages": "ТеÑкамза оагIÑвнаÑ",
- "randompage": "ÐагадоаÑа йоазÑв",
+ "randompage": "Ца Ñ
Ð¾Ð²Ñ Ð½Ð¸Ð¹ÑÑенна йоазÑв",
"statistics": "ÐагаÑа кÑÑ",
"statistics-pages": "ÐагIÑвнаÑ",
"brokenredirects-edit": "Ñ
ÑвÑа",
@@ -634,23 +639,24 @@
"shortpages": "ÐоаÑа оагIÑвнаÑ",
"longpages": "ÐоккÑ
ий оагIÑвнаÑ",
"usercreated": "{{GENDER:$3|ЧÑваÑннав|ЧÑÑÑннай}} $1 $2",
- "newpages": "ÐеÑда оагIÑвнаÑ",
+ "newpages": "ÐеÑда оагIонаÑ",
"move": "ЦIи Ñ
ÑвÑа",
"movethispage": "УкÑ
оагIÑва ÑIи Ñ
ÑвÑа",
"pager-newer-n": "{{PLURAL:$1|кеÑдагIа даÑа|кеÑдагIа даÑаÑ|кеÑдагIа долаÑаÑÑаÑ
Ñ}} $1",
"pager-older-n": "{{PLURAL:$1|кÑаÑнаÑа даÑа|кÑаÑнаÑа даÑаÑ|кÑаÑнаÑа долaÑаÑÑаÑ
Ñ}} $1",
- "booksources": "ÐиÑабий гIÑвам",
- "booksources-search-legend": "ÐиÑаба лоаÑа маIандаÑа ÑоÑ
кам",
+ "booksources": "Ðжейнай Ñ
ÑаÑÑÐ°Ñ (иÑÑоÑники)",
+ "booksources-search-legend": "ÐжейнаÑ
лаÑÑа Ñ
оам лаÑ
аÑ",
+ "booksources-search": "Ð¥ÑалáÑ
а",
"log": "ТепÑаÑаÑ",
"allpages": "ÐÑÑига оагIÑвнаÑ",
"prevpage": "($1) Ñ
ÑалÑ
аÑа оагIÑв",
"allpagesfrom": "Ð¦Ñ ÑайпаÑа Ñвлаж йола оагIÑÐ²Ð½Ð°Ñ Ð±ÐµÐ»Ð³Ð°Ð» е:",
"allpagesto": "УкÑ
оагIÑÐ²Ð½Ð°Ñ ÑIа бIаÑга диÑа:",
- "allarticles": "ÐÑÑига оагIÑвнаÑ",
+ "allarticles": "ÐÑÑига оагIонаÑ",
"allpagessubmit": "ÐÑ
оаÑаÑде",
- "categories": "ЦаÑегаÑ",
+ "categories": "ÐаÑегоÑеÑ",
"linksearch": "Т|еÑа|Ð¸Ð½ÐºÐ°Ñ Ð»Ð°Ñ
аÑ",
- "linksearch-ok": "ÐаÑ
а",
+ "linksearch-ok": "Ð¥ÑалáÑ
а",
"linksearch-line": "$1 ÑIа Iинк $2 ÑкÑеÑа",
"listgrouprights-members": "(Ñоабий дагаÑÑе)",
"emailuser": "ÐакÑалаÑÑаÑÑ
оÑоа д-Ñ
оамни:",
@@ -659,7 +665,7 @@
"watchlistfor2": "$1 $2 ÑаÑна",
"addedwatchtext": "\"[[:$1]]\" оагIÑв, ÑÑн [[Special:Watchlist|ÑеÑкама дагаÑÑкаÑ
Ñ]] ÑÑÑккÑ
а Ñ. \nТеÑ
ÑаÑа мел йола ÑкÑ
оагIÑвни Ñ
ÑвÑÐ°Ð¼Ð°Ñ ÑÑ Ð´Ð°Ð³Ð°ÑÑкаÑ
Ñ Ñ
оам Ð±ÐµÑ Ñ
ÑÑгÑÑ. ÐеÑÑа [[Special:RecentChanges|кеÑда Ñ
ÑвÑама дагаÑÑкаеÑ
Ñ]] Ñома кÑоалмаÑа Ñ
ÑакÑоаÑÑлÑÑ Ñ
ÑÑгÑÑ.",
"removedwatchtext": "\"[[:$1]]\" оагIÑв, ÑÑн [[Special:Watchlist|ÑеÑкама даÑагÑеÑа]] дIаÑккÑ
а Ñ
иннай.",
- "watch": "ТоÑ
кам бе",
+ "watch": "Ðе",
"watchthispage": "УкÑ
оагIÑва ÑеÑкам бе",
"unwatch": "ÐоÑа ма де",
"watchlist-details": "ШÑн ÑеÑкама дагаÑÑенгаÑ
Ñ Ð¹Ð¾Ð»Ð° $1 {{PLURAL:$1|1=оагIÑв|оагIÑвнаÑ}}, дÑвÑама оагIÑÐ²Ð½Ð°Ñ Ñа лоаÑÑ
IаÑ.",
@@ -672,12 +678,12 @@
"actioncomplete": "ÐÑлаÑÑ
Iам баÑб",
"actionfailed": "ÐÑÑам даÑдаÑ",
"deletedtext": "\"$1\" дIаÑÑккÑ
а Ñ
иннай.\nТIеÑ
ÑаÑа дIадаÑккÑ
а дагаÑÑена Ñ
ÑожаÑгволаÑ/Ñ
ÑожаÑгÑйолаÑ, $2 Ñ
Ñажа.",
- "dellogpage": "ÐIадаккÑ
аÑа ÑепÑаÑ",
+ "dellogpage": "ÐIадаккÑ
аÑай ÑепÑаÑ",
"deletecomment": "ÐаÑ
Ñан:",
"deleteotherreason": "ÐÑ
Ñдола баÑ
Ñан/ÑIаÑоÑ
аÑ:",
"deletereasonotherlist": "ÐÑ
Ñдола баÑ
Ñан",
- "rollbacklink": "ÑÑ
аÑÑккÑ
а",
- "protectlogpage": "ÐоÑама ÑепÑаÑ",
+ "rollbacklink": "ÑÑ
аÑккÑ
а",
+ "protectlogpage": "ÐоÑадаÑа ÑепÑаÑ",
"protectedarticle": "\"[[$1]]\" оагIÑв лоÑам деж Ñ",
"modifiedarticleprotection": "\"[[$1]]\" оагIÑвни лоÑама лагIа Ñ
ÑвÑаÑÑннай",
"protectcomment": "ÐаÑ
Ñан:",
@@ -702,17 +708,19 @@
"restriction-create": "ÐÑ
оллам",
"restriction-upload": "ЧÑдаккÑ
аÑ",
"undeletelink": "ÐIаÑгÑаÑÑа/ÑÑ
амеÑÑаоÑÑаде",
- "undeleteviewlink": "бIаÑгÑаÑÑа",
- "namespace": "ЦIеÑий аÑенаÑ",
- "invert": "Ð¥ÑаÑÐ¶Ð°Ñ ÑÑ
адаккÑ
а",
- "blanknamespace": "(ÐоÑÑа)",
- "contributions": "{{GENDER:$1|ÐакÑалаÑÑаÑÑ
оÑÑнна}} кÑаÑ
Ñегам",
+ "undeleteviewlink": "Ñ
Ñажа",
+ "undelete-search-submit": "Ð¥ÑалáÑ
а",
+ "namespace": "ЦIеÑий моÑÑ",
+ "invert": "ХаÑÐ¶Ð°Ñ ÑÑ
адаккÑ
а",
+ "namespace_association": "Ювзаенна моÑÑ",
+ "blanknamespace": "(ÐеÑÑеÑа)",
+ "contributions": "{{GENDER:$1|ÐоакÑаÑÑ
оÑÑнна}} кÑаÑ
Ñегам",
"contributions-title": "$1 дакÑалаÑÑаÑÑ
оÑÑнна кÑаÑ
Ñегам",
"mycontris": "Са кÑаÑ
Ñегам",
"contribsub2": "{{GENDER:$3|$1}} ($2) Ð±Ð°Ñ Ð±Ð¾Ð»Ñ
",
"uctop": "(xIанзаÑа)",
- "month": "ЦÑ
Ñа бÑÑÑ Ñ
ÑалÑ
агIа (кÑ
Ñ Ñ
ÑалÑ
агIа)",
- "year": "ЦÑ
Ñа ÑÑ Ñ
ÑалÑ
агIа (кÑ
Ñ Ñ
ÑалÑ
агIа):",
+ "month": "УкÑ
беÑÑ (кÑ
Ñ Ñ
ÑалÑ
агIа)",
+ "year": "УкÑ
ÑÐµÑ (кÑ
Ñ Ñ
ÑалÑ
агIа):",
"sp-contributions-newbies": "ÐеÑда даÑзÑÑ Ð¹Ð¾Ð°Ð·Ð¾Ð½Ð°ÑеÑа маÑа Ð±Ð°Ñ Ð±Ð¾Ð»Ð° кÑаÑ
Ñегам ма Ñ
ÑокÑ
а",
"sp-contributions-blocklog": "ÑIегаÑ",
"sp-contributions-uploads": "ÑÑÑÑккÑ
амаÑ",
@@ -721,18 +729,18 @@
"sp-contributions-search": "ÐÑаÑ
Ñегама лаÑ
аÑ",
"sp-contributions-username": "IP-моÑÑиг е ÑIи:",
"sp-contributions-toponly": "ТIеÑ
ÑаÑа доÑÐ¶Ð°Ð¼Ð°Ñ Ð»Ð¾Ð°ÑÑ
Ð°Ñ Ð´Ð¾Ð»Ð° Ñ
ÑвÑÐ°Ð¼Ð°Ñ Ð¼Ð°Ñа ма Ñ
ÑокÑ
а",
- "sp-contributions-submit": "Ð¥ÑалаÑ
а",
- "whatlinkshere": "IÐ¸Ð½ÐºÐ°Ñ ÑкÑ
аза",
+ "sp-contributions-submit": "Ð¥ÑалáÑ
а",
+ "whatlinkshere": "Ð¥ÑожаÑÑÐ³Ð°Ñ ÑкÑ
аза",
"whatlinkshere-title": "\"$1\" ÑIа IÐ¸Ð½ÐºÐ°Ñ ÐµÑ Ð¹Ð¾Ð»Ð° оагIÑвнаÑ",
"whatlinkshere-page": "ÐагIÑв",
- "linkshere": "ТIеÑ
ÑаÑа оагIÑÐ²Ð½Ð°Ñ '''[[:$1]]''' ÑIа IÐ¸Ð½ÐºÐ°Ñ Ñ:",
+ "linkshere": "ТIеÑ
ÑайоагIа оагIÑÐ²Ð½Ð°Ñ ÑIаÑ
ÑÐ¾Ð¶Ð°Ð²Ñ Â«'''[[:$1]]'''»:",
"nolinkshere": "'''[[:$1]]''' оагIÑв ÑIа, кÑ
Ñдола оагIÑваÑкаÑа IÐ¸Ð½ÐºÐ°Ñ Ð¹Ð¾Ð°ÑÐ°Ñ Ñ",
- "isredirect": "дIа-Ñ
Ñа оагIÑв",
- "istemplate": "ÑÑдаккÑ
аÑ",
- "isimage": "паÑла Iинк",
+ "isredirect": "ТIаÑ
ÑожадаÑан оагIÑв",
+ "istemplate": "ÑкÑейоалаÑÑ",
+ "isimage": "Файлан Ñ
ÑожаÑÑг",
"whatlinkshere-prev": "{{PLURAL:$1|1=Ñ
ÑалÑ
айоагIа|Ñ
ÑалÑ
айоагIаÑаÑ}} $1",
"whatlinkshere-next": "{{PLURAL:$1|1=ÑIеÑ
ÑайоагIа|ÑIеÑ
ÑайоагIаÑаÑ}} $1",
- "whatlinkshere-links": "â IинкаÑ",
+ "whatlinkshere-links": "â Ñ
ÑожаÑÑгаÑ",
"whatlinkshere-hideredirs": "$1 дIа-Ñ
Ñа ÑÑÑÑккÑ
амаÑ",
"whatlinkshere-hidetrans": "$1 ÑÑÑÑккÑ
амаÑ",
"whatlinkshere-hidelinks": "$1 IинкаÑ",
@@ -741,6 +749,7 @@
"blockip": "УкÑ
{{GENDER:$1|доакÑоÑÑ
оÑоа}} Ñ|ега бола",
"ipboptions": "2 ÑаÑ
ÑаÑ:2 hours,1 ди:1 day,3 ди:3 days,1 кIиÑа:1 week,2 кIиÑа:2 weeks,1 бÑÑÑ:1 month,3 бÑÑÑ:3 months,6 бÑÑÑ:6 months,1 ÑÑ:1 year,ÑиÑ
а Ñа лÑÑ:infinite",
"ipblocklist": "ЧIега бела дакÑалаÑÑаÑÑ
ой",
+ "ipblocklist-submit": "Ð¥ÑалáÑ
а",
"blocklink": "ÑIегa ÑоÑ
а",
"unblocklink": "ÑIега баÑÑа",
"change-blocklink": "ЧIегаÑоÑ
Ð°Ñ Ñ
ÑвÑа",
@@ -759,7 +768,7 @@
"movepage-moved": "'''\"$1\" оагÑв \"$2\" Ñ
ÑийÑа Ñ'''",
"articleexists": "Ðзза мо ÑIи йола оагIÑв, Ð¹Ð¾Ð»Ð°Ñ Ñ Ðµ Ð¾Ð°Ñ Ñила ÑIи Ð¼ÐµÐ³Ð°Ñ ÑÑ.\nÐеÑ
Ð°Ñ Ð´Ð°, кÑ
Ñйола ÑIи Ñ
ÑаÑжа.",
"movetalk": "ÐаIан ÑÑлоаÑа дÑвÑама оагIÑвни ÑIи Ñ
ÑвÑа",
- "movelogpage": "Ð¥ÑвÑама ÑепÑаÑ",
+ "movelogpage": "ЦIи Ñ
ÑвÑаÑа ÑепÑаÑ",
"movereason": "ÐаÑ
Ñан",
"revertmove": "ÑÑ
аÑÑккÑ
а",
"export": "ÐагIÑвий ÑÑ
ÑоÑÑам",
@@ -768,7 +777,7 @@
"allmessages-filter-all": "ÐеÑÑигаÑ",
"allmessages-language": "ÐоÑÑ:",
"allmessages-filter-submit": "ÐеÑ
Ñа гÓо",
- "thumbnail-more": "Ð¥ÑадоккÑ
аде",
+ "thumbnail-more": "ÐоккÑ
а де",
"thumbnail_error": "ÐIамигаÑÑÑÑанÑий кÑ
еллама гIалаÑ: $1",
"import-upload-filename": "ÐаÑлаÑIи:",
"tooltip-pt-userpage": "ÐакÑалаÑÑаÑÑ
оÑÑнна оагIÑв",
@@ -776,83 +785,89 @@
"tooltip-pt-preferences": "ШÑн оÑÑамаÑ",
"tooltip-pt-watchlist": "ÐоагIÑвна дагаÑле, Ñо бIаÑгалокÑ
Ð°Ñ Ð¹Ð¾Ð»Ð°",
"tooltip-pt-mycontris": "ШÑн Ñ
ÑвÑамаÑ",
- "tooltip-pt-login": "УкÑ
аза Ñ
Ñай ÑIи аÑле ÑÑвала/Ñла йиÑа Ñ, амма ÑÑÑаваÑлаÑа/ÑлаÑа Ñ
Iама а даÑ",
+ "tooltip-pt-login": "УкÑ
аза Ñ
Ñай ÑIи аÑле ÑÑвала/Ñла йиÑа Ñ, амма из паÑаз даÑ",
"tooltip-pt-logout": "ÐÑавала/Ñла",
- "tooltip-pt-createaccount": "Ð¥Ñа бокÑо Ñ Ð»Ð¾Ð°ÑÑ
Iама ÑÐ·Ð´Ð°Ñ ÐºÑ
елла ÑиÑÑема ÑÑ Ð²Ð°Ð»Ð°, амма декÑ
Ð°Ñ Ð´Ð¾Ð»Ð°Ñ Ð´Ð°Ñ Ð¸Ð·.",
- "tooltip-ca-talk": "ÐагIÑвна ÑÑлоаÑаме дÑвÑам",
- "tooltip-ca-edit": "Ð¥ÑвÑа ÐµÑ Ð¾Ð°Ð³IÑв",
- "tooltip-ca-addsection": "ÐеÑда декÑам Ñ
Ñаде",
+ "tooltip-pt-createaccount": "Ð¥Ñа бокÑо Ñ ÑÑÑÑа ÑÐ·Ð´Ð°Ñ ÐºÑ
елла ÑиÑÑема ÑÑ Ð²Ð°Ð»Ð°, амма паÑаз Ð´Ð¾Ð»Ð°Ñ Ð´Ð°Ñ Ð¸Ð·.",
+ "tooltip-ca-talk": "ÐагIон ÑÑлоаÑам дÑвÑа оÑÑадаÑ",
+ "tooltip-ca-edit": "ÐийÑÑе ÐµÑ Ð¾Ð°Ð³IÑв",
+ "tooltip-ca-addsection": "ÐеÑда дакÑа Ñ
Ñаде",
"tooltip-ca-viewsource": "ÐÑ Ð¾Ð°Ð³IÑв Ñ
ÑвÑамаÑ
лоÑаÑÑ Ñ, амма ÑÑн ÑÑнна гIÑвамага Ñ
Ñажа бокÑо Ñ.",
- "tooltip-ca-history": "УкÑ
оагIÑвни Ñ
ÑвÑама ÑапÑаÑ",
+ "tooltip-ca-history": "УкÑ
оагIон Ð´Ð°Ñ Ñ
ÑвÑÐ°Ð¼Ð°Ñ ÑIа дола ÑепÑаÑ",
"tooltip-ca-protect": "EÑ Ð¾Ð°Ð³IÑв лоÑае",
"tooltip-ca-delete": "ÐÑ Ð¾Ð°Ð³IÑв дIаÑÑкÑ
а",
- "tooltip-ca-move": "УкÑ
оагIÑва ÑIи Ñ
ÑвÑа",
- "tooltip-ca-watch": "ÐÑ Ð¾Ð°Ð³IÑв ÑеÑкам беÑа каÑÑ
аÑа ÑIа ÑIаÑÑккÑ
а",
+ "tooltip-ca-move": "УкÑ
оагIон ÑIи Ñ
ÑвÑа",
+ "tooltip-ca-watch": "ÐÑ Ð¾Ð°Ð³IÑв Ñ
Ñай ÑеÑкам беÑа каÑÑ
аÑа ÑIа ÑIаÑÑккÑ
а",
"tooltip-ca-unwatch": "ÐÑ Ð¾Ð°Ð³IÑв ÑеÑкам беÑа каÑÑ
аÑа ÑIаÑа дIаÑÑкÑ
а",
- "tooltip-search": "Ð¦Ñ ÑайпаÑа Ð´Ð¾Ñ Ð»Ð°Ñ
а {{SITENAME}}",
+ "tooltip-search": "Ð¥ÑалáÑ
а {{grammar:prepositional|{{SITENAME}}}} ÑÑ",
"tooltip-search-go": "Ðзза мо ÑÓи Ð¹Ð¾Ð»Ð°Ñ Ð¾Ð°Ð³ÓÑв ÑÓa деÑ
Ñавала",
- "tooltip-search-fulltext": "Ðзза мо Ñздам Ð´Ð¾Ð»Ð°Ñ Ð¾Ð°Ð³ÓÑÐ²Ð½Ð°Ñ Ð»Ð°Ñ
а",
+ "tooltip-search-fulltext": "Ðзза мо ÑÐ·Ð´Ð°Ñ Ð´Ð¾Ð»Ð°Ñ Ð¾Ð°Ð³ÓÑÐ²Ð½Ð°Ñ Ð»Ð°Ñ
а",
"tooltip-p-logo": "ÐеÑÑеÑа оагIÑв ÑIа деÑ
Ñавала",
"tooltip-n-mainpage": "ÐеÑÑеÑа оагIÑв ÑIа деÑ
Ñавала",
"tooltip-n-mainpage-description": "ÐеÑÑеÑа оагIÑв ÑIа деÑ
Ñавала",
- "tooltip-n-portal": "Ð¥ÑаÑ
ÑоадайÑамаÑ
Ñ Ð»Ð°ÑÑа, Ñ
Ñа де йиÑдаÑ, ÑÑ Ð° миÑÑа а йоала",
- "tooltip-n-currentevents": "Ð¥IанзаÑа Ñ
оаман дагаÑле",
- "tooltip-n-recentchanges": "ТÓеÑ
ÑаÑа Ñ
ÑвÑамий дагаÑÑе",
- "tooltip-n-randompage": "Ðе йоаÑа оагÓÑв ела",
- "tooltip-n-help": "ÐовкÑоÑÑала моÑÑиг",
- "tooltip-t-whatlinkshere": "ÐаÑÑайола оагIÑвий дагаÑле, ÑкÑ
оагIÑв ÑIа IÐ¸Ð½ÐºÐ°Ñ Ð»ÑÑ Ð¹Ð¾Ð»Ð°",
- "tooltip-t-recentchangeslinked": "ÐагIÑÐ²Ð½Ð°Ñ ÑIа ÑIеÑ
ÑаÑа Ñ
ÑвÑамаÑ, ÑкÑ
оагIÑвнеÑа Iинк ÑÑ Ð¹Ð¾Ð»Ð°",
+ "tooltip-n-portal": "ÐIалгIай ÐикипедеÑ
лаÑÑа Ð´Ð°Ñ Ð°, ÑкÑ
аза де Ð¼ÐµÐ³Ð°Ñ Ð´Ð°Ñ Ð°, малагIа ÑÑд а, миÑа да а",
+ "tooltip-n-currentevents": "Ð¥IанзаÑа Ñ
инна Ñ
IамаÑ
бола Ñ
оам",
+ "tooltip-n-recentchanges": "ТÓеÑ
Ñ
ÑаÑа Ñ
ÑвÑамай ÑпиÑок",
+ "tooltip-n-randompage": "ÐаÑÑ
ало йоаÑа Ñа Ñ
Ð¾Ð²Ñ Ð½Ð¸Ð¹ÑÑенна оагÓÑв Ñ
Ñаела",
+ "tooltip-n-help": "ÐовкÑоÑÑал лаÑ
а Ð¼ÐµÐ³Ð°Ñ Ð¹Ð¾Ð»Ð° моÑÑиг",
+ "tooltip-t-whatlinkshere": "УкÑ
аза ÑIаÑ
ÑÐ¾Ð¶Ð°Ð²ÐµÑ Ð¹Ð¾Ð»Ð° оагIонай ÑпиÑок",
+ "tooltip-t-recentchangeslinked": "УкÑ
оагIÑво ÑIаÑ
ÑÐ¾Ð¶Ð°Ð²ÐµÑ Ð¹Ð¾Ð»Ñа оагIонай ÑIеÑ
Ñ
ÑаÑа Ñ
ÑвÑамаÑ",
"tooltip-feed-rss": "УкÑ
оагIÑвна RSSÑÑ Ð³Ð¾Ð¹ÑаÑ",
"tooltip-feed-atom": "УкÑ
оаг|Ñвна AtomÑÑ Ð³Ð¾Ð¹ÑаÑ",
- "tooltip-t-contributions": "УкÑ
дакÑалаÑÑаÑÑ
оÑÑ Ñ
ÑийÑа йола оагIÑÐ²Ð½Ð°Ñ Ñ
ÑаÑ
ÑокÑ
а",
+ "tooltip-t-contributions": "{{GENDER:$1|УкÑ
доакÑаÑÑ
оÑо Ñ
ийÑа}} йола оагIÑвнаÑ",
"tooltip-t-emailuser": "УкÑ
дакÑалаÑÑаÑÑ
оÑоа зIÑ ÑÑ
ÑийÑа",
- "tooltip-t-upload": "ÐаÑÐ»Ð°Ñ ÑÑÑÑккÑ
а",
- "tooltip-t-specialpages": "ÐIÑлакÑ
а оагIÑвний дагаÑÑe",
- "tooltip-t-print": "УкÑ
оаÑгIÑвна каÑÑ
аÑзаÑбане доÑжам",
- "tooltip-t-permalink": "УкÑ
оагIÑв доÑжама даим лаÑÑа Iинк",
- "tooltip-ca-nstab-main": "ÐоазÑва ÑÑлоаÑам",
+ "tooltip-t-upload": "Ð¤Ð°Ð¹Ð»Ð°Ñ ÑÑÑккÑ
а",
+ "tooltip-t-specialpages": "ÐIÑлакÑ
а оагIÑвнаÑ",
+ "tooltip-t-print": "УкÑ
оагIон заÑба ÑоÑ
аÑа веÑÑи",
+ "tooltip-t-permalink": "ÐагIон ÑкÑ
веÑÑин ÑIаÑ
ÑÐ¾Ð¶Ð°Ð²ÐµÑ Ð¹Ð¾Ð»Ð° даим лаÑÑÐ°Ñ Ð¹Ð¾Ð»Ð° Ñ
ÑожаÑÑг",
+ "tooltip-ca-nstab-main": "ÐагIон ÑÑÑадаÑ",
"tooltip-ca-nstab-user": "ÐакÑалаÑÑаÑÑ
оÑÑнна Ñий оагIÑв",
- "tooltip-ca-nstab-special": "ÐÑ Ð³IÑлакÑ
а оагIÑв Ñ, из Ñ
ÑвÑа Ñ
Ñо бокÑо Ð¹Ð¾Ð»Ð°Ñ Ð²Ð°Ñ/ÑÑ.",
- "tooltip-ca-nstab-project": "Ð¥ÑаÑ
ÑоадайÑама оагIÑв",
- "tooltip-ca-nstab-image": "ÐаÑла оагIÑв",
- "tooltip-ca-nstab-template": "ЧIабала оагIÑв",
- "tooltip-ca-nstab-help": "ÐÓона оагIÑв",
- "tooltip-ca-nstab-category": "ЦаÑега оагIÑв",
+ "tooltip-ca-nstab-special": "ÐÑ Ð³IÑлакÑ
а оагIÑв Ñ, из Ñ
ÑвÑа бокÑо ÑÑ",
+ "tooltip-ca-nstab-project": "ÐÑоекÑан оагIÑв",
+ "tooltip-ca-nstab-image": "Файлан оагÓÑв",
+ "tooltip-ca-nstab-template": "Ðепан оагIÑв",
+ "tooltip-ca-nstab-help": "ÐÓон оагIÑв",
+ "tooltip-ca-nstab-category": "ÐаÑегоÑий оагÓÑв",
"tooltip-minoredit": "ÐÑ Ñ
ÑвÑÐ°Ñ Ð±Ð°ÑÑ
а доаÑа Ñанна белгалде",
"tooltip-save": "Ð¥ÑвÑÐ°Ð¼Ð°Ñ ÐºÑ
оде",
"tooltip-preview": "ÐагIÑв ÑIа Ñ
ÑалÑ
е бIаÑгÑаÑÑаÑ, деÑ
Ð°Ñ Ð´Ð°, оагIÑв дIаÑзÑелаÑÑ
, ÑÑн ÑеÑкам бе.",
"tooltip-diff": "Яздам ÑIа ÑÑ Ð¹Ð¾Ð»Ð° Ñ
ÑвÑÐ°Ð¼Ð°Ñ Ñ
ÑаÑ
ÑокÑ
а",
"tooltip-compareselectedversions": "УкÑ
оагIÑвни Ñин доÑÐ¶Ð°Ð¼Ð°Ñ ÑIа ÑкÑеÑа Ñ
ÑвÑÐ°Ð¼Ð°Ñ Ð·Ðµ.",
"tooltip-watch": "ÐÑ Ð¾Ð°Ð³IÑв ÑеÑкам беÑа каÑÑ
аÑа ÑIа ÑÑкÑ
а",
- "tooltip-rollback": "ÐIалaÑнийÑадаÑо ÑIеÑ
ÑаÑа ÑÑ Ð¹Ð¾Ð»Ð° Ñ
ÑвÑамаÑ, пIелг ÑоIобе дIаÑÑккÑ
а.",
- "tooltip-undo": "ÐÐ°Ñ Ñ
ÑвÑам дIабаÑккÑ
e, бIаÑгаÑаÑÑам Ñ
ÑаÑ
ÑокÑ
а, каÑа дале, дIаÑÑккÑ
а баÑ
Ñан IоÑÑÑзаде моÑÑигаÑа.",
+ "tooltip-rollback": "ЦкÑа пIелг ÑоIабе дIадаккÑ
а ÑIеÑ
ÑаÑа ÑедакÑоÑÐ°Ñ Ð´Ð°Ñ Ñ
ÑвÑамаÑ",
+ "tooltip-undo": "ÐÐ°Ñ Ñ
ÑвÑÐ°Ñ Ð´IадаÑккÑ
а, Ñ
ÑалÑ
Ñ
е Ñ
ÑÐ°Ð¶Ð°Ñ Ñ
ÑаÑ
ÑокÑ
а, дIадаккÑ
аÑа баÑ
Ñан IоÑÑÑзаде аÑÑÑÑв болаÑ.",
"tooltip-summary": "ÐоаÑа ÑÑлоаÑам IоÑÑÑзаде",
"pageinfo-toolboxlink": "ÐагIонаÑ
бола Ñ
оам",
- "previousdiff": "â Ð¥ÑалÑ
аÑа Ñ
ÑвÑам",
- "nextdiff": "ТIайоагIа Ñ
ÑвÑам",
- "file-info-size": "$1 à $2 ÑиÑ
Ñам, паÑла дÑÑÑам: $3, MIME-Ñайп: $4",
- "file-nohires": "УкÑ
ал доккÑ
агIа доÑжам даÑ",
- "svg-long-desc": "SVG-паÑл, $1 à $2 ÑиÑ
елаÑÑа, паÑла дÑÑÑам: $3",
- "show-big-image": "Ð¥ÑалÑ
агIаÑа ÑÑÑÑ",
+ "previousdiff": "â Ð¥ÑалÑ
аÑа нийÑдаÑ",
+ "nextdiff": "ТIайоагIа нийÑÑаÑ",
+ "file-info-size": "$1 à $2 {{PLURAL:$2|пикÑелÑ}}, Ñайлан боаÑам: $3, MIME-Ñайпа: $4",
+ "file-nohires": "УкÑ
ал дÑккÑ
агIа доккÑ
ал Ð´Ð¾Ð»Ð°Ñ Ð²ÐµÑÑи ÑÑ",
+ "svg-long-desc": "SVG-Ñайл, номиналÑно $1 à $2 {{PLURAL:$2|пикÑелÑ}}, Ñайлан боаÑам: $3",
+ "show-big-image": "ÐIÐ°Ð´Ð¾Ð»Ð°Ð»Ñ Ñайл",
"show-big-image-size": "$1 à $2 пикÑелÑ",
"noimages": "СÑÑÑaÑ Ð±IаÑгагÑÑ Ð´Ð°Ñ.",
- "ilsubmit": "ÐаÑ
а",
+ "ilsubmit": "Ð¥ÑалáÑ
а",
"bad_image_list": "ÐÑÑÑам ÑÑ ÑайпаÑа Ñ
ила беза:\n\nÐагаÑлен Ñ
ÑаÑакÑÐ°Ñ Ð¼Ð°Ñа лоаÑÑ
|Ð°Ñ Ñ
ÑÑгÑÑÑ (ÑкÑ
ÑамагIалгаÑa * дÑвлаÑÐ´Ñ Ð¼ÑгIаÑаÑ).\nÐÑгIаÑен Ñ
ÑалÑ
аÑа Iинк, ÑÑÑÑ IоÑÑае пÑÑам доаÑа Iинка, Ñ
ила еза. \nÐ¦Ñ Ð¼ÑгIаÑа ÑIеÑ
ÑайоагIа IинкаÑ, аÑадаккÑ
Ð°Ñ Ð¼Ð¾ лоаÑÑ
|Ð°Ñ Ñ
ÑÑгÑÑ, веÑÑа аÑлÑа, йоазÑваÑка ÑÑIоÑÑаде Ð¼ÐµÐ³Ð°Ñ Ð´Ð¾Ð»Ð° ÑÑÑÑ Ñанна лаÑÑ
|а мега.",
- "metadata": "ÐеÑаÑ
IамаÑ",
+ "metadata": "ÐеÑаÑ
оамаÑ",
"metadata-help": "ÐаÑÐ»Ð°Ñ ÑÑлоаÑа, кÑ
Ñдола Ñ
IамаÑ, ÑаÑÑаÑ
Ñа ÑÑÑÑдоакÑ
аÑгÑа е ÑIагIолладоакÑ
аÑгÑа ÑÑдакÑ
Ð°Ñ Ð´Ð¾Ð»Ð°. Ð¥ÑаÑÑ Ð¿Ð°Ñл, гIалаÑаÑ
Ñ Ð¼ÑкÑадаÑкÑ
а Ñ
инна дале, Ñ
ÑаÑ
ÑокÑ
Ð°Ñ Ð´Ð¾Ð»Ð° ÑÑÑÑ, деÑÑига Ñ
IÐ°Ð¼Ð°Ñ ÑÑлоаÑаÑгдаÑ.",
"metadata-expand": "ÐÑ
Ñдола Ñ
IÐ°Ð¼Ð°Ñ Ñ
ÑаÑ
ÑокÑ
а",
"metadata-collapse": "ÐÑ
Ñдола Ñ
IÐ°Ð¼Ð°Ñ ÐºÑайладаккÑ
а",
- "metadata-fields": "УкÑ
дагаÑÑенгаÑ
Ñ Ð´Ð°Ð³aÑÐ°Ð´Ð°Ñ Ð¼ÐµÑаÑ
IамаÑа ÑÑÑÑий мÑгIаÑ, ÑÑÑÑ Ð¾Ð°Ð³IÑв ÑIа Ñ
ÑаÑ
ÑекÑ
а Ñ
ÑÑгÑÑ, ÑÑеÑзaÑÑ Ð¼ÐµÑаÑ
IамаÑийÑа. Ðож мÑгIÐ°Ð½Ð°Ñ Ñ
а Ð¹Ð¾Ð°Ð»Ð°Ñ ÐºÑайла Ñ
ÑÑгÑÑ.\n* make\n* model\n* datetimeoriginal\n* exposuretime\n* fnumber\n* isospeedratings\n* focallength\n* artist\n* copyright\n* imagedescription\n* gpslatitude\n* gpslongitude\n* gpsaltitude",
+ "metadata-fields": "УкÑ
ÑпиÑке дагaÑÐ°Ð´Ð°Ñ ÑÑÑÑай меÑаÑ
оамай йиÑÑоÑ, Ñ
ÑаÑ
ÑекÑ
а Ñ
ÑÑгда ÑÑÑÑан оагIон ÑIа, меÑаÑ
оамай ÑаблиÑа Ñ
ÑоаÑÑÐ°Ñ Ð¹Ð¾Ð»Ð°Ñ. ЮÑ
едиÑа йиÑÑÐ¾Ñ ÐºÑайла Ñ
ÑÑгда.\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-imagedescription": "СÑÑÑа ÑIи",
+ "exif-model": "ÐамеÑа моделÑ",
+ "exif-software": "ÐÑогÑаммни IалаÑдаÑ",
"exif-artist": "ЯздаÑÑ
о",
+ "exif-exifversion": "ÐеÑÑи Exif",
"exif-colorspace": "ÐаÑаÑа аÑе",
- "exif-pixelydimension": "СÑÑÑа ÑеÑал",
- "exif-pixelxdimension": "СÑÑÑа лакÑ
ал",
+ "exif-pixelxdimension": "СÑÑÑа ÑеÑал",
+ "exif-pixelydimension": "СÑÑÑа лакÑ
ал",
+ "exif-datetimedigitized": "ÐÑиÑÑовк ÑÑ ÑаÑÑаÑ
Ñ Ð°, Ñ
а а",
"exif-writer": "Яздама да",
"exif-languagecode": "ÐоÑÑ",
"exif-iimcategory": "ЦаÑег",
+ "exif-orientation-1": "гIаÑÑ
Ñа",
"exif-scenecapturetype-1": "ÐаÑÑÑабIаÑа",
"exif-scenecapturetype-2": "СÑÑÑ",
"exif-iimcategory-edu": "ÐеÑаÑ",
@@ -880,13 +895,13 @@
"version-version": "($1)",
"version-software-version": "ÐоÑжам",
"fileduplicatesearch-filename": "ÐаÑлаÑIи:",
- "fileduplicatesearch-submit": "ÐаÑ
а",
- "specialpages": "ÐIÑлакÑ
ий оагIÑвнаÑ",
+ "fileduplicatesearch-submit": "Ð¥ÑалáÑ
а",
+ "specialpages": "ÐаÑÑÑ
Ñ
Iа йола оагIÑвнаÑ",
"specialpages-group-users": "ÐакÑалаÑÑаÑÑ
ой, ÑаÑа бокÑо",
"specialpages-group-pages": "ÐагIÑвний дагаÑÑенаÑ",
"specialpages-group-pagetools": "ÐагIÑвнаÑа гIиÑÑаÑ",
"external_image_whitelist": "#ÐÑ Ð¼ÑгI Ñий Ð´Ð¾Ð»Ð°Ñ ÑайпаÑа диÑа\n#ÐаÑÑ-каÑÑа Ð¾Ð°Ð»Ð°Ð¼Ð°Ñ ÑкÑ
аза дIаÑзаде(ÑкÑе дола дакÑа //)\n#аÑаÑа ÑÑÑÑий URLÑа дIанийÑалÑÑгда ÑÑ.\n#Ðайдан дола, ÑÑÑÑÐ°Ñ Ð¼Ð¾ Ñ
ÑаÑ
ÑекÑ
а Ñ
ÑÑгÑÑ, даÑ
IодаÑаÑ, ÑÑÑÑа ÑIа IÐ¸Ð½ÐºÐ°Ñ Ð¼Ð¾ Ñ
ÑpгÑÑ Ñ
ÑаÑ
ÑекÑ
а.\n#УкÑ
# ÑамагIалгаÑа дIадÑÐ²Ð»Ð°Ñ Ð´Ð¾Ð»Ð° мÑгIанаÑ, оалам мо лоаÑÑ
Ð°Ñ Ð´Ð°.\n#ÐÑгIÐ°Ð½Ð°Ñ ÑздaÑакÑ
а каÑда да\n\n#ÐаÑÑ-каÑÑа Ð¾Ð°Ð»Ð°Ð¼Ð°Ñ ÑкÑ
мÑгIа лакÑ
е дIаÑзаде. Ðз мÑгI Ñий Ð´Ð¾Ð»Ð°Ñ ÑайпаÑа диÑа ",
- "tag-filter": "[[Special:Tags|Ðоазоний]] ÑIенаÑÑг:",
+ "tag-filter": "[[Special:Tags|белгалонай]] лÑÑÑаÑг:",
"tag-filter-submit": "ЦIенÑе",
"tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1|1=Ðелгало|ÐелгалонаÑ}}]]: $2)",
"tags-title": "ÐоазонаÑ",
@@ -901,9 +916,11 @@
"htmlform-submit": "ÐIадаÑ
ÑийÑа",
"htmlform-reset": "Ð¥ÑвÑÐ°Ð¼Ð°Ñ ÑÑ
адаккÑ
а",
"htmlform-selectorother-other": "ÐÑ
Ñдола",
+ "logentry-delete-delete": "$1 {{GENDER:$2|дIаÑккÑ
ай}} оагIÑв $3",
+ "logentry-newusers-create": "{{GENDER:$2|ÐоакÑаÑÑ
оÑо кÑ
еллай}} ÑÑÑÑа ÑÐ·Ð´Ð°Ñ $1",
"rightsnone": "(а)",
"revdelete-summary": "Ñ
ÑвÑамий лоаÑам",
- "searchsuggest-search": "ÐаÑ
а",
+ "searchsuggest-search": "ÐаÑ
аÑ",
"special-characters-group-latin": "ÐаÑÑмий",
"special-characters-group-greek": "ÐжелÑий",
"special-characters-group-cyrillic": "ЦÑÑилиÑий",
diff --git a/languages/i18n/is.json b/languages/i18n/is.json
index a6bcb250f4..8e3c46f523 100644
--- a/languages/i18n/is.json
+++ b/languages/i18n/is.json
@@ -23,7 +23,8 @@
"Jonbg",
"Matma Rex",
"Xð",
- "Sveinki"
+ "Sveinki",
+ "Nemo bis"
]
},
"tog-underline": "Undirstrika tengla:",
@@ -1256,7 +1257,7 @@
"recentchangeslinked-page": "SÃðutitill:",
"recentchangeslinked-to": "Sýna breytingar á sÃðum sem tengjast uppgefinni sÃðu à staðinn",
"recentchanges-page-added-to-category": "[[:$1]] bætt við flokk",
- "recentchanges-page-added-to-category-bundled": "[[:$1]] og $2 {{PLURAL:$2|sÃðu|sÃðum}} bætt við flokk",
+ "recentchanges-page-added-to-category-bundled": "[[:$1]] og $2 [[Special:WhatLinksHere/$1|{{PLURAL:$2|sÃðu|sÃðum}}]] bætt við flokk",
"recentchanges-page-removed-from-category": "[[:$1]] fjarlægð úr flokki",
"recentchanges-page-removed-from-category-bundled": "[[:$1]] og $2 {{PLURAL:$2|sÃðu|sÃðum}} fjarlægð úr flokki",
"autochange-username": "Sjálfvirk MediaWiki-breyting",
@@ -1728,8 +1729,6 @@
"categories-submit": "Birta",
"categoriespagetext": "Eftirfarandi {{PLURAL:$1|flokkur inniheldur|flokkar innihalda}} sÃður eða skrár.\n[[Special:UnusedCategories|Ãnotaðir flokkar]] birtast ekki hér.\nSjá einnig [[Special:WantedCategories|eftirsótta flokka]].",
"categoriesfrom": "Sýna flokka frá:",
- "special-categories-sort-count": "raða eftir fjölda",
- "special-categories-sort-abc": "raða à stafrófsröð",
"deletedcontributions": "Eyddar breytingar notanda",
"deletedcontributions-title": "Eyddar breytingar notanda",
"sp-deletedcontributions-contribs": "Framlög",
@@ -2321,11 +2320,7 @@
"import-logentry-upload-detail": "$1 {{PLURAL:$1|breyting flutt|breytingar fluttar}} inn",
"import-logentry-interwiki-detail": "$1 {{PLURAL:$1|breyting flutt|breytingar fluttar}} inn frá $2",
"javascripttest": "JavaScript prófun",
- "javascripttest-pagetext-noframework": "Ãessi sÃða er frátekin fyrir JavaScript prófanir.",
- "javascripttest-pagetext-unknownframework": "Ãþekktur prófunarrammi â$1â.",
"javascripttest-pagetext-unknownaction": "Ãþekkt aðgerð \"$1\".",
- "javascripttest-pagetext-frameworks": "Veldu einn eftirtalinna prófunarramma: $1",
- "javascripttest-pagetext-skins": "Veldu skinn til að keyra prófanirnar á:",
"javascripttest-qunit-intro": "Sjá [$1 tilraunaskjölun] á mediawiki.org.",
"tooltip-pt-userpage": "NotandasÃðan þÃn",
"tooltip-pt-anonuserpage": "NotandasÃðan fyrir vistfangið þitt",
@@ -2602,8 +2597,8 @@
"exif-colorspace": "Litrýmd",
"exif-componentsconfiguration": "Merking hverrar einingar",
"exif-compressedbitsperpixel": "Aðferð við myndþjöppun",
- "exif-pixelydimension": "Breidd myndar",
- "exif-pixelxdimension": "Hæð myndar",
+ "exif-pixelxdimension": "Breidd myndar",
+ "exif-pixelydimension": "Hæð myndar",
"exif-usercomment": "Athugunarsemdir notanda",
"exif-relatedsoundfile": "Tengd hljóðskrá",
"exif-datetimeoriginal": "Upprunaleg dagsetning",
@@ -3161,7 +3156,6 @@
"version-libraries-license": "Notkunarleyfi",
"version-libraries-description": "Lýsing",
"version-libraries-authors": "Höfundar",
- "redirect-legend": "Endurbeina á skrá eða sÃðu",
"redirect-submit": "Ãfram",
"redirect-lookup": "Fletta upp:",
"redirect-value": "Gildi:",
@@ -3173,7 +3167,6 @@
"redirect-not-exists": "Gildi fannst ekki",
"fileduplicatesearch": "Leita að afriti",
"fileduplicatesearch-summary": "Leita að afritum sem hafa sama hakk gildi.",
- "fileduplicatesearch-legend": "Leita að afriti",
"fileduplicatesearch-filename": "Skráarheiti:",
"fileduplicatesearch-submit": "Leita",
"fileduplicatesearch-info": "$1 à $2 mynddÃlar Skráarstærð: $3 MIME-gerð: $4",
diff --git a/languages/i18n/it.json b/languages/i18n/it.json
index 94a8160768..3c1eed2d9f 100644
--- a/languages/i18n/it.json
+++ b/languages/i18n/it.json
@@ -109,10 +109,11 @@
"tog-showtoolbar": "Mostra la barra degli strumenti di modifica",
"tog-editondblclick": "Modifica delle pagine tramite doppio clic",
"tog-editsectiononrightclick": "Modifica delle sezioni tramite clic destro sul titolo",
- "tog-watchcreations": "Aggiungi le pagine create e i file caricati agli osservati speciali",
- "tog-watchdefault": "Aggiungi le pagine e i file modificati agli osservati speciali",
- "tog-watchmoves": "Aggiungi le pagine e i file spostati agli osservati speciali",
- "tog-watchdeletion": "Aggiungi le pagine e i file cancellati agli osservati speciali",
+ "tog-watchcreations": "Aggiungi le pagine che creo e i file che carico agli osservati speciali",
+ "tog-watchdefault": "Aggiungi le pagine e i file che modifico agli osservati speciali",
+ "tog-watchmoves": "Aggiungi le pagine e i file che sposto agli osservati speciali",
+ "tog-watchdeletion": "Aggiungi le pagine e i file che cancello agli osservati speciali",
+ "tog-watchuploads": "Aggiungi i nuovi file che carico agli osservati speciali",
"tog-watchrollback": "Aggiungi agli osservati speciali le pagine su cui ho effettuato un rollback",
"tog-minordefault": "Indica ogni modifica come minore (solo come predefinito)",
"tog-previewontop": "Mostra l'anteprima sopra la casella di modifica e non sotto",
@@ -429,7 +430,7 @@
"title-invalid-utf8": "Il titolo della pagina richiesta contiene una sequenza UTF-8 non valida.",
"title-invalid-interwiki": "Il titolo della pagina richiesta contiene un collegamento interwiki che non può essere usato nei titoli.",
"title-invalid-talk-namespace": "Il titolo della pagina richiesta fa riferimento a una pagina di discussione non presente.",
- "title-invalid-characters": "Il titolo della pagina richiesta contiene caratteri invalidi: \"$1\".",
+ "title-invalid-characters": "Il titolo della pagina richiesta contiene caratteri non validi: \"$1\".",
"title-invalid-relative": "Il titolo indicato contiene un percorso relativo (./, ../). Tali titoli non sono validi, perché risulteranno spesso irraggiungibili quando gestiti dal browser dell'utente.",
"title-invalid-magic-tilde": "Il titolo della pagina richiesta non è valido in quanto contiene la successione speciale di tilde (~~~ ).",
"title-invalid-too-long": "Il titolo della pagina richiesta è troppo lungo. Non può essere più lungo di {{PLURAL:$1|byte}} in codifica UTF-8.",
@@ -553,7 +554,7 @@
"noemail": "Nessun indirizzo e-mail registrato per l'utente \"$1\".",
"noemailcreate": "Ã necessario fornire un indirizzo e-mail valido",
"passwordsent": "Una nuova password è stata inviata all'indirizzo e-mail registrato per l'utente \"$1\".\nPer favore, effettua un accesso non appena la ricevi.",
- "blocked-mailpassword": "Per prevenire abusi, non è consentito usare la funzione \"Invia nuova password\" da un indirizzo IP bloccato.",
+ "blocked-mailpassword": "Il tuo indirizzo IP è bloccato alla modifica. Per prevenire abusi, non è consentito usare la funzione di recupero password da questo indirizzo IP.",
"eauthentsent": "Un messaggio email di conferma è stato spedito all'indirizzo indicato.\nPer abilitare l'invio di messaggi email per questo utente è necessario seguire le istruzioni che vi sono indicate, in modo da confermare che si è i legittimi proprietari dell'indirizzo.",
"throttled-mailpassword": "Una email di reimpostazione della password è già stata inviata da meno di {{PLURAL:$1|1 ora|$1 ore}}.\nPer prevenire abusi, la funzione di reimpostazione della password può essere usata solo una volta ogni {{PLURAL:$1|ora|$1 ore}}.",
"mailerror": "Errore nell'invio del messaggio: $1",
@@ -653,7 +654,7 @@
"passwordreset-emailsentusername": "Se c'è un indirizzo di posta elettronica associato con questo nome utente, allora verrà inviata una email per reimpostare la password.",
"passwordreset-emailsent-capture": "à stata inviata una email di reimpostazione della password, il contenuto è riportato di seguito.",
"passwordreset-emailerror-capture": "à stata generata una email di reimpostazione della password, riportata di seguito. L'invio {{GENDER:$2|all'utente}} non è riuscito: $1",
- "changeemail": "Modifica o rimuovi indirizzo email",
+ "changeemail": "Modifica o rimuovi indirizzo di posta elettronica",
"changeemail-header": "Completa questo modulo per cambiare il tuo indirizzo email. Se vuoi rimuovere l'associazione di qualsiasi indirizzo email dalla tua utenza, lascia il nuovo indirizzo email vuoto quando invii il modulo.",
"changeemail-passwordrequired": "Sarà necessario inserire la password per confermare la modifica.",
"changeemail-no-info": "Devi aver effettuato l'accesso per accedere a questa pagina direttamente.",
@@ -708,7 +709,7 @@
"missingcommentheader": "Attenzione: non è stato specificato l'oggetto di questo commento. Premendo di nuovo \"{{int:savearticle}}\" la modifica verrà salvata senza.",
"summary-preview": "Anteprima dell'oggetto:",
"subject-preview": "Anteprima oggetto:",
- "previewerrortext": "C'è stato un errore mentre si è cercato di mostrare l'anteprima.",
+ "previewerrortext": "Si è verificato un errore durante il tentativo di mostrare l'anteprima delle tue modifiche.",
"blockedtitle": "Utente bloccato.",
"blockedtext": "'''Il tuo nome utente o indirizzo IP è stato bloccato.'''\n\nIl blocco è stato imposto da $1. La motivazione del blocco è la seguente: ''$2''\n\n* Inizio del blocco: $8\n* Scadenza del blocco: $6\n* Intervallo di blocco: $7\n\nSe lo si desidera, è possibile contattare $1 o un altro [[{{MediaWiki:Grouppage-sysop}}|amministratore]] per discutere del blocco.\n\nSi noti che la funzione 'Scrivi all'utente' non è attiva se non è stato registrato un indirizzo e-mail valido nelle proprie [[Special:Preferences|preferenze]] o se l'utilizzo di tale funzione è stato bloccato.\n\nL'indirizzo IP attuale è $3, il numero ID del blocco è #$5.\nSi prega di specificare tutti i dettagli precedenti in qualsiasi richiesta di chiarimenti.",
"autoblockedtext": "Questo indirizzo IP è stato bloccato automaticamente perché condiviso con un altro utente, a sua volta bloccato da $1.\nLa motivazione del blocco è la seguente:\n\n:''$2''\n\n* Inizio del blocco: $8\n* Scadenza del blocco: $6\n* Intervallo di blocco: $7\n\nà possibile contattare $1 o un altro [[{{MediaWiki:Grouppage-sysop}}|amministratore]] per richiedere eventuali chiarimenti circa il blocco.\n\nSi noti che la funzione 'Scrivi all'utente' non è attiva se non è stato registrato un indirizzo e-mail valido nelle proprie [[Special:Preferences|preferenze]] e, comunque, se nell'applicare il blocco, tale funzione è stata disabilitata (per la durata del blocco).\n\nL'indirizzo IP attuale è $3, il numero ID del blocco è #$5\nSi prega di specificare tutti i dettagli qui inclusi nel compilare qualsiasi richiesta di chiarimenti.",
@@ -963,9 +964,9 @@
"mergelog": "Unioni",
"revertmerge": "Annulla unioni",
"mergelogpagetext": "Di seguito sono elencate le ultime operazioni di unione della cronologia di due pagine.",
- "history-title": "$1: cronologia delle modifiche",
- "difference-title": "$1: differenze tra le versioni",
- "difference-title-multipage": "$1 e $2: differenze tra le pagine",
+ "history-title": "Cronologia delle modifiche di \"$1\"",
+ "difference-title": "Differenze tra le versioni di \"$1\"",
+ "difference-title-multipage": "Differenze tra le pagine \"$1\" e \"$2\"",
"difference-multipage": "(Differenze fra le pagine)",
"lineno": "Riga $1:",
"compareselectedversions": "Confronta le versioni selezionate",
@@ -1051,8 +1052,8 @@
"prefs-watchlist-token": "Token osservati speciali:",
"prefs-misc": "Varie",
"prefs-resetpass": "Cambia password",
- "prefs-changeemail": "Modifica o rimuovi indirizzo email",
- "prefs-setemail": "Imposta un indirizzo email",
+ "prefs-changeemail": "Modifica o rimuovi indirizzo di posta elettronica",
+ "prefs-setemail": "Imposta un indirizzo di posta elettronica",
"prefs-email": "Opzioni email",
"prefs-rendering": "Aspetto",
"saveprefs": "Salva",
@@ -1096,7 +1097,7 @@
"prefs-custom-js": "JavaScript personalizzato",
"prefs-common-css-js": "CSS/JavaScript condiviso per tutti i temi:",
"prefs-reset-intro": "à possibile usare questa pagina per reimpostare le proprie preferenze a quelle predefinite del sito.\nL'operazione non può essere annullata.",
- "prefs-emailconfirm-label": "Conferma dell'e-mail:",
+ "prefs-emailconfirm-label": "Conferma dell'email:",
"youremail": "Indirizzo email:",
"username": "{{GENDER:$1|Nome utente}}:",
"prefs-memberingroups": "{{GENDER:$2|Membro}} {{PLURAL:$1|del gruppo|dei gruppi}}:",
@@ -1391,13 +1392,13 @@
"recentchangeslinked-feed": "Modifiche correlate",
"recentchangeslinked-toolbox": "Modifiche correlate",
"recentchangeslinked-title": "Modifiche correlate a \"$1\"",
- "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 grassetto .",
+ "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 grassetto .",
"recentchangeslinked-page": "Nome della pagina:",
"recentchangeslinked-to": "Mostra solo le modifiche alle pagine collegate a quella specificata",
"recentchanges-page-added-to-category": "[[:$1]] aggiunta alla categoria",
- "recentchanges-page-added-to-category-bundled": "[[:$1]] e [[Special:WhatLinksHere/$1|{{PLURAL:$2|un'altra pagina|altre $2 pagine}}]] sono state aggiunte alla categoria",
+ "recentchanges-page-added-to-category-bundled": "[[:$1]] aggiunta alla categoria, [[Special:WhatLinksHere/$1|questa pagina è inclusa all'interno di altre pagine]]",
"recentchanges-page-removed-from-category": "[[:$1]] rimossa dalla categoria",
- "recentchanges-page-removed-from-category-bundled": "[[:$1]] e [[Special:WhatLinksHere/$1|{{PLURAL:$2|un'altra pagina|altre $2 pagine}}]] sono state rimosse dalla categoria",
+ "recentchanges-page-removed-from-category-bundled": "[[:$1]] rimossa dalla categoria, [[Special:WhatLinksHere/$1|questa pagina è inclusa all'interno di altre pagine]]",
"autochange-username": "Modifica automatica MediaWiki",
"upload": "Carica un file",
"uploadbtn": "Carica",
@@ -1577,6 +1578,7 @@
"uploadstash-badtoken": "Esecuzione dell'azione non riuscita, forse perché le tue credenziali di modifica sono scadute. Prova ancora.",
"uploadstash-errclear": "La pulizia dei file non è riuscita.",
"uploadstash-refresh": "Aggiorna l'elenco dei file",
+ "uploadstash-thumbnail": "vedi miniatura",
"invalid-chunk-offset": "Offset della parte non valido.",
"img-auth-accessdenied": "Accesso negato",
"img-auth-nopathinfo": "PATH_INFO mancante.\nIl server non è impostato per passare questa informazione.\nPotrebbe essere basato su CGI e non può supportare img_auth.\nVedi https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Image_Authorization",
@@ -1594,7 +1596,7 @@
"http-read-error": "Errore di lettura HTTP.",
"http-timed-out": "Richiesta HTTP scaduta.",
"http-curl-error": "Errore durante il recupero dell'URL: $1",
- "http-bad-status": "C'è stato un problema durante la richiesta HTTP: $1 $2",
+ "http-bad-status": "Si è verificato un problema durante la richiesta HTTP: $1 $2",
"upload-curl-error6": "URL non raggiungibile",
"upload-curl-error6-text": "Impossibile raggiungere la URL specificata. Verificare che la URL sia scritta correttamente e che il sito in questione sia attivo.",
"upload-curl-error28": "Tempo scaduto per l'upload",
@@ -1897,8 +1899,6 @@
"categories-submit": "Mostra",
"categoriespagetext": "{{PLURAL:$1|La categoria indicata di seguito contiene|Le categorie indicate di seguito contengono}} pagine o file multimediali.\nLe [[Special:UnusedCategories|categorie vuote]] non sono mostrate qui.\nVedi anche le [[Special:WantedCategories|categorie richieste]].",
"categoriesfrom": "Mostra le categorie a partire da:",
- "special-categories-sort-count": "ordina per numero",
- "special-categories-sort-abc": "ordina alfabeticamente",
"deletedcontributions": "Contributi utente cancellati",
"deletedcontributions-title": "Contributi utente cancellati",
"sp-deletedcontributions-contribs": "contributi",
@@ -2276,6 +2276,7 @@
"ipb-unblock": "Sblocca un utente o un indirizzo IP",
"ipb-blocklist": "Elenca i blocchi attivi",
"ipb-blocklist-contribs": "Contributi di {{GENDER:$1|$1}}",
+ "ipb-blocklist-duration-left": "$1 rimasti",
"unblockip": "Sblocca l'utente",
"unblockiptext": "Usare il modulo sottostante per restituire l'accesso in scrittura ad un utente o indirizzo IP bloccato.",
"ipusubmit": "Rimuovi questo blocco",
@@ -2517,11 +2518,7 @@
"import-logentry-upload-detail": "{{PLURAL:$1|una versione importata|$1 versioni importate}}",
"import-logentry-interwiki-detail": "{{PLURAL:$1|una versione importata|$1 versioni importate}} da $2",
"javascripttest": "Sperimentazione JavaScript",
- "javascripttest-pagetext-noframework": "Questa pagina è riservata all'esecuzione di test di JavaScript.",
- "javascripttest-pagetext-unknownframework": "Framework di test sconosciuto \"$1\".",
"javascripttest-pagetext-unknownaction": "Azione sconosciuta \"$1\".",
- "javascripttest-pagetext-frameworks": "Per cortesia, scegli uno dei seguenti framework per i test: $1",
- "javascripttest-pagetext-skins": "Scegli un tema con cui eseguire i test:",
"javascripttest-qunit-intro": "Vedi su mediawiki.org la [$1 documentazione riguardante i test].",
"tooltip-pt-userpage": "La {{GENDER:|tua}} pagina utente",
"tooltip-pt-anonuserpage": "La pagina utente di questo indirizzo IP",
@@ -2687,7 +2684,7 @@
"patrol-log-page": "Modifiche verificate",
"patrol-log-header": "Di seguito sono elencate le verifiche delle modifiche.",
"log-show-hide-patrol": "$1 registro delle modifiche verificate",
- "log-show-hide-tag": "$1 registro delle etichiette",
+ "log-show-hide-tag": "$1 registro delle etichette",
"deletedrevision": "Cancellata la vecchia versione di $1.",
"filedeleteerror-short": "Errore nella cancellazione del file: $1",
"filedeleteerror-long": "Si sono verificati degli errori nel tentativo di cancellare il file:\n\n$1",
@@ -2794,8 +2791,8 @@
"exif-colorspace": "Spazio dei colori",
"exif-componentsconfiguration": "Significato di ciascuna componente",
"exif-compressedbitsperpixel": "Modalità di compressione immagine",
- "exif-pixelydimension": "Larghezza immagine",
- "exif-pixelxdimension": "Altezza immagine",
+ "exif-pixelxdimension": "Larghezza immagine",
+ "exif-pixelydimension": "Altezza immagine",
"exif-usercomment": "Note dell'utente",
"exif-relatedsoundfile": "File audio collegato",
"exif-datetimeoriginal": "Data e ora di creazione dei dati",
@@ -3127,6 +3124,10 @@
"confirmemail_body_set": "Qualcuno, probabilmente tu stesso dall'indirizzo IP $1,\nha impostato l'indirizzo email dell'account \"$2\" su {{SITENAME}} indicando questo indirizzo email.\n\nPer confermare che l'account ti appartiene veramente e attivare le funzioni relative all'invio\ndi email su {{SITENAME}}, apri il collegamento seguente con il tuo browser:\n\n$3\n\nSe l'account *non* ti appartiene, segui questo collegamento\nper annullare la conferma dell'indirizzo email:\n\n$5\n\nQuesto codice di conferma scadrà automaticamente alle $4.",
"confirmemail_invalidated": "Richiesta di conferma indirizzo e-mail annullata",
"invalidateemail": "Annulla richiesta di conferma e-mail",
+ "notificationemail_subject_changed": "L'indirizzo di posta elettronica registrato su {{SITENAME}} è stato modificato",
+ "notificationemail_subject_removed": "L'indirizzo di posta elettronica registrato su {{SITENAME}} è stato rimosso",
+ "notificationemail_body_changed": "Qualcuno, probabilmente tu, dall'indirizzo IP $1,\nha modificato l'indirizzo di posta elettronica dell'utenza \"$2\" in \"$3\" su {{SITENAME}}.\n\nSe non sei stato tu, contatta immediatamente un amministratore del sito.",
+ "notificationemail_body_removed": "Qualcuno, probabilmente tu, dall'indirizzo IP $1,\nha rimosso l'indirizzo di posta elettronica dell'utenza \"$2\" su {{SITENAME}}.\n\nSe non sei stato tu, contatta immediatamente un amministratore del sito.",
"scarytranscludedisabled": "[L'inclusione di pagine tra siti wiki non è attiva]",
"scarytranscludefailed": "[Errore: Impossibile ottenere il template $1]",
"scarytranscludefailed-httpstatus": "[Errore: impossibile ottenere il template $1: HTTP $2]",
@@ -3182,7 +3183,7 @@
"watchlistedit-raw-done": "La lista degli osservati speciali è stata aggiornata.",
"watchlistedit-raw-added": "{{PLURAL:$1|Ã stata aggiunta una pagina|Sono state aggiunte $1 pagine}}:",
"watchlistedit-raw-removed": "{{PLURAL:$1|Ã stata eliminata una pagina|Sono state eliminate $1 pagine}}:",
- "watchlistedit-clear-title": "Lista degli osservati speciali svuotata",
+ "watchlistedit-clear-title": "Svuota osservati speciali",
"watchlistedit-clear-legend": "Svuota osservati speciali",
"watchlistedit-clear-explain": "Tutti i titoli saranno rimossi dai tuoi osservati speciali",
"watchlistedit-clear-titles": "Titoli:",
@@ -3249,7 +3250,6 @@
"version-libraries-description": "Descrizione",
"version-libraries-authors": "Autori",
"redirect": "Reindirizzamento da file, utente, pagina, versione o ID registro",
- "redirect-legend": "Reindirizza a un file o una pagina",
"redirect-summary": "Questa pagina speciale reindirizza a un file (specificando il nome del file), a una pagina (specificando un ID di versione o un ID pagina), a un utente (specificando un ID utente numerico) o ad un elemento del registro (specificando l'ID registro).\nEsempi: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], [[{{#Special:Redirect}}/user/101]], [[{{#Special:Redirect}}/logid/186]].",
"redirect-submit": "Vai",
"redirect-lookup": "Ricerca:",
@@ -3262,7 +3262,6 @@
"redirect-not-exists": "Valore non trovato",
"fileduplicatesearch": "Ricerca dei file duplicati",
"fileduplicatesearch-summary": "Ricerca di eventuali duplicati del file in base al valore di ''hash''.",
- "fileduplicatesearch-legend": "Ricerca di un duplicato",
"fileduplicatesearch-filename": "Nome del file:",
"fileduplicatesearch-submit": "Ricerca",
"fileduplicatesearch-info": "$1 Ã $2 pixel Dimensione del file: $3 Tipo MIME: $4",
@@ -3463,7 +3462,7 @@
"logentry-protect-protect-cascade": "$1 {{GENDER:$2|ha protetto}} $3 $4 [ricorsiva]",
"logentry-protect-modify": "$1 {{GENDER:$2|ha modificato}} il livello di protezione per $3 $4",
"logentry-protect-modify-cascade": "$1 {{GENDER:$2|ha modificato}} il livello di protezione per $3 $4 [ricorsiva]",
- "logentry-rights-rights": "$1 {{GENDER:$2|ha modificato}} l'appartenenza di $3 dal gruppo $4 al gruppo $5",
+ "logentry-rights-rights": "$1 {{GENDER:$2|ha modificato}} l'appartenenza di {{GENDER:$6|$3}} dal gruppo $4 al gruppo $5",
"logentry-rights-rights-legacy": "$1 {{GENDER:$2|ha modificato}} l'appartenenza a gruppi di $3",
"logentry-rights-autopromote": "$1 è {{GENDER:$2|stato promosso|stata promossa|stato/a promosso/a}} automaticamente da $4 a $5",
"logentry-upload-upload": "$1 {{GENDER:$2|ha caricato}} $3",
@@ -3517,7 +3516,7 @@
"api-error-duplicate-archive": "{{PLURAL:$1|C'era un altro file|C'erano altri file}} già nel sito con lo stesso contenuto, ma {{PLURAL:$1|è stato cancellato|sono stati cancellati}}.",
"api-error-empty-file": "Il file selezionato era vuoto.",
"api-error-emptypage": "La creazione di nuove pagine vuote non è consentita.",
- "api-error-fetchfileerror": "Errore interno: c'è stato un problema durante il recupero del documento.",
+ "api-error-fetchfileerror": "Errore interno: si è verificato un problema durante il recupero del file.",
"api-error-fileexists-forbidden": "Un file di nome \"$1\" già esiste e non può essere sovrascritto.",
"api-error-fileexists-shared-forbidden": "Un file di nome \"$1\" già esiste nel repository condiviso e non può essere sovrascritto.",
"api-error-file-too-large": "Il file selezionato era troppo grande.",
@@ -3646,6 +3645,7 @@
"special-characters-group-ipa": "IPA",
"special-characters-group-symbols": "Simboli",
"special-characters-group-greek": "Greco",
+ "special-characters-group-greekextended": "Greco esteso",
"special-characters-group-cyrillic": "Cirillico",
"special-characters-group-arabic": "Arabo",
"special-characters-group-arabicextended": "Arabo esteso",
@@ -3673,5 +3673,54 @@
"sessionprovider-generic": "sessioni $1",
"sessionprovider-mediawiki-session-cookiesessionprovider": "sessioni basate su cookie",
"sessionprovider-nocookies": "I cookie possono essere disattivati. Assicurati di avere i cookie abilitati e ha inizia nuovamente.",
- "randomrootpage": "Pagina radice casuale"
+ "randomrootpage": "Pagina radice casuale",
+ "log-action-filter-block": "Tipo di blocco:",
+ "log-action-filter-contentmodel": "Tipo di modifica del modello di contenuto:",
+ "log-action-filter-delete": "Tipo di cancellazione:",
+ "log-action-filter-import": "Tipo di importazione:",
+ "log-action-filter-managetags": "Tipo di azione di gestione etichetta:",
+ "log-action-filter-move": "Tipo di spostamento:",
+ "log-action-filter-newusers": "Tipo di creazione utenza:",
+ "log-action-filter-patrol": "Tipo di verifica:",
+ "log-action-filter-protect": "Tipo di protezione:",
+ "log-action-filter-rights": "Tipo di modifica diritti",
+ "log-action-filter-suppress": "Tipo di soppressione",
+ "log-action-filter-upload": "Tipo di caricamento:",
+ "log-action-filter-all": "Tutto",
+ "log-action-filter-block-block": "Blocco",
+ "log-action-filter-block-reblock": "Modifica blocco",
+ "log-action-filter-block-unblock": "Sblocco",
+ "log-action-filter-contentmodel-change": "Modifica del modello di contenuto",
+ "log-action-filter-contentmodel-new": "Creazione di pagina con modello di contenuto non standard",
+ "log-action-filter-delete-delete": "Cancellazione pagina",
+ "log-action-filter-delete-restore": "Ripristino pagina",
+ "log-action-filter-delete-event": "Cancellazione registro",
+ "log-action-filter-delete-revision": "Cancellazione versione",
+ "log-action-filter-import-interwiki": "Importazione transwiki",
+ "log-action-filter-import-upload": "Importazione da XML caricato",
+ "log-action-filter-managetags-create": "Creazione etichetta",
+ "log-action-filter-managetags-delete": "Cancellazione etichetta",
+ "log-action-filter-managetags-activate": "Attivazione etichetta",
+ "log-action-filter-managetags-deactivate": "Disattivazione etichetta",
+ "log-action-filter-move-move": "Spostamento senza sovrascrivere reindirizzamenti",
+ "log-action-filter-move-move_redir": "Spostamento con sovrascrittura reindirizzamenti",
+ "log-action-filter-newusers-create": "Creazione da utente anonimo",
+ "log-action-filter-newusers-create2": "Creazione da utente registrato",
+ "log-action-filter-newusers-autocreate": "Creazione automatica",
+ "log-action-filter-newusers-byemail": "Creazione con password inviata via email",
+ "log-action-filter-patrol-patrol": "Verifica manuale",
+ "log-action-filter-patrol-autopatrol": "Verifica automatica",
+ "log-action-filter-protect-protect": "Protezione",
+ "log-action-filter-protect-modify": "Modifica protezione",
+ "log-action-filter-protect-unprotect": "Sprotezione",
+ "log-action-filter-protect-move_prot": "Protezione spostata",
+ "log-action-filter-rights-rights": "Modifica manuale",
+ "log-action-filter-rights-autopromote": "Modifica automatica",
+ "log-action-filter-suppress-event": "Soppressione registro",
+ "log-action-filter-suppress-revision": "Soppressione versione",
+ "log-action-filter-suppress-delete": "Soppressione pagina",
+ "log-action-filter-suppress-block": "Soppressione utente da blocco",
+ "log-action-filter-suppress-reblock": "Soppressione utente da ri-blocco",
+ "log-action-filter-upload-upload": "Nuovo caricamento",
+ "log-action-filter-upload-overwrite": "Ricaricamento"
}
diff --git a/languages/i18n/ja.json b/languages/i18n/ja.json
index 09f9963a2e..1546fb8052 100644
--- a/languages/i18n/ja.json
+++ b/languages/i18n/ja.json
@@ -87,6 +87,7 @@
"tog-watchdefault": "èªåãç·¨éãããã¼ã¸ããã¡ã¤ã«ãã¦ã©ãããªã¹ãã«è¿½å ",
"tog-watchmoves": "èªåã移åãããã¼ã¸ããã¡ã¤ã«ãã¦ã©ãããªã¹ãã«è¿½å ",
"tog-watchdeletion": "èªåãåé¤ãããã¼ã¸ããã¡ã¤ã«ãã¦ã©ãããªã¹ãã«è¿½å ",
+ "tog-watchuploads": "èªåãæ°ããã¢ãããã¼ããããã¡ã¤ã«ãã¦ã©ãããªã¹ãã«è¿½å ",
"tog-watchrollback": "èªåãå·»ãæ»ãããã¼ã¸ãã¦ã©ãããªã¹ãã«è¿½å ",
"tog-minordefault": "ç·¨éããã¹ã¦æ¢å®ã§ç´°é¨ã®ç·¨éã¨ãã",
"tog-previewontop": "ãã¬ãã¥ã¼ãç·¨éããã¯ã¹ã®åã«é
ç½®",
@@ -528,7 +529,7 @@
"noemail": "å©ç¨è
ã$1ãã®ã¡ã¼ã«ã¢ãã¬ã¹ã¯ç»é²ããã¦ãã¾ããã",
"noemailcreate": "æå¹ãªã¡ã¼ã«ã¢ãã¬ã¹ãå
¥åããå¿
è¦ãããã¾ãã",
"passwordsent": "æ°ãããã¹ã¯ã¼ããã$1ãã«ç»é²ãããã¡ã¼ã«ã¢ãã¬ã¹ã«ãéããã¾ããã\nã¡ã¼ã«ãå±ããããå度ãã°ã¤ã³ãã¦ãã ããã",
- "blocked-mailpassword": "ã使ç¨ä¸ã®IPã¢ãã¬ã¹ããã®ç·¨éã¯ãããã¯ããã¦ãããä¸æ£å©ç¨é²æ¢ã®ããããã¹ã¯ã¼ãã®åçºè¡æ©è½ã¯ä½¿ç¨ã§ãã¾ããã",
+ "blocked-mailpassword": "ã使ç¨ä¸ã®IPã¢ãã¬ã¹ããã®ç·¨éã¯ãããã¯ããã¦ããã¾ããä¸æ£å©ç¨é²æ¢ã®ããããã®IPã¢ãã¬ã¹ããã¯ãã¹ã¯ã¼ãã®åçºè¡æ©è½ã使ç¨ã§ãã¾ããã",
"eauthentsent": "æå®ããã¡ã¼ã«ã¢ãã¬ã¹ã«ãã¢ãã¬ã¹ç¢ºèªã®ããã®ã¡ã¼ã«ããéããã¾ããã\nã¡ã¼ã«ã«è¨è¼ãããæé ã«å¾ã£ã¦ããã®ã¢ã«ã¦ã³ãã®ææè
ã§ãããã¨ã®ç¢ºèªãåããã¨ããã®ã¢ã«ã¦ã³ãå®ã®ã¡ã¼ã«ãåãåããããã«ãªãã¾ãã",
"throttled-mailpassword": "ãã¹ã¯ã¼ãåè¨å®ã¡ã¼ã«ãéå» {{PLURAL:$1|$1 æé}}ã«éä¿¡æ¸ã¿ã§ãã\næªç¨é²æ¢ã®ããããã¹ã¯ã¼ãã®åè¨å®ã¯ {{PLURAL:$1|$1 æé}}ã« 1 åã®ã¿ã§ãã",
"mailerror": "ã¡ã¼ã«ãéä¿¡ããéã«ã¨ã©ã¼ãçºçãã¾ãã: $1",
@@ -1870,8 +1871,6 @@
"categories-submit": "表示",
"categoriespagetext": "以ä¸ã®{{PLURAL:$1|ã«ãã´ãª}}ã«ã¯ãã¼ã¸ã¾ãã¯ã¡ãã£ã¢ãããã¾ãã\n[[Special:UnusedCategories|使ããã¦ããªãã«ãã´ãª]]ã¯ããã«ã¯è¡¨ç¤ºãã¦ãã¾ããã\n[[Special:WantedCategories|ã«ãã´ãªãã¼ã¸ãåå¨ããªãã«ãã´ãª]]ãåç
§ãã¦ãã ããã",
"categoriesfrom": "æåã«è¡¨ç¤ºããã«ãã´ãª:",
- "special-categories-sort-count": "é
ç®æ°é ã«ä¸¦ã¹æ¿ã",
- "special-categories-sort-abc": "è¾æ¸é ã«ä¸¦ã¹æ¿ã",
"deletedcontributions": "å©ç¨è
ã®åé¤ãããæ稿",
"deletedcontributions-title": "å©ç¨è
ã®åé¤ãããæ稿",
"sp-deletedcontributions-contribs": "æ稿è¨é²",
@@ -2054,19 +2053,19 @@
"rollback-success": "$1ã«ããç·¨éãå·®ãæ»ãã¾ããã\n$2ã«ããç´åã®çã¸å¤æ´ããã¾ããã",
"sessionfailure-title": "ã»ãã·ã§ã³ã®å¤±æ",
"sessionfailure": "ãã°ã¤ã³ã®ã»ãã·ã§ã³ã«åé¡ãçºçãã¾ããã\nã»ãã·ã§ã³ä¹ã£åããé²ããããæä½ãåãæ¶ãã¾ããã\nåã®ãã¼ã¸ã¸æ»ã£ã¦å度èªã¿è¾¼ãã å¾ã«ãããä¸åº¦è©¦ãã¦ãã ããã",
- "changecontentmodel": "ãã¼ã¸ã®ã³ã³ãã³ãã»ã¢ãã«ã®å¤æ´",
+ "changecontentmodel": "ãã¼ã¸ã®ã³ã³ãã³ãã»ã¢ãã«ã®å¤æ´",
"changecontentmodel-legend": "ã³ã³ãã³ãã¢ãã«ãå¤æ´",
"changecontentmodel-title-label": "ãã¼ã¸å",
"changecontentmodel-model-label": "æ°ãã ã³ã³ãã³ã ã¢ãã«",
"changecontentmodel-reason-label": "çç±:",
"changecontentmodel-submit": "å¤æ´",
- "changecontentmodel-success-title": "ã³ã³ãã³ãã»ã¢ãã«ã¯å¤æ´ããã¾ãã",
- "changecontentmodel-success-text": "[[:$1]]ã®ã³ã³ãã³ãã»ã¿ã¤ãã¯å¤æ´ããã¦ãã¾ãã",
+ "changecontentmodel-success-title": "ã³ã³ãã³ãã»ã¢ãã«ã¯å¤æ´ããã¾ãã",
+ "changecontentmodel-success-text": "[[:$1]]ã®ã³ã³ãã³ãã»ã¿ã¤ãã¯å¤æ´ããã¾ããã",
"changecontentmodel-cannot-convert": "[[:$1]]ä¸ã®ã³ã³ãã³ãã¯$2ã®åã«ã¯å¤æã§ãã¾ããã",
"changecontentmodel-nodirectediting": "$1 ã³ã³ãã³ãã»ã¢ãã«ã¯ããã¤ã¬ã¯ãç·¨éããµãã¼ããã¦ãã¾ããã",
"log-name-contentmodel": "ã³ã³ãã³ãã»ã¢ãã«å¤æ´è¨é²",
- "log-description-contentmodel": "ãã¼ã¸ã®ã³ã³ãã³ãã»ã¢ãã«ã«é¢é£ããã¤ãã³ã",
- "logentry-contentmodel-change": "$1 ããã¼ã¸ $3 ã®ã³ã³ãã³ãã»ã¢ãã«ã \"$4\" ãã \"$5\" ã«{{GENDER:$2|å¤æ´ãã¾ãã}}",
+ "log-description-contentmodel": "ãã¼ã¸ã®ã³ã³ãã³ãã»ã¢ãã«ã«é¢é£ããåºæ¥äº",
+ "logentry-contentmodel-change": "$1 ããã¼ã¸ $3 ã®ã³ã³ãã³ãã»ã¢ãã«ã \"$4\" ãã \"$5\" ã«{{GENDER:$2|å¤æ´ãã¾ãã}}",
"logentry-contentmodel-change-revertlink": "å·®ãæ»ã",
"logentry-contentmodel-change-revert": "å·®ãæ»ã",
"protectlogpage": "ä¿è·è¨é²",
@@ -2491,11 +2490,7 @@
"import-logentry-upload-detail": "$1{{PLURAL:$1|ç}} ãã¤ã³ãã¼ããã¾ãã",
"import-logentry-interwiki-detail": "$2ããã¤ã³ãã¼ãæ¸ã¿ã®$1{{PLURAL:$1|ç}}",
"javascripttest": "JavaScript ããã¹ãä¸",
- "javascripttest-pagetext-noframework": "ãã®ãã¼ã¸ã¯ JavaScript ã®ãã¹ããå®è¡ããããã«äºç´ããã¦ãã¾ãã",
- "javascripttest-pagetext-unknownframework": "ãã¹ããã¬ã¼ã ã¯ã¼ã¯ã$1ãã¯ä¸æã§ãã",
"javascripttest-pagetext-unknownaction": "ä¸æãªæä½ã$1ãã",
- "javascripttest-pagetext-frameworks": "以ä¸ã®ãã¹ããã¬ã¼ã ã¯ã¼ã¯ãã1ã¤é¸æãã¦ãã ãã: $1",
- "javascripttest-pagetext-skins": "ãã¹ããå®è¡ããå¤è£
ãé¸æãã¦ãã ãã:",
"javascripttest-qunit-intro": "mediawiki.orgä¸ã®[$1 ãã¹ãã®ããã¥ã¡ã³ã]ãåç
§ãã¦ãã ããã",
"tooltip-pt-userpage": "{{GENDER:|èªåã®å©ç¨è
}}ãã¼ã¸",
"tooltip-pt-anonuserpage": "èªåãç·¨éãã¦ããIPã¢ãã¬ã¹ã®å©ç¨è
ãã¼ã¸",
@@ -2805,8 +2800,8 @@
"exif-colorspace": "è²ç©ºéæ
å ±",
"exif-componentsconfiguration": "åã³ã³ãã¼ãã³ãã®æå³",
"exif-compressedbitsperpixel": "ç»åå§ç¸®ã¢ã¼ã",
- "exif-pixelydimension": "å®å¹ç»åã®å¹
",
- "exif-pixelxdimension": "å®å¹ç»åã®é«ã",
+ "exif-pixelxdimension": "å®å¹ç»åã®å¹
",
+ "exif-pixelydimension": "å®å¹ç»åã®é«ã",
"exif-usercomment": "ã¦ã¼ã¶ã¼ ã³ã¡ã³ã",
"exif-relatedsoundfile": "é¢é£é³å£°ãã¡ã¤ã«",
"exif-datetimeoriginal": "åç»åãã¼ã¿ã®çææ¥æ",
@@ -3132,6 +3127,7 @@
"confirmemail_body_set": "誰ã (ããããããªã) ã IP ã¢ãã¬ã¹ $1 ãã\n{{SITENAME}} ã®ã¢ã«ã¦ã³ãã$2ãã®ã¡ã¼ã«ã¢ãã¬ã¹ããã®ã¢ãã¬ã¹ã«è¨å®ãã¾ããã\n\nãã®ã¢ã«ã¦ã³ããæ¬å½ã«ããªãã®ãã®ã§ããã°ã以ä¸ã®ãªã³ã¯ããã©ã¦ã¶ã¼ã§éãã¦ã\n{{SITENAME}} ã®ã¡ã¼ã«æ©è½ãæå¹ã«ãã¦ãã ããã\n\n$3\n\nããªãã®ã¢ã«ã¦ã³ãã§ã¯ãªãå ´åã¯ã\n以ä¸ã®ãªã³ã¯ããã©ã¦ã¶ã¼ã§éãã¦ãã¡ã¼ã«ã¢ãã¬ã¹ã®ç¢ºèªããã£ã³ã»ã«ãã¦ãã ãã:\n\n$5\n\nãã®ç¢ºèªã³ã¼ã㯠$4 ã«æéåãã«ãªãã¾ãã",
"confirmemail_invalidated": "ã¡ã¼ã«ã¢ãã¬ã¹ã®ç¢ºèªãä¸æ¢ããã¾ãã",
"invalidateemail": "ã¡ã¼ã«ã¢ãã¬ã¹ã®ç¢ºèªä¸æ¢",
+ "notificationemail_body_changed": "誰ã (ããããããªã) ããIP ã¢ãã¬ã¹ $1 ããã\n{{SITENAME}} ã®ã¢ã«ã¦ã³ãã$2ãã®ã¡ã¼ã«ã¢ãã¬ã¹ã \"$3\" ã«å¤æ´ãã¾ããã\n\nå¤æ´ããè¦ãããªãå ´åããµã¤ãã®ç®¡çè
ã«ç´ã¡ã«é£çµ¡ãã¦ãã ããã",
"scarytranscludedisabled": "[ã¦ã£ãéã®åç
§èªã¿è¾¼ã¿ã¯ç¡å¹ã«ãªã£ã¦ãã¾ã]",
"scarytranscludefailed": "[$1ã«å¯¾ãã¦ãã³ãã¬ã¼ãã®åå¾ã«å¤±æãã¾ãã]",
"scarytranscludefailed-httpstatus": "[$1ã«å¯¾ãã¦ãã³ãã¬ã¼ãã®åå¾ã«å¤±æãã¾ãã: HTTP $2]",
@@ -3317,7 +3313,6 @@
"version-libraries-description": "説æ",
"version-libraries-authors": "ä½è
",
"redirect": "ãã¡ã¤ã«åãå©ç¨è
IDããã¼ã¸IDãçIDãè¨é²IDã§ã®è»¢é",
- "redirect-legend": "ãã¡ã¤ã«ã¾ãã¯ãã¼ã¸ãã®è»¢é",
"redirect-summary": "ãã®ç¹å¥ãã¼ã¸ã¯ããã¡ã¤ã« (ãã¡ã¤ã«åãæå®)ããã¼ã¸ (ç ID ã¾ãã¯ãã¼ã¸ ID ãæå®)ãå©ç¨è
ãã¼ã¸ (å©ç¨è
ID ãæ´æ°ã§æå®) ãè¨é²é
ç® (è¨é² ID ãæå®) ã«è»¢éããã¾ãã使ç¨ä¾: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], [[{{#Special:Redirect}}/user/101]], [[{{#Special:Redirect}}/logid/186]]",
"redirect-submit": "å®è¡",
"redirect-lookup": "æ¤ç´¢ã®ç¨®é¡:",
@@ -3330,7 +3325,6 @@
"redirect-not-exists": "å¤ãè¦ã¤ããã¾ãã",
"fileduplicatesearch": "éè¤ãã¡ã¤ã«ã®æ¤ç´¢",
"fileduplicatesearch-summary": "éè¤ãã¡ã¤ã«ãããã·ã¥å¤ã«åºã¥ãã¦æ¤ç´¢ãã¾ãã",
- "fileduplicatesearch-legend": "éè¤ã®æ¤ç´¢",
"fileduplicatesearch-filename": "ãã¡ã¤ã«å:",
"fileduplicatesearch-submit": "æ¤ç´¢",
"fileduplicatesearch-info": "$1 à $2 ãã¯ã»ã« ãã¡ã¤ã«ãµã¤ãº: $3 MIME ã¿ã¤ã: $4",
@@ -3529,7 +3523,7 @@
"logentry-protect-protect-cascade": "$1 ã $3 ã {{GENDER:$2|ä¿è·}}ãã¾ãã $4 [ã«ã¹ã±ã¼ã]",
"logentry-protect-modify": "$1 ã $3 ã®ä¿è·ã¬ãã«ã{{GENDER:$2|å¤æ´}}ãã¾ãã $4",
"logentry-protect-modify-cascade": "$1 ã $3 ã®ä¿è·ã¬ãã«ã{{GENDER:$2|å¤æ´}}ãã¾ãã $4 [ã«ã¹ã±ã¼ã]",
- "logentry-rights-rights": "$1 ã $3 ã®æå±ã°ã«ã¼ãã $4 ãã $5 ã«{{GENDER:$2|å¤æ´ãã¾ãã}}",
+ "logentry-rights-rights": "$1 ã {{GENDER:$6|$3}} ã®æå±ã°ã«ã¼ãã $4 ãã $5 ã«{{GENDER:$2|å¤æ´ãã¾ãã}}",
"logentry-rights-rights-legacy": "$1 ã $3 ã®æå±ã°ã«ã¼ãã{{GENDER:$2|å¤æ´ãã¾ãã}}",
"logentry-rights-autopromote": "$1 ã $4 ãã $5 ã«èªåçã«{{GENDER:$2|ææ ¼ãã¾ãã}}",
"logentry-upload-upload": "$1 ã $3 ã {{GENDER:$2|ã¢ãããã¼ããã¾ãã}}",
@@ -3712,6 +3706,7 @@
"special-characters-group-ipa": "å½éé³å£°è¨å·",
"special-characters-group-symbols": "è¨å·",
"special-characters-group-greek": "ã®ãªã·ã¢æå",
+ "special-characters-group-greekextended": "ã®ãªã·ã¢æåæ¡å¼µ",
"special-characters-group-cyrillic": "ããªã«æå",
"special-characters-group-arabic": "ã¢ã©ãã¢æå",
"special-characters-group-arabicextended": "ã¢ã©ãã¢æåæ¡å¼µ",
@@ -3734,5 +3729,26 @@
"mw-widgets-titleinput-description-redirect": "$1 ã¸ã®ãªãã¤ã¬ã¯ã",
"api-error-blacklisted": "ä»ã®ã説æçãªã¿ã¤ãã«ããé¸ã³ãã ããã",
"sessionprovider-generic": "$1 ã»ãã·ã§ã³",
- "randomrootpage": "ãã¾ããã«ã¼ããã¼ã¸"
+ "randomrootpage": "ãã¾ããã«ã¼ããã¼ã¸",
+ "log-action-filter-block": "ãããã¯ã®ç¨®é¡",
+ "log-action-filter-move": "移åã®ç¨®é¡:",
+ "log-action-filter-newusers": "ã¢ã«ã¦ã³ãä½æã®ç¨®é¡:",
+ "log-action-filter-protect": "ä¿è·ã®ç¨®é¡:",
+ "log-action-filter-upload": "ã¢ãããã¼ãã®ç¨®é¡",
+ "log-action-filter-all": "ãã¹ã¦",
+ "log-action-filter-block-block": "ãããã¯",
+ "log-action-filter-block-reblock": "ãããã¯å¤æ´",
+ "log-action-filter-block-unblock": "ãããã¯è§£é¤",
+ "log-action-filter-delete-delete": "ãã¼ã¸ã®åé¤",
+ "log-action-filter-delete-restore": "ãã¼ã¸ã®å¾©å¸°",
+ "log-action-filter-move-move": "転éãä¸æ¸ãããªã移å",
+ "log-action-filter-move-move_redir": "転éãä¸æ¸ããã移å",
+ "log-action-filter-newusers-create": "å¿åå©ç¨è
ã«ããä½æ",
+ "log-action-filter-newusers-create2": "ç»é²å©ç¨è
ã«ããä½æ",
+ "log-action-filter-newusers-autocreate": "èªåçãªä½æ",
+ "log-action-filter-protect-protect": "ä¿è·",
+ "log-action-filter-protect-modify": "ä¿è·ã®è¨å®å¤æ´",
+ "log-action-filter-protect-unprotect": "ä¿è·è§£é¤",
+ "log-action-filter-upload-upload": "æ°è¦ã¢ãããã¼ã",
+ "log-action-filter-upload-overwrite": "åã¢ãããã¼ã"
}
diff --git a/languages/i18n/jv.json b/languages/i18n/jv.json
index 8a4924e8f9..7982dbb461 100644
--- a/languages/i18n/jv.json
+++ b/languages/i18n/jv.json
@@ -20,19 +20,22 @@
]
},
"tog-underline": "Garisen ngisoré pranala:",
- "tog-hideminor": "Dhelikaké suntingan cilik ing owah-owahan pungkasan",
- "tog-hidepatrolled": "Dhelikaké suntingan kapanto ing owah-owahan pungkasan",
+ "tog-hideminor": "Dhelikaké besutan cilik ing owah-owahan pungkasan",
+ "tog-hidepatrolled": "Dhelikaké besutan awasan ing owah-owahan pungkasan",
"tog-newpageshidepatrolled": "Dhelikaké kaca kapanto saka daptar kaca anyar",
+ "tog-hidecategorization": "Dhelikaké kategorisasi kaca",
"tog-extendwatchlist": "Jembaraké daptar pangawasan kanggo nuduhaké kabèh owahan, ora mung sing paling anyar",
"tog-usenewrc": "Owah-owahané paguyuban miturut kaca nèng owah-owahan anyar lan daptar panto",
"tog-numberheadings": "Wènèhana nomer judul secara otomatis",
- "tog-showtoolbar": "Tuduhna toolbar (batang piranti) panyuntingan (mbutuhaké JavaScript)",
- "tog-editondblclick": "Sunting kaca nganggo klik ping loro (mbutuhaké JavaScript)",
+ "tog-showtoolbar": "Tuduhaké wilah piranti sarana besut",
+ "tog-editondblclick": "Besut kaca sarana ngeklik pindho",
"tog-editsectiononrightclick": "Fungsèkna panyuntingan sub-bagian mawa klik-tengen ing judul bagian (mbutuhaké JavaScript)",
"tog-watchcreations": "Tambahaké kaca sing tak gawé lan berkas sing tak unggah nèng daptar pangawasan",
"tog-watchdefault": "Tambahaké kaca lan berkas sing tak sunting nèng daptar pangawasan",
"tog-watchmoves": "Tambahaké kaca lan berkas sing tak pindhahaké nèng daptar pangawasan",
"tog-watchdeletion": "Tambahaké kaca lan berkas sing tak busak nèng daptar pangawasan",
+ "tog-watchuploads": "Tambahaké barkas anyar sing tak unggah nyang pawawanganku",
+ "tog-watchrollback": "Tambahaké kaca sing tak wurungaké nyang pawawanganku",
"tog-minordefault": "Tandhanana kabèh suntingan dadi suntingan cilik secara baku",
"tog-previewontop": "Tuduhna pratayang sadurungé kothak sunting lan ora sawisé",
"tog-previewonfirst": "Tuduhna pratayang ing suntingan kapisan",
@@ -43,80 +46,82 @@
"tog-shownumberswatching": "Tuduhna cacahé pangawas",
"tog-oldsig": "Tapak asma sing ana:",
"tog-fancysig": "Anggepen tapak asta minangka teks wiki (tanpa pranala otomatis)",
- "tog-uselivepreview": "Nganggoa pratayang langsung (mbutuhaké JavaScript) (eksperimental)",
+ "tog-uselivepreview": "Trapaké prawuryan langsung",
"tog-forceeditsummary": "Ãlingna aku menawa kothak ringkesan suntingan isih kosong",
"tog-watchlisthideown": "Delikna suntinganku ing daftar pangawasan",
- "tog-watchlisthidebots": "Delikna suntingan ing daftar pangawasan",
+ "tog-watchlisthidebots": "Dhelikaké besutan bot saka pangawasan",
"tog-watchlisthideminor": "Delikna suntingan kecil di daftar pangawasan",
"tog-watchlisthideliu": "Ngumpetaké suntingan panganggo sing mlebu log seka daftar pangawasan",
+ "tog-watchlistreloadautomatically": "Mot manèh pawawangan kanthi otomanis samangsa panyaring diowah (butuh JavaScript)",
"tog-watchlisthideanons": "Ngumpetaké suntingan panganggo anonim seka daftar pangawasan",
"tog-watchlisthidepatrolled": "Delikna suntingan sing wis dipatroli saka daftar pangawasan",
+ "tog-watchlisthidecategorization": "Dhelikaké kategorisasi kaca",
"tog-ccmeonemails": "Kirimana aku salinan layang e-mail sing tak-kirimaké menyang wong liya",
"tog-diffonly": "Aja dituduhaké isi kaca ing ngisor bédané suntingan",
"tog-showhiddencats": "Tuduhna kategori sing didelikaké",
"tog-norollbackdiff": "Lirwaaké prabédan sawusé nglakokaké sawijining pambalikan.",
"tog-useeditwarning": "Ãlingaké kula yèn kula ninggalaké suntingan sing durung kasimpen",
- "tog-prefershttps": "Nganggo sambungan sing aman rikala mlebet log",
- "underline-always": "Tansah",
- "underline-never": "Ora",
+ "tog-prefershttps": "Panggah sarana sambungan aman nalika mlebu",
+ "underline-always": "Mesthi",
+ "underline-never": "Ora tau",
"underline-default": "Kulit atau penjelajah bawaan",
"editfont-style": "Modhèl aksara (font) ing kotak suntingan:",
"editfont-default": "Standar panjelajah wèb",
- "editfont-monospace": "Aksara (font) Monospace",
- "editfont-sansserif": "Aksara (font) Sans-serif",
- "editfont-serif": "Aksara (font) Serif",
+ "editfont-monospace": "Fon monospasi",
+ "editfont-sansserif": "Fon tansèrif",
+ "editfont-serif": "Fon sèrif",
"sunday": "Minggu",
"monday": "Senèn",
- "tuesday": "Slasa",
+ "tuesday": "Selasa",
"wednesday": "Rebo",
"thursday": "Kemis",
- "friday": "Jemuwah",
+ "friday": "Jumuwah",
"saturday": "Setu",
"sun": "Min",
"mon": "Sen",
"tue": "Sel",
- "wed": "Rab",
- "thu": "Kam",
- "fri": "Jem",
+ "wed": "Reb",
+ "thu": "Kem",
+ "fri": "Jum",
"sat": "Set",
"january": "Januari",
- "february": "Fébruari",
+ "february": "Pébruari",
"march": "Maret",
"april": "April",
- "may_long": "Méi",
+ "may_long": "Mèi",
"june": "Juni",
"july": "Juli",
"august": "Agustus",
- "september": "September",
+ "september": "Sèptèmber",
"october": "Oktober",
- "november": "November",
+ "november": "Nopèmber",
"december": "Désèmber",
"january-gen": "Januari",
- "february-gen": "Fébruari",
+ "february-gen": "Fèbruari",
"march-gen": "Maret",
"april-gen": "April",
- "may-gen": "Méi",
+ "may-gen": "Mèi",
"june-gen": "Juni",
"july-gen": "Juli",
"august-gen": "Agustus",
- "september-gen": "September",
+ "september-gen": "Sèptèmber",
"october-gen": "Oktober",
- "november-gen": "November",
+ "november-gen": "Nopèmber",
"december-gen": "Désèmber",
"jan": "Jan",
- "feb": "Feb",
+ "feb": "Pèb",
"mar": "Mar",
"apr": "Apr",
- "may": "Méi",
+ "may": "Mèi",
"jun": "Jun",
"jul": "Jul",
"aug": "Agu",
- "sep": "Sep",
+ "sep": "Sèp",
"oct": "Okt",
- "nov": "Nov",
- "dec": "Des",
+ "nov": "Nop",
+ "dec": "Dès",
"january-date": "Januari $1",
- "february-date": "Februari $1",
+ "february-date": "Pèbruari $1",
"march-date": "Maret $1",
"april-date": "April $1",
"may-date": "$1 Mèi",
@@ -127,190 +132,201 @@
"october-date": "Oktober $1",
"november-date": "$1 Novèmber",
"december-date": "$1 Dèsèmber",
+ "period-am": "Isuk-Awan",
+ "period-pm": "Soré-Wengi",
"pagecategories": "{{PLURAL:$1|Kategori|Kategori}}",
- "category_header": "Artikel ing kategori \"$1\"",
+ "category_header": "Kaca sajeroning kategori \"$1\"",
"subcategories": "Subkategori",
- "category-media-header": "Média ing kategori \"$1\"",
+ "category-media-header": "Médhia sajeroning kategori \"$1\"",
"category-empty": "''Kategori iki saiki ora ngandhut artikel utawa média.''",
- "hidden-categories": "{{PLURAL:$1|Kategori sing didelikaké|Kategori sing didelikaké}}",
- "hidden-category-category": "Kategori sing didelikaké",
- "category-subcat-count": "{{PLURAL:$2|Kategori iki namung nduwé subkategori ing ngisor ikit.|Dituduhaké {{PLURAL:$1|subkategori|$1 subkategori}} sing kalebu ing kategori iki saka total $2.}}",
+ "hidden-categories": "{{PLURAL:$1|Kategori kadhelikaké|Kategori kadhelikaké}}",
+ "hidden-category-category": "Kategori kadhelikan",
+ "category-subcat-count": "{{PLURAL:$2|Kategori iki mung ngandhut subkategori ngisor iki.|Kategori iki ngandhut {{PLURAL:$1|subkategori|$1 subkategori}} ngisor iki saka gunggung $2 subkategori.}}",
"category-subcat-count-limited": "Kategori iki ora duwé {{PLURAL:$1|subkategori|$1 subkategori}} ''berikut''.",
- "category-article-count": "{{PLURAL:$2|Kategori iki namung ndarbèni kaca iki.|Dituduhaké {{PLURAL:$1|kaca|$1 kaca-kaca}} sing kalebu ing kategori iki saka gunggungé $2.}}",
+ "category-article-count": "{{PLURAL:$2|Kategori iki mung ngandhut kaca ngisor iki.|{{PLURAL:$1|Kaca|$1 kaca}} ngisor iki ana ing kategori iki saka gunggung $2 kaca.}}",
"category-article-count-limited": "Kategori iki ngandhut {{PLURAL:$1|kaca|$1 kaca-kaca}} sing kapacak ing ngisor iki.",
- "category-file-count": "{{PLURAL:$2|Kategori iki namung nduwé berkas iki.|Dituduhaké {{PLURAL:$1|berkas|$1 berkas-berkas}} sing kalebu ing kategori iki saka gunggungé $2.}}",
+ "category-file-count": "{{PLURAL:$2|Kategori iki mung isi barkas iki.|{{PLURAL:$1|Barkas|$1 barkas}} iki ana sajeroning kategori iki saka $2 gunggungé.}}",
"category-file-count-limited": "Kategori iki ndarbèni {{PLURAL:$1|berkas|$1 berkas-berkas}} sing kapacak ing ngisor iki.",
"listingcontinuesabbrev": "samb.",
- "index-category": "Kaca sing diindhèks",
- "noindex-category": "Kaca sing ora diindhèks",
- "broken-file-category": "Kaca kanthi pranala gambar rusak",
- "about": "Prakara",
- "article": "Artikel",
- "newwindow": "(buka ing jendhéla anyar)",
- "cancel": "Batalna",
+ "index-category": "Kaca kaindhèksan",
+ "noindex-category": "Kaca ora kaindhèksan",
+ "broken-file-category": "Kaca mawa pranala berkas rusak",
+ "about": "Bab",
+ "article": "Kaca isi",
+ "newwindow": "(buka mawa jendhéla anyar)",
+ "cancel": "Wurungaké",
"moredotdotdot": "Liyané...",
- "morenotlisted": "Isih ana sing ora didaptarne...",
+ "morenotlisted": "Pratélan iki ora jangkep.",
"mypage": "Kaca",
"mytalk": "Wicara",
- "anontalk": "Dhiskusi IP puniki",
- "navigation": "Pandhu Arah",
- "and": " Lan",
+ "anontalk": "Rembug",
+ "navigation": "Napigasi",
+ "and": " lan",
"qbfind": "Golèk",
- "qbbrowse": "Navigasi",
- "qbedit": "Sunting",
+ "qbbrowse": "Luru",
+ "qbedit": "Besut",
"qbpageoptions": "Kaca iki",
- "qbmyoptions": "Opsiku",
- "faq": "FAQ (Pitakonan sing kerep diajokaké)",
- "faqpage": "Project:FAQ",
- "actions": "Tindakan",
- "namespaces": "Ruang jeneng",
- "variants": "Varian",
- "navigation-heading": "Menu navigasi",
- "errorpagetitle": "Kasalahan",
- "returnto": "Bali menyang $1.",
+ "qbmyoptions": "Kaca-kacaku",
+ "faq": "Pitakon Kerep",
+ "faqpage": "Project:Pitakon Kerep",
+ "actions": "Tumindak",
+ "namespaces": "Lowah aran",
+ "variants": "Parian",
+ "navigation-heading": "Menu napigasi",
+ "errorpagetitle": "Cacad",
+ "returnto": "Bali nyang $1.",
"tagline": "Saka {{SITENAME}}",
"help": "Pitulung",
- "search": "Panggolèkan",
+ "search": "Golèk",
"searchbutton": "Golèk",
- "go": "Nuju menyang",
- "searcharticle": "Nuju menyang",
- "history": "Vèrsi sadurungé",
- "history_short": "Vèrsi lawas",
- "updatedmarker": "diowahi wiwit kunjungan pungkasanku",
- "printableversion": "Versi cithak",
+ "go": "Menyang",
+ "searcharticle": "Menyang",
+ "history": "Sajarah kaca",
+ "history_short": "Babad",
+ "updatedmarker": "wis inganyaran kawit tekaku sing pungkasan",
+ "printableversion": "Cara cithakan",
"permalink": "Pranala permanèn",
"print": "Cithak",
- "view": "Pirsani",
- "view-foreign": "Pirsani ing $1",
- "edit": "Sunting",
- "create": "Nggawé",
- "create-local": "Tambah pawedharan lokal",
- "editthispage": "Sunting kaca iki",
- "create-this-page": "Nggawé kaca iki",
+ "view": "Deleng",
+ "view-foreign": "Deleng nyang $1",
+ "edit": "Besut",
+ "edit-local": "Besut panyandra enggon-enggonan",
+ "create": "Gawé",
+ "create-local": "Tambah panyadra enggon-enggonan",
+ "editthispage": "Besut kaca iki",
+ "create-this-page": "Gawé kaca iki",
"delete": "Busak",
"deletethispage": "Busak kaca iki",
- "undeletethispage": "Wurung busak kaca iki",
- "undelete_short": "Batal busak $1 {{PLURAL:$1|suntingan|suntingan}}",
+ "undeletethispage": "Wurungaké pambusaking kaca iki",
+ "undelete_short": "Batal busak {{PLURAL:$1|sabesutan|$1 besutan}}",
"viewdeleted_short": "Pirsani {{PLURAL:$1|suntingan|suntingan}} ingkang sampun kabusak",
- "protect": "Reksanen",
- "protect_change": "ngowahi reksanan",
- "protectthispage": "Reksanen kaca iki",
- "unprotect": "Owahi pangreksan",
- "unprotectthispage": "Owahi pangreksan kaca iki",
+ "protect": "Reksa",
+ "protect_change": "owah",
+ "protectthispage": "Reksa kaca iki",
+ "unprotect": "Owah rereksan",
+ "unprotectthispage": "Owah rereksan kaca iki",
"newpage": "Kaca anyar",
- "talkpage": "Dhiskusèkna kaca iki",
- "talkpagelinktext": "Wicara",
- "specialpage": "Kaca astaméwa",
- "personaltools": "Piranti pribadi",
- "articlepage": "nDeleng artikel",
- "talk": "Dhiskusi",
- "views": "Tampilan",
+ "talkpage": "Rembug kaca iki",
+ "talkpagelinktext": "gunem",
+ "specialpage": "Kaca mirunggan",
+ "personaltools": "Piranti pribadhi",
+ "articlepage": "Deleng kaca isi",
+ "talk": "Rembug",
+ "views": "Praèn",
"toolbox": "Piranti",
- "userpage": "Ndeleng kaca panganggo",
- "projectpage": "Ndeleng kaca proyèk",
- "imagepage": "Deleng kaca berkas",
- "mediawikipage": "Ndeleng kaca pesen sistem",
- "templatepage": "Ndeleng kaca cithakan",
- "viewhelppage": "Ndeleng kaca pitulung",
- "categorypage": "Ndeleng kaca kategori",
- "viewtalkpage": "Ndeleng kaca dhiskusi",
- "otherlanguages": "Basa liya",
- "redirectedfrom": "(Dialihkan dari $1)",
- "redirectpagesub": "Kaca pangalihan",
- "lastmodifiedat": "Kaca iki diowahi pungkasané nalika $2, $1.",
+ "userpage": "Deleng kaca panganggo",
+ "projectpage": "Deleng kaca proyèk",
+ "imagepage": "Deleng kaca barkas",
+ "mediawikipage": "Deleng kaca nawala",
+ "templatepage": "Deleng kaca cithakan",
+ "viewhelppage": "Deleng kaca pitulung",
+ "categorypage": "Deleng kaca kategori",
+ "viewtalkpage": "Deleng parembugan",
+ "otherlanguages": "Ing basa liya",
+ "redirectedfrom": "(Dilih saka $1)",
+ "redirectpagesub": "Alih kaca",
+ "redirectto": "Malih nyang:",
+ "lastmodifiedat": "Kaca iki pungkasan diowah kala $1, tabuh $2.",
"viewcount": "Kaca iki wis tau diaksès cacahé ping {{PLURAL:$1|siji|$1}}.",
- "protectedpage": "Kaca sing direksa",
- "jumpto": "Langsung menyang:",
- "jumptonavigation": "navigasi",
+ "protectedpage": "Kaca kareksa",
+ "jumpto": "Jujug:",
+ "jumptonavigation": "napigasi",
"jumptosearch": "golèk",
"view-pool-error": "Nyuwun ngapuro, peladèn lagi sibuk wektu iki.\nKakèhan panganggo sing nyoba mbukak kaca iki.\nEntèni sedhéla sadurungé nyoba ngaksès kaca iki manèh .\n\n$1",
+ "generic-pool-error": "Nyuwun pangapura, paladèn saiki nembé arungan.\nKakèhan panganggo sing péngin ndeleng sumber iki.\nEntèna sadhéla sadurungé sampéyan nekani sumber iki manèh.",
"pool-timeout": "Kelangkung wekdal nengga kunci",
"pool-queuefull": "Kempalan antrian kebak",
"pool-errorunknown": "Kalepata ingkang mboten dipun mangertosi",
- "aboutsite": "Prakara {{SITENAME}}",
- "aboutpage": "Project:Prakara",
+ "poolcounter-usage-error": "Cacad panganggo: $1",
+ "aboutsite": "Bab {{SITENAME}}",
+ "aboutpage": "Project:Bab",
"copyright": "Kabèh isi kasedyakaké miturut $1.",
"copyrightpage": "{{ns:project}}:Hak cipta",
- "currentevents": "Prastawa saiki",
- "currentevents-url": "Project:Prastawa saiki",
- "disclaimers": "Pamaidonan",
- "disclaimerpage": "Project:Panyangkalan umum",
- "edithelp": "Pitulung panyuntingan",
- "mainpage": "Kaca Utama",
- "mainpage-description": "Kaca Utama",
+ "currentevents": "Kadadéan saiki",
+ "currentevents-url": "Project:Kadadéan saiki",
+ "disclaimers": "Sélakan",
+ "disclaimerpage": "Project:Sélakan umum",
+ "edithelp": "Pitulung besut",
+ "helppage-top-gethelp": "Pitulung",
+ "mainpage": "Kaca Pokok",
+ "mainpage-description": "Kaca pokok",
"policy-url": "Project:Kabijakan",
- "portal": "Gapura komunitas",
- "portal-url": "Project:Portal komunitas",
- "privacy": "Kebijakan privasi",
- "privacypage": "Project:Kabijakan privasi",
+ "portal": "Gapura paguyuban",
+ "portal-url": "Project:Garupa paguyuban",
+ "privacy": "Niti pripasi",
+ "privacypage": "Project:Niti pripasi",
"badaccess": "Aksès ora olèh",
"badaccess-group0": "Panjenengan ora pareng nglakokaké tindhakan sing panjenengan gayuh.",
"badaccess-groups": "Pratingkah panjenengan diwatesi tumrap panganggo ing {{PLURAL:$2|klompoké|klompoké}}: $1.",
"versionrequired": "Dibutuhaké MediaWiki vèrsi $1",
"versionrequiredtext": "MediaWiki vèrsi $1 dibutuhaké kanggo nggunakaké kaca iki. Mangga mirsani [[Special:Version|kaca iki]]",
- "ok": "OK",
- "retrievedfrom": "Sumber artikel iki saka kaca situs web: \"$1\"",
+ "ok": "Oké",
+ "retrievedfrom": "Dijupuk saka: \"$1\"",
"youhavenewmessages": "Panjenengan kagungan $1 ($2).",
"youhavenewmessagesfromusers": "Sampéyan nduwé $1 saka {{PLURAL:$3|panganggo liya|$3 panganggo}} ($2).",
"youhavenewmessagesmanyusers": "Sampéyang nduwé $1 saka akèh panganggo ($2).",
"newmessageslinkplural": "{{PLURAL:$1|layang anyar|999=layang anyar}}",
"newmessagesdifflinkplural": "{{PLURAL:$1|owahan|999=owahan}} pungkasan",
"youhavenewmessagesmulti": "Panjenengan olèh pesen-pesen anyar $1",
- "editsection": "sunting",
- "editold": "sunting",
+ "editsection": "besut",
+ "editold": "besut",
"viewsourceold": "deleng sumber",
- "editlink": "sunting",
+ "editlink": "besut",
"viewsourcelink": "deleng sumber",
- "editsectionhint": "Sunting bagian: $1",
- "toc": "Bab lan paragraf",
- "showtoc": "tuduhna",
- "hidetoc": "delikna",
- "collapsible-collapse": "Singidaken",
- "collapsible-expand": "Tuduhna",
+ "editsectionhint": "Besut pérangan: $1",
+ "toc": "Isi",
+ "showtoc": "tuduhaké",
+ "hidetoc": "dhelikaké",
+ "collapsible-collapse": "Neb",
+ "collapsible-expand": "Wenga",
+ "confirmable-confirm": "{{GENDER:$1|Sampéyan}} yakin?",
+ "confirmable-yes": "Iya",
+ "confirmable-no": "Ora",
"thisisdeleted": "Mirsani utawa mbalèkaké $1?",
- "viewdeleted": "Mirsani $1?",
+ "viewdeleted": "Deleng $1?",
"restorelink": "$1 {{PLURAL:$1|suntingan|suntingan}} sing wis kabusak",
"feedlinks": "Asupan:",
"feed-invalid": "Tipe permintaan asupan ora bener.",
"feed-unavailable": "Umpan sindikasi (''syndication feeds'') ora kasedyakaké",
"site-rss-feed": "$1 ''RSS Feed''",
- "site-atom-feed": "$1 ''Atom Feed''",
+ "site-atom-feed": "Umpan atom $1",
"page-rss-feed": "\"$1\" ''RSS Feed''",
"page-atom-feed": "\"$1\" ''Atom Feed''",
"red-link-title": "$1 (kaca durung ana)",
"sort-descending": "Urutaké medhun",
"sort-ascending": "Urutaké munggah",
- "nstab-main": "Artikel",
- "nstab-user": "Panganggo",
- "nstab-media": "Media",
- "nstab-special": "Astamiwa",
- "nstab-project": "Proyek",
- "nstab-image": "Gambar",
- "nstab-mediawiki": "Pariwara",
- "nstab-template": "Cithak",
- "nstab-help": "Pitulung",
+ "nstab-main": "Kaca",
+ "nstab-user": "Kaca panganggo",
+ "nstab-media": "Kaca médhia",
+ "nstab-special": "Kaca mirunggan",
+ "nstab-project": "Kaca proyèk",
+ "nstab-image": "Barkas",
+ "nstab-mediawiki": "Nawala",
+ "nstab-template": "Cithakan",
+ "nstab-help": "Kaca pitulung",
"nstab-category": "Kategori",
- "nosuchaction": "Ora ana pratingkah kaya ngono",
+ "mainpage-nstab": "Kaca pokok",
+ "nosuchaction": "Ora ana lelakon mangkono",
"nosuchactiontext": "Pratingkah sing dirinci déning URL ora sah.\nPanjenengan manawa salah ketik nalika ngisi URL, utawa salah ngisi pranala.\nIki manawa uga nuduhaké anané kesalahan ing piranti alus sing dipigunakaké déning {{SITENAME}}.",
- "nosuchspecialpage": "Ora ana kaca astaméwa kaya ngono",
+ "nosuchspecialpage": "Ora ana kaca mirunggan mangkono",
"nospecialpagetext": "Panjenengan nyuwun kaca astaméwa sing ora sah. Daftar kaca astaméwa sing sah bisa dipirsani ing [[Special:SpecialPages|daftar kaca astaméwa]].",
- "error": "Kasalahan",
- "databaseerror": "Kasalahan database",
+ "error": "Cacad",
+ "databaseerror": "Cacad umpak data",
"databaseerror-text": "Ana kerusakan ing basis data (query error).\n\nMungkin ana masalah ing software-e.",
"databaseerror-textcl": "Ana kerusakan ing basis data (query error).",
"databaseerror-query": "Query: $1",
"databaseerror-function": "Function: $1",
- "databaseerror-error": "Error: $1",
+ "databaseerror-error": "Cacad: $1",
"laggedslavemode": "Pènget: Kaca iki mbokmenawa isiné dudu pangowahan pungkasan.",
- "readonly": "Database dikunci",
+ "readonly": "Umpak data kagembok",
"enterlockreason": "Lebokna alesan panguncèn, kalebu uga prakiran kapan kunci bakal dibuka",
"readonlytext": "Database lagi dikunci marang panampan anyar. Pangurus sing ngunci mènèhi katrangan kaya mangkéné: $1",
"missing-article": "Basis data ora bisa nemokaké tèks kaca sing kuduné ana, yaiku \"$1\" $2.\nBab iki bisasané disebabaké déning pranala daluwarsa menyang revisi sadurungé kaca sing wis dibusak.\nYèn dudu iki panyebabé, panjenengan manawa bisa nemokaké kasalahan (''bug'') jroning piranti alus (''software''). Mangga dilapuraké bab iki menyang [[Special:ListUsers/sysop|administrator]], kanthi nyebutaké alamat URL sing dituju",
- "missingarticle-rev": "(révisi#: $1)",
+ "missingarticle-rev": "(owahan#: $1)",
"missingarticle-diff": "(Béda: $1, $2)",
"readonly_lag": "Database wis dikunci mawa otomatis sawetara database sékundhèr lagi nglakoni sinkronisasi mawa database utama",
- "internalerror": "Kasalahan internal",
- "internalerror_info": "Kaluputan internal: $1",
+ "internalerror": "Cacad njero",
+ "internalerror_info": "Cacad njero: $1",
"filecopyerror": "Ora bisa nulad berkas \"$1\" menyang \"$2\".",
"filerenameerror": "Ora bisa ngowahi saka \"$1\" dadi \"$2\".",
"filedeleteerror": "Ora bisa mbusak berkas \"$1\".",
@@ -323,12 +339,12 @@
"cannotdelete-title": "Ora bisa mbusak kaca \"$1\"",
"delete-hook-aborted": "Pambusakan dibatalaké déning ''hook''.\nOra ana alesané.",
"no-null-revision": "Ora isa nggawe revisi 'null' anyar kanggo kaca \"$1\"",
- "badtitle": "Judhulé ora sah",
+ "badtitle": "Sésirah ala",
"badtitletext": "Judhul kaca sing panjenengan ora bisa dituduhaké, kosong, utawa dadi judhul antar-basa utawa judhul antar-wiki. Iku bisa uga ana sawijining utawa luwih aksara sing ora bisa didadèkaké judhul.",
"perfcached": "Data iki mung dijupuk saka papan singgahan lan mungkin ora kaanyaran. Maksimum {{PLURAL:$1|sak asil|$1 asil}} sumadhiya nèng papan singgahan.",
"perfcachedts": "Data iki mung dijupuk saka papan singgahan lan mungkin dianyari pungkasan $1. Maksimum {{PLURAL:$4|sak asil|$4 asil}} sumadhiya nèng papan singgahan.",
"querypage-no-updates": "Update saka kaca iki lagi dipatèni. Data sing ana ing kéné saiki ora bisa bakal dibalèni unggah manèh.",
- "viewsource": "Tuduhna sumber",
+ "viewsource": "Deleng sumber",
"viewsource-title": "Delok sumberé $1",
"actionthrottled": "Tindakan diwatesi",
"actionthrottledtext": "Minangka sawijining pepesthèn anti-spam, panjenengan diwatesi nglakoni tindhakan iki sing cacahé kakèhan ing wektu cendhak.\nMangga dicoba manèh ing sawetara menit.",
@@ -355,81 +371,89 @@
"exception-nologin-text-manual": "Tulung $1 kanggo ngakses kaca utawa kelakon iki.",
"virus-badscanner": "Kasalahan konfigurasi: pamindai virus ora dikenal: ''$1''",
"virus-scanfailed": "''Pemindaian'' utawa ''scan'' gagal (kode $1)",
- "virus-unknownscanner": "Antivirus ora ditepungi:",
+ "virus-unknownscanner": "antivirus buhbuhan:",
"logouttext": "'''Sampéyan wis metu log'''\n\nCathet yèn sapérangan kaca mungkin isih nampilaké kayata sampéyan isih mlebu log, kuwi bisa ilang yèn sampéyan ngresiki ''cache'' pramban sampéyan.",
+ "cannotlogoutnow-title": "Ora bisa metu saiki",
+ "cannotlogoutnow-text": "Metu ora mungkin menawa nganggo $1.",
"welcomeuser": "Sugeng Rawuh, $1!",
"welcomecreation-msg": "Akun panjenengan wis kacipta. Aja lali nata konfigurasi [[Special:Preferences|preferensi {{SITENAME}}]] panjenengan.",
- "yourname": "Asma pangangeman",
+ "yourname": "Jeneng panganggo:",
"userlogin-yourname": "Jeneng panganggo",
- "userlogin-yourname-ph": "Lebokaké jenengné panganggo",
- "createacct-another-username-ph": "Lebokna jeneng panganggo:",
- "yourpassword": "Tembung sandhi:",
- "userlogin-yourpassword": "Tembung sandhi",
- "userlogin-yourpassword-ph": "Lebokna tembung sandhi",
- "createacct-yourpassword-ph": "Lebokna tembung sandhi",
- "yourpasswordagain": "Balènana tembung sandhi",
- "createacct-yourpasswordagain": "Konfirmasi tembung sandhi",
- "createacct-yourpasswordagain-ph": "Lebokna tembung sandhi maneh",
+ "userlogin-yourname-ph": "Isi jeneng panganggo Sampéyan",
+ "createacct-another-username-ph": "Isi jeneng panganggo",
+ "yourpassword": "Tembung wadi:",
+ "userlogin-yourpassword": "Tembung wadi",
+ "userlogin-yourpassword-ph": "Lebokaké tembung wadining sampéyan",
+ "createacct-yourpassword-ph": "Lebokaké tembung wadi",
+ "yourpasswordagain": "Tik manèh tembung wadiné:",
+ "createacct-yourpasswordagain": "Netepaké tembung wadi",
+ "createacct-yourpasswordagain-ph": "Lebokaké manèh tembung wadiné",
"remembermypassword": "Ãmut tembung sandi kula (salebeting $1 {{PLURAL:$1|dinten|dinten}})",
- "userlogin-remembermypassword": "Gawe supaya aku tetep mlebet log terus",
+ "userlogin-remembermypassword": "Gawé amrih aku panggah kalebu",
"userlogin-signwithsecure": "Nganggo koneksi aman",
+ "cannotloginnow-title": "Ora bisa mlebu saiki",
+ "cannotloginnow-text": "Mlebu ora mungkin menawa nganggo $1.",
"yourdomainname": "Dhomain panjenengan",
"password-change-forbidden": "Sampéyan ora bisa ngganti tembung sandhi nèng wiki iki.",
"externaldberror": "Ana kasalahan otèntikasi basis dhata èksternal utawa panjenengan ora pareng nglakoni pemutakhiran marang akun èksternal panjenengan.",
- "login": "Mlebu log",
+ "login": "Mlebu",
"nav-login-createaccount": "Log mlebu / nggawé rékening (akun)",
"userlogin": "Mlebu log / gawé rékening (akun)",
- "userloginnocreate": "Mlebu log",
- "logout": "Oncat",
- "userlogout": "Metu log",
- "notloggedin": "Durung mlebu log",
- "userlogin-noaccount": "Durung kagungan akun?",
- "userlogin-joinproject": "Gabung {{SITENAME}}",
+ "userloginnocreate": "Mlebu",
+ "logout": "Metu",
+ "userlogout": "Metu",
+ "notloggedin": "Durung kalebu",
+ "userlogin-noaccount": "Durung duwé akun?",
+ "userlogin-joinproject": "Mèlua {{SITENAME}}",
"nologin": "Durung kagungan asma panganggo? '''$1'''.",
- "nologinlink": "Ndaftaraké akun anyar",
- "createaccount": "Nggawé akun anyar",
- "gotaccount": "Wis kagungan akun? '''$1'''.",
+ "nologinlink": "Gawé akun",
+ "createaccount": "Gawé akun",
+ "gotaccount": "Wis duwé akun? $1.",
"gotaccountlink": "Mlebu",
"userlogin-resetlink": "Lali rincian mlebu log Sampéyan?",
- "userlogin-resetpassword-link": "Sampéyan kélangan tembung sandhi?",
+ "userlogin-resetpassword-link": "Lali tembung wadining sampéyan?",
+ "userlogin-helplink2": "Tulungi mlebu",
"userlogin-loggedin": "Sampeyan sampun mlebet log dadi {{GENDER:$1|$1}}.\nGunakna formulir ing ngisor iki kanggo mlebet log dadi panganggo liyane.",
- "userlogin-createanother": "Gawé akun anyar",
+ "userlogin-createanother": "Gawé akun liya",
"createacct-emailrequired": "Alamat layang èlèktronik",
- "createacct-emailoptional": "Alamat layang èlèktronik (ora kudu)",
- "createacct-email-ph": "Lebokna alamat layang èlèktronik sampeyan",
- "createacct-another-email-ph": "Lebokna alamat layang èlèktronik",
+ "createacct-emailoptional": "Alamat layang èlèktronik (manasuka)",
+ "createacct-email-ph": "Lebokaké layang èlèktronik sampéyan",
+ "createacct-another-email-ph": "Isi alamat layang èlèktronik",
"createaccountmail": "Nganggoa sandi sauntara sembarang lan kirimna liwat layang e-mail ing ngisor iki",
- "createacct-realname": "Jeneng asli (ora kudu)",
+ "createacct-realname": "Jeneng asli (manasuka)",
"createaccountreason": "Alesan:",
"createacct-reason": "Alesan",
"createacct-reason-ph": "Kenapa sampeyan nggawe akun liyane",
- "createacct-submit": "Gawé akun",
- "createacct-another-submit": "Gawé akun anyar",
- "createacct-benefit-heading": "{{SITENAME}} digawe karo wong-wong kaya sampeyan.",
- "createacct-benefit-body1": "{{PLURAL:$1|owahan|owahan}}",
+ "createacct-submit": "Gawé akun sampéyan",
+ "createacct-another-submit": "Gawé akun",
+ "createacct-benefit-heading": "{{SITENAME}} digawé déning wong-wong kaya déné sampéyan.",
+ "createacct-benefit-body1": "{{PLURAL:$1|besutan|besutan}}",
"createacct-benefit-body2": "{{PLURAL:$1|kaca|kaca}}",
- "createacct-benefit-body3": "{{PLURAL:$1|kontributor|kontributor}} keri dhewe",
+ "createacct-benefit-body3": "{{PLURAL:$1|panyumbang|panyumbang}} pungkasan",
"badretype": "Sandhi panjenengan ora gathuk",
+ "usernameinprogress": "Panggawéning akun tumrap jeneng panganggo iki tembé lumaku.\nEntèni sadhéla.",
"userexists": "Jeneng panganggo sing dilebokaké lagi dianggo.\nMangga pilih jeneng liya.",
- "loginerror": "Kasalahan mlebu log",
- "createacct-error": "Ora isa nggawe akun",
- "createaccounterror": "Ora bisa nyipta akun: $1",
+ "loginerror": "Cacad nalika mlebu",
+ "createacct-error": "Cacad nalika nggawé akun",
+ "createaccounterror": "Ora bisa gawé akun: $1",
"nocookiesnew": "Rékening utawa akun panganggo panjenengan wis digawé, nanging panjenengan durung mlebu log. {{SITENAME}} nggunakaké ''cookies'' kanggo log panganggo. ''Cookies'' ing panjlajah wèb panjengengan dipatèni. Mangga diaktifaké lan mlebu log manèh mawa jeneng panganggo lan tembung sandhi panjenengan.",
"nocookieslogin": "{{SITENAME}} nggunakaké ''cookies'' kanggo log panganggoné. ''Cookies'' ing panjlajah wèb panjenengan dipatèni. Mangga ngaktifaké manèh lan coba manèh.",
- "nocookiesfornew": "Akun panganggé boten kadamel, amargi kita boten saged mesthèkaken sumberipun.\nPesthèkaken panjenengan sampun ngaktifaken kuki, lajeng amot malih kaca punika lan cobi malih.",
+ "nocookiesfornew": "Akun panganggo ora digawé amarga sumberé ora bisa dipesthèkaké.\nPesthèkaké sampéyan wis ngurubaké kuki, banjur balèni ngamot kaca iki lan njajal manèh.",
"noname": "Asma panganggo sing panjenengan pilih ora sah.",
- "loginsuccesstitle": "Bisa suksès mlebu log",
+ "loginsuccesstitle": "Kasil mlebu",
"loginsuccess": "'''Panjenengan saiki mlebu ing {{SITENAME}} kanthi asma \"$1\".'''",
"nosuchuser": "Ora ana panganggo mawa asma \"$1\".\nJeneng panganggo iku mbédakaké kapitalisasi.\nCoba dipriksa manèh pasang aksarané, utawa [[Special:UserLogin/signup|gawé akun anyar]].",
"nosuchusershort": "Ora ana panganggo mawa asma \"$1\". Coba dipriksa manèh pasang aksarané (éjaané).",
"nouserspecified": "Panjenengan kudu milih asma panganggo.",
- "login-userblocked": "Panganggé punika dipunblok. Login boten dipunidinaken",
+ "login-userblocked": "Panganggo iki pinalangan. Ora kena mbelu.",
"wrongpassword": "Tembung sandhi sing dipilih salah. Mangga coba manèh.",
"wrongpasswordempty": "Panjenengan ora milih tembung sandhi. Mangga dicoba manèh.",
"passwordtooshort": "Tembung sesinglon paling sethithik cacahé {{PLURAL:$1|1 aksara|$1 aksara}}.",
+ "passwordtoolong": "Tembung wadi ora kena munjuli {{PLURAL:$1|1 pralambang|$1 pralambang}}.",
+ "passwordtoopopular": "Tembung wadi sing wis kaprah ora kena dianggo. Mangga pilih tembung wadi liya sing mbédani.",
"password-name-match": "Tembung sandi panjenengan kudu béda karo jeneng panganggo panjenengan.",
- "password-login-forbidden": "Pangginaan nami panganggé lan sandi puniki sampun kapenggak.",
- "mailmypassword": "Kirim tembung sandhi anyar",
+ "password-login-forbidden": "Panganggoning jeneng panganggo lan tembung wadi iki dilarang.",
+ "mailmypassword": "Balèni gawé tembung wadi",
"passwordremindertitle": "Pèngetan tembung sandhi saka {{SITENAME}}",
"passwordremindertext": "Ana wong (mbokmanawa panjenengan dhéwé, saka alamat IP $1) nyuwun supaya dikirimi tembung sandhi anyar kanggo {{SITENAME}} ($4). Tembung sandi sawetara kanggo panganggo \"$2\" wis digawé lan saiki \"$3\". Yèn panjenengan pancèn nggayuh iki, mangga énggal mlebu log lan ngganti tembung sandi saiki.\nTembung sandi sawetara mau bakal kadaluwarsa ing {{PLURAL:$5|sadina|$5 dina}}.\nYèn wong liya sing nglakoni panyuwunan iki, utawa panjenengan éling tembung sandi panjenengan, lan ora kepéngin ngowahi, panjenengan ora usah nggubris pesen iki lan bisa tetep nganggo tembung sandi lawas.",
"noemail": "Ora ana alamat layang e-mail sing kacathet kanggo panganggo \"$1\".",
@@ -438,7 +462,7 @@
"blocked-mailpassword": "Alamat IP panjenengan diblokir saka panyuntingan, mulané panjenengan ora olèh nganggo fungsi pèngetan tembung sandhi kanggo ''mencegah penyalahgunaan''.",
"eauthentsent": "Sawijining layang élèktronik (e-mail) kanggo ndhedhes (konfirmasi) wis dikirim menyang alamat layang élèktronik sampeyan. \n\nSadhurunge layang élèktronik liyane dikirim menyang akun kuwi, sampeyan kudu melu parentah ing layang kuwi, kanggo mastikne yen alamat layang kuwi bener-bener dhuweke sampeyan.",
"throttled-mailpassword": "Layang kanggo mbalèkaké tembung sandhi wis dikirim sasuwené ing {{PLURAL:$1|jam|$1 jam}}.\nKanggo nyegah ananing tumindhak culika, namung sak layang kanggo mbalèkaké tembung sandhi sing bakal dikirim sasuwéné ing {{PLURAL:$1|jam|$1 jam}}.",
- "mailerror": "Kasalahan ing ngirimaké layang e-mail: $1",
+ "mailerror": "Cacad nalika ngirim layang: $1",
"acct_creation_throttle_hit": "Tamu ing wiki iki kanthi alamat IP sing padha karo panjenengan wis gawé {{PLURAL:$1|1 akun|$1 akun}} ing sadina pungkasan, nganti cacah maksimum sing diidinaké.\nAmarga saka kuwi., tamu kanthi alamat IP iki ora bisa gawé akun manèh kanggo sauntara iki.",
"emailauthenticated": "Alamat layang élèktronik (e-mail) panjenengan wis didhedhes (dikonfirmasi) ing tanggal $2, jam $3.",
"emailnotauthenticated": "Alamat layang élèktronik panjenengan durung didhedhes (dikonfirmasi). \n\nSadurungé didhedhes, panjenengan ora bisa nganggo fitur layang élèktronik (e-mail) ing ngisor iki.",
@@ -447,7 +471,7 @@
"invalidemailaddress": "Alamat e-mail iki ora bisa ditampa amarga formaté ora bener. Tulung lebokna alamat mawa format sing bener utawa kosongaké waé isèn kasebut.",
"cannotchangeemail": "Alamat layang èlèktronik akun ora bisa diganti nèng wiki iki.",
"emaildisabled": "Situs iki ora bisa ngirim layang èlèktronik.",
- "accountcreated": "Akun wis kacipta.",
+ "accountcreated": "Akun wis kagawé",
"accountcreatedtext": "Akun panganggo kanggo [[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|wicara]]) wis digawé.",
"createaccount-title": "Gawé rékening kanggo {{SITENAME}}",
"createaccount-text": "Ana wong sing nggawé sawijining akun utawa rékening kanggo alamat e-mail panjenengan ing {{SITENAME}} ($4) mawa jeneng \"$2\" lan tembung sandi \"$3\". Panjenengan disaranaké kanggo mlebu log lan ngganti tembung sandi panjenengan saiki.\n\nPanjenengan bisa nglirwakaké pesen iki yèn akun utawa rékening iki digawé déné sawijining kaluputan.",
@@ -456,26 +480,35 @@
"loginlanguagelabel": "Basa: $1",
"suspicious-userlogout": "Panjaluk panjenengan supaya metu ditolak amarga katoné panjlajah internt utawa proksi panyinggah.",
"createacct-another-realname-tip": "Jeneng asli ora kudu dilebokake.\n\nYen sampeyan milih nglebokake jeneng asli, jeneng kuwi bakal dinggo ngwenehi atribusi kanggo karya-karyane.",
- "pt-login": "Mlebet log",
- "pt-createaccount": "Damel akun enggal",
+ "pt-login": "Mlebu",
+ "pt-login-button": "Mlebu",
+ "pt-createaccount": "Gawé akun",
+ "pt-userlogout": "Metu",
"php-mail-error-unknown": "Kasalahan ora dingertèni nèng piguna mail() PHP.",
"user-mail-no-addy": "Njajal ngirim layang èlèktronik tanpa alamat layang èlèktronik.",
"user-mail-no-body": "Nyoba ngirim layang e-mail, tapi isine kosong.",
- "changepassword": "Ganti tembung sandi",
+ "changepassword": "Ganti tembung wadi",
"resetpass_announce": "Panjenengan wis mlebu log mawa kodhe sementara sing dikirim mawa e-mail. Menawa kersa nglanjutaké, panjenengan kudu milih tembung sandhi anyar ing kéné:",
"resetpass_text": "",
- "resetpass_header": "Ganti tembung sandi akun",
- "oldpassword": "Tembung sandi lawas:",
- "newpassword": "Tembung sandi anyar:",
- "retypenew": "Ketik ulang tembung sandi anyar:",
+ "resetpass_header": "Ganti tembung wadining akun",
+ "oldpassword": "Tembung wadi lawas:",
+ "newpassword": "Tembung wadi anyar:",
+ "retypenew": "Tik manèh tembung wadi anyaré:",
"resetpass_submit": "Nata tembung sandhi lan mlebu log",
"changepassword-success": "Tembung sandhi panjenengan wis suksès diowahi!",
- "resetpass_forbidden": "Tembung sandhi ora bisa diganti",
+ "botpasswords": "Tembung wadi bot",
+ "botpasswords-label-appid": "Jeneng bot:",
+ "botpasswords-label-create": "Gawé",
+ "botpasswords-label-update": "Anyari",
+ "botpasswords-label-cancel": "Batal",
+ "botpasswords-label-delete": "Busak",
+ "botpasswords-label-resetpassword": "Balèni gawé tembung wadi",
+ "resetpass_forbidden": "Tembung wadi ora bisa diganti",
"resetpass-no-info": "Panjenengan kudu mlebu log kanggo ngaksès kaca iki sacara langsung.",
- "resetpass-submit-loggedin": "Ganti tembung sandi",
+ "resetpass-submit-loggedin": "Ganti tembung wadi",
"resetpass-submit-cancel": "Batal",
"resetpass-wrong-oldpass": "Tembung sandi ora sah.\nPanjengen manawa wis kasil ganti tembung sandi utawa nyuwun tembung sandi sauntara sing anyar.",
- "resetpass-temp-password": "Tembung sandi sauntara:",
+ "resetpass-temp-password": "Tembung wadi sauntara:",
"resetpass-abort-generic": "Ngowah tembung sandhi diwurungaké déning èkstènsi.",
"passwordreset": "Balèni setèl tembung sandhi",
"passwordreset-text-one": "Lengkapana formulir iki kanggo nampa tembung sandhi sementara lewat layang elektronik.",
@@ -490,7 +523,7 @@
"passwordreset-emailtitle": "Rincian akun nèng {{SITENAME}}",
"passwordreset-emailtext-ip": "Ana uwong (mbok menawa Sampéyan, mawa angka IP $1) njaluk ganti tembung sandhiné Sampéyan ana ing {{SITENAME}} ($4). {{PLURAL:$3|Rèkèning|Rèkèning-rèkèning}} ngisor iki magepokan karo padunungané layang èlèktronik iki:\n\n$2\n\n{{PLURAL:$3|Tembung sandhi sawetara iki}} bakal kedaluwarsa ing {{PLURAL:$5|sak dina|$5 dina}}.\nSampéyan kudu mlebu log lan milih siji tembung sandhi anyar saiki. Yèn wong liya sing njaluk iki, utawa yèn Sampéyan jebul wis kèlingan tembung sandhiné sing lawas saéngga ora ana niyat kanggo ngganti, Sampéyan bisa ngejaraké wara-wara iki lan bacutaké nganggo tembung sandhiné lawas Sampéyan.",
"passwordreset-emailtext-user": "Panganggo $1 seka {{SITENAME}} njaluk ganti tembung sandhiné Sampéyan ana ing {{SITENAME}} ($4). {{PLURAL:$3|Rèkèning|Rèkèning-rèkèning}} ngisor iki magepokan karo padunungané layang èlèktronik iki:\n\n$2\n\n{{PLURAL:$3|Tembung sandhi sawetara iki}} bakal kedaluwarsa ing {{PLURAL:$5|sak dina|$5 dina}}.\nSampéyan kudu mlebu log lan milih siji tembung sandhi anyar saiki. Yèn wong liya sing njaluk iki, utawa yèn Sampéyan jebul wis kèlingan tembung sandhiné sing lawas saéngga ora ana niyat kanggo ngganti, Sampéyan bisa ngejaraké wara-wara iki lan bacutaké nganggo tembung sandhiné lawas Sampéyan.",
- "passwordreset-emailelement": "Jeneng panganggo: \n$1\n\nTembung sandhi sawetara: \n$2",
+ "passwordreset-emailelement": "Jeneng panganggo: \n$1\n\nTembung wadi sauntara: \n$2",
"passwordreset-emailsentemail": "Layang èlèktronik kanggo mbalèkaké tembung sandhi wis dikirim.",
"passwordreset-emailsent-capture": "Layang èlèktronik kanggo mbalèkaké tembung sandhi wis dikirim, bisa didelok ngisor iki.",
"passwordreset-emailerror-capture": "Layang èlèktronik pangèling tembung sandhi wis digawe, yaiku sing ditampilaké nèng ngisor iki, nanging ora kasil dikirim ing {{GENDER:$2|panganggo}}: $1",
@@ -506,60 +539,60 @@
"resettokens-text": "Anda dapat me-reset Token yang memungkinkan akses ke data pribadi tertentu yang terkait dengan akun Anda di sini.\n\nAnda harus melakukannya jika Anda secara tidak sengaja berbagi dengan seseorang atau jika akun Anda telah disusupi.",
"resettokens-no-tokens": "Ora ana token sing bisa direset.",
"resettokens-tokens": "Token:",
- "resettokens-token-label": "$1 (nilai saiki: $2)",
+ "resettokens-token-label": "$1 (biji saiki: $2)",
"resettokens-watchlist-token": "Token kangge sindikasi web (Atom/RSS) saking [[Special:Watchlist|pangowahan ing daptar pangawasan sampeyan]]",
"resettokens-done": "Reset token.",
"resettokens-resetbutton": "Reset token sing dipilih",
- "bold_sample": "Tèks iki bakal dicithak kandel",
- "bold_tip": "Cithak kandel",
- "italic_sample": "Tèks iki bakal dicithak miring",
- "italic_tip": "Cithak miring",
- "link_sample": "Judhul pranala",
+ "bold_sample": "Tulisan kandel",
+ "bold_tip": "Tulisann kandel",
+ "italic_sample": "Tulisan miring",
+ "italic_tip": "Tulisan dhoyong",
+ "link_sample": "Sesirah pranala",
"link_tip": "Pranala njero",
- "extlink_sample": "http://www.example.com judhul pranala",
- "extlink_tip": "Pranala njaba (aja lali wiwitan http:// )",
- "headline_sample": "Tèks judhul",
- "headline_tip": "Subbagian tingkat 1",
+ "extlink_sample": "http://www.example.com sesirahing pranala",
+ "extlink_tip": "Pranala jaba (élinga ater-ater http://)",
+ "headline_sample": "Tulisan sesirah",
+ "headline_tip": "Sesirah tataran 2",
"nowiki_sample": "Tèks iki ora bakal diformat",
"nowiki_tip": "Aja nganggo format wiki",
"image_sample": "Conto.jpg",
"image_tip": "Mènèhi gambar/berkas",
"media_sample": "Conto.ogg",
- "media_tip": "Pranala berkas media",
- "sig_tip": "Tapak asta panjenengan mawa tandha wektu",
+ "media_tip": "Pranala barkas",
+ "sig_tip": "Tandha tangan sampéyan mawa tandha wayah",
"hr_tip": "Garis horisontal",
- "summary": "Ringkesan:",
+ "summary": "Tingkesan:",
"subject": "Subyek/judhul:",
- "minoredit": "Iki suntingan cilik.",
- "watchthis": "Awasana kaca iki",
+ "minoredit": "Iki besutan cilik",
+ "watchthis": "Awasi kaca iki",
"savearticle": "Simpen kaca",
- "preview": "Pratayang",
- "showpreview": "Mirsani pratayang",
- "showdiff": "Tuduhna pangowahan",
+ "preview": "Prawuryan",
+ "showpreview": "Tuduhaké prawuryan",
+ "showdiff": "Tuduhaké owahan",
"anoneditwarning": "Penget: Panjenengan boten mlebet log. Alamat IP Panjenengan badhe katingal dening publik manawi Panjenengan ngayahi ewah-ewahan. Manawi Panjenengan [$1 mlebet log] utawai [$2 damel akun] , suntingan Panjenengan badhe kaatribusekaken dhumateng nama pangangge Panjenengan, lan rupi-rupi kauntungan sanesipun.",
"anonpreviewwarning": "''Sampéyan durung mlebu log. Nyimpen bakal nyathet alamat IP Sampéyan nèng riwayat sunting kaca iki.''",
"missingsummary": "'''Pènget:''' Panjenengan ora nglebokaké ringkesan panyuntingan. Menawa panjenengan mencèt tombol Simpen manèh, suntingan panjenengan bakal kasimpen tanpa ringkesan panyuntingan.",
"missingcommenttext": "Tulung lebokna komentar ing ngisor iki.",
"missingcommentheader": "'''Pangéling:''' Sampéyan durung nyadhiyakaké judhul/jejer kanggo tanggepan iki.\nYèn Sampéyan klik \"{{int:savearticle}}\" manèh, suntingan Sampéyan bakal kasimpen tanpa kuwi.",
- "summary-preview": "Pratayang ringkesan:",
+ "summary-preview": "Prawuryan tingkesan:",
"subject-preview": "Pratayang subyèk/judhul:",
- "blockedtitle": "Panganggo diblokir",
+ "blockedtitle": "Panganggo kapalangan",
"blockedtext": "'''Asma panganggo utawa alamat IP panjenengan diblokir.'''\n\nBlokir iki sing nglakoni $1.\nAlesané ''$2''.\n\n* Diblokir wiwit: $8\n* Kadaluwarsa pemblokiran ing: $6\n* Sing arep diblokir: $7\n\nPanjenengan bisa ngubungi $1 utawa [[{{MediaWiki:Grouppage-sysop}}|pangurus liyané]] kanggo ngomongaké prakara iki.\n\nPanjenengan ora bisa nggunakaké fitur 'Kirim layang e-mail panganggo iki' kejaba panjenengan wis nglebokaké alamat e-mail sing sah ing [[Special:Preferences|préferènsi]] panjenengan.\n\nAlamat IP panjenengan iku $3, lan ID pamblokiran iku #$5.\nTulung kabèh informasi ing ndhuwur iki disertakaké ing saben pitakon panjenengan.",
"autoblockedtext": "Alamat IP panjenangan wis diblokir minangka otomatis amerga dienggo déning panganggo liyané. Pamblokiran dilakoni déning $1 mawa alesan:\n\n:''$2''\n\n* Diblokir wiwit: $8\n* Blokir kadaluwarsa ing: $6\n* Sing dikarepaké diblokir: $7\n\nPanjenengan bisa ngubungi $1 utawa [[{{MediaWiki:Grouppage-sysop}}|pangurus liyané]] kanggo ngomongaké perkara iki.\n\nPanjenengan ora bisa nganggo fitur \"kirim e-mail panganggo iki\" kejaba panjenengan wis nglebokaké alamat e-mail sing sah ing [[Special:Preferences|préferènsi]] panjenengan lan panjenengan wis diblokir kanggo nggunakaké.\n\nID pamblokiran panjenengan iku #$5 lan alamat IP panjenengan iku $3. Tulung sertakna informasi ing dhuwur kabèh iki saben ngajokaké pitakonan panjenengan. Matur nuwun.",
"blockednoreason": "ora ana alesan sing diwènèhaké",
"whitelistedittext": "Panjenengan kudu $1 supaya bisa nyunting artikel.",
"confirmedittext": "Panjenengan kudu ndhedhes alamat e-mail dhisik sadurungé pareng nyunting sawijining kaca. Mangga nglebokaké lan validasi alamat e-mail panjenengan sadurungé nglakoni panyuntingan. Alamat e-mail sawisé bisa diowahi liwat [[Special:Preferences|kaca préférènsi]]",
- "nosuchsectiontitle": "Bagéan ora ditemokaké",
+ "nosuchsectiontitle": "Pérangan ora katemu",
"nosuchsectiontext": "Panjenengan nyoba nyunting sawijining bagéan sing ora ana.\nBagéan iki manawa wis dipindhah utawa dibusak nalika panjenengan buka.",
- "loginreqtitle": "Mangga mlebu log",
- "loginreqlink": "mlebu log",
+ "loginreqtitle": "Kudu mlebu",
+ "loginreqlink": "mlebu",
"loginreqpagetext": "Panjenengan kudu $1 kanggo bisa mirsani kaca liyané.",
- "accmailtitle": "Tembung sandhi wis dikirim.",
+ "accmailtitle": "Tembung wadi wis kinirim",
"accmailtext": "Sawijining tembung sandi sembarang kanggo [[User talk:$1|$1]] wis dikirim menyang $2.\n\nTembung sandi kanggo panganggo anyar iki isa diganti ing kaca ''[[Special:ChangePassword|ganti tembung sandi]]'' sawisé mlebu log.",
"newarticle": "(Anyar)",
"newarticletext": "Katonané panjenengan ngetutaké pranala artikel sing durung ana.\nManawa kersa manulis artikel iki, manggaa. (Mangga mirsani [$1 Pitulung] kanggo informasi sabanjuré).\nYèn ora sengaja tekan kéné, bisa ngeklik pencètan '''back''' waé ing panjlajah wèb panjenengan.",
"anontalkpagetext": "---- ''Iki yaiku kaca dhiskusi sawijining panganggo anonim sing durung kagungan akun utawa ora nganggo akuné, dadi kita keeksa kudu nganggo alamat IP-né kanggo nepangi. Alamat IP kaya mengkéné iki bisa dienggo déning panganggo sing séjé-séjé. Yèn panjenengan pancèn panganggo anonim lan olèh komentar-komentar miring, mangga [[Special:UserLogin/signup|nggawé akun]] utawa [[Special:UserLogin|log mlebu]] supaya ora rancu karo panganggo anonim liyané ing mangsa ngarep.''",
- "noarticletext": "Saiki ora ana tèks ing kaca iki. Panjenengan bisa [[Special:Search/{{PAGENAME}}|nglakoni panggolèkan kanggo judhul iki kaca iki]] ing kaca-kaca liyané, [{{fullurl:{{#Special:Log}}|kaca={{urlencode:{{FULLPAGENAME}}}}}} nggolèki log kagandhèng],\nutawa [{{fullurl:{{FULLPAGENAME}}|action=edit}} nyunting kaca iki] .",
+ "noarticletext": "Kala saiki kaca iki durung ana tulisané.\nSampéyan bisa [[Special:Search/{{PAGENAME}}|nggolèki sesirahing kaca iki]] sajeroning kaca liya,\n[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} nggolèki log sing magepokan],\nutawa [{{fullurl:{{FULLPAGENAME}}|action=edit}} nggawé kaca iki] .",
"noarticletext-nopermission": "Saiki ora ana tèks ing kaca iki. \nSampéyan bisa [[Special:Search/{{PAGENAME}}|nggolèki judhul kaca iki]] nèng kaca liya, \nutawa [{{fullurl:{{#Special:Log}}|kaca={{urlencode:{{FULLPAGENAME}}}}}} nggolèki log sing kaitan] , nanging Sampéyan ora nduwèni idin nggawé kaca iki.",
"missing-revision": "Benahan #$1 saka kaca ajeneng \"{{FULLPAGENAME}}\" ora ana.\n\nIki biasané kasebabaké pranala riwayat sing kedaluwarsa saka kaca kuwi wis dibusak.\nRinciané bisa ditemokaké nèng [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} log pambusakan].",
"userpage-userdoesnotexist": "Akun utawa rékening panganggo \"$1 \" ora kadaftar.",
@@ -573,23 +606,23 @@
"sitecsspreview": "'''Ãling yèn Sampéyan mung ndelok pratayang CSS iki.'''\n'''Iki durung disimpen!'''",
"sitejspreview": "'''Ãling yèn Sampéyan mung ndelok pratayang kodhé JavaScript iki.'''\n'''Iki durung disimpen!'''",
"userinvalidcssjstitle": "'''Pènget:''' Kulit \"$1\" ora ditemokaké. Muga dipèngeti yèn kaca .css lan .js nggunakaké huruf cilik, conto {{ns:user}}:Foo/vector.css lan dudu {{ns:user}}:Foo/Vector.css.",
- "updated": "(Dianyari)",
- "note": "'''Cathetan:'''",
+ "updated": "(Kaanyaran)",
+ "note": "Cathetan: ",
"previewnote": "'''Ãling yèn Sampéyan mung ndelok pratayang.'''\nOwahan Sampéyan durung kasimpen!",
- "continue-editing": "Lunga menyang area nyunting",
+ "continue-editing": "Menyang pambesutan",
"previewconflict": "Pratilik iki nuduhaké tèks ing bagian dhuwur kothak suntingan tèks kayadéné bakal katon yèn panjenengan bakal simpen.",
"session_fail_preview": "'''Nuwun sèwu, suntingan panjenengan ora bisa diolah amarga dhata sèsi kabusak.\nCoba kirim dhata manèh. Yèn tetep ora bisa, coba log metua lan mlebu log manèh.''''''Amerga wiki iki marengaké panggunan kodhe HTML mentah, mula pratilik didhelikaké minangka pancegahan marang serangan JavaScript.'''\n'''Menawa iki sawijining usaha panyuntingan sing sah, mangga dicoba manèh.\nYèn isih tetep ora kasil, cobanen metu log lan mlebu manèh.'''",
"session_fail_preview_html": "'''Nuwun sèwu! Kita ora bisa prosès suntingan panjenengan amerga data sési ilang.'''\n\n''Amerga wiki iki ngidinaké panrapan HTML mentah, pratayang didelikaké minangka penggakan marang serangan Javascript.''\n\n'''Yèn iki sawijining upaya suntingan sing absah, mangga dicoba manèh. Yèn isih tetep ora kasil, cobanen metu log utawa oncat lan mlebua manèh.'''",
"token_suffix_mismatch": "'''Suntingan panjenengan ditulak amerga aplikasi klièn panjenengan ngowahi karakter tandha wewacan ing suntingan. Suntingan iku ditulak kanggo untuk menggak kaluputan ing tèks artikel. Prekara iki kadhangkala dumadi yèn panjenengan ngangem dines layanan proxy anonim adhedhasar situs wèb sing duwé masalah.'''",
"edit_form_incomplete": "'''Sebagéyan pormulir suntingan ora tekan nèng sasana; cèk pindho yèn suntingan Sampéyan isih wutuh lan jajal manèh.'''",
- "editing": "Nyunting $1",
+ "editing": "Mbesut $1",
"creating": "Nggawé $1",
- "editingsection": "Nyunting $1 (bagian)",
- "editingcomment": "Nyunting $1 (bagéyan anyar)",
- "editconflict": "Konflik panyuntingan: $1",
+ "editingsection": "Mbesut $1 (pérangan)",
+ "editingcomment": "Mbesut $1 (pérangan anyar)",
+ "editconflict": "Cengkah besutan: $1",
"explainconflict": "Wong liya wis nyunting kaca iki wiwit panjenengan mau nyunting.\nBagian dhuwur tèks iki ngamot tèks kaca vèrsi saiki.\nPangowahan sing panjenengan lakoni dituduhaké ing bagian ngisor tèks.\nPanjenengan namung prelu nggabungaké pangowahan panjenengan karo tèks sing wis ana.\n'''Namung''' tèks ing bagian dhuwur kaca sing bakal kasimpen menawa panjenengan mencèt \"{{int:savearticle}}\".",
- "yourtext": "Tèks panjenengan",
- "storedversion": "Versi sing kasimpen",
+ "yourtext": "Tulisan sampéyan",
+ "storedversion": "Owahan kasimpen",
"nonunicodebrowser": "'''PÃNGET: Panjlajah wèb panjenengan ora ndhukung Unicode, mangga gantènana panjlajah wèb panjenengan sadurungé nyunting artikel.'''",
"editingold": "'''PÃNGET:''' Panjenengan nyunting revisi lawas sawijining kaca. Yèn versi iki panjenengan simpen, mengko pangowahan-pangowahan sing wis digawé wiwit revisi iki bakal ilang.",
"yourdiff": "Prabédan",
@@ -604,33 +637,33 @@
"templatesused": "{{PLURAL:$1|Cithakan|Cithakan}} sing dienggo ing kaca iki:",
"templatesusedpreview": "{{PLURAL:$1|Cithakan|Cithakan-cithakan}} sing dienggo ing pratilik iki:",
"templatesusedsection": "{{PLURAL:$1|Cithakan}} sing dienggo ding bagian iki:",
- "template-protected": "(direksa)",
- "template-semiprotected": "(semi-pangreksan)",
+ "template-protected": "(kareksa)",
+ "template-semiprotected": "(semu kareksa)",
"hiddencategories": "Kaca iki sawijining anggota saka {{PLURAL:$1|1 kategori ndelik|$1 kategori-kategori ndelik}}:",
"edittools": "",
"nocreatetext": "Situs iki ngwatesi kemampuan kanggo nggawé kaca anyar. Panjenengan bisa bali lan nyunting kaca sing wis ana, utawa mangga [[Special:UserLogin|mlebua log utawa ndaftar]]",
"nocreate-loggedin": "Panjenengan ora kagungan idin kanggo nggawé kaca anyar.",
"sectioneditnotsupported-title": "Panyuntingan bagéyan ora kasengkuyungan",
- "sectioneditnotsupported-text": "Panyuntingan sapérangan ora disengkuyung ing kaca suntingan iki.",
+ "sectioneditnotsupported-text": "Ora bisa mbesut sapérangan ana ing kaca iki.",
"permissionserrors": "Palilan ora diolèhaké",
"permissionserrorstext": "Panjengan ora kagungan idin kanggo nglakoni sing panjenengan gayuh amerga {{PLURAL:$1|alesan|alesan-alesan}} iki:",
"permissionserrorstext-withaction": "Panjenengan ora duwé hak aksès kanggo $2, amarga {{PLURAL:$1|alasan|alasan}} ing ngisor iki:",
"recreate-moveddeleted-warn": "'''Pènget: Panjenengan gawé manèh sawijining kaca sing wis tau dibusak.'''\n\nMangga digagas manèh apa pantes nerusaké nyunting kaca iki.\nIng ngisor iki kapacak log pambusakan lan pamindhahan saka kaca iki:",
- "moveddeleted-notice": "Kaca iki wis dibusak.\nLog pambusakan lan pamindhahan kaca iki disadiyakaké ing ngisor iki minangka réferènsi.",
- "log-fulllog": "Pirsani kabèh log",
+ "moveddeleted-notice": "Kaca iki wis dibusak.\nCathetan busakan lan lihlihan kaca ana ing ngisor minangka rujukan.",
+ "log-fulllog": "Deleng cathetan wutuh",
"edit-hook-aborted": "Suntingan dibatalaké déning kait parser\nTanpa ana katrangan.",
"edit-gone-missing": "Ora bisa nganyari kaca.\nKatoné kaca iki wis dibusak.",
- "edit-conflict": "Konflik panyuntingan.",
+ "edit-conflict": "Cengkah besutan",
"edit-no-change": "Suntingan panjenengan dilirwakaké amerga panjenengan ora nglakoni pangowahan apa-apa ing tèks.",
- "postedit-confirmation-saved": "Pangowahan sampéyan wis disimpen!",
+ "postedit-confirmation-saved": "Besutan sampeyan wis kasimpen.",
"edit-already-exists": "Ora bisa nggawé kaca anyar.\nAmerga wis ana.",
"defaultmessagetext": "Tèks layang gawan",
"content-failed-to-parse": "Gagal menjabarkan konten $2 untuk model $1: $3",
- "invalid-content-data": "Data konten ora sah",
+ "invalid-content-data": "Data isi ora trap",
"content-not-allowed-here": "Konten \"$1\" ora oleh ing kaca [[$2]]",
"editwarning-warning": "Yen sampeyan ninggalake kaca niki, pangowahan sampeyan bakal ilang.\nYen sampeyan wis mlebet log, sampeyan saged mateni peringatan niki lewat preferensi \"Panyuntingan\" sampeyan.",
- "content-model-wikitext": "teks wiki",
- "content-model-text": "teks polos",
+ "content-model-wikitext": "tulisan wiki",
+ "content-model-text": "tulisan barès",
"content-model-javascript": "JavaScript",
"content-model-css": "CSS",
"expensive-parserfunction-warning": "Pènget: Kaca iki ngandhut kakèhan panggunan fungsi ''parser'' sing larang.\n\nSajatiné kuduné duwé kurang saka {{PLURAL:$2|panggilan|panggilan}}, saiki ana {{PLURAL:$1|$1 panggilan|$1 panggilan}}.",
@@ -657,32 +690,32 @@
"cantcreateaccounttitle": "Akun ora bisa digawé",
"cantcreateaccount-text": "Saka alamat IP iki ('''$1''') ora diparengaké nggawé akun utawa rékening. Sing mblokir utawa ora marengaké iku [[User:$3|$3]].\n\nAlesané miturut $3 yaiku ''$2''",
"cantcreateaccount-range-text": "Nggawe akun saking alamat IP \"$1\", sing termasuk IP sampeyan ($4 ), sampun diblokir kaliyan [[User:$3|$3]].\n\nAlesan pamblokiran yaiku \"$2\"",
- "viewpagelogs": "Mirsani log kaca iki",
- "nohistory": "Ora ana sajarah panyuntingan kanggo kaca iki",
- "currentrev": "Revisi saiki",
- "currentrev-asof": "Révisi anyar dhéwé ing tanggal $1",
- "revisionasof": "Revisi per $1",
- "revision-info": "Revisi per $1; $2",
- "previousrevision": "âRevisi sadurungé",
- "nextrevision": "Revisi sabanjuréâ",
- "currentrevisionlink": "Revisi saiki",
- "cur": "saiki",
+ "viewpagelogs": "Deleng cathetaning kaca iki",
+ "nohistory": "Babading besutan kaca iki ora ana.",
+ "currentrev": "Owahan anyaran",
+ "currentrev-asof": "Owahan wekasan kala $1",
+ "revisionasof": "Owahan kala $1",
+ "revision-info": "Owahan $1 déning {{GENDER:$6|$2}}$7",
+ "previousrevision": "â Owahan sadurungé",
+ "nextrevision": "Owahan sabanjuré â",
+ "currentrevisionlink": "Owahan wekasan",
+ "cur": "sai",
"next": "sabanjuré",
- "last": "akir",
+ "last": "sadurung",
"page_first": "kapisan",
"page_last": "pungkasan",
"histlegend": "Pilihen rong tombol radhio banjur pencèten tombol ''bandhingna'' kanggo mbandhingaké versi. Klik sawijining tanggal kanggo ndeleng versi kaca ing tanggal iku. (skr) = prabédan karo vèrsi saiki, (akir) = prabédan karo vèrsi sadurungé, '''s''' = suntingan sithik, '''b''' = suntingan bot, â = suntingan bagian, â = ringkesan otomatis",
- "history-fieldset-title": "Njlajah sajarah vèrsi sadhurungé",
+ "history-fieldset-title": "Luru babad",
"history-show-deleted": "Namung sing dibusak",
"histfirst": "suwé dhéwé",
"histlast": "anyar dhéwé",
- "historysize": "($1 {{PLURAL:$1|bita|bita}})",
- "historyempty": "(kosong)",
- "history-feed-title": "Riwayat revisi",
- "history-feed-description": "Riwayat revisi kaca iki ing wiki",
+ "historysize": "($1 {{PLURAL:$1|bét|bét}})",
+ "historyempty": "(suwung)",
+ "history-feed-title": "Babad owahan",
+ "history-feed-description": "Babad owahaning kaca iki ing wiki",
"history-feed-item-nocomment": "$1 ing $2",
"history-feed-empty": "Kaca sing disuwun ora ditemokaké. Mbokmenawa wis dibusak saka wiki, utawa diwènèhi jeneng anyar. Coba [[Special:Search|golèka ing wiki]] kanggo kaca anyar sing rélevan.",
- "rev-deleted-comment": "(ringkesan suntingan dibusak)",
+ "rev-deleted-comment": "(tingkesaning besutan dibusak)",
"rev-deleted-user": "(jeneng panganggo dibusak)",
"rev-deleted-event": "(isi dibusak)",
"rev-deleted-user-contribs": "(jeneng panganggo utawa alamat IP dibusak - suntingan didhelikaké saka kontribusi)",
@@ -697,27 +730,27 @@
"rev-suppressed-unhide-diff": "Sawiji benahan saka prabédan iki wis '''dibrèdèl'''.\nRincian bisa ditemokaké nèng [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} log pambrèdèlan].\nSampéyan uga isih bisa [$1 ndelok prabédan iki] yèn Sampéyan gelem.",
"rev-deleted-diff-view": "Sawiji benahan saka prabédan iki wis '''dibusak'''.\nSampéyan isih bisa ndelok prabédan iki; rincian bisa ditemokaké nèng [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} log pambusakan].",
"rev-suppressed-diff-view": "Sawiji benahan saka prabédan iki wis '''dibrèdèl'''.\nSampéyan isih bisa ndelok prabédan iki; rincian bisa ditemokaké nèng [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} log pambrèdèlan].",
- "rev-delundel": "tuduhna/delikna",
- "rev-showdeleted": "tuduhna",
+ "rev-delundel": "Owah kasatmatan",
+ "rev-showdeleted": "tuduhaké",
"revisiondelete": "Busak/batal busak revisi",
"revdelete-nooldid-title": "Target revisi ora ditemokaké",
"revdelete-nooldid-text": "Panjenengan durung mènèhi target revisi kanggo nglakoni fungsi iki.",
"revdelete-no-file": "Berkas sing dituju ora ana.",
"revdelete-show-file-confirm": "Apa panjenengan yakin arep mirsani révisi sing wis kabusak saka berkas \"$1 \" ing $2, jam $3?",
- "revdelete-show-file-submit": "Ya",
+ "revdelete-show-file-submit": "Iya",
"logdelete-selected": "{{PLURAL:$1|Log kapilih|Log kapilih}} kanggo:",
"revdelete-confirm": "Mangga pesthèkaké yèn Sampéyan pancèn kudu nglakoni iki, yèn Sampéyan ngerti akibaté, lan yèn Sampéyan ngakoni iki cocok karo [[{{MediaWiki:Policy-url}}|kawicakan]].",
"revdelete-suppress-text": "Pandhelikan révisi '''mung''' bisa dipigunakaké kanggo kasus ing ngisor:\n* Informasi sing kagolong pitnah\n* Informasi pribadi sing kurang pantes\n*: ''alamat omah lan nomer telepon, nomer kartu idhèntitas, lsp..''",
"revdelete-legend": "Atur watesan:",
- "revdelete-hide-text": "Tèks revisi",
- "revdelete-hide-image": "Dhelikna isi berkas",
+ "revdelete-hide-text": "Tulisan owahan",
+ "revdelete-hide-image": "Dhelikaké isi barkas",
"revdelete-hide-name": "Dhelikna tindhakan lan targèt",
- "revdelete-hide-comment": "Ringkesan suntingan",
- "revdelete-hide-user": "Jeneng panganggo/alamat IP",
+ "revdelete-hide-comment": "Tingkesan besutan",
+ "revdelete-hide-user": "Alamat IPné/jeneng panganggoné sing mbesut",
"revdelete-hide-restricted": "Uga dhelikna data saka pangurus lan panganggo liyané",
- "revdelete-radio-same": "(Aja diowahi)",
- "revdelete-radio-set": "Kadhelikake",
- "revdelete-radio-unset": "Kethok",
+ "revdelete-radio-same": "(aja diowah)",
+ "revdelete-radio-set": "Kadhelikan",
+ "revdelete-radio-unset": "Katon",
"revdelete-suppress": "Uga dhelikan saka pangurus",
"revdelete-unsuppress": "Busak watesan ing revisi sing dibalèkaké",
"revdelete-log": "Alesan:",
@@ -727,8 +760,8 @@
"logdelete-success": "Aturan pandhelikan tindhakan bisa kasil ditrapaké.",
"logdelete-failure": "'''Aturan pandhelikan ora bisa disèt:'''\n$1",
"revdel-restore": "Ngowahi visiblitas (pangatonan)",
- "pagehist": "Sajarah kaca",
- "deletedhist": "Sajarah sing dibusak",
+ "pagehist": "Babading kaca",
+ "deletedhist": "Babad kabusakan",
"revdelete-hide-current": "Gagal ndhelikaké révisi tanggal $2, $1: iki arupa révisi paling anyar.\nRévisi iki ora bisa didhelikaké.",
"revdelete-show-no-access": "Gagal nampilaké révisi tanggal $1, jam $2: révisi iki wis ditandhani \"kawates\".\nPanjenengan ora nduwèni aksès menyang révisi iki.",
"revdelete-modify-no-access": "Gagal ngowahi révisi tanggal $1, jam $2: révisi iki wis ditandhani \"kawates\".\nPanjenengan ora nduwèni aksès menyang révisi iki.",
@@ -740,23 +773,23 @@
"revdelete-otherreason": "Alesan liya/tambahan:",
"revdelete-reasonotherlist": "Alesan liya",
"revdelete-edit-reasonlist": "Sunting alesan pambusakan",
- "revdelete-offender": "Revisi penulis:",
+ "revdelete-offender": "Juru pangriptaning owahan:",
"suppressionlog": "Log barang-barang sing didelikaké (''oversight'')",
"suppressionlogtext": "Ngisor iki daptar apa-apa waé sing wis dibusak lan diblokir kalebu kontèn sing didhelikaké saka para pangurus.\nDelok [[Special:BlockList|daptar blokiran]] sing isiné daptar apa-apa waé sing lagi dilarang lan diblokir.",
- "mergehistory": "Gabung sejarah kaca",
+ "mergehistory": "Gabung babad kaca",
"mergehistory-header": "Ing kaca iki panjenengan bisa nggabung révisi-révisi sajarah saka sawijining kaca sumber menyang kaca anyar.\nPastèkna yèn owah-owahan iki bakal netepaké kasinambungan sajarah kaca.",
"mergehistory-box": "Gabungna revisi-revisi saka rong kaca:",
"mergehistory-from": "Kaca sumber:",
- "mergehistory-into": "Kaca tujuan:",
- "mergehistory-list": "Sejarah suntingan bisa digabung",
+ "mergehistory-into": "Kaca paran:",
+ "mergehistory-list": "Babad besutan sing bisa digabung",
"mergehistory-merge": "Révisi-révisi sing kapacak ing ngisor iki saka [[:$1]] bisa digabungaké menyang [[:$2]].\nGunakna tombol radio kanggo nggabungaké révisi-révisi sing digawé sadurungé wektu tartamtu. Gatèkna, menawa nganggo pranala navigasi bakal ngesèt ulang kolom iki.",
- "mergehistory-go": "Tuduhna suntingan-suntingan sing bisa digabung",
- "mergehistory-submit": "Gabung revisi",
+ "mergehistory-go": "Tuduhaké besutan sing bisa digabung",
+ "mergehistory-submit": "Gabung owahan",
"mergehistory-empty": "Ora ana revisi sing bisa digabung.",
"mergehistory-done": "$3 {{PLURAL:$1|révisi|révisi}} saka $1 bisa suksès digabung menyang [[:$2]].",
"mergehistory-fail": "Ora bisa nggabung sajarah, coba dipriksa manèh kacané lan paramèter wektuné.",
"mergehistory-no-source": "Kaca sumber $1 ora ana.",
- "mergehistory-no-destination": "Kaca tujuan $1 ora ana.",
+ "mergehistory-no-destination": "Kaca paran $1 ora ana.",
"mergehistory-invalid-source": "Irah-irahan kaca sumber kudu irah-irahan utawa judhul sing bener.",
"mergehistory-invalid-destination": "Irah-irahan kaca tujuan kudu irah-irahan utawa judhul sing bener.",
"mergehistory-autocomment": "Nggabung [[:$1]] menyang [[:$2]]",
@@ -767,18 +800,19 @@
"revertmerge": "Batalna panggabungan",
"mergelogpagetext": "Ing ngisor iki kapacak daftar panggabungan sajarah kaca ing kaca liyané.",
"history-title": "Riwayat rèvisi saka \"$1\"",
- "difference-title": "$1: Bèntenipun revisi",
+ "difference-title": "Prabéda antara owahan \"$1\"",
"difference-title-multipage": "Prabédhan antara kaca \"$1\" lan \"$2\"",
"difference-multipage": "(Prabédhan antar kaca)",
- "lineno": "Larikan $1:",
+ "lineno": "Larik $1:",
"compareselectedversions": "Bandhingna vèrsi kapilih",
"showhideselectedversions": "Tampilaké/dhelikaké révisi kapilih",
- "editundo": "batalna",
+ "editundo": "wurungaké",
"diff-empty": "(Ora ana bedane)",
+ "diff-multi-sameuser": "({{PLURAL:$1|Saowahan madya|$1 owahan madya}} déning panganggo sing padha ora dituduhaké)",
"diff-multi-manyusers": "({{PLURAL:$1Siji rèvisi sedhengan|$1 rèvisi sedhengan}} déning luwih saka $2 {{PLURAL:$2|panganggo|panganggo}} ora dituduhaké)",
"difference-missing-revision": "{{PLURAL:$2|Sak pambenahan|$2 pambenahan}} saka prabédan iki ($1) {{PLURAL:$2|ora ditemokaké|ora ditemokaké}}.\n\nIki biasané kasebab pranala prabedan sing wis ora kanggo saka kaca isi wis dibusak.\nRinciané bisa ditemokaké nèng [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} log busak].",
- "searchresults": "Kasil panggolèkan",
- "searchresults-title": "Kasil panggolèkan saka \"$1\"",
+ "searchresults": "Kasiling golèk",
+ "searchresults-title": "Kasiling golèk \"$1\"",
"titlematches": "Irah-irahan artikel sing cocog",
"textmatches": "Tèks artikel sing cocog",
"notextmatches": "Ora ana tèks kaca sing cocog",
@@ -786,28 +820,28 @@
"nextn": "{{PLURAL:$1|$1}} sabanjuré",
"prevn-title": "$1 {{PLURAL:$1|asil|asil}} sadurungé",
"nextn-title": "$1 {{PLURAL:$1|asil|asil}} sabanjuré",
- "shown-title": "Tampilaké $1 {{PLURAL:$1|asil|asil}} saben kaca",
+ "shown-title": "Tuduhaké $1 {{PLURAL:$1|kasil|kasil}} saben kaca",
"viewprevnext": "Deleng ($1 {{int:pipe-separator}} $2) ($3)",
"searchmenu-exists": "'''Ana kaca kanthi jeneng \"[[$1]]\" ing wiki iki'''",
- "searchmenu-new": "'''Damel kaca \"[[:$1]]\" ing wiki punika!'''",
+ "searchmenu-new": "Gawéa kaca \"[[:$1]]\" nyang wiki iki! {{PLURAL:$2|0=|Uga delenga kaca sing katemu sarana panggolèking sampéyan.|Uga delenga kasiling panggolèk.}}",
"searchprofile-articles": "Kaca isi",
- "searchprofile-images": "Multimedia",
- "searchprofile-everything": "Kabèh",
- "searchprofile-advanced": "Tataran luwih dhuwur/maju",
- "searchprofile-articles-tooltip": "Panggolèkan ing $1",
- "searchprofile-images-tooltip": "Panggolèkan berkas",
- "searchprofile-everything-tooltip": "Panggolèkan kabèh isi (klebu kaca-kaca wicara)",
- "searchprofile-advanced-tooltip": "Panggolèkan ing bilik jeneng biasa (''custom'')",
+ "searchprofile-images": "Sarwasarana",
+ "searchprofile-everything": "Samubarang",
+ "searchprofile-advanced": "Lungidan",
+ "searchprofile-articles-tooltip": "Golèkan ing $1",
+ "searchprofile-images-tooltip": "Golèk barkas",
+ "searchprofile-everything-tooltip": "Golèk kabèh isi (kalebu kaca guneman)",
+ "searchprofile-advanced-tooltip": "Golèk ing lowah jeneng tinamtu",
"search-result-size": "$1 ({{PLURAL:$2|1 tembung|$2 tembung}})",
"search-result-category-size": "{{PLURAL:$1|1 anggota|$1 anggota}} ({{PLURAL:$2|1 subkatégori|$2 subkatégori}}, {{PLURAL:$3|1 berkas|$3 berkas}})",
"search-redirect": "(pangalihan $1)",
- "search-section": "(sèksi $1)",
- "search-suggest": "Apa panjenengan kersané: $1",
- "search-interwiki-caption": "Proyèk-proyèk kagandhèng",
+ "search-section": "(pérangan $1)",
+ "search-suggest": "Apa karepé sampéyan: $1",
+ "search-interwiki-caption": "Proyèk-proyèk sababon",
"search-interwiki-default": "Pituwas $1:",
"search-interwiki-more": "(luwih akèh)",
- "search-relatedarticle": "Kagandhèng",
- "searchrelated": "kagandhèng",
+ "search-relatedarticle": "Magepokan",
+ "searchrelated": "magepokan",
"searchall": "kabèh",
"showingresults": "Ing ngisor iki dituduhaké {{PLURAL:$1|'''1''' kasil|'''$1''' kasil}}, wiwitané saking #$2 .",
"search-showingresults": "{{PLURAL:$4|Asil $1 dari $3 |Asil $1 - $2 saking $3 }}",
@@ -822,7 +856,7 @@
"search-error": "Ana kasalahan wektu nggoleki: $1",
"preferences": "Preferensi (pilihan)",
"mypreferences": "Préferènsi",
- "prefs-edits": "Gunggungé suntingan:",
+ "prefs-edits": "Gunggung besutan:",
"prefsnologintext2": "Tulung $1 kanggo ngganti preferensi sampeyan.",
"prefs-skin": "Kulit",
"skin-preview": "Pratilik",
@@ -845,7 +879,7 @@
"prefs-rendering": "Tampilan",
"saveprefs": "Simpen",
"restoreprefs": "Balèkna kabèh setèlan baku",
- "prefs-editing": "Panyuntingan",
+ "prefs-editing": "Pambesut",
"rows": "Larikan:",
"columns": "Kolom:",
"searchresultshead": "Panggolèkan",
@@ -853,7 +887,7 @@
"stub-threshold-disabled": "Dipatèni",
"recentchangesdays": "Cacahé dina sing dituduhaké ing owah-owahan pungkasan:",
"recentchangesdays-max": "(maksimum $1 {{PLURAL:$1|dina|dina}})",
- "recentchangescount": "Cacahé suntingan sing ditampilaké:",
+ "recentchangescount": "Cacahing besutan sing dituduhaké kanthi baku:",
"prefs-help-recentchangescount": "Iki klebu owah-owahan pungkasan, kaca sajarah, lan log.",
"prefs-help-watchlist-token2": "Ini adalah kunci rahasia (token) ke web feed dari daftar pantauan Anda.\nSiapa saja yang tahu akan dapat melihat daftar pantauan Anda, jadi jangan dibagikan.\n[[Special:ResetTokens|Klik di sini jika Anda perlu menyetel ulang]].",
"savedprefs": "Préferènsi Panjenengan wis disimpen",
@@ -911,7 +945,7 @@
"prefs-dateformat": "Format tanggal",
"prefs-timeoffset": "Format wektu",
"prefs-advancedediting": "Pilihan sabanjuré",
- "prefs-editor": "Panyunting",
+ "prefs-editor": "Wong besut",
"prefs-preview": "Pratayang",
"prefs-advancedrc": "Opsi lanjutan",
"prefs-advancedrendering": "Opsi lanjutan",
@@ -921,7 +955,7 @@
"prefs-displaywatchlist": "Opsi tampilan",
"prefs-tokenwatchlist": "Token",
"prefs-diffs": "Prabédan",
- "prefs-help-prefershttps": "Preferensi niki bakal diaktifne yen sampeyan mlebet log sabanjure.",
+ "prefs-help-prefershttps": "Pamiji iki bakal lumaku mentas sampeyan mbalèni mlebu.",
"prefs-tabs-navigation-hint": "Tip: Sampeyan isa nganggo dapat menggunakan tombol panah kiwa lan tengen kanggo navigasi tab-tab ing daftar tab.",
"userrights": "Manajemen hak panganggo",
"userrights-lookup-user": "Ngatur kelompok panganggo",
@@ -963,14 +997,14 @@
"grouppage-bureaucrat": "{{ns:project}}:Birokrat",
"grouppage-suppress": "{{ns:project}}:Oversight",
"right-read": "Maca kaca-kaca",
- "right-edit": "Nyunting kaca-kaca",
+ "right-edit": "Besut kaca",
"right-createpage": "Nggawé kaca (sing dudu kaca dhiskusi)",
"right-createtalk": "Nggawé kaca dhiskusi",
"right-createaccount": "Nggawé rékening (akun) panganggo anyar",
- "right-minoredit": "Tandhanan suntingan minangka minor",
+ "right-minoredit": "Tandhani minangka besutan cilik",
"right-move": "Pindhahna kaca",
"right-move-subpages": "Pindhahaké kaca lan kabèh anak-kacané",
- "right-move-rootuserpages": "Pindhahaké kaca utama panganggo",
+ "right-move-rootuserpages": "Ngalih kaca panganggo oyod",
"right-movefile": "Mindhah berkas",
"right-suppressredirect": "Aja nggawé pangalihan saka kaca sing lawas yèn mindhah sawijining kaca",
"right-upload": "Ngunggahaké berkas-berkas",
@@ -1014,7 +1048,7 @@
"right-editmyprivateinfo": "Owahi data pribadi sampeyan (kayata alamat layang elektronik, jeneng asli)",
"right-editmyoptions": "Owahi preferensi sampeyan",
"right-rollback": "Sacara gelis mbalèkaké panganggo pungkasan sing nyunting kaca tartamtu",
- "right-markbotedits": "Tandhanana suntingan pambalèkan minangka suntingan bot",
+ "right-markbotedits": "Tandhani besutan kawurungan minangka besutan bot",
"right-noratelimit": "Ora dipengaruhi déning wates cacahing suntingan.",
"right-import": "Impor kaca-kaca saka wiki liya",
"right-importupload": "Impor kaca-kaca saka sawijining pangunggahan berkas",
@@ -1023,25 +1057,25 @@
"right-patrolmarks": "Ndeleng tandha-tandha patroli owah-owahan anyar",
"right-unwatchedpages": "Tuduhna daftar kaca-kaca sing ora diawasi",
"right-mergehistory": "Gabungna sajarah kaca-kaca",
- "right-userrights": "Sunting kabèh hak-hak panganggo",
+ "right-userrights": "Besut kabèh hak panganggo",
"right-userrights-interwiki": "Sunting hak-hak para panganggo ing situs-situs wiki liya",
"right-siteadmin": "Kunci lan buka kunci basis data",
"right-override-export-depth": "Ãkspor kaca klebu kaca kagandhèng nganti tataran/''depth'' 5",
"right-sendemail": "Ngirim layang listrik (e-mail) menyang panganggo liya",
"right-passwordreset": "Delok layang èlèktronik panyetèlulangan tembung sandhi",
- "newuserlogpage": "Log panganggo anyar",
+ "newuserlogpage": "Cathetan panganggo anyar",
"newuserlogpagetext": "Ing ngisor iki kapacak log pandaftaran panganggo anyar.",
"rightslog": "Log pangowahan hak aksès",
"rightslogtext": "Ing ngisor iki kapacak log pangowahan marang hak-hak panganggo.",
"action-read": "maca kaca iki",
- "action-edit": "sunting kaca iki",
+ "action-edit": "besut kaca iki",
"action-createpage": "nggawé kaca-kaca",
"action-createtalk": "gawé kaca wicara anyar",
"action-createaccount": "gawé akun panganggo iki",
- "action-minoredit": "nandhani minangka suntingan sithik",
+ "action-minoredit": "tandhani iki minangka besutan cilik",
"action-move": "alihna kaca iki",
"action-move-subpages": "mindahaké kaca iki, lan kabèh anak-kacané",
- "action-move-rootuserpages": "mindhahaké kaca utama panganggo",
+ "action-move-rootuserpages": "ngalih kaca panganggo oyod",
"action-movefile": "pindhahna berkas iki",
"action-upload": "ngunggahaké berkas iki",
"action-reupload": "nindhih berkas sing wis ana",
@@ -1055,7 +1089,7 @@
"action-undelete": "mbatalaké pambusakan kaca iki",
"action-suppressrevision": "ninjo lan mbalèkaké revisi sing didhelikaké iki",
"action-suppressionlog": "mirsani log pribadi iki",
- "action-block": "blok panganggo iki saka panyuntingan",
+ "action-block": "malang panganggo iki mbesut",
"action-protect": "owahi tataran pangreksan kaca iki",
"action-rollback": "gelis mbalèkaké suntingané panganggo pungkasan nèng sawijining saca",
"action-import": "impor kaca iki saka wiki liya",
@@ -1074,57 +1108,61 @@
"action-editmyprivateinfo": "owahi informasi pribadi sampeyan",
"nchanges": "$1 {{PLURAL:$1|pangowahan|owah-owahan}}",
"enhancedrc-since-last-visit": "$1 {{PLURAL:$1|saka keri dhewe mrene}}",
- "enhancedrc-history": "sajarah",
- "recentchanges": "Owah-owahan",
+ "enhancedrc-history": "babad",
+ "recentchanges": "Owahan pungkasan",
"recentchanges-legend": "Pilihan owah-owahan pungkasan",
"recentchanges-summary": "Runutna owah-owahan pungkasan ing wiki iki ing kaca iki.",
"recentchanges-noresult": "Ora ana pangowahan ing periode sing diwiwiti kriteria iki.",
"recentchanges-feed-description": "Urutna owah-owahan anyar ing wiki ing ''feed'' iki.",
- "recentchanges-label-newpage": "Suntingan iki gawé kaca anyar",
- "recentchanges-label-minor": "Iki suntingan sithik",
- "recentchanges-label-bot": "Suntingan iki diayahi déning bot",
- "recentchanges-label-unpatrolled": "Suntingan iki durung dipatroli",
- "recentchanges-label-plusminus": "Agengipun kaca sampun dipunowahi samekaten.",
- "recentchanges-legend-heading": "Katrangan: ",
- "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (dhelengen uga: [[Special:NewPages|daftar kaca anyar]])",
+ "recentchanges-label-newpage": "Besutan iki nggawé kaca anyar",
+ "recentchanges-label-minor": "Iki besutan cilik",
+ "recentchanges-label-bot": "Besutan iki diayahi bot",
+ "recentchanges-label-unpatrolled": "Besutan iki durung kapatroli",
+ "recentchanges-label-plusminus": "Ukuraning kaca diowah kanthi cacahing bèt samangkéné",
+ "recentchanges-legend-heading": "Legendha: ",
+ "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (uga deleng [[Special:NewPages|pratélaning kaca-kaca anyar]])",
"recentchanges-legend-plusminus": "(''±123'')",
"rcnotefrom": "Ing ngisor iki owah-owahan wiwit $2 (kapacak nganti $1 owah-owahan).",
- "rclistfrom": "Saiki nuduhaké owah-owahan wiwit tanggal $3 $2",
- "rcshowhideminor": "$1 suntingan sithik",
- "rcshowhideminor-hide": "Singidaken",
+ "rclistfrom": "Tuduhaké owah-owahan anyar kawit $2, $3",
+ "rcshowhideminor": "$1 besutan cilik",
+ "rcshowhideminor-show": "Tuduhaké",
+ "rcshowhideminor-hide": "Dhelikaké",
"rcshowhidebots": "$1 bot",
- "rcshowhidebots-show": "Tedahaken",
- "rcshowhideliu": "$1 panganggo sing wis ndaptar",
- "rcshowhideliu-hide": "Singidaken",
+ "rcshowhidebots-show": "Tuduhaké",
+ "rcshowhidebots-hide": "Dhelikaké",
+ "rcshowhideliu": "$1 panganggo karégister",
+ "rcshowhideliu-hide": "Dhelikaké",
"rcshowhideanons": "$1 panganggo anonim",
- "rcshowhideanons-hide": "Singidaken",
- "rcshowhidepatr": "$1 suntingan sing dipatroli",
- "rcshowhidemine": "$1 suntinganku",
- "rcshowhidemine-hide": "Singidaken",
- "rclinks": "Tuduhna owah-owahan pungkasan $1 ing $2 dina pungkasan iki. $3",
- "diff": "béda",
- "hist": "sajarah",
- "hide": "Delikna",
- "show": "Tuduhna",
- "minoreditletter": "s",
+ "rcshowhideanons-show": "Tuduhaké",
+ "rcshowhideanons-hide": "Dhelikaké",
+ "rcshowhidepatr": "$1 besutan awasan",
+ "rcshowhidemine": "$1 besutanku",
+ "rcshowhidemine-show": "Tuduhaké",
+ "rcshowhidemine-hide": "Dhelikaké",
+ "rclinks": "Tuduhaké $1 owahan kawit $2 dina kapungkur. $3",
+ "diff": "béd",
+ "hist": "saj",
+ "hide": "Dhelikaké",
+ "show": "Tuduhaké",
+ "minoreditletter": "c",
"newpageletter": "A",
"boteditletter": "b",
"number_of_watching_users_pageview": "[$1 {{PLURAL:$1|cacahé sing ngawasi|cacahé sing ngawasi}}]",
"rc_categories": "Watesana nganti kategori (dipisah karo \"|\")",
"rc_categories_any": "Apa waé",
- "rc-change-size-new": "$1 {{PLURAL:$1|bita|bita}} sakwisé diowah",
+ "rc-change-size-new": "$1 {{PLURAL:$1|bét|bét}} sabubaré diowah",
"newsectionsummary": "/* $1 */ bagéyan anyar",
"rc-enhanced-expand": "Tuduhaké princèn",
"rc-enhanced-hide": "Dhelikaké princèn",
- "rc-old-title": "wigatiné digawé minangka \"$1\"",
- "recentchangeslinked": "Pangowahan sing terkait",
+ "rc-old-title": "kawitané digawé minangka \"$1\"",
+ "recentchangeslinked": "Owahan magepokan",
"recentchangeslinked-feed": "Pangowahan sing terkait",
- "recentchangeslinked-toolbox": "Pangowahan sing terkait",
- "recentchangeslinked-title": "Owah-owahan sing ana gandhèngané karo \"$1\"",
- "recentchangeslinked-summary": "Kaca astaméwa (kaca kusus) iki mènèhi daftar owah-owahan pungkasan ing kaca-kaca sing kagandhèng (utawa anggota sawijining kateogri). Kaca sing [[Special:Watchlist|panjenengan awasi]] ditandhani '''kandel'''.",
+ "recentchangeslinked-toolbox": "Owahan magepokan",
+ "recentchangeslinked-title": "Owah-owahan sing magepokan \"$1\"",
+ "recentchangeslinked-summary": "Iki pratélan owah-owahan anyar kaca-kaca sing nggayut kaca tinamtu (utawa péranganing kategori tinamtu).\nKaca-kaca sing ana ing [[Special:Watchlist|pawawanganing sampéyan]] ya iku sing kandhel .",
"recentchangeslinked-page": "Jeneng kaca:",
"recentchangeslinked-to": "Nuduhaké owah-owahan menyang kaca sing disambung menyang kaca-kaca iki",
- "upload": "Unggah",
+ "upload": "Unggah barkas",
"uploadbtn": "Unggahna berkas",
"reuploaddesc": "Bali ing formulir pamotan",
"upload-tryagain": "Kirim déskripsi berkas sing wis diowah",
@@ -1141,7 +1179,7 @@
"uploadlogpage": "Log pangunggahan",
"uploadlogpagetext": "Ing ngisor iki kapacak log pangunggahan berkas sing anyar dhéwé.\nMangga mirsani [[Special:NewFiles|galeri berkas-berkas anyar]] kanggo pratélan visual.",
"filename": "Jeneng berkas",
- "filedesc": "Ringkesan",
+ "filedesc": "Tingkesan",
"fileuploadsummary": "Ringkesan:",
"filereuploadsummary": "Owah-owahan berkas:",
"filestatus": "Status hak cipta",
@@ -1282,14 +1320,14 @@
"upload-curl-error28": "Pangunggahan ngliwati wektu",
"upload-curl-error28-text": "Situsé kesuwèn sadurungé réaksi.\nMangga dipriksa menawa situsé aktif, nunggu sedélok lan coba manèh.\nMbok-menawa panjenengan bisa nyoba manèh ing wektu sing luwih longgar.",
"license": "Jenis lisènsi:",
- "license-header": "Jinis lisènsi",
+ "license-header": "Pamalilah",
"nolicense": "Durung ana sing dipilih",
"license-nopreview": "(Pratayang ora sumedya)",
"upload_source_url": " (sawijining URL absah sing bisa diaksès publik)",
"upload_source_file": " (sawijining berkas ing komputeré panjenengan)",
- "listfiles-summary": "Kaca astamiwa nudhuhaké kabèh berkas kaunggah.\nYèn disaring déning panganggo, namung berkas mawa vèrsi paling anyar waé sing bakal katon.",
+ "listfiles-summary": "Kaca mirunggan iki nuduhaké kabèh barkas sing kaunggah.",
"listfiles_search_for": "Golèk jeneng gambar:",
- "imgfile": "gambar",
+ "imgfile": "barkas",
"listfiles": "Daftar gambar",
"listfiles_thumb": "Gambar mini",
"listfiles_date": "Tanggal",
@@ -1302,23 +1340,23 @@
"listfiles-latestversion": "Versi saiki",
"listfiles-latestversion-yes": "Iya",
"listfiles-latestversion-no": "Ora",
- "file-anchor-link": "Gambar",
- "filehist": "Sajarah berkas",
- "filehist-help": "Klik ing tanggal/wektu kanggo deleng berkas iki ing wektu iku.",
+ "file-anchor-link": "Barkas",
+ "filehist": "Babading barkas",
+ "filehist-help": "Klik tanggal/wayah saprelu ndeleng barkasé kaya sing muncul rikala iku.",
"filehist-deleteall": "busaken kabèh",
"filehist-deleteone": "busaken iki",
"filehist-revert": "balèkna",
- "filehist-current": "saiki iki",
- "filehist-datetime": "Tanggal/Wektu",
- "filehist-thumb": "Miniatur (''thumbnail'')",
- "filehist-thumbtext": "Miniatur kanggo versi ing $1",
+ "filehist-current": "saiki",
+ "filehist-datetime": "Surya/Tabuh",
+ "filehist-thumb": "Gambar cilik",
+ "filehist-thumbtext": "Gambar cilik kanggo owahan $1",
"filehist-nothumb": "Ora ana miniatur",
"filehist-user": "Panganggo",
- "filehist-dimensions": "Ukuran",
+ "filehist-dimensions": "Alang ujur",
"filehist-filesize": "Gedhené berkas",
- "filehist-comment": "Komentar",
+ "filehist-comment": "Tanggapan",
"imagelinks": "Panganggoan berkas",
- "linkstoimage": "Kaca-kaca sing kapacak iki duwé {{PLURAL:$1|pranala|$1 pranala}} menyang berkas iki:",
+ "linkstoimage": "{{PLURAL:$1|Kaca|$1 kaca}} ngisor iki nggayut barkas iki:",
"linkstoimage-more": "Luwih saka $1 {{PLURAL:$1|kaca|kaca-kaca}} nduwèni pranala menyang berkas iki.\nDhaftar ing ngisor nuduhaké {{PLURAL:$1|kaca pisanan kanthi pranala langsung|$1 kaca kanthi pranala langsung}} menyang berkas iki.\n[[Special:WhatLinksHere/$2|dhaftar pepak]] uga ana.",
"nolinkstoimage": "Ora ana kaca sing nyambung menyang berkas iki.",
"morelinkstoimage": "Ndeleng [[Special:WhatLinksHere/$1|luwih akèh pranala]] menyang berkas iki.",
@@ -1326,7 +1364,7 @@
"duplicatesoffile": "{{PLURAL:$1|berkas ing ngisor arupa duplikat|$1 berkas ing ngisor arupa duplikat}} saka berkas iki ([[Special:FileDuplicateSearch/$2|luwih rinci]]):",
"sharedupload": "Berkas iki saka $1 lan bisa digunakaké déning proyèk liya.",
"sharedupload-desc-there": "Berkas iki asal saka $1 lan bisa dipigunakaké déning proyèk liya.\nMangga pirsani [$2 kaca dhèskripsi berkas] kanggo informasi sabanjuré.",
- "sharedupload-desc-here": "Berkas iki asal saka $1 lan bisa dipigunakaké déning proyèk liya.\nDhèskripsi saka [$2 kaca dhèskripsiné] kapacak ing ngisor iki.",
+ "sharedupload-desc-here": "Barkas iki saka $1 lan kena kanggo proyèk liya.\nPanyandraning [$2 kaca panyandra barkas]é kapacak ing ngisor.",
"sharedupload-desc-edit": "Berkas iki saka $1 lan mungkin dianggo nèng proyèk liya.\nMungkin Sampéyan pingin nyunting katrangan nèng [$2 kaca katrangan berkasé] nèng kono.",
"sharedupload-desc-create": "Berkas iki saka $1 lan mungkin dianggo nèng proyèk liya.\nMungkin Sampéyan pingin nyunting katrangan nèng [$2 kaca katrangan berkasé] nèng kono.",
"filepage-nofile": "Ora ana berkas nganggo jeneng iki.",
@@ -1334,7 +1372,7 @@
"uploadnewversion-linktext": "Unggahna vèrsi sing luwih anyar tinimbang gambar iki",
"shared-repo-from": "saka $1",
"shared-repo": "sawijining panyimpenan kanggo bebarengan",
- "upload-disallowed-here": "Anda tidak bisa menimpa berkas ini.",
+ "upload-disallowed-here": "Sampéyan ora kena ngeblegi barkas iki.",
"filerevert": "Balèkna $1",
"filerevert-legend": "Balèkna berkas",
"filerevert-intro": "Panjenengan mbalèkaké '''[[Media:$1|$1]]''' menyang [vèrsi $4 ing $3, $2].",
@@ -1368,7 +1406,7 @@
"unusedtemplates": "Cithakan sing ora dienggo",
"unusedtemplatestext": "Kaca iki ngamot kabèh kaca ing bilik jeneng {{ns:template}} sing ora dianggo ing kaca ngendi waé.\nPriksanen dhisik pranala-pranala menyang cithakan iki sadurungé mbusak.",
"unusedtemplateswlh": "pranala liya-liyané",
- "randompage": "Sembarang kaca",
+ "randompage": "Waton kaca",
"randompage-nopages": "Ora ana kaca ing {{PLURAL:$2||}}bilik jeneng iki:$1.",
"randomincategory": "Sembarang kaca ing kategori",
"randomincategory-invalidcategory": "\"$1\" dudu jeneng kategori sing apik.",
@@ -1378,7 +1416,7 @@
"randomredirect-nopages": "Ora ana pangalihan ing bilik jeneng \"$1\".",
"statistics": "Statistik",
"statistics-header-pages": "Statistik kaca",
- "statistics-header-edits": "Statistik panyuntingan",
+ "statistics-header-edits": "Pétungan besutan",
"statistics-header-users": "Statistik panganggo",
"statistics-header-hooks": "Statistik liya",
"statistics-articles": "Kaca-kaca isi",
@@ -1392,7 +1430,7 @@
"statistics-users-active-desc": "Panganggo sing ngayahi aktivitas jroning {{PLURAL:$1|dia|$1 dina}} pungkasan",
"pageswithprop": "Kaca-kaca mawa ubarampé",
"pageswithprop-legend": "Kaca-kaca mawa ubarampé",
- "pageswithprop-text": "Kaca iki njlèntèhaké kaca-kaca sing nganggo ubarampé astamiwa.",
+ "pageswithprop-text": "Kaca iki mratélakaké kaca-kaca sing nganggo deduwèkaning kaca tinamtu.",
"pageswithprop-prop": "Arané ubarampé:",
"pageswithprop-submit": "Nuju",
"pageswithprop-prophidden-long": "nilai properti teks dawa didhelikake ($1 kilobita)",
@@ -1404,18 +1442,18 @@
"double-redirect-fixer": "Révisi pangalihan",
"brokenredirects": "Pangalihan rusak",
"brokenredirectstext": "Pengalihan ing ngisor iki tumuju menyang kaca sing ora ana:",
- "brokenredirects-edit": "sunting",
+ "brokenredirects-edit": "besut",
"brokenredirects-delete": "busak",
"withoutinterwiki": "Kaca tanpa pranala antarbasa",
"withoutinterwiki-summary": "Kaca-kaca iki ora nduwé pranala menyang vèrsi ing basa liyané:",
"withoutinterwiki-legend": "Préfiks",
"withoutinterwiki-submit": "Tuduhna",
"fewestrevisions": "Artikel mawa owah-owahan sithik dhéwé",
- "nbytes": "$1 {{PLURAL:$1|bita|bita}}",
+ "nbytes": "$1 {{PLURAL:$1|bét|bét}}",
"ncategories": "$1 {{PLURAL:$1|kategori|kategori}}",
"ninterwikis": "$1 {{PLURAL:$1|interwiki|interwiki}}",
"nlinks": "$1 {{PLURAL:$1|pranala|pranala}}",
- "nmembers": "$1 {{PLURAL:$1|anggota|anggota}}",
+ "nmembers": "$1 {{PLURAL:$1|isi}}",
"nmemberschanged": "$1 â $2 {{PLURAL:$2|anggota|anggota}}",
"nrevisions": "$1 {{PLURAL:$1|revisi|revisi}}",
"nimagelinks": "Kanggo nèng {{PLURAL:$1|kaca|kaca}}",
@@ -1445,7 +1483,7 @@
"mostrevisions": "Kaca mawa pangowahan sing akèh dhéwé",
"prefixindex": "Kabèh kaca mawa ater-ater",
"prefixindex-namespace": "Kabèh kaca mawa ater-ater (bilik jeneng $1)",
- "prefixindex-strip": "Hapus awalan saking daftar",
+ "prefixindex-strip": "Busak ater-ater saka pratélan",
"shortpages": "Kaca cendhak",
"longpages": "Kaca dawa",
"deadendpages": "Kaca-kaca buntu (tanpa pranala)",
@@ -1461,7 +1499,7 @@
"listusers-editsonly": "Tampilaké mung panganggo sing nduwèni kontribusi",
"listusers-creationsort": "Urut miturut tanggal digawé",
"listusers-desc": "Urutna mudhun",
- "usereditcount": "$1 {{PLURAL:$1|suntingan|suntingan}}",
+ "usereditcount": "$1 {{PLURAL:$1|besutan|besutan}}",
"usercreated": "{{GENDER:$3|Digawé}} $1 wanci $2",
"newpages": "Kaca anyar",
"newpages-username": "Asma panganggo:",
@@ -1475,7 +1513,7 @@
"nopagetitle": "Kaca tujuan ora ditemokaké",
"nopagetext": "Kaca sing panjenengan tuju ora ditemokaké.",
"pager-newer-n": "{{PLURAL:$1|1 luwih anyar|$1 luwih anyar}}",
- "pager-older-n": "{{PLURAL:$1|1 luwih lawas|$1 luwih lawas}}",
+ "pager-older-n": "{{PLURAL:$1|1 sing luwih lawas|$1 sing luwih lawas}}",
"suppress": "Pangawas (''oversight'')",
"querypage-disabled": "Kaca kusus iki dipatèni kanggo alesan kinerja.",
"apisandbox": "Kothak wedhi API",
@@ -1488,12 +1526,13 @@
"apisandbox-request-url-label": "URL dikarepaké:",
"apisandbox-request-time": "Suwéné panjalukan: $1",
"booksources": "Sumber buku",
- "booksources-search-legend": "Golèk ing sumber buku",
+ "booksources-search-legend": "Golèk sumber buku",
+ "booksources-search": "Golèk",
"booksources-text": "Ing ngisor iki kapacak daftar pranala menyang situs liyané sing ngadol buku anyar lan bekas, lan mbok-menawa uga ndarbèni informasi sabanjuré ngenani buku-buku sing lagi panjenengan golèki:",
"booksources-invalid-isbn": "ISBN sing diwènèhaké katonané ora valid; priksa kasalahan penyalinan saka sumber asli.",
"specialloguserlabel": "Panampil:",
"speciallogtitlelabel": "Patujon (judhul utawa panganggo) :",
- "log": "Log",
+ "log": "Cathetan",
"all-logs-page": "Kabèh log publik",
"alllogstext": "Gabungan tampilam kabèh log sing ana ing {{SITENAME}}.\nPanjenengan bisa mbatesi tampilan kanthi milih jinis log, jeneng panganggo (sènsitif aksara gedhé/cilik), utawa kaca sing magepokan (uga sènsitif aksara gedhé/cilik).",
"logempty": "Ora ditemokaké èntri log sing pas.",
@@ -1504,9 +1543,9 @@
"prevpage": "Kaca sadurungé ($1)",
"allpagesfrom": "Kaca-kaca kawiwitan kanthi:",
"allpagesto": "Tampilaké kaca dipungkasi ing:",
- "allarticles": "Kabèh artikel",
+ "allarticles": "Kabèh kaca",
"allinnamespace": "Kabeh kaca ($1 namespace)",
- "allpagessubmit": "Madosi",
+ "allpagessubmit": "Menyang",
"allpagesprefix": "Kapacak kaca-kaca ingkang mawi ater-ater:",
"allpagesbadtitle": "Irah-irahan (judhul) ingkang dipun-gunaaken boten sah utawi nganggé ater-ater (awalan) antar-basa utawi antar-wiki. Irah-irahan punika saged ugi nganggé setunggal aksara utawi luwih ingkang boten saged kagunaaken dados irah-irahan.",
"allpages-bad-ns": "{{SITENAME}} ora duwé bilik nama \"$1\".",
@@ -1514,14 +1553,12 @@
"cachedspecial-viewing-cached-ttl": "Sampéyan lagi ndelok vèrsi cadhangan saka kaca iki, sing bisa dadi lawasé wis $1.",
"cachedspecial-viewing-cached-ts": "Sampéyan lagi ndelok vèrsi cadhangan saka kaca iki, sing bisa dadi ora padha karo kasunyatan.",
"cachedspecial-refresh-now": "Delok sing paling anyar.",
- "categories": "Daftar kategori",
+ "categories": "Kategori",
"categoriespagetext": "{{PLURAL:$1|kategori ing ngisor iki ngandhut|kategori ing ngisor iki ngandhut}} kaca utawa media.\n[[Special:UnusedCategories|Kategori sing ora dianggo]] ora ditampilaké ing kéné.\nDeleng uga [[Special:WantedCategories|kategori sing diperlokaké]].",
"categoriesfrom": "Tampilaké kategori-kategori diwiwiti saka:",
- "special-categories-sort-count": "urutna miturut angka",
- "special-categories-sort-abc": "urutna miturut abjad",
- "deletedcontributions": "Kontribusi panganggo sing dibusak",
- "deletedcontributions-title": "Kontribusi panganggo sing dibusak",
- "sp-deletedcontributions-contribs": "kontribusi",
+ "deletedcontributions": "Sumbanganing panganggo sing dibusak",
+ "deletedcontributions-title": "Sumbanganing panganggo sing dibusak",
+ "sp-deletedcontributions-contribs": "sumbangan",
"linksearch": "Golèkan pranala njaba",
"linksearch-pat": "Pola panggolèkan:",
"linksearch-ns": "Bilik nama:",
@@ -1594,7 +1631,7 @@
"addedwatchtext": "Kaca \"[[:$1]]\" wis ditambahaké menyang [[Special:Watchlist|daftar pangawasan]].\nOwah-owahan sing dumadi ing tembé ing kaca iku lan kaca dhiskusi sing kagandhèng, bakal dipacak ing kéné.",
"removewatch": "Singkiraké saka daptar pangawasan",
"removedwatchtext": "Kaca \"[[:$1]]\" wis dibusak saka [[Special:Watchlist|daftar pangawasan]].",
- "watch": "tutana",
+ "watch": "Awati",
"watchthispage": "Periksa kaca iki",
"unwatch": "Ora usah ngawasaké manèh",
"unwatchthispage": "Batalna olèhé ngawasi kaca iki",
@@ -1639,7 +1676,7 @@
"actioncomplete": "Proses tuntas",
"actionfailed": "Tindakan gagal",
"deletedtext": "\"$1\" sampun kabusak. Coba pirsani $2 kanggé log paling énggal kaca ingkang kabusak.",
- "dellogpage": "Cathetan pambusakan",
+ "dellogpage": "Cathetan busakan",
"dellogpagetext": "Ing ngisor iki kapacak log pambusakan kaca sing anyar dhéwé.",
"deletionlog": "Cathetan sing dibusak",
"reverted": "Dibalèkaké ing revisi sadurungé",
@@ -1651,9 +1688,9 @@
"delete-toobig": "Kaca iki ndarbèni sajarah panyuntingan sing dawa, yaiku ngluwihi $1 {{PLURAL:$1|revision|révisi}}.\nPambusakan kaca sing kaya mangkono mau wis ora diparengaké kanggo menggak anané karusakan ing {{SITENAME}}.",
"delete-warning-toobig": "Kaca iki duwé sajarah panyuntingan sing dawa, luwih saka $1 {{PLURAL:$1|révisi|révisi}}.\nMbusak kaca iki bisa ngrusak operasi basis data ing {{SITENAME}};\nkudu ngati-ati.",
"deleting-backlinks-warning": "'''Awas:''' Kaca liyane mungkin ana sing nautake ing kaca sing arep sampeyan busak.",
- "rollback": "Mbalèkaké suntingan",
- "rollbacklink": "balèaké",
- "rollbacklinkcount": "balèkaké $1 {{PLURAL:$1|suntingan|suntingan}}",
+ "rollback": "Wurungaké besutan",
+ "rollbacklink": "balèkaké",
+ "rollbacklinkcount": "balèkaké $1 {{PLURAL:$1|besutan|besutan}}",
"rollbacklinkcount-morethan": "balèkaké luwih saka $1 {{PLURAL:$1|suntingan|suntingan}}",
"rollbackfailed": "Pambalèkan gagal dilakoni",
"cantrollback": "Ora bisa mbalèkaké suntingan; panganggo pungkasan iku siji-sijiné penulis artikel iki.",
@@ -1664,7 +1701,7 @@
"rollback-success": "Suntingan dibalèkaké déning $1;\ndiowahi bali menyang vèrsi pungkasan déning $2.",
"sessionfailure-title": "Sèsi gagal",
"sessionfailure": "Katoné ana masalah karo sèsi log panjenengan; log panjenengan wis dibatalaké kanggo nyegah pambajakan. Mangga mencèt tombol \"back\" lan unggahaké manèh kaca sadurungé mlebu log, lan coba manèh.",
- "protectlogpage": "Log pangreksan",
+ "protectlogpage": "Cathetan pangreksan",
"protectlogtext": "Ngisor iki daptar owahan saka panjagan kaca.\nDelok [[Special:ProtectedPages|daptar kaca sing dijaga]] kanggo daptar panjagan kaca paling anyar.",
"protectedarticle": "ngreksa \"[[$1]]\"",
"modifiedarticleprotection": "ngowahi tingkat pangreksan \"[[$1]]\"",
@@ -1711,7 +1748,7 @@
"minimum-size": "Ukuran minimum",
"maximum-size": "Ukuran maksimum:",
"pagesize": "(bita)",
- "restriction-edit": "Panyuntingan",
+ "restriction-edit": "Besut",
"restriction-move": "Pamindhahan",
"restriction-create": "Gawé",
"restriction-upload": "Unggah",
@@ -1757,42 +1794,43 @@
"undelete-error-long": "Ana kaluputan nalika mbatalaké pambusakan berkas:\n\n$1",
"undelete-show-file-confirm": "Apa panjenengan yakin arep mirsani révisi berkas \"$1 \" sing wis kabusak ing $2 jam $3?",
"undelete-show-file-submit": "Ya",
- "namespace": "Bilik nama (bilik jeneng):",
- "invert": "Balèkna pilihan",
+ "namespace": "Lowah aran:",
+ "invert": "Balèkaké pilihan",
"tooltip-invert": "Centhang kothak iki kanggo ndhelikaké owahan saka kaca-kaca nèng njero bilik jeneng kapilih (lan bilik jeneng kakait yèn dicenthang)",
"namespace_association": "Bilik jeneng kakait",
"tooltip-namespace_association": "Centhang kothak iki kanggo nglebokaké uga bilik jeneng gumenan utawa subyèk sing kakait karo bilik jeneng kapilih",
- "blanknamespace": "(Utama)",
+ "blanknamespace": "(Pokok)",
"contributions": "Sumbangan {{GENDER:$1|panganggo}}",
- "contributions-title": "Kontribusi panganggo kanggo $1",
- "mycontris": "Kontribusi",
+ "contributions-title": "Sumbanganing panganggo $1",
+ "mycontris": "Sumbangan",
+ "anoncontribs": "Sumbangan",
"contribsub2": "Kanggo {{GENDER:$3|$1}} ($2)",
"nocontribs": "Ora ditemokaké owah-owahan sing cocog karo kritéria kasebut iku.",
"uctop": "(saiki)",
- "month": "Wiwit sasi (lan sadurungé):",
+ "month": "Wiwit wulan (lan sadurungé):",
"year": "Wiwit taun (lan sadurungé):",
"sp-contributions-newbies": "Namung panganggo-panganggo anyar",
"sp-contributions-newbies-sub": "Kanggo panganggo anyar",
- "sp-contributions-newbies-title": "Kontribusi panganggo anyar",
+ "sp-contributions-newbies-title": "Sumbanganing para panganggo anyar",
"sp-contributions-blocklog": "Log pemblokiran",
- "sp-contributions-deleted": "kontribusi panganggo sing dibusak",
+ "sp-contributions-deleted": "sumbanganing panganggo sing dibusak",
"sp-contributions-uploads": "unggahan",
"sp-contributions-logs": "log",
"sp-contributions-talk": "wicara",
"sp-contributions-userrights": "pengaturan hak panganggo",
"sp-contributions-blocked-notice": "Panganggo iki lagi diblokir.\nÃntri log blokiran pungkasan sumadhiya nèng ngisor kanggo rujukan:",
"sp-contributions-blocked-notice-anon": "Alamat IP iki lagi diblokir.\nÃntri log blokiran pungkasan sumadhiya nèng ngisor kanggo rujukan:",
- "sp-contributions-search": "Golèk kontribusi",
+ "sp-contributions-search": "Golèk sumbangan",
"sp-contributions-username": "Alamat IP utawa jeneng panganggo:",
"sp-contributions-toponly": "Tuduhaké was suntingan saka benahan pungkasan",
"sp-contributions-submit": "Golèk",
- "whatlinkshere": "Pranala balik",
- "whatlinkshere-title": "Kaca-kaca sing duwé pranala menyang \"$1\"",
+ "whatlinkshere": "Sing nggayut mréné",
+ "whatlinkshere-title": "Kaca mawa pranala nggayut \"$1\"",
"whatlinkshere-page": "Kaca:",
"linkshere": "Kaca-kaca iki nduwé pranala menyang '''[[:$1]]''':",
"nolinkshere": "Ora ana kaca sing nduwé pranala menyang '''[[:$1]]'''.",
"nolinkshere-ns": " Ora ana kaca sing nduwé pranala menyang '''[[:$1]]''' ing bilik jeneng sing kapilih.",
- "isredirect": "kaca pangalihan",
+ "isredirect": "kaca lihlihan",
"istemplate": "karo cithakan",
"isimage": "pranala berkas",
"whatlinkshere-prev": "{{PLURAL:$1|sadurungé|$1 sadurungé}}",
@@ -1802,7 +1840,7 @@
"whatlinkshere-hidetrans": "$1 transklusi",
"whatlinkshere-hidelinks": "pranala-pranala $1",
"whatlinkshere-hideimages": "$1 pranala berkas",
- "whatlinkshere-filters": "Filter-filter",
+ "whatlinkshere-filters": "Panyaringan",
"autoblockid": "Blokir otomatis #$1",
"block": "Blokir panganggo",
"unblock": "Uculaké blokirané panganggo",
@@ -1866,7 +1904,7 @@
"blocklist-nousertalk": "ora éntuk nyunting kaca gunemané dhéwé",
"ipblocklist-empty": "Daftar pamblokiran kosong.",
"ipblocklist-no-results": "alamat IP utawa panganggo sing disuwun ora diblokir.",
- "blocklink": "blokir",
+ "blocklink": "palang",
"unblocklink": "jabel blokir",
"change-blocklink": "owahi blokir",
"contribslink": "sumbangan",
@@ -1949,7 +1987,7 @@
"movepage-page-moved": "Kaca $1 wis dipindhah menyang $2.",
"movepage-page-unmoved": "Kaca $1 ora bisa dialihaké menyang $2.",
"movepage-max-pages": "Paling akèh $1 {{PLURAL:$1|kaca|kaca}} wis dialihaké lan ora ana manèh sing bakal dialihaké sacara otomatis.",
- "movelogpage": "Log pamindhahan",
+ "movelogpage": "Cathetan lihlihan",
"movelogpagetext": "Ing ngisor iki kapacak log pangalihan kaca.",
"movesubpage": "{{PLURAL:$1|Anak-kaca|Anak-kaca}}",
"movesubpagetext": "Kaca iki nduwèni $1 {{PLURAL:$1|anak-kaca|anak-kaca}} kaya kapacak ing ngisor.",
@@ -1989,7 +2027,7 @@
"export-addns": "Tambah",
"export-download": "Simpen minangka berkas",
"export-templates": "Kalebu cithakan-cithakan",
- "export-pagelinks": "Katutna kaca kagandhèng nganti jeroné:",
+ "export-pagelinks": "Lebokaké kaca sing kagayut nyang jeroning:",
"allmessages": "Kabèh laporan sistém",
"allmessagesname": "Asma (jeneng)",
"allmessagesdefault": "Tèks baku",
@@ -2004,7 +2042,7 @@
"allmessages-prefix": "Saring nganggo ater-ater:",
"allmessages-language": "Basa:",
"allmessages-filter-submit": "Tumuju menyang",
- "thumbnail-more": "Gedhèkna",
+ "thumbnail-more": "Gedhèkaké",
"filemissing": "Berkas ora ditemokaké",
"thumbnail_error": "Kaluputan nalika nggawé gambar cilik (''thumbnail''): $1",
"thumbnail_error_remote": "Peringatan kasalahan saka $1:\n$2",
@@ -2061,78 +2099,74 @@
"import-logentry-upload-detail": "$1 {{PLURAL:$1|révisi|révisi}}",
"import-logentry-interwiki-detail": "$1 {{PLURAL:$1|révisi}} saka $2",
"javascripttest": "Panjajalan JavaScript",
- "javascripttest-pagetext-noframework": "Kaca iki disadhiyakaké kanggo nglakokaké panjajalan JavaScript.",
- "javascripttest-pagetext-unknownframework": "Rangka kerja panjajalan ora dingertèni \"$1\".",
- "javascripttest-pagetext-frameworks": "Mangga pilih sawiji saka rangka kerja panjajalan iki: $1",
- "javascripttest-pagetext-skins": "Pilih kulit kanggo nglakokaké panjajalan mawa:",
"javascripttest-qunit-intro": "Delok [dhokumèntasi panjajalan $1] nèng mediawiki.org.",
- "tooltip-pt-userpage": "Kaca panganggo panjenengan",
+ "tooltip-pt-userpage": "Kaca {{GENDER:|panganggo sampéyan}}",
"tooltip-pt-anonuserpage": "Kaca panganggo IP panjenengan",
- "tooltip-pt-mytalk": "Kaca wicara panjenengan",
+ "tooltip-pt-mytalk": "Kaca paguneman {{GENDER:|sampéyan}}",
"tooltip-pt-anontalk": "Dhiskusi perkara suntingan saka alamat IP iki",
- "tooltip-pt-preferences": "Préferènsiku",
+ "tooltip-pt-preferences": "Pamiji {{GENDER:|sampéyan}}",
"tooltip-pt-watchlist": "Daftar kaca sing tak-awasi.",
- "tooltip-pt-mycontris": "Daftar kontribusi panjenengan",
- "tooltip-pt-login": "Panjenengan diaturi mlebu log, nanging ora dikudokaké.",
- "tooltip-pt-logout": "Log metu (oncat)",
- "tooltip-pt-createaccount": "Panjenengan kasuwun damel akun lan mlebet log; ananging bab punika boten wajib",
- "tooltip-ca-talk": "Dhiskusi perkara isi",
- "tooltip-ca-edit": "Sunting kaca iki. Nganggoa tombol pratayang sadurungé nyimpen.",
- "tooltip-ca-addsection": "Miwiti bagèyan anyar",
- "tooltip-ca-viewsource": "Kaca iki direksa. Panjenengan namung bisa mirsani sumberé.",
- "tooltip-ca-history": "Vèrsi-vèrsi sadurungé saka kaca iki.",
+ "tooltip-pt-mycontris": "Pratélaning sumbanganing {{GENDER:|sampéyan}}",
+ "tooltip-pt-login": "Sampéyan prayogané mlebu masiya ora kudu",
+ "tooltip-pt-logout": "Metu",
+ "tooltip-pt-createaccount": "Sampéyan prayogané gawé akun lan mlebu masiya ora kudu",
+ "tooltip-ca-talk": "Parembuganing kaca isi",
+ "tooltip-ca-edit": "Besut kaca iki",
+ "tooltip-ca-addsection": "Miwiti pérangan anyar",
+ "tooltip-ca-viewsource": "Kaca iki direksa. \nSampéyan bisa ndeleng sumberé",
+ "tooltip-ca-history": "Owahaning kaca iki sadurungé",
"tooltip-ca-protect": "Reksa kaca iki",
"tooltip-ca-unprotect": "Ganti panjagan kaca iki",
"tooltip-ca-delete": "Busak kaca iki",
"tooltip-ca-undelete": "Balèkna suntingan ing kaca iki sadurungé kaca iki dibusak",
- "tooltip-ca-move": "Pindhahen kaca iki",
- "tooltip-ca-watch": "Tambahna kaca iki ing daftar pangawasan panjenengan",
+ "tooltip-ca-move": "Aliha kaca iki",
+ "tooltip-ca-watch": "Tambahaké kaca iki nyang pawawangan sapéyan",
"tooltip-ca-unwatch": "Busak kaca iki saka daftar pangawasan panjenengan",
- "tooltip-search": "Golek ing situs {{SITENAME}} iki",
- "tooltip-search-go": "Lungaa ing kaca mawa jeneng persis iki, yèn anaa",
- "tooltip-search-fulltext": "Golèk kaca sing duwé tèks kaya mangkéné",
- "tooltip-p-logo": "Kaca Utama",
- "tooltip-n-mainpage": "Nuwèni Kaca Utama",
- "tooltip-n-mainpage-description": "Pirsani Kaca Utama",
- "tooltip-n-portal": "Perkara proyèk, apa sing bisa panjenengan gayuh, lan ing ngendi golèk apa-apa",
- "tooltip-n-currentevents": "Temokna informasi perkara prastawa anyar",
- "tooltip-n-recentchanges": "Daftar owah-owahan anyar ing wiki.",
- "tooltip-n-randompage": "Tuduhna sembarang kaca",
- "tooltip-n-help": "Papan kanggo golèk pitulung.",
- "tooltip-t-whatlinkshere": "Daftar kabèh kaca wiki sing nyambung menyang kaca iki",
- "tooltip-t-recentchangeslinked": "Owah-owahan pungkasan kaca-kaca sing duwé pranala menyang kaca iki",
+ "tooltip-search": "Golèk nyang {{SITENAME}}",
+ "tooltip-search-go": "Jujug kaca asesirah persis mangkéné yèn ana",
+ "tooltip-search-fulltext": "Golèk kaca isi tulisan kaya mangkéné",
+ "tooltip-p-logo": "Menyang kaca pokok",
+ "tooltip-n-mainpage": "Menyang kaca pokok",
+ "tooltip-n-mainpage-description": "Menyang kaca pokok",
+ "tooltip-n-portal": "Bab proyèk, apa sing bisa sampéyan garap, ana ing endi saprelu golèk apa-apa",
+ "tooltip-n-currentevents": "Temokaké katerangan latar wuri saka kadadéan saiki",
+ "tooltip-n-recentchanges": "Pratélaning owah-owahan pungkasan sajeroning wiki.",
+ "tooltip-n-randompage": "Mot waton kaca",
+ "tooltip-n-help": "Papan kanggo golèk weruh",
+ "tooltip-t-whatlinkshere": "Pratélaning kabèh kaca wiki sing nggayut mréné",
+ "tooltip-t-recentchangeslinked": "Owah-owahan anyar saka kaca-kaca sing nggayut kaca iki",
"tooltip-feed-rss": "''RSS feed'' kanggo kaca iki",
"tooltip-feed-atom": "''Atom feed'' kanggo kaca iki",
- "tooltip-t-contributions": "Deleng daftar kontribusi panganggo iki",
+ "tooltip-t-contributions": "Pratélaning sumbangan {{GENDER:$1|panganggo iki}}",
"tooltip-t-emailuser": "Kirimna e-mail menyang panganggo iki",
- "tooltip-t-upload": "Ngunggah gambar utawa berkas média",
- "tooltip-t-specialpages": "Daftar kabèh kaca astaméwa (kaca kusus)",
- "tooltip-t-print": "Vèrsi cithak kaca iki",
- "tooltip-t-permalink": "Pranala permanèn kanggo révisi kaca iki",
- "tooltip-ca-nstab-main": "Ndeleng kaca artikel",
+ "tooltip-t-upload": "Unggah barkas",
+ "tooltip-t-specialpages": "Pratélaning kabèh kaca mirunggan",
+ "tooltip-t-print": "Cara cithakan kaca iki",
+ "tooltip-t-permalink": "Pranala permanèn saka owahan iki",
+ "tooltip-ca-nstab-main": "Deleng kaca isi",
"tooltip-ca-nstab-user": "Deleng kaca panganggo",
"tooltip-ca-nstab-media": "Ndeleng kaca média",
- "tooltip-ca-nstab-special": "Iki kaca astaméwa utawa kaca kusus sing ora bisa disunting",
+ "tooltip-ca-nstab-special": "Iki kaca mirunggan lan ora bisa dibesut",
"tooltip-ca-nstab-project": "Deleng kaca proyèk",
- "tooltip-ca-nstab-image": "Deleng kaca berkas",
+ "tooltip-ca-nstab-image": "Deleng kaca barkas",
"tooltip-ca-nstab-mediawiki": "Ndeleng pesenan sistém",
"tooltip-ca-nstab-template": "Deleng cithakan",
"tooltip-ca-nstab-help": "Mirsani kaca pitulung",
"tooltip-ca-nstab-category": "Deleng kaca kategori",
- "tooltip-minoredit": "Tandhanana minangka suntingan cilik",
- "tooltip-save": "Simpen owah-owahan panjenengan",
- "tooltip-preview": "Pratayang owah-owahan panjenengan, tulung nganggo fungsi iki sadurungé nyimpen!",
- "tooltip-diff": "Tuduhna owah-owahan panjenengan ing tèks iki.",
+ "tooltip-minoredit": "Tandhani iki minangka besutan cilik",
+ "tooltip-save": "Simpen owah-owahaning sampéyan",
+ "tooltip-preview": "Prawuryan owah-owahaning sampéyan. Anggoa cara iki sadurungé nyimpen.",
+ "tooltip-diff": "Tuduhaké owah-owahan endi sing sampéyan gawé tumrap tulisan iki",
"tooltip-compareselectedversions": "Delengen prabédan antara rong vèrsi kaca iki sing dipilih.",
"tooltip-watch": "Tambahna kaca iki ing daftar pangawasan panjenengan",
"tooltip-watchlistedit-normal-submit": "Singkiraké judhul",
"tooltip-watchlistedit-raw-submit": "Anyari daptar pangawasan",
"tooltip-recreate": "Gawéa kaca iki manèh senadyan tau dibusak",
"tooltip-upload": "Miwiti pangunggahan",
- "tooltip-rollback": "Mbalèkaké suntingan-suntingan ing kaca iki menyang kontributor pungkasan nganggo sak klik.",
+ "tooltip-rollback": "Balèkaké besutan-besutan kaca iki déning sing pungkasan nyumbang sarana saklikan.",
"tooltip-undo": "Mbalèkaké révisi iki lan mbukak kothak panyuntingan jroning mode pratayang. Wènèhi kasempatan kanggo ngisi alesan ing kothak ringkesan.",
"tooltip-preferences-save": "Simpen préperensi",
- "tooltip-summary": "Lebokna ringkesan cendhèk",
+ "tooltip-summary": "Isi tingkesan cendhak",
"anonymous": "{{PLURAL:$1|Panganggo|panganggo}} anon ing {{SITENAME}}.",
"siteuser": "Panganggo {{SITENAME}} $1",
"anonuser": "Panganggo anonim {{SITENAME}} $1",
@@ -2150,18 +2184,18 @@
"spam_reverting": "Mbalèkaké menyang vèrsi pungkasan sing ora ana pranalané menyang $1",
"spam_blanking": "Kabèh révisi sing duwé pranala menyang $1, pangosongan",
"spam_deleting": "Kabèh benahan sing nduwé pranala nèng $1, dibusaki",
- "simpleantispam-label": "Pamariksan anti-spam.\n'''AJA''' diisèkaké!",
+ "simpleantispam-label": "Pamariksa anti-spam.\nIki aja diisi!",
"pageinfo-title": "Inpormasi kanggo \"$1\"",
"pageinfo-not-current": "Maaf, tidak mungkin memberikan informasi ini ke revisi lama.",
"pageinfo-header-basic": "Informasi dhasar",
- "pageinfo-header-edits": "Riwayat suntingan",
+ "pageinfo-header-edits": "Babad besutan",
"pageinfo-header-restrictions": "Perlindungan halaman",
"pageinfo-header-properties": "Properti kaca",
"pageinfo-display-title": "Judul tampilan",
"pageinfo-default-sort": "Kunci urut baku",
"pageinfo-length": "Panjang halaman (dalam bita)",
"pageinfo-article-id": "ID kaca",
- "pageinfo-language": "Bahasa isi halaman",
+ "pageinfo-language": "Basaning isining kaca",
"pageinfo-content-model": "Model isi kaca",
"pageinfo-robot-policy": "Diindeks karo robot",
"pageinfo-robot-index": "Entuk",
@@ -2173,9 +2207,9 @@
"pageinfo-subpages-value": "$1 ($2 {{PLURAL:$2|pengalihan|pengalihan}}; $3 {{PLURAL:$3|non-pengalihan|non-pengalihan}})",
"pageinfo-firstuser": "Pembuat halaman",
"pageinfo-firsttime": "Tanggal pembuatan halaman",
- "pageinfo-lastuser": "Penyunting terakhir",
- "pageinfo-lasttime": "Tanggal suntingan pungkasan",
- "pageinfo-edits": "Cacahé kabèh suntingan",
+ "pageinfo-lastuser": "Sing mbesut pungkasan",
+ "pageinfo-lasttime": "Tanggal besutan pungkasan",
+ "pageinfo-edits": "Gunggung cacahing besutan",
"pageinfo-authors": "Cacahé kabèh panganggit sing bédha-bédha.",
"pageinfo-recent-edits": "Cacahé suntingan saiki (ing $1 kapungkur)",
"pageinfo-recent-authors": "Cacahé panganggit sing bédha-bédha saiki",
@@ -2183,7 +2217,7 @@
"pageinfo-hidden-categories": "{{PLURAL:$1|Katégori|Katégori}} kadhelikaké ($1)",
"pageinfo-templates": "{{PLURAL:$1|Templat|Templat}} yang ditransklusi ($1)",
"pageinfo-transclusions": "{{PLURAL:$1|Kaca|Kaca}} sing ditransklusi ing ($1)",
- "pageinfo-toolboxlink": "Informasi kaca",
+ "pageinfo-toolboxlink": "Katerangan kaca",
"pageinfo-redirectsto": "Dialihaké dhateng",
"pageinfo-redirectsto-info": "info",
"pageinfo-contentpage": "Diétung minangka satunggaling kaca isi",
@@ -2216,20 +2250,20 @@
"filedelete-old-unregistered": "Révisi berkas \"$1\" sing diwènèhaké ora ana sajroning basis data.",
"filedelete-current-unregistered": "Berkas sing dispésifikasi \"$1\" ora ana sajroning basis data.",
"filedelete-archive-read-only": "Dirèktori arsip \"$1\" ora bisa ditulis déning server wèb.",
- "previousdiff": "â Panyuntingan sadurungé",
- "nextdiff": "Panyuntingan sing luwih anyar â",
+ "previousdiff": "â Besutan sadurungé",
+ "nextdiff": "Besutan luwih anyar â",
"mediawarning": "'''Pèngetan''': Jinis berkas iki mungkin isiné kodhé mbebayani.\nYèn dilakokaké, sistem Sampéyan bisa kaserang.",
"imagemaxsize": "Wates ukuran gambar: ''(kanggo kaca dhèskripsi berkas)''",
"thumbsize": "Ukuran gambar cilik (thumbnail):",
"widthheightpage": "$1 Ã $2, $3 {{PLURAL:$3|kaca|kaca}}",
"file-info": "ukuran berkas: $1, tipe MIME: $2",
- "file-info-size": "$1 Ã $2 piksel, ukuran berkas: $3, tipe MIME: $4",
+ "file-info-size": "$1 Ã $2 piksel, ukuran barkas: $3, jinis MIME: $4",
"file-info-size-pages": "$1 à $2 piksel, gedhéné berkas: $3, jinisé MIME: $4, $5 {{PLURAL:$5|kaca|kaca}}",
"file-nohires": "Ora ana résolusi sing luwih dhuwur.",
"svg-long-desc": "Berkas SVG, nominal $1 à $2 piksel, gedhené berkas: $3",
"svg-long-desc-animated": "Berkas SVG, nominal $1 à $2 piksel, gedhené berkas: $3",
"svg-long-error": "Berkas SVG ora sah: $1",
- "show-big-image": "Berkas asli",
+ "show-big-image": "Barkas asli",
"show-big-image-preview": "Gedhéné pratayang iki: $1",
"show-big-image-other": "{{PLURAL:$2|Résolusi|Résolusi}} liya: $1.",
"show-big-image-size": "$1 Ã $2 piksel",
@@ -2270,17 +2304,17 @@
"sunday-at": "Minggu jam $1",
"yesterday-at": "Dhek wingi jam $1",
"bad_image_list": "Formaté kaya mengkéné:\n\nNamung butir daftar (baris sing diawali mawa tandha *) sing mèlu diitung. Pranala kapisan ing sawijining baris kudu pranala ing berkas sing ala.\nPranala-pranala sabanjuré ing baris sing padha dianggep minangka ''pengecualian'', yaiku artikel sing bisa nuduhaké berkas iku.",
- "metadata": "Metadata",
+ "metadata": "Métadata",
"metadata-help": "Berkas iki ngandhut informasi tambahan sing mbokmenawa ditambahaké déning kamera digital utawa ''scanner'' sing dipigunakaké kanggo nggawé utawa olèhé digitalisasi berkas. Yèn berkas iki wis dimodifikasi, detail sing ana mbokmenawa ora sacara kebak nuduhaké informasi saka gambar sing wis dimodifikasi iki.",
"metadata-expand": "Tuduhna detail tambahan",
"metadata-collapse": "Delikna detail tambahan",
- "metadata-fields": "Entri lapangan-lapangan metadata sing kapacak iki bakal dituduhaké ing kaca informasi gambar yèn tabèl metadata didhelikaké. Entri liyané minangka baku bakal didhelikaké.\n* make\n* model\n* datetimeoriginal\n* exposuretime\n* fnumber\n* isospeedratings\n* focallength\n* artist\n* copyright\n* imagedescription\n* gpslatitude\n* gpslongitude\n* gpsaltitude",
+ "metadata-fields": "Babagan-babagan métadhata gambar sing katulis ing nawala iki bakal kapacak nyang jebèran kaca gambar nalika métadhata dinebaké.\nLiyané bakal kadhelikaké kanthi baku.\n* panggawé\n* gagrag\n* tanggalwayahasli\n* wayahpaparan\n* angkaf\n* bijibanteriso\n* dawafocal\n* artis\n* hakcipta\n* pratélangambar\n* latitudgps\n* longitudgps\n* altitudgps",
"exif-imagewidth": "Jembar",
"exif-imagelength": "Dhuwur",
"exif-bitspersample": "Bit per komponèn",
"exif-compression": "Skéma komprèsi",
"exif-photometricinterpretation": "Komposisi piksel",
- "exif-orientation": "Orièntasi",
+ "exif-orientation": "Kéblat",
"exif-samplesperpixel": "Cacah komponèn",
"exif-planarconfiguration": "Pangaturan data",
"exif-ycbcrsubsampling": "Rasio subsampling Y ke C",
@@ -2299,21 +2333,21 @@
"exif-datetime": "Tanggal lan wektu pangowahan berkas",
"exif-imagedescription": "Judhul gambar",
"exif-make": "Produsèn kamera",
- "exif-model": "Modhèl kamera",
- "exif-software": "Perangkat lunak",
+ "exif-model": "Modhèl kaméra",
+ "exif-software": "Piranti alus sing dianggo",
"exif-artist": "Prodhusèn",
"exif-copyright": "Sing ndarbèni hak cipta",
"exif-exifversion": "Vèrsi Exif",
"exif-flashpixversion": "Dukungan versi Flashpix",
- "exif-colorspace": "Papan werna",
+ "exif-colorspace": "Lowah warna",
"exif-componentsconfiguration": "Teges saben komponèn",
"exif-compressedbitsperpixel": "Modhe komprèsi gambar",
- "exif-pixelydimension": "Jembaré gambar",
- "exif-pixelxdimension": "Dhuwuré gambar",
+ "exif-pixelxdimension": "Jembaring gambar",
+ "exif-pixelydimension": "Dhuwuring gambar",
"exif-usercomment": "Komentar panganggo",
- "exif-relatedsoundfile": "Berkas audio sing kagandhèng",
- "exif-datetimeoriginal": "Tanggal lan wektu nggawé data",
- "exif-datetimedigitized": "Tanggal lan wektu dhigitalisasi",
+ "exif-relatedsoundfile": "Barkas swara magepokan",
+ "exif-datetimeoriginal": "Surya lan tabuh panggawéning data",
+ "exif-datetimedigitized": "Tanggal lan tabuh dhigitalisasi",
"exif-subsectime": "Subdetik DateTime",
"exif-subsectimeoriginal": "Subdetik DateTimeOriginal",
"exif-subsectimedigitized": "Subdetik DateTimeDigitized",
@@ -2458,7 +2492,7 @@
"exif-copyrighted-true": "Mawa hak cipta",
"exif-copyrighted-false": "Status hak cipta durung ditemtokake",
"exif-unknowndate": "Tanggal ora dingertèni",
- "exif-orientation-1": "Normal",
+ "exif-orientation-1": "Sedhengan",
"exif-orientation-2": "Baliken sacara horisontal",
"exif-orientation-3": "Diputer 180°",
"exif-orientation-4": "Baliken sacara vèrtikal",
@@ -2728,7 +2762,6 @@
"version-entrypoints-header-entrypoint": "Tithik lebon",
"version-entrypoints-header-url": "URL",
"redirect": "Dialihake dening gambar, panganggo, kaca, utawa ID revisi",
- "redirect-legend": "Dialihake menyang gambar utawa kaca",
"redirect-summary": "Kaca astamiwa iki dialihake menyang gambar (jeneng gambar diwenehi), kaca (ID revisi utama ID kaca diwenehi), utawa kaca panganggo (ID panganggo diwenehi). Cara nganggo: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], or [[{{#Special:Redirect}}/user/101]].",
"redirect-submit": "Nuju",
"redirect-lookup": "Golek:",
@@ -2740,16 +2773,15 @@
"redirect-not-exists": "Nilai ora ditemokaké",
"fileduplicatesearch": "Golèk berkas duplikat",
"fileduplicatesearch-summary": "Golèk duplikat berkas adhedhasar biji hash-é.",
- "fileduplicatesearch-legend": "Golèk duplikat",
"fileduplicatesearch-filename": "Jeneng berkas:",
"fileduplicatesearch-submit": "Golèk",
"fileduplicatesearch-info": "$1 Ã $2 piksel Ukuran berkas: $3 Tipe MIME: $4",
"fileduplicatesearch-result-1": "Berkas \"$1\" ora duwé duplikat idèntik.",
"fileduplicatesearch-result-n": "Berkas \"$1\" ora ndarbèni {{PLURAL:$2|1 duplikat idèntik|$2 duplikat idèntik}}.",
"fileduplicatesearch-noresults": "Ora ana berkas mawa jeneng \"$1\" ditemokaké.",
- "specialpages": "Kaca astamiwa",
+ "specialpages": "Kaca mirunggan",
"specialpages-note-top": "Katrangan",
- "specialpages-note": "* Kaca astamiwa biasa.\n* ",
+ "specialpages-note": "* Kaca mirunggan sedhengan.\n* ",
"specialpages-group-maintenance": "Lapuran pangopènan",
"specialpages-group-other": "Kaca-kaca astaméwa liyané",
"specialpages-group-login": "Mlebu log / nggawé akun",
@@ -2767,9 +2799,9 @@
"intentionallyblankpage": "Kaca iki disengajakaké kosong",
"external_image_whitelist": " #Umbarna larikan iki apa anané
\n#Pigunakaké fragmèn èksprèsi regular (mung bagéyan ing antara //) ing ngisor\n#Fragmèn ini bakal dicocogaké karo URL saka gambar-gambar èksternal\n#Fragmèn sing cocog bakal ditampilaké minangka gambar, yèn ora mung pranala menyang gambar waé sing ditampilaké\n#Larikan sing diwiwiti nganggo # dianggep minangka komentar\n#Iki ora mbédakaké aksara gedhé/cilik\n#Dèlèhna kabèh fragmèn èksprèsi regular sadhuwuré larikan iki. Umbarna larikan iki apa anané ",
"tags": "Tag pangowahan sing absah",
- "tag-filter": "Filter [[Special:Tags|Tag]]:",
+ "tag-filter": "Panyaringan [[Special:Tags|tandha]]:",
"tag-filter-submit": "Penyaring",
- "tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1|Tag|Tag}}]]: $2)",
+ "tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1|Tenger|Tenger}}]]: $2)",
"tags-title": "Tag",
"tags-intro": "Kaca iki ndhaptar tag sing bisa ditandhani déning piranti alus tumrap sawijining suntingan lan maknané.",
"tags-tag": "Jeneng tag",
@@ -2779,7 +2811,7 @@
"tags-hitcount-header": "Owah-owahan mawa tag",
"tags-active-yes": "Iya",
"tags-active-no": "Ora",
- "tags-edit": "sunting",
+ "tags-edit": "besut",
"tags-hitcount": "$1 {{PLURAL:$1|pangowahan|pangowahan}}",
"comparepages": "Bandhingna kaca",
"compare-page1": "Kaca 1",
@@ -2824,10 +2856,10 @@
"logentry-suppress-event-legacy": "$1 ndhelik-ndhelik {{GENDER:$2|ngganti}} patampilan saka kadadéan log nèng $3",
"logentry-suppress-revision-legacy": "$1 ndhelik-ndhelik {{GENDER:$2|ngganti}} patampilan saka pambenahan nèng kaca $3",
"revdelete-content-hid": "kontèn didhelikaké",
- "revdelete-summary-hid": "ringkesan suntingan didhelikaké",
+ "revdelete-summary-hid": "tingkesaning besutan kadhelikaké",
"revdelete-uname-hid": "jeneng panganggo didhelikaké",
"revdelete-content-unhid": "kontèn dituduhaké",
- "revdelete-summary-unhid": "ringkesan suntingan dituduhaké",
+ "revdelete-summary-unhid": "tingkesaning besutan ora kadhelikaké",
"revdelete-uname-unhid": "jeneng panganggo dituduhaké",
"revdelete-restricted": "rèstriksi ditrapaké marang para opsis",
"revdelete-unrestricted": "rèstriksi marang para opsis dijabel",
@@ -2845,8 +2877,9 @@
"logentry-rights-rights": "$1 {{GENDER:$2|ngganti}} kaanggotan kelompok kanggo $3 saka $4 dadi $5",
"logentry-rights-rights-legacy": "$1 {{GENDER:$2|ngganti}} kanggotaan grup kanggo $3",
"logentry-rights-autopromote": "$1 otomatis {{GENDER:$2|dipromosikne}} saka $4 nèng $5",
+ "logentry-upload-upload": "$1 {{GENDER:$2|ngunggah}} $3",
"rightsnone": "(ora ana)",
- "revdelete-summary": "ringkesan suntingan",
+ "revdelete-summary": "tingkesan besutan",
"feedback-adding": "Nambahaké lebon saran nèng kaca...",
"feedback-bugcheck": "Apik! Pesthèké kuwi dudu sawijining [$1 bug sing dingertèni].",
"feedback-bugnew": "Aku wis mriksa. Kandakaké bug anyar",
diff --git a/languages/i18n/ka.json b/languages/i18n/ka.json
index 234103cdc9..6685cc6c2f 100644
--- a/languages/i18n/ka.json
+++ b/languages/i18n/ka.json
@@ -1842,8 +1842,6 @@
"categories-submit": "á©áááááá",
"categoriespagetext": "á¨áááááá {{PLURAL:$1|ááá¢áááá áá á¨áááªááá¡|ááá¢áááá áá á¨áááªááá¡}} áááá áá¡ áá áááááá¡.\n[[Special:UnusedCategories|ááááá£á§ááááááá ááá¢áááá áááá]] áᥠááá©áááááá áá áá áá¡.\náá®. áá¡ááá [[Special:WantedCategories|áááá®áááááá ááá¢áááá áááá]].",
"categoriesfrom": "áá©ááááá ááá¢áááá áááá, á áááááá᪠áá¬á§ááá:",
- "special-categories-sort-count": "áááááááá á ááááááááá¡ ááá®ááááá",
- "special-categories-sort-abc": "ááááááá áááááááá",
"deletedcontributions": "áááá®ááá ááááá¡ á¬áá¨áááá á¬ááááá",
"deletedcontributions-title": "á¬áá¨áááá á¬ááááá",
"sp-deletedcontributions-contribs": "á¬ááááá",
@@ -2466,11 +2464,7 @@
"import-logentry-upload-detail": "$1 {{PLURAL:$1|ááá á¡áá|ááá á¡áá}} ááááá á¢áá ááá£ááá",
"import-logentry-interwiki-detail": "$1 {{PLURAL:$1|ááá á¡áá|ááá á¡áá}} ááááá á¢áá ááá£ááá $2-ááá",
"javascripttest": "JavaScript-áá¡ á¢áá¡á¢áá ááá",
- "javascripttest-pagetext-noframework": "áá¡ áááá áá ááá áááá¡á¢á áá ááá£ááá JavaScript-áá¡ á¢áá¡á¢áááá¡ ááá¡áá¨ááááá.",
- "javascripttest-pagetext-unknownframework": "â$1-áá¡â á¢áá¡á¢áá áááá¡ á£áªáááá ááá ááá.",
"javascripttest-pagetext-unknownaction": "á£áªáááá á¥áááááá â$1â.",
- "javascripttest-pagetext-frameworks": "ááá®ááá, ááá á©ááá á¢áá¡á¢áá áááá¡ áá á-áá áá á¨áááááá ááá ááá: $1",
- "javascripttest-pagetext-skins": "á¢áá¡á¢áááá¡ ááá¡áá¨ááááá ááá á©ááá ááá¤áá ááááá¡ áááá:",
"javascripttest-qunit-intro": "áá®áááá [$1 á¢áá¡á¢áá áááá¡ áááá£áááá¢ááá] mediawiki.org-áá.",
"tooltip-pt-userpage": "{{GENDER:|áá¥áááá áááá®ááá ááááá¡}} áááá áá",
"tooltip-pt-anonuserpage": "á©ááá IP-áá¡ áá¥ááá áááá®ááá ááááá¡ áááá áá",
@@ -2758,8 +2752,8 @@
"exif-colorspace": "á¤áá áá á¡ááá áªá",
"exif-componentsconfiguration": "áªááááá£á ááááááááá¢áá áááá¤ááá£á ááªáá",
"exif-compressedbitsperpixel": "á¡á£á áááá¡ á¨ááá£áá¨ááá¡ á ááááá",
- "exif-pixelydimension": "á¡á£á áááá¡ á¡ááááá",
- "exif-pixelxdimension": "á¡á£á áááá¡ á¡áááá¦áá",
+ "exif-pixelxdimension": "á¡á£á áááá¡ á¡ááááá",
+ "exif-pixelydimension": "á¡á£á áááá¡ á¡áááá¦áá",
"exif-usercomment": "áááá®ááá ááááá¡ áááááá¢áá á",
"exif-relatedsoundfile": "á¨áá¡áááááá¡á áá£ááá á¤áááá",
"exif-datetimeoriginal": "ááááá áá áááá¡ ááá áá¦á áá áá á",
@@ -3114,9 +3108,9 @@
"confirm_purge_button": "ááá áá",
"confirm-purge-top": "áá¡á£á á áá áááá ááá¡ á¥áá¨áá¡ á¬áá¨áá?",
"confirm-purge-bottom": "á¥áá¨áá¡ ááá¬áááááá¡ á¨ááááá áá¥áááá ááá©áááááá áááá ááá á¡áá.",
- "confirm-watch-button": "ááá áá",
+ "confirm-watch-button": "áááá®",
"confirm-watch-top": "ááááááá¢á áá¡ áááá áá áá¥áááá áááá¢á áááá¡ á¡ááá¡?",
- "confirm-unwatch-button": "ááá áá",
+ "confirm-unwatch-button": "áááá®",
"confirm-unwatch-top": "áááá®á¡áá áá¡ áááá áá áá¥áááá áááá¢á áááá¡ á¡ááááá?",
"semicolon-separator": "; ",
"comma-separator": ", ",
@@ -3250,7 +3244,6 @@
"version-libraries-description": "áá¦á¬áá á",
"version-libraries-authors": "ááá¢áá ááá",
"redirect": "ááááááá¡áááá áááá á¤ááááááá, áááá®ááá ááááááá, áááá ááááá, ááá á¡ááá¡ áá ááá¢áá ááááªááá¡ ááááá¢áá¤áááá¢áá áááá",
- "redirect-legend": "ááááááá¡áááá áááá á¤ááááá áá áááá ááá",
"redirect-summary": "áá¡ áááá®ááá á áááá áá áááá¡áááá áááá¡ á¤ááááá (á¤ááááá¡ á¡áá®áááááá) áááá ááá, (áááá ááá¡ áá ááá á¡ááá¡ ááááá¢áá¤áááá¢áá áááá), áááá®ááá ááááá¡ áááá ááá (áááá®ááá ááááá¡ á áááááááá ááá ááááá¢áá¤áááá¢áá áááá) áá áá£á ááááá¡ áááááªáááá. ááááá§ááááá:\n[[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], [[{{#Special:Redirect}}/user/101]], or [[{{#Special:Redirect}}/logid/186]].",
"redirect-submit": "áááá",
"redirect-lookup": "á«áááá:",
@@ -3263,7 +3256,6 @@
"redirect-not-exists": "áááá¨ááááááá ááá áááá«áááá",
"fileduplicatesearch": "áá ááááá á á¤ááááááá¡ á«áááá",
"fileduplicatesearch-summary": "áá ááááá á á¤ááááááá¡ á«áááá á°áá¨-ááááá¡ ááá®ááááá.",
- "fileduplicatesearch-legend": "áá£áááááá¢áááá¡ á«áááá",
"fileduplicatesearch-filename": "á¤ááááá¡ á¡áá®ááá:",
"fileduplicatesearch-submit": "á«áááá",
"fileduplicatesearch-info": "$1 à $2 ááá¥á¡áááá á¤ááááá¡ ááááá: $3 MIME-á¢ááá: $4",
diff --git a/languages/i18n/kab.json b/languages/i18n/kab.json
index c9039a174a..1be505741c 100644
--- a/languages/i18n/kab.json
+++ b/languages/i18n/kab.json
@@ -1502,8 +1502,6 @@
"categories": "Taggayin",
"categoriespagetext": "{{PLURAL:$1|Taggayt agi teseqdec|Taggayin agi teseqdecet}} sÉ£ur isebtar naÉ£ ifuyla.\n[[Special:UnusedCategories|Taggayin ur sÉan ara aqeddic]]\náºeá¹ daÉ£en [[Special:WantedCategories|taggayin yetwesuteren]].",
"categoriesfrom": "Ssken taggayin seg :",
- "special-categories-sort-count": "Afran s amá¸an n iferdisen",
- "special-categories-sort-abc": "afran s ugemmay",
"deletedcontributions": "Isekcam yemḥan",
"deletedcontributions-title": "Isekcam yemḥan",
"sp-deletedcontributions-contribs": "Isekcam",
@@ -2049,10 +2047,6 @@
"import-logentry-upload-detail": "$1 {{PLURAL:$1|lqem|ileqman}}",
"import-logentry-interwiki-detail": "$1 {{PLURAL:$1|lqem|ileqman}} seg $2",
"javascripttest": "Tarmit n JavaScript",
- "javascripttest-pagetext-noframework": "Asebtar agi yeḥeá¹á¹ i usselkem n tirmitin JavaScript.",
- "javascripttest-pagetext-unknownframework": "Tamṣuka « $1 » warisem.",
- "javascripttest-pagetext-frameworks": "Ilaq ad xetreḠyiwet n timṣukyin n tarmit agi : $1",
- "javascripttest-pagetext-skins": "Xter agwlim s anwa ad xeddemeḠtarmit :",
"javascripttest-qunit-intro": "ZeṠ[$1 tumlin n tarmit] ɣef mediawiki.org.",
"tooltip-pt-userpage": "Asebter n umseqdac inu",
"tooltip-pt-anonuserpage": "Asebter n wemseqdac n IP wukud tekkiá¸",
@@ -2296,8 +2290,8 @@
"exif-colorspace": "Tallunt n tiniskit",
"exif-componentsconfiguration": "Anamek n yal isger",
"exif-compressedbitsperpixel": "Askar n usekkusem n tugna",
- "exif-pixelydimension": "Tehri n tugna",
- "exif-pixelxdimension": "Taɣwzi n tugna",
+ "exif-pixelxdimension": "Tehri n tugna",
+ "exif-pixelydimension": "Taɣwzi n tugna",
"exif-usercomment": "Iwenniten n useqdac",
"exif-relatedsoundfile": "Afaylu n eslu yeqqnen",
"exif-datetimeoriginal": "Azmez n tuddma tamezwarut",
@@ -2719,7 +2713,6 @@
"version-entrypoints-header-entrypoint": "Ired n wekcam",
"version-entrypoints-header-url": "Tansa URL",
"redirect": "Alssniled s ufaylu, amseqdac, asebtar neɣ ID n tacaggart",
- "redirect-legend": "Alsnil ɣer asebtar neɣ afaylu",
"redirect-summary": "Asebtar agi uslig yetalssnil É£eá¹ ufaylu (isem n ufaylu yetwefked), asebtar (ID n tacaggart neÉ£ n usebtar id yetwafken) neÉ£ asebtar n umseqdac (ID umá¸in n umseqdac yetwefked). Asseqdec : [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], neÉ£ [[{{#Special:Redirect}}/user/101]].",
"redirect-submit": "Ruḥ",
"redirect-lookup": "Anadi :",
@@ -2731,7 +2724,6 @@
"redirect-not-exists": "Azal ulac-it",
"fileduplicatesearch": "Anadi n allusen",
"fileduplicatesearch-summary": "Anadi n ineɣlan n ifuyla kifkif ɣef leḥsab n udsil nsen n udway.",
- "fileduplicatesearch-legend": "Nadi allus",
"fileduplicatesearch-filename": "Isem n ufaylu :",
"fileduplicatesearch-submit": "Nadi",
"fileduplicatesearch-info": "$1 Ã $2 pixel Tiddi n ufaylu : $3 Anaw MIME : $4",
diff --git a/languages/i18n/kk-arab.json b/languages/i18n/kk-arab.json
index 65c014cd1d..bd17e300c3 100644
--- a/languages/i18n/kk-arab.json
+++ b/languages/i18n/kk-arab.json
@@ -909,8 +909,6 @@
"categories": "ساÙاتتار",
"categoriespagetext": "ÙÛÙÛس٠ساÙاتتار ÙØ´ÙÙØ¯Û Ø¨ÛتتÛر ÙÛ ØªØ§Ø³Ù¾Ø§Ùار بار.\n[[Special:UnusedCategories|Unused categories]] are not shown here.\nAlso see [[Special:WantedCategories|wanted categories]].",
"categoriesfrom": "ساÙاتتارد٠Ù
ÙÙادا٠باستاپ ÙÙرسÛتÛ:",
- "special-categories-sort-count": "ساÙÙÙ
Û٠سÛرÙپتاÛ",
- "special-categories-sort-abc": "اÙÙپبÙÙÙ
Û٠سÛرÙپتاÛ",
"deletedcontributions": "ÙاتÙسÛØ´ÙÙÙÚ Ø¬ÙÙÙÙعا٠ÛÙÛسÙ",
"deletedcontributions-title": "ÙاتÙسÛØ´ÙÙÙÚ Ø¬ÙÙÙÙعا٠ÛÙÛسÙ",
"linksearch": "سÙرتÙ٠سٸÙتÛÙ
ÛÙÛردٸ ٸزدÛÛ",
@@ -1419,8 +1417,8 @@
"exif-colorspace": "ٴتÛس اÙاسÙ",
"exif-componentsconfiguration": "ارÙاÙس٠ÙÛراش Ù´Ù
اÙÙ",
"exif-compressedbitsperpixel": "سÛرÛت ÙÙسÙÙ
Ø¯Ø§Û Ù´ØªØ§Ø±ØªÙبÙ",
- "exif-pixelydimension": "سÛرÛتتÙÚ Ø¬Ø§Ø±Ø§Ù
د٠ÛÙÙ",
- "exif-pixelxdimension": "سÛرÛتتÙÚ Ø¬Ø§Ø±Ø§Ù
د٠بÙÙÙÙتÙÚ¯Ù",
+ "exif-pixelxdimension": "سÛرÛتتÙÚ Ø¬Ø§Ø±Ø§Ù
د٠ÛÙÙ",
+ "exif-pixelydimension": "سÛرÛتتÙÚ Ø¬Ø§Ø±Ø§Ù
د٠بÙÙÙÙتÙÚ¯Ù",
"exif-usercomment": "ÙاتÙسÛØ´ÙÙÙÚ Ù
اÙدÛÙ
ÛÙÛرÙ",
"exif-relatedsoundfile": "ÙاتÙست٠دÙبÙس ÙاÙÙÙ",
"exif-datetimeoriginal": "جاساÙعا٠ÙÛزÙ",
@@ -1721,7 +1719,6 @@
"version-software-version": "ÙÛسÙاسÙ",
"fileduplicatesearch": "ÙاÙ٠تÛÙÙÛسÙاÙارÙÙ ÙزدÛÛ",
"fileduplicatesearch-summary": "ÙاÙÙ ØÛØ´Ù Ù
اعÙÙاس٠ÙÛÚ¯ÙزÙÙØ¯Û ØªÛÙÙÛسÙاÙارÙÙ ÙزدÛÛ.",
- "fileduplicatesearch-legend": "تÛÙÙÛسÙاÙÙ ÙزدÛÛ",
"fileduplicatesearch-filename": "ÙاÙ٠اتاÛÙ:",
"fileduplicatesearch-submit": "ÙزدÛ",
"fileduplicatesearch-info": "$1 à $2 Ù¾ÙÙÙسÛÙ ÙاÙÙ Ù
ÙÙØ´ÛرÙ: $3 MIME ٴتÛرÙ: $4",
diff --git a/languages/i18n/kk-cyrl.json b/languages/i18n/kk-cyrl.json
index 0fe94da20c..f839f944ef 100644
--- a/languages/i18n/kk-cyrl.json
+++ b/languages/i18n/kk-cyrl.json
@@ -13,7 +13,8 @@
"ìë¼",
"Macofe",
"Batyrbek.kz",
- "Matma Rex"
+ "Matma Rex",
+ "Nemo bis"
]
},
"tog-underline": "СÑлÑеменÑÒ£ аÑÑÑн ÑÑзÑ:",
@@ -127,6 +128,8 @@
"october-date": "Òазан $1",
"november-date": "ÒаÑаÑа $1",
"december-date": "ÐелÑоÒÑан $1",
+ "period-am": "ТүÑÑен бұÑÑÒ£ÒÑ",
+ "period-pm": "ТүÑÑен кейÑнгÑ",
"pagecategories": "{{PLURAL:$1|СанаÑ|СанаÑ}}",
"category_header": "«$1» ÑанаÑÑндаÒÑ Ð±ÐµÑÑеÑ",
"subcategories": "СанаÑÑалаÑ",
@@ -315,7 +318,7 @@
"laggedslavemode": "ÐÑкеÑÑÑ: ÐеÑÑе жÑÑÒÑаÒÑ Ð¶Ð°Ò£Ð°ÑÑÑÐ»Ð°Ñ Ð±Ð¾Ð»Ð¼Ð°ÑÑ Ð¼Ò¯Ð¼ÐºÑн.",
"readonly": "ÐеÑекÒоÑÑ ÒұлÑпÑалÒан",
"enterlockreason": "ÒұлÑпÑÐ°Ñ ÑебебÑн, Òай ÑаÒÑÑÒа дейÑн ÒұлÑпÑалÒанÑн кÑÑÑÑÑÑÑÑп, енгÑзÑÒ£Ñз.",
- "readonlytext": "Ðұл деÑекÒÐ¾Ñ Ð¶Ð°Ò£Ð°Ð´Ð°Ð½ Ð¶Ð°Ð·Ñ Ð¶Óне баÑÒа өзгеÑÑÑÑÐµÑ Ð¶Ð°ÑаÑдан аÒÑмда ÒұлÑпÑалÑнÒан, мүмкÑн күнде-күн деÑекÒоÑÐ´Ñ Ð±Ð°Ð¿ÑÐ°Ñ Ò¯ÑÑн, Ð±Ò±Ð½Ñ Ð±ÑÑÑÑгеннен Ñоң ÒалÑпÑÑ ÑÑке ÒайÑаÑÑладÑ.\n\nÒұлÑпÑаÒан ÓкÑмÑÑ Ð±Ò±Ð½Ñ Ð±Ñлай ÑÒ¯ÑÑндÑÑедÑ: $1",
+ "readonlytext": "ÐүмкÑн жоÑпаÑÐ»Ñ Ð´ÐµÑекÒÐ¾Ñ ÑекникалÑÒ ÒÑÐ·Ð¼ÐµÑ ÐºÓ©ÑÑеÑÑÑ Ò¯ÑÑн бұл деÑекÒÐ¾Ñ Ð¶Ð°Ò£Ð° енгÑзÑлÑÐ¼Ð´ÐµÑ Ð¶Óне баÑÒа өзгеÑÑÑÑÐµÑ Ð¶Ð°ÑаÑдан ÒазÑÑÐ³Ñ ÑаÒÑÑÑа ÒұлÑпÑалÑнÒан, Ð±Ò±Ð½Ñ Ð±ÑÑÑÑгеннен Ñоң ÒалÑпÑÑ ÑÑке ÒайÑаÑÑладÑ.\n\nÒұлÑпÑаÒан жүйе ÓкÑмÑÑÑÑ Ð¼Ñна ÑÒ¯ÑÑндÑÑÐ¼ÐµÐ½Ñ ÒалдÑÑдÑ: $1",
"missing-article": "ÐÐ°Ñ Ð±Ð¾Ð»ÑÑ Ð¶Ó©Ð½ бÑлай аÑалÒан Ð±ÐµÑ Ð¼ÓÑÑÐ½Ñ Ð´ÐµÑекÒоÑда ÑабÑлмадÑ: «$1» $2.\n\nÐұл еÑкÑÑген айÑÑма ÑÑлÑемеÑÑне немеÑе жойÑлÒан Ð±ÐµÑ ÑаÑиÑ
Ñ ÑÑлÑемеÑÑне еÑгеннен бола беÑедÑ.\n\nÐÐ³ÐµÑ Ð±Ò±Ð» оÑÑÐ½Ð´Ñ Ð±Ð¾Ð»Ð¼Ð°Ñа, баÒдаÑламалÑÒ Ð¶Ð°ÑаÒÑамадаÒÑ ÒаÑеге Ñап болÑÑÒ£Ñз мүмкÑн.\nÐұл ÑÑÑÐ°Ð»Ñ Ð½Ð°ÒÑÑ URL жайÑна аңÒаÑÑпа жаÑап, [[Special:ListUsers/sysop|ÓкÑмÑÑге]] баÑндаңÑз.",
"missingarticle-rev": "(ÑүзеÑÑ Ð½Ò±ÑÒаÑÑ#: $1)",
"missingarticle-diff": "(ÐйÑÑÑм: $1, $2)",
@@ -371,7 +374,7 @@
"mypreferencesprotected": "СÑзде бапÑаÑлаÑÑÒ£ÑÐ·Ð´Ñ Ó©Ò£Ð´ÐµÑге ÑÒ±ÒÑаÑÑÒ£Ñз жоÒ.",
"ns-specialprotected": "ÐÑÐ½Ð°Ð¹Ñ Ð±ÐµÑÑÐµÑ Ó©Ò£Ð´ÐµÑге келмейдÑ.",
"titleprotected": "Ðұл аÑаÑÐ´Ñ Ð±Ð°ÑÑаÑдан [[User:$1|$1]] ÒоÑÒаÒан.\nÐелÑÑÑÑлген ÑебебÑ: $2 .",
- "filereadonlyerror": "«$2» Ñайл ÒоÑÑ Ñек Òана оÒÑ ÑÓÑÑÑпÑемеÑÑнде ÑÒ±ÑÒаÑÑн «$1» ÑайлÑн өзгеÑÑÑ Ð¼Ò¯Ð¼ÐºÑн емеÑ.\nÐұл ÑÓÑÑÑпÑÐµÐ¼ÐµÐ½Ñ ÒондÑÑÒан ÓкÑмÑÑ ÐºÐµÐ»ÐµÑÑ ÑÒ¯ÑÑндÑÑÐ¼ÐµÐ½Ñ ÒалдÑÑдÑ: «$3»",
+ "filereadonlyerror": "«$2» Ñайл ÒоÑÑ Ñек Òана оÒÑ ÑÓÑÑÑпÑемеÑÑнде ÑÒ±ÑÒаÑÑн «$1» ÑайлÑн өзгеÑÑÑ Ð¼Ò¯Ð¼ÐºÑн емеÑ.\n\nÐүйе ÓкÑмÑÑÑÑ Ð¾Ð½Ñ ÐºÑм ÒұлÑпÑаÒанÑн бұл ÑÒ¯ÑÑндÑÑÐ¼ÐµÐ½Ñ Ò±ÑÑндÑ: «$3»",
"invalidtitle-knownnamespace": "«$2» еÑÑм кеңÑÑÑÑк ÑÒ¯ÑÑ Ð¶Óне «$3» мÓÑÑÐ½Ñ Ð¶Ð°ÑамÑÑз",
"invalidtitle-unknownnamespace": "ÐөмеÑÑ $1 белгÑÑÑз еÑÑм кеңÑÑÑÑк аÑаÑÑ Ð¶Óне «$2» мÓÑÑÐ½Ñ Ð¶Ð°ÑамÑÑз",
"exception-nologin": "ÐÑÑмегенÑÑз",
@@ -381,6 +384,8 @@
"virus-scanfailed": "ÑкайнеÑÐ»ÐµÑ Ð¾ÑÑÐ½Ð´Ð°Ð»Ð¼Ð°Ð´Ñ (кодÑ: $1)",
"virus-unknownscanner": "белгÑÑÑз анÑивиÑÑÑ:",
"logouttext": "Ðүйеден ÑÑÒÑÑÒ£Ñз. \n\nÐейбÑÑ Ð±ÐµÑÑÐµÑ Ð±ÑаÑзеÑÑÒ£ÑздÑÒ£ кÑÑÑн ÑазаÑÑÒанÑа ÓÐ»Ñ Ð´Ðµ жүйеге кÑÑÑп оÑÑÑÒанÑÒ£Ñздай көÑÑнÑÑ Ð¼Ò¯Ð¼ÐºÑндÑгÑн еÑкеÑÑÒ£Ñз.",
+ "cannotlogoutnow-title": "ÒазÑÑ ÑÑÒÑ Ð¼Ò¯Ð¼ÐºÑн емеÑ",
+ "cannotlogoutnow-text": "$1 ÒолданÒан кезде ÑÑÒÑ Ð¼Ò¯Ð¼ÐºÑн емеÑ.",
"welcomeuser": "ÒÐ¾Ñ ÐºÐµÐ»Ð´ÑÒ£Ñз, $1!",
"welcomecreation-msg": "СÑз ÑÑÑкелдÑÒ£Ñз.\n{{SITENAME}} [[Special:Preferences|бапÑаÑлаÑÑÒ£ÑздÑ]] өзÑÒ£Ñз ÒалаÑÑÒ£Ñз бойÑнÑа өзгеÑÑе алаÑÑз.",
"yourname": "ÒаÑÑÑÑÑÑ Ð°ÑÑ:",
@@ -397,6 +402,8 @@
"remembermypassword": "ТÑÑкелгÑÐ¼Ð´Ñ Ð¾ÑÑ Ð±ÑаÑзеÑде ұмÑÑпа (ең ÐºÓ©Ð±Ñ $1 {{PLURAL:$1|күн|күн}})",
"userlogin-remembermypassword": "ÐÐµÐ½Ñ Ð¶Ò¯Ð¹ÐµÐ´Ðµ ÑаÒÑап ÒоÑ",
"userlogin-signwithsecure": "ÒаÑÑпÑÑз байланÑÑÑÐ´Ñ ÒолданÑ",
+ "cannotloginnow-title": "ÒазÑÑ ÑÑÒÑ Ð¼Ò¯Ð¼ÐºÑн емеÑ",
+ "cannotloginnow-text": "$1 ÒолданÒан кезде ÑÑÒÑ Ð¼Ò¯Ð¼ÐºÑн емеÑ.",
"yourdomainname": "ҮйÑÑгÑÒ£Ñз:",
"password-change-forbidden": "СÑз бұл Ñикиде ÒÒ±Ð¿Ð¸Ñ ÑөзÑÒ£ÑÐ·Ð´Ñ Ó©Ð·Ð³ÐµÑÑе алмайÑÑз.",
"externaldberror": "ÐÑÑ Ð°Ñада не ÑеÑÑÑк ÑаÑÑÐ°Ñ Ð´ÐµÑекÒоÑÑнда ÒаÑе болдÑ, немеÑе ÑеÑÑÑк ÑÑÑкелгÑÒ£ÑÐ·Ð´Ñ Ð¶Ð°Ò£Ð°Ð»Ð°Ñ ÑÒ±ÒÑаÑÑ Ð¶Ð¾Ò.",
@@ -454,6 +461,7 @@
"wrongpasswordempty": "ÒÒ±Ð¿Ð¸Ñ Ñөз Ð±Ð¾Ñ Ð±Ð¾Ð»Òан.\nÒайÑа байÒап көÑÑÒ£Ñз.",
"passwordtooshort": "ÒұпиÑÑөзде кем дегенде {{PLURAL:$1|1Ñаңба|Ñаңба}} болÑÑ ÐºÐµÑек.",
"passwordtoolong": "ÒұпиÑÑөз {{PLURAL:$1|1Ñаңбадан|Ñаңбадан}} көп Ð±Ð¾Ð»Ð¼Ð°Ñ ÐºÐµÑек.",
+ "passwordtoopopular": "Ðөп жаÒдайда ÑаңдалаÑÑн ÒұпиÑÑÓ©Ð·Ð´Ñ Òолдана алмайÑÑз. ÐаÑÒа бÑÑегей ÒұпиÑÑөз ÑаңдаңÑз.",
"password-name-match": "ÒÒ±Ð¿Ð¸Ñ ÑөзÑÒ£Ñз ÒаÑÑÑÑÑÑ Ð°ÑÑнан өзгеÑе болÑÑ ÒажеÑ.",
"password-login-forbidden": "Ðұл ÒаÑÑÑÑÑÑ Ð°ÑÑ Ð¼ÐµÐ½ ÒÒ±Ð¿Ð¸Ñ ÑөзÑн пайдаланÑÒа ÑÑйÑм ÑалÑнÒан.",
"mailmypassword": "ÒÒ±Ð¿Ð¸Ñ ÑÓ©Ð·Ð´Ñ ÒалпÑна кеÑÑÑÑÑ",
@@ -479,7 +487,7 @@
"createaccount-title": "{{SITENAME}} жобаÑÑна ÑÑÑкелÑ",
"createaccount-text": "ÓлдебÑÑÐµÑ Ðµ-поÑÑа мекенжайÑÒ£ÑÐ·Ð´Ñ Ð¿Ð°Ð¹Ð´Ð°Ð»Ð°Ð½Ñп {{SITENAME}} жобаÑÑнда ($4) «$2» деген аÑаÑ, «$3» деген ÒÒ±Ð¿Ð¸Ñ Ñөзбен ÑÑÑÐºÐµÐ»Ð³Ñ Ð¶Ð°ÑаÒан.\nÒазÑÑ Ð¶Ò¯Ð¹ÐµÐ³Ðµ кÑÑÑÑÑÒ£Ñз жÓне ÒÒ±Ð¿Ð¸Ñ ÑөзÑÒ£ÑÐ·Ð´Ñ Ó©Ð·Ð³ÐµÑÑÑÑÒ£Ñз кеÑек.\n\nÐÐ³ÐµÑ Ð±Ò±Ð» ÑÑÑÐºÐµÐ»Ð³Ñ ÒаÑелÑкпен жаÑалÑа оÑÑ Ñ
абаÑÐ»Ð°Ð¼Ð°Ð½Ñ ÐµÐ»ÐµÐ¼ÐµÑÑÒ£Ñзге боладÑ.",
"login-throttled": "СÑз жүйеге кÑÑÑ Ò¯ÑÑн ÑÑм көп ÑалпÑнÑÑ Ð¶Ð°ÑадÑÒ£Ñз.\nÒайÑа байÒап көÑÐ¼ÐµÑ Ð±Ò±ÑÑн $1 күÑе ÑÒ±ÑÑÒ£Ñз.",
- "login-abort-generic": "Ðүйеге кÑÑÑ ÑÓÑÑÑз Ð±Ð¾Ð»Ð´Ñ - ÐоÒаÑÑлдÑ.",
+ "login-abort-generic": "СÑздÑÒ£ кÑÑÑÑÒ£Ñз оÑÑÐ½Ð´Ð°Ð»Ð¼Ð°Ð´Ñ - ÐоÒаÑÑлдÑ.",
"login-migrated-generic": "ТÑÑкелгÑÒ£ÑздÑÒ£ ÑаÑÑмалданÒан болаÑÑн жÓне ÑÑздÑÒ£ ÒаÑÑÑÑÑÑ ÐµÑÑмÑÒ£Ñз бұдан бÑлай оÑÑ Ñикиде болмайдÑ.",
"loginlanguagelabel": "ТÑл: $1",
"suspicious-userlogout": "СÑздÑÒ£ жүйеден ÑÑÒÑ ÑÒ±ÑанÑмÑÒ£Ñз ÒабÑлданбадÑ, өйÑÐºÐµÐ½Ñ Ð±Ò±Ð» бұзÑлÒан бÑаÑÐ·ÐµÑ Ð½ÐµÐ¼ÐµÑе кÑÑÑеÑÑÑ Ð¿ÑокÑи аÑÒÑÐ»Ñ Ð¶ÑбеÑÑлгенге Ò±ÒÑайдÑ.",
@@ -500,15 +508,31 @@
"resetpass_submit": "ÒÒ±Ð¿Ð¸Ñ ÑÓ©Ð·Ð´Ñ ÒойÑÒ£Ñз да кÑÑÑÒ£Ñз",
"changepassword-success": "ÒÒ±Ð¿Ð¸Ñ ÑөзÑÒ£Ñз өзгеÑÑÑлдÑ!",
"changepassword-throttled": "СÑз жаÒÑнда кÑÑÑге ÑÑм көп ÓÑÐµÐºÐµÑ Ð¶Ð°ÑадÑÒ£Ñз.\nÒайÑа байÒап көÑÑ Ò¯ÑÑн $1 ÑаÒÑÑ ÐºÒ¯Ñе ÑÒ±ÑÑÒ£Ñз.",
+ "botpasswords": "ÐÐ¾Ñ ÒұпиÑÑөздеÑÑ",
+ "botpasswords-disabled": "ÐÐ¾Ñ ÒұпиÑÑөздеÑÑ Ó©ÑÑÑÑлген.",
+ "botpasswords-no-central-id": "ÐÐ¾Ñ ÒұпиÑÑөздеÑÑн ÒÐ¾Ð»Ð´Ð°Ð½Ñ Ò¯ÑÑн, оÑÑалÑÒÑандÑÑÑлÒан ÑÑÑкелгÑÒ£Ñзбен кÑÑÑÑÒ£Ñз кеÑек.",
+ "botpasswords-existing": "ÐÐ°Ñ Ð±Ð¾Ñ ÒұпиÑÑөздеÑÑ",
+ "botpasswords-createnew": "Ðаңа Ð±Ð¾Ñ ÒұпиÑÑөзÑн баÑÑаÑ",
+ "botpasswords-editexisting": "ÐÐ°Ñ Ð±Ð¾Ñ ÒұпиÑÑөзÑн өңдеÑ",
+ "botpasswords-label-appid": "ÐÐ¾Ñ Ð°ÑаÑÑ:",
+ "botpasswords-label-create": "ÐаÑÑаÑ",
"botpasswords-label-update": "ÐаңаÑÑÑ",
"botpasswords-label-cancel": "ÐолдÑÑмаÑ",
"botpasswords-label-delete": "ÐоÑ",
"botpasswords-label-resetpassword": "ÒÒ±Ð¿Ð¸Ñ ÑÓ©Ð·Ð´Ñ ÒалпÑна кеÑÑÑÑÑ",
+ "botpasswords-label-grants": "ÒолданÑлаÑÑн гÑанÑÑаÑ:",
+ "botpasswords-label-restrictions": "ÐÐ°Ð¹Ð´Ð°Ð»Ð°Ð½Ñ ÑекÑеÑлеÑÑ:",
+ "botpasswords-bad-appid": "\"$1\" Ð±Ð¾Ñ Ð°ÑаÑÑ Ð¶Ð°ÑÐ°Ð¼Ð´Ñ ÐµÐ¼ÐµÑ.",
+ "botpasswords-insert-failed": "\"$1\" Ð±Ð¾Ñ Ð°ÑаÑÑн ÒоÑÑ Ð¾ÑÑндалмадÑ. Ðл ÓлдеÒаÑан ÒоÑÑлÒан ба едÑ?",
+ "botpasswords-update-failed": "\"$1\" Ð±Ð¾Ñ Ð°ÑаÑÑн жаңаÑÑÑ Ð¾ÑÑндалмадÑ. Ðл ÓлдеÒаÑан жойÑлÒан ба едÑ?",
+ "botpasswords-created-title": "ÐÐ¾Ñ ÒұпиÑÑÓ©Ð·Ñ ÒÒ±ÑÑлдÑ",
+ "botpasswords-updated-title": "ÐÐ¾Ñ ÒұпиÑÑÓ©Ð·Ñ Ð¶Ð°Ò£Ð°ÑÑÑлдÑ",
+ "botpasswords-deleted-title": "ÐÐ¾Ñ ÒұпиÑÑÓ©Ð·Ñ Ð¶Ð¾Ð¹ÑлдÑ",
"resetpass_forbidden": "ÒÒ±Ð¿Ð¸Ñ Ñөз өзгеÑÑÑлмейдÑ",
"resetpass-no-info": "Ðұл беÑке ÑÑкелей ÐµÐ½Ñ Ò¯ÑÑн жүйеге кÑÑÑÑÒ£Ñз кеÑек.",
"resetpass-submit-loggedin": "ÒÒ±Ð¿Ð¸Ñ ÑÓ©Ð·Ð´Ñ Ó©Ð·Ð³ÐµÑÑÑ",
"resetpass-submit-cancel": "ÐолдÑÑмаÑ",
- "resetpass-wrong-oldpass": "УаÒÑÑÑа немеÑе ÒазÑÑÐ³Ñ ÒÒ±Ð¿Ð¸Ñ ÑөзÑÒ£Ñз жаÑамÑÑз.\nÐүмкÑн ÑÑз ÒÒ±Ð¿Ð¸Ñ ÑÓ©Ð·Ð´Ñ ÑÓÑÑÑ Ó©Ð·Ð³ÐµÑÑкенÑÑз немеÑе жаңа ÑаÒÑÑÑа ÒÒ±Ð¿Ð¸Ñ Ñөзге ÑÒ±ÑанÑм жаÑаÒанÑÑз.",
+ "resetpass-wrong-oldpass": "УаÒÑÑÑа немеÑе ÒазÑÑÐ³Ñ ÒÒ±Ð¿Ð¸Ñ ÑөзÑÒ£Ñз жаÑамÑÑз.\nÐүмкÑн ÑÑз ÒÒ±Ð¿Ð¸Ñ ÑÓ©Ð·Ð´Ñ Ó©Ð·Ð³ÐµÑÑкенÑÑз немеÑе жаңа ÑаÒÑÑÑа ÒÒ±Ð¿Ð¸Ñ Ñөзге ÑÒ±ÑанÑм жаÑаÒанÑÑз.",
"resetpass-recycled": "ÒÒ±Ð¿Ð¸Ñ ÑөзÑÒ£ÑÐ·Ð´Ñ ÒазÑÑÐ³Ñ ÒÒ±Ð¿Ð¸Ñ ÑөзÑÒ£Ñзден өзгеÑе еÑÑп өзгеÑÑÑÒ£Ñз.",
"resetpass-temp-emailed": "СÑз ÑаÒÑÑÑа email-Ð´Ñ ÐºÐ¾Ð´Ð¿ÐµÐ½ кÑÑдÑÒ£Ñз.\nÐÑÑÑÐ´Ñ Ð°ÑÒÑÐ°Ñ Ò¯ÑÑн жаңа ÒÒ±Ð¿Ð¸Ñ ÑÓ©Ð·Ð´Ñ Ð¼Ñнда оÑнаÑÑÑÒ£Ñз кеÑек:",
"resetpass-temp-password": "УаÒÑÑÑа ÒÒ±Ð¿Ð¸Ñ Ñөз:",
@@ -530,7 +554,7 @@
"passwordreset-emailtext-ip": "Óлде кÑм (мүмкÑн ÑÑз болÑÑÒ£Ñз, $1 IP адÑеÑÑнен) {{SITENAME}} ÑайÑÑнда ($4) ÒÒ±Ð¿Ð¸Ñ ÑÓ©Ð·Ð´Ñ Ó©Ð·Ð³ÐµÑÑÑге Ó©ÑÑнÑÑ Ð±ÑлдÑÑдÑ. ÐÑна ÒаÑÑÑÑÑÑ {{PLURAL:$3|аккаÑнÑÑ|аккаÑнÑÑаÑÑ}} оÑÑ ÑлекÑÑÐ¾Ð½Ð´Ñ Ð¿Ð¾ÑÑа ÒаÑÑÑÑÑ:\n\n$2\n\n{{PLURAL:$3|Ðұл ÑаÒÑÑÑа ÒÒ±Ð¿Ð¸Ñ Ñөз|Ðұл ÑаÒÑÑÑа ÒÒ±Ð¿Ð¸Ñ ÑөздеÑ}} {{PLURAL:$5|бÑÑ ÐºÒ¯Ð½Ð´Ðµ|$5 күнде}}ÑаÒÑÑÑ Ð°ÑÒÑаладÑ.\nСÑз кÑÑÑÑÒ£Ñз жÓне жаңа ÒÒ±Ð¿Ð¸Ñ ÑÓ©Ð·Ð´Ñ ÑаңдаÑÑÒ£Ñз кеÑек. ÐÐ³ÐµÑ Ð±Ò±Ð» Ó©ÑÑнÑÑÑÑ Ð±Ð°ÑÒа бÑÑÐµÑ Ð¶Ð°ÑаÑа, немеÑе ÑÑз бұÑÑнÒÑ ÒÒ±Ð¿Ð¸Ñ ÑөзÑÒ£ÑÐ·Ð´Ñ ÐµÑке ÑÒ¯ÑÑÑÑеңÑз жÓне ÒÒ±Ð¿Ð¸Ñ ÑÓ©Ð·Ð´Ñ Ð°ÑÑÑÑÑÑÑÐ´Ñ ÒаламаÑаңÑз, ÑÑз бұл Ñ
абаÑÐ»Ð°Ð¼Ð°Ð½Ñ ÐµÑкеÑмей жÓне бұÑÑнÒÑ ÒÒ±Ð¿Ð¸Ñ ÑÓ©Ð·Ð´Ñ Òолдана беÑÑÑÒ£Ñзге боладÑ.",
"passwordreset-emailtext-user": "$1 еÑÑÐ¼Ð´Ñ ÒаÑÑÑÑÑÑ {{SITENAME}} ÑайÑÑнда ($4) ÒÒ±Ð¿Ð¸Ñ ÑÓ©Ð·Ð´Ñ Ó©Ð·Ð³ÐµÑÑÑге Ó©ÑÑнÑÑ Ð±ÑлдÑÑдÑ. ÐÑна ÒаÑÑÑÑÑÑ {{PLURAL:$3|аккаÑнÑ|аккаÑнÑÑаÑ}} оÑÑ ÐµÐ»ÐµÐºÑÑÐ¾Ð½Ð´Ñ Ð¿Ð¾ÑÑа ÒаÑÑÑÑÑ:\n\n$2\n\n{{PLURAL:$3|Ðұл ÑаÒÑÑÑа ÒÒ±Ð¿Ð¸Ñ Ñөз|Ðұл ÑаÒÑÑÑа ÒÒ±Ð¿Ð¸Ñ ÑөздеÑ}} {{PLURAL:$5|бÑÑ ÐºÒ¯Ð½Ð´Ðµ|$5 күнде}}ÑаÒÑÑÑ Ð°ÑÒÑаладÑ.\nСÑз кÑÑÑÑÒ£Ñз жÓне жаңа ÒÒ±Ð¿Ð¸Ñ ÑÓ©Ð·Ð´Ñ ÑаңдаÑÑÒ£Ñз кеÑек. ÐÐ³ÐµÑ Ð±Ò±Ð» Ó©ÑÑнÑÑÑÑ Ð±Ð°ÑÒа бÑÑÐµÑ Ð¶Ð°ÑаÑа, немеÑе ÑÑз бұÑÑнÒÑ ÒÒ±Ð¿Ð¸Ñ ÑөзÑÒ£ÑÐ·Ð´Ñ ÐµÑке ÑÒ¯ÑÑÑÑеңÑз, жÓне ÒÒ±Ð¿Ð¸Ñ ÑÓ©Ð·Ð´Ñ Ð°ÑÑÑÑÑÑÑÐ´Ñ ÒаламаÑаңÑз, ÑÑз бұл Ñ
абаÑÐ»Ð°Ð¼Ð°Ð½Ñ ÐµÑкеÑмей жÓне бұÑÑÒ£ÒÑ ÒÒ±Ð¿Ð¸Ñ ÑÓ©Ð·Ð´Ñ Òолдана беÑÑÑÒ£Ñзге боладÑ.",
"passwordreset-emailelement": "ÒаÑÑÑÑÑÑ ÐµÑÑмÑ: \n$1\n\nУаÒÑÑÑа ÒÒ±Ð¿Ð¸Ñ Ñөз: \n$2",
- "passwordreset-emailsentemail": "ÒÒ±Ð¿Ð¸Ñ ÑÓ©Ð·Ð´Ñ Ó©Ð·Ð³ÐµÑÑÑ ÑлекÑÑÐ¾Ð½Ð´Ñ Ð¿Ð¾ÑÑа аÑÒÑÐ»Ñ Ð¶Ó©Ð½ÐµÐ»ÑÑлдÑ.",
+ "passwordreset-emailsentemail": "Ðұл email Ð¼ÐµÐºÐµÐ½Ð¶Ð°Ð¹Ñ ÑÑÑкелгÑÒ£Ñзге байланÑÑÒан, Ñол ÑебепÑÑ ÒÒ±Ð¿Ð¸Ñ ÑÓ©Ð·Ð´Ñ Ó©Ð·Ð³ÐµÑÑÑ ÑлекÑÑÐ¾Ð½Ð´Ñ Ð¿Ð¾ÑÑа аÑÒÑÐ»Ñ Ð¶Ó©Ð½ÐµÐ»ÑÑледÑ.",
"passwordreset-emailsent-capture": "ÒÒ±Ð¿Ð¸Ñ ÑÓ©Ð·Ð´Ñ Ó©Ð·Ð³ÐµÑÑÑ ÑлекÑÑÐ¾Ð½Ð´Ñ Ð¿Ð¾ÑÑа аÑÒÑÐ»Ñ Ð¶Ó©Ð½ÐµÐ»ÑÑлдÑ, ол Ñөменде көÑÑеÑÑлген.",
"passwordreset-emailerror-capture": "ÒұпиÑÑÓ©Ð·Ð´Ñ Ó©Ð·Ð³ÐµÑÑÑ ÑлекÑÑон Ñ
аÑÑ Ð¶Ð°ÑалдÑ, ол Ñөменде көÑÑеÑÑлген, бÑÑÐ°Ò Ð¾Ð» {{GENDER:$2|ÒаÑÑÑÑÑÑÒа}} жөнелÑÑлмедÑ: $1",
"changeemail": "Ð-поÑÑа мекенжайÑн өзгеÑÑÑ Ð½ÐµÐ¼ÐµÑе алаÑÑаÑ",
@@ -639,7 +663,7 @@
"copyrightwarning": "{{SITENAME}} жобаÑÑна ÒоÑÒан баÑлÑÒ Ò¯Ð»ÐµÑÑеÑÑÒ£Ñз $2 (көбÑÑек аÒпаÑÐ°Ñ Ò¯ÑÑн: $1) аÑÑÑнда жаÑиÑланаÑÑнÑн еÑкеÑÑÒ£Ñз.\nÐÐ³ÐµÑ ÐµÒ£Ð±ÐµÐ³ÑÒ£ÑздÑÒ£ еÑкÑн өңделÑÑн жÓне аÒÑÑÑз көпÑÑлÑкке ÑаÑалÑÑн ÒаламаÑаңÑз мұнда жаÑиÑламаңÑз \nТаÒÑ Ð´Ð° бұл мÓлÑмеÑÑÑ Ó©Ð·ÑÒ£Ñз жазÒанÑÒ£ÑзÒа не ÒоÒам ÒазÑнаÑÑнан немеÑе Ñондай аÑÑÒ ÒоÑлаÑдан көÑÑÑÑлгенÑне бÑзге ÑÓде беÑеÑÑз.\nÐвÑоÑлÑÒ ÒÒ±ÒÑÒпен ÒоÑÒалÒан мÓлÑмеÑÑÑ ÑÒ±ÒÑаÑÑÑз жаÑиÑламаңÑз! ",
"copyrightwarning2": "{{SITENAME}} жобаÑÑна ÒоÑÒан баÑлÑÒ Ò¯Ð»ÐµÑÑеÑÑÒ£ÑÐ·Ð´Ñ Ð±Ð°ÑÒа үлеÑкеÑÐ»ÐµÑ Ó©Ò£Ð´ÐµÑге, өзгеÑÑÑге немеÑе алаÑÑаÑÑ Ð¼Ò¯Ð¼ÐºÑн екенÑн еÑкеÑÑÒ£Ñз.\nÐÐ³ÐµÑ ÐµÒ£Ð±ÐµÐ³ÑÒ£ÑздÑÒ£ еÑкÑн өңделÑÑн ÒаламаÑаңÑз оÑÑнда жаÑиÑламаңÑз. \nТаÒÑ Ð´Ð° бұл мÓлÑмеÑÑÑ Ó©Ð·ÑÒ£Ñз жазÒанÑÒ£ÑзÒа не ÒоÒам ÒазÑнаÑÑнан немеÑе Ñондай аÑÑÒ ÒоÑлаÑдан көÑÑÑÑлгенÑне бÑзге ÑÓде беÑеÑÑз. (көбÑÑек аÒпаÑÐ°Ñ Ò¯ÑÑн $1 ÒұжаÑÑн ÒаÑаңÑз).\nÐвÑоÑлÑÒ ÒÒ±ÒÑÒпен ÒоÑÒалÒан мÓлÑмеÑÑÑ ÑÒ±ÒÑаÑÑÑз жаÑиÑламаңÑз! ",
"longpageerror": "ÒÐТÐÐÐÐ: СаÒÑамаÒÑÑ Ð±Ð¾Ð»Òан мÓÑÑнÑÒ£ÑздÑÒ£ ÐºÓ©Ð»ÐµÐ¼Ñ {{PLURAL:$1|бÑÑ ÐºÐ¸Ð»Ð¾Ð±Ð°Ð¹Ñ|$1 килобайÑ}} ең ÐºÓ©Ð±Ñ {{PLURAL:$2|килобайÑ|$2 килобайÑ}} ÑÒ±ÒÑÐ°Ñ ÐµÑÑлген көлемÑнен аÑÒан. \nÐұл ÑаÒÑалмайдÑ.",
- "readonlywarning": "ÐСÐÐРТУ: ÐеÑекÒÐ¾Ñ ÑеÑ
никалÑÒ Ð¶Ò±Ð¼ÑÑÑÐ°Ñ Ð¶Ð°ÑÐ°Ñ Ò¯ÑÑн ÒұлÑпÑалÒан ÑондÑÒÑан дÓл ÒазÑÑ Ó©Ò£Ð´ÐµÐ¼ÐµÒ£ÑÐ·Ð´Ñ ÑаÒÑай алмайÑÑз. \nÐейÑн ÑаÒÑÐ°Ñ Ò¯ÑÑн мÓÑÑнÑÒ£ÑÐ·Ð´Ñ Ð¼ÓÑÑн ÑайлÑна көÑÑÑÑп алÑÒ£ÑзÒа боладÑ. \n\nÐдминÑÑÑаÑÐ¾Ñ Ð¾Ð½Ñ ÒұлÑпÑÐ°Ñ ÑебебÑн келеÑÑдей ÑÒ¯ÑÑндÑÑедÑ: $1",
+ "readonlywarning": "ÐСÐÐРТУ: ÐеÑекÒÐ¾Ñ ÑеÑ
никалÑÒ Ð¶Ò±Ð¼ÑÑÑÐ°Ñ Ð¶Ð°ÑÐ°Ñ Ò¯ÑÑн ÒұлÑпÑалÒан ÑондÑÒÑан дÓл ÒазÑÑ Ó©Ò£Ð´ÐµÐ¼ÐµÒ£ÑÐ·Ð´Ñ ÑаÒÑай алмайÑÑз. \nÐейÑн ÑаÒÑÐ°Ñ Ò¯ÑÑн мÓÑÑнÑÒ£ÑÐ·Ð´Ñ Ð¼ÓÑÑн ÑайлÑна көÑÑÑÑп алÑÒ£ÑзÒа боладÑ. \n\nÐүйе админÑÑÑаÑоÑÑ Ð¾Ð½Ñ ÒұлÑпÑÐ°Ñ ÑебебÑн келеÑÑдей ÑÒ¯ÑÑндÑÑедÑ: $1",
"protectedpagewarning": "ÐÑкеÑÑÑ: Ðұл Ð±ÐµÑ Ó©Ò£Ð´ÐµÑден ÒоÑÒалÒан ÑондÑÒÑан Ñек ÓкÑмÑÑ ÒÒ±ÒÑÒÑаÑÑ Ð±Ð°Ñ ÒаÑÑÑÑÑÑÐ»Ð°Ñ Òана өңдей аладÑ. \nТөменде ÑоңÒÑ Ð¶ÑÑнал жазбаÑÑ ÐºÓ©ÑÑеÑÑлген:",
"semiprotectedpagewarning": "ÐÑкеÑÑÑ: ÐÐµÑ Ð¶Ð°ÑÑÑлай ÒоÑÒалÒан, ÑондÑÒÑан оÑÑÐ½Ñ Ñек ÑÑÑкелген ÒаÑÑÑÑÑÑÐ»Ð°Ñ Ó©Ò£Ð´ÐµÐ¹ аладÑ.\nТөменде Ð±ÐµÑ Ð¶ÑÑналÑнÑÒ£ ÑоңÒÑ Ð¶Ð°Ð·Ð±Ð°ÑÑ ÐºÓ©ÑÑеÑÑлген:",
"cascadeprotectedwarning": "ÐÑкеÑÑÑ: Ðұл Ð±ÐµÑ ÒоÑÒалÒан, ÑондÑÒÑан Ñек ÓкÑмÑÑ ÒÒ±ÒÑÒÑаÑÑ Ð±Ð°Ñ ÒаÑÑÑÑÑÑÐ»Ð°Ñ Òана өңдей аладÑ, ÑÐµÐ±ÐµÐ±Ñ Ð±Ò±Ð» келеÑÑ Â«Ð±Ð°ÑÐ»Ñ ÒоÑÒаÑÑ» Ð±Ð°Ñ {{PLURAL:$1|беÑÑне|беÑÑеÑÑне}} кÑÑÑÑÑÑлген беÑ:",
@@ -1005,10 +1029,10 @@
"userrights": "ÒаÑÑÑÑÑÑ ÒÒ±ÒÑÒÑаÑÑн ÑеÑÑеÑ",
"userrights-lookup-user": "ÒаÑÑÑÑÑÑ ÑопÑаÑÑн ÑеÑÑеÑ",
"userrights-user-editname": "ÒаÑÑÑÑÑÑ Ð°ÑÑн енгÑзÑÒ£Ñз:",
- "editusergroup": "ÒаÑÑÑÑÑÑ ÑопÑаÑÑн өңдеÑ",
+ "editusergroup": "{{GENDER:$1|ÒаÑÑÑÑÑÑ}} ÑопÑаÑÑн өңдеÑ",
"editinguser": "[[User:$1|$1]] $2 {{GENDER:$1|еÑÑÐ¼Ð´Ñ ÒаÑÑÑÑÑÑнÑÒ£}} ÒаÑÑÑÑÑÑ ÒÒ±ÒÑÒÑаÑÑн өзгеÑÑÑ",
"userrights-editusergroup": "ÒаÑÑÑÑÑÑ ÑопÑаÑÑн өңдеÑ",
- "saveusergroups": "ÒаÑÑÑÑÑÑ ÑопÑаÑÑн ÑаÒÑаÑ",
+ "saveusergroups": "{{GENDER:$1|ÒаÑÑÑÑÑÑ}} ÑопÑаÑÑн ÑаÒÑаÑ",
"userrights-groupsmember": "ÐÒ¯ÑелÑгÑ:",
"userrights-groupsmember-auto": "ÐұлÑаÑаÑÑз мүÑе:",
"userrights-groups-help": "Ðұл ÒаÑÑÑÑÑÑ ÐºÑÑеÑÑн ÑопÑаÑÐ´Ñ ÑеÑÑей алаÑÑз.\n* ÒÒ±ÑÐ±ÐµÐ»Ð³Ñ ÒойÑлÒан ÐºÓ©Ð·Ñ ÒаÑÑÑÑÑÑ Ð±Ò±Ð» ÑопÒа кÑÑгенÑн көÑÑеÑедÑ;\n* ÒÒ±ÑÐ±ÐµÐ»Ð³Ñ Ð°Ð»Ñп ÑаÑÑалÒан көз ÒаÑÑÑÑÑÑ Ð±Ò±Ð» ÑопÒа кÑÑмегенÑн көÑÑеÑедÑ;\n* ÐелÑÑÑÑлген * ÑопÑÑ Ð±ÑÑ Ò¯ÑÑегенÑнен кейÑн алаÑÑай алмайÑÑндÑÒÑн, не ÒаÑама-ÒаÑÑÑÑÑн көÑÑеÑедÑ.",
@@ -1020,7 +1044,7 @@
"userrights-changeable-col": "ӨзгеÑÑе алаÑÑн ÑопÑаÑ",
"userrights-unchangeable-col": "ӨзгеÑÑе алмайÑÑн ÑопÑаÑ",
"userrights-conflict": "ÒаÑÑÑÑÑÑ ÒÒ±ÒÑÒÑаÑÑнÑÒ£ ÒаÒÑÑÒÑÑÑ! ӨзгеÑÑÑлеÑÑÒ£ÑÐ·Ð´Ñ ÒайÑа ÒаÑап ÑÑÒÑÒ£Ñз жÓне ÒұпÑаңÑз.",
- "userrights-removed-self": "ӨзÑÒ£ÑздÑÒ£ ÒÒ±ÒÑÒÑаÑÑÒ£ÑÐ·Ð´Ñ ÑÓÑÑÑ Ð°Ð»Ñп ÑаÑÑадÑÒ£Ñз. As such, you are no longer able to access this page.",
+ "userrights-removed-self": "ӨзÑÒ£ÑздÑÒ£ ÒÒ±ÒÑÒÑаÑÑÒ£ÑÐ·Ð´Ñ Ð°Ð»Ñп ÑаÑÑадÑÒ£Ñз. ÐÑÑлайÑа бұл беÑке бұдан бÑлай ÒаÑÑнай алмайÑÑз.",
"group": "Топ:",
"group-user": "ÒаÑÑÑÑÑÑлаÑ",
"group-autoconfirmed": "ӨздÑкÑÑÒұпÑалÒан ÒаÑÑÑÑÑÑлаÑ",
@@ -1227,9 +1251,9 @@
"recentchangeslinked-page": "ÐÐµÑ Ð°ÑаÑÑ:",
"recentchangeslinked-to": "ÐеÑÑÑÑнÑе, келÑÑÑÑлген беÑке ÑÑлÑейÑÑн беÑÑеÑÐ´ÐµÐ³Ñ Ó©Ð·Ð³ÐµÑÑÑÑеÑÐ´Ñ ÐºÓ©ÑÑеÑ",
"recentchanges-page-added-to-category": "[[:$1]] беÑÑне ÑÐ°Ð½Ð°Ñ ÒоÑÑÑ",
- "recentchanges-page-added-to-category-bundled": "[[:$1]] жÓне {{PLURAL:$2|бÑÑ Ð±ÐµÑ|$2 беÑ}} ÑанаÑÒа ÒоÑÑлдÑ",
+ "recentchanges-page-added-to-category-bundled": "[[:$1]] жÓне [[Special:WhatLinksHere/$1|{{PLURAL:$2|бÑÑ Ð±ÐµÑ|$2 беÑ}}]] ÑанаÑÒа ÒоÑÑлдÑ",
"recentchanges-page-removed-from-category": "[[:$1]] ÑанаÑÑан алÑндÑ",
- "recentchanges-page-removed-from-category-bundled": "[[:$1]] жÓне {{PLURAL:$2|бÑÑ Ð±ÐµÑ|$2 беÑ}} ÑанаÑÑан алÑндÑ",
+ "recentchanges-page-removed-from-category-bundled": "[[:$1]] жÓне [[Special:WhatLinksHere/$1|{{PLURAL:$2|бÑÑ Ð±ÐµÑ|$2 беÑ}}]] ÑанаÑÑан алÑндÑ",
"autochange-username": "ÐедиаУики өздÑкÑÑ Ó©Ð·Ð³ÐµÑÑÑÑ",
"upload": "Файл жүкÑеÑ",
"uploadbtn": "Ð¤Ð°Ð¹Ð»Ð´Ñ Ð¶Ò¯ÐºÑеÑ",
@@ -1355,7 +1379,7 @@
"backend-fail-read": "«$1» ÑÐ°Ð¹Ð»Ñ Ð¾ÒÑлмайдÑ.",
"backend-fail-create": "«$1» ÑÐ°Ð¹Ð»Ñ Ð¶Ð°Ð·ÑлмайдÑ.",
"backend-fail-maxsize": "\"$1\" ÑÐ°Ð¹Ð»Ñ Ð¶Ð°Ð·ÑлмайдÑ, ÑÐµÐ±ÐµÐ±Ñ {{PLURAL:$2|1 байÑÑан|$2 байÑÑан}} үлкенÑÑек.",
- "backend-fail-readonly": "«$1» ÑаÒÑÐ°Ñ ÑеÑвеÑÑ ÒазÑÑÐ³Ñ ÑаÒÑÑÑа «Ñек оÒÑ» ÑежимÑнде оÑналаÑÒан. СебебÑ: «$2 »",
+ "backend-fail-readonly": "«$1» ÑаÒÑÐ°Ñ ÑеÑвеÑÑ ÒазÑÑÐ³Ñ ÑаÒÑÑÑа Ñек оÒÑ ÑежимÑнде оÑналаÑÒан. СебебÑ: $2 ",
"backend-fail-synced": "«$1» ÑÐ°Ð¹Ð»Ñ ÑÑÐºÑ ÑаÒÑÐ°Ñ ÑеÑвеÑÑнде келÑÑÑмÑÑз жаÒдайда оÑналаÑÒан",
"backend-fail-connect": "«$1» ÑаÒÑÐ°Ñ ÑеÑвеÑÑне байланÑÑпадÑ.",
"backend-fail-internal": "«$1» ÑаÒÑÐ°Ñ ÑеÑвеÑÑнде белгÑÑÑз ÒаÑе кездеÑÑÑ.",
@@ -1675,8 +1699,6 @@
"categories-submit": "ÐÓ©ÑÑеÑÑ",
"categoriespagetext": "ÐелеÑÑ {{PLURAL:$1|ÑÐ°Ð½Ð°Ñ ÑÑÑнде|ÑанаÑÑÐ°Ñ ÑÑÑнде}} беÑÑÐµÑ Ð½ÐµÐ¼ÐµÑе медиа баÑ.\n[[Special:UnusedCategories|ÐайдаланÑлмаÒан ÑанаÑÑаÑдÑ]] мÑнадан ÒаÑай алаÑÑз.\nТаÒÑ ÒаÑаңÑз [[Special:WantedCategories|баÑÑалмаÒан ÑанаÑÑаÑ]].",
"categoriesfrom": "СанаÑÑаÑÐ´Ñ Ð¼Ñнадан баÑÑап көÑÑеÑÑ:",
- "special-categories-sort-count": "ÑанÑмен ÑÒ±ÑÑпÑаÑ",
- "special-categories-sort-abc": "ÓлÑпбимен ÑÒ±ÑÑпÑаÑ",
"deletedcontributions": "ÒаÑÑÑÑÑÑнÑÒ£ жойÑлÒан үлеÑÑ",
"deletedcontributions-title": "ÒаÑÑÑÑÑÑнÑÒ£ жойÑлÒан үлеÑÑ",
"sp-deletedcontributions-contribs": "үлеÑÑеÑ",
@@ -1758,7 +1780,7 @@
"emailccsubject": "$1 дегенге Ñ
аÑÑÒ£ÑздÑÒ£ көÑÑÑмеÑÑ: $2",
"emailsent": "Ð¥Ð°Ñ Ð¶Ó©Ð½ÐµÐ»ÑÑлдÑ",
"emailsenttext": "Ð-поÑÑа Ñ
аÑÑÒ£Ñз жөнелÑÑлдÑ.",
- "emailuserfooter": "Ðұл ÑлекÑÑÐ¾Ð½Ð´Ñ Ñ
аÑÑÑ {{SITENAME}} ÑайÑÑндаÒÑ Â«{{int:emailuser}}» ÑÑнкÑиÑÑÑ Ð°ÑÒÑÐ»Ñ $1 деген $2 дегенге жÑбеÑген.",
+ "emailuserfooter": "Ðұл ÑлекÑÑÐ¾Ð½Ð´Ñ Ñ
аÑÑÑ {{SITENAME}} ÑайÑÑндаÒÑ Â«{{int:emailuser}}» ÑÑнкÑиÑÑÑ Ð°ÑÒÑÐ»Ñ $1 деген {{GENDER:$2|$2}} дегенге {{GENDER:$1|жÑбеÑген}}.",
"usermessage-summary": "Ðүйе Ñ
абаÑламаÑÑ ÒалдÑÑÑлÑда.",
"usermessage-editor": "Ðүйе меÑÑенжеÑÑ",
"watchlist": "ÐаÒÑÐ»Ð°Ñ ÑÑзÑмÑ",
@@ -1768,10 +1790,10 @@
"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": "Ðұл беÑÑÑ Ð±Ð°ÒÑлаÑ",
@@ -1841,7 +1863,7 @@
"delete-toobig": "Ðұл беÑÑе үлкен ÑүзеÑÑ ÑаÑиÑ
Ñ Ð±Ð°Ñ, $1 {{PLURAL:$1|ÑүзеÑÑден|ÑүзеÑÑден}} аÑÑам.\nÐұндай беÑÑеÑдÑÒ£ жоÑÑ {{SITENAME}} ÑоÑабÑн ÓлдеÒалай үзÑп ÑаÑÑаÑÑна Ð±Ó©Ð³ÐµÑ ÑÐ°Ð»Ñ Ò¯ÑÑн ÑиÑмдалÒан.",
"delete-warning-toobig": "Ðұл беÑÑе үлкен Ó©Ò£Ð´ÐµÑ ÑаÑиÑ
Ñ Ð±Ð°Ñ, $1 {{PLURAL:$1|ÑүзеÑÑден|ÑүзеÑÑден}} аÑÑам.\nÐұнÑÒ£ жоÑÑ {{SITENAME}} ÑоÑабÑндаÒÑ Ð´ÐµÑекÒÐ¾Ñ ÓÑекеÑÑеÑÐ´Ñ Ò¯Ð·Ñп ÑаÑÑаÑÑн мүмкÑн;\nÐ±Ò±Ð½Ñ Ð°Ð±Ð°Ð¹Ð»Ð°Ð¿ Ó©ÑкÑзÑÒ£Ñз.",
"deleteprotected": "СÑз бұл беÑÑÑ Ð¶Ð¾Ñ Ð°Ð»Ð¼Ð°Ð¹ÑÑз, ÑÐµÐ±ÐµÐ±Ñ Ð¾Ð» ÒоÑÒалÒан.",
- "deleting-backlinks-warning": "'''ÐÑкеÑÑÑ:''' СÑз жоймаÒÑÑ Ð±Ð¾Ð»Òан беÑке [[Special:WhatLinksHere/{{FULLPAGENAME}}|баÑÒа беÑÑеÑден]] ÑÑлÑенген немеÑе [[Special:WhatLinksHere/{{FULLPAGENAME}}|баÑÒа беÑÑеÑге]] кÑÑÑÑÑÑÑÑлген.",
+ "deleting-backlinks-warning": "
ÐÑкеÑÑÑ: СÑз жоймаÒÑÑ Ð±Ð¾Ð»Òан беÑке [[Special:WhatLinksHere/{{FULLPAGENAME}}|баÑÒа беÑÑеÑден]] ÑÑлÑенген немеÑе [[Special:WhatLinksHere/{{FULLPAGENAME}}|баÑÒа беÑÑеÑге]] кÑÑÑÑÑÑÑÑлген.",
"rollback": "ӨңдемелеÑÐ´Ñ ÑегÑндÑÑÑ",
"rollbacklink": "ÑегÑндÑÑÑ",
"rollbacklinkcount": "$1 {{PLURAL:$1|өңдеменÑ|өңдеменÑ}} ÑегÑндÑÑÑ",
@@ -2008,7 +2030,7 @@
"whatlinkshere-submit": "Ó¨ÑÑ",
"autoblockid": "#$1 өздÑкбұÒаÑÑаÑÑ",
"block": "ÒаÑÑÑÑÑÑÐ½Ñ Ð±Ò±ÒаÑÑаÑ",
- "unblock": "ÒаÑÑÑÑÑÑÐ½Ñ Ð±Ò±ÒаÑÑаÑÑнан боÑаÑÑ",
+ "unblock": "ÒаÑÑÑÑÑÑÐ½Ñ Ð±Ò±ÒаÑÑнан боÑаÑÑ",
"blockip": "{{GENDER:$1|ÒаÑÑÑÑÑÑнÑ}} бұÒаÑÑаÑ",
"blockip-legend": "ÒаÑÑÑÑÑÑÐ½Ñ Ð±Ò±ÒаÑÑаÑ",
"blockiptext": "Ð¢Ó©Ð¼ÐµÐ½Ð´ÐµÐ³Ñ ÑоÑÐ¼Ð°Ð½Ñ Ð¶Ð°Ð·Ñ ÑÒ±ÒÑаÑÑн белгÑÐ»Ñ IP мекенжайÑнан не ÒаÑÑÑÑÑÑ ÐµÑÑмÑнен бұÒаÑÑÐ°Ñ Ò¯ÑÑн ÒолданÑÒ£Ñз.\nÐÒ±Ð½Ñ Ñек бұзаÒÑлÑÒÑÑ Ð±Ð¾Ð»Ð´ÑÑÐ¼Ð°Ñ Ò¯ÑÑн жÓне де [[{{MediaWiki:Policy-url}}|еÑежелеÑ]] бойÑнÑа аÑÒаÑÑÑÒ£Ñз кажеÑ.\nТөменге ÑиÑÑÑÑ ÑебебÑн көÑÑеÑÑÒ£Ñз (мÑÑÐ°Ð»Ñ Ð´Óлелге бұзаÒÑлÑÒпен өзгеÑÑÑлген беÑÑеÑÐ´Ñ ÐºÐµÐ»ÑÑÑÑÒ£Ñз).",
@@ -2035,11 +2057,11 @@
"ipb-confirmhideuser": "СÑз ÒаÑÑÑÑÑÑÐ½Ñ Ð±Ò±ÒаÑÑаÑда «ÒаÑÑÑÑÑÑÐ½Ñ Ð¶Ð°ÑÑÑÑ» паÑамеÑÑÑн ÒоÑÒаÑÑз. Ðұл баÑлÑÒ ÑÑзÑмдеÑден жÓне жÑÑнал жазбалаÑÑнан ÒаÑÑÑÑÑÑ ÐµÑÑмÑн жаÑÑÑадÑ. СÑз ÑÑнÑмен бұлай жаÑаÑÐ´Ñ ÒалайÑÑз ба?",
"ipb-confirmaction": "ÐÐ³ÐµÑ ÑÑз ÑÑнÑмен Ð¾Ð½Ñ ÑÑÑеÑÐ´Ñ ÒалаÑаңÑз, ÑÓ©Ð¼ÐµÐ½Ð´ÐµÐ³Ñ Ð¶Ð¾Ð»Ð°ÒÑан «{{int:ipb-confirm}}» Ð´ÐµÐ³ÐµÐ½Ð´Ñ Ð±ÐµÐ»Ð³ÑлеңÑз.",
"ipb-edit-dropdown": "ÐÒ±ÒаÑÑÐ°Ñ ÑебепÑеÑÑн өңдеÑ",
- "ipb-unblock-addr": "$1 Ð´ÐµÐ³ÐµÐ½Ð´Ñ Ð±Ò±ÒаÑÑаÑÑнан боÑаÑÑ",
+ "ipb-unblock-addr": "$1 Ð´ÐµÐ³ÐµÐ½Ð´Ñ Ð±Ò±ÒаÑÑнан боÑаÑÑ",
"ipb-unblock": "ÒаÑÑÑÑÑÑ Ð°ÑÑн немеÑе IP мекенжайÑн бұÒаÑÑамаÑ",
"ipb-blocklist": "ÐÒ±ÒаÑÑалÒандаÑÐ´Ñ ÒаÑаÑ",
"ipb-blocklist-contribs": "{{GENDER:$1|$1}} еÑÑÐ¼Ð´Ñ ÒаÑÑÑÑÑÑнÑÒ£ үлеÑÑ",
- "unblockip": "ÒаÑÑÑÑÑÑÐ½Ñ Ð±Ò±ÒаÑÑаÑÑнан боÑаÑÑ",
+ "unblockip": "ÒаÑÑÑÑÑÑÐ½Ñ Ð±Ò±ÒаÑÑнан боÑаÑÑ",
"unblockiptext": "Ð¢Ó©Ð¼ÐµÐ½Ð´ÐµÐ³Ñ ÑоÑÐ¼Ð°Ð½Ñ IP мекенжайÑмен не ÒаÑÑÑÑÑÑ ÐµÑÑмÑмен алдÑн-ала бұÒаÑÑалÒан ÒаÑÑÑÑÑÑÒа Ð¶Ð°Ð·Ñ ÑÒ±ÒÑаÑÑн ÒалпÑна келÑÑÑÑÑ Ò¯ÑÑн ÒолданÑÒ£Ñз.",
"ipusubmit": "ÐÑÑ Ð±Ò±ÒаÑÑаÑÐ´Ñ Ð°Ð»Ñп ÑаÑÑаÑ",
"unblocked": "[[User:$1|$1]] бұÒаÑÑаÑÑ Ó©ÑÑÑÑлдÑ",
@@ -2082,8 +2104,8 @@
"blocklog-showsuppresslog": "Ðұл ÒаÑÑÑÑÑÑ Ò±Ð´Ð°Ð¹Ñ Ð¶Ð°ÑÑÑÑлÑп жÓне бұÒаÑÑалÑп оÑÑÑÒан.\nÐеÑек Ò¯ÑÑн Ñөменде жаÑÑÑÑ Ð¶ÑÑÐ½Ð°Ð»Ñ Ð±ÐµÑÑлген:",
"blocklogentry": "[[$1]] Ð´ÐµÐ³ÐµÐ½Ð´Ñ $2 меÑзÑмге бұÒаÑÑÐ°Ð´Ñ $3",
"reblock-logentry": "[[$1]] дегеннÑÒ£ бұÒаÑÑÐ°Ð»Ñ Ð¼ÐµÑзÑмÑнÑÒ£ аÑÒÑалÑÑн $2 $3 дегенге өзгеÑÑÑÑ.",
- "blocklogtext": "Ðұл ÒаÑÑÑÑÑÑлаÑÐ´Ñ Ð±Ò±ÒаÑÑÐ°Ñ Ð¶Óне бұÒаÑÑаÑÑнан боÑаÑÑ ÓÑекеÑÑеÑÑнÑÒ£ жÑÑналÑ.\nӨздÑкÑÑк бұÒаÑÑалÒан IP Ð¼ÐµÐºÐµÐ½Ð¶Ð°Ð¹Ð»Ð°Ñ ÑÑзÑмделмеген.\nÒазÑÑÐ³Ñ ÑаÒÑÑÑаÒÑ Ð±ÐµÐ»ÑÐµÐ½Ð´Ñ ÑиÑÐ¼Ð´Ð°Ñ Ð¼ÐµÐ½ бұÒаÑÑаÑлаÑÐ´Ñ [[Special:BlockList|бұÒаÑÑÐ°Ñ ÑÑзÑмÑнен]] ÒаÑаңÑз.",
- "unblocklogentry": "$1 еÑÑÐ¼Ð´Ñ ÒаÑÑÑÑÑÑÐ½Ñ Ð±Ò±ÒаÑÑаÑÑнан боÑаÑÑÑ",
+ "blocklogtext": "Ðұл ÒаÑÑÑÑÑÑлаÑÐ´Ñ Ð±Ò±ÒаÑÑÐ°Ñ Ð¶Óне бұÒаÑÑнан боÑаÑÑ ÓÑекеÑÑеÑÑнÑÒ£ жÑÑналÑ.\nӨздÑкÑÑк бұÒаÑÑалÒан IP Ð¼ÐµÐºÐµÐ½Ð¶Ð°Ð¹Ð»Ð°Ñ ÑÑзÑмделмеген.\nÒазÑÑÐ³Ñ ÑаÒÑÑÑаÒÑ Ð±ÐµÐ»ÑÐµÐ½Ð´Ñ ÑиÑÐ¼Ð´Ð°Ñ Ð¼ÐµÐ½ бұÒаÑÑаÑлаÑÐ´Ñ [[Special:BlockList|бұÒаÑÑÐ°Ñ ÑÑзÑмÑнен]] ÒаÑаңÑз.",
+ "unblocklogentry": "$1 еÑÑÐ¼Ð´Ñ ÒаÑÑÑÑÑÑÐ½Ñ Ð±Ò±ÒаÑÑнан боÑаÑÑÑ",
"block-log-flags-anononly": "Ñек аноним ÒаÑÑÑÑÑÑлаÑ",
"block-log-flags-nocreate": "ÑÑÑкелÑÑн Ó©ÑÑÑдÑ",
"block-log-flags-noautoblock": "авÑобұÒаÑÑÐ°Ñ Ó©ÑÑÑÑлген",
@@ -2278,19 +2300,15 @@
"import-logentry-upload-detail": "$1 {{PLURAL:$1|нұÑÒа|нұÑÒа}} импоÑÑÑалдÑ",
"import-logentry-interwiki-detail": "$2 дегеннен $1 {{PLURAL:$1|нұÑÒа|нұÑÒа}} импоÑÑÑалдÑ",
"javascripttest": "JavaScript ÑÑнаÒÑалÑда",
- "javascripttest-pagetext-noframework": "Ðұл Ð±ÐµÑ JavaScript ÑÑнаÒÑаÑÑн жүÑгÑÐ·Ñ Ò¯ÑÑн ÑезеÑвÑелген.",
- "javascripttest-pagetext-unknownframework": "«$1» белгÑÑÑз ÑÑÐ½Ð°Ñ Ð¾ÑÑаÑÑ.",
"javascripttest-pagetext-unknownaction": "ÐелгÑÑÑз ÓÑÐµÐºÐµÑ Â«$1».",
- "javascripttest-pagetext-frameworks": "ÐелеÑÑ ÑÑÐ½Ð°Ñ Ð¾ÑÑаÑÑнÑÒ£ бÑÑеÑÑн ÑаңдаңÑз: $1",
- "javascripttest-pagetext-skins": "СÑÐ½Ð°Ò Ð¶Ò¯ÑгÑÐ·Ñ Ò¯ÑÑн мÓнеÑÐ´Ñ ÑаңдаңÑз:",
"javascripttest-qunit-intro": "[$1 ÑÑнаÒÑÐ°Ñ ÒұжаÑÑамаÑÑн] mediawiki.org-Ñен ÒаÑа.",
"tooltip-pt-userpage": "Ðеке беÑÑÒ£Ñз",
"tooltip-pt-anonuserpage": "Ðұл IP мекенжайдÑÒ£ жеке беÑÑ",
"tooltip-pt-mytalk": "ТалÒÑÐ»Ð°Ñ Ð±ÐµÑÑÒ£Ñз",
"tooltip-pt-anontalk": "Ðұл IP мекенжай өңдемелеÑÑн ÑалÒÑлаÑ",
- "tooltip-pt-preferences": "ÐапÑалÑмдаÑÑм",
+ "tooltip-pt-preferences": "{{GENDER:|ÐапÑалÑмдаÑÑм}}",
"tooltip-pt-watchlist": "ӨзгеÑÑÑÑеÑÑн баÒÑлап ÑÒ±ÑÒан беÑÑÐµÑ ÑÑзÑмÑм.",
- "tooltip-pt-mycontris": "ӨңдеÑлеÑÑÒ£ÑздÑÒ£ ÑÑзÑмÑ",
+ "tooltip-pt-mycontris": "{{GENDER:|ҮлеÑÑеÑÑÒ£ÑздÑÒ£}} ÑÑзÑмÑ",
"tooltip-pt-anoncontribs": "Ðұл IP мекенжаймен жаÑаÒан Ó©Ò£Ð´ÐµÐ¼ÐµÐ»ÐµÑ ÑÑзÑмÑ",
"tooltip-pt-login": "ÐÑÑÑÑÒ£ÑÐ·Ð´Ñ Ò±ÑÑнамÑз, ол мÑндеÑÑÑ ÐµÐ¼ÐµÑ.",
"tooltip-pt-logout": "ШÑÒÑ",
@@ -2322,7 +2340,7 @@
"tooltip-t-recentchangeslinked": "ÐÑннан ÑÑлÑенген беÑÑеÑдÑÒ£ жÑÑÒÑаÒÑ Ó©Ð·Ð³ÐµÑÑÑÑеÑÑ",
"tooltip-feed-rss": "Ðұл беÑÑÑÒ£ RSS аÑнаÑÑ",
"tooltip-feed-atom": "Ðұл беÑÑÑÒ£ Atom аÑнаÑÑ",
- "tooltip-t-contributions": "ÐÑÑ ÒаÑÑÑÑÑÑнÑÒ£ үлеÑÑеÑÑнÑÒ£ ÑÑзÑмÑ",
+ "tooltip-t-contributions": "{{GENDER:$1|ÐÑÑ ÒаÑÑÑÑÑÑнÑÒ£}} үлеÑÑеÑÑ ÑÑзÑмÑ",
"tooltip-t-emailuser": "ÐÑÑ ÒаÑÑÑÑÑÑÒа Ñ
Ð°Ñ Ð¶Ó©Ð½ÐµÐ»ÑÑ",
"tooltip-t-info": "Ðұл Ð±ÐµÑ ÑÑÑÐ°Ð»Ñ ÐºÓ©Ð±ÑÑек мÓлÑмеÑ",
"tooltip-t-upload": "ФайлдаÑÐ´Ñ Ð¶Ò¯ÐºÑеÑ",
@@ -2540,8 +2558,8 @@
"exif-colorspace": "Ð¢Ò¯Ñ ÐºÐµÒ£ÑÑÑÑгÑ",
"exif-componentsconfiguration": "ÓÑÒайÑÑ ÒÒ±ÑÐ°Ñ Ð¼ÓнÑ",
"exif-compressedbitsperpixel": "СÑÑÐµÑ ÒÑÑÑÐ¼Ð´Ð°Ñ ÑÓÑÑÑбÑ",
- "exif-pixelydimension": "СÑÑÐµÑ ÐµÐ½Ñ",
- "exif-pixelxdimension": "СÑÑÐµÑ Ð±Ð¸ÑкÑÑгÑ",
+ "exif-pixelxdimension": "СÑÑÐµÑ ÐµÐ½Ñ",
+ "exif-pixelydimension": "СÑÑÐµÑ Ð±Ð¸ÑкÑÑгÑ",
"exif-usercomment": "ÒаÑÑÑÑÑÑ Ð¿ÑкÑÑÑ",
"exif-relatedsoundfile": "ÒаÑÑÑÑÑ Ð´ÑбÑÑ ÑайлÑ",
"exif-datetimeoriginal": "ÐаÑалÒан кезÑ",
@@ -2870,7 +2888,7 @@
"scarytranscludefailed-httpstatus": "[$1: HTTP $2 Ò¯ÑÑн Ò¯Ð»Ð³Ñ ÐºÐµÐ»ÑÑÑÑÑ ÑÓÑÑÑз болдÑ]",
"scarytranscludetoolong": "[URL ÑÑм ұзÑн]",
"deletedwhileediting": "ÐÑкеÑÑ: Ðұл беÑÑÑ Ó©Ò£Ð´ÐµÑÑÒ£ÑÐ·Ð´Ñ Ð±Ð°ÑÑаÒанда, оÑÑ Ð±ÐµÑ Ð¶Ð¾Ð¹ÑлдÑ!",
- "confirmrecreate": "Ðұл беÑÑÑ Ó©Ò£Ð´ÐµÑÑÒ£ÑÐ·Ð´Ñ Ð±Ð°ÑÑаÒанда [[User:$1|$1]] ([[User talk:$1|ÑалÒÑлаÑÑ]]) оÑÑ Ð±ÐµÑÑÑ Ð¶Ð¾Ð¹Ð´Ñ, келÑÑÑген ÑебебÑ:\n: ''$2''\nÐÑÑ Ð±ÐµÑÑÑ ÒайÑа баÑÑаÑÑн наÒÑÑ ÑÑлегенÑÒ£ÑÐ·Ð´Ñ ÒұпÑаңÑз.",
+ "confirmrecreate": "Ðұл беÑÑÑ Ó©Ò£Ð´ÐµÑÑÒ£ÑÐ·Ð´Ñ Ð±Ð°ÑÑаÒанда [[User:$1|$1]] ([[User talk:$1|ÑалÒÑлаÑÑ]]) оÑÑ Ð±ÐµÑÑÑ Ð¶Ð¾Ð¹Ð´Ñ, келÑÑÑген ÑебебÑ:\n: $2 \nÐÑÑ Ð±ÐµÑÑÑ ÒайÑа баÑÑаÑÑн наÒÑÑ ÑÑлегенÑÒ£ÑÐ·Ð´Ñ ÒұпÑаңÑз.",
"confirmrecreate-noreason": "Ðұл беÑÑÑ Ó©Ò£Ð´ÐµÐ¿ баÑÑаÒанÑÒ£Ñзда [[User:$1|$1]] ([[User talk:$1|ÑалÒÑлаÑÑ]]) жойдÑ. \nÐÑÑ Ð±ÐµÑÑÑ ÒайÑа баÑÑаÑÑн наÒÑÑ ÑÑлегенÑÒ£ÑÐ·Ð´Ñ ÒұпÑаңÑз.",
"recreate": "ÒайÑа баÑÑаÑ",
"unit-pixel": " нүкÑе",
@@ -3024,7 +3042,6 @@
"version-libraries-description": "СипаÑÑамаÑÑ",
"version-libraries-authors": "ÐвÑоÑ(лаÑÑ)",
"redirect": "Файл, ÒаÑÑÑÑÑÑ, Ð±ÐµÑ Ð½ÐµÐ¼ÐµÑе нұÑÒа ID-Ñ Ð±Ð¾Ð¹ÑнÑа баÒÑÑÑаÑлаÑ",
- "redirect-legend": "Файл немеÑе беÑке айдаÑÑлаÑ",
"redirect-summary": "Ðұл аÑÐ½Ð°Ð¹Ñ Ð±ÐµÑ ÑайлÒа (Ñайл аÑаÑÑ Ð±ÐµÑÑлген), беÑке (нұÑÒа ID-Ñ Ð½ÐµÐ¼ÐµÑе Ð±ÐµÑ ID-Ñ Ð±ÐµÑÑлген), не ÒаÑÑÑÑÑÑ Ð±ÐµÑÑне баÒÑÑÑÐ°Ð¹Ð´Ñ (ÒаÑÑÑÑÑÑ ÑандÑÒ ID-Ñ Ð±ÐµÑÑлген). ÒолданÑлÑÑ: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], немеÑе [[{{#Special:Redirect}}/user/101]].",
"redirect-submit": "Ó¨ÑÑ",
"redirect-lookup": "ÐздеÑ:",
@@ -3036,7 +3053,6 @@
"redirect-not-exists": "ÐÓн ÑабÑлмадÑ",
"fileduplicatesearch": "Файл ÑелнұÑÒалаÑÑн ÑздеÑ",
"fileduplicatesearch-summary": "Файл Ñ
еÑÑ Ð¼Ð°ÒÑнаÑÑ Ð½ÐµÐ³ÑзÑнде ÑелнұÑÒалаÑÑн ÑздеÑ.",
- "fileduplicatesearch-legend": "ТелнұÑÒÐ°Ð½Ñ ÑздеÑ",
"fileduplicatesearch-filename": "Файл аÑаÑÑ:",
"fileduplicatesearch-submit": "ÐздеÑ",
"fileduplicatesearch-info": "$1 à $2 пикÑел (нүкÑе) Файл өлÑемÑ: $3 MIME ÑÒ¯ÑÑ: $4",
@@ -3133,7 +3149,7 @@
"tags-edit-revision-legend": "{{PLURAL:$1|Ðұл нұÑÒадан|ÐаÑлÑÒ $1 нұÑÒадан}} ÑегÑеÑÐ´Ñ Ð°Ð»Ð°ÑÑÐ°Ñ Ð½Ðµ ÒоÑÑ",
"tags-edit-logentry-legend": "{{PLURAL:$1|Ðұл жÑÑнал жазбаÑÑнан|ÐаÑлÑÒ $1 жÑÑнал жазбаÑÑнан}} ÑегÑеÑÐ´Ñ Ð°Ð»Ð°ÑÑÐ°Ñ Ð½Ðµ ÒоÑÑ",
"tags-edit-existing-tags": "ÐÐ°Ñ ÑегÑеÑ:",
- "tags-edit-existing-tags-none": "«ÐÑÑеңе»",
+ "tags-edit-existing-tags-none": "ÐÑÑеңе ",
"tags-edit-new-tags": "Ðаңа ÑегÑеÑ:",
"tags-edit-add": "ÐÑна ÑегÑеÑÐ´Ñ ÒоÑÑ:",
"tags-edit-remove": "ÐÑна ÑегÑеÑÐ´Ñ Ð°Ð»Ð°ÑÑаÑ:",
@@ -3143,7 +3159,7 @@
"tags-edit-reason": "СебебÑ:",
"tags-edit-revision-submit": "{{PLURAL:$1|Ðұл нұÑÒадаÒÑ|$1 нұÑÒадаÒÑ}} өзгеÑÑÑÑеÑÐ´Ñ ÒолданÑ",
"tags-edit-logentry-submit": "{{PLURAL:$1|Ðұл жÑÑнал жазбаÑÑндаÒÑ|$1 жÑÑнал жазбаÑÑндаÒÑ}} өзгеÑÑÑÑеÑÐ´Ñ ÒолданÑ",
- "tags-edit-success": "ӨзгеÑÑÑÑÐµÑ ÑÓÑÑÑ ÒолданÑлдÑ.",
+ "tags-edit-success": "ӨзгеÑÑÑÑÐµÑ ÒолданÑлдÑ.",
"tags-edit-failure": "ӨзгеÑÑÑÑÐµÑ ÒолданÑлмадÑ: $1",
"tags-edit-nooldid-title": "ÐÑÑана ÑүзеÑÑ Ð¶Ð°ÑамÑÑз",
"tags-edit-nooldid-text": "Ðұл ÑÑнкÑиÑÐ½Ñ Ð¾ÑÑÐ½Ð´Ð°Ñ Ò¯ÑÑн ÑолÑÒ Ð½Ò±ÑÒаÑÑн ÑÒ±ÑамаÒанÑÑз немеÑе көÑÑеÑÑлген нұÑÒа жоÒ.",
@@ -3278,7 +3294,7 @@
"api-error-badaccess-groups": "СÑзге бұл Ñикиге Ñайл жүкÑеÑге ÑÒ±ÒÑÐ°Ñ ÐµÑÑлмеген.",
"api-error-badtoken": "ÐÑÐºÑ ÒаÑе: Ðаман байÑаÒÑа",
"api-error-copyuploaddisabled": "URL бойÑнÑа жүкÑÐµÑ Ð±Ò±Ð» ÑеÑвеÑде Ó©ÑÑÑÑлген",
- "api-error-duplicate": "{{PLURAL:$1|баÑÒа Ñайл|кейбÑÑ Ð±Ð°ÑÒа Ñайл}} ÓлеÒаÑан ÑайÑÑа баÑÒа мазмұнда баÑ.",
+ "api-error-duplicate": "{{PLURAL:$1|баÑÒа [$2 Ñайл]|кейбÑÑ [$2 баÑÒа Ñайл]}} ÓлеÒаÑан ÑайÑÑа ,бÑÑдей мазмұнда баÑ.",
"api-error-empty-file": "СÑз жÑбеÑген Ñайл боÑ.",
"api-error-emptypage": "ÐÐ¾Ñ Ð±ÐµÑÑÑ Ð¶Ð°Ò£Ð°Ð´Ð°Ð½ баÑÑÐ°Ñ ÑÒ±ÒÑÐ°Ñ ÐµÑÑлмейдÑ.",
"api-error-fetchfileerror": "ÐÑÐºÑ ÒаÑелÑк: Ð¤Ð°Ð¹Ð»Ð´Ñ Ð°Ð»Ñ Ð±Ð°ÑÑÑÑнда ÒаÑе кеÑÑÑ.",
@@ -3358,7 +3374,7 @@
"expand_templates_preview": "ÒаÑап ÑÑÒÑ",
"expand_templates_preview_fail_html": "Ðұнда ÑеÑÑÐ¸Ñ Ð´ÐµÑекÑеÑÑ Ð¶Ð¾ÒалÒан, ÑÐµÐ±ÐµÐ±Ñ {{SITENAME}} жобаÑÑнда HTML ÑÑке ÒоÑÑлÒан, JavaScript ÑабÑÑлдаÑÑна ÒаÑÑÑ ÑаÒÑÑÒ ÑаÑаÑÑ Ò¯ÑÑн алдÑн ала ÒаÑап ÑÑÒÑ Ð¶Ð°ÑÑÑÑлÒан. \n\nÐÐ³ÐµÑ Ð±Ò±Ð» өңдеме адал ниеÑÑÑ ÓÑÐµÐºÐµÑ Ð±Ð¾Ð»Ñа ÒайÑа байÒап көÑÑÒ£Ñз. \nÐÐ³ÐµÑ Ð±Ò±Ð» ÓÐ»Ñ ÑÑÑемеÑе жүйеден [[Special:UserLogout|ÑÑÒÑп]] ÒайÑа кÑÑÑп көÑÑÒ£Ñз.",
"expand_templates_preview_fail_html_anon": "JavaScript ÑабÑÑлдаÑÑна ÒаÑÑÑ ÑаÒÑÑÒ ÑаÑаÑÑ Ò¯ÑÑн алдÑн ала ÒаÑап ÑÑÒÑ Ð¶Ð°ÑÑÑÑлÒан, ÑÐµÐ±ÐµÐ±Ñ {{SITENAME}} жобаÑÑнда HTML ÑÑке ÒоÑÑлÒан жÓне ÑÑз жүйеге кÑÑмегенÑÑз,. \n\nÐÐ³ÐµÑ Ð±Ò±Ð» өңдеме адал ниеÑÑÑ ÓÑÐµÐºÐµÑ Ð±Ð¾Ð»Ñа ÒайÑа байÒап көÑÑÒ£Ñз. \nÐÐ³ÐµÑ Ð±Ò±Ð» ÓÐ»Ñ ÑÑÑемеÑе, жүйеге [[Special:UserLogin|кÑÑÑп]] ÒайÑа байÒап көÑÑÒ£Ñз.",
- "pagelanguage": "ТÑл ÑÐ°Ò£Ð´Ð°Ñ Ð±ÐµÑÑ",
+ "pagelanguage": "ÐÐµÑ ÑÑлÑн өзгеÑÑÑ",
"pagelang-name": "ÐеÑ",
"pagelang-language": "ТÑл",
"pagelang-use-default": "ÓÐ´ÐµÐ¿ÐºÑ ÑÑÐ»Ð´Ñ ÒолданÑ",
@@ -3366,7 +3382,7 @@
"pagelang-submit": "ÐөнелÑÑ",
"right-pagelang": "ÐÐµÑ ÑÑлÑн аÑдаÑÑ",
"action-pagelang": "Ð±ÐµÑ ÑÑлÑн аÑдаÑÑ",
- "log-name-pagelang": "ТÑл жÑÑналÑн өзгеÑÑÑ",
+ "log-name-pagelang": "ТÑл өзгеÑÑÑ Ð¶ÑÑналÑ",
"log-description-pagelang": "Ðұл Ð±ÐµÑ ÑÑлдеÑÑн өзгеÑÑÑ Ð¶ÑÑналÑ.",
"logentry-pagelang-pagelang": "$1 $3 беÑÑ Ò¯ÑÑн $4 дегеннен $5 дегенге Ð±ÐµÑ ÑÑлÑн {{GENDER:$2|өзгеÑÑÑÑ}}.",
"default-skin-not-found-row-enabled": "* $1
/ $2 (ендÑÑÑлген)",
diff --git a/languages/i18n/kk-latn.json b/languages/i18n/kk-latn.json
index b4a3d526f1..4357312d56 100644
--- a/languages/i18n/kk-latn.json
+++ b/languages/i18n/kk-latn.json
@@ -910,8 +910,6 @@
"categories": "Sanattar",
"categoriespagetext": "Kelesi sanattar iÅinde better ne taspalar bar.\n[[Special:UnusedCategories|Unused categories]] are not shown here.\nAlso see [[Special:WantedCategories|wanted categories]].",
"categoriesfrom": "Sanattardı mınadan bastap körsetw:",
- "special-categories-sort-count": "sanımen surıptaw",
- "special-categories-sort-abc": "älipbïmen surıptaw",
"deletedcontributions": "QatıswÅınıñ joýılÄan ülesi",
"deletedcontributions-title": "QatıswÅınıñ joýılÄan ülesi",
"linksearch": "Sırtqı siltemelerdi izdew",
@@ -1420,8 +1418,8 @@
"exif-colorspace": "Tüs ayası",
"exif-componentsconfiguration": "Ãrqaýsı quraÅ mäni",
"exif-compressedbitsperpixel": "Swret qısımdaw tärtibi",
- "exif-pixelydimension": "Swrettiñ jaramdı eni",
- "exif-pixelxdimension": "Swrettiñ jaramdı bïiktigi",
+ "exif-pixelxdimension": "Swrettiñ jaramdı eni",
+ "exif-pixelydimension": "Swrettiñ jaramdı bïiktigi",
"exif-usercomment": "QatıswÅınıñ mändemeleri",
"exif-relatedsoundfile": "Qatıstı dıbıs faýlı",
"exif-datetimeoriginal": "JasalÄan kezi",
@@ -1720,7 +1718,6 @@
"version-software-version": "Nusqası",
"fileduplicatesearch": "Faýl telnusqaların izdew",
"fileduplicatesearch-summary": "Faýl xeÅi maÄınası negizinde telnusqaların izdew.",
- "fileduplicatesearch-legend": "Telnusqanı izdew",
"fileduplicatesearch-filename": "Faýl atawı:",
"fileduplicatesearch-submit": "Ä°zde",
"fileduplicatesearch-info": "$1 à $2 pïksel Faýl mölÅeri: $3 MIME türi: $4",
diff --git a/languages/i18n/km.json b/languages/i18n/km.json
index e298a9834c..95a8feefa3 100644
--- a/languages/i18n/km.json
+++ b/languages/i18n/km.json
@@ -1510,8 +1510,6 @@
"categories": "á
ááá¶áááááá¶áááááá»á",
"categoriespagetext": "{{PLURAL:$1|á
ááá¶áááááá¶áááááá»á|á
ááá¶áááááá¶áááááá»á}}áá¶ááááááááááá¶áá¢áááááá¬áááá¶á\n[[Special:UnusedCategories|á
ááá¶áááááá¶áááááá»ááá·ááááá¾]]áááá¼ááá¶ááááá á¶ááá¸áááá\náá¼ááá¾áááááá [[Special:WantedCategories|á
ááá¶áááááá¶áááááá»ááááááááááááá¶á
áááá¶á]]á",
"categoriesfrom": "áááá á¶áá
ááá¶áááááá¶áááááá»áá
á¶áááááá¾ááááá",
- "special-categories-sort-count": "áááááááá¶áá
ááá½á",
- "special-categories-sort-abc": "áááááááá¶áá¢áááááááá",
"deletedcontributions": "áá¶ááá½áá
ááááááááááá¼ááá¶ááá»áá
áá",
"deletedcontributions-title": "áá¶ááá½áá
ááááááááááá¼ááá¶ááá»áá
áá",
"sp-deletedcontributions-contribs": "áá¶ááá½áá
ááááâ",
@@ -2240,8 +2238,8 @@
"exif-flashpixversion": "áá¶ááá¶áááá áááá Flashpix",
"exif-colorspace": "ááá ááá",
"exif-compressedbitsperpixel": "ááááá·áá á¶áá áááá¼ááá¶á (ááá·á/á
ááá»á
)",
- "exif-pixelydimension": "ááá¹ááá¼ááá¶á",
- "exif-pixelxdimension": "áááááááá¼ááá¶á",
+ "exif-pixelxdimension": "ááá¹ááá¼ááá¶á",
+ "exif-pixelydimension": "áááááááá¼ááá¶á",
"exif-usercomment": "áááááááááá¢ááááááá¾áááá¶áá",
"exif-relatedsoundfile": "á¯ááá¶áááá¡áááá¶ááááááá",
"exif-datetimeoriginal": "ááááááá¶áá·ááá¶áááá·á
ááááááááá¾ááá·áááááá",
@@ -2554,7 +2552,6 @@
"redirect-file": "áááááá¯ááá¶á",
"redirect-not-exists": "ááááááâáááá·ááá¾áâ",
"fileduplicatesearch": "áááááááá¯ááá¶ááá¼á
áááá¶ááááá·á",
- "fileduplicatesearch-legend": "áááááááá¯ááá¶ááá¼á
áááá¶ááááá·á",
"fileduplicatesearch-filename": "áááááá¯ááá¶áá",
"fileduplicatesearch-submit": "ááááááá",
"fileduplicatesearch-info": "$1 à $2 áá¸áááá ááá áá¯ááá¶á:$3 ááááááMIME:$4",
diff --git a/languages/i18n/kn.json b/languages/i18n/kn.json
index a090015f07..50f3aa562e 100644
--- a/languages/i18n/kn.json
+++ b/languages/i18n/kn.json
@@ -26,7 +26,8 @@
"Pavanaja",
"Ananth subray",
"MarcoAurelio",
- "Macofe"
+ "Macofe",
+ "à°°à°¹à±à°®à°¾à°¨à±à°¦à±à°¦à±à°¨à±"
]
},
"tog-underline": "à²à³à²à²¡à²¿à²à²³ à²à³à²³à²à³ à²à³à²°à³ ತà³à²°à²¿à²¸à²¿",
@@ -390,7 +391,7 @@
"welcomeuser": "ಸà³à²¸à³à²µà²¾à²à²¤,$1!",
"welcomecreation-msg": "ನಿಮà³à²® à²à²¾à²¤à³ ತà³à²°à³à²¯à²²à²¾à²à²¿à²¦à³.ನಿಮà³à²® [[Special:Preferences|{{SITENAME}} preferences]]ಬದಲಾಯಿಸಲೠಮರà³à²¯à²¬à³à²¡à²¿.",
"yourname": "ನಿಮà³à²® ಬಳà²à³à²¯ ಹà³à²¸à²°à³",
- "userlogin-yourname": "ಬಳà²à³à²¦à²¾à²° ಹà³à²¸à²°à³",
+ "userlogin-yourname": "ಬಳà²à³à²¦à²¾à²°à²° ಹà³à²¸à²°à³",
"userlogin-yourname-ph": "ನಿಮà³à²® ಸದಸà³à²¯à²¨à²¾à²® ಬರà³à²¯à²¿à²°à²¿",
"createacct-another-username-ph": "ಬಳà²à³à²¦à²¾à²°à²° ಹà³à²¸à²°à³ ಬರà³à²¯à²¿à²°à²¿",
"yourpassword": "ನಿಮà³à²® ಪà³à²°à²µà³à²¶à²ªà²¦",
@@ -500,7 +501,7 @@
"resetpass-recycled": "ದಯವಿà²à³à²à³ à²à²à²¿à²¨ ಪà³à²°à²µà³à²¶à²ªà²¦à²¦ ಬದಲೠಹà³à²¸à²ªà³à²°à²µà³à²¶à²ªà²¦ ಬದಲಾಯಿಸಿ ಮರà³à²à²¾à²²à²¨à³ ನà³à²¡à²¿.",
"resetpass-temp-password": "ತಾತà³à²à²¾à²²à²¿à² ಪà³à²°à²µà³à²¶à²ªà²¦:",
"passwordreset": "ಪà³à²°à²µà³à²¶à²ªà²¦à²µà²¨à³à²¨à³ ಪà³à²¨à²à²¸à³à²¥à²¾à²ªà²¿à²¸à²¿.",
- "passwordreset-username": "ಬಳà²à³à²¦à²¾à²° ಹà³à²¸à²°à³:",
+ "passwordreset-username": "ಬಳà²à³à²¦à²¾à²°à²° ಹà³à²¸à²°à³:",
"passwordreset-domain": "à²à³à²·à³à²¤à³à²°:",
"passwordreset-email": "à²-ಮà³à²²à³ ವಿಳಾಸ:",
"passwordreset-emailsentemail": "ಪà³à²°à²µà³à²¶à²ªà²¦à²µà²¨à³à²¨à³ ಪà³à²¨à²à²¸à³à²¥à²¾à²ªà²¿à²¸à²¿à²¦ ಮಿà²à²à²à²à³à²¯à²¨à³à²¨à³ à²à²³à³à²¹à²¿à²¸à²²à²¾à²à²¿à²¦à³.",
@@ -1213,7 +1214,7 @@
"usereditcount": "$1{{PLURAL:$1|ಸà²à²ªà²¾à²¦à²¨à³|ಸà²à²ªà²¾à²¦à²¨à³à²à²³à³}}",
"usercreated": "$1 ರà²à²¦à³ $2 ಸಮಯà²à³à²à³ {{GENDER:$3|ಸà³à²·à³à²à²¿à²¸à²¿à²¦à²°à³}}",
"newpages": "ಹà³à²¸ ಪà³à²à²à²³à³",
- "newpages-username": "ಬಳà²à³à²¦à²¾à²° ಹà³à²¸à²°à³:",
+ "newpages-username": "ಬಳà²à³à²¦à²¾à²°à²° ಹà³à²¸à²°à³:",
"ancientpages": "ಹಳà³à²¯ ಪà³à²à²à²³à³",
"move": "ಸà³à²¥à²³à²¾à²à²¤à²°à²¿à²¸à²¿",
"movethispage": "ಠಪà³à²à²µà²¨à³à²¨à³ ಸà³à²¥à²³à²¾à²à²¤à²°à²¿à²¸à²¿",
@@ -1247,8 +1248,6 @@
"categories": "ವರà³à²à²à²³à³",
"categoriespagetext": "ಠà²à³à²³à²à²¿à²¨ ವರà³à²à²à²³à³ ಪà³à²à²à²³à²¨à³à²¨à³ à²
ಥವ ಮà³à²¡à²¿à²¯à²à²³à²¨à³à²¨à³ ಹà³à²à²¦à²¿à²µà³.\n[[Special:UnusedCategories|à²
ನà³à²ªà²¯à³à²à²¿à²¤ ವರà³à²à²à²³à³]] à²à²²à³à²²à²¿ ತà³à²°à²²à²¾à²à²¿à²²à³à²².\nà²à²¦à²¨à³à²¨à³ ನà³à²¡à²¿: [[Special:WantedCategories|ಬà³à²à²¾à²à²¿à²°à³à²µ ವರà³à²à²à²³à³]].",
"categoriesfrom": "à²à²¦à²°à²¿à²à²¦ ಪà³à²°à²¾à²°à²à²à²µà²¾à²à³à²µ ವರà³à²à²à²³à²¨à³à²¨à³ ತà³à²°à²¿à²¸à³:",
- "special-categories-sort-count": "à²à²£à²¿à²à³à²¯ ಪà³à²°à²à²¾à²° à²à³à²¡à²¿à²¸à³",
- "special-categories-sort-abc": "à²
à²à³à²·à²°à²®à²¾à²²à³à²¯ ಪà³à²°à²à²¾à²° à²à³à²¡à²¿à²¸à³",
"deletedcontributions": "à²
ಳಿಸಲಾà²à²¿à²¦à³ à²à²¾à²£à²¿à²à³à²à²³à²¨à³à²¨à³",
"sp-deletedcontributions-contribs": "à²à²¾à²£à²¿à²à³à²à²³à³",
"linksearch": "ಹà³à²°à²à²¿à²¨ ಸà²à²ªà²°à³à²à²à²³à³",
@@ -1280,7 +1279,7 @@
"usermaildisabled": "ಬಳà²à³à²¦à²¾à²°à²° ಮಿà²à²à²à²à³à²¯à²¨à³à²¨à³ ನಿಷà³à²à³à²¤à²¿à²¯à²à³à²³à²¿à²¸à²²à²¾à²à²¿à²¦à³",
"noemailtitle": "ಯಾವà³à²¦à³ à²-à²
à²à²à³ ವಿಳಾಸ à²à²²à³à²²",
"noemailtext": "ಠಸದಸà³à²¯ ಯಾವà³à²¦à³ à²-à²
à²à²à³ ವಿಳಾಸ ನà³à²¡à²¿à²²à³à²², à²
ಥವ ಬà³à²°à³ ಸದಸà³à²¯à²°à²¿à²à²¦ à²-à²
à²à²à³ ಪಡà³à²¯à²²à³ à²à²ªà³à²ªà²¿à²à³à²à²¡à²¿à²²à³à²².",
- "emailusername": "ಬಳà²à³à²¦à²¾à²° ಹà³à²¸à²°à³:",
+ "emailusername": "ಬಳà²à³à²¦à²¾à²°à²° ಹà³à²¸à²°à³:",
"emailusernamesubmit": "à²à²ªà³à²ªà²¿à²¸à³",
"emailfrom": "à²à²à²¦:",
"emailto": "à²à³:",
@@ -1705,8 +1704,8 @@
"exif-artist": "à²à²°à³à²¤à³",
"exif-copyright": "à²à³à²¤à²¿à²¸à³à²µà²¾à²®à³à²¯à²¤à³à²¯à²¨à³à²¨à³ ಹà³à²à²¦à²¿à²°à³à²µà²µà²°à³",
"exif-exifversion": "Exif à²à²µà³à²¤à³à²¤à²¿",
- "exif-pixelydimension": "à²à²¾à²µà²à²¿à²¤à³à²°à²¦ à²
à²à²²",
- "exif-pixelxdimension": "à²à²¾à²µà²à²¿à²¤à³à²°à²¦ à²à²¤à³à²¤à²°",
+ "exif-pixelxdimension": "à²à²¾à²µà²à²¿à²¤à³à²°à²¦ à²
à²à²²",
+ "exif-pixelydimension": "à²à²¾à²µà²à²¿à²¤à³à²°à²¦ à²à²¤à³à²¤à²°",
"exif-usercomment": "ಬಳà²à³à²¦à²¾à²°à²¨ à²à²¿à²ªà³à²ªà²£à²¿",
"exif-relatedsoundfile": "ಸà²à²¬à²à²§à²¿à²¤ ಧà³à²µà²¨à²¿ ಫà³à²²à³",
"exif-datetimeoriginal": "ಮಾಹಿತಿ ಸà³à²·à³à²à²¿à²¯à²¾à²¦ ದಿನಾà²à² ಮತà³à²¤à³ à²à²¾à²²",
@@ -1834,7 +1833,6 @@
"redirect-page": "ಪà³à²à²¦ ID",
"redirect-file": "à²à²¡à²¤à²¦ ಹà³à²¸à²°à³",
"fileduplicatesearch": "ದà³à²µà²¿à²ªà³à²°à²¤à²¿ ಫà³à²²à³à²à²³à²¿à²à³ ಹà³à²¡à³à²à³",
- "fileduplicatesearch-legend": "ದà³à²µà²¿à²ªà³à²°à²¤à²¿à²¯à²¨à³à²¨à³ ಹà³à²¡à³à²à³",
"fileduplicatesearch-filename": "ಫà³à²²à²¿à²¨ ಹà³à²¸à²°à³:",
"fileduplicatesearch-submit": "ಹà³à²¡à³à²à³",
"fileduplicatesearch-info": "$1 à $2 à²à²¿à²¤à³à²°à²¬à²¿à²à²¦à³ ಫà³à²²à²¿à²¨ à²à²¾à²¤à³à²°: $3 MIME ಪà³à²°à²à²¾à²°: $4",
diff --git a/languages/i18n/ko.json b/languages/i18n/ko.json
index 8dcbb02a72..63d53ef4b9 100644
--- a/languages/i18n/ko.json
+++ b/languages/i18n/ko.json
@@ -1508,6 +1508,7 @@
"uploadstash-badtoken": "ì´ ëìì ìííë ë° ì¤í¨íìµëë¤. í¸ì§ í í°ì´ ë§ë£ëìì ê°ë¥ì±ì´ ììµëë¤. ë¤ì ìëí´ì£¼ì¸ì.",
"uploadstash-errclear": "íì¼ì ì§ì°ë ë° ì¤í¨íìµëë¤.",
"uploadstash-refresh": "íì¼ ëª©ë¡ì ìë¡ ê³ ì¹¨",
+ "uploadstash-thumbnail": "ì¬ë¤ì¼ 보기",
"invalid-chunk-offset": "ì²í¬ ì¤íì
ì´ ì못ëììµëë¤.",
"img-auth-accessdenied": "ì ê·¼ì´ ê±°ë¶ë¨",
"img-auth-nopathinfo": "PATH_INFO를 ìììµëë¤.\nìë²ê° ì´ ì 보를 ë°ì ì ìëë¡ ì¤ì ëì´ ìì§ ììµëë¤.\nì´ë¬í ê²½ì°ë ìë²ê° CGI 기ë°ì´ê³ img_auth를 ì§ìíì§ ìì ë ëíë ì ììµëë¤.\nhttps://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Image_Authorization ì 참조íììì¤.",
@@ -1823,8 +1824,6 @@
"categories-submit": "ë³´ì´ê¸°",
"categoriespagetext": "문ìë ìë£ë¥¼ {{PLURAL:$1|í¬í¨íê³ ìë ë¶ë¥}} 목ë¡ì
ëë¤.\n[[Special:UnusedCategories|ì¬ì©ëì§ ìë ë¶ë¥]]ë ì¬ê¸°ì ë³´ì´ì§ ììµëë¤.\n[[Special:WantedCategories|íìí ë¶ë¥]]ë 참조íì¸ì.",
"categoriesfrom": "ë¤ìì¼ë¡ ììíë ë¶ë¥ë¥¼ ë³´ì¬ì£¼ê¸°:",
- "special-categories-sort-count": "ê°¯ì ìì¼ë¡ ì ë ¬",
- "special-categories-sort-abc": "ìíë²³ìì¼ë¡ ì ë ¬",
"deletedcontributions": "ìì ë ì¬ì©ì 기ì¬",
"deletedcontributions-title": "ìì ë ì¬ì©ì 기ì¬",
"sp-deletedcontributions-contribs": "기ì¬",
@@ -1993,7 +1992,7 @@
"delete-toobig": "ì´ ë¬¸ììë {{PLURAL:$1|í¸ì§ ìì¬}}ê° $1ê° ì´ì ììµëë¤.\n{{SITENAME}}ì ìëíì§ ìì í¼ëì ì¤ ì ì기 ë문ì ì´ë° 문ìì ìì ë ì íë©ëë¤.",
"delete-warning-toobig": "ì´ ë¬¸ììë {{PLURAL:$1|í¸ì§ ìì¬}}ê° $1ê° ììµëë¤.\ní¸ì§ ìì¬ê° 긴 문ì를 ìì íë©´ {{SITENAME}} ë°ì´í°ë² ì´ì¤ ëìì í° ìí¥ì ì¤ ì ììµëë¤.\n주ìí´ ì£¼ì¸ì.",
"deleteprotected": "ì´ ë¬¸ìê° ë³´í¸ëì´ ì기 ë문ì ìì í ì ììµëë¤.",
- "deleting-backlinks-warning": "ê²½ê³ :/ ìì íë ¤ë 문ìê° [[Special:WhatLinksHere/{{FULLPAGENAME}}|ë¤ë¥¸ 문ì]]ì ë§í¬ëì´ ìê±°ë ë¼ìì ¸ ììµëë¤.",
+ "deleting-backlinks-warning": "ê²½ê³ : ìì íë ¤ë 문ìê° [[Special:WhatLinksHere/{{FULLPAGENAME}}|ë¤ë¥¸ 문ì]]ì ë§í¬ëì´ ìê±°ë ë¼ìì ¸ ììµëë¤.",
"rollback": "í¸ì§ ëë리기",
"rollbacklink": "ëë리기",
"rollbacklinkcount": "{{PLURAL:$1|í¸ì§}} $1í ëë리기",
@@ -2444,11 +2443,7 @@
"import-logentry-upload-detail": "{{PLURAL:$1|í}} $1ê°ë¥¼ ê°ì ¸ììµëë¤",
"import-logentry-interwiki-detail": "$2ìì {{PLURAL:$1|í}} $1ê°ë¥¼ ê°ì ¸ììµëë¤",
"javascripttest": "ìë°ì¤í¬ë¦½í¸ í
ì¤í¸",
- "javascripttest-pagetext-noframework": "ì´ ë¬¸ìë ìë°ì¤í¬ë¦½í¸ í
ì¤í¸ë¥¼ ì¤íí기 ìí ì©ëë¡ í ë¹ëì´ ììµëë¤.",
- "javascripttest-pagetext-unknownframework": "ì¤íì© íë ììí¬ \"$1\"를 ì ì ììµëë¤.",
"javascripttest-pagetext-unknownaction": "ì ì ìë ëì \"$1\".",
- "javascripttest-pagetext-frameworks": "ë¤ì ì¤íì© íë ììí¬ ì¤ íë를 ì ííì¸ì: $1",
- "javascripttest-pagetext-skins": "ì¤íí ì¤í¨ì ì ííì¸ì:",
"javascripttest-qunit-intro": "mediawiki.orgì [$1 í
ì¤í¸ ì¤ëª
ì]를 ì°¸ê³ íì¸ì.",
"tooltip-pt-userpage": "{{GENDER:|ë´ ì¬ì©ì}} 문ì",
"tooltip-pt-anonuserpage": "íì¬ ì¬ì©íë IP 주ìì ì¬ì©ì 문ì",
@@ -2719,8 +2714,8 @@
"exif-colorspace": "ì ê³µê°",
"exif-componentsconfiguration": "ê° êµ¬ì± ììì ì미",
"exif-compressedbitsperpixel": "그림 ìì¶ ë°©ì",
- "exif-pixelydimension": "그림 ëë¹",
- "exif-pixelxdimension": "그림 ëì´",
+ "exif-pixelxdimension": "그림 ëë¹",
+ "exif-pixelydimension": "그림 ëì´",
"exif-usercomment": "ì¬ì©ì 주",
"exif-relatedsoundfile": "ê´ë ¨ë ì¤ëì¤ íì¼",
"exif-datetimeoriginal": "ë ì§ì ìê°",
@@ -3176,7 +3171,6 @@
"version-libraries-description": "ì¤ëª
",
"version-libraries-authors": "ì ì",
"redirect": "íì¼, ì¬ì©ì ID, 문ì ID, í IDë ë¡ê·¸ IDë¡ ë겨주기",
- "redirect-legend": "íì¼ì´ë 문ìë¡ ë겨주기",
"redirect-summary": "ì´ í¹ì 문ìë íì¼(íì¼ ì´ë¦ì´ 주ì´ì§), 문ì(í IDë 문ì IDê° ì£¼ì´ì§), ì¬ì©ì 문ì(ì«ìë¡ íìë ì¬ì©ì IDê° ì£¼ì´ì§)ë ë¡ê·¸ í목(ë¡ê·¸ IDê° ì£¼ì´ì§)ì¼ë¡ ë겨ì¤ëë¤. ì¬ì©ë²: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], [[{{#Special:Redirect}}/user/101]], ëë [[{{#Special:Redirect}}/logid/186]].",
"redirect-submit": "보기",
"redirect-lookup": "ì°¾ì ì¢
ë¥:",
@@ -3189,7 +3183,6 @@
"redirect-not-exists": "ê°ì ì°¾ì ì ììµëë¤",
"fileduplicatesearch": "ì¤ë³µë íì¼ ê²ì",
"fileduplicatesearch-summary": "íì¼ í´ìê°ì ì´ì©í´ ì¤ë³µ íì¼ì ê²ìí©ëë¤.",
- "fileduplicatesearch-legend": "ì¤ë³µ ê²ì",
"fileduplicatesearch-filename": "íì¼ ì´ë¦:",
"fileduplicatesearch-submit": "ê²ì",
"fileduplicatesearch-info": "$1 à $2 í½ì
íì¼ í¬ê¸°: $3 MIME ì í: $4",
@@ -3589,5 +3582,6 @@
"sessionprovider-generic": "$1 ì¸ì
",
"sessionprovider-mediawiki-session-cookiesessionprovider": "ì¿ í¤ ê¸°ë° ì¸ì
",
"sessionprovider-nocookies": "ë¸ë¼ì°ì ì ì¿ í¤ ê¸°ë¥ì´ êº¼ì ¸ ìëì§ íì¸íììì¤. ì¿ í¤ ê¸°ë¥ì ì¼ ë¤ì ë¤ì ììí´ì¼ í©ëë¤.",
- "randomrootpage": "ìì ë£¨í¸ íì´ì§"
+ "randomrootpage": "ìì ë£¨í¸ íì´ì§",
+ "log-action-filter-block": "ì°¨ë¨ì ì í:"
}
diff --git a/languages/i18n/krc.json b/languages/i18n/krc.json
index dd0a5b2a90..432a3ab4a3 100644
--- a/languages/i18n/krc.json
+++ b/languages/i18n/krc.json
@@ -1466,8 +1466,6 @@
"categories": "ÐаÑегоÑиÑла",
"categoriespagetext": "ЫзÑндан келген {{PLURAL:$1|1=каÑегоÑиÑ|каÑегоÑиÑла}} Ð±ÐµÑ Ð½ÐµÐ´Ð° медиÑ-Ñайл ÑÑÑадÑла.\n[[Special:UnusedCategories|ХайÑÑланмагÑан каÑегоÑиÑла]] бÑлайда кÑÑгÑзÑлмегендиле.\nÐагÑÑда [[Special:WantedCategories|изленнген каÑегоÑиÑла]] гÑакÑаÑагÑÑз.",
"categoriesfrom": "ÐÑ Ð±Ð»Ð° баÑланнган каÑегоÑиÑÐ»Ð°Ð½Ñ ÐºÑÑгÑз:",
- "special-categories-sort-count": "ÑанÑна кÑÑе ÑаÑла",
- "special-categories-sort-abc": "алÑÐ°Ð²Ð¸Ñ Ñ
алда Ñиз",
"deletedcontributions": "ÐеÑеÑилген кÑоÑÑлÑÑÑÑÐ½Ñ ÐºÑоÑÑ
ан ÑлÑÑÑ",
"deletedcontributions-title": "ÐеÑеÑилген кÑоÑÑлÑÑÑÐ½Ñ ÐºÑоÑÑ
ан ÑлÑÑÑ",
"sp-deletedcontributions-contribs": "кÑоÑÑ
ан ÑлÑÑ",
@@ -2204,8 +2202,8 @@
"exif-colorspace": "ÐоÑÑ Ð°Ð»Ð°Ð¼",
"exif-componentsconfiguration": "Ð¥Ð°Ñ ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÐµÐ½Ñни ангÑламÑ",
"exif-compressedbitsperpixel": "СÑÑаÑÐ½Ñ ÐºÑÑÑдÑÑÑÑ Ð°Ð¼Ð°Ð»Ñ",
- "exif-pixelydimension": "СÑÑаÑÐ½Ñ ÐºÐµÐ½Ð³Ð»Ð¸Ð³Ð¸",
- "exif-pixelxdimension": "СÑÑаÑÐ½Ñ Ð¼Ð¸Ð¹Ð¸ÐºÐ»Ð¸Ð³Ð¸",
+ "exif-pixelxdimension": "СÑÑаÑÐ½Ñ ÐºÐµÐ½Ð³Ð»Ð¸Ð³Ð¸",
+ "exif-pixelydimension": "СÑÑаÑÐ½Ñ Ð¼Ð¸Ð¹Ð¸ÐºÐ»Ð¸Ð³Ð¸",
"exif-usercomment": "ÐÑоÑÐ°ÐºÑ ÐºÐ¾Ð¼Ð¼ÐµÐ½ÑаÑий",
"exif-relatedsoundfile": "ТаÑÑÑÐ»Ñ ÐºÐ¾Ð¼Ð¼ÐµÐ½ÑаÑийни ÑайлÑ",
"exif-datetimeoriginal": "ÐÑигинал джаÑаÑÑÑ Ð·Ð°Ð¼Ð°Ð½",
@@ -2663,7 +2661,6 @@
"redirect-file": "Ð¤Ð°Ð¹Ð»Ð½Ñ Ð°ÑÑ",
"fileduplicatesearch": "ÐÑÐ±Ð»Ð¸ÐºÐ°Ñ ÑÐ°Ð¹Ð»Ð»Ð°Ð½Ñ Ð¸Ð·Ð»Ðµ",
"fileduplicatesearch-summary": "Ð¥ÑÑ-кодлаÑÑ Ð±Ð»Ð° дÑÐ±Ð»Ð¸ÐºÐ°Ñ ÑÐ°Ð¹Ð»Ð°Ð½Ð½Ñ Ð¸Ð·Ð»Ðµ.",
- "fileduplicatesearch-legend": "ÐÑбликаÑÐ»Ð°Ð½Ñ Ð¸Ð·Ð»Ðµ",
"fileduplicatesearch-filename": "Ð¤Ð°Ð¹Ð»Ð½Ñ Ð°ÑÑ:",
"fileduplicatesearch-submit": "Таб",
"fileduplicatesearch-info": "$1 à $2 пикÑÐµÐ»Ñ Ð¤Ð°Ð¹Ð»Ð½Ñ ÑлÑеми: $3 MIME-Ñип: $4",
diff --git a/languages/i18n/ksh.json b/languages/i18n/ksh.json
index a180506bee..b1b6464af0 100644
--- a/languages/i18n/ksh.json
+++ b/languages/i18n/ksh.json
@@ -9,7 +9,8 @@
"××¢×¨× ×¨××× ××ר×",
"ìë¼",
"TTO",
- "Macofe"
+ "Macofe",
+ "Nemo bis"
]
},
"tog-underline": "Dun de Lengks ongerschtriische:",
@@ -1298,9 +1299,9 @@
"recentchangeslinked-page": "Dä Sigg ier Ãvverschreff:",
"recentchangeslinked-to": "Zeisch de Ãnderonge aan dä Sigge, woh Lengks op di aanjejovve Sigg drop sin",
"recentchanges-page-added-to-category": "Di Sigg [[:$1]] wood en di Saachjrop jedonn",
- "recentchanges-page-added-to-category-bundled": "Di Sigg [[:$1]] un {{PLURAL:$2|noch ein Sigg wood|$2 Sigge woodte|kein Sigg wood}} en di Saachjrop jedonn",
+ "recentchanges-page-added-to-category-bundled": "Di Sigg [[:$1]] kohm en di Saachjrobb eren, un es [[Special:WhatLinksHere/$1|en annder Sigge ennjebonge]].",
"recentchanges-page-removed-from-category": "Di Sigg [[:$1]] wood uà dä Saachjrop jenumme",
- "recentchanges-page-removed-from-category-bundled": "Di Sigg [[:$1]] un {{PLURAL:$2|noch ein Sigg woodte|$2 Sigge woodte|kein Sigg wood}} uà dä Saachjrop jenumme",
+ "recentchanges-page-removed-from-category-bundled": "Di Sigg [[:$1]] flooch uà dä Saachjrobb eruÃ, es ävver [[Special:WhatLinksHere/$1|en annder Sigge ennjebonge]].",
"autochange-username": "Automattesche Ãnnderong aam MediaWiki",
"upload": "Daate huhlade",
"uploadbtn": "Huhlade!",
@@ -1769,8 +1770,6 @@
"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": "FottjeschmeÃe Väsjohne",
"deletedcontributions-title": "FottjeschmeÃe Väsjohne",
"sp-deletedcontributions-contribs": "Beijdrääsch",
@@ -2133,6 +2132,7 @@
"ipb-unblock": "En IP-Addräà ov ene Metmaacher widder zohlohÃe",
"ipb-blocklist": "All de Sperre för Metmaacher un e-mail -AdräÃe aanzeije, di jrad beschtonn",
"ipb-blocklist-contribs": "{{GENDER:$1|Däm|Däm|Däm Metmaacher|Dä|Däm}} $1 {{GENDER:$1|sing|singe|sing|iere|sing}} Bäjdrähsch",
+ "ipb-blocklist-duration-left": "noch $1",
"unblockip": "Dä Medmacher widder maache looÃe",
"unblockiptext": "Heh kanns De vörher jesperrte IP_Adresse oder Metmaacher widder freijevve, un dänne esu dat Rääch för ze Schrieve heh em Wiki widder jevve.",
"ipusubmit": "Sperr ophevve!",
@@ -2374,11 +2374,7 @@
"import-logentry-upload-detail": "{{PLURAL:$1|ein Väsjohn|$1 Väsjohne|kein Väsjohn}} woodt emportehrt.",
"import-logentry-interwiki-detail": "{{PLURAL:$1|ein Väsjohn|$1 Väsjohne|kein VVäsjohnersion}} woodt empottehrt vun â$2â",
"javascripttest": " JavaSkrepte uÃprobeere.",
- "javascripttest-pagetext-noframework": "Heh di Sigg es för JavaSkrepte uÃzeprobeere.",
- "javascripttest-pagetext-unknownframework": "Dä Prööfrahme â$1â es onbikannt.",
"javascripttest-pagetext-unknownaction": "â$1â es ene onbikannte Opdracht.",
- "javascripttest-pagetext-frameworks": "Bes esu jood un söök eine vun dä Prööfömjävvonge us: $1",
- "javascripttest-pagetext-skins": "Sööke en Bovverfläsch udder et UÃsinn uÃ, öm di Prööfonge domet ze maache:",
"javascripttest-qunit-intro": "Loor noh dä [$1 Dokemäntation övver et Prööfe] op mediawiki.org.",
"tooltip-pt-userpage": "Don Ding eije Metmaachersigg aanzeije{{GENDER:|}}",
"tooltip-pt-anonuserpage": "Metmaachersigg för di IP -AdräÃ, vun wo uà De jraad Ding Ãnnderonge un Ãjännzonge aam Wiki am maache bes",
@@ -2650,8 +2646,8 @@
"exif-colorspace": "Färveroum",
"exif-componentsconfiguration": "Bedüggening fun all de enkele Komponente",
"exif-compressedbitsperpixel": "Aat fun de KompreÃjohn fun däm Beld",
- "exif-pixelydimension": "De jöltije Beld-Breede en Pixelle",
- "exif-pixelxdimension": "De jöltije Beld-Hühde en Pixelle",
+ "exif-pixelxdimension": "De jöltije Beld-Breede en Pixelle",
+ "exif-pixelydimension": "De jöltije Beld-Hühde en Pixelle",
"exif-usercomment": "Aanmerkong fum Aanwender",
"exif-relatedsoundfile": "De Tondatei, di do bei jehööt",
"exif-datetimeoriginal": "Zickpunk fun de Opzeischnong fun de Date",
@@ -3156,7 +3152,6 @@
"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",
"redirect-summary": "Heh di {{int:specialpage}} leidt öm ob_en Dattei â doh möÃd_Er ene Nahme aanjävve, för e Beischpell:[[{{#Special:Redirect}}/file/Example.jpg]] â udder en Sigg â doh möÃd_Er en Kännong för, udder en Väsjuhn aanjävve, för e Beischpell esu: [[{{#Special:Redirect}}/page/64308]] udder [[{{#Special:Redirect}}/revision/328429]] â udder en Metmaachersigg â doh möÃd_Er enem Metmaacher sing Kännong aanjävve, för e Beischpell: [[{{#Special:Redirect}}/user/101]].",
"redirect-submit": "Lohà Jonn!",
"redirect-lookup": "Söhk noh:",
@@ -3168,7 +3163,6 @@
"redirect-not-exists": "Nit jefonge",
"fileduplicatesearch": "Sök noh dubbelte Dateie",
"fileduplicatesearch-summary": "Söhhk noh dubbelte Dateie övver dänne iere Häsh-Zahl.",
- "fileduplicatesearch-legend": "Sök noh ene dubbelte Dattei",
"fileduplicatesearch-filename": "Datteinahme:",
"fileduplicatesearch-submit": "Söhke",
"fileduplicatesearch-info": "{{PLURAL:$1|Ei Pixel|$1 Pixelle|Nit}} breed à {{PLURAL:$2|Ei Pixel|$2 Pixelle|nix}} huh Dateiömfang: $3 de MIME -Zoot: $4
",
@@ -3568,5 +3562,6 @@
"mw-widgets-titleinput-description-new-page": "di Sigg jidd_et noch nit",
"mw-widgets-titleinput-description-redirect": "ömleijde op â$1â",
"api-error-blacklisted": "Söhk Der ene anndere Nahme uÃ, dä mih drövver säht.",
- "randomrootpage": "Zofällige Aanfangs-Sigg"
+ "randomrootpage": "Zofällige Aanfangs-Sigg",
+ "log-action-filter-delete-delete": "En Sigg wohd fott jeschmeÃe"
}
diff --git a/languages/i18n/ku-latn.json b/languages/i18n/ku-latn.json
index 9499c11a65..60e59954e7 100644
--- a/languages/i18n/ku-latn.json
+++ b/languages/i18n/ku-latn.json
@@ -1151,8 +1151,6 @@
"allpages-hide-redirects": "Beralîkirinan veÅêre",
"categories": "Kategorî",
"categoriespagetext": "Di van kategoriyan de rûpel an jî medya hene.\n[[Special:UnusedCategories|Kategoriyên nayên bikaranîn]] li vir nayên nîÅandan.\nLi [[Special:WantedCategories|kategoriyên xwestî]] binêre.",
- "special-categories-sort-count": "hatîye rêzkirin li gorî hejmaran",
- "special-categories-sort-abc": "li gorî alfabeyê rêzkirî ye",
"deletedcontributions": "BeÅdariyên bikarhênerekî yê jêbirî",
"deletedcontributions-title": "Guherandinên bikarhêner yê jêbirî",
"sp-deletedcontributions-contribs": "beÅdarî",
@@ -1641,8 +1639,8 @@
"exif-software": "Nivîsbarîya tê bikaranîn",
"exif-artist": "Nûser",
"exif-exifversion": "Versiyona exif",
- "exif-pixelydimension": "Firehiya wêne",
- "exif-pixelxdimension": "Dirêjiya wêne",
+ "exif-pixelxdimension": "Firehiya wêne",
+ "exif-pixelydimension": "Dirêjiya wêne",
"exif-usercomment": "Åîroveyên bikarhêner",
"exif-datetimedigitized": "Dema pencekîkirinê",
"exif-exposuretime-format": "$1 sanî ($2)",
diff --git a/languages/i18n/ky.json b/languages/i18n/ky.json
index 8c5fa95418..d67a8b7eed 100644
--- a/languages/i18n/ky.json
+++ b/languages/i18n/ky.json
@@ -22,6 +22,7 @@
"tog-hideminor": "Ð¡Ð¾Ò£ÐºÑ Ó©Ð·Ð³Ó©ÑүүлөÑдүн ÑизмеÑинен майда өзгөÑүүлөÑдү жаÑÑÑÑÑ",
"tog-hidepatrolled": "Ð¡Ð¾Ò£ÐºÑ Ó©Ð·Ð³Ó©ÑүүлөÑдүн ÑизмеÑинен күзөÑÑөлгөн оңдоолоÑÐ´Ñ Ð¶Ð°ÑÑÑÑÑ",
"tog-newpageshidepatrolled": "ÐÐ°Ò£Ñ Ð±Ð°ÑакÑÐ°Ñ ÑизмеÑинен күзөÑÑөлгөн баÑакÑаÑÐ´Ñ Ð¶Ð°ÑÑÑÑÑ",
+ "tog-hidecategorization": "ÐаÑакÑаÑдÑн каÑегоÑиÑлаÑÑн жаÑÑÑÑÑ",
"tog-extendwatchlist": "ÐÒ¯Ñ Ó©Ð·Ð³Ó©ÑÑүүлөÑдү камÑÑган кеңиÑи көзөмөл ÑизмеÑи, ÑÒ£ ÑоңкÑлаÑÐ´Ñ Ð³Ð°Ð½Ð° ÑмеÑ",
"tog-usenewrc": "ӨзгөÑÑүүлөÑдү ÑÐ¾Ò£ÐºÑ Ó©Ð·Ð³Ó©ÑүүлөÑгө жана көзөмөл Ñизмеме ÑопÑоо (JavaScript Ñалап кÑлÑнаÑ)",
"tog-numberheadings": "ÐаÑжазÑÑлаÑÐ´Ñ Ð°Ð²ÑомаÑÑÑк ÑÒ¯Ñдө номеÑдөө",
@@ -374,8 +375,6 @@
"createaccountreason": "Себеби:",
"createacct-reason": "Себеп",
"createacct-reason-ph": "Ðмне Ò¯Ñүн баÑка ÑÑеп жазÑÑ Ñүзүп жаÑаÑÑз",
- "createacct-captcha": "ÐоопÑÑздÑк ÑекÑеÑÒ¯Ò¯ÑÒ¯",
- "createacct-imgcaptcha-ph": "ÐогоÑÑÐ´Ð°Ð³Ñ ÑекÑÑÑи ÑеÑиңиз",
"createacct-submit": "ÐаÑÑалÑÒ£Ñз",
"createacct-benefit-heading": "{{SITENAME}} Ñиз ÑÑÑкÑÑÑ Ð°Ð´Ð°Ð¼Ð´Ð°Ñ ÑаÑабÑнан Ñүзүлгөн.",
"createacct-benefit-body1": "{{PLURAL:$1|оңдоо|оңдоолоÑ}}",
@@ -447,11 +446,11 @@
"passwordreset-email": "E-mail даÑек:",
"passwordreset-emailtitle": "{{SITENAME}} ÑайÑÑÐ½Ð´Ð°Ð³Ñ ÑÑеп жазÑÑÑÑ Ð¶Ó©Ð½Ò¯Ð½Ð´Ó©Ð³Ò¯ маалÑмаÑ",
"passwordreset-emailelement": "ÐолдонÑÑÑÑ Ð°ÑÑ: \n$1\n\nУбакÑÑлÑÑ ÑÑÑÑөз: \n$2",
- "passwordreset-emailsent": "СÑÑÑөздү алмаÑÑÑÑÑÑ Ñмейлге жөнөÑүлдү.",
+ "passwordreset-emailsentemail": "СÑÑÑөздү алмаÑÑÑÑÑÑ Ñмейлге жөнөÑүлдү.",
"passwordreset-emailsent-capture": "Төмөндө көÑÑÓ©Ñүлгөн Ñмейлге ÑÑÑÑөздү алмаÑÑÑÑÑÑÑÑ ÐºÐ°Ñ Ð¶Ó©Ð½Ó©Ñүлдү.",
"passwordreset-emailerror-capture": "Төмөндө көÑÑÓ©Ñүлгөн даÑекке ÑÑÑÑөздү алмаÑÑÑÑÑÑ ÐºÐ°Ñ Ñүзүлдү,биÑок Ð°Ð½Ñ {{GENDER:$2|каÑÑÑÑÑÑÑга}} жөнөÑÒ¯Ò¯ оңÑнан ÑÑккан жок: $1",
"changeemail": "E-mail даÑекÑи өзгөÑÑÒ¯Ò¯",
- "changeemail-text": "Ðмейл даÑегиңизди алмаÑÑÑÑÑÑ Ò¯Ñүн ÑÑÑл үлгүнү ÑолÑÑÑÑÒ£Ñз. ӨзгөÑүүнү анÑкÑоо Ò¯Ñүн ÑÑÑÑөздү киÑгизүү Ñалап кÑлÑнаÑ.",
+ "changeemail-header": "Ðл. поÑÑанÑн даÑегин өзгөÑÑÒ¯Ò¯",
"changeemail-no-info": "ÐÑл баÑакка Ñүз кайÑÑлÑÑ Ò¯Ñүн, Ñиз ÑиÑÑемага киÑиÑиңиз кеÑек.",
"changeemail-oldemail": "УÑÑÑÐ´Ð°Ð³Ñ e-mail даÑек:",
"changeemail-newemail": "ÐÐ°Ò£Ñ e-mail даÑек:",
@@ -717,8 +716,6 @@
"prefs-advancedwatchlist": "ÐеңейÑилген ÑÑаÑÑоолоÑ",
"prefs-displayrc": "ÐÓ©ÑүнүÑÑүн ÑÑаÑÑоолоÑÑ",
"prefs-displaywatchlist": "ÐÓ©ÑүнүÑÑүн ÑÑаÑÑоолоÑÑ",
- "email-address-validity-valid": "Ðл. поÑÑанÑн даÑеги анÑк көÑүнөÑ",
- "email-address-validity-invalid": "Ðл. поÑÑанÑн анÑк даÑегин киÑгизиңиз!",
"userrights": "ÐолдонÑÑÑÑлаÑдÑн ÑкÑкÑаÑÑн баÑкаÑÑÑ",
"userrights-lookup-user": "ÐолдонÑÑÑÑ ÑопÑоÑÑн баÑкаÑÑÑ",
"userrights-user-editname": "ÐолдонÑÑÑÑ Ð°ÑÑÒ£ÑÐ·Ð´Ñ ÑеÑиңиз:",
@@ -838,8 +835,6 @@
"upload-description": "Файл баÑндамаÑÑ",
"upload-options": "ÐүкÑÓ©Ó© ваÑианÑÑ",
"watchthisupload": "ÐÑл ÑÐ°Ð¹Ð»Ð´Ñ ÐºÓ©Ð·Ó©Ð¼Ó©Ð»Ð³Ó© алÑÑ",
- "upload-success-subj": "ÐйгиликÑÒ¯Ò¯ жүкÑөлдү",
- "upload-failure-subj": "ÐүкÑÓ©Ó© көйгөйү",
"upload-proto-error": "ТÑÑÑа ÑÐ¼ÐµÑ Ð¿ÑоÑокол",
"upload-file-error": "ÐÑки каÑа",
"backend-fail-closetemp": "УбакÑÑлÑÑ ÑÐ°Ð¹Ð»Ð´Ñ Ð¶Ð°Ð±ÑÑ Ð¾Ò£Ñнан ÑÑкпай жаÑаÑ.",
@@ -1063,7 +1058,6 @@
"lockbtn": "ÐаалÑÐ¼Ð°Ñ Ð±Ð°Ð·Ð°ÑÑн камоо",
"move-page": "$1 â аÑÑн өзгөÑÑÒ¯Ò¯",
"move-page-legend": "ÐаÑакÑÑн аÑÑн өзгөÑÑÒ¯Ò¯",
- "movearticle": "ÐаÑакÑÑн аÑÑн өзгөÑÑÒ¯Ò¯:",
"newtitle": "ÐÐ°Ò£Ñ Ð°ÑалÑÑка:",
"movepagebtn": "ÐаÑакÑÑн аÑÑн өзгөÑÑÒ¯Ò¯",
"pagemovedsub": "ÐаÑакÑÑн аÑÑ Ó©Ð·Ð³Ó©ÑÑүлдү",
@@ -1071,7 +1065,6 @@
"movelogpage": "ÐÑалÑÑÑаÑÐ´Ñ Ó©Ð·Ð³Ó©ÑÑÒ¯Ò¯ жÑÑналÑ",
"movereason": "Себеп:",
"revertmove": "кайÑаÑÑÑ",
- "delete_and_move": "Ó¨ÑÒ¯ÑÒ¯Ò¯ же аÑÑн өзгөÑÑÒ¯Ò¯",
"delete_and_move_confirm": "Ðоба, бÑл баÑакÑÑ Ó©ÑÒ¯Ñөм",
"immobile-source-page": "ÐÑл баÑакÑÑн аÑÑн өзгөÑÑүүгө болбойÑ.",
"imageinvalidfilename": "ÐакÑаÑÑÑк Ñайл аÑÑ ÑÑÑÑа ÑмеÑ",
@@ -1232,8 +1225,8 @@
"exif-imagelength": "ÐийикÑиги",
"exif-imagedescription": "СүÑÓ©Ñ Ð°ÑÑ",
"exif-artist": "ÐвÑоÑ",
- "exif-pixelydimension": "СүÑÓ©ÑÑүн ÑÑÑÑаÑÑ",
- "exif-pixelxdimension": "СүÑÓ©ÑÑүн бийикÑиги",
+ "exif-pixelxdimension": "СүÑÓ©ÑÑүн ÑÑÑÑаÑÑ",
+ "exif-pixelydimension": "СүÑÓ©ÑÑүн бийикÑиги",
"exif-usercomment": "ÐолдонÑÑÑÑнÑн комменÑаÑийи",
"exif-relatedsoundfile": "ÐайланÑÑÑÑÑ Ð°Ñдио-Ñайл",
"exif-fnumber": "ÐиаÑÑагманÑн ÑанÑ",
diff --git a/languages/i18n/la.json b/languages/i18n/la.json
index 58fbcefc7c..f02128e842 100644
--- a/languages/i18n/la.json
+++ b/languages/i18n/la.json
@@ -26,7 +26,8 @@
"StevenJ81",
"Macofe",
"Xð",
- "Laurentianus"
+ "Laurentianus",
+ "Guillermo2149"
]
},
"tog-underline": "Versores linea denotandi:",
@@ -73,6 +74,8 @@
"underline-default": "Defalta navigatri interretialis",
"editfont-style": "Stilus:",
"editfont-default": "iuxta navigatrum",
+ "editfont-sansserif": "Fons Sans-serif",
+ "editfont-serif": "Fons Serif",
"sunday": "dies Solis",
"monday": "dies Lunae",
"tuesday": "dies Martis",
@@ -135,6 +138,8 @@
"october-date": "$1 Octobris",
"november-date": "$1 Novembris",
"december-date": "$1 Decembris",
+ "period-am": "AM",
+ "period-pm": "PM",
"pagecategories": "{{PLURAL:$1|Categoria|Categoriae}}",
"category_header": "Paginae in categoria \"$1\"",
"subcategories": "Subcategoriae",
@@ -160,7 +165,7 @@
"morenotlisted": "Hic index mancus est.",
"mypage": "Pagina",
"mytalk": "Disputatio",
- "anontalk": "Disputatio huius IP",
+ "anontalk": "Disputatio",
"navigation": "Navigatio",
"and": " et",
"qbfind": "Invenire",
@@ -272,6 +277,7 @@
"hidetoc": "celare",
"collapsible-collapse": "Collabi",
"collapsible-expand": "Dilatare",
+ "confirmable-yes": "Sic",
"thisisdeleted": "Videre aut restituere $1?",
"viewdeleted": "Visne conspicere $1?",
"restorelink": "{{PLURAL:$1|unam redactionem deletam|$1 redactiones deletas}}",
@@ -363,6 +369,7 @@
"gotaccountlink": "Nomen da",
"userlogin-resetlink": "Num tesserae tuae oblitus es?",
"userlogin-resetpassword-link": "Num tesserae oblitus es?",
+ "userlogin-helplink2": "auxilium dandi nominis",
"createacct-emailrequired": "Inscriptio electronica",
"createacct-emailoptional": "Inscriptio electronica (non necesse)",
"createacct-email-ph": "Inscriptionem electronicam tuam inscribe",
@@ -422,6 +429,7 @@
"resetpass-submit-loggedin": "Tesseram mutare",
"resetpass-submit-cancel": "Dimittere",
"resetpass-temp-password": "Tessera temporaria:",
+ "passwordreset": "Tesseram restituere",
"passwordreset-username": "Nomen usoris:",
"passwordreset-email": "Inscriptio electronica:",
"passwordreset-emailelement": "Nomen usoris: \n$1\n\nMomentarius Tessera: \n$2",
@@ -474,7 +482,7 @@
"newarticle": "(Nova)",
"newarticletext": "Per nexum progressus es ad paginam quae nondum exsistit.\nNovam paginam si vis creare, in capsam infra praebitam scribe.\n(Vide [$1 paginam auxilii] si plura cognoscere vis.)\nSi hic es propter errorem, solum '''Retrorsum''' in navigatro tuo preme.",
"anontalkpagetext": "----\nHaec est pagina disputationis usoris anonymi vel potius loci IP cuiusdam. \nMemento locos IP interdum mutari et ab usoribus vel pluribus adhiberi.\nSi ipse sis usor ignotus et ex improviso invenias querulas aliquas, nomen tibi [[Special:UserLogin/signup|impone]] vel [[Special:UserLogin|nomen tuum da]], ut decetero confusionem effugias!",
- "noarticletext": "Hac in pagina non sunt litterae.\nPotes [[Special:Search/{{PAGENAME}}|hanc rem in aliis paginis quaerere]],\n[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} acta huius paginae videre]\naut [{{fullurl:{{FULLPAGENAME}}|action=edit}} hanc paginam creare] .",
+ "noarticletext": "Hac in pagina non sunt litterae.\nLicet [[Special:Search/{{PAGENAME}}|hanc rem in aliis paginis quaerere]] vel\n[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} acta huius paginae inspicere]\nvel [{{fullurl:{{FULLPAGENAME}}|action=edit}} hanc paginam creare] .",
"noarticletext-nopermission": "Hac in pagina non sunt litterae.\nPotes [[Special:Search/{{PAGENAME}}|hanc rem in aliis paginis quaerere]] aut [{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} acta huius paginae videre], sed tibi non licet hanc paginam creare.",
"userpage-userdoesnotexist": "Usor \"$1 \" non est. Visne re vera hanc paginam creare vel recensere?",
"updated": "(Novata)",
@@ -543,7 +551,7 @@
"historysize": "({{PLURAL:$1|1 octetus|$1 octeti}})",
"historyempty": "(vacua)",
"history-feed-title": "Historia",
- "history-feed-description": "Historia recensionum huius paginae",
+ "history-feed-description": "Historia redactionum huius paginae",
"history-feed-item-nocomment": "$1 ad $2",
"rev-deleted-comment": "(summarium celatum)",
"rev-deleted-user": "(nomen usoris celatum est)",
@@ -961,11 +969,11 @@
"shared-repo-name-wikimediacommons": "Vicimedia Communia",
"filerevert": "Revertere $1",
"filerevert-legend": "Reverti fasciculum",
- "filerevert-intro": "Reversurus es '''[[Media:$1|$1]]''' ad [redactionem $4, sicut $2, $3 facta erat].",
+ "filerevert-intro": "Reversurus es '''[[Media:$1|$1]]''' ad [$4 redactionem quae $2, $3 facta erat].",
"filerevert-comment": "Causa:",
"filerevert-defaultcomment": "Reverti ad redactionem die $1, hora $2 ($3) factam",
"filerevert-submit": "Revertere",
- "filerevert-success": "'''[[Media:$1|$1]]''' reversum est ad redactionem [$4, quae $2, $3 facta erat].",
+ "filerevert-success": "'''[[Media:$1|$1]]''' reversum est ad [$4 redactionem quae $2, $3 facta erat].",
"filedelete": "Delere $1",
"filedelete-legend": "Fasciculum delere",
"filedelete-intro": "Deles fasciculum '''[[Media:$1|$1]]''' una cum tota eius historia.",
@@ -1066,6 +1074,7 @@
"suppress": "Censura",
"booksources": "Librorum fontes",
"booksources-search-legend": "Fontes impressas quaerere",
+ "booksources-search": "Quaerere",
"specialloguserlabel": "Usor:",
"speciallogtitlelabel": "Destinatum (titulus aut usor):",
"log": "Acta",
@@ -1087,8 +1096,6 @@
"cachedspecial-refresh-now": "Recentissima vide.",
"categories": "Categoriae",
"categoriespagetext": "{{PLURAL:$1|Categoria subter paginas vel fasciculos continet.|Categoriae subter paginas vel fasciculos continent.}}\n[[Special:UnusedCategories|Categoriae non in usu]] non monstrantur.\nVide etiam [[Special:WantedCategories|categorias desideratas]].",
- "special-categories-sort-count": "ordinare secundum numerum",
- "special-categories-sort-abc": "ordinare secundum abecedarium",
"deletedcontributions": "Conlationes usoris deletae",
"deletedcontributions-title": "Conlationes usoris deletae",
"sp-deletedcontributions-contribs": "conlationes",
@@ -1484,9 +1491,9 @@
"tooltip-ca-move": "Movere hanc paginam",
"tooltip-ca-watch": "Hanc paginam observandam habere",
"tooltip-ca-unwatch": "Hanc paginam non iam observandam habere",
- "tooltip-search": "Quaerere aliquid in {{grammar:ablative|{{SITENAME}}}}",
- "tooltip-search-go": "I ad paginam cum hoc titulo exacto, si est",
- "tooltip-search-fulltext": "Hunc textum in paginis quaerere",
+ "tooltip-search": "Aliquid in {{grammar:ablative|{{SITENAME}}}} quaerere",
+ "tooltip-search-go": "Si modo sit, paginam huius ipsius tituli invisere",
+ "tooltip-search-fulltext": "Hunc textum in paginis requirere",
"tooltip-p-logo": "Ire ad paginam primam",
"tooltip-n-mainpage": "Ire ad paginam primam",
"tooltip-n-mainpage-description": "Ire ad paginam primam",
@@ -1507,7 +1514,7 @@
"tooltip-t-permalink": "Nexus perpetuus ad hanc paginae redactionem",
"tooltip-ca-nstab-main": "Videre paginam",
"tooltip-ca-nstab-user": "Videre paginam usoris",
- "tooltip-ca-nstab-special": "Haec est pagina specialis. Pagina ipsa recenseri non potest.",
+ "tooltip-ca-nstab-special": "Ea est pagina specialis, quin recenseatur.",
"tooltip-ca-nstab-project": "Videre paginam inceptorum",
"tooltip-ca-nstab-image": "Videre paginam fasciculi",
"tooltip-ca-nstab-mediawiki": "Videre nuntium systematis",
@@ -1598,8 +1605,8 @@
"exif-artist": "Auctor",
"exif-exifversion": "Redactio modi \"Exif\"",
"exif-colorspace": "Spatium colorimetricum",
- "exif-pixelydimension": "Amplitudo imaginis",
- "exif-pixelxdimension": "Altitudo imaginis",
+ "exif-pixelxdimension": "Amplitudo imaginis",
+ "exif-pixelydimension": "Altitudo imaginis",
"exif-usercomment": "Adnota usoris",
"exif-relatedsoundfile": "Fasciculus soni relatus",
"exif-datetimeoriginal": "Dies et tempus creationis",
@@ -1809,7 +1816,6 @@
"version-license": "Permissio",
"version-software-product": "Productum",
"version-software-version": "Versio",
- "fileduplicatesearch-legend": "Duplicatum quaerere",
"fileduplicatesearch-filename": "Fasciculi nomen:",
"fileduplicatesearch-submit": "Quaerere",
"fileduplicatesearch-info": "$1 Ã $2 elementa imaginalia Magnitudo fasciculi: $3 Typus MIME: $4",
diff --git a/languages/i18n/lad.json b/languages/i18n/lad.json
index 59cdf77d9c..f38737bfa8 100644
--- a/languages/i18n/lad.json
+++ b/languages/i18n/lad.json
@@ -128,13 +128,13 @@
"category-media-header": "Dosyas de multimedya en la kategorÃa \"$1\"",
"category-empty": "''Esta kategorÃa oy dÃa, no contiene ni hojas ni dosyas de multimedya''",
"hidden-categories": "{{PLURAL:$1|KategorÃa escondida|KategorÃas escondidas}}",
- "hidden-category-category": "KatÄggorÃas escondidas",
+ "hidden-category-category": "KategorÃas escondidas",
"category-subcat-count": "{{PLURAL:$2|Esta kategorÃa contiene sólo la su-kategorÃa venidera.|Esta kategorÃa contiene {{PLURAL:$1|la su-kategorÃa venidera|$1 su-kategorÃas venideras}}, de un total de $2 su-kategorÃas.}}",
- "category-subcat-count-limited": "Esta katÄggorÃa contiene {{PLURAL:$1|la baxo-katÄggorÃa venidera|$1 baxo-katÄggorÃas venideras}}.",
+ "category-subcat-count-limited": "Esta kategorÃa contiene {{PLURAL:$1|la baxo-kategorÃa venidera|$1 baxo-kategorÃas venideras}}.",
"category-article-count": "{{PLURAL:$2|Esta kategorÃa contiene sólo la hoja venidera.|{{PLURAL:$1|La hoja venidera apartiene|Las $1 hojas venideras apartienen}} a esta kategorÃa, de un total de $2.}}",
- "category-article-count-limited": "{{PLURAL:$1|La hoja venidera apartiene|Las $1 hojas venideras apartienen}} a esta katÄggorÃa.",
- "category-file-count": "{{PLURAL:$2|Esta katÄggorÃa contiene sólo la dosya venidera.|{{PLURAL:$1|La dosya venidera apartiene|Las $1 dosyas venideras apartienen}} a esta katÄggorÃa, de un total de $2.}}",
- "category-file-count-limited": "{{PLURAL:$1|La dosya venidera apartiene|Las $1 dosyas venideras apartienen}} a esta katÄggorÃa.",
+ "category-article-count-limited": "{{PLURAL:$1|La hoja venidera apartiene|Las $1 hojas venideras apartienen}} a esta kategorÃa.",
+ "category-file-count": "{{PLURAL:$2|Esta kategorÃa contiene sólo la dosya venidera.|{{PLURAL:$1|La dosya venidera apartiene|Las $1 dosyas venideras apartienen}} a esta kategorÃa, de un total de $2.}}",
+ "category-file-count-limited": "{{PLURAL:$1|La dosya venidera apartiene|Las $1 dosyas venideras apartienen}} a esta kategorÃa.",
"listingcontinuesabbrev": "cont.",
"index-category": "Hojas arregladas en lista",
"noindex-category": "Hojas no arregladas en lista",
@@ -761,8 +761,6 @@
"allinnamespace": "Todas las pajinas (espasio $1)",
"allpagessubmit": "Ir",
"categories": "KategorÃas",
- "special-categories-sort-count": "ordenar por número",
- "special-categories-sort-abc": "ordenar alefbeticamente",
"linksearch": "Bushkida de enlases eksternos",
"linksearch-ok": "Bushkar",
"linksearch-line": "Atamiento para $1 en la hoja $2",
@@ -800,7 +798,6 @@
"unwatch": "dexa de cudiar",
"watchlist-details": "{{PLURAL:$1|$1 hoja|$1 hojas}} en tu lista de escogidas, sin contar las de la diskussión.",
"wlshowlast": "Ver los trocamientos de las últimas $1 oras, $2 dÃas",
- "watchlistall2": "todos",
"watchlist-options": "Opciones de la lista de escogidas",
"watching": "Cudiando...",
"unwatching": "Dexando de cudiar...",
diff --git a/languages/i18n/lb.json b/languages/i18n/lb.json
index 7a623c558e..9e1c92aae0 100644
--- a/languages/i18n/lb.json
+++ b/languages/i18n/lb.json
@@ -15,7 +15,8 @@
"VT98Fan",
"Zinneke",
"××¢×¨× ×¨××× ××ר×",
- "ìë¼"
+ "ìë¼",
+ "Nemo bis"
]
},
"tog-underline": "Linken ënnersträichen:",
@@ -470,7 +471,7 @@
"noemail": "De Benotzer \"$1\" huet keng E-Mail-Adress uginn.",
"noemailcreate": "Dir musst eng valabel E-Mail-Adress uginn",
"passwordsent": "Een neit Passwuert gouf un déi fir de Benotzer \"$1\" gespäichert E-Mailadress geschéckt.\nMellt Iech w.e.g. domat un, soubal Dir et kritt hutt.",
- "blocked-mailpassword": "Déi vun Iech benotzten IP-Adress ass fir d'Ãnnere vu Säite gespaart. Fir Mëssbrauch ze verhënneren, gouf d'Méiglechkeet fir een neit Passwuert unzefroen och gespaart.",
+ "blocked-mailpassword": "Ãr IP-Adress ass fir d'Ãnnere vu Säite gespaart. Fir Mëssbrauch ze verhënneren, gouf d'Méiglechkeet fir een neit Passwuert vun dëser IP-Adress aus unzefroen och gespaart.",
"eauthentsent": "Eng Confirmatiouns-E-Mail gouf un déi Adress geschéckt déi Dir uginn hutt.\n\nIer iergendeng E-Mail vun anere Benotzer op dee Kont geschéckt ka ginn, musst Dir als éischt d'Instructiounen an der Confirmatiouns-E-Mail befollegen, fir ze bestätegen datt de Kont wierklech Ãren eegenen ass.",
"throttled-mailpassword": "An {{PLURAL:$1|der leschter Stonn|de leschte(n) $1 Stonnen}} eng E-Mail verschéckt fir d'Passwuert zréckzesetzen.\nFir de Mëssbrauch vun dëser Funktioun ze verhënneren kann nëmmen all {{PLURAL:$1|Stonn|$1 Stonnen}} sou eng Mail verschéckt ginn.",
"mailerror": "Feeler beim Schécke vun der E-Mail: $1",
@@ -487,7 +488,7 @@
"createaccount-title": "Opmaache vun engem Benotzerkont op {{SITENAME}}",
"createaccount-text": "Et gouf e Benotzerkont \"$2\" fir Iech op {{SITENAME}} ($4) ugeluecht mat dem Passwuert \"$3\".\nDir sollt Iech aloggen an Ãert Passwuert elo änneren.\n\nWann dëse Benotzerkont ongewollt ugeluecht gouf, kënnt Dir dës Noriicht einfach ignoréieren.",
"login-throttled": "Dir hutt zevill dacks versicht Iech anzeloggen.\nWaart w.e.g. $1 ier Dir et nach eng Kéier probéiert.",
- "login-abort-generic": "Dir sidd net ageloggt - Aloggen ofgebrach",
+ "login-abort-generic": "Ãert Aloggen huet net funktionéiert - Ofgebrach",
"login-migrated-generic": "Ãre Benotzerkont gouf migréiert an Ãre Benotzernumm gëtt et net méi op dëser Wiki.",
"loginlanguagelabel": "Sprooch: $1",
"suspicious-userlogout": "Ãr Ufro fir Iech auszeloggen gouf refuséiert well et sou ausgesäit wéi wa se vun engem futtise Browser oder Proxy-Tëschespäicher kënnt.",
@@ -629,7 +630,7 @@
"newarticle": "(Nei)",
"newarticletext": "Dir hutt op e Link vun enger Säit geklickt, déi et nach net gëtt. Fir déi Säit unzeleeën, gitt w.e.g. Ãren Text an déi Këscht hei drënner an (kuckt d'[$1 Hëllef Säit] fir méi Informatiounen). Wann Dir duerch een Iertum heihi komm sidd, da klickt einfach op de Knäppchen '''Zréck''' vun Ãrem Browser.",
"anontalkpagetext": "---- ''Dëst ass d'Diskussiounssäit fir en anonyme Benotzer deen nach kee Kont opgemaach huet oder en net benotzt. Dowéinst musse mir d'IP Adress benotzen, fir de Benotzer z'identifizéieren.\nSou eng IP Adress ka vun e puer Benotzer gedeelt ginn.\nWann Dir en anonyme Benotzer sidd an Dir irrelevant Bemierkunge krut, [[Special:UserLogin/signup|maacht w.e.g. e Kont op]] oder [[Special:UserLogin|loggt Iech an]], fir weider Verwiesselunge mat aneren anonyme Benotzer ze verhënneren.''",
- "noarticletext": "Dës Säit huet momentan keen Text.\nDir kënnt op anere Säiten no [[Special:Search/{{PAGENAME}}|dësem Säitentitel sichen]],\n[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} an den entspriechende Logbicher nokucken] oder [{{fullurl:{{FULLPAGENAME}}|action=edit}} sou eng Säit uleeën] .",
+ "noarticletext": "Dës Säit huet elo keen Text.\nDir kënnt op anere Säiten no [[Special:Search/{{PAGENAME}}|dësem Säitentitel sichen]],\n[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} an den entspriechende Logbicher nokucken] oder [{{fullurl:{{FULLPAGENAME}}|action=edit}} dës Säit uleeën] .",
"noarticletext-nopermission": "Elo ass keen Text op dëser Säit.\nDir kënnt op anere Säiten [[Special:Search/{{PAGENAME}}|no dësem Säitentitel sichen]], oder [{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} an de Logbicher sichen] , mä Dir hutt net déi néideg Rechter fir dës Säit unzeleeën.",
"missing-revision": "D'Versioun #$1 vun der Säit mam Numm \"{{FULLPAGENAME}}\" gëtt et net.\n\nDat geschitt normalerweis wann Dir op e vereelste Link vun enger Versioun vun enger Säit klickt déi geläscht ginn ass.\nDetailer fannt Dir am [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} Logbuch vum Läschen].",
"userpage-userdoesnotexist": "De Benotzerkont \"$1 \" ass net registréiert.\nIwwerpréift w.e.g. op Dir dës Säit uleeën/ännere wëllt.",
@@ -999,7 +1000,7 @@
"gender-unknown": "Wann Dir ernimmt gitt da benotzt d'Software do wou et méiglech ass geschlechtsneutral Wierder",
"gender-male": "Hien ännert Wikisäiten",
"gender-female": "Si ännert Wikisäiten",
- "prefs-help-gender": "Fakultativ:\nD'Software benotzt seng Wäerter fir Iech unzeschwätzen a fir vun Iech vis-a-vis vun Aneren grammatesch ''Gender-korrekt'' ze schwätzen. \n\nDës Informatioun ass ëffentlech.",
+ "prefs-help-gender": "Fakultativ:\nD'Software benotzt seng Wäerter fir Iech unzerieden a fir vun Iech vis-a-vis vun Anere grammatesch ''Gender-korrekt'' ze sinn. \n\nDës Informatioun ass ëffentlech.",
"email": "E-Mail",
"prefs-help-realname": "De richtegen Numm ass fakultativ.\nWann en ugi gouf, gëtt e benotzt fir Iech Ãr Kontributiounen zouzeuerdnen.",
"prefs-help-email": "D'E-Mailadress ass fakultativ, awer si gëtt gebraucht fir Iech Ãert Passwuert ze mailen, wann Dir et géift vergiessen.",
@@ -1144,14 +1145,14 @@
"grant-createaccount": "Benotzerkonten opmaachen",
"grant-createeditmovepage": "Säiten uleeën, änneren a réckelen",
"grant-delete": "Säiten, Versiounen a Rubriken a Logbicher läschen",
- "grant-editinterface": "MediaWiki-Nummraum a Benotzer CSS/JS änneren",
- "grant-editmycssjs": "Ãren eegene Benotzer CSS/JavaScript änneren",
+ "grant-editinterface": "MediaWiki-Nummraum a Benotzer CSS/JavaScript änneren",
+ "grant-editmycssjs": "Ãre Benotzer CSS/JavaScript änneren",
"grant-editmyoptions": "Ãnnert Ãr Benotzerastellungen",
"grant-editmywatchlist": "Ãnnert Ãr Iwwerwaachungslëscht",
"grant-editpage": "Säiten déi et gëtt änneren",
"grant-editprotected": "Gespaart Säiten änneren",
"grant-oversight": "Benotzer verstoppen a Versioune läschen",
- "grant-patrol": "Ãnnerungen op Säiten iwwerwaachen",
+ "grant-patrol": "Ãnnerungen op Säiten kontrolléieren",
"grant-protect": "Säite spären an entspären",
"grant-rollback": "Ãnnerungen op Säiten zrécksetzen",
"grant-sendemail": "Anere Benotzer E-Maile schécken",
@@ -1271,9 +1272,9 @@
"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-added-to-category-bundled": "[[:$1]] an d'Kategorie dobäigesat, [[Special:WhatLinksHere/$1|dës Säit ass an aner Säiten agebonn]]",
"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",
+ "recentchanges-page-removed-from-category-bundled": "[[:$1]] aus der Kategorie erausgeholl, [[Special:WhatLinksHere/$1|dës Säit ass an aner Säiten agebonn]]",
"autochange-username": "Automatesch MediaWiki-Ãnnerung",
"upload": "Eroplueden",
"uploadbtn": "Fichier eroplueden",
@@ -1424,6 +1425,7 @@
"uploadstash-badtoken": "D'Ausféiere vun dëser Aktioun huet net funktionéiert, vläicht well d'Informatiounen iwwer Ãr Rechter ofgelaf sinn. Probéiert et w.e.g. nach emol.",
"uploadstash-errclear": "D'Läsche vun de Fichieren huet net funktionéiert.",
"uploadstash-refresh": "Lëscht vun de Fichieren aktualiséieren",
+ "uploadstash-thumbnail": "Miniaturbild weisen",
"img-auth-accessdenied": "Zougang refuséiert",
"img-auth-nopathinfo": "PATH_INFO feelt.\nÃre Server ass net agestallt fir déi Informatioun weiderzeginn.\nEt kann u CGI leien an datt imag_auth net ënnerstëtzt gëtt.\nKuckt https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Image_Authorization",
"img-auth-notindir": "De gefrote Pad ass net am Upload-Repertoire agestallt.",
@@ -1723,8 +1725,6 @@
"categories-submit": "Weisen",
"categoriespagetext": "Dës {{PLURAL:$1|Kategorie huet|Kategorien hu}} Säiten oder Medien.\n[[Special:UnusedCategories|Netbenotzt Kategorië]] ginn hei net gewisen.\nKuckt och [[Special:WantedCategories|Gewënscht Kategorien]].",
"categoriesfrom": "Weis Kategorien ugefaange bei:",
- "special-categories-sort-count": "no der Zuel zortéieren",
- "special-categories-sort-abc": "alphabetesch zortéieren",
"deletedcontributions": "Geläscht Kontributiounen",
"deletedcontributions-title": "Geläscht Kontributiounen",
"sp-deletedcontributions-contribs": "Kontributiounen",
@@ -1970,7 +1970,7 @@
"viewdeletedpage": "Geläscht Säite weisen",
"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}}'''''.",
+ "undeleteextrahelp": "Fir d'Säit komplett mat alle Versiounen ze restauréieren, markéiert keng vun den eenzelne Casen a klickt op '''''{{int:undeletebtn}}'''''.\nFir nëmmen eng bestëmmt 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 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.",
@@ -2087,6 +2087,7 @@
"ipb-unblock": "Spär vun enger IP-Adress oder engem Benotzer ophiewen",
"ipb-blocklist": "Kuckt aktuell Spären",
"ipb-blocklist-contribs": "Kontributioune vum {{GENDER:$1|$1}}",
+ "ipb-blocklist-duration-left": "$1 iwwreg",
"unblockip": "Spär vum Benotzer ophiewen",
"unblockiptext": "Benotzt dëse Formulaire fir enger IP-Adress oder engem Benotzer seng Spär opzehiewen.",
"ipusubmit": "Des Spär ophiewen",
@@ -2325,11 +2326,7 @@
"import-logentry-upload-detail": "$1 {{PLURAL:$1|Versioun|Versiounen}} importéiert",
"import-logentry-interwiki-detail": "$1 {{PLURAL:$1|Versioun|Versiounen}} importéiert vu(n) $2",
"javascripttest": "JavaScript-Test",
- "javascripttest-pagetext-noframework": "Dës Säit ass fir Java-Script-Tester reservéiert.",
- "javascripttest-pagetext-unknownframework": "Onbekannten Test-Framework \"$1\".",
"javascripttest-pagetext-unknownaction": "Onbekannt Aktioun \"$1\".",
- "javascripttest-pagetext-frameworks": "Sicht w.e.g. eng vun dësen Test-Strukturen eraus: $1",
- "javascripttest-pagetext-skins": "Sicht en Interface (skin) eraus fir d'Tester ze maachen:",
"javascripttest-qunit-intro": "Kuckt d'[$1 Dokumentatioun vun den Tester] op mediawiki.org",
"tooltip-pt-userpage": "{{GENDER:|Ãr Benotzer}}säit",
"tooltip-pt-anonuserpage": "Benotzersäit vun der IP-Adress vun där aus Dir den Ament Ãnnerunge maachtt",
@@ -2581,8 +2578,8 @@
"exif-colorspace": "Faarfraum",
"exif-componentsconfiguration": "Bedeitung vun eenzelne Komponenten",
"exif-compressedbitsperpixel": "Kompriméiert Bite pro Pixel",
- "exif-pixelydimension": "Breet vum Bild",
- "exif-pixelxdimension": "Héicht vum Bild",
+ "exif-pixelxdimension": "Breet vum Bild",
+ "exif-pixelydimension": "Héicht vum Bild",
"exif-usercomment": "Bemierkunge vum Benotzer",
"exif-relatedsoundfile": "Tounfichier deen dozou gehéiert",
"exif-datetimeoriginal": "Erfaassungszäitpunkt",
@@ -2900,6 +2897,7 @@
"confirmemail_body_set": "Iergendeen, wahrscheinlech Dir selwer, vun der IP-Adress $1,\nhuet d'E-Mail-Adress vum Benotzerkont \"$2\" op dës Adress op {{SITENAME}} geännert.\n\nFir ze confirméieren datt dëse Benotzerkont Iech wierklech gehéiert a fir d'E-Mailfonctiounen op {{SITENAME}} ze reaktivéieren, maacht dës Link an Ãrem Browser op:\n\n$3\n\nWann de Benotzerkont Iech *net* gehéiert, da klickt op dëse Link fir d'Confirmatioun vun der E-Mail-Adress auszeschalten:\n\n$5\n\nDëse Confirmatiounscode leeft den $4 of.",
"confirmemail_invalidated": "Confirmatioun vun der E-Mail-Adress annulléiert",
"invalidateemail": "Annulléier d'E-Mailconfirmation",
+ "notificationemail_subject_removed": "D'E-Mail-Adress déi op {{SITENAME}} enregistréiert war gouf ewechgeholl",
"scarytranscludedisabled": "[Interwiki-Abannung ass ausgeschalt]",
"scarytranscludefailed": "[D'Siche no der Schabloun fir $1 huet net funktionéiert]",
"scarytranscludefailed-httpstatus": "[D'Opruffe vun der Schabloun $1: HTTP $2 huet net funktionéiert]",
@@ -2953,7 +2951,7 @@
"watchlistedit-raw-done": "Ãr Iwwerwaachungslëscht gouf aktualiséiert.",
"watchlistedit-raw-added": "{{PLURAL:$1|1 Säit gouf|$1 Säite goufen}} derbäigesat:",
"watchlistedit-raw-removed": "{{PLURAL:$1|1 Säit gouf|$1 Säite goufen}} erausgeholl:",
- "watchlistedit-clear-title": "Eidelgemaachten Iwwerwaachungslëscht",
+ "watchlistedit-clear-title": "Iwwerwaachungslëscht eidelmaachen",
"watchlistedit-clear-legend": "Iwwerwaachungslëscht eidelmaachen",
"watchlistedit-clear-explain": "All D'Säite gi vun Ãrer Iwwerwaachungslëscht erofgeholl",
"watchlistedit-clear-titles": "Säiten:",
@@ -3000,7 +2998,7 @@
"version-poweredby-others": "anerer",
"version-poweredby-translators": "translatewiki.net Iwwersetzer",
"version-credits-summary": "Mir soen dëse Persoune 'Merci' fir hir Mataarbecht u [[Special:Version|MediaWiki]].",
- "version-license-info": "MediaWiki ass fräi Software; Dir kënnt se weiderginn an/oder s'änneren ënner de Bedingunge vun der GNU-General Public License sou wéi se vun der Free Softare Foundation publizéiert ass; entweder ënner der Versioun 2 vun der Lizenz, oder (no Ãrem Choix) enger spéiderer Versioun.\n\nMediaWiki gëtt verdeelt an der Hoffnung datt se nëtzlech ass, awer OUNI IERGENDENG GARANTIE; ouni eng implizit Garantie vu Commercialisatioun oder Eegnung fir e bestëmmte Gebrauch. Kuckt d'GPL General Public License fir méi Informatiounen.\n\nDir misst eng [{{SERVER}}{{SCRIPTPATH}}/COPYING Kopie vun der GNU General Public License] mat dësem Programm kritt hunn; wann net da schreift der Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA oder [//www.gnu.org/licenses/old-licenses/gpl-2.0.html liest se online].",
+ "version-license-info": "MediaWiki ass eng fräi Software. Dir kënnt se weiderginn an/oder ënner de Bedingungen vun der GNU-General Public License, änneren, sou wéi se vun der Free Software Foundation publizéiert ass; entweder ënner der Versioun 2 vun der Lizenz, oder (no Ãrem Choix) enger spéiderer Versioun.\n\nMediaWiki gëtt verdeelt, an der Hoffnung datt se nëtzlech ass, awer OUNI IERGENDENG GARANTIE an ouni eng implizit Garantie vu Commercialisatioun oder Eegnung fir e bestëmmte Gebrauch. Kuckt d'GPU General Public License fir méi Informatiounen.\n\nDir misst eng [{{SERVER}}{{SCRIPTPATH}}/COPYING Kopie vun der GNU General Public License] mat dësem Programm kritt hunn. Wann net da schreift der Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA oder [http://www.gnu.org/licenses/old-licenses/gpl-2.0.html liest se online].",
"version-software": "Installéiert Software",
"version-software-product": "Produkt",
"version-software-version": "Versioun",
@@ -3014,7 +3012,6 @@
"version-libraries-description": "Beschreiwung",
"version-libraries-authors": "Auteuren",
"redirect": "Viruleedung duerch e Fichier, e Benotzer, eng Säit, eng Versiouns-ID oder eng Logbuch-ID",
- "redirect-legend": "Viruleedung op ee Fichier oder eng Säit",
"redirect-summary": "Dës Spezialsäit ass eng Viruleedung op e Fichier (Fichiersnumm uginn), eng Säit (Versiounsnummer uginn), eng Benotzersäit (numeresch Benotzeridentifikatiounsnummer uginn) oder eng Entrée an engem Logbuch (vum Logbuch mat der ID).\nGebrauch:\n[[{{#Special:Redirect}}/file/Example.jpg]],\n[[{{#Special:Redirect}}/page/64308]],\n[[{{#Special:Redirect}}/revision/328429]],\n[[{{#Special:Redirect}}/user/101]], oder\n[[{{#Special:Redirect}}/logid/186]].",
"redirect-submit": "Lass",
"redirect-lookup": "Nosichen:",
@@ -3026,7 +3023,6 @@
"redirect-not-exists": "Wäert net fonnt",
"fileduplicatesearch": "No duebele Fichiere sichen",
"fileduplicatesearch-summary": "Sichen no Doublone vu Fichieren op der Basis vun hirem ''Hash-Wäert''.",
- "fileduplicatesearch-legend": "No engem Doublon sichen",
"fileduplicatesearch-filename": "Numm vum Fichier:",
"fileduplicatesearch-submit": "Sichen",
"fileduplicatesearch-info": "$1 à $2 Pixel Gréisst vum Fichier: $3 MIME Typ: $4",
@@ -3188,7 +3184,9 @@
"logentry-newusers-create2": "De Benotzerkont $3 gouf vum $1 {{GENDER:$2|ugeluecht}}",
"logentry-newusers-byemail": "De Benotzerkont $3 gouf vum $1 {{GENDER:$2|ugeluecht}} an d'Passwuert gouf per E-Mail geschéckt.",
"logentry-newusers-autocreate": "De Benotzerkont $1 gouf automatesch {{GENDER:$2|ugeluecht}}",
- "logentry-rights-rights": "$1 {{GENDER:$2|huet}} d'Gruppen zou deenen de Benotzer $3 gehéiert vu(n) $4 op $5 geännert",
+ "logentry-protect-protect": "$1 {{GENDER:$2|huet}} d'Säit $3 $4 gespaart",
+ "logentry-protect-protect-cascade": "$1 {{GENDER:$2|huet}} d'Säit $3 $4 gespaart [Kaskadespär]",
+ "logentry-rights-rights": "$1 {{GENDER:$2|huet}} d'Gruppen zou deenen {{GENDER:$6|d'|de}} $3 gehéiert vu(n) $4 op $5 geännert",
"logentry-rights-rights-legacy": "$1 {{GENDER:$2|huet}} d'Gruppen zou deenen de Benotzer $3 gehéiert geännert",
"logentry-rights-autopromote": "De Benotzer $1 {{GENDER:$2|krut}} d'Benotzerrechter automatesch vu(n) $4 op $5 geännert",
"logentry-upload-upload": "$1 huet $3 {{GENDER:$2|eropgelueden}}",
@@ -3331,6 +3329,7 @@
"special-characters-group-ipa": "IPA",
"special-characters-group-symbols": "Symboler",
"special-characters-group-greek": "Griichesch",
+ "special-characters-group-greekextended": "Griichesch erweidert",
"special-characters-group-cyrillic": "Kyrillisch",
"special-characters-group-arabic": "Arabesch",
"special-characters-group-arabicextended": "Arabesch, erweidert",
@@ -3353,5 +3352,23 @@
"mw-widgets-titleinput-description-redirect": "viruleeden op $1",
"api-error-blacklisted": "Sicht w.e.g. en aneren Titel, dee méi iwwer de Sujet ausseet.",
"sessionprovider-generic": "$1-Sessiounen",
- "randomrootpage": "Zoufalls-Stammsäit"
+ "randomrootpage": "Zoufalls-Stammsäit",
+ "log-action-filter-block": "Typ vun der Spär:",
+ "log-action-filter-protect": "Typ vu Spär",
+ "log-action-filter-all": "All",
+ "log-action-filter-block-block": "Spären",
+ "log-action-filter-block-reblock": "Ãnnere vun enger Spär",
+ "log-action-filter-block-unblock": "Spär ophiewen",
+ "log-action-filter-delete-delete": "Säite läschen",
+ "log-action-filter-import-interwiki": "Transwiki-Import",
+ "log-action-filter-move-move_redir": "Réckele mat Iwwerschreiwe vu Viruleedungen",
+ "log-action-filter-patrol-patrol": "Manuell Kontroll",
+ "log-action-filter-patrol-autopatrol": "Automatesch Kontroll",
+ "log-action-filter-protect-protect": "Spär",
+ "log-action-filter-protect-modify": "Spär-pÃnnerung",
+ "log-action-filter-protect-move_prot": "Geréckelt Spär",
+ "log-action-filter-rights-rights": "Manuell Ãnnerung",
+ "log-action-filter-rights-autopromote": "Automatesch Ãnnerung",
+ "log-action-filter-upload-upload": "Neien Upload",
+ "log-action-filter-upload-overwrite": "Nees eroplueden"
}
diff --git a/languages/i18n/li.json b/languages/i18n/li.json
index 46849034da..62e24b218d 100644
--- a/languages/i18n/li.json
+++ b/languages/i18n/li.json
@@ -1367,8 +1367,6 @@
"categories": "Categorieë",
"categoriespagetext": "De volgende {{PLURAL:$1|categorie bevat|categorieë bevatte}} pazjena's of mediabestenj.\n[[Special:UnusedCategories|Ãngebroekde categorieë]] waere hie neet weergegaeve.\nZuuch ouch [[Special:WantedCategories|neet-bestaondje categorieë mit verwiezinge]].",
"categoriesfrom": "Categorië waergaeve vanaaf:",
- "special-categories-sort-count": "op aantal sortere",
- "special-categories-sort-abc": "alfabetisch sortere",
"deletedcontributions": "Eweggesjafde gebroekersbiedrages",
"deletedcontributions-title": "Eweggesjafde gebroekersbiedrages",
"sp-deletedcontributions-contribs": "biedraag",
@@ -1887,10 +1885,6 @@
"import-logentry-upload-detail": "$1 {{PLURAL:$1|versie|versies}}",
"import-logentry-interwiki-detail": "$1 {{PLURAL:$1|versie|versies}} van $2",
"javascripttest": "Tes JavaScript",
- "javascripttest-pagetext-noframework": "Dees pagina is gerizzerveerd veur 't oetveure van JavaScriptteste.",
- "javascripttest-pagetext-unknownframework": "Ãnbekèndje testframework \"$1\".",
- "javascripttest-pagetext-frameworks": "Kees ein vanne volgende tesframeworks: $1",
- "javascripttest-pagetext-skins": "Kees 'n oeterlik óm de teste op te laote loupe:",
"javascripttest-qunit-intro": "Zuuch de [$1 tesdocumentatie] op mediawiki.org.",
"tooltip-pt-userpage": "Dien gebroekerspagina",
"tooltip-pt-anonuserpage": "De gebroekerspazjena veur dit IP adres",
@@ -2073,8 +2067,8 @@
"exif-colorspace": "Kläörruumde",
"exif-componentsconfiguration": "Beteikenis van edere componènt",
"exif-compressedbitsperpixel": "Cómpressiemeneer bie dit plaetje",
- "exif-pixelydimension": "Aafbeildingsbrèdje",
- "exif-pixelxdimension": "Aafbeildingsheugdje",
+ "exif-pixelxdimension": "Aafbeildingsbrèdje",
+ "exif-pixelydimension": "Aafbeildingsheugdje",
"exif-usercomment": "Opmerkinge",
"exif-relatedsoundfile": "Biebeheurendj audiobestandj",
"exif-datetimeoriginal": "Datum en momint van verwèkking",
@@ -2477,7 +2471,6 @@
"version-entrypoints-header-url": "URL",
"fileduplicatesearch": "Zeuk veur döbbelbestaondje bestenj",
"fileduplicatesearch-summary": "Zeuk veur döbbel bestaondje bestenj op basis van zien hashwaarde.",
- "fileduplicatesearch-legend": "Zeuk veur 'ne döbbele",
"fileduplicatesearch-filename": "Bestandjsnaam:",
"fileduplicatesearch-submit": "Zeuk",
"fileduplicatesearch-info": "$1 Ã $2 pixel Bestandjsgrootte: $3 MIME type: $4",
diff --git a/languages/i18n/lij.json b/languages/i18n/lij.json
index 483b3a757f..9ede18f258 100644
--- a/languages/i18n/lij.json
+++ b/languages/i18n/lij.json
@@ -11,7 +11,8 @@
"ìë¼",
"V6rg",
"C.R.",
- "Macofe"
+ "Macofe",
+ "Nemo bis"
]
},
"tog-underline": "Sottolineâ i collegamenti",
@@ -1079,7 +1080,7 @@
"recentchangeslinked-page": "Nómme da pà gina:",
"recentchangeslinked-to": "Fanni védde sôlo i cangiaménti a-e pà gine colegæ a-a pà gina specificâ",
"recentchanges-page-added-to-category": "[[:$1]] azonto a-a categoria",
- "recentchanges-page-added-to-category-bundled": "[[:$1]] e {{PLURAL:$2|una paggina a l'è azonta|$2 paggine son azonte}} a-a categoria",
+ "recentchanges-page-added-to-category-bundled": "[[:$1]] e [[Special:WhatLinksHere/$1|{{PLURAL:$2|una paggina a l'è azonta|$2 paggine son azonte}}]] a-a categoria",
"recentchanges-page-removed-from-category": "[[:$1]] rimosso da-a categoria",
"recentchanges-page-removed-from-category-bundled": "[[:$1]] e {{PLURAL:$2|una paggina a l'è rimossa|$2 paggine son rimosse}} da-a categoria",
"autochange-username": "Modiffica aotomattica MediaWiki",
diff --git a/languages/i18n/lki.json b/languages/i18n/lki.json
index 35c972437d..ced7c580aa 100644
--- a/languages/i18n/lki.json
+++ b/languages/i18n/lki.json
@@ -1682,8 +1682,6 @@
"categories-submit": "ÙÛشا٠دائÙ",
"categoriespagetext": "{{PLURAL:$1|ردÙÙ|ردÙâÙاÛ}} زÛر Ø¯Ø§Ø±Ø§Û ØµÙØات Ûا پرÙÙدÙâÙاÛÛ {{PLURAL:$1|است|ÙستÙد}}.\n[[Special:UnusedCategories|ردÙâÙØ§Û Ø§Ø³ØªÙادÙâÙشدÙ]] در اÛÙجا ÙÙ
اÛØ´ داد٠ÙشدÙâاÙد.\nÙÙ
ÚÙÛÙ [[Special:WantedCategories|ردÙâÙØ§Û Ù
Ùرد ÙÛاز]] را ببÛÙÛد.",
"categoriesfrom": "ÙÙ
اÛØ´ ردÙâÙا با شرÙع از:",
- "special-categories-sort-count": "Ù
رتب کرد٠بر اساس تعداد",
- "special-categories-sort-abc": "Ù
رتب کرد٠اÙÙباÛÛ",
"deletedcontributions": "Ù
شارکتâÙØ§Û ØØ°ÙâشدÙ",
"deletedcontributions-title": "Ù
شارکتâÙØ§Û ØØ°ÙâشدÙ",
"sp-deletedcontributions-contribs": "Ù
شارکتâÙا",
@@ -2291,11 +2289,7 @@
"import-logentry-upload-detail": "$1 {{PLURAL:$1|ÙسخÙ|Ùسخ٠Ùا}} ÙاردشدÙ",
"import-logentry-interwiki-detail": "$1 {{PLURAL:$1|ÙسخÙ|Ùسخ٠Ùا}} Ùاردشد٠از $2",
"javascripttest": "آزÙ
اÛØ´ جاÙا اسکرÛپت",
- "javascripttest-pagetext-noframework": "اÛ٠صÙØÙ Ø¨Ø±Ø§Û Ø§Ø¬Ø±Ø§Û Ø¢Ø²Ù
اÛØ´âÙØ§Û Ø¬Ø§Ùا اسکرÛپت Ú©Ùار گذاشت٠شدÙâاست.",
- "javascripttest-pagetext-unknownframework": "ÚارÚÙب آزÙ
اÛØ´Û ÙاشÙاخت٠«$1».",
"javascripttest-pagetext-unknownaction": "تابع ÙاشÙاختÙÙ \"$1\".",
- "javascripttest-pagetext-frameworks": "ÙØ·Ùا٠ÛÚ©Û Ø§Ø² ÚارÚÙبâÙØ§Û Ø¢Ø²Ù
اÛØ´ زÛر را اÙتخاب Ú©ÙÛد: $1",
- "javascripttest-pagetext-skins": "Ù¾ÙستÙâØ§Û Ø±Ø§ Ø¨Ø±Ø§Û Ø§Ø¬Ø±Ø§Û Ø¢Ø²Ù
اÛØ´âÙا اÙتخاب Ú©ÙÛد:",
"javascripttest-qunit-intro": "[$1 Ù
ستÙدات آزÙ
اÛØ´] را در mediawiki.org ببÛÙÛد.",
"tooltip-pt-userpage": "Ùةڵگة کاربÛØ±Û ÙؤÙ
Û",
"tooltip-pt-anonuserpage": "صÙØÙÙ Ú©Ø§Ø±Ø¨Ø±Û ÙشاÙÛ Ø¢ÛâÙ¾ÛâØ§Û Ú©Ù Ø¨Ø§ Ø¢Ù ÙÛراÛØ´ Ù
ÛâÚ©ÙÛد",
@@ -2547,8 +2541,8 @@
"exif-colorspace": "ÙØ¶Ø§Û Ø±ÛÙÚ¯Û",
"exif-componentsconfiguration": "Ù
عÙÛ Ùر ÛÚ© از Ù
ؤÙÙÙâÙا",
"exif-compressedbitsperpixel": "ØاÙت ÙشردÙâØ³Ø§Ø²Û ØªØµÙÛر",
- "exif-pixelydimension": "Ù¾ÙÙØ§Û ØªØµÙÛر",
- "exif-pixelxdimension": "بÙÙØ¯Û ØªØµÙÛر",
+ "exif-pixelxdimension": "Ù¾ÙÙØ§Û ØªØµÙÛر",
+ "exif-pixelydimension": "بÙÙØ¯Û ØªØµÙÛر",
"exif-usercomment": "تÙضÛØات کاربر",
"exif-relatedsoundfile": "پرÙÙدÙ٠صÙØªÛ Ù
ربÙØ·",
"exif-datetimeoriginal": "تارÛØ® ٠زÙ
ا٠تÙÙÛد دادÙâÙا",
@@ -2988,7 +2982,6 @@
"version-libraries-description": "تÙضÛØØ©Ù",
"version-libraries-authors": "ÙÙÛسÙدگاÙ",
"redirect": "تغÛÛرÙ
سÛر تÙسط پرÙÙدÙØ Ú©Ø§Ø±Ø¨Ø±Ø ØµÙØÙ Ûا Ø´ÙاسÙÙ ÙسخÙ",
- "redirect-legend": "تغÛÛرÙ
سÛر ب٠ÛÚ© پرÙÙد٠Ûا صÙØÙ",
"redirect-summary": "اÛ٠صÙØÙÙ ÙÛÚ٠ب٠پرÙÙد٠(ÙاÙ
پرÙÙد٠دادÙâشدÙ)Ø ØµÙØÙ (Ø´Ù
ار٠شÙاسÙ٠صÙØÙ Ûا Ø´Ù
ار٠ÙسخÙ٠دادÙâشدÙ) Ûا صÙØÙÙ Ú©Ø§Ø±Ø¨Ø±Û (Ø´ÙاسÙÙ Ø¹Ø¯Ø¯Û Ú©Ø§Ø±Ø¨Ø±Û Ø¯Ø§Ø¯ÙâشدÙ) تغÛÛرÙ
سÛر Ù
ÛâÛابد. طرز استÙادÙ: [[{{#Special:Redirect}}/file/Example.jpg]]Ø \n[[{{#Special:Redirect}}/page/64308]]Ø [[{{#Special:Redirect}}/revision/328429]] Ûا [[{{#Special:Redirect}}/user/101]].",
"redirect-submit": "بÙÚÛ",
"redirect-lookup": "Ù
ÙÙÙÛ Ú©ÙردÙÙ(Ú¯ÛردÛÙ):",
@@ -3000,7 +2993,6 @@
"redirect-not-exists": "Ù
Ùدار Ù¾Ûدا Ùشد",
"fileduplicatesearch": "Ø¬Ø³ØªØ¬Ù Ø¨Ø±Ø§Û Ù¾Ø±ÙÙدÙâÙØ§Û ØªÚ©Ø±Ø§Ø±Û",
"fileduplicatesearch-summary": "Ø¬Ø³ØªØ¬Ù Ø¨Ø±Ø§Û Ù¾Ø±ÙÙدÙâÙØ§Û ØªÚ©Ø±Ø§Ø±Û Ø¨Ø± اساس Ù
Ùدار درÙÙ
âشدÙ٠آÙâÙا صÙرت Ù
ÛâÚ¯Ûرد.",
- "fileduplicatesearch-legend": "جستجÙÛ Ù
Ùارد تکرارÛ",
"fileduplicatesearch-filename": "ÙاÙ
پرÙÙدÙ:",
"fileduplicatesearch-submit": "Ù
ÙÙÙÛ Ú©ÙردÙÙ(Ú¯ÛردÛÙ)",
"fileduplicatesearch-info": "$1 à $2 Ù¾Ûکس٠اÙدازÙ٠پرÙÙدÙ: $3 ÙÙع MIME: $4",
diff --git a/languages/i18n/lrc.json b/languages/i18n/lrc.json
index 1582bb3879..a835f91c28 100644
--- a/languages/i18n/lrc.json
+++ b/languages/i18n/lrc.json
@@ -7,7 +7,8 @@
"Macofe",
"Mjbmr",
"Matma Rex",
- "Lakzon"
+ "Lakzon",
+ "Nemo bis"
]
},
"tog-underline": "ÙÙÙ
پئÛڤأÙد زÛرخأط دار:",
@@ -1665,8 +1666,6 @@
"categories": "دس٠Ùا",
"categoriespagetext": "{{PLURAL:$1|دسÙ|دس٠Ûا}} ÙØ§Ø±Û Ø¯Ø´Ù Ø¬Ø§ÙÛاÛا Ûا بÙÚ¯Ù {{PLURAL:$1|Ùئ|ÙÛئÙ}}.\n[[Special:UnusedCategories|دس٠Ûا Ù٠کار Ùگرت٠بÛÙ]] د اÛÚÙ ÙÛئÙ.\nÙÙ
ÚÙÙ[[Special:WantedCategories|دس٠Ûا ØاستÙÛ ÙÙ]] بÙÛÙÛت.",
"categoriesfrom": "دس٠ÛاÛÛ Ú©Ù Ø¯ شر٠بÛÙÙ Ùش٠بÛÙ:",
- "special-categories-sort-count": "سرجاخÙØ¯Ú¯Ø±Û Ø¯ اساس Ø´Ù
ارشت",
- "special-categories-sort-abc": "سرجاخÙØ¯Ú¯Ø±Û Ø¯ اساس اÙÙبا",
"deletedcontributions": "ÙÙÙ
ÛارÛا پاکسا بÛ٠کارÙر",
"deletedcontributions-title": "ÙÙÙ
ÛارÛا پاک بÛ٠کارÙر",
"sp-deletedcontributions-contribs": "ÙÙÙ
ÛارÛا",
@@ -1893,7 +1892,7 @@
"protect-otherreason-op": "دأÙÛ٠ھأÙÛ",
"protect-dropdown": "*دÙÛÙÛا جااÙØªØ§Ø¦Ù Ø³Û Ù¾Ø± Ù Ù¾ÛÙ
کارÛ\n** خراÙÚ©Ø§Ø±Û Ú¯Ù¾ Ú©ÙÙÙ\n** Ùرز٠ÙÛØ³Û Ú¯Ù¾ Ú©ÙÙÙ\n** جئ٠ÙÛراÛØ´ØªÛ Ù٠درد ÙØÙر\n** بÙÚ¯Ù Ùر٠تÙ
اشاکار دار",
"protect-edit-reasonlist": "دÙÛÙا پر Ù Ù¾ÛÙ
بÛÛÙ ÙÛراÛشت",
- "protect-expiry-options": "Û± ساعأت:1 hour,Û± رÙÙز:1 day,Û± ھأÙتÛ:1 week,Û² ھأÙتÛ:2 weeks,Û± Ù
ا:1 month,Û³ Ù
ا:3 months,Û¶ Ù
ا:6 months,Û± ساÙ:1 year,Ø¨Û ØئسÛ:infinite",
+ "protect-expiry-options": "2 hours:2 hours,1 day:1 day,3 days:3 days,1 week:1 week,2 weeks:2 weeks,1 month:1 month,3 months:3 months,6 months:6 months,1 year:1 year,indefinite:infinite",
"restriction-type": "دسرسÛ:",
"restriction-level": "رÛتراز Ù
ØدÙدÛت:",
"minimum-size": "اÙاز٠کÙ
ترÙÙÙ",
@@ -2011,7 +2010,7 @@
"ipbenableautoblock": "بست٠خÙداÙجÙÙ
Ø¢Ø®Ø±Û ØªÛرÙØ´ÙÙ Ø¢Û Ù¾Û Ù٠کار گرت٠بÛÙ Ù٠دس کارÛار ٠تÛرÙØ´ÙÙÛا ÙÙÛ Ú©Ù Ú©Ù Ø¯ ÙÙÙ Ø³Û ÙÛراÛشت ÙÙ Ø³Ø¹Û Ù
Û Ú©Ù.",
"ipbsubmit": "ÙÙØ§Ú¯Ø±Û Ø§Û Ú©Ø§Ø±Ûار",
"ipbother": "Ùخت ÙÙÛ:",
- "ipboptions": "Û± ساعأت:1 hour,Û± رÙÙز:1 day,Û± ھأÙتÛ:1 week,Û² ھأÙتÛ:2 weeks,Û± Ù
ا:1 month,Û³ Ù
ا:3 months,Û¶ Ù
ا:6 months,Û± ساÙ:1 year,Ø¨Û ØئسÛ:infinite",
+ "ipboptions": "2 hours:2 hours,1 day:1 day,3 days:3 days,1 week:1 week,2 weeks:2 weeks,1 month:1 month,3 months:3 months,6 months:6 months,1 year:1 year,indefinite:infinite",
"ipbhidename": "ÙÙÙ
کارÙØ±Û ÙÙ Ø³Û ÙÛراÛشت Ûا Ù ÙÙÙ
Ú¯Ù Ûا ÙاÙ
Ú©Ù",
"ipbwatchuser": "Ù¾Û Ú¯Ø±Û Ø¨Ùگ٠کارÛØ§Ø±Û Ù Ø¨ÙÚ¯Ù ÚÚ© ÚÙÙ Ø§Û Ú©Ø§Ø±Ûار",
"ipb-disableusertalk": "ÙÙا Ø§Û Ú©Ø§Ø±Ûار Ù٠اÙس٠ک٠Ù
ÛÙا د بÙÚ¯Ù ÚÚ© ÚÙÙ Ø´ ÙÛراÛشت بک٠٠ÙÙ ÙÙ٠بÛ٠بئر",
@@ -2268,11 +2267,7 @@
"import-logentry-upload-detail": "$1 {{PLURAL:$1|ÙاÙئرÛ|ÙاÙئرÛا}} ÙاÙ
Û٠اÙÙ
اÙÙ",
"import-logentry-interwiki-detail": "$1 {{PLURAL:$1|ÙاÙئرÛ|ÙاÙئرÛا}} د $2 ÙاÙ
Û٠اÙÙ
ائÙÙ",
"javascripttest": "ازÙ
اÛشت کرد٠جاÙا اسکرÛپت",
- "javascripttest-pagetext-noframework": "Ø§Û Ø¨ÙÚ¯Ù Ø³Û Ø§ÙجÙÙ
دئ٠ازÙ
اÛشتÛا جاÙا اسکرÛپت اÙ
اÛÛÙ Ú©Ø§Ø±Û Ø¨ÛÙ.",
- "javascripttest-pagetext-unknownframework": "ÚÙئ٠کار ÙادÛار ازÙ
اÛشت \"$1\"",
"javascripttest-pagetext-unknownaction": "Ú©ÙØ´ØªÚ©Ø§Ø±Û ÙادÛار \"$1\".",
- "javascripttest-pagetext-frameworks": "ÙØ·ÙÙ Û٠گ٠د ÚÙئ٠Ûا ازÙ
اÛشت ÙØ§Ø±Û Ù٠اÙتخا٠بکÛت :$1",
- "javascripttest-pagetext-skins": "ÛÙ Ú¯Ù Ù¾Ùس٠ÙÙ Ø³Û Ø§ÙجÙÙ
دئ٠ازÙ
اÛشتا اÙتخا٠بکÛت:",
"javascripttest-qunit-intro": "[$1 Ù
ستÙدÛا ازÙ
اÛشت] Ù٠د mediawiki.org سÛ٠بکÛت.",
"tooltip-pt-userpage": "بÙگ٠کارÛارÛتÙ",
"tooltip-pt-anonuserpage": "بÙگ٠کارÛØ§Ø±Û ØªÛرÙØ´ÙÙ Ø¢Û Ù¾Û Ø§Û Ú©Ù Ø¯Ø´ ÙÛراÛشت Ù
Û Ú©Ûد",
@@ -2531,8 +2526,8 @@
"exif-colorspace": "رئ٠ÙرگÙ",
"exif-componentsconfiguration": "Ù
ئÙÛ Ùر اÙدÙÙ
",
"exif-compressedbitsperpixel": "شک٠جÙ
ع ٠جÛ٠کرد٠عسگ",
- "exif-pixelydimension": "پئÙا عسگ",
- "exif-pixelxdimension": "درازا عسگ",
+ "exif-pixelxdimension": "پئÙا عسگ",
+ "exif-pixelydimension": "درازا عسگ",
"exif-usercomment": "ÙÛر ٠باÙرÛا کارÙر",
"exif-relatedsoundfile": "جاÙÛا دÙÚ¯ دار Ù
رتÙØ·",
"exif-datetimeoriginal": "دÙ
ÙÙ Ù Ùخت راس بÛئ٠دÙÙسÙ
ÙÛا",
@@ -2998,7 +2993,6 @@
"version-libraries-library": "کتاÙÚ¯Ù",
"version-libraries-version": "ÙسÙÙ",
"redirect": "ÙاگردÙÙÛ Ùا جاÙÛاØبÙÚ¯Ù Ûا ÙاÙÛØ¦Ø±Û ÙÙÙ
دÛارکÙ",
- "redirect-legend": "ÙاگردÙÙÛ Ø¯ جاÙÛا Ûا بÙÚ¯Ù",
"redirect-summary": "Ø§Û Ø¨ÙÚ¯Ù ÙÛج٠Ùا جاÙÛا (ÙÙÙ
جاÙÛا ÙÛئش)Ø Ø¨ÙÚ¯Ù (Ø´Ù
ار٠شÙاسÛار بÙÚ¯Ù Ûا Ø´Ù
ار٠ÙسÙ٠دÛار بÛÙ) Ûا بÙگ٠کارÛØ§Ø±Û (Ø´ÙاسÛار Ø¹Ø¯Ø¯Û Ú©Ø§Ø±ÛØ§Ø±Û Ø¯Ûار بÛÙ) ÙاگردÙÙÛ Ø¨ÙئÙ. طرز Ù٠کار گرتÙ: [[{{#Special:Redirect}}/file/Example.jpg]]Ø \n[[{{#Special:Redirect}}/page/64308]]Ø [[{{#Special:Redirect}}/revision/328429]] Ûا [[{{#Special:Redirect}}/user/101]].",
"redirect-submit": "رÙ",
"redirect-lookup": "Ù¾Û Ø¬ÙرÛ:",
@@ -3010,7 +3004,6 @@
"redirect-not-exists": "اÙاز٠ک٠پÛدا ÙبÛ",
"fileduplicatesearch": "Ù¾Û Ø¬ÙØ±Û Ø³Û Ø¬Ø§ÙÛاÛا دÙÚ©ÙÙÙ",
"fileduplicatesearch-summary": "Ù¾Û Ø¬ÙØ±Û Ø³Û Ø¬Ø§ÙÛاÛا ØªÚ©Ø±Ø§Ø±Û Ø¯ پاÛ٠اÙاز٠د ÛÚ© Ø´ÛÙس٠ÙÙ٠اÙجÙÙ
گر بÙئÙ.",
- "fileduplicatesearch-legend": "Ù¾Û Ø¬ÙØ±Û Ø³Û Ø¯ÙÚ©ÙÙÙ",
"fileduplicatesearch-filename": "ÙÙÙ
جاÙÛا:",
"fileduplicatesearch-submit": "Ù¾Û Ø¬ÙرÛ",
"fileduplicatesearch-info": "$1 à $2 pixel اÙاز٠جاÙÛا: $3 MIME type: $4",
diff --git a/languages/i18n/lt.json b/languages/i18n/lt.json
index a366600314..6220352ac3 100644
--- a/languages/i18n/lt.json
+++ b/languages/i18n/lt.json
@@ -34,7 +34,8 @@
"Albertas",
"Macofe",
"Zygimantus",
- "Matma Rex"
+ "Matma Rex",
+ "Nemo bis"
]
},
"tog-underline": "Nuorodos pabraukimas:",
@@ -1327,7 +1328,7 @@
"recentchangeslinked-page": "Puslapio pavadinimas:",
"recentchangeslinked-to": "Rodyti su duotuoju puslapiu susijusių puslapių pakeitimus",
"recentchanges-page-added-to-category": "[[:$1]] pridÄta prie kategorijos",
- "recentchanges-page-added-to-category-bundled": "[[:$1]] ir {{PLURAL:$2|vienas puslapis|$2 puslapiai}} pridÄti prie kategorijos",
+ "recentchanges-page-added-to-category-bundled": "[[:$1]] ir [[Special:WhatLinksHere/$1|{{PLURAL:$2|vienas puslapis|$2 puslapiai}}]] pridÄti prie kategorijos",
"recentchanges-page-removed-from-category": "[[:$1]] pašalinta iš kategorijos",
"recentchanges-page-removed-from-category-bundled": "[[:$1]] ir {{PLURAL:$2|vienas puslapis|$2 puslapiai}} pašalinti iš kategorijos",
"autochange-username": "MediaWiki automatinis pakeitimas",
@@ -1507,6 +1508,7 @@
"uploadstash-badtoken": "Scenos šį ieÅ¡kinį, buvo nesÄkmingas, galbÅ«t todÄl, kad jÅ«sų redagavimo įgaliojimai pasibaigÄ. Bandykite dar kartÄ
.",
"uploadstash-errclear": "Kliringo failai buvo nesÄkmingas.",
"uploadstash-refresh": "Atnaujinti failų sÄ
raÅ¡Ä
",
+ "uploadstash-thumbnail": "rodyti miniatiÅ«rÄ
",
"invalid-chunk-offset": "Neleistinas segmento poslinkis",
"img-auth-accessdenied": "Prieiga uždrausta",
"img-auth-nopathinfo": "TrÅ«ksta PATH_INFO.\nJÅ«sų serveris nenustatytas perduoti Å¡iÄ
informacijÄ
.\nTai gali būti CGI paremta ir negali palaikyti img_auth.\nDaugiau informacijos https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Image_Authorization. žr.",
@@ -1813,8 +1815,6 @@
"categories-submit": "Rodyti",
"categoriespagetext": "{{PLURAL:$1|Å i kategorija|Å ios kategorijos}} turi puslapių ar failų.\n[[Special:UnusedCategories|Nenaudojamos kategorijos]] Äia nerodomos.\nTaip pat žiÅ«rÄkite [[Special:WantedCategories|trokÅ¡tamas kategorijas]].",
"categoriesfrom": "Vaizduoti kategorijas pradedant nuo:",
- "special-categories-sort-count": "rikiuoti pagal skaiÄių",
- "special-categories-sort-abc": "rikiuoti pagal abÄcÄlÄ",
"deletedcontributions": "IÅ¡trintas naudotojo indÄlis",
"deletedcontributions-title": "IÅ¡trintas naudotojo indÄlis",
"sp-deletedcontributions-contribs": "indÄlis",
@@ -2431,11 +2431,7 @@
"import-logentry-upload-detail": "$1 {{PLURAL:$1|keitimas|keitimai}} importuoti",
"import-logentry-interwiki-detail": "$1 {{PLURAL:$1|keitimas|keitimai}} importuoti iš $2",
"javascripttest": "JavaScript testavimas",
- "javascripttest-pagetext-noframework": "Å is puslapis yra skirtas vykdyti JavaScript testavimus.",
- "javascripttest-pagetext-unknownframework": "Nežinoma \"$1\" testavimo struktūra.",
"javascripttest-pagetext-unknownaction": "Nežinomas veiksmas â$1â.",
- "javascripttest-pagetext-frameworks": "PraÅ¡ome pasirinkti vienÄ
iš išvardintų testavimo struktūrų: $1",
- "javascripttest-pagetext-skins": "Pasirinkite naudotojo sÄ
sajos iÅ¡vaizdÄ
, kuriai atliksite testavimÄ
:",
"javascripttest-qunit-intro": "PeržiÅ«rÄkite [$1 testavimo dokumentacijÄ
]",
"tooltip-pt-userpage": "{{GENDER:|Jūsų naudotojo}} puslapis",
"tooltip-pt-anonuserpage": "Naudotojo puslapis jūsų IP adresui",
@@ -2691,8 +2687,8 @@
"exif-colorspace": "Spalvų pristatymas",
"exif-componentsconfiguration": "kiekvieno komponento reikÅ¡mÄ",
"exif-compressedbitsperpixel": "PaveikslÄlio suspaudimo režimas",
- "exif-pixelydimension": "PaveikslÄlio plotis",
- "exif-pixelxdimension": "Vaizdo aukštis",
+ "exif-pixelxdimension": "PaveikslÄlio plotis",
+ "exif-pixelydimension": "Vaizdo aukštis",
"exif-usercomment": "Naudotojo komentarai",
"exif-relatedsoundfile": "Susijusi garso byla",
"exif-datetimeoriginal": "Duomenų generavimo data ir laikas",
@@ -3075,7 +3071,7 @@
"watchlistedit-raw-done": "JÅ«sų stebimųjų sÄ
rašas buvo atnaujintas.",
"watchlistedit-raw-added": "$1 {{PLURAL:$1|puslapis buvo pridÄtas|puslapiai buvo pridÄti|puslapių buvo pridÄta}}:",
"watchlistedit-raw-removed": "$1 {{PLURAL:$1|puslapis buvo pašalintas|puslapiai buvo pašalinti|puslapių buvo pašalinta}}:",
- "watchlistedit-clear-title": "IÅ¡valytas stebimųjų sÄ
rašas",
+ "watchlistedit-clear-title": "IÅ¡valyti stebimųjų sÄ
raÅ¡Ä
",
"watchlistedit-clear-legend": "IÅ¡valyti stebimųjų sÄ
raÅ¡Ä
",
"watchlistedit-clear-explain": "Visi pavadinimai bus paÅ¡alinti iÅ¡ jÅ«sų stebimųjų sÄ
rašo",
"watchlistedit-clear-titles": "Pavadinimai:",
@@ -3138,7 +3134,6 @@
"version-libraries-description": "Aprašymas",
"version-libraries-authors": "Autoriai",
"redirect": "Nukreiptas iš failo, naudotojo, versijos arba žurnalo įrašo ID",
- "redirect-legend": "Nukreipti į failÄ
ar puslapį",
"redirect-summary": "Å is specialus puslapis peradresuojÄ
į failÄ
(nurodant failo pavadinimÄ
), puslapį (nurodant versijos ID ar puslapio ID), naudotojo puslapį (nurodant skaitinį naudotojo ID), arba žurnalo įraÅ¡Ä
(nurodant žurnalo įrašo ID).\nNaudojimas: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], [[{{#Special:Redirect}}/user/101]], arba[[{{#Special:Redirect}}/logid/186]].",
"redirect-submit": "Eiti",
"redirect-lookup": "Peržvalgos:",
@@ -3151,7 +3146,6 @@
"redirect-not-exists": "VertÄ nÄra nustatyta",
"fileduplicatesearch": "Ieškoti dublikuotų failų",
"fileduplicatesearch-summary": "PasikartojanÄių failų paieÅ¡ka pagal jų kontrolinÄ sumÄ
.",
- "fileduplicatesearch-legend": "Ieškoti dublikatų",
"fileduplicatesearch-filename": "Failo vardas:",
"fileduplicatesearch-submit": "Ieškoti",
"fileduplicatesearch-info": "$1 à $2 pikselių Failo dydis: $3 MIME tipas: $4",
diff --git a/languages/i18n/lus.json b/languages/i18n/lus.json
index 1a5e27ba02..740b14903e 100644
--- a/languages/i18n/lus.json
+++ b/languages/i18n/lus.json
@@ -1025,8 +1025,6 @@
"categories": "Pawlte",
"categoriespagetext": "A hnuaia pawl{{PLURAL:$1||te}} hian phêk emaw media a{{PLURAL:$1||n}} nei.\nHetah hian [[Special:UnusedCategories|pawl hman lohho]] pholan tel a ni lo.\n[[Special:WantedCategories|Pawl mamawhho]] en bawk la.",
"categoriesfrom": "Hemi-a iná¹an pawlho hi pholang rawh:",
- "special-categories-sort-count": "a chhúnga thil awm zât azirin thliar rawh",
- "special-categories-sort-abc": "a-aw-b indawtin",
"deletedcontributions": "Hmangtu kutthawhna paihbo tawhte",
"deletedcontributions-title": "Hmangtu kutthawhna paihbo tawhte",
"sp-deletedcontributions-contribs": "kutthawhnate",
@@ -1392,8 +1390,8 @@
"exif-colorspace": "Rawng hmun",
"exif-componentsconfiguration": "Péngtinte awmzia",
"exif-compressedbitsperpixel": "Lem sà wrzìmphung",
- "exif-pixelydimension": "Lem zauzáwng",
- "exif-pixelxdimension": "Lem sà nzáwng",
+ "exif-pixelxdimension": "Lem zauzáwng",
+ "exif-pixelydimension": "Lem sà nzáwng",
"exif-usercomment": "Hmangtu kamchhuak",
"exif-relatedsoundfile": "Ritaksa laichinte",
"exif-datetimeoriginal": "Hriattirna siamchhuah hun leh ni",
diff --git a/languages/i18n/lv.json b/languages/i18n/lv.json
index 2c27943894..6c0b718b8e 100644
--- a/languages/i18n/lv.json
+++ b/languages/i18n/lv.json
@@ -23,13 +23,15 @@
"ìë¼",
"Macofe",
"Nitalynx",
- "Silraks"
+ "Silraks",
+ "Zuiks"
]
},
"tog-underline": "Pasvītrot saites:",
"tog-hideminor": "PaslÄpt maznozÄ«mÄ«gus labojumus pÄdÄjo izmaiÅu lapÄ",
"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-hidecategorization": "PaslÄpt lapu kategorizÄÅ¡anu",
"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Ä",
"tog-numberheadings": "AutomÄtiski numurÄt virsrakstus",
@@ -59,6 +61,7 @@
"tog-watchlisthideliu": "PaslÄpt reÄ£istrÄto dalÄ«bnieku labojumus uzraugÄmo lapu sarakstÄ",
"tog-watchlisthideanons": "PaslÄpt anonÄ«mo dalÄ«bnieku labojumus uzraugÄmo lapu sarakstÄ",
"tog-watchlisthidepatrolled": "PaslÄpt pÄrbaudÄ«tÄs lapas uzraugÄmo lapu sarakstÄ",
+ "tog-watchlisthidecategorization": "PaslÄpt lapu kategorizÄÅ¡anu",
"tog-ccmeonemails": "Sūtīt sev citiem dalībniekiem nosūtīto epastu kopijas",
"tog-diffonly": "NerÄdÄ«t lapu saturu zem izmaiÅÄm",
"tog-showhiddencats": "RÄdÄ«t slÄptÄs kategorijas",
@@ -159,7 +162,6 @@
"moredotdotdot": "VairÄk...",
"morenotlisted": "Šis saraksts nav pilnīgs.",
"mypage": "Lapa",
- "anonuserpage": "NezinÄms lietotÄjs",
"mytalk": "Diskusijas",
"anontalk": "Diskusijas",
"navigation": "NavigÄcija",
@@ -400,6 +402,7 @@
"logout": "Iziet",
"userlogout": "Iziet",
"notloggedin": "Neesi iegÄjis",
+ "userlogin-noaccount": "Nav dalībnieka konta?",
"userlogin-joinproject": "Pievienojieties {{SITENAME}}",
"nologin": "Nav lietotÄjvÄrda? $1.",
"nologinlink": "ReÄ£istrÄjies",
@@ -568,7 +571,7 @@
"accmailtext": "NejauÅ¡i Ä£enerÄta parole lietotÄjam [[User talk:$1|$1]] tika nosÅ«tÄ«ta uz $2.\n\nÅ Ä« konta paroli pÄc ielogoÅ¡anÄs varÄs nomainÄ«t ''[[Special:ChangePassword|Å¡eit]]''.",
"newarticle": "(Jauns raksts)",
"newarticletext": "Å ajÄ projektÄ vÄl nav lapas ar Å¡Ädu nosaukumu.\nLai izveidotu lapu, sÄc rakstÄ«t teksta logÄ apakÅ¡Ä (par teksta formatÄÅ¡anu un sÄ«kÄkai informÄcija skatÄ«t [$1 palÄ«dzÄ«bas lapu]).\nJa tu Å¡eit nonÄci kļūdas pÄc, vienkÄrÅ¡i uzspied back pogu pÄrlÅ«kprogrammÄ.",
- "anontalkpagetext": "----''Å Ä« ir diskusiju lapa anonÄ«mam lietotÄjam, kurÅ¡ vÄl nav kļuvis par reÄ£istrÄtu lietotÄju vai arÄ« neizmanto savu lietotÄjvÄrdu. TÄdÄļ mums ir jÄizmanto skaitliskÄ IP adrese, lai viÅu identificÄtu.\nÅ Äda IP adrese var bÅ«t vairÄkiem lietotÄjiem.\nJa tu esi anonÄ«ms lietotÄjs un uzskati, ka tev ir adresÄti neatbilstoÅ¡i komentÄri, lÅ«dzu, [[Special:UserLogin/signup|kļūsti par lietotÄju]] vai arÄ« [[Special:UserLogin|izmanto jau izveidotu lietotÄjvÄrdu]], lai izvairÄ«tos no turpmÄkÄm neskaidrÄ«bÄm un tu netiktu sajaukts ar citiem anonÄ«miem lietotÄjiem.''",
+ "anontalkpagetext": "----''Å Ä« ir diskusiju lapa anonÄ«mam dalÄ«bniekam, kurÅ¡ vÄl nav kļuvis par reÄ£istrÄtu dalÄ«bnieku vai arÄ« neizmanto savu dalÄ«bnieka vÄrdu. TÄdÄļ mums ir jÄizmanto skaitliskÄ IP adrese, lai viÅu identificÄtu.\nÅ Äda IP adrese var bÅ«t vairÄkiem dalÄ«bniekiem.\nJa tu esi anonÄ«ms dalÄ«bnieks un uzskati, ka tev ir adresÄti neatbilstoÅ¡i komentÄri, lÅ«dzu, [[Special:UserLogin/signup|kļūsti par dalÄ«bnieku]] vai arÄ« [[Special:UserLogin|izmanto jau izveidotu dalÄ«bnieka vÄrdu]], lai izvairÄ«tos no turpmÄkÄm neskaidrÄ«bÄm un tu netiktu sajaukts ar citiem anonÄ«miem dalÄ«bniekiem.''",
"noarticletext": "Å ajÄ lapÄ Å¡obrÄ«d nav nekÄda teksta, tu vari [[Special:Search/{{PAGENAME}}|meklÄt citÄs lapÄs pÄc Å¡Ä«s lapas nosaukuma]], [{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} meklÄt saistÄ«tos reÄ£istru ierakstos] vai arÄ« [{{fullurl:{{FULLPAGENAME}}|action=edit}} sÄkt rediÄ£Ät Å¡o lapu] .",
"noarticletext-nopermission": "Å ajÄ lapÄ paÅ¡laik nav nekÄda teksta.\nTu vari [[Special:Search/{{PAGENAME}}|meklÄt Å¡Ä«s lapas nosaukumu]] citÄs lapÄs,\nvai [{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} meklÄt saistÄ«tus reÄ£istru ierakstus] , bet jums nav atļauja izveidot si lapu.",
"userpage-userdoesnotexist": "LietotÄjs \"$1 \" nav reÄ£istrÄts.\nLÅ«dzu, pÄrliecinies vai vÄlies izveidot/izmainÄ«t Å¡o lapu.",
@@ -1428,8 +1431,6 @@
"categories-submit": "RÄdÄ«t",
"categoriespagetext": "{{PLURAL:$1|Å Ä«s kategorijas|Å Ä« kategorija|Å Ä«s kategorijas}} satur lapas vai failus.\nÅ eit nav parÄdÄ«tas [[Special:UnusedCategories|neizmantotÄs kategorijas]].\nSkatÄ«t arÄ« [[Special:WantedCategories|''sarkanÄs'' kategorijas]].",
"categoriesfrom": "ParÄdÄ«t kategorijas sÄkot ar:",
- "special-categories-sort-count": "kÄrtot pÄc skaita",
- "special-categories-sort-abc": "kÄrtot alfabÄtiskÄ secÄ«bÄ",
"deletedcontributions": "DzÄstais dalÄ«bnieka devums",
"deletedcontributions-title": "DzÄstais dalÄ«bnieka devums",
"sp-deletedcontributions-contribs": "devums",
@@ -1444,12 +1445,13 @@
"listusers-noresult": "Neviens dalībnieks nav atrasts.",
"listusers-blocked": "(bloÄ·Äts)",
"activeusers": "Aktīvo dalībnieku saraksts",
- "activeusers-intro": "Å is ir dalÄ«bnieku saraksts, kas veikuÅ¡i kÄdu darbÄ«bu {{PLURAL:daudzskaitlÄ«:$1|pÄdÄjÄ|pÄdÄjÄs}} $1 {{PLURAL:daudzskaitlÄ«:$1|dienÄ|dienÄs}}.",
+ "activeusers-intro": "Å is ir to dalÄ«bnieku saraksts, kuri veikuÅ¡i kÄdu darbÄ«bu {{PLURAL:daudzskaitlÄ«:$1|pÄdÄjÄ|pÄdÄjÄs}} $1 {{PLURAL:daudzskaitlÄ«:$1|dienÄ|dienÄs}}.",
"activeusers-count": "$1 {{PLURAL:$1|darbÄ«bu|darbÄ«ba|darbÄ«bas}} {{PLURAL:$3|pÄdÄjÄs $3 dienÄs|pÄdÄjÄ $3 dienÄ|pÄdÄjÄs $3 dienÄs}}",
"activeusers-from": "ParÄdÄ«t dalÄ«bniekus, sÄkot ar:",
"activeusers-hidebots": "PaslÄpt botus",
"activeusers-hidesysops": "PaslÄpt administratorus",
"activeusers-noresult": "Neviens dalībnieks nav atrasts.",
+ "activeusers-submit": "ParÄdÄ«t aktÄ«vos dalÄ«bniekus",
"listgrouprights": "LietotÄju grupu tiesÄ«bas",
"listgrouprights-summary": "Å is ir Å¡ajÄ viki definÄto dalÄ«bnieku grupu uzskaitÄ«jums, kopÄ ar tÄm atbilstoÅ¡ajÄm piekļuves tiesÄ«bÄm.\nPapildu informÄciju par katru individuÄlu piekļuves tiesÄ«bu veidu, iespÄjams, var atrast [[{{MediaWiki:Listgrouprights-helppage}}|Å¡eit]].",
"listgrouprights-group": "Grupa",
@@ -2096,8 +2098,8 @@
"exif-colorspace": "KrÄsu telpa",
"exif-componentsconfiguration": "Katras sastÄvdaļas nozÄ«me",
"exif-compressedbitsperpixel": "AttÄla kompresijas pakÄpe",
- "exif-pixelydimension": "AttÄla platums",
- "exif-pixelxdimension": "AttÄla augstums",
+ "exif-pixelxdimension": "AttÄla platums",
+ "exif-pixelydimension": "AttÄla augstums",
"exif-usercomment": "LietotÄja komentÄri",
"exif-relatedsoundfile": "SaistÄ«tais skaÅas fails",
"exif-datetimeoriginal": "Izveidošanas datums un laiks",
@@ -2435,7 +2437,6 @@
"redirect-not-exists": "VÄrtÄ«ba nav atrasta",
"fileduplicatesearch": "MeklÄt failu kopijas",
"fileduplicatesearch-summary": "MeklÄ dublÄjoÅ¡os failus, izmantojot uz jaucÄjfunkcijas vÄrtÄ«bas.",
- "fileduplicatesearch-legend": "MeklÄt kopiju",
"fileduplicatesearch-filename": "Faila vÄrds:",
"fileduplicatesearch-submit": "MeklÄt",
"fileduplicatesearch-info": "$1 à $2 pikseļi Faila izmÄrs: $3 MIME tips: $4",
@@ -2474,6 +2475,7 @@
"tags-actions-header": "Darbības",
"tags-active-yes": "JÄ",
"tags-active-no": "NÄ",
+ "tags-source-extension": "Nosaka paplaÅ¡inÄjums",
"tags-source-none": "Vairs netiek izmantots",
"tags-edit": "labot",
"tags-delete": "dzÄst",
diff --git a/languages/i18n/lzh.json b/languages/i18n/lzh.json
index f1a65618e7..1272972773 100644
--- a/languages/i18n/lzh.json
+++ b/languages/i18n/lzh.json
@@ -20,7 +20,8 @@
"Nemo bis",
"é£èåå å",
"Macofe",
- "Bowleerin"
+ "Bowleerin",
+ "SolidBlock"
]
},
"tog-underline": "éå¢ç·ï¼",
@@ -189,6 +190,7 @@
"view-foreign": "è§æ¼$1",
"edit": "çº",
"create": "ç«",
+ "create-local": "å¢å°è¨",
"editthispage": "çº",
"create-this-page": "ç«",
"delete": "åª",
@@ -515,7 +517,7 @@
"preview": "è覽",
"showpreview": "示覽",
"showdiff": "示ç°",
- "anoneditwarning": "'''è¦ç¤ºï¼'''åæªç»ç°¿ï¼IPå°èªã",
+ "anoneditwarning": "'''è¦ç¤ºï¼'''åæªç»ç°¿ï¼è¥ç¢ºçºï¼IPå°èªãè[$1 ç»]æ[$2 éæ¶å£]ï¼æ¯çºæ¬²å以ååï¼åä»æã",
"anonpreviewwarning": "''åæªç»ç°¿ï¼IPå°èªã''",
"missingsummary": "'''é示ï¼'''åæªæ¦ä¹ï¼å¾©ã{{int:savearticle}}ãåæåçã",
"missingcommenttext": "è«è´ä¹",
@@ -1378,8 +1380,6 @@
"categories": "é¡",
"categoriespagetext": "大å
¸{{PLURAL:$1|é¡ä¸}}æé æåªã\n[[Special:UnusedCategories|æªé¡]]ç¡ç¤ºä¹ã\né±[[Special:WantedCategories|éé¡]]ä¹ã",
"categoriesfrom": "示æ¤é
èµ·ä¹é¡ï¼",
- "special-categories-sort-count": "ææ¸",
- "special-categories-sort-abc": "æå",
"deletedcontributions": "å·²åªä¹ç©",
"deletedcontributions-title": "ææ£ä¹äº",
"sp-deletedcontributions-contribs": "ç©",
@@ -1845,13 +1845,13 @@
"importlogpagetext": "秩å
¥å¯èªä»å±±ä¹å¯©ã",
"import-logentry-upload-detail": "æ審$1",
"import-logentry-interwiki-detail": "$1審èª$2",
- "tooltip-pt-userpage": "è¿°å¹³çã紹身家ãéåè",
+ "tooltip-pt-userpage": "{{GENDER:|åèª}}å·",
"tooltip-pt-anonuserpage": "åIPä¹è",
- "tooltip-pt-mytalk": "èç¾è«ãå¾ééã湧ææ»",
+ "tooltip-pt-mytalk": "{{GENDER:|åä¹}}è°å®¤",
"tooltip-pt-anontalk": "æ¤IPæä¿®ä¹è°",
- "tooltip-pt-preferences": "æ´ç¬¦é©ãæçå¼ãææ好",
+ "tooltip-pt-preferences": "{{GENDER:|åä¹}}好",
"tooltip-pt-watchlist": "æ¶çç®ãæ²»ç¼ç·ãè³èè",
- "tooltip-pt-mycontris": "å»ååã追ä½çºãæ
°è¦å",
+ "tooltip-pt-mycontris": "{{GENDER:|åä¹}}å表",
"tooltip-pt-login": "è¨æ¸é½ãéå績ã廣æ¾å¨",
"tooltip-pt-logout": "å¡äºç¡ï¼ä¹é²é£",
"tooltip-pt-createaccount": "å¸åå¢ç°¿ä»¥ç»ï¼ç¶éå¿
é ä¹è",
@@ -1929,6 +1929,7 @@
"spambot_username": "MediaWikiæ¸
æ¿«",
"spam_reverting": "éæ°å¯©ä¹ç¡é$1è
ã",
"spam_blanking": "審çé$1ï¼é令ç½é ã",
+ "simpleantispam-label": "åäºæ¥ã\n'''å¿'''æ¯æå
¥ï¼",
"pageinfo-header-restrictions": "é é®",
"pageinfo-robot-index": "å¯",
"pageinfo-robot-noindex": "ä¸å¯",
@@ -1964,6 +1965,7 @@
"file-nohires": "ç¡ä»¥æ´æ°ã",
"svg-long-desc": "SVGæªï¼è²æåç´ $1ç©$2ï¼å¹
$3",
"show-big-image": "å
¨å¹
",
+ "show-big-image-size": "$1Ã$2å¾®æ ¼",
"file-info-gif-looped": "循",
"file-info-gif-frames": "$1å¹",
"file-info-png-looped": "循",
@@ -1996,6 +1998,7 @@
"exif-model": "åè",
"exif-artist": "ä½è
",
"exif-exifversion": "Exifçæ¬",
+ "exif-colorspace": "è²é",
"exif-datetimeoriginal": "æ¸æçæä¹æ¥ææè¾°",
"exif-datetimedigitized": "æ¸ä½åä¹æ¥ææè¾°",
"exif-exposuretime": "æå
",
@@ -2009,6 +2012,7 @@
"exif-contrast": "å°æ¯",
"exif-saturation": "飽å度",
"exif-sharpness": "æ¸
æ°åº¦",
+ "exif-orientation-1": "常",
"exif-meteringmode-255": "å
¶ä»",
"exif-flash-fired-0": "éç¡ç«",
"exif-flash-fired-1": "ééç«",
@@ -2113,7 +2117,6 @@
"version-software-version": "ç",
"fileduplicatesearch": "æéæª",
"fileduplicatesearch-summary": "以éæªä¹åå»æ¥éä¹ã",
- "fileduplicatesearch-legend": "å°é",
"fileduplicatesearch-filename": "åï¼",
"fileduplicatesearch-submit": "å°",
"fileduplicatesearch-info": "åç´ $1ç©$2 大å°ï¼$3 MIMEé¡åï¼$4",
@@ -2138,6 +2141,7 @@
"intentionallyblankpage": "æ¤é çºç½ä¹ï¼è©¦éä¹ç¨",
"external_image_whitelist": " #åç\n#ä¸ï¼ä¸ä¹//ï¼ä¹æ£è¡¨å¼\n#ä¹å¤ï¼é£ï¼åé
ä¹\n#é
ä¹æåï¼éé
åæé£\n#æ # ä¹çºæ³¨\n#ç¡çºå¤§å°ä¹ç°ä¹\n\n#å
¥æ£è¡¨å¼ãåç ",
"tag-filter": "[[Special:Tags|æ¨]] ä¹æ¿¾ï¼",
+ "tag-list-wrapper": "([[Special:Tags|ç°½]]: $2)",
"tags-title": "æ¨",
"tags-tag": "æ¨å",
"tags-source-header": "æº",
diff --git a/languages/i18n/mai.json b/languages/i18n/mai.json
index d4544dde40..035bcdd09c 100644
--- a/languages/i18n/mai.json
+++ b/languages/i18n/mai.json
@@ -41,30 +41,30 @@
"tog-watchmoves": "हमरादà¥à¤µà¤¾à¤°à¤¾ à¤à¤¸à¥à¤à¤¾à¤à¤² पà¥à¤·à¥à¤ हमर साà¤à¤¾à¤à¤à¥à¤· सà¥à¤à¥à¤®à¥ राà¤à¥",
"tog-watchdeletion": "हमरादà¥à¤µà¤¾à¤°à¤¾ मà¥à¤à¤¾à¤à¤² पà¥à¤·à¥à¤ हमर साà¤à¤¾à¤à¤à¥à¤· सà¥à¤à¥à¤®à¥ राà¤à¥",
"tog-watchrollback": "हमरादà¥à¤µà¤¾à¤°à¤¾ रà¥à¤²à¤¬à¥à¤¯à¤¾à¤ à¤à¤à¤² पà¥à¤·à¥à¤ हमर साà¤à¤à¤à¥à¤· सà¥à¤à¥à¤®à¥ राà¤à¥",
- "tog-minordefault": "हमर सठसमà¥à¤ªà¤¾à¤¦à¤¨ पà¥à¤°à¥à¤µà¤¨à¥à¤¯à¤¸à¥à¤¤ रà¥à¤ªà¥à¤ मामà¥à¤²à¥ à¤à¤¹à¥",
+ "tog-minordefault": "हमर सठसमà¥à¤ªà¤¾à¤¦à¤¨ पà¥à¤°à¥à¤µà¤¨à¥à¤¯à¤¸à¥à¤¤ रà¥à¤ªà¤®à¥ मामà¥à¤²à¥ à¤à¤¹à¥",
"tog-previewontop": "समà¥à¤ªà¤¾à¤¦à¤¨ पà¥à¤à¥à¤ à¤à¤ªà¤° दà¥à¤¶à¥à¤¯ दà¥à¤à¤¾à¤¬à¥",
"tog-previewonfirst": "पहिल समà¥à¤ªà¤¾à¤¦à¤¨à¤ बाद पà¥à¤°à¥à¤µà¤¾à¤µà¤²à¥à¤à¤¨ दà¥à¤à¤¾à¤¬à¥",
"tog-enotifwatchlistpages": "à¤à¥à¤ हमर धà¥à¤¯à¤¾à¤¨à¤¸à¥à¤à¥à¤ à¤à¥à¤¨à¥ पनà¥à¤¨à¤¾à¤®à¥ परिवरà¥à¤¤à¤¨ हà¥à¤
ठतठहमरा à¤à¤®à¥à¤² पठाबà¥",
"tog-enotifusertalkpages": "हमर वारà¥à¤¤à¤¾ पà¥à¤·à¥à¤ परिवरà¥à¤¤à¤¿à¤¤ à¤à¥à¤²à¤¾ पर हमरा à¤à¤®à¥à¤² à¤à¤°à¥",
"tog-enotifminoredits": "à¤à¥à¤ परिवरà¥à¤¤à¤¨à¤ हà¥à¤¤à¥ सà¥à¤¹à¥ हमरा à¤à¤®à¥à¤² à¤à¥à¤à¥",
"tog-enotifrevealaddr": "à¤
धिसà¥à¤à¤¨à¤¾ à¤à¤®à¥à¤²à¤®à¥ हमर à¤à¤®à¥à¤² पता दà¥à¤à¤¾à¤¬à¥",
- "tog-shownumberswatching": "धà¥à¤¯à¤¾à¤¨ राà¤à¥à¤¬à¤²à¤¾ पà¥à¤°à¤¯à¥à¤à¤à¤°à¥à¤¤à¤¾à¤ सà¤à¤à¥à¤¯à¤¾",
+ "tog-shownumberswatching": "धà¥à¤¯à¤¾à¤¨ राà¤à¥à¤¬à¤²à¤¾ पà¥à¤°à¤¯à¥à¤à¤à¤°à¥à¤¤à¤¾à¤ सà¤à¥à¤à¥à¤¯à¤¾",
"tog-oldsig": "à¤
à¤à¥à¤¨à¤à¤¾ दसà¥à¤à¤¤:",
- "tog-fancysig": "दसà¥à¤à¤¤à¤ विà¤à¤¿à¤à¥à¤à¥à¤¸à¤à¤ समान मानॠ(सà¥à¤µà¤à¤¾à¤²à¤¿à¤¤ शà¥à¤°à¥à¤à¤à¤²à¤¾ हà¥à¤¨)",
+ "tog-fancysig": "दसà¥à¤à¤¤à¤ विà¤à¤¿à¤à¥à¤à¥à¤¸à¤à¤ समान मानॠ(सà¥à¤µà¤à¤¾à¤²à¤¿à¤¤ शà¥à¤°à¥à¤à¥à¤à¤²à¤¾ हà¥à¤¨)",
"tog-uselivepreview": "पà¥à¤°à¥à¤µà¤¾à¤µà¤²à¥à¤à¤¨à¤à¥ à¤à¤ªà¤¯à¥à¤ à¤à¤°à¥",
"tog-forceeditsummary": "यदि समà¥à¤ªà¤¾à¤¦à¤¨ साराà¤à¤¶ नॠदà¥à¤² à¤à¥à¤² हà¥à¤ तहन हमरा सà¥à¤à¤¿à¤¤ à¤à¤°à¥",
- "tog-watchlisthideown": "हमर साà¤à¤¾à¤à¤à¥à¤· सà¥à¤à¥à¤¸à¤ हमर समà¥à¤ªà¤¾à¤¦à¤¨ नà¥à¤à¤¾à¤",
- "tog-watchlisthidebots": "हमर साà¤à¤¾à¤à¤à¥à¤· सà¥à¤à¥à¤¸à¤ सà¥à¤µà¤à¤¾à¤²à¤¿à¤¤ समà¥à¤ªà¤¾à¤¦à¤¨ हà¤à¤¾à¤",
- "tog-watchlisthideminor": "हमर साà¤à¤¾à¤à¤à¥à¤· सà¥à¤à¥à¤¸à¤ मामà¥à¤²à¥ समà¥à¤ªà¤¾à¤¦à¤¨ नà¥à¤à¤¾à¤",
- "tog-watchlisthideliu": "साà¤à¤¾à¤à¤à¥à¤·à¤¸à¥à¤à¥à¤¸à¤ समà¥à¤ªà¥à¤°à¤µà¥à¤¶à¤¿à¤¤ पà¥à¤°à¤¯à¥à¤à¥à¤¤à¤¾à¤ समà¥à¤ªà¤¾à¤¦à¤¨ हà¤à¤¾à¤",
- "tog-watchlisthideanons": "साà¤à¤¾à¤à¤à¥à¤·à¤¸à¥à¤à¥à¤¸à¤ à¤
नाम पà¥à¤°à¤¯à¥à¤à¥à¤¤à¤¾à¤ समà¥à¤ªà¤¾à¤¦à¤¨ हà¤à¤¾à¤",
- "tog-watchlisthidepatrolled": "साà¤à¤¾à¤à¤à¥à¤· सà¥à¤à¥à¤¸à¤ सà¤à¤à¤¾à¤²à¤¿à¤¤ समà¥à¤ªà¤¾à¤¦à¤¨ नà¥à¤à¤¾à¤",
- "tog-ccmeonemails": "हमरा दà¥à¤µà¤¾à¤°à¤¾ दà¥à¤¸à¤° पà¥à¤°à¤¯à¥à¤à¥à¤¤à¤¾à¤à¥à¤ पठाà¤à¤² à¤-पतà¥à¤°à¤ à¤à¥à¤ªà¥ पठाà¤",
- "tog-diffonly": "फाà¤à¤²-à¤
नà¥à¤¤à¤° पà¥à¤°à¤£à¤¾à¤²à¥à¤ नà¥à¤à¤¾à¤ पनà¥à¤¨à¤¾à¤ सामिà¤à¥à¤°à¥ नॠदà¥à¤à¤¾à¤",
- "tog-showhiddencats": "नà¥à¤à¤¾à¤à¤² सà¤à¤µà¤°à¥à¤ दà¥à¤à¤¾à¤",
- "tog-norollbackdiff": "पà¥à¤°à¤¤à¥à¤¯à¤¾à¤µà¤°à¥à¤¤à¤¨à¤ बाद फाà¤à¤²-à¤
नà¥à¤¤à¤° पà¥à¤°à¤£à¤¾à¤²à¥à¤à¥à¤ बिसरà¥",
- "tog-useeditwarning": "à¤à¤¬ हम à¤à¥à¤¨à¥ सà¤à¤ªà¤¾à¤¦à¤¨ पà¥à¤·à¥à¤ à¤à¥ बिना सà¥à¤°à¤à¥à¤·à¤¿à¤¤ à¤à¥à¤¨à¥ बदलाव सà¤à¤ à¤à¥à¤à¤¡ दि त हमरा सà¥à¤à¤¿à¤¤ à¤à¤°à¥ ।",
- "tog-prefershttps": "समà¥à¤ªà¥à¤°à¤µà¥à¤¶à¤¿à¤¤ à¤à¤°à¤²à¤¾à¤ बाद सदà¥à¤µ सà¥à¤°à¤à¥à¤·à¤¿à¤¤ à¤à¤¨à¥à¤à¥à¤¶à¤¨à¤à¥ पà¥à¤°à¤¯à¥à¤ à¤à¤°à¥",
+ "tog-watchlisthideown": "हमर साà¤à¤¾à¤à¤à¥à¤· सà¥à¤à¥à¤¸à¤ हमर समà¥à¤ªà¤¾à¤¦à¤¨ नà¥à¤à¤¾à¤¬à¥",
+ "tog-watchlisthidebots": "हमर साà¤à¤¾à¤à¤à¥à¤· सà¥à¤à¥à¤¸à¤ सà¥à¤µà¤à¤¾à¤²à¤¿à¤¤ समà¥à¤ªà¤¾à¤¦à¤¨ हà¤à¤¾à¤¬à¥",
+ "tog-watchlisthideminor": "हमर साà¤à¤¾à¤à¤à¥à¤· सà¥à¤à¥à¤¸à¤ मामà¥à¤²à¥ समà¥à¤ªà¤¾à¤¦à¤¨ नà¥à¤à¤¾à¤¬à¥",
+ "tog-watchlisthideliu": "साà¤à¤¾à¤à¤à¥à¤·à¤¸à¥à¤à¥à¤¸à¤ समà¥à¤ªà¥à¤°à¤µà¥à¤¶à¤¿à¤¤ पà¥à¤°à¤¯à¥à¤à¥à¤¤à¤¾à¤ समà¥à¤ªà¤¾à¤¦à¤¨ हà¤à¤¾à¤¬à¥",
+ "tog-watchlisthideanons": "साà¤à¤¾à¤à¤à¥à¤·à¤¸à¥à¤à¥à¤¸à¤ à¤
नाम पà¥à¤°à¤¯à¥à¤à¥à¤¤à¤¾à¤ समà¥à¤ªà¤¾à¤¦à¤¨ हà¤à¤¾à¤¬à¥",
+ "tog-watchlisthidepatrolled": "साà¤à¤¾à¤à¤à¥à¤· सà¥à¤à¥à¤¸à¤ सà¤à¤à¤¾à¤²à¤¿à¤¤ समà¥à¤ªà¤¾à¤¦à¤¨ नà¥à¤à¤¾à¤¬à¥",
+ "tog-ccmeonemails": "हमरदà¥à¤µà¤¾à¤°à¤¾ दà¥à¤¸à¤° पà¥à¤°à¤¯à¥à¤à¥à¤¤à¤¾à¤ पठाà¤à¤² à¤-पतà¥à¤°à¤ à¤à¤ªà¥ पठाबà¥",
+ "tog-diffonly": "फाà¤à¤²-à¤
नà¥à¤¤à¤° पà¥à¤°à¤£à¤¾à¤²à¥à¤ नà¥à¤à¤¾à¤ पनà¥à¤¨à¤¾à¤ सामिà¤à¥à¤°à¥ नॠदà¥à¤à¤¾à¤¬à¥",
+ "tog-showhiddencats": "नà¥à¤à¤¾à¤à¤² शà¥à¤°à¥à¤£à¥ दà¥à¤à¤¾à¤¬à¥",
+ "tog-norollbackdiff": "पà¥à¤°à¤¤à¥à¤¯à¤¾à¤µà¤°à¥à¤¤à¤¨à¤ बाद फाà¤à¤²-à¤
नà¥à¤¤à¤° पà¥à¤°à¤£à¤¾à¤²à¥à¤ बिसरà¥",
+ "tog-useeditwarning": "à¤à¤¬ हम à¤à¥à¤¨à¥ समà¥à¤ªà¤¾à¤¦à¤¨ पà¥à¤·à¥à¤ à¤à¥ बिना सà¥à¤°à¤à¥à¤·à¤¿à¤¤ à¤à¥à¤¨à¥ बदलाव सà¤à¤ à¤à¥à¤¡à¤¿ दि त हमरा सà¥à¤à¤¿à¤¤ à¤à¤°à¥ ।",
+ "tog-prefershttps": "समà¥à¤ªà¥à¤°à¤µà¥à¤¶à¤¿à¤¤ à¤à¤°à¤²à¤¾à¤ बाद सदà¥à¤µ सà¥à¤°à¤à¥à¤·à¤¿à¤¤ à¤à¤¨à¥à¤à¥à¤¶à¤¨à¤à¥ पà¥à¤°à¤¯à¥à¤ à¤à¤°à¥",
"underline-always": "सदिà¤à¤¨",
"underline-never": "à¤à¤à¤¨à¥ नà¥",
"underline-default": "पà¥à¤°à¥à¤µà¤¨à¥à¤¯à¤¸à¥à¤¤ à¤à¤µà¥à¤·à¤",
@@ -104,13 +104,13 @@
"march-gen": "मारà¥à¤",
"april-gen": "à¤
पà¥à¤°à¥à¤²",
"may-gen": "मà¤",
- "june-gen": "à¤à¥à¤¨",
+ "june-gen": "à¤à¥à¤¨",
"july-gen": "à¤à¥à¤²à¤¾à¤",
"august-gen": "à¤
à¤à¤¸à¥à¤¤",
- "september-gen": "सितà¤à¤¬à¤°",
- "october-gen": "à¤
à¤à¤à¥à¤¬à¤°",
- "november-gen": "नवà¤à¤¬à¤°",
- "december-gen": "दिसà¤à¤¬à¤°",
+ "september-gen": "सितमà¥à¤¬à¤°",
+ "october-gen": "à¤
à¤à¤à¥à¤¬à¤°",
+ "november-gen": "नवमà¥à¤¬à¤°",
+ "december-gen": "दिसमà¥à¤¬à¤°",
"jan": "à¤à¤¨.",
"feb": "फर.",
"mar": "मा.",
@@ -128,127 +128,129 @@
"march-date": "मारà¥à¤ $1",
"april-date": "à¤
पà¥à¤°à¥à¤² $1",
"may-date": "मठ$1",
- "june-date": "à¤à¥à¤¨ $1",
+ "june-date": "à¤à¥à¤¨ $1",
"july-date": "à¤à¥à¤²à¤¾à¤ $1",
"august-date": "à¤
à¤à¤¸à¥à¤¤ $1",
"september-date": "सितमà¥à¤¬à¤° $1",
- "october-date": "à¤
à¤à¥à¤à¥à¤¬à¤° $1",
+ "october-date": "à¤
à¤à¥à¤à¥à¤¬à¤° $1",
"november-date": "नवमà¥à¤¬à¤° $1",
"december-date": "दिसमà¥à¤¬à¤° $1",
+ "period-am": "पà¥à¤°à¥à¤µà¤¾à¤¹à¥à¤¨",
+ "period-pm": "à¤
पराहà¥à¤¨",
"pagecategories": "{{PLURAL:$1|शà¥à¤°à¥à¤£à¥|à¤à¤à¤à¤¾ शà¥à¤°à¥à¤£à¥}}",
- "category_header": "सà¤à¤µà¤°à¥à¤ \"$1\" मॠपनà¥à¤¨à¤¾ सà¤",
- "subcategories": "à¤à¤ªà¤¸à¤à¤µà¤°à¥à¤",
- "category-media-header": "सà¤à¤µà¤°à¥à¤ \"$1\" मॠमà¥à¤¡à¤¿à¤¯à¤¾",
- "category-empty": "''ठसà¤à¤µà¤°à¥à¤à¤®à¥ à¤
à¤à¤¨ à¤à¥à¤¨à¥ पनà¥à¤¨à¤¾ वा मà¥à¤¡à¤¿à¤¯à¤¾ नॠà¤
à¤à¤¿à¥¤''",
- "hidden-categories": "{{PLURAL:$1|नà¥à¤à¤¾à¤à¤² वरà¥à¤|नà¥à¤à¤¾à¤à¤² वरà¥à¤à¤¸à¤}}",
- "hidden-category-category": "नà¥à¤à¤¾à¤à¤² सà¤à¤µà¤°à¥à¤ सà¤",
- "category-subcat-count": "{{PLURAL:$2| ठसà¤à¤µà¤°à¥à¤à¤ à¤à¤¾à¤²à¥ ठसठà¤à¤ª सà¤à¤µà¤°à¥à¤ à¤
à¤à¤¿à¤à¥¤.|ठसà¤à¤µà¤°à¥à¤à¤®à¥ ठसठ{{PLURAL:$1| à¤à¤ªà¤¸à¤à¤µà¤°à¥à¤|$1 à¤à¤ªà¤¸à¤à¤µà¤°à¥à¤ सà¤}}, à¤à¤®à¥ सठ$2 सà¤à¤à¤¾à¥¤}}",
- "category-subcat-count-limited": "ठसà¤à¤µà¤°à¥à¤à¤®à¥ à¤
à¤à¤¿ {{PLURAL:$1|à¤à¤ªà¤¸à¤à¤µà¤°à¥à¤|$1à¤à¤ªà¤¸à¤à¤µà¤°à¥à¤ सà¤}}",
- "category-article-count": "{{PLURAL:$2|ठसà¤à¤µà¤°à¥à¤à¤®à¥ à¤à¤¾à¤²à¥ ठपनà¥à¤¨à¤¾ à¤
à¤à¤¿à¥¤| ठ{{PLURAL:$1|पनà¥à¤¨à¤¾ à¤
à¤à¤¿|$1 पनà¥à¤¨à¤¾ सठà¤
à¤à¤¿}} ठसà¤à¤µà¤°à¥à¤à¤®à¥, à¤à¤¾à¤à¤®à¥ सठ$2 सà¤à¥¤}}",
- "category-article-count-limited": "ठ{{PLURAL:$1|पनà¥à¤¨à¤¾ à¤
à¤à¤¿|$1 पनà¥à¤¨à¤¾ सठà¤
à¤à¤¿}}",
- "category-file-count": "{{PLURAL:$2| ठसà¤à¤µà¤°à¥à¤à¤®à¥ मातर ठफाà¤à¤² à¤
à¤à¤¿à¥¤| ठ{{PLURAL:$1|फाà¤à¤² à¤
à¤à¤¿|$1 फाà¤à¤² सठà¤
à¤à¤¿}} ठसà¤à¤µà¤°à¥à¤à¤®à¥, à¤à¥à¤² $2 सà¤à¥¤}}",
- "category-file-count-limited": "ठ{{PLURAL:$1|पनà¥à¤¨à¤¾ à¤
à¤à¤¿|$1 पनà¥à¤¨à¤¾ सठà¤
à¤à¤¿}} ठसà¤à¤µà¤°à¥à¤à¤®à¥à¥¤",
+ "category_header": "शà¥à¤°à¥à¤£à¥ \"$1\" मॠपनà¥à¤¨à¤¾ सà¤",
+ "subcategories": "à¤à¤ªà¤¶à¥à¤°à¥à¤£à¥",
+ "category-media-header": "शà¥à¤°à¥à¤£à¥ \"$1\" मॠमà¥à¤¡à¤¿à¤¯à¤¾",
+ "category-empty": "ठशà¥à¤°à¥à¤£à¥à¤®à¥ ठसमय à¤à¥à¤¨à¥ पà¥à¤·à¥à¤ या मिडिया नॠà¤
à¤à¤¿à¥¤ ",
+ "hidden-categories": "{{PLURAL:$1|नà¥à¤à¤¾à¤à¤² शà¥à¤°à¥à¤£à¥|नà¥à¤à¤¾à¤à¤² शà¥à¤°à¥à¤£à¥à¤¸à¤}}",
+ "hidden-category-category": "नà¥à¤à¤¾à¤à¤² शà¥à¤°à¥à¤£à¥à¤¸à¤",
+ "category-subcat-count": "{{PLURAL:$2|ठशà¥à¤°à¥à¤£à¥à¤®à¥ मातà¥à¤° निमà¥à¤¨à¤²à¤¿à¤à¤¿à¤¤ à¤à¤ªà¤¶à¥à¤°à¥à¤£à¥ à¤
à¤à¤¿à¥¤|ठशà¥à¤°à¥à¤£à¥à¤ à¤à¥à¤² $2 मà¥à¤¸à¤ {{PLURAL:$1|à¤à¤ªà¤¶à¥à¤°à¥à¤£à¥ निमà¥à¤¨à¤²à¤¿à¤à¤¿à¤¤ à¤
à¤à¤¿à¥¤|$1 à¤à¤ªà¤¶à¥à¤°à¥à¤£à¥à¤¸à¤ निमà¥à¤¨à¤²à¤¿à¤à¤¿à¤¤ à¤
à¤à¤¿à¥¤}}}}",
+ "category-subcat-count-limited": "ठशà¥à¤°à¥à¤£à¥à¤®à¥ निमà¥à¤¨à¤²à¤¿à¤à¤¿à¤¤ {{PLURAL:$1|à¤à¤ªà¤¶à¥à¤°à¥à¤£à¥ à¤
à¤à¤¿|$1 à¤à¤ªà¤¶à¥à¤°à¥à¤£à¥ à¤
à¤à¤¿}}।",
+ "category-article-count": "{{PLURAL:$2|ठशà¥à¤°à¥à¤£à¥à¤®à¥ मातà¥à¤° निमà¥à¤¨à¤²à¤¿à¤à¤¿à¤¤ पà¥à¤·à¥à¤ à¤
à¤à¤¿à¥¤|ठशà¥à¤°à¥à¤£à¥à¤®à¥ निमà¥à¤¨à¤²à¤¿à¤à¤¿à¤¤ {{PLURAL:$1|पà¥à¤·à¥à¤ à¤
à¤à¤¿|$1 पà¥à¤·à¥à¤ à¤
à¤à¤¿}}, à¤à¥à¤² पà¥à¤·à¥à¤ $2}}",
+ "category-article-count-limited": "निमà¥à¤¨à¤²à¤¿à¤à¤¿à¤¤ {{PLURAL:$1|पà¥à¤·à¥à¤ |$1 पà¥à¤·à¥à¤ }} ठशà¥à¤°à¥à¤£à¥à¤®à¥ à¤
à¤à¤¿à¥¤",
+ "category-file-count": "{{PLURAL:$2|ठशà¥à¤°à¥à¤£à¥à¤®à¥ मातà¥à¤° निमà¥à¤¨à¤²à¤¿à¤à¤¿à¤¤ फाà¤à¤² à¤
à¤à¤¿à¥¤|ठशà¥à¤°à¥à¤£à¥à¤®à¥ निमà¥à¤¨à¤²à¤¿à¤à¤¿à¤¤ {{PLURAL:$1|फाà¤à¤²|$1 फाà¤à¤²à¤¸à¤}} à¤
à¤à¤¿, à¤à¥à¤² फाà¤à¤²à¤¸à¤ $2}}",
+ "category-file-count-limited": "ठशà¥à¤°à¥à¤£à¥à¤®à¥ निमà¥à¤¨à¤²à¤¿à¤à¤¿à¤¤ {{PLURAL:$1|फाà¤à¤² à¤
à¤à¤¿à¥¤|फाà¤à¤²à¤¸à¤ à¤
à¤à¤¿à¥¤}}",
"listingcontinuesabbrev": "शà¥à¤· à¤à¤à¤¾à¤à¥¤",
"index-category": "à¤à¥à¤°à¤® à¤à¤à¤² पनà¥à¤¨à¤¾ सà¤",
- "noindex-category": "à¤à¥à¤°à¤® नॠà¤à¤à¤² पनà¥à¤¨à¤¾ सà¤",
- "broken-file-category": "पनà¥à¤¨à¤¾ सठà¤à¤¾à¤à¤®à¥ फाà¤à¤² लिà¤à¤ सठà¤à¥à¤à¤² हà¥à¤
à¤",
- "about": "विषयमà¥",
- "article": "विषय सà¥à¤à¥ पनà¥à¤¨à¤¾",
- "newwindow": "(नव à¤à¤¿à¤¡à¤¼à¤à¥à¤¸à¤ à¤à¥à¤à¥à¤)",
+ "noindex-category": "à¤à¥à¤°à¤® नॠà¤à¤à¤² पनà¥à¤¨à¤¾à¤¸à¤",
+ "broken-file-category": "पनà¥à¤¨à¤¾à¤¸à¤ à¤à¤¾à¤à¤®à¥ फाà¤à¤² लिà¤à¥à¤à¤¸à¤ à¤à¥à¤à¤² हà¥à¤
à¤",
+ "about": "ठविषयमà¥",
+ "article": "सामà¤à¥à¤°à¥ लà¥à¤",
+ "newwindow": "(नव à¤à¤¿à¤¡à¤à¥à¤¸à¤ à¤à¥à¤à¥à¤)",
"cancel": "समापà¥à¤¤",
"moredotdotdot": "à¤à¤°...",
- "morenotlisted": "ठपà¥à¤°à¤¾ सà¥à¤à¥ नॠà¤
à¤à¥ ।",
+ "morenotlisted": "ठपà¥à¤°à¤¾ सà¥à¤à¥ नॠà¤à¥à¥¤",
"mypage": "पनà¥à¤¨à¤¾",
- "mytalk": "वारà¥à¤¤à¥à¤¤à¤¾",
- "anontalk": "ठà¤
निà¤à¥à¤¤ पता लà¥à¤² विमरà¥à¤¶",
+ "mytalk": "वारà¥à¤¤à¤¾",
+ "anontalk": "वारà¥à¤¤à¤¾",
"navigation": "सà¤à¥à¤à¤¾à¤°",
"and": " à¤à¤°",
- "qbfind": "ताà¤à¥",
- "qbbrowse": "à¤à¤µà¥à¤·à¤£ à¤à¤°à¥",
- "qbedit": "समà¥à¤ªà¤¾à¤¦à¤¨ à¤à¤°à¥",
+ "qbfind": "ताà¤à¥",
+ "qbbrowse": "à¤à¤µà¥à¤·à¤£ à¤à¤°à¥",
+ "qbedit": "समà¥à¤ªà¤¾à¤¦à¤¨ à¤à¤°à¥",
"qbpageoptions": "ठपà¥à¤·à¥à¤ ",
- "qbmyoptions": "हमर पà¥à¤·à¥à¤ सà¤",
+ "qbmyoptions": "हमर पà¥à¤·à¥à¤ सà¤",
"faq": "तà¥à¤µà¤°à¤¿à¤¤ पà¥à¤°à¤¶à¥à¤¨à¥à¤¤à¥à¤¤à¤°à¥",
"faqpage": "Project: तà¥à¤µà¤°à¤¿à¤¤ पà¥à¤°à¤¶à¥à¤¨à¥à¤¤à¥à¤¤à¤°à¥",
- "actions": "à¤à¥à¤°à¤¿à¤¯à¤¾ सà¤",
+ "actions": "à¤à¥à¤°à¤¿à¤¯à¤¾à¤¸à¤",
"namespaces": "à¤à¥à¤¨à¥à¤¹à¤¾à¤¸à¥ समà¥à¤¹à¤¸à¤",
"variants": "पà¥à¤°à¤à¤¾à¤°à¤¸à¤",
"navigation-heading": "दिà¤à¥à¤à¤¾à¤²à¤¨ सà¥à¤à¥",
"errorpagetitle": "à¤à¤²à¤¤à¥",
- "returnto": "$1 पर à¤à¤à¥¤",
+ "returnto": "$1 पर à¤à¤¬à¥à¥¤",
"tagline": "मà¥à¤¥à¤¿à¤²à¥ {{SITENAME}}सà¤",
"help": "मदति",
"search": "ताà¤à¥",
"searchbutton": "ताà¤à¥",
- "go": "à¤à¤¾à¤",
- "searcharticle": "à¤à¤¾à¤",
+ "go": "à¤à¤¾à¤",
+ "searcharticle": "à¤à¤¾à¤",
"history": "पनà¥à¤¨à¤¾à¤ à¤à¤¤à¤¿à¤¹à¤¾à¤¸",
"history_short": "à¤à¤¤à¤¿à¤¹à¤¾à¤¸",
"updatedmarker": "हमर à¤
नà¥à¤¤à¤¿à¤® à¤à¤à¤®à¤¨à¤¸à¤ पहिनॠà¤
दà¥à¤¯à¤¤à¤¨ à¤à¤à¤²",
"printableversion": "पà¥à¤°à¤¿à¤¨à¥à¤ à¤à¤°à¤¬à¤¾ यà¥à¤à¥à¤¯",
"permalink": "सà¥à¤¥à¤¾à¤¯à¥ लिà¤à¥à¤",
- "print": "à¤à¤¾à¤ªà¥",
+ "print": "à¤à¤¾à¤ªà¥",
"view": "दà¥à¤à¥",
- "view-foreign": "$1 पर दà¥à¤à¥",
+ "view-foreign": "$1 पर दà¥à¤à¥",
"edit": "समà¥à¤ªà¤¾à¤¦à¤¨",
- "edit-local": "सà¥à¤¥à¤¾à¤¨à¥à¤¯ विवरण सà¤à¤ªà¤¾à¤¦à¤¨",
- "create": "बनाà¤",
+ "edit-local": "सà¥à¤¥à¤¾à¤¨à¥à¤¯ विवरण समà¥à¤ªà¤¾à¤¦à¤¨",
+ "create": "बनाबà¥",
"create-local": "सà¥à¤¥à¤¾à¤¨à¥à¤¯ विवरण निरà¥à¤®à¤¾à¤£",
- "editthispage": "à¤à¤¹à¤¿ पà¥à¤·à¥à¤ ठसà¤à¤ªà¤¾à¤¦à¤¨",
- "create-this-page": "ठपनà¥à¤¨à¤¾ बनाà¤",
- "delete": "मà¥à¤à¤¾à¤",
- "deletethispage": "ठपनà¥à¤¨à¤¾ मà¥à¤à¤¾à¤",
- "undeletethispage": "ठपनà¥à¤¨à¤¾ मà¥à¤à¤¾à¤",
- "undelete_short": "à¤à¤ªà¤¸ à¤à¤¨à¥ {{PLURAL:$1|à¤à¤ समà¥à¤ªà¤¾à¤¦à¤¨t|$1 समà¥à¤ªà¤¾à¤¦à¤¨ सà¤}}",
- "viewdeleted_short": "दà¥à¤à¥ {{PLURAL:$1|à¤à¤à¤à¤¾ मà¥à¤à¤¾à¤à¤² समà¥à¤ªà¤¾à¤¦à¤¨|$1 मà¥à¤à¤¾à¤à¤² समà¥à¤ªà¤¾à¤¦à¤¨ सà¤}}",
- "protect": "बà¤à¤¾à¤",
- "protect_change": "बदलà¥",
- "protectthispage": "ठपनà¥à¤¨à¤¾à¤ रà¤à¥à¤·à¤¾ à¤à¤°à¥",
- "unprotect": "रà¤à¥à¤·à¤¾ à¤à¤µà¤ बदलà¥",
- "unprotectthispage": "ठपनà¥à¤¨à¤¾à¤ रà¤à¥à¤·à¤¾ à¤à¤µà¤ बदलà¥",
+ "editthispage": "ठपà¥à¤·à¥à¤ समà¥à¤ªà¤¾à¤¦à¤¨ à¤à¤°à¥",
+ "create-this-page": "ठपनà¥à¤¨à¤¾ बनाबà¥",
+ "delete": "मà¥à¤à¤¾à¤¬à¥",
+ "deletethispage": "ठपनà¥à¤¨à¤¾ मà¥à¤à¤¾à¤¬à¥",
+ "undeletethispage": "ठपà¥à¤·à¥à¤ à¤à¥ पà¥à¤¨à¤°à¥à¤¸à¥à¤¥à¤¾à¤ªà¤¿à¤¤ à¤à¤°à¥à¥¤",
+ "undelete_short": "{{PLURAL:$1|à¤à¤ हà¤à¤¾à¤à¤² à¤à¤à¤²|$1 हà¤à¤¾à¤à¤² à¤à¤à¤²}} परिवरà¥à¤¤à¤¨ à¤à¤ªà¤¸ à¤à¤¨à¥",
+ "viewdeleted_short": "दà¥à¤à¥ {{PLURAL:$1|à¤à¤à¤à¤¾ मà¥à¤à¤¾à¤à¤² समà¥à¤ªà¤¾à¤¦à¤¨|$1 मà¥à¤à¤¾à¤à¤² समà¥à¤ªà¤¾à¤¦à¤¨ सà¤}}",
+ "protect": "सà¥à¤°à¤à¥à¤·à¤¿à¤¤ à¤à¤°à¥",
+ "protect_change": "बदलà¥",
+ "protectthispage": "ठपनà¥à¤¨à¤¾à¤ सà¥à¤°à¤à¥à¤·à¤¿à¤¤ à¤à¤°à¥",
+ "unprotect": "à¤
सà¥à¤°à¤à¥à¤·à¤¿à¤¤",
+ "unprotectthispage": "ठपà¥à¤·à¥à¤ ठसà¥à¤°à¤à¥à¤·à¤¾ सà¥à¤¤à¤° बदलà¥",
"newpage": "नवà¤à¤¾ पनà¥à¤¨à¤¾",
- "talkpage": "à¤à¤¹à¤¿ पà¥à¤·à¥à¤ पर वारà¥à¤¤à¥à¤¤à¤¾à¤²à¤¾à¤ª",
+ "talkpage": "ठपà¥à¤·à¥à¤ ठबारà¥à¤®à¥ à¤à¤°à¥à¤à¤¾ à¤à¤°à¥",
"talkpagelinktext": "वारà¥à¤¤à¤¾",
"specialpage": "विशà¥à¤· पनà¥à¤¨à¤¾",
"personaltools": "वà¥à¤¯à¤à¥à¤¤à¤¿à¤à¤¤ à¤à¤ªà¤à¤°à¤£à¤¸à¤",
- "articlepage": "विषय-सà¥à¤à¥ पनà¥à¤¨à¤¾ दà¥à¤à¥",
+ "articlepage": "विषय-सà¥à¤à¥ पनà¥à¤¨à¤¾ दà¥à¤à¥",
"talk": "वारà¥à¤¤à¤¾à¤²à¤¾à¤ª",
- "views": "दà¥à¤·à¥à¤à¤¿à¤¸à¤",
- "toolbox": "à¤à¤ªà¤à¤°à¤£à¤¸à¤",
- "userpage": "पà¥à¤°à¤¯à¥à¤à¥à¤¤à¤¾ पनà¥à¤¨à¤¾ दà¥à¤à¥",
- "projectpage": "परियà¥à¤à¤¨à¤¾ पनà¥à¤¨à¤¾ दà¥à¤à¥",
- "imagepage": "पनà¥à¤¨à¤¾à¤ पà¥à¤·à¥à¤ दà¥à¤à¥",
- "mediawikipage": "सनà¥à¤¦à¥à¤¶ पनà¥à¤¨à¤¾ दà¥à¤à¥",
- "templatepage": "नमà¥à¤¨à¤¾ पà¥à¤·à¥à¤ दà¥à¤à¥",
- "viewhelppage": "सहायता पनà¥à¤¨à¤¾ दà¥à¤à¥",
- "categorypage": "सà¤à¤µà¤°à¥à¤ पनà¥à¤¨à¤¾ दà¥à¤à¥",
- "viewtalkpage": "à¤à¤ªà¤¶à¤ª दà¥à¤à¥",
- "otherlanguages": "दà¥à¤¸à¤° à¤à¤¾à¤·à¤¾à¤®à¥",
- "redirectedfrom": "(à¤à¤¤à¤¯à¤¸à¤ बहà¤à¤¾à¤°à¤² $1)",
- "redirectpagesub": "पनà¥à¤¨à¤¾à¤à¥à¤ पठाà¤",
- "redirectto": "मॠपà¥à¤¨à¤°à¥à¤¨à¤¿à¤°à¥à¤¦à¥à¤¶:",
- "lastmodifiedat": "ठपनà¥à¤¨à¤¾ à¤
नà¥à¤¤à¤¿à¤® बà¥à¤° सà¤à¤µà¤°à¥à¤§à¤¿à¤¤ à¤à¥à¤² $1, à¤à¥à¤ $2 बà¤à¥à¥¤",
- "viewcount": "ठपनà¥à¤¨à¤¾ दà¥à¤à¤² à¤à¥à¤² {{PLURAL:$1|à¤à¤ बà¥à¤°|$1 à¤à¤¤à¥à¤ बà¥à¤°}}",
- "protectedpage": "सà¤à¤°à¤à¥à¤·à¤¿à¤¤ पनà¥à¤¨à¤¾",
- "jumpto": "à¤à¤¾à¤:",
- "jumptonavigation": "हà¥à¤²à¥",
- "jumptosearch": "ताà¤à¥",
- "view-pool-error": "दà¥à¤à¥ à¤à¥, वितरठसठà¤à¤à¤¨ वà¥à¤¯à¤¸à¥à¤¤ à¤
à¤à¤¿à¥¤\nबडà¥à¤¡ बà¥à¤¶à¥ लà¥à¤ ठपनà¥à¤¨à¤¾à¤à¥à¤ दà¥à¤à¤¬à¤¾à¤®à¥ लाà¤à¤² à¤à¤¥à¤¿à¥¤\nठपनà¥à¤¨à¤¾à¤à¥à¤ फà¥à¤°à¤¸à¤ दà¥à¤à¤¬à¤¾ लà¥à¤² à¤à¤¨à¥ बिलमà¥à¥¤ \n$1",
- "generic-pool-error": "दà¥à¤à¥ à¤à¥, वितरठसठà¤à¤à¤¨ वà¥à¤¯à¤¸à¥à¤¤ à¤
à¤à¤¿à¥¤\nबडà¥à¤¡ बà¥à¤¶à¥ लà¥à¤ ठपनà¥à¤¨à¤¾à¤à¥à¤ दà¥à¤à¤¬à¤¾à¤®à¥ लाà¤à¤² à¤à¤¥à¤¿à¥¤\nठपनà¥à¤¨à¤¾à¤à¥à¤ फà¥à¤°à¤¸à¤ दà¥à¤à¤¬à¤¾ लà¥à¤² à¤à¤¨à¥ बिलमà¥à¥¤ \n$1",
+ "views": "दरà¥à¤¶à¤¾à¤µ",
+ "toolbox": "à¤à¤ªà¤à¤°à¤£",
+ "userpage": "पà¥à¤°à¤¯à¥à¤à¥à¤¤à¤¾ पनà¥à¤¨à¤¾ दà¥à¤à¥",
+ "projectpage": "परियà¥à¤à¤¨à¤¾ पनà¥à¤¨à¤¾ दà¥à¤à¥",
+ "imagepage": "फाà¤à¤² पà¥à¤·à¥à¤ दà¥à¤à¥",
+ "mediawikipage": "सनà¥à¤¦à¥à¤¶ पनà¥à¤¨à¤¾ दà¥à¤à¥",
+ "templatepage": "नमà¥à¤¨à¤¾ पà¥à¤·à¥à¤ दà¥à¤à¥",
+ "viewhelppage": "सहायता पनà¥à¤¨à¤¾ दà¥à¤à¥",
+ "categorypage": "शà¥à¤°à¥à¤£à¥ पनà¥à¤¨à¤¾ दà¥à¤à¥",
+ "viewtalkpage": "à¤à¤ªà¤¶à¤ª दà¥à¤à¥",
+ "otherlanguages": "à¤
नà¥à¤¯ à¤à¤¾à¤·à¤¾à¤¸à¤à¤®à¥",
+ "redirectedfrom": "($1सठपà¥à¤¨à¤°à¥à¤¨à¤¿à¤°à¥à¤¦à¥à¤¶à¤¿à¤¤)",
+ "redirectpagesub": "पà¥à¤·à¥à¤ पà¥à¤¨à¤°à¥à¤¨à¤¿à¤°à¥à¤¦à¥à¤¶à¤¿à¤¤ à¤à¤°à¥",
+ "redirectto": "ठà¤
नà¥à¤ªà¥à¤°à¥à¤·à¤¿à¤¤:",
+ "lastmodifiedat": "ठपà¥à¤·à¥à¤ ठपहिनà¥à¤à¤¾ बदलाव $1 à¤à¥ $2 बà¤à¥ à¤à¤à¤² à¤à¤²à¥¤",
+ "viewcount": "ठपà¥à¤·à¥à¤ {{PLURAL:$1|à¤à¤|$1}} बà¥à¤° दà¥à¤à¤² à¤à¥à¤² à¤à¤²à¥¤",
+ "protectedpage": "सà¥à¤°à¤à¥à¤·à¤¿à¤¤ पà¥à¤·à¥à¤ ",
+ "jumpto": "à¤à¤¤à¤¯ à¤à¤¾à¤:",
+ "jumptonavigation": "à¤à¥à¤°à¤®à¤£",
+ "jumptosearch": "à¤à¥à¤",
+ "view-pool-error": "à¤à¥à¤·à¤®à¤¾ à¤à¤°à¥, वितरà¤à¤¸à¤ à¤à¤à¤¨ वà¥à¤¯à¤¸à¥à¤¤ à¤
à¤à¤¿à¥¤\nबडà¥à¤¡ बà¥à¤¶à¥ लà¥à¤ ठपनà¥à¤¨à¤¾à¤ दà¥à¤à¤¬à¤¾à¤®à¥ लाà¤à¤² à¤à¤¥à¤¿à¥¤\nठपनà¥à¤¨à¤¾à¤ फà¥à¤°à¤¸à¤ दà¥à¤à¤¬à¤¾ लà¥à¤² à¤à¤¨à¥ बिलमà¥à¥¤ \n$1",
+ "generic-pool-error": "à¤à¥à¤·à¤®à¤¾ à¤à¤°à¥, वितरà¤à¤¸à¤ à¤à¤à¤¨ वà¥à¤¯à¤¸à¥à¤¤ à¤
à¤à¤¿à¥¤\nबडà¥à¤¡ बà¥à¤¶à¥ लà¥à¤ ठपनà¥à¤¨à¤¾à¤ दà¥à¤à¤¬à¤¾à¤®à¥ लाà¤à¤² à¤à¤¥à¤¿à¥¤\nठपनà¥à¤¨à¤¾à¤ फà¥à¤°à¤¸à¤ दà¥à¤à¤¬à¤¾ लà¥à¤² à¤à¤¨à¥ बिलमà¥à¥¤",
"pool-timeout": "पà¥à¤°à¤¤à¥à¤à¥à¤·à¤¾ निà¤à¥à¤¹à¥à¤¤ à¤à¤¾à¤²à¤¾à¤µà¤¸à¤¾à¤¨",
"pool-queuefull": "पà¥à¤°à¤¤à¥à¤à¥à¤·à¤¾-पाà¤à¤¤à¥ पà¥à¤¤à¥ à¤à¤°à¤²",
"pool-errorunknown": "à¤
à¤à¥à¤à¤¾à¤¤ à¤à¥à¤°à¤®",
- "pool-servererror": "पà¥à¤² à¤à¤¾à¤à¤à¤à¤° सà¥à¤µà¤¾ à¤à¤ªà¤²à¤¬à¥à¤§ नॠà¤
à¤à¤¿ ($1)।",
+ "pool-servererror": "पà¥à¤² à¤à¤¾à¤à¤¨à¥à¤à¤° सà¥à¤µà¤¾ à¤à¤ªà¤²à¤¬à¥à¤§ नॠà¤
à¤à¤¿ ($1)।",
"poolcounter-usage-error": "à¤à¤ªà¤¯à¥à¤ तà¥à¤°à¥à¤à¤¿: $1",
"aboutsite": "विषयमॠ{{SITENAME}}",
"aboutpage": "Project:विवरण",
- "copyright": "$1ठà¤
à¤à¤¤à¤°à¥à¤à¤¤ विषय सà¥à¤à¥ à¤à¤ªà¤²à¤¬à¥à¤§ à¤
à¤à¤¿",
+ "copyright": "$1ठà¤
नà¥à¤¤à¤°à¥à¤à¤¤ विषय सà¥à¤à¥ à¤à¤ªà¤²à¤¬à¥à¤§ à¤
à¤à¤¿",
"copyrightpage": "{{ns:project}}:सरà¥à¤µà¤¾à¤§à¤¿à¤à¤¾à¤°",
"currentevents": "à¤à¤-à¤à¤¾à¤²à¥à¤¹à¤¿à¤ à¤à¤à¤¨à¤¾à¤¸à¤",
"currentevents-url": "Project:à¤à¤-à¤à¤¾à¤²à¥à¤¹à¤¿à¤ à¤à¤à¤¨à¤¾à¤¸à¤",
"disclaimers": "à¤
नाधिà¤à¤¾à¤° à¤à¥à¤·à¤£à¤¾",
"disclaimerpage": "Project:à¤
नाधिà¤à¤¾à¤° à¤à¥à¤·à¤£à¤¾",
- "edithelp": "सà¤à¤ªà¤¾à¤¦à¤¨ सहयà¥à¤",
+ "edithelp": "समà¥à¤ªà¤¾à¤¦à¤¨ सहयà¥à¤",
"helppage-top-gethelp": "मदति",
"mainpage": "समà¥à¤®à¥à¤ पनà¥à¤¨à¤¾",
"mainpage-description": "समà¥à¤®à¥à¤ पà¥à¤·à¥à¤ ",
@@ -258,36 +260,36 @@
"privacy": "à¤à¥à¤ªà¤¨à¥à¤¯à¤¤à¤¾à¤ नियम",
"privacypage": "Project:à¤à¥à¤ªà¤¨à¥à¤¯à¤¤à¤¾ नियम",
"badaccess": "à¤à¤à¥à¤à¤¾ à¤à¤²à¥à¤¤à¥",
- "badaccess-group0": "à¤
हाà¤à¤à¥à¤ à¤à¤à¥à¤°à¤¹ à¤à¤à¤² à¤à¥à¤°à¤¿à¤¯à¤¾à¤à¥à¤ à¤à¤°à¤¬à¤¾à¤ à¤
नà¥à¤®à¤¤à¤¿ नॠà¤
à¤à¤¿à¥¤",
- "badaccess-groups": "à¤à¤ à¤à¥à¤°à¤¿à¤¯à¤¾à¤ à¤
हाठà¤à¤à¥à¤°à¤¹ à¤à¥à¤¨à¥ à¤à¥ सॠमातà¥à¤° à¤à¤¿à¤à¥ पà¥à¤°à¤¯à¥à¤à¥à¤¤à¤¾ लà¥à¤² सà¥à¤°à¤à¥à¤·à¤¿à¤¤ à¤
à¤à¤¿ {{PLURAL:$2|सà¤à¤µà¤°à¥à¤|सà¤à¤µà¤°à¥à¤ सà¤à¤®à¥ à¤à¤à¤à¤¾}}: $1",
- "versionrequired": "मिडियाविà¤à¥à¤à¤½ सà¤à¤¸à¥à¤à¤°à¤£ $1 à¤à¤¾à¤¹à¥",
- "versionrequiredtext": "ठपनà¥à¤¨à¤¾à¤ पà¥à¤°à¤¯à¥à¤ लà¥à¤² मिडियाविà¤à¥à¤à¤½ सà¤à¤¸à¥à¤à¤°à¤£ $1 à¤à¤¾à¤¹à¥à¥¤\nदà¥à¤à¥ [[Special:Version|पà¥à¤·à¥à¤ à¤à¤°à¥à¤¸à¤¨]]",
+ "badaccess-group0": "à¤
हाà¤à¤ à¤à¤à¥à¤°à¤¹ à¤à¤à¤² à¤à¥à¤°à¤¿à¤¯à¤¾à¤ à¤à¤°à¤¬à¤¾à¤ à¤
नà¥à¤®à¤¤à¤¿ नॠà¤
à¤à¤¿à¥¤",
+ "badaccess-groups": "à¤
हाठà¤à¥ à¤à¥à¤°à¤¿à¤¯à¤¾ à¤à¤à¤®à¥à¤¨à¥ à¤à¥ ठमातà¥à¤° {{PLURAL:$2|$1 समà¥à¤¹|$1 समà¥à¤¹à¤¸à¤}}ठसदसà¥à¤¯ हॠà¤à¤°à¤¿ सà¤à¤à¤¤ à¤
à¤à¤¿à¥¤",
+ "versionrequired": "मिडियाविà¤à¤¿à¤ सà¤à¤¸à¥à¤à¤°à¤£ $1 à¤à¤¾à¤¹à¥",
+ "versionrequiredtext": "ठपà¥à¤·à¥à¤ पà¥à¤°à¤¯à¥à¤ à¤à¤°à¥à¤ लà¥à¤² मिडियाविà¤à¤¿à¤ $1 à¤
वतरण à¤à¤°à¥à¤°à¥ à¤
à¤à¤¿à¥¤\nदà¥à¤à¥ [[Special:Version|à¤
वतरण पà¥à¤·à¥à¤ ]]।",
"ok": "ठà¥à¤ à¤
à¤à¤¿",
"pagetitle-view-mainpage": "{{à¤
नà¥à¤¤à¤°à¥à¤à¤¾à¤²}}",
"backlinksubtitle": "â $1",
"retrievedfrom": "पà¥à¤°à¤¾à¤ªà¥à¤¤à¤¿ सà¥à¤¥à¤² \"$1\"",
- "youhavenewmessages": "à¤
हाठलठà¤
à¤à¤¿ $1 ($2).",
+ "youhavenewmessages": "{{PLURAL:$3|à¤
हाà¤à¤ लà¥à¤²}} $1 ($2) à¤
à¤à¤¿à¥¤",
"youhavenewmessagesfromusers": "{{PLURAL:$4|à¤
हाà¤à¤à¥ लà¥à¤²}} $1 सठ{{PLURAL:$3|à¤
नà¥à¤¯ पà¥à¤°à¤¯à¥à¤à¥à¤¤à¤¾|$3 पà¥à¤°à¤¯à¥à¤à¥à¤¤à¤¾à¤¸à¤}} ($2)।",
"youhavenewmessagesmanyusers": "à¤
हाà¤à¤à¥ $1 सठबहà¥à¤¤ पà¥à¤°à¤¯à¥à¤à¥à¤¤à¤¾ सठ($2)।",
"newmessageslinkplural": "{{PLURAL:$1|à¤à¤à¥ नयाठपतà¥à¤°|999=नयाठपतà¥à¤°}}",
"newmessagesdifflinkplural": "à¤
नà¥à¤¤à¤¿à¤® {{PLURAL:$1|परिवरà¥à¤¤à¥à¤¤à¤¨|999=परिवरà¥à¤¤à¥à¤¤à¤¨ सà¤}}",
"youhavenewmessagesmulti": "$1 पर à¤
हाठलà¥à¤² नव पतà¥à¤° à¤
à¤à¤¿",
"editsection": "समà¥à¤ªà¤¾à¤¦à¤¨ à¤à¤°à¥",
- "editold": "समà¥à¤ªà¤¾à¤¦à¤¿à¤¤ à¤à¤°à¥",
- "viewsourceold": "à¤à¤¡à¤¼à¤¿ दà¥à¤à¥",
- "editlink": "समà¥à¤ªà¤¾à¤¦à¤¨ à¤à¤°à¥",
- "viewsourcelink": "à¤à¤¡à¥ दà¥à¤à¥",
+ "editold": "समà¥à¤ªà¤¾à¤¦à¤¿à¤¤ à¤à¤°à¥",
+ "viewsourceold": "सà¥à¤°à¥à¤¤ दà¥à¤à¥",
+ "editlink": "समà¥à¤ªà¤¾à¤¦à¤¨ à¤à¤°à¥",
+ "viewsourcelink": "सà¥à¤°à¥à¤¤ दà¥à¤à¥",
"editsectionhint": "समà¥à¤ªà¤¾à¤¦à¤¨ शाà¤à¤¾: $1",
"toc": "विषय सà¥à¤à¥à¤¸à¤",
- "showtoc": "दà¥à¤à¤¾à¤",
- "hidetoc": "नà¥à¤à¤¾à¤",
- "collapsible-collapse": "à¤à¤à¤¡à¤¼à¤¾à¤",
- "collapsible-expand": "बढ़ाà¤",
- "confirmable-confirm": "à¤à¤¿ {{GENDER:$1|à¤
हाà¤}} à¤à¥?",
+ "showtoc": "दà¥à¤à¤¾à¤¬à¥",
+ "hidetoc": "नà¥à¤à¤¾à¤¬à¥",
+ "collapsible-collapse": "à¤à¤à¤¡à¤¾à¤¬à¥",
+ "collapsible-expand": "विसà¥à¤¤à¤¾à¤° à¤à¤°à¥",
+ "confirmable-confirm": "à¤à¤¿ {{GENDER:$1|à¤
हाà¤}} निशà¥à¤à¤¿à¤¤ à¤à¥?",
"confirmable-yes": "हà¤",
"confirmable-no": "नà¥",
- "thisisdeleted": "$1 दà¥à¤à¥ वा फà¥à¤° सठà¤à¤¨à¥?",
- "viewdeleted": "$1 à¤à¥ दà¥à¤à¤¾à¤?",
+ "thisisdeleted": "$1 दà¥à¤à¥ वा फà¥à¤°à¤¸à¤ à¤à¤¨à¥?",
+ "viewdeleted": "$1 à¤à¥ दà¥à¤à¤¾à¤¬à¥?",
"restorelink": "{{PLURAL:$1|à¤à¤à¤à¤¾ मà¥à¤à¤¾à¤à¤² समà¥à¤ªà¤¾à¤¦à¤¨|$1 मà¥à¤à¤¾à¤à¤² समà¥à¤ªà¤¾à¤¦à¤¨ सà¤}}",
"feedlinks": "सà¥à¤à¤:",
"feed-invalid": "à¤
मानà¥à¤¯ सà¥à¤à¤ पà¥à¤°à¤à¤¾à¤° मासà¥à¤²",
@@ -299,8 +301,8 @@
"feed-atom": "à¤
णà¥",
"feed-rss": "à¤à¤°.à¤à¤¸.à¤à¤¸.",
"red-link-title": "$1 (पà¥à¤·à¥à¤ à¤à¤ªà¤²à¤¬à¥à¤§ नॠà¤
à¤à¤¿)",
- "sort-descending": "à¤à¤à¥à¤¤ à¤à¥à¤°à¤®à¤®à¥ à¤à¤¾à¤à¤à¥",
- "sort-ascending": "बढ़à¥à¤¤ à¤à¥à¤°à¤®à¤®à¥ à¤à¤¾à¤à¤à¥",
+ "sort-descending": "à¤à¤à¥à¤¤ à¤à¥à¤°à¤®à¤®à¥ à¤à¤¾à¤à¤à¥",
+ "sort-ascending": "बढà¥à¤¤ à¤à¥à¤°à¤®à¤®à¥ à¤à¤¾à¤à¤à¥",
"nstab-main": "पनà¥à¤¨à¤¾",
"nstab-user": "पà¥à¤°à¤¯à¥à¤à¥à¤¤à¤¾ पà¥à¤·à¥à¤ ",
"nstab-media": "मिडिया पà¥à¤·à¥à¤ ",
@@ -310,7 +312,7 @@
"nstab-mediawiki": "पतà¥à¤°",
"nstab-template": "à¤à¤à¥à¤¤à¤¿",
"nstab-help": "सहायता पà¥à¤·à¥à¤ ",
- "nstab-category": "सà¤à¤µà¤°à¥à¤",
+ "nstab-category": "शà¥à¤°à¥à¤£à¥",
"mainpage-nstab": "समà¥à¤®à¥à¤ पनà¥à¤¨à¤¾",
"nosuchaction": "à¤à¤¹à¥à¤¨ à¤à¥à¤¨à¥ à¤à¥à¤°à¤¿à¤¯à¤¾ नॠà¤
à¤à¤¿",
"nosuchactiontext": "ठसारà¥à¤µà¤¤à¥à¤°à¤¿à¤ विà¤à¤µ सà¤à¤à¥à¤¤ दà¥à¤µà¤¾à¤°à¤¾ निरà¥à¤¦à¤¿à¤·à¥à¤ à¤à¥à¤°à¤¿à¤¯à¤¾ à¤
मानà¥à¤¯ à¤
à¤à¤¿à¥¤\nà¤
हाठसारà¥à¤µà¤¤à¥à¤°à¤¿à¤ विà¤à¤µ सà¤à¤à¥à¤¤à¤ à¤à¤²à¤¤ à¤à¤à¤à¤£ à¤à¥à¤¨à¥ हà¤à¤¬, वा à¤à¥à¤¨à¥ à¤à¤²à¤¤ लिà¤à¤à¤ पाà¤à¤¾à¤ à¤à¥à¤² हà¤à¤¬à¥¤\nठ{{à¤
नà¥à¤¤à¤°à¥à¤à¤¾à¤²}} पà¥à¤°à¤¯à¥à¤à¥à¤¤à¤¾ दà¥à¤µà¤¾à¤°à¤¾ पà¥à¤°à¤¯à¥à¤à¥à¤¤ तà¤à¤¤à¥à¤°à¤¾à¤à¤¶à¤®à¥ सà¥à¤¥à¤¿à¤¤ à¤à¥à¤¨à¥ दà¥à¤·à¤ सà¤à¤à¥à¤¤ सà¥à¤¹à¥ à¤à¤½ सà¤à¥à¤à¥¤",
@@ -326,11 +328,12 @@
"laggedslavemode": "'''à¤à¥à¤¤à¥à¤¨à¥:''' पनà¥à¤¨à¤¾à¤ªà¤° समà¥à¤à¤µ à¤à¥ à¤
दà¥à¤¯à¤¤à¤¨ परिवरà¥à¤¤à¤¨ नॠहà¥à¤
à¤à¥¤",
"readonly": "दतà¥à¤¤à¤¨à¤¿à¤§à¤¿ पà¥à¤°à¤¤à¤¿à¤¬à¤¨à¥à¤§à¤¿à¤¤",
"enterlockreason": "पà¥à¤°à¤¤à¤¿à¤¬à¤¨à¥à¤§ लà¥à¤² à¤à¤¾à¤°à¤£ बताà¤, सà¤à¤à¤®à¥ à¤à¤à¤à¤¾ à¤
à¤à¤¦à¤¾à¤ सà¥à¤¹à¥ बताठà¤à¥ à¤à¤à¤¨ ठपà¥à¤°à¤¤à¤¿à¤¬à¤¨à¥à¤§ हà¤à¤¾à¤à¤² à¤à¤¾à¤à¤¤à¥¤",
- "readonlytext": "à¤
à¤à¤¨ दतà¥à¤¤à¤¾à¤à¤¶à¤¨à¤¿à¤§à¤¿ नव पà¥à¤°à¤µà¤¿à¤·à¥à¤à¤¿ ठà¤à¤¨ सà¤à¤¶à¥à¤§à¤¨ लà¥à¤² पà¥à¤°à¤¤à¤¿à¤¬à¤¨à¥à¤§à¤¿à¤¤ à¤
à¤à¤¿, समà¥à¤à¤µà¤¤à¤ सामानà¥à¤¤ दतà¥à¤¤à¤¾à¤à¤¶à¤¨à¤¿à¤§à¤¿ दà¥à¤à¤à¤¾à¤² लà¥à¤², तà¤à¤° बाद ठसामानà¥à¤¯ à¤à¤½ à¤à¤¾à¤à¤¤à¥¤\n\nसà¤à¤à¤¾à¤²à¤ à¤à¥ à¤à¤à¤°à¤¾ पà¥à¤°à¤¤à¤¿à¤¬à¤¨à¥à¤§à¤¿à¤¤ à¤à¤à¤¨à¥ à¤à¤¥à¤¿ ठà¤à¤¾à¤°à¤£ दॠà¤à¤¥à¤¿:$1",
+ "readonlytext": "à¤
à¤à¤¨ दतà¥à¤¤à¤¾à¤à¤¶à¤¨à¤¿à¤§à¤¿ नव पà¥à¤°à¤µà¤¿à¤·à¥à¤à¤¿ ठà¤à¤¨ सà¤à¤¶à¥à¤§à¤¨ लà¥à¤² पà¥à¤°à¤¤à¤¿à¤¬à¤¨à¥à¤§à¤¿à¤¤ à¤
à¤à¤¿, समà¥à¤à¤µà¤¤à¤ सामानà¥à¤¤ दतà¥à¤¤à¤¾à¤à¤¶à¤¨à¤¿à¤§à¤¿ दà¥à¤à¤à¤¾à¤² लà¥à¤², तà¤à¤° बाद ठसामानà¥à¤¯ à¤à¤½ à¤à¤¾à¤à¤¤à¥¤\n\nसà¤à¥à¤à¤¾à¤²à¤ à¤à¥ à¤à¤à¤°à¤¾ पà¥à¤°à¤¤à¤¿à¤¬à¤¨à¥à¤§à¤¿à¤¤ à¤à¤à¤¨à¥ à¤à¤¥à¤¿ ठà¤à¤¾à¤°à¤£ दॠà¤à¤¥à¤¿:$1",
"missing-article": "दतà¥à¤¤à¤¨à¤¿à¤§à¤¿ पà¥à¤·à¥à¤ ठवाà¤à¤à¤¿à¤¤ पाठà¥à¤¯ नॠताà¤à¤¿ सà¤à¤², मानॠ\"$1\" $2\nà¤à¤à¤° à¤à¤¾à¤°à¤£ à¤à¥à¤¨à¥ पà¥à¤°à¤¾à¤¨ फाà¤à¤² à¤à¥à¤¨à¥à¤¹à¤¾à¤¸à¥ वा à¤à¤¤à¤¿à¤¹à¤¾à¤¸à¤¿à¤ लिà¤à¤à¤ पाà¤à¤¾à¤ à¤à¤¾à¤à¤¬ à¤
à¤à¤¿, à¤à¥ मà¥à¤à¤¾ दà¥à¤² à¤à¥à¤² à¤à¥à¥¤\nà¤à¥à¤ ठतà¤à¤° à¤à¤¾à¤°à¤£ नॠà¤
à¤à¤¿, तà¤à¤¨ à¤
हाà¤à¤à¥à¤ तà¤à¤¤à¥à¤°à¤¾à¤à¤¶à¤®à¥ à¤à¥à¤¨à¥ दà¥à¤· à¤à¥à¤à¤² à¤
à¤à¤¿à¥¤\nà¤à¤à¤° à¤à¤¬à¤°à¤¿ पहà¥à¤à¤à¤¾à¤ [[Special:ListUsers/sysop|administrator]], à¤à¥à¤, à¤
पन सारà¥à¤µà¤¤à¥à¤°à¤¿à¤ विà¤à¤µ सà¤à¤à¥à¤¤ सà¥à¤à¤¿à¤¤ à¤à¤°à¥à¤¤à¥¤",
"missingarticle-rev": "(सà¤à¤¶à¥à¤§à¤¨#: $1)",
"missingarticle-diff": "(फाà¤à¤²-à¤
नà¥à¤¤à¤° पà¥à¤°à¤£à¤¾à¤²à¥: $1, $2)",
"readonly_lag": "दतà¥à¤¤à¤¾à¤à¤¶à¤¨à¤¿à¤§à¤¿ सà¥à¤µà¤à¤¾à¤²à¤¿à¤¤ रà¥à¤ªà¥à¤ पà¥à¤°à¤¤à¤¿à¤¬à¤¨à¥à¤§à¤¿à¤¤ à¤à¤à¤² à¤à¥à¤² à¤
à¤à¤¿ à¤à¤¾ परà¤à¥à¤µà¥ दताà¤à¤¶à¤¨à¤¿à¤§à¤¿ वितरठमà¥à¤²à¤ समà¤à¥à¤· नॠà¤à¤¬à¤¿ à¤à¤¾à¤à¥¤",
+ "nonwrite-api-promise-error": "'Promise-Non-Write-API-Action'ठà¤à¤à¤à¤¿à¤à¤¿à¤ªà¥ शà¥à¤°à¥à¤·à¤à¤¦à¥à¤µà¤¾à¤°à¤¾ à¤à¥à¤à¤² à¤à¤à¤² पर à¤à¤ªà¤¿à¤à¤à¤®à¥ लà¥à¤à¤¨ मà¥à¤¡à¥à¤¯à¥à¤² à¤
à¤à¤¿à¥¤",
"internalerror": "à¤à¤¨à¥à¤¤à¤°à¤¿à¤ à¤à¥à¤°à¤®",
"internalerror_info": "à¤à¤¨à¥à¤¤à¤°à¤¿à¤ à¤à¥à¤°à¤®: $1",
"internalerror-fatal-exception": "पà¥à¤°à¤à¤¾à¤°à¤ à¤à¤®à¥à¤à¥à¤° à¤
पवाद \"$1\"",
@@ -342,7 +345,7 @@
"directorynotreadableerror": "निरà¥à¤¦à¥à¤¶à¤¿à¤à¤¾ \"$1\" पठनà¥à¤¯ नॠà¤
à¤à¤¿à¥¤",
"filenotfound": "फाà¤à¤² \"$1\" नॠताà¤à¤¿ सà¤à¤²à¥¤",
"unexpected": "à¤à¤¸à¤ विपरà¥à¤¤ परिणाम: \"$1\"=\"$2\"",
- "formerror": "फà¥à¤°à¥à¤® नॠपठा सà¤à¤²",
+ "formerror": "तà¥à¤°à¥à¤à¤¿: फरà¥à¤® à¤
नà¥à¤°à¥à¤§ नॠà¤à¤à¤² à¤à¤¾ सà¤à¤²",
"badarticleerror": "ठà¤à¥à¤°à¤¿à¤¯à¤¾ ठपनà¥à¤¨à¤¾à¤ªà¤° नॠà¤à¤à¤² à¤à¤¾ सà¤à¥à¤à¥¤",
"cannotdelete": "पनà¥à¤¨à¤¾ व सà¤à¤à¤¿à¤à¤¾ \"$1\" मà¥à¤à¤¾à¤à¤² नॠà¤à¤¾ सà¤à¤²à¥¤",
"cannotdelete-title": "पनà¥à¤¨à¤¾ \"$1\" नॠमà¥à¤à¤¾ सà¤à¤²",
@@ -362,17 +365,17 @@
"perfcached": "ठदतà¥à¤¤à¤¾à¤à¤¶ à¤à¤ªà¤¸à¥à¤®à¥à¤¤à¤¿à¤ à¤à¤§à¤¾à¤°à¤ªà¤° à¤
à¤à¤¿ ठà¤à¤½ सà¤à¥à¤ à¤à¥ à¤
दà¥à¤¯à¤¤à¤¨ नॠहà¥à¤
à¤à¥¤ à¤
धिà¤à¤¤à¤® {{PLURAL:$1|à¤à¤à¤à¤¾ परिणाम|$1 परिणाम सà¤}} à¤à¥à¤¯à¤¾à¤à¥à¤®à¥ à¤à¤ªà¤²à¤¬à¥à¤§ à¤
à¤à¤¿ ।",
"perfcachedts": "ठदतà¥à¤¤à¤¾à¤à¤¶ à¤à¤ªà¤¸à¥à¤®à¥à¤¤à¤¿à¤®à¥ à¤
à¤à¤¿, ठà¤à¤à¤° à¤
नà¥à¤¤à¤¿à¤® परिवरà¥à¤§à¤¨ à¤à¥à¤² à¤
à¤à¤¿ $1 à¤à¥à¤à¥¤ A maximum of {{PLURAL:$4|one result is|$4 results are}} available in the cache.",
"querypage-no-updates": "ठपनà¥à¤¨à¤¾à¤ नवà¥à¤¨à¥à¤à¤°à¤£ à¤
à¤à¤¨ बनà¥à¤¨ à¤
à¤à¤¿à¥¤\nà¤à¤¤à¥à¤à¥à¤à¤¾ दतà¥à¤¤à¤¾à¤à¤¶ à¤
à¤à¤¨ नवà¥à¤à¤°à¤£ नॠà¤à¤à¤² à¤à¤¾à¤à¤¤à¥¤",
- "viewsource": "à¤à¤¡à¤¼à¤¿ दà¥à¤à¥",
- "viewsource-title": "\"$1\" लà¥à¤² à¤à¤¡à¤¼à¤¿ दà¥à¤à¥",
- "actionthrottled": "à¤à¥à¤°à¤¿à¤¯à¤¾à¤à¥à¤ मà¥à¤à¤² à¤à¥à¤²",
- "actionthrottledtext": "à¤
नपà¥à¤à¥à¤·à¤¿à¤¤ सà¤à¤¦à¥à¤¶ रà¥à¤à¤¾ लà¥à¤², à¤
हाà¤à¤à¥à¤ ठà¤à¥à¤°à¤¿à¤¯à¤¾à¤à¥à¤ à¤à¤®à¥à¤®à¥ à¤à¤¾à¤²à¤®à¥ सà¥à¤®à¤¾à¤¸à¤ बà¥à¤¶à¥ बà¥à¤° à¤à¤°à¤¬à¤¾à¤¸à¤ रà¥à¤à¤² à¤à¥à¤² à¤
à¤à¤¿, à¤
हाठà¤à¤ सà¥à¤®à¤¾à¤à¥à¤ पार à¤à¤½ à¤à¥à¤² à¤à¥à¥¤\nà¤à¥à¤ªà¤¯à¤¾ à¤à¤¿à¤à¥ à¤à¤¾à¤² बाद फà¥à¤°à¤¸à¤ पà¥à¤°à¤¯à¤¾à¤¸ à¤à¤°à¥à¥¤",
+ "viewsource": "सà¥à¤°à¥à¤¤ दà¥à¤à¥",
+ "viewsource-title": "\"$1\" लà¥à¤² सà¥à¤°à¥à¤¤ दà¥à¤à¥",
+ "actionthrottled": "à¤à¤¾à¤°à¥à¤¯ समापà¥à¤¤ à¤à¤°à¤¿ दà¥à¤² à¤à¤à¤²",
+ "actionthrottledtext": "à¤
नपà¥à¤à¥à¤·à¤¿à¤¤ सनà¥à¤¦à¥à¤¶ रà¥à¤ लà¥à¤², à¤
हाà¤à¤ ठà¤à¥à¤°à¤¿à¤¯à¤¾à¤ à¤à¤®à¥à¤®à¥ à¤à¤¾à¤²à¤®à¥ सà¥à¤®à¤¾à¤¸à¤ बà¥à¤¸à¥à¤¬à¥à¤° à¤à¤°à¤¬à¤¾à¤¸à¤ रà¥à¤à¤² à¤à¥à¤² à¤
à¤à¤¿, à¤
हाठठसà¥à¤®à¤¾à¤ पार à¤à¤½ à¤à¥à¤² à¤à¥à¥¤\nà¤à¥à¤ªà¤¯à¤¾ à¤à¤¿à¤ à¤à¤¾à¤² बाद फà¥à¤°à¤¸à¤ पà¥à¤°à¤¯à¤¾à¤¸ à¤à¤°à¥à¥¤",
"protectedpagetext": "ठपनà¥à¤¨à¤¾ समà¥à¤ªà¤¾à¤¦à¤¨ रà¥à¤à¤¬à¤¾ लà¥à¤² सà¤à¤°à¤à¥à¤·à¤¿à¤¤ à¤
à¤à¤¿à¥¤",
- "viewsourcetext": "à¤
हाठठपनà¥à¤¨à¤¾à¤ à¤à¤¡à¤¼à¤¿à¤à¥à¤ दà¥à¤ ठà¤
नà¥à¤à¥à¤¤ à¤à¤½ सà¤à¥ à¤à¥:",
- "viewyourtext": "à¤
हाठ'''à¤
हाà¤à¤ समà¥à¤ªà¤¾à¤¦à¤¨''' à¤à¥à¤ दà¥à¤ ठà¤à¤¤à¤ à¤à¤¤à¤¾à¤°à¤¿ सà¤à¥ à¤à¥:",
+ "viewsourcetext": "à¤
हाठठपà¥à¤·à¥à¤ ठà¤à¤¡à¤¿à¤ दà¥à¤ ठà¤
नà¥à¤à¥à¤¤ à¤à¤½ सà¤à¥ à¤à¥:",
+ "viewyourtext": "à¤
हाठठपà¥à¤·à¥à¤ मॠ'''à¤
पन समà¥à¤ªà¤¾à¤¦à¤¨'''ठदà¥à¤ ठà¤à¤¤à¤ à¤à¤¤à¤¾à¤°à¤¿ सà¤à¥ à¤à¥:",
"protectedinterface": "ठपनà¥à¤¨à¤¾ तà¤à¤¤à¥à¤°à¤¾à¤à¤¶ लà¥à¤² मधà¥à¤¯à¤¸à¥à¤¥ पाठठवà¥à¤¯à¤µà¤¸à¥à¤¥à¤¾ à¤à¤°à¥à¤¤ à¤
à¤à¤¿, ठà¤
पशबà¥à¤¦ रà¥à¤à¤¬à¤¾à¤ बà¥à¤¯à¥à¤à¤¤ à¤à¤°à¥à¤¤ à¤
à¤à¤¿à¥¤",
"editinginterface": "'''à¤à¥à¤¤à¥à¤¨à¥''' à¤
हाठà¤à¤à¤à¤¾ à¤à¤¹à¥à¤¨ पनà¥à¤¨à¤¾à¤ समà¥à¤ªà¤¾à¤¦à¤¨ à¤à¤½ रहल à¤à¥ à¤à¥ तà¤à¤¤à¥à¤°à¤¾à¤à¤¶à¤ मधà¥à¤¯à¤¸à¥à¤¥ पनà¥à¤¨à¤¾à¤à¥à¤ पाठदà¥à¤¬à¤¾ लà¥à¤² पà¥à¤°à¤¯à¥à¤ à¤à¤½ रहल à¤
à¤à¤¿à¥¤\nठपनà¥à¤¨à¤¾à¤®à¥ परिवरà¥à¤¤à¤¨ दà¥à¤¸à¤° पà¥à¤°à¤¯à¥à¤à¥à¤¤à¤¾ लà¥à¤² पà¥à¤°à¤¯à¥à¤à¥à¤¤à¤¾ मधà¥à¤¯à¤¸à¥à¤¥à¤ रà¥à¤ªà¤®à¥ परिवरà¥à¤¤à¤¨ à¤à¤°à¤¤à¥¤\nà¤
नà¥à¤µà¤¾à¤¦ लà¥à¤² [//translatewiki.net/wiki/Main_Page?setlang=en translatewiki.net] à¤à¤¾à¤, मà¥à¤¡à¤¿à¤¯à¤¾à¤µà¤¿à¤à¥ सà¥à¤¥à¤¾à¤¨à¥à¤¯à¤à¤°à¤£ परियà¥à¤à¤¨à¤¾ पर।",
"translateinterface": "सठविà¤à¤¿à¤¸à¤¬ à¤à¥ लà¥à¤² à¤
नà¥à¤µà¤¾à¤¦ à¤à¥à¤¡à¤ या बदलठà¤à¥ लà¥à¤² मà¥à¤¡à¤¿à¤¯à¤¾à¤µà¤¿à¤à¤¿ à¤à¥à¤·à¥à¤¤à¥à¤°à¥à¤¯à¤à¤°à¤£ परियà¥à¤à¤¨à¤¾ [//translatewiki.net/ translatewiki.net] à¤à¥à¤ पà¥à¤°à¤¯à¥à¤ à¤à¤°à¥à¥¤",
- "cascadeprotected": "ठपनà¥à¤¨à¤¾à¤ समà¥à¤ªà¤¾à¤¦à¤¨ समà¥à¤à¤µ नॠà¤
à¤à¤¿, à¤à¤¾à¤°à¤£ ठठमॠसमà¥à¤®à¤¿à¤²à¤¿à¤¤ à¤
à¤à¤¿, {{PLURAL:$1|पनà¥à¤¨à¤¾, à¤à¥ à¤
à¤à¤¿|पनà¥à¤¨à¤¾, सॠसठà¤
à¤à¤¿}} सà¥à¤°à¤à¥à¤·à¤¿à¤¤ à¤
à¤à¤¿ \"तराà¤à¤ªà¤¡à¤¼à¥\" विà¤à¤²à¥à¤ª à¤à¥à¤²à¤²à¤¾à¤ बाद:\n$2",
+ "cascadeprotected": "ठपनà¥à¤¨à¤¾à¤ समà¥à¤ªà¤¾à¤¦à¤¨ समà¥à¤à¤µ नॠà¤
à¤à¤¿, à¤à¤¾à¤°à¤£ à¤
हिमॠसमà¥à¤®à¤¿à¤²à¤¿à¤¤ à¤
à¤à¤¿, {{PLURAL:$1|पà¥à¤·à¥à¤ |पà¥à¤·à¥à¤ सà¤}} सà¥à¤°à¤à¥à¤·à¤¿à¤¤ à¤
à¤à¤¿ \"तराà¤à¤ªà¤¡à¥\" विà¤à¤²à¥à¤ª à¤à¥à¤²à¤²à¤¾à¤ बाद:\n$2",
"namespaceprotected": "à¤
हाà¤à¤à¥à¤ '''$1''' नाम-पà¥à¤à¤¾à¤°à¤®à¥ समà¥à¤ªà¤¾à¤¦à¤¨à¤ à¤
नà¥à¤®à¤¤à¤¿ नॠà¤
à¤à¤¿à¥¤",
"customcssprotected": "à¤
हाà¤à¤à¥à¤ ठसà¥.à¤à¤¸.à¤à¤¸.पनà¥à¤¨à¤¾à¤à¥à¤ समà¥à¤ªà¤¾à¤¦à¤¿à¤¤ à¤à¤°à¤¬à¤¾à¤ à¤
धिà¤à¤¾à¤° नॠà¤
à¤à¤¿, à¤à¤¾à¤°à¤£ à¤à¤®à¥ दà¥à¤¸à¤° पà¥à¤°à¤¯à¥à¤à¥à¤¤à¤¾à¤ वà¥à¤¯à¤à¥à¤¤à¤¿à¤à¤¤ विà¤à¤²à¥à¤ª à¤à¥à¥¤",
"customjsprotected": "à¤
हाà¤à¤à¥à¤ ठà¤à¤¾à¤µà¤¾à¤¸à¥à¤à¥à¤°à¤¿à¤ªà¥à¤ पनà¥à¤¨à¤¾à¤à¥à¤ समà¥à¤ªà¤¾à¤¦à¤¿à¤¤ à¤à¤°à¤¬à¤¾à¤ à¤
धिà¤à¤¾à¤° नॠà¤
à¤à¤¿, à¤à¤¾à¤°à¤£ à¤à¤®à¥ दà¥à¤¸à¤° पà¥à¤°à¤¯à¥à¤à¥à¤¤à¤¾à¤ वà¥à¤¯à¤à¥à¤¤à¤¿à¤à¤¤ विà¤à¤²à¥à¤ª à¤à¥à¥¤",
@@ -382,7 +385,7 @@
"mypreferencesprotected": "à¤
हाà¤à¥ à¤
पन पà¥à¤°à¤¾à¤¥à¤®à¤¿à¤à¤¤à¤¾ बदलà¥à¤ à¤
नà¥à¤®à¤¤à¤¿ नॠà¤
à¤à¤¿à¥¤",
"ns-specialprotected": "विशà¥à¤· पनà¥à¤¨à¤¾ सà¤à¤à¥à¤ समà¥à¤ªà¤¾à¤¦à¤¿à¤¤ नॠà¤à¤à¤² à¤à¤¾ सà¤à¥à¤à¥¤",
"titleprotected": "ठशà¥à¤°à¥à¤·à¤à¤ निरà¥à¤®à¤¾à¤£ पà¥à¤°à¤¤à¤¿à¤¬à¤¨à¥à¤§à¤¿à¤¤ à¤
à¤à¤¿ [[User:$1|$1]] दà¥à¤µà¤¾à¤°à¤¾à¥¤\nà¤à¤¾à¤°à¤£ à¤à¤¤à¤½ दà¥à¤² à¤
à¤à¤¿ $2 ।",
- "filereadonlyerror": "\"$1\" फाà¤à¤²à¤à¥ बदलà¥à¤²à¥à¤² à¤
à¤à¥à¤·à¤® à¤à¤¿à¤¯à¤¾à¤ à¤à¤£à¥à¤¡à¤¾à¤° \"$2\" ठसमय 'मातà¥à¤° पाठन à¤à¥ लà¥à¤²' (रà¥à¤¡ à¤à¤¨à¤²à¥) à¤
à¤à¤¿à¥¤\n\nà¤à¥ पà¥à¤°à¤¬à¤à¤§à¤ ठपà¥à¤°à¤¬à¤à¤§ लà¤à¥à¤¨à¥ à¤
à¤à¤¿ हà¥à¤¨à¤à¤¾ निमà¥à¤¨ विवरण पà¥à¤°à¤¦à¤¾à¤¨ à¤à¤à¤² à¤à¥à¤² à¤
à¤à¤¿: \"$3\"।",
+ "filereadonlyerror": "\"$1\" फाà¤à¤²à¤à¥ बदलà¥à¤²à¥à¤² à¤
à¤à¥à¤·à¤® à¤à¤¿à¤¯à¤¾à¤ à¤à¤£à¥à¤¡à¤¾à¤° \"$2\" ठसमय 'मातà¥à¤° पाठनठलà¥à¤²' à¤
à¤à¤¿à¥¤\n\nà¤à¥ पà¥à¤°à¤¬à¤¨à¥à¤§à¤ ठपà¥à¤°à¤¬à¤¨à¥à¤§ लà¤à¥à¤¨à¥ à¤
à¤à¤¿ ठनिमà¥à¤¨ विवरण पà¥à¤°à¤¦à¤¾à¤¨ à¤à¤à¤¨à¥ à¤
à¤à¤¿: \"$3\"।",
"invalidtitle-knownnamespace": "\"$2\" नामसà¥à¤¥à¤¾à¤¨ à¤à¤° \"$3\" नाम बला à¤à¤²à¤¤ शà¥à¤°à¥à¤·à¤",
"invalidtitle-unknownnamespace": "à¤
à¤à¥à¤à¤¾à¤¤ नामसà¥à¤¥à¤¾à¤¨ सà¤à¤à¥à¤¯à¤¾ $1 à¤à¤° नाम \"$2\" वाला à¤à¤²à¤¤ शà¥à¤°à¥à¤·à¤",
"exception-nologin": "समà¥à¤ªà¥à¤°à¤µà¥à¤¶à¤¿à¤¤ नà¥",
@@ -392,78 +395,84 @@
"virus-scanfailed": "बिमà¥à¤¬ विफल (विधà¥à¤¯à¤¾à¤¦à¥à¤¶ $1)",
"virus-unknownscanner": "à¤
à¤à¥à¤à¤¾à¤¤ विषविधि निरà¥à¤§à¤",
"logouttext": "'''à¤
हाठनिषà¥à¤à¥à¤°à¤®à¤£ à¤à¤½ à¤à¥à¤² à¤à¥à¥¤'''\n\nà¤
हाठ{{à¤
नà¥à¤¤à¤°à¥à¤à¤¾à¤²}} पà¥à¤°à¤¯à¥à¤ à¤
नाम à¤à¤½ à¤à¤½ सà¤à¥ à¤à¥, वा à¤
हाठ[$1 log in again] वà¤à¤¹ à¤à¤à¤¿ à¤à¥à¤¨à¥ à¤à¤¨ पà¥à¤°à¤¯à¥à¤à¥à¤¤à¤¾à¤ रà¥à¤ªà¤®à¥ सà¥à¤¹à¥ पà¥à¤°à¤¯à¥à¤ à¤à¤½ सà¤à¥ à¤à¥à¥¤\nठमà¥à¤¨ राà¤à¥ à¤à¥ à¤à¤¿à¤à¥ पनà¥à¤¨à¤¾ à¤à¤¨à¤¾ दà¥à¤à¤¾ पड़ि सà¤à¥à¤ à¤à¥à¤¨à¤¾ à¤
हाठà¤
à¤à¤¨à¥ समà¥à¤ªà¥à¤°à¤µà¥à¤¶à¤¿à¤¤ हà¥à¤, à¤à¤¾à¤µà¤¤ à¤
हाठà¤
पन à¤à¤µà¥à¤·à¤à¤ à¤à¤ªà¤¸à¥à¤®à¥à¤¤à¤¿ मà¥à¤à¤¾ नॠदॠà¤à¥à¥¤",
- "welcomeuser": "à¤
हाà¤à¥ सà¥à¤µà¤¾à¤à¤¤ à¤
à¤à¤¿, $1!",
+ "cannotlogoutnow-title": "à¤
à¤à¤¨ पà¥à¤°à¤¸à¥à¤¥à¤¾à¤¨ नॠà¤à¤½ रहल à¤
à¤à¤¿",
+ "cannotlogoutnow-text": "$1 ठà¤à¤ªà¤¯à¥à¤ समय पà¥à¤°à¤¸à¥à¤¥à¤¾à¤¨ नॠà¤à¤à¤² à¤à¤¾ सà¤à¤à¤¤ à¤
à¤à¤¿à¥¤",
+ "welcomeuser": "à¤
हाà¤à¤ सà¥à¤µà¤¾à¤à¤¤ à¤
à¤à¤¿, $1!",
"welcomecreation-msg": "à¤
हाà¤à¤ à¤à¤¾à¤¤à¤¾ बनाà¤à¤² à¤à¥à¤² à¤
à¤à¤¿à¥¤\nà¤
पन [[Special:Preferences|{{SITENAME}} पसनà¥à¤¦]] बदलॠलà¥à¤² नॠबिसरब।",
"yourname": "पà¥à¤°à¤¯à¥à¤à¥à¤¤à¤¾:",
"userlogin-yourname": "पà¥à¤°à¤¯à¥à¤à¥à¤¤à¤¾:",
- "userlogin-yourname-ph": "à¤
पन पà¥à¤°à¤¯à¥à¤à¥à¤¤à¤¾à¤¨à¤¾à¤® लिà¤à¥",
- "createacct-another-username-ph": "à¤à¤à¤à¤¾ पà¥à¤°à¤¯à¥à¤à¥à¤¤à¤¾à¤¨à¤¾à¤® लिà¤à¥:",
+ "userlogin-yourname-ph": "à¤
पन पà¥à¤°à¤¯à¥à¤à¤à¤°à¥à¤¤à¤¾à¤¨à¤¾à¤® लिà¤à¥",
+ "createacct-another-username-ph": "पà¥à¤°à¤¯à¥à¤à¤à¤°à¥à¤¤à¤¾à¤¨à¤¾à¤® पà¥à¤°à¤¦à¤¾à¤¨ à¤à¤°à¥",
"yourpassword": "à¤à¥à¤à¤¶à¤¬à¥à¤¦:",
- "userlogin-yourpassword": "à¤à¥à¤à¤¶à¤¬à¥à¤¦:",
- "userlogin-yourpassword-ph": "à¤
पन à¤à¥à¤à¤¶à¤¬à¥à¤¦ लिà¤à¥",
- "createacct-yourpassword-ph": "à¤à¥à¤à¤¶à¤¬à¥à¤¦ ठठाम राà¤à¥",
- "yourpasswordagain": "à¤à¥à¤à¤¶à¤¬à¥à¤¦ फà¥à¤°à¤¸à¤ à¤à¤¾à¤à¤ª à¤à¤°à¥:",
- "createacct-yourpasswordagain": "à¤à¥à¤à¤¶à¤¬à¥à¤¦à¤à¥ à¤à¤¾à¤à¤ à¤à¤°à¥",
- "createacct-yourpasswordagain-ph": "à¤à¥à¤à¤¶à¤¬à¥à¤¦ पà¥à¤¨à¤ लिà¤à¥",
- "remembermypassword": "हमर समà¥à¤ªà¥à¤°à¤µà¥à¤¶ ठà¤à¤µà¥à¤·à¤à¤ªà¤° मà¥à¤¨ राà¤à¥ (बà¥à¤¶à¥à¤¸à¤ बà¥à¤¶à¥ $1 {{PLURAL:$1|दिन|दिन}})",
- "userlogin-remembermypassword": "हमरा समà¥à¤ªà¥à¤°à¤µà¥à¤¶à¤¿à¤¤ राà¤à¥",
- "userlogin-signwithsecure": "सà¥à¤°à¤à¥à¤·à¤¿à¤¤ à¤à¤¨à¥à¤à¥à¤¶à¤¨à¤à¥ पà¥à¤°à¤¯à¥à¤ à¤à¤°à¥",
- "yourdomainname": "à¤
हाà¤à¤ पà¥à¤°à¤à¤¾à¤µà¤à¥à¤·à¥à¤¤à¥à¤°:",
- "password-change-forbidden": "à¤
हा ठविà¤à¤¿à¤®à¥ à¤à¥à¤à¤¶à¤¬à¥à¤¦ नॠबदल सà¤à¥à¤¤ à¤à¤¿ ।",
- "externaldberror": "à¤à¤¾à¤¹à¥ सतà¥à¤¯à¤¾à¤ªà¤¨ दताà¤à¤¶ à¤à¥à¤°à¤® à¤à¤² वा à¤
हाठà¤
पन बाहà¥à¤¯ à¤à¤¾à¤¤à¤¾à¤à¥à¤ à¤
दà¥à¤¯à¤¤à¤¨ à¤à¤°à¤¬à¤¾à¤®à¥ à¤
समरà¥à¤¥ à¤à¥à¥¤",
+ "userlogin-yourpassword": "à¤à¥à¤à¤¶à¤¬à¥à¤¦",
+ "userlogin-yourpassword-ph": "à¤
पन à¤à¥à¤à¤¶à¤¬à¥à¤¦ लिà¤à¥",
+ "createacct-yourpassword-ph": "à¤à¥à¤à¤¶à¤¬à¥à¤¦ दरà¥à¤ à¤à¤°à¥",
+ "yourpasswordagain": "à¤à¥à¤à¤¶à¤¬à¥à¤¦ फà¥à¤°à¤¸à¤ à¤à¤¾à¤à¤ª à¤à¤°à¥:",
+ "createacct-yourpasswordagain": "à¤à¥à¤à¤¶à¤¬à¥à¤¦à¤ à¤à¤¾à¤à¤ à¤à¤°à¥",
+ "createacct-yourpasswordagain-ph": "à¤à¥à¤à¤¶à¤¬à¥à¤¦ पà¥à¤¨à¤ लिà¤à¥",
+ "remembermypassword": "ठबà¥à¤°à¤¾à¤à¤à¤° पर हमर समà¥à¤ªà¥à¤°à¤µà¥à¤¶ याद राà¤à¥ (à¤
धिà¤à¤¤à¤® $1 {{PLURAL:$1|दिन|दिनधरि}}ठलà¥à¤²)",
+ "userlogin-remembermypassword": "हमरा समà¥à¤ªà¥à¤°à¤µà¥à¤¶à¤¿à¤¤ राà¤à¥",
+ "userlogin-signwithsecure": "सà¥à¤°à¤à¥à¤·à¤¿à¤¤ à¤à¤¨à¥à¤à¥à¤¶à¤¨à¤ पà¥à¤°à¤¯à¥à¤ à¤à¤°à¥",
+ "cannotloginnow-title": "à¤
à¤à¤¨ पà¥à¤°à¤µà¥à¤¶ नॠà¤à¤½ रहल à¤
à¤à¤¿",
+ "cannotloginnow-text": "$1 ठà¤à¤ªà¤¯à¥à¤ समय पà¥à¤°à¤µà¥à¤¶ नॠà¤à¤à¤² à¤à¤¾ सà¤à¤à¤¤ à¤
à¤à¤¿à¥¤",
+ "yourdomainname": "à¤
हाà¤à¤ डà¥à¤®à¥à¤¨ (पà¥à¤°à¤à¤¾à¤µà¤à¥à¤·à¥à¤¤à¥à¤°):",
+ "password-change-forbidden": "à¤
हाठठविà¤à¤¿à¤®à¥ à¤à¥à¤à¤¶à¤¬à¥à¤¦ नॠबदल सà¤à¥à¤¤ à¤à¥à¥¤",
+ "externaldberror": "या त पà¥à¤°à¤®à¤¾à¤£à¤¿à¤à¤°à¤£ डà¥à¤à¤¾à¤¬à¥à¤¸à¤®à¥ तà¥à¤°à¥à¤à¤¿ à¤à¤à¤² à¤
à¤à¤¿ या फà¥à¤° à¤
हाà¤à¤ à¤
पन बाहà¥à¤¯ à¤à¤¾à¤¤à¤¾ à¤
पडà¥à¤ à¤à¤°à¥à¤ à¤
नà¥à¤®à¤¤à¤¿ नॠà¤
à¤à¤¿à¥¤",
"login": "समà¥à¤ªà¥à¤°à¤µà¥à¤¶",
- "nav-login-createaccount": "समà¥à¤ªà¥à¤°à¤µà¥à¤¶ /à¤à¥à¤¸à¤°à¤¾ बनाà¤",
- "userlogin": "समà¥à¤ªà¥à¤°à¤µà¥à¤¶/ à¤à¥à¤¸à¤°à¤¾ बनाà¤",
+ "nav-login-createaccount": "समà¥à¤ªà¥à¤°à¤µà¥à¤¶ / à¤à¤¾à¤¤à¤¾ à¤à¥à¤²à¥",
+ "userlogin": "समà¥à¤ªà¥à¤°à¤µà¥à¤¶/ à¤à¤¾à¤¤à¤¾ बनाबà¥",
"userloginnocreate": "समà¥à¤ªà¥à¤°à¤µà¥à¤¶",
"logout": "निषà¥à¤à¥à¤°à¤®à¤£",
"userlogout": "फà¥à¤° à¤à¤¯à¤¬",
"notloggedin": "समà¥à¤ªà¥à¤°à¤µà¥à¤¶à¤¿à¤¤ नॠà¤à¥",
"userlogin-noaccount": "à¤à¤¾à¤¤à¤¾ नॠà¤
à¤à¤¿?",
- "userlogin-joinproject": "{{SITENAME}} सॠà¤à¥à¤¡à¥",
+ "userlogin-joinproject": "{{SITENAME}}सठà¤à¥à¤¡à¥",
"nologin": "à¤à¤¾à¤¤à¤¾ नॠà¤
à¤à¤¿? $1।",
- "nologinlink": "नव à¤à¤¾à¤¤à¤¾ à¤à¥à¤²à¥",
- "createaccount": "à¤à¤¾à¤¤à¤¾ à¤à¥à¤²à¥",
+ "nologinlink": "नव à¤à¤¾à¤¤à¤¾ à¤à¥à¤²à¥",
+ "createaccount": "à¤à¤¾à¤¤à¤¾ à¤à¥à¤²à¥",
"gotaccount": "पहिनहियà¥à¤¸à¤ à¤à¤¾à¤¤à¤¾ à¤
à¤à¤¿? $1",
"gotaccountlink": "समà¥à¤ªà¥à¤°à¤µà¥à¤¶",
- "userlogin-resetlink": "à¤
पन समà¥à¤ªà¥à¤°à¤µà¥à¤¶ विवरण बिसरि à¤à¥à¤²à¤¹à¥à¤?",
- "userlogin-resetpassword-link": "à¤
पन à¤à¥à¤à¤¶à¤¬à¥à¤¦ बिसर à¤à¥à¤²à¥ ?",
+ "userlogin-resetlink": "à¤
पन समà¥à¤ªà¥à¤°à¤µà¥à¤¶ विवरण बिसरि à¤à¥à¤²à¥?",
+ "userlogin-resetpassword-link": "à¤
पन à¤à¥à¤à¤¶à¤¬à¥à¤¦ बिसरि à¤à¥à¤²à¥?",
"userlogin-helplink2": "समà¥à¤ªà¥à¤°à¤µà¥à¤¶à¤¿à¤¤ à¤à¤°à¤µà¤¾à¤à¤²à¥à¤² मदत",
- "userlogin-loggedin": "à¤
हा {{GENDER:$1|$1}} à¤à¥ रà¥à¤ªà¤®à¥ पहिलॠस समà¥à¤ªà¥à¤°à¤µà¥à¤¶à¤¿à¤¤ à¤à¤¿à¥¤\nà¤à¥à¤¨à¥ दà¥à¤¸à¤° सदसà¥à¤¯à¤à¥ रà¥à¤ªà¤®à¥ समà¥à¤ªà¥à¤°à¤µà¥à¤¶à¤¿à¤¤ à¤à¤°à¤µà¤¾à¤ लà¥à¤² दà¥à¤² à¤à¥à¤² फारमà¤à¥ पà¥à¤°à¤¯à¥à¤ à¤à¤°à¥à¥¤",
- "userlogin-createanother": "दà¥à¤¸à¤° à¤à¤¾à¤¤à¤¾ बनाà¤",
- "createacct-emailrequired": "à¤-पतà¥à¤° सà¤à¤à¥à¤¤",
- "createacct-emailoptional": "à¤-पतà¥à¤° सà¤à¤à¥à¤¤ (वà¥à¤à¤²à¥à¤ªà¤¿à¤)",
- "createacct-email-ph": "à¤
पन à¤-पतà¥à¤° सà¤à¤à¥à¤¤ सतà¥à¤¯à¤¾à¤ªà¤¿à¤¤ à¤à¤°à¥",
- "createacct-another-email-ph": "à¤-पतà¥à¤° सà¤à¤à¥à¤¤ सतà¥à¤¯à¤¾à¤ªà¤¿à¤¤ à¤à¤°à¥",
- "createaccountmail": "à¤-पतà¥à¤° दà¥à¤µà¤¾à¤°à¤¾",
+ "userlogin-loggedin": "à¤
हाठ{{GENDER:$1|$1}}ठरà¥à¤ªà¤®à¥ पहिनà¥à¤¸à¤ समà¥à¤ªà¥à¤°à¤µà¥à¤¶à¤¿à¤¤ à¤à¥à¥¤\nà¤à¥à¤¨à¥ दà¥à¤¸à¤° सदसà¥à¤¯à¤ रà¥à¤ªà¤®à¥ समà¥à¤ªà¥à¤°à¤µà¥à¤¶à¤¿à¤¤ à¤à¤°à¤µà¤¾à¤ लà¥à¤² दà¥à¤² à¤à¥à¤² फारमà¤à¥ पà¥à¤°à¤¯à¥à¤ à¤à¤°à¥à¥¤",
+ "userlogin-createanother": "दà¥à¤¸à¤° à¤à¤¾à¤¤à¤¾ बनाबà¥",
+ "createacct-emailrequired": "à¤-मà¥à¤² पता",
+ "createacct-emailoptional": "à¤-मà¥à¤² पता (वà¥à¤à¤²à¥à¤ªà¤¿à¤)",
+ "createacct-email-ph": "à¤
पन à¤-मà¥à¤² पता लिà¤à¥",
+ "createacct-another-email-ph": "à¤à¤®à¥à¤² पता पà¥à¤°à¤¦à¤¾à¤¨ à¤à¤°à¥",
+ "createaccountmail": "à¤à¤ à¤
सà¥à¤¥à¤¾à¤¯à¥ यादà¥à¤à¥à¤à¤¿à¤ à¤à¥à¤à¤¶à¤¬à¥à¤¦ à¤à¥à¤¨à¥ ठठनिरà¥à¤¦à¤¿à¤·à¥à¤ à¤-मà¥à¤² पता पर à¤à¥à¤à¥",
"createacct-realname": "à¤
सलॠनाम (वà¥à¤à¤²à¥à¤ªà¤¿à¤)",
"createaccountreason": "à¤à¤¾à¤°à¤£:",
"createacct-reason": "à¤à¤¾à¤°à¤£:",
"createacct-reason-ph": "à¤
हा à¤à¤à¥ à¤à¤° दà¥à¤¸à¤° à¤à¤¾à¤¤à¤¾ à¤à¤¿à¤¯à¤¾à¤ बनà¤à¤¨à¥ à¤à¤¾ रहल à¤à¤¿",
"createacct-submit": "à¤
पन à¤à¤¾à¤¤à¤¾ बनाà¤",
- "createacct-another-submit": "दà¥à¤¸à¤° à¤à¤¾à¤¤à¤¾ बनाà¤",
- "createacct-benefit-heading": "{{SITENAME}} à¤
हि à¤à¥à¤à¤¾ लà¥à¤à¤¨à¤¿à¤¸à¤ दà¥à¤µà¤¾à¤°à¤¾ बनावल à¤à¥à¤² à¤
à¤à¤¿à¥¤",
- "createacct-benefit-body1": "$1 {{PLURAL:$1|समà¥à¤ªà¤¾à¤¦à¤¨|समà¥à¤ªà¤¾à¤¦à¤¨ सà¤}}",
- "createacct-benefit-body2": "{{PLURAL:$1|पनà¥à¤¨à¤¾}}",
- "createacct-benefit-body3": "{{PLURAL:$1|यà¥à¤à¤¦à¤¾à¤¨à¤à¤°à¥à¤¤à¤¾}}",
- "badretype": "à¤à¥à¤à¤¶à¤¬à¥à¤¦ à¤à¥ à¤
हाठà¤à¤°à¤²à¤¹à¥à¤ सॠमà¥à¤² नॠà¤à¤¾à¤à¤à¥¤",
- "userexists": "समà¥à¤ªà¥à¤°à¤µà¥à¤¶à¤¿à¤¤ पà¥à¤°à¤¯à¥à¤à¥à¤¤à¤¾à¤¨à¤¾à¤® पहिनहियà¥à¤¸à¤ पà¥à¤°à¤¯à¥à¤à¤®à¥ à¤
à¤à¤¿à¥¤\nà¤à¥à¤ªà¤¾ à¤à¤½ à¤à¥à¤¨à¥ दà¥à¤¸à¤° नाम à¤à¥à¤¨à¥à¥¤",
- "loginerror": "समà¥à¤ªà¥à¤°à¤µà¥à¤¶ à¤à¥à¤°à¤®",
- "createacct-error": "à¤à¤¾à¤¤à¤¾ निरà¥à¤®à¤¾à¤£ तà¥à¤°à¥à¤à¤¿",
- "createaccounterror": "à¤à¤¾à¤¤à¤¾ नॠबना सà¤à¤²: $1",
- "nocookiesnew": "पà¥à¤°à¤¯à¥à¤à¥à¤¤à¤¾ à¤à¤¾à¤¤à¤¾ à¤à¥à¤à¤¿ à¤à¥à¤², मà¥à¤¦à¤¾ à¤
हाठसमà¥à¤ªà¥à¤°à¤µà¥à¤¶à¤¿à¤¤ नॠà¤à¥à¥¤\n{{à¤
नà¥à¤¤à¤°à¥à¤à¤¾à¤²}} समà¥à¤ªà¥à¤°à¤µà¥à¤¶à¤¿à¤¤ पà¥à¤°à¤¯à¥à¤à¥à¤¤à¤¾à¤ लà¥à¤² à¤à¥à¤à¤¾à¤ªà¤à¤ पà¥à¤°à¤¯à¥à¤ à¤à¤°à¥à¤¤ à¤
à¤à¤¿à¥¤\nà¤
हाठà¤à¥à¤à¤¾à¤ªà¤à¤à¥à¤ à¤
शà¤à¥à¤¤ à¤à¥à¤¨à¥ à¤à¥à¥¤\nà¤à¥à¤ªà¤¾ à¤à¤½ à¤à¤à¤°à¤¾ सà¤à¥à¤°à¤¿à¤ª à¤à¤°à¥, तà¤à¤¨ à¤
पन पà¥à¤°à¤¯à¥à¤à¥à¤¤à¤¾à¤¨à¤¾à¤® ठà¤à¥à¤à¤¶à¤¬à¥à¤¦à¤ सà¤à¤ समà¥à¤ªà¥à¤°à¤µà¥à¤¶ à¤à¤°à¥à¥¤",
- "nocookieslogin": "{{à¤
नà¥à¤¤à¤°à¥à¤à¤¾à¤²}} पà¥à¤°à¤¯à¥à¤à¥à¤¤à¤¾à¤à¥à¤ समà¥à¤ªà¥à¤°à¤µà¥à¤¶à¤¿à¤¤ à¤à¤°à¤¬à¤¾ लà¥à¤² à¤à¥à¤à¤¾à¤ªà¤à¤ पà¥à¤°à¤¯à¥à¤ à¤à¤°à¥à¤¤ à¤
à¤à¤¿à¥¤\nà¤
हाठà¤à¥à¤à¤¾à¤ªà¤à¤à¥à¤ à¤
शà¤à¥à¤¤ à¤à¥à¤¨à¥ à¤à¥à¥¤\nà¤à¥à¤ªà¤¾ à¤à¤½ à¤à¤à¤°à¤¾ सà¤à¥à¤°à¤¿à¤¯ à¤à¤°à¥ ठफà¥à¤°à¤¸à¤ पà¥à¤°à¤¯à¤¾à¤¸ à¤à¤°à¥à¥¤",
- "nocookiesfornew": "पà¥à¤°à¤¯à¥à¤à¥à¤¤à¤¾ à¤à¤¾à¤à¤¾ नॠà¤à¥à¤à¤², à¤à¤¾à¤°à¤£ हम à¤à¤à¤° à¤à¤¡à¤¼à¤¿ पà¥à¤°à¥à¤£ रà¥à¤ªà¥à¤ नॠताà¤à¤¿ सà¤à¤²à¥à¤à¥¤\nठदà¥à¤¢à¤¼ à¤à¤°à¥ à¤à¥ à¤à¥à¤à¤¾à¤ªà¤ सà¤à¥à¤°à¤¿à¤¯ à¤
à¤à¤¿, ठपनà¥à¤¨à¤¾à¤à¥à¤ फà¥à¤°à¤¸à¤ à¤à¤¾à¤°à¤¿à¤¤ à¤à¤°à¥ ठफà¥à¤°à¤¸à¤ पà¥à¤°à¤¯à¤¾à¤¸ à¤à¤°à¥à¥¤",
+ "createacct-another-submit": "à¤à¤¾à¤¤à¤¾ बनाबà¥",
+ "createacct-benefit-heading": "{{SITENAME}} à¤
हाठà¤à¥à¤à¤¾ लà¥à¤à¤¸à¤à¤¦à¥à¤µà¤¾à¤°à¤¾ बनाà¤à¤² à¤à¤à¤² à¤
à¤à¤¿à¥¤",
+ "createacct-benefit-body1": "$1 {{PLURAL:$1|समà¥à¤ªà¤¾à¤¦à¤¨|समà¥à¤ªà¤¾à¤¦à¤¨à¤¸à¤}}",
+ "createacct-benefit-body2": "{{PLURAL:$1|पनà¥à¤¨à¤¾|पनà¥à¤¨à¤¾à¤¸à¤}}",
+ "createacct-benefit-body3": "सनà¥à¤¨à¤¿à¤à¤ {{PLURAL:$1|यà¥à¤à¤¦à¤¾à¤¨à¤à¤°à¥à¤¤à¤¾|यà¥à¤à¤¦à¤¾à¤¨à¤à¤°à¥à¤¤à¤¾à¤¸à¤}}",
+ "badretype": "à¤à¥à¤à¤¶à¤¬à¥à¤¦ à¤à¥ à¤
हाठदà¥à¤²à¥ सॠमà¥à¤² नॠà¤à¤¾à¤à¤à¥¤",
+ "usernameinprogress": "ठपà¥à¤°à¤¯à¥à¤à¥à¤¤à¤¾à¤ à¤à¤¾à¤¤à¤¾ निरà¥à¤®à¤¾à¤£ à¤
à¤à¤¨ à¤à¤¾à¤²à¥ à¤
à¤à¤¿à¥¤\nà¤à¥à¤ªà¤¯à¤¾ पà¥à¤°à¤¤à¥à¤à¥à¤·à¤¾ à¤à¤°à¥à¥¤",
+ "userexists": "समà¥à¤ªà¥à¤°à¤µà¥à¤¶à¤¿à¤¤ पà¥à¤°à¤¯à¥à¤à¥à¤¤à¤¾à¤¨à¤¾à¤® पहिनहियà¥à¤¸à¤ पà¥à¤°à¤¯à¥à¤à¤®à¥ à¤
à¤à¤¿à¥¤\nà¤à¥à¤ªà¤¾ à¤à¤½ à¤à¥à¤¨à¥ दà¥à¤¸à¤° नाम à¤à¥à¤¨à¥à¥¤",
+ "loginerror": "समà¥à¤ªà¥à¤°à¤µà¥à¤¶ तà¥à¤°à¥à¤à¥",
+ "createacct-error": "à¤à¤¾à¤¤à¤¾ निरà¥à¤®à¤¾à¤£ तà¥à¤°à¥à¤à¥",
+ "createaccounterror": "à¤à¤¾à¤¤à¤¾ नॠबनि सà¤à¤²: $1",
+ "nocookiesnew": "पà¥à¤°à¤¯à¥à¤à¥à¤¤à¤¾ à¤à¤¾à¤¤à¤¾ à¤à¥à¤à¤¿ à¤à¥à¤², मà¥à¤¦à¤¾ à¤
हाठसमà¥à¤ªà¥à¤°à¤µà¥à¤¶à¤¿à¤¤ नॠà¤à¥à¥¤\n{{SITENAME}} समà¥à¤ªà¥à¤°à¤µà¥à¤¶à¤¿à¤¤ पà¥à¤°à¤¯à¥à¤à¥à¤¤à¤¾à¤ लà¥à¤² à¤à¥à¤à¤¾à¤ªà¤à¤ पà¥à¤°à¤¯à¥à¤ à¤à¤°à¥à¤¤ à¤
à¤à¤¿à¥¤\nà¤
हाठà¤à¥à¤à¤¾à¤ªà¤à¤ à¤
शà¤à¥à¤¤ à¤à¥à¤¨à¤ à¤à¥à¥¤\nà¤à¥à¤ªà¤¾ à¤à¤½ à¤à¤à¤°à¤¾ सà¤à¥à¤°à¤¿à¤¯ à¤à¤°à¥, तà¤à¤¨ à¤
पन पà¥à¤°à¤¯à¥à¤à¥à¤¤à¤¾à¤¨à¤¾à¤® ठà¤à¥à¤à¤¶à¤¬à¥à¤¦à¤ सà¤à¤ समà¥à¤ªà¥à¤°à¤µà¥à¤¶ à¤à¤°à¥à¥¤",
+ "nocookieslogin": "{{SITENAME}} पà¥à¤°à¤¯à¥à¤à¥à¤¤à¤¾à¤ समà¥à¤ªà¥à¤°à¤µà¥à¤¶à¤¿à¤¤ à¤à¤°à¤¬à¤¾ लà¥à¤² à¤à¥à¤à¤¾à¤ªà¤à¤ पà¥à¤°à¤¯à¥à¤ à¤à¤°à¥à¤¤ à¤
à¤à¤¿à¥¤\nà¤
हाठà¤à¥à¤à¤¾à¤ªà¤à¤ à¤
शà¤à¥à¤¤ à¤à¥à¤¨à¥ à¤à¥à¥¤\nà¤à¥à¤ªà¤¾ à¤à¤½ à¤à¤à¤°à¤¾ सà¤à¥à¤°à¤¿à¤¯ à¤à¤°à¥ ठफà¥à¤°à¤¸à¤ पà¥à¤°à¤¯à¤¾à¤¸ à¤à¤°à¥à¥¤",
+ "nocookiesfornew": "पà¥à¤°à¤¯à¥à¤à¥à¤¤à¤¾ à¤à¤¾à¤à¤¾ नॠà¤à¥à¤à¤², à¤à¤¾à¤°à¤£ हम à¤à¤à¤° à¤à¤¡à¤¿ पà¥à¤°à¥à¤£ रà¥à¤ªà¥à¤ नॠताà¤à¤¿ सà¤à¤²à¥à¥¤\nठदà¥à¤¢ à¤à¤°à¥ à¤à¥ à¤à¥à¤à¤¾à¤ªà¤ सà¤à¥à¤°à¤¿à¤¯ à¤
à¤à¤¿, ठपनà¥à¤¨à¤¾à¤ फà¥à¤°à¤¸à¤ à¤à¤¾à¤°à¤¿à¤¤ à¤à¤°à¥ ठफà¥à¤°à¤¸à¤ पà¥à¤°à¤¯à¤¾à¤¸ à¤à¤°à¥à¥¤",
"noname": "à¤
हाठवà¥à¤§ पà¥à¤°à¤¯à¥à¤à¥à¤¤à¤¾à¤¨à¤¾à¤® नॠदà¥à¤¨à¥ à¤à¥à¥¤",
- "loginsuccesstitle": "समà¥à¤ªà¥à¤°à¤µà¥à¤¶ सफल",
+ "loginsuccesstitle": "समà¥à¤ªà¥à¤°à¤µà¥à¤¶ à¤à¤à¤²",
"loginsuccess": "'''à¤
हाठसमà¥à¤ªà¥à¤°à¤µà¥à¤¶ à¤à¥à¤²à¤¹à¥à¤ {{SITENAME}} \"$1\".'''ठरà¥à¤ªà¤®à¥à¥¤",
- "nosuchuser": "\"$1\" नामसठà¤à¥à¤¨à¥ पà¥à¤°à¤¯à¥à¤à¥à¤¤à¤¾ नॠà¤
à¤à¤¿à¥¤\nपà¥à¤°à¤¯à¥à¤à¥à¤¤à¤¾à¤¨à¤¾à¤® बà¥à¤°à¤¹à¥à¤®à¤à¥à¤·à¤°-लà¤à¥à¤µà¤à¥à¤·à¤° à¤à¥à¤¦ यà¥à¤à¥à¤¤ à¤
à¤à¤¿à¥¤\nà¤
पन हà¥à¤°à¤¿à¤à¥ à¤à¤¾à¤à¤à¥, वा [[Special:UserLogin/signup|नव à¤à¤¾à¤¤à¤¾ बनाà¤]] ।",
- "nosuchusershort": "\"$1\" नामà¥à¤¨à¤¾ à¤à¥à¤¨à¥ पà¥à¤°à¤¯à¥à¤à¥à¤¤à¤¾ नॠà¤
à¤à¤¿à¥¤\nà¤
पन हà¥à¤°à¤¿à¤à¤ सà¥à¤§à¤¾à¤°à¥à¥¤",
- "nouserspecified": "à¤
हाà¤à¤à¥à¤ à¤à¤à¤à¤¾ पà¥à¤°à¤¯à¥à¤à¥à¤¤à¤¾à¤¨à¤¾à¤® दà¥à¤¬à¤½ पड़त।",
+ "nosuchuser": "\"$1\" नामसठà¤à¥à¤¨à¥ पà¥à¤°à¤¯à¥à¤à¥à¤¤à¤¾ नॠà¤
à¤à¤¿à¥¤\nपà¥à¤°à¤¯à¥à¤à¥à¤¤à¤¾à¤¨à¤¾à¤® बà¥à¤°à¤¹à¥à¤®à¤à¥à¤·à¤°-लà¤à¥à¤µà¤à¥à¤·à¤° à¤à¥à¤¦ यà¥à¤à¥à¤¤ à¤
à¤à¤¿à¥¤\nà¤
पन हà¥à¤°à¤¿à¤à¥ à¤à¤¾à¤à¤à¥, वा [[Special:UserLogin/signup|नव à¤à¤¾à¤¤à¤¾ बनाबà¥]] ।",
+ "nosuchusershort": "\"$1\" नामà¥à¤¨à¤¾ à¤à¥à¤¨à¥ पà¥à¤°à¤¯à¥à¤à¥à¤¤à¤¾ नॠà¤
à¤à¤¿à¥¤\nà¤
पन हिà¤à¤ सà¥à¤§à¤¾à¤°à¥à¥¤",
+ "nouserspecified": "à¤
हाà¤à¤ à¤à¤à¤à¤¾ पà¥à¤°à¤¯à¥à¤à¥à¤¤à¤¾à¤¨à¤¾à¤® दà¥à¤¬à¤½ पडत।",
"login-userblocked": "ठपà¥à¤°à¤¯à¥à¤à¥à¤¤à¤¾ पà¥à¤°à¤¤à¤¿à¤¬à¤¨à¥à¤§à¤¿à¤¤ à¤
à¤à¤¿à¥¤ समà¥à¤ªà¥à¤°à¤µà¥à¤¶à¤ à¤
धिà¤à¤¾à¤° नॠà¤
à¤à¤¿à¥¤",
"wrongpassword": "à¤à¤²à¤¤ à¤à¥à¤à¤¶à¤¬à¥à¤¦ दà¥à¤² à¤à¥à¤²à¥¤\nफà¥à¤°à¤¸à¤ पà¥à¤°à¤¯à¤¾à¤¸ à¤à¤°à¥à¥¤",
"wrongpasswordempty": "रिà¤à¥à¤¤ à¤à¥à¤à¤¶à¤¬à¥à¤¦ दà¥à¤² à¤à¥à¤²à¥¤\nफà¥à¤°à¤¸à¤ पà¥à¤°à¤¯à¤¾à¤¸ à¤à¤°à¥à¥¤",
"passwordtooshort": "à¤à¥à¤à¤¶à¤¬à¥à¤¦ à¤à¤®à¤¸à¤ à¤à¤® {{PLURAL:$1|1 वरà¥à¤£|$1 वरà¥à¤£à¤}} हà¥à¤
à¤à¥¤",
"passwordtoolong": "à¤à¥à¤à¤¶à¤¬à¥à¤¦ kuttsabda {{PLURAL:$1|1 वरà¥à¤£|$1 वरà¥à¤£à¥à¤}} सॠबà¥à¤¸à¥ नमà¥à¤¹à¤° à¤à¥à¤¯à¤¾ सà¤à¤à¤¤ à¤
à¤à¤¿à¥¤",
+ "passwordtoopopular": "à¤à¤® पासवरà¥à¤¡ à¤
हाठनॠà¤à¥à¤¨à¤¿ सà¤à¤à¤¤ à¤
à¤à¤¿à¥¤ à¤à¥à¤ªà¤¯à¤¾ à¤
नà¥à¤à¤¾ पासवरà¥à¤¡ à¤à¥à¤¨à¥à¥¤",
"password-name-match": "à¤
हाà¤à¤ à¤à¥à¤à¤¶à¤¬à¥à¤¦ à¤
हाà¤à¤ पà¥à¤°à¤¯à¥à¤à¥à¤¤à¤¾à¤¨à¤¾à¤®à¤¸à¤ à¤à¤¿à¤¨à¥à¤¨ हà¥à¤¬à¤¾à¤ à¤à¤¾à¤¹à¥à¥¤",
"password-login-forbidden": "ठपà¥à¤°à¤¯à¥à¤à¥à¤¤à¤¾à¤¨à¤¾à¤® ठà¤à¥à¤à¤¶à¤¬à¥à¤¦à¤ पà¥à¤°à¤¯à¥à¤ पà¥à¤°à¤¤à¤¿à¤¬à¤¨à¥à¤§à¤¿à¤¤ à¤
à¤à¤¿à¥¤",
"mailmypassword": "नà¥à¤¤à¤¨ à¤à¥à¤à¤¶à¤¬à¥à¤¦ à¤-पतà¥à¤°à¤¸à¤ पठाà¤",
@@ -486,14 +495,14 @@
"emaildisabled": "ठà¤
नà¥à¤¤à¤°à¥à¤à¤¾à¤² à¤-पतà¥à¤° नॠपठाà¤à¤¤à¥¤",
"accountcreated": "à¤à¤¾à¤¤à¤¾ à¤à¥à¤à¤¿ à¤à¥à¤²",
"accountcreatedtext": "[[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|वारà¥à¤¤à¤¾]]) à¤à¥ लà¥à¤² à¤à¤¾à¤¤à¤¾ à¤à¥à¤²à¤² à¤à¥à¤² à¤
à¤à¤¿à¥¤",
- "createaccount-title": "{{à¤
नà¥à¤¤à¤°à¥à¤à¤¾à¤²}} लà¥à¤² à¤à¤¾à¤¤à¤¾ निरà¥à¤®à¤¾à¤£",
+ "createaccount-title": "{{SITENAME}}ठलà¥à¤² à¤à¤¾à¤¤à¤¾ बनाबà¥",
"createaccount-text": "à¤à¤¿à¤¯à¥ à¤
हाà¤à¤ à¤-पतà¥à¤° सà¤à¤à¥à¤¤ लà¥à¤² à¤à¤à¤à¤¾ à¤à¤¾à¤¤à¤¾ {{à¤
नà¥à¤¤à¤°à¥à¤à¤¾à¤²}} पर à¤à¥à¤²à¤²à¤¨à¥à¤¹à¤¿ ($4) नाम à¤à¥à¤² \"$2\", à¤à¥à¤à¤¶à¤¬à¥à¤¦ à¤à¥à¤² \"$3\"।\nà¤
हाठसमà¥à¤ªà¥à¤°à¤µà¥à¤¶ à¤à¤°à¥ ठà¤
पन à¤à¥à¤à¤¶à¤¬à¥à¤¦ बदलà¥à¥¤\n\nà¤
हाठठसà¤à¤¦à¥à¤¶à¤à¥à¤ बिसरि सà¤à¥ à¤à¥, à¤à¤ ठà¤à¤¾à¤¤à¤¾ à¤à¥à¤°à¤®à¤µà¤¶ बनल हà¥à¤
à¤à¥¤",
"login-throttled": "à¤
हाठढ़à¥à¤° रास समà¥à¤ªà¥à¤°à¤µà¥à¤¶ पà¥à¤°à¤¯à¤¾à¤¸ à¤à¥à¤²à¤¹à¥à¤à¥¤\nफà¥à¤° पà¥à¤°à¤¯à¤¾à¤¸ à¤à¤°à¤¬à¤¾à¤¸à¤ पहिनॠà¤à¤¨à¥ à¤à¤¾à¤² थमà¥à¤¹à¥à¥¤",
- "login-abort-generic": "à¤
हाà¤à¤ समà¥à¤ªà¥à¤°à¤µà¥à¤¶ सफल नॠà¤à¥à¤²- à¤à¤¤à¤®",
+ "login-abort-generic": "à¤
हाà¤à¤ समà¥à¤ªà¥à¤°à¤µà¥à¤¶ सफल नॠà¤à¥à¤²- रà¥à¤à¤² à¤à¤à¤²",
"login-migrated-generic": "à¤
हाà¤à¤à¥ à¤à¤¾à¤¤à¤¾ माà¤à¤à¥à¤°à¥à¤ à¤à¤à¤² à¤à¥à¤² à¤
à¤à¤¿, à¤à¤° à¤
हाà¤à¤à¥ पà¥à¤°à¤¯à¥à¤à¥à¤¤à¤¾ नाम à¤à¤¬ ठविà¤à¤¿à¤®à¥ नॠà¤
à¤à¤¿à¥¤",
"loginlanguagelabel": "à¤à¤¾à¤·à¤¾ : $1",
- "suspicious-userlogout": "à¤
हाà¤à¤ निषà¥à¤à¥à¤°à¤®à¤£à¤ à¤
नà¥à¤°à¥à¤§ नॠमानल à¤à¥à¤² à¤à¤¾à¤°à¤£ ठलाà¤à¤² à¤à¥ ठपà¥à¤°à¤¾à¤¨ à¤à¤µà¥à¤·à¤à¤ लाà¤à¤¿ वा दà¥à¤¸à¤°à¤¾à¤à¤¤ à¤à¤ªà¤¸à¥à¤®à¥à¤¤à¤¿ दà¥à¤µà¤¾à¤°à¤¾ पठाà¤à¤² à¤à¥à¤² à¤à¤²à¥¤",
- "createacct-another-realname-tip": "मà¥à¤² नाम वà¥à¤à¤²à¥à¤ªà¤¿à¤ à¤
à¤à¤¿à¥¤\nà¤à¤ à¤
हाठà¤à¤à¤°à¤¾ दà¥à¤¬à¤¾ लà¥à¤² पà¥à¤°à¤¯à¥à¤ à¤à¤°à¥ à¤à¥, ठà¤
हाà¤à¤à¥à¤ à¤à¤¾à¤à¤ शà¥à¤°à¥à¤¯ दà¥à¤¬à¤¾ लà¥à¤² à¤à¤à¤° पà¥à¤°à¤¯à¥à¤ à¤à¤à¤² à¤à¤¾à¤à¤¤à¥¤",
+ "suspicious-userlogout": "à¤
हाà¤à¤ निषà¥à¤à¥à¤°à¤®à¤£à¤ à¤
नà¥à¤°à¥à¤§ नॠमानल à¤à¥à¤² à¤à¤¾à¤°à¤£ ठलाà¤à¤² à¤à¥ ठपà¥à¤°à¤¾à¤¨ à¤à¤µà¥à¤·à¤à¤ लाà¤à¤¿ वा दà¥à¤¸à¤°à¤¾à¤à¤¤ à¤à¤ªà¤¸à¥à¤®à¥à¤¤à¤¦à¥à¤µà¤¾à¤°à¤¾ पठाà¤à¤² à¤à¥à¤² à¤à¤²à¥¤",
+ "createacct-another-realname-tip": "मà¥à¤² नाम वà¥à¤à¤²à¥à¤ªà¤¿à¤ à¤
à¤à¤¿à¥¤\nà¤à¤ à¤
हाठà¤à¤à¤°à¤¾ दà¥à¤¬à¤¾ लà¥à¤² पà¥à¤°à¤¯à¥à¤ à¤à¤°à¥ à¤à¥, ठà¤
हाà¤à¤ à¤à¤¾à¤à¤ शà¥à¤°à¥à¤¯ दà¥à¤¬à¤¾ लà¥à¤² à¤à¤à¤° पà¥à¤°à¤¯à¥à¤ à¤à¤à¤² à¤à¤¾à¤à¤¤à¥¤",
"pt-login": "समà¥à¤ªà¥à¤°à¤µà¥à¤¶",
"pt-login-button": "समà¥à¤ªà¥à¤°à¤µà¥à¤¶",
"pt-createaccount": "à¤à¤¾à¤¤à¤¾ à¤à¥à¤²à¤² à¤à¤¾à¤",
@@ -509,12 +518,25 @@
"newpassword": "नव à¤à¥à¤à¤¶à¤¬à¥à¤¦",
"retypenew": "नव à¤à¥à¤à¤¶à¤¬à¥à¤¦ फà¥à¤°à¤¸à¤ à¤à¤à¤à¤¿à¤¤ à¤à¤°à¥",
"resetpass_submit": "à¤à¥à¤à¤¶à¤¬à¥à¤¦ बनाठठसमà¥à¤ªà¥à¤°à¤µà¥à¤¶ à¤à¤°à¥",
- "changepassword-success": "à¤
हाà¤à¤ à¤à¥à¤à¤¶à¤¬à¥à¤¦ सफलतासठबदलि दà¥à¤² à¤à¥à¤²!",
+ "changepassword-success": "à¤
हाà¤à¤ पासवरà¥à¤¡ सफलतासठबदलि दà¥à¤² à¤à¥à¤²!",
"changepassword-throttled": "à¤
हाठढ़à¥à¤° रास समà¥à¤ªà¥à¤°à¤µà¥à¤¶ पà¥à¤°à¤¯à¤¾à¤¸ à¤à¥à¤²à¤¹à¥à¤à¥¤\nफà¥à¤° पà¥à¤°à¤¯à¤¾à¤¸ $1 à¤à¤°à¤¬à¤¾à¤¸à¤ पहिनॠà¤à¤¨à¥ à¤à¤¾à¤² थमà¥à¤¹à¥à¥¤",
+ "botpasswords": "बà¥à¤ पासवरà¥à¤¡",
+ "botpasswords-disabled": "बà¥à¤ पासवरà¥à¤¡ à¤
à¤à¤¨ निषà¥à¤à¥à¤°à¤¿à¤¯ à¤
à¤à¤¿à¥¤",
+ "botpasswords-no-central-id": "बà¥à¤ पासवरà¥à¤¡à¤ à¤à¤ªà¤¯à¥à¤ à¤à¤°à¤à¤ लà¥à¤² à¤
हाà¤à¤ मà¥à¤à¥à¤¯ à¤à¤¾à¤¤à¤¾à¤¸à¤ पà¥à¤°à¤µà¥à¤¶ à¤à¤°à¥ पडत।",
+ "botpasswords-existing": "वरà¥à¤¤à¤®à¤¾à¤¨ बà¥à¤ पासवरà¥à¤¡",
+ "botpasswords-createnew": "बà¥à¤à¤ लà¥à¤² नव पासवरà¥à¤¡ बनाबà¥",
+ "botpasswords-editexisting": "बà¥à¤à¤ वरà¥à¤¤à¤®à¤¾à¤¨ पासवरà¥à¤¡à¤à¥ बदलà¥",
+ "botpasswords-label-appid": "बà¥à¤ नाम:",
+ "botpasswords-label-create": "बनाबà¥",
+ "botpasswords-label-update": "à¤
दà¥à¤¯à¤¤à¤¨",
+ "botpasswords-label-cancel": "रदà¥à¤¦ à¤à¤°à¥",
+ "botpasswords-label-delete": "मà¥à¤à¤¾à¤¬à¥",
+ "botpasswords-label-resetpassword": "पासवरà¥à¤¡ पà¥à¤¨à¤ तय à¤à¤°à¥",
+ "botpasswords-label-grants": "à¤
नà¥à¤¦à¤¾à¤¨ à¤à¤µà¥à¤¦à¤¨:",
"resetpass_forbidden": "à¤à¥à¤à¤¶à¤¬à¥à¤¦ नॠबदलल à¤à¤¾ सà¤à¥à¤à¥¤",
"resetpass-no-info": "à¤
हाà¤à¤à¥à¤ ठपनà¥à¤¨à¤¾à¤à¥à¤ सà¥à¤à¥ पà¥à¤°à¤¯à¥à¤ à¤à¤°à¤¬à¤¾à¤²à¥à¤² समà¥à¤ªà¥à¤°à¤µà¥à¤¶à¤¿à¤¤ हà¥à¤
ठपड़त।",
- "resetpass-submit-loggedin": "à¤à¥à¤à¤¶à¤¬à¥à¤¦ बदलà¥",
- "resetpass-submit-cancel": "à¤à¤¤à¤® à¤à¤°à¥",
+ "resetpass-submit-loggedin": "à¤à¥à¤à¤¶à¤¬à¥à¤¦ बदलà¥",
+ "resetpass-submit-cancel": "रदà¥à¤¦ à¤à¤°à¥",
"resetpass-wrong-oldpass": "à¤
मानà¥à¤¯ à¤
सà¥à¤¥à¤¾à¤¯à¥ वा à¤
à¤à¥à¤¨à¤à¤¾ à¤à¥à¤à¤¶à¤¬à¥à¤¦à¥¤\nà¤
हाठपहिनहियॠसफलतासठà¤à¥à¤à¤¶à¤¬à¥à¤¦ बदलि लà¥à¤¨à¥ à¤à¥ वा à¤à¤à¤à¤¾ नव à¤
सà¥à¤¥à¤¾à¤¯à¥ à¤à¥à¤à¤¶à¤¬à¥à¤¦ लà¥à¤² à¤à¤à¥à¤°à¤¹ à¤à¥à¤¨à¥ à¤à¥à¥¤",
"resetpass-recycled": "रà¥à¤¸à¥à¤ à¤à¤°à¤à¤à¥ लà¥à¤² नयाठà¤à¥à¤à¤¶à¤¬à¥à¤¦à¤®à¥ à¤à¥à¤ªà¤¯à¤¾ à¤
पन वरà¥à¤¤à¤®à¤¾à¤¨ à¤à¥à¤à¤¶à¤¬à¥à¤¦ नॠद à¤à¥ नयाठà¤à¥à¤à¤¶à¤¬à¥à¤¦ दà¥à¤² à¤à¤¾à¤à¥¤",
"resetpass-temp-emailed": "à¤
हाठà¤
à¤à¤¨ à¤à¤à¤à¤¾ à¤
सà¥à¤¥à¤¾à¤¯à¥ à¤-पतà¥à¤° à¤à¥à¤¡ सठसमà¥à¤ªà¥à¤°à¤µà¥à¤¶à¤¿à¤¤ à¤à¥à¤¨à¤ à¤à¥à¥¤ समà¥à¤ªà¥à¤°à¤µà¥à¤¶ पà¥à¤°à¥à¤£ à¤à¤°à¤ à¤à¥ लà¥à¤² à¤
हाठà¤à¥ à¤à¤¤à¤ नयाठà¤à¥à¤à¤¶à¤¬à¥à¤¦ राà¤à¤ पडत:",
@@ -546,9 +568,9 @@
"changeemail-oldemail": "à¤
à¤à¥à¤¨à¤à¤¾ à¤-पतà¥à¤° सà¤à¤à¥à¤¤:",
"changeemail-newemail": "नव à¤-पतà¥à¤° सà¤à¤à¥à¤¤:",
"changeemail-none": "(à¤à¥à¤¨à¥ नà¥)",
- "changeemail-password": "à¤
हाà¤à¥ {{SITENAME}} à¤à¥à¤à¤¶à¤¬à¥à¤¦:",
- "changeemail-submit": "à¤-पतà¥à¤° सà¤à¤à¥à¤¤ बदलà¥",
- "changeemail-throttled": "à¤
हाठढ़à¥à¤° रास समà¥à¤ªà¥à¤°à¤µà¥à¤¶ पà¥à¤°à¤¯à¤¾à¤¸ à¤à¥à¤²à¤¹à¥à¤à¥¤\nफà¥à¤° पà¥à¤°à¤¯à¤¾à¤¸ à¤à¤°à¤¬à¤¾à¤¸à¤ पहिनॠà¤à¤¨à¥ à¤à¤¾à¤² थमà¥à¤¹à¥à¥¤",
+ "changeemail-password": "à¤
हाà¤à¤ {{SITENAME}} à¤à¥à¤à¤¶à¤¬à¥à¤¦:",
+ "changeemail-submit": "à¤-मà¥à¤² बदलà¥",
+ "changeemail-throttled": "à¤
हाठढà¥à¤° रास समà¥à¤ªà¥à¤°à¤µà¥à¤¶ पà¥à¤°à¤¯à¤¾à¤¸ à¤à¥à¤²à¤¹à¥à¤à¥¤\nफà¥à¤° पà¥à¤°à¤¯à¤¾à¤¸ à¤à¤°à¤¬à¤¾à¤¸à¤ पहिनॠà¤à¤¨à¥ $1 à¤à¤¾à¤² थमà¥à¤¹à¥à¥¤",
"resettokens": "à¤à¥à¤à¤¨ रà¥à¤¸à¥à¤ à¤à¤°à¥",
"resettokens-text": "à¤à¥ सà¥à¤¤à¥à¤ à¤
हाà¤à¤à¥ à¤à¤¾à¤¤à¤¾ सठसमà¥à¤¬à¤¦à¥à¤§ à¤à¤¿à¤à¥ विशिषà¥à¤ वà¥à¤¯à¤à¥à¤¤à¤¿à¤à¤¤ à¤à¤¾à¤¨à¤à¤¾à¤°à¥ पà¥à¤°à¤¦à¤¾à¤¨ à¤à¤°à¤à¤¤ à¤
à¤à¤¿, à¤
हाठवà¥à¤à¤°à¤¾ à¤à¤¤à¤ सठरिसà¥à¤ à¤à¤½ सà¤à¤à¤¤ à¤à¥à¥¤\n\nयदि à¤
हाठà¤à¤à¤°à¤¾ à¤à¤²à¤¤à¥ सठà¤à¥à¤à¤°à¥ दà¥à¤à¤¾ दà¥à¤¨à¤ à¤à¥ वा à¤
हाठà¤à¥ à¤à¤¾à¤¤à¤¾ हà¥à¤¯à¤¾à¤ ठà¤à¥à¤² à¤
à¤à¤¿ तहन à¤
हाà¤à¤à¥ à¤à¤à¤°à¤¾ रिसà¥à¤ à¤à¤½ दà¥à¤¨à¤¾ à¤à¤¾à¤¹à¥à¥¤",
"resettokens-no-tokens": "रà¥à¤¸à¥à¤ à¤à¤°à¤µà¤¾à¤ लà¥à¤² à¤à¥à¤¨à¥ à¤à¥à¤à¤¨ नॠà¤
à¤à¤¿à¥¤",
@@ -633,7 +655,7 @@
"token_suffix_mismatch": "'''à¤
हाà¤à¤ समà¥à¤ªà¤¾à¤¦à¤¨ à¤
सà¥à¤µà¥à¤à¤¾à¤° à¤à¤½ दà¥à¤² à¤à¥à¤² à¤
à¤à¤¿ à¤à¤¾à¤°à¤£ à¤
हाà¤à¤ à¤à¥à¤°à¤¾à¤¹à¤ पà¥à¤°à¥à¤·à¥à¤¯à¤®à¤¾à¤¨ à¤
à¤à¤ विधानठविराम à¤à¥à¤¨à¥à¤¹ सà¤à¤à¥à¤ नषà¥à¤ à¤à¤½ दà¥à¤²à¤¨à¥à¤¹à¤¿à¥¤'''\nठसमà¥à¤ªà¤¾à¤¦à¤¨ पनà¥à¤¨à¤¾à¤ पाठà¤à¥à¤ दà¥à¤·à¤¿à¤¤ हà¥à¤à¤¬à¤¾à¤¸à¤ बà¤à¥à¤¬à¤¾ लà¥à¤² à¤
मानà¥à¤¯ à¤à¤½ दà¥à¤² à¤à¥à¤²à¥¤\nठà¤à¤à¤¨à¥ à¤à¤¾à¤² हà¥à¤à¤ à¤à¤à¤¨ à¤
हाठà¤à¤¾à¤² à¤à¤§à¤¾à¤°à¤¿à¤¤ à¤
नाम दà¥à¤¸à¤°à¤¾ लà¥à¤² à¤à¤² सà¥à¤µà¤¾ पà¥à¤°à¤¯à¥à¤à¥à¤¤ à¤à¤°à¥ à¤à¥à¥¤",
"edit_form_incomplete": "'''समà¥à¤ªà¤¾à¤¦à¤¨ à¤à¤µà¥à¤¦à¤¨à¤ à¤à¤¿à¤à¥ à¤à¤¾à¤ वितरठधरि नॠपहà¥à¤à¤à¤²; à¤à¤ बà¥à¤° फà¥à¤° दà¥à¤à¥ à¤à¥ à¤
हाà¤à¤ समà¥à¤ªà¤¾à¤¦à¤¨ दà¥à¤°à¥à¤¸à¥à¤¤ à¤
à¤à¤¿ ठफà¥à¤°à¤¸à¤ पà¥à¤°à¤¯à¤¾à¤¸ à¤à¤°à¥à¥¤'''",
"editing": "समà¥à¤ªà¤¾à¤¦à¤¨ हà¥à¤à¤ $1",
- "creating": "$1 बनाà¤",
+ "creating": "$1 बनाबà¥",
"editingsection": "समà¥à¤ªà¤¾à¤¦à¤¨ à¤à¤½ रहल à¤à¥ $1 (à¤à¤£à¥à¤¡)",
"editingcomment": "समà¥à¤ªà¤¾à¤¦à¤¨ à¤à¤½ रहल à¤à¥ $1 (नव à¤à¤£à¥à¤¡)",
"editconflict": "समà¥à¤ªà¤¾à¤¦à¤¨ à¤
नà¥à¤¤à¤°: $1",
@@ -642,7 +664,7 @@
"storedversion": "पà¥à¤à¤¾à¤°à¤®à¥ राà¤à¤² सà¤à¤¶à¥à¤§à¤¨",
"nonunicodebrowser": "'''à¤à¥à¤¤à¥à¤¨à¥: à¤
हाà¤à¤ à¤à¤µà¥à¤·à¤ सारà¥à¤µà¤¤à¥à¤°à¤¿à¤à¤¾à¤à¥à¤·à¤°à¤à¥à¤ सहयà¥à¤à¥ नॠà¤
à¤à¤¿à¥¤'''\nà¤à¤à¤à¤¾ à¤
सà¥à¤¥à¤¾à¤¯à¥-परà¥à¤à¥à¤· तà¤à¤¤à¥à¤°à¤¾à¤à¤¶ à¤
हाà¤à¤à¥à¤ सà¥à¤°à¤à¥à¤·à¤¿à¤¤ रà¥à¤ªà¥à¤ पनà¥à¤¨à¤¾à¤ समà¥à¤ªà¤¾à¤¦à¤¨à¤®à¥ मदति à¤à¤°à¤¤: à¤à¤à¤°-à¤
सà¥à¤à¥ à¤
à¤à¥à¤·à¤° सठषà¥à¤¡à¤¶à¤®à¤¾à¤¨ पदà¥à¤§à¤¤à¤¿à¤®à¥ समà¥à¤ªà¤¾à¤¦à¤¨ बà¤à¥à¤¸à¤¾à¤®à¥ à¤à¤à¤¤à¥¤",
"editingold": "'''à¤à¥à¤¤à¥à¤¨à¥: à¤
हाठठपनà¥à¤¨à¤¾à¤ à¤à¤à¤à¤¾ पà¥à¤°à¤¾à¤¨ सà¤à¤¶à¥à¤§à¤¨à¤ समà¥à¤ªà¤¾à¤¦à¤¨ à¤à¤½ रहल à¤à¥à¥¤'''\nà¤à¤ à¤
हाठà¤à¤à¤°à¤¾ सà¤à¤°à¤à¥à¤·à¤¿à¤¤ à¤à¤°à¥ à¤à¥, à¤à¥à¤¨à¥ सà¤à¤¶à¥à¤§à¤¨ à¤à¥ ठसà¤à¤¶à¥à¤§à¤¨à¤ बाद à¤à¥à¤² à¤à¥ सॠà¤à¤¤à¤® à¤à¤½ à¤à¤¾à¤à¤¤à¥¤",
- "yourdiff": "फराà¤",
+ "yourdiff": "à¤
नà¥à¤¤à¤°",
"copyrightwarning": "à¤à¥à¤ªà¤¾ à¤à¤¯ बà¥à¤à¥ à¤à¥ सà¤à¤à¤¾ यà¥à¤à¤¦à¤¾à¤¨ {{SITENAME}} ठबà¥à¤à¤¿ à¤à¤¯ दà¥à¤² à¤à¤¾ रहल à¤
à¤à¤¿ à¤à¥ ठनिमà¥à¤¨à¤¾à¤à¤à¤¿à¤¤à¤ à¤
à¤à¤¤à¤°à¥à¤à¤¤ à¤
à¤à¤¿ $2 (दà¥à¤à¥ $1 à¤à¤¨à¤à¤¾à¤°à¥à¤ हà¥à¤¤à¥). à¤à¥à¤ à¤
हाठà¤à¤¾à¤¹à¥à¤¤ à¤à¥ à¤à¥ à¤
हाà¤à¤ रà¤à¤¨à¤¾ बिना रà¥à¤à¤à¥à¤à¤ सà¤à¤ªà¤¾à¤¦à¤¿à¤¤ नहि हॠà¤à¤¿à¤à¤µà¤¾ बाà¤à¤à¤² नहि à¤à¤¾à¤¯, तठà¤à¤à¤° यà¥à¤à¤¦à¤¾à¤¨ à¤à¤¤à¤¯ नहि à¤à¤°à¥à¥¤ \nà¤à¤¤à¤¯ à¤
हाठà¤à¤¹à¥ सपà¥à¤ªà¤¤ à¤à¤¾à¤à¤¤ à¤à¥ à¤à¥ ठà¤
हाà¤à¤ à¤
पन रà¤à¤¨à¤¾ à¤à¥ à¤à¤à¤¿ à¤
हाठà¤à¤à¤°à¤¾ à¤à¥à¤¨à¥ सारà¥à¤µà¤à¤¨à¤¿à¤ डà¥à¤®à¥à¤¨ à¤à¤¿à¤à¤µà¤¾ à¤à¤¹à¥à¤¨à¥ à¤à¥à¤¨à¥ मà¤à¤à¤¨à¥à¤ सà¤à¤¦à¤°à¥à¤-सà¥à¤¥à¤²à¤¸à¤ à¤à¥à¤ªà¥ à¤à¤à¤¨à¥ à¤à¥à¥¤\n< दà¥à¤¢à¤¼> सरà¥à¤µà¤¾à¤§à¤¿à¤à¤¾à¤° सà¥à¤°à¤à¥à¤·à¤¿à¤¤ à¤à¤¾à¤°à¥à¤¯ à¤à¤¤à¤¯ नहि दà¥à¥¤!दà¥à¤¢à¤¼>",
"copyrightwarning2": "à¤à¥à¤ªà¤¾ à¤à¤½ बà¥à¤à¥ à¤à¥ सà¤à¤à¤¾ यà¥à¤à¤¦à¤¾à¤¨ {{à¤
नà¥à¤¤à¤°à¥à¤à¤¾à¤²}} यà¥à¤à¤¦à¤¾à¤¨à¤à¤°à¥à¤¤à¤¾ दà¥à¤µà¤¾à¤°à¤¾ समà¥à¤ªà¤¾à¤¦à¤¿à¤¤, बदलल वा हà¤à¤¾à¤à¤² à¤à¤¾ सà¤à¥à¤¤ à¤
à¤à¤¿à¥¤. à¤à¥à¤ à¤
हाठà¤à¤¾à¤¹à¥à¤¤ à¤à¥ à¤à¥ à¤
हाà¤à¤ रà¤à¤¨à¤¾ बिना रà¥à¤à¤à¥à¤à¤ सà¤à¤ªà¤¾à¤¦à¤¿à¤¤ नहि हॠà¤à¤¿à¤à¤µà¤¾ बाà¤à¤à¤² नहि à¤à¤¾à¤¯, तठà¤à¤à¤° यà¥à¤à¤¦à¤¾à¤¨ à¤à¤¤à¤¯ नहि à¤à¤°à¥à¥¤ \nà¤à¤¤à¤¯ à¤
हाठà¤à¤¹à¥ सपà¥à¤ªà¤¤ à¤à¤¾à¤à¤¤ à¤à¥ à¤à¥ ठà¤
हाà¤à¤ à¤
पन रà¤à¤¨à¤¾ à¤à¥ à¤à¤à¤¿ à¤
हाठà¤à¤à¤°à¤¾ à¤à¥à¤¨à¥ सारà¥à¤µà¤à¤¨à¤¿à¤ डà¥à¤®à¥à¤¨ à¤à¤¿à¤à¤µà¤¾ à¤à¤¹à¤¨à¥ à¤à¥à¤¨à¥ मà¤à¤à¤¨à¥à¤ सà¤à¤¦à¤°à¥à¤-सà¥à¤¥à¤²à¤¸à¤ à¤à¥à¤ªà¥ à¤à¤à¤¨à¥ à¤à¥(दà¥à¤à¥ $1 वरà¥à¤£à¤¨ लà¥à¤²)।\n''' सरà¥à¤µà¤¾à¤§à¤¿à¤à¤¾à¤° सà¥à¤°à¤à¥à¤·à¤¿à¤¤ à¤à¤¾à¤°à¥à¤¯ à¤à¤¤à¤¯ नहि दà¥à¥¤!'''",
"longpageerror": "'''à¤à¥à¤°à¤®: पाठà¤à¥ à¤
हाठदà¥à¤¨à¥ à¤à¥ सॠ$1 à¤à¤¿à¤²à¥à¤¬à¤¾à¤à¤ नमà¤à¤° à¤
à¤à¤¿, à¤à¥ à¤
धिà¤à¤¤à¤® à¤à¤à¤¾à¤° $2 à¤à¤¿à¤²à¥à¤¬à¤¾à¤à¤ सठबà¥à¤¶à¥ नमà¤à¤° à¤
à¤à¤¿à¥¤'''\nठसà¤à¤°à¤à¥à¤·à¤¿à¤¤ नॠà¤à¤à¤² à¤à¤¾ सà¤à¤¤à¥¤",
@@ -660,9 +682,9 @@
"edittools": "",
"edittools-upload": "-",
"nocreatetext": "{{à¤
नà¥à¤¤à¤°à¥à¤à¤¾à¤²}} नव पनà¥à¤¨à¤¾ निरà¥à¤®à¤¾à¤£à¤ à¤à¥à¤·à¤®à¤¤à¤¾à¤à¥à¤ सà¥à¤®à¤¿à¤¤ à¤à¤½ दà¥à¤¨à¥ à¤
à¤à¤¿à¥¤\nà¤
हाठà¤à¤ªà¤¸ à¤à¤¾ सà¤à¥ à¤à¥ ठà¤à¥à¤¨à¥ पनà¥à¤¨à¤¾à¤à¥à¤ समà¥à¤ªà¤¾à¤¦à¤¿à¤¤ à¤à¤½ सà¤à¥ à¤à¥, वा [[Special:UserLogin|log in or create an account]]",
- "nocreate-loggedin": "à¤
हाà¤à¤à¥à¤ नव पनà¥à¤¨à¤¾ बनà¥à¤¬à¤¾à¤ à¤
धिà¤à¤¾à¤° नॠà¤
à¤à¤¿à¥¤",
- "sectioneditnotsupported-title": "à¤à¤à¤¡ समà¥à¤ªà¤¾à¤¦à¤¨ समरà¥à¤¥à¤¨ नà¥",
- "sectioneditnotsupported-text": "à¤à¤à¤¡ समà¥à¤ªà¤¾à¤¦à¤¨à¤ ठपनà¥à¤¨à¤¾à¤ªà¤° समरà¥à¤¥à¤¨ नà¥",
+ "nocreate-loggedin": "à¤
हाà¤à¤ नव पनà¥à¤¨à¤¾ बनà¥à¤¬à¤¾à¤ à¤
धिà¤à¤¾à¤° नॠà¤
à¤à¤¿à¥¤",
+ "sectioneditnotsupported-title": "à¤
नà¥à¤à¤¾à¤ समà¥à¤ªà¤¾à¤¦à¤¨ समरà¥à¤¥à¤¿à¤¤ नॠà¤
à¤à¤¿",
+ "sectioneditnotsupported-text": "ठपà¥à¤·à¥à¤ पर à¤
नà¥à¤à¤¾à¤ समà¥à¤ªà¤¾à¤¦à¤¨ समरà¥à¤¥à¤¿à¤¤ नॠà¤
à¤à¤¿",
"permissionserrors": "à¤à¤à¥à¤à¤¾ à¤à¤²à¥à¤¤à¥",
"permissionserrorstext": "à¤
हाà¤à¤à¥ ठलà¥à¤² à¤
नà¥à¤®à¤¤à¤¿ नॠà¤
à¤à¤¿, ठलॠ{{PLURAL:$1|à¤à¤¾à¤°à¤£|à¤à¤¾à¤°à¤£ सà¤}}:",
"permissionserrorstext-withaction": "à¤
हाà¤à¤à¥ à¤
नà¥à¤®à¤¤à¤¿ नॠà¤
à¤à¤¿ $2 लà¥à¤², ठलà¥à¤² {{PLURAL:$1|à¤à¤¾à¤°à¤£|à¤à¤¾à¤°à¤£ सà¤}}:",
@@ -932,6 +954,7 @@
"columns": "सà¥à¤¤à¤®à¥à¤ सà¤",
"searchresultshead": "ताà¤à¥",
"stub-threshold": "सà¥à¤®à¤¾ à¤à¤¾à¤à¤² लाà¤à¤¿ सà¤à¤à¤¿à¤¯à¤¾à¤à¤² (à¤
षà¥à¤à¤):",
+ "stub-threshold-sample-link": "à¤à¤¦à¤¾à¤¹à¤°à¤£",
"stub-threshold-disabled": "à¤
शà¤à¥à¤¤ à¤à¤à¤²",
"recentchangesdays": "à¤à¤-à¤à¤¾à¤²à¥à¤¹à¤¿à¤ परिवरà¥à¤¤à¤¨à¤®à¥ à¤à¤¤à¥à¤ दिन दà¥à¤à¤¾à¤à¤² à¤à¥à¤²:",
"recentchangesdays-max": "बà¥à¤¸à¥à¤¸à¤ बà¥à¤¸à¥ $1 {{PLURAL:$1|दिन|दिन}}",
@@ -939,6 +962,7 @@
"prefs-help-recentchangescount": "ठमॠसमà¥à¤®à¤¿à¤²à¤¿à¤¤ à¤
à¤à¤¿ à¤à¤-à¤à¤¾à¤²à¥à¤¹à¤¿à¤ परिवरà¥à¤¤à¤¨, पनà¥à¤¨à¤¾à¤ à¤à¤¤à¤¿à¤¹à¤¾à¤¸ ठवà¥à¤¤à¥à¤¤à¤²à¥à¤",
"prefs-help-watchlist-token2": "ठà¤
हाà¤à¤à¥ à¤à¤à¤à¥à¤·à¤¾à¤à¤¸à¥à¤à¥à¤à¥ वà¥à¤¬ फिडà¤à¥ à¤à¥à¤ªà¤¨à¥à¤¯ à¤à¤¾à¤à¥ à¤à¥ ।\nठà¤à¥ à¤à¥à¤ लà¤à¤ à¤
à¤à¤¿ ठà¤
पन à¤à¤à¤à¥à¤·à¤¾à¤à¤¸à¥à¤à¥ पà¥à¤¢ सà¤à¥à¤¤ à¤
à¤à¤¿, ठलà¥à¤² ठà¤à¥à¤¯à¥à¤ à¤à¥à¤à¤¾ स नॠबाà¤à¤¬ ।\n[[Special:ResetTokens|à¤à¤à¤°à¤¾ रà¥à¤¸à¥à¤ à¤à¤°à¤µà¤¾à¤ लà¥à¤² यॠठाम à¤à¥à¤²à¤¿à¤ à¤à¤°à¥]]।",
"savedprefs": "à¤
हाà¤à¤ पसिनà¥à¤¨ सà¥à¤°à¤à¥à¤·à¤¿à¤¤ à¤à¤à¤² à¤à¥à¤²",
+ "savedrights": "पà¥à¤°à¤¯à¥à¤à¥à¤¤à¤¾ {{GENDER:$1|$1}}ठसदसà¥à¤¯ à¤
धिà¤à¤¾à¤° सà¤à¥à¤à¥à¤°à¤¹ à¤à¤à¤² à¤à¥à¤²à¥¤",
"timezonelegend": "समय à¤à¥à¤·à¥à¤¤à¥à¤°",
"localtime": "सà¥à¤¥à¤¾à¤¨à¥à¤¯ समà¤:",
"timezoneuseserverdefault": "पà¥à¤°à¥à¤µà¤¨à¤¿à¤°à¥à¤§à¤¾à¤°à¤¿à¤¤ वितरठपà¥à¤°à¤¯à¥à¤à¥à¤¤ à¤à¤°à¥ ($1)",
@@ -966,8 +990,8 @@
"prefs-reset-intro": "à¤
हाठठपनà¥à¤¨à¤¾à¤ पà¥à¤°à¤¯à¥à¤ à¤
पन विà¤à¤²à¥à¤ªà¤à¥à¤ पà¥à¤°à¥à¤µà¤¨à¤¿à¤µà¤¿à¤·à¥à¤ रà¥à¤ªà¥à¤ à¤à¤¾à¤² पà¥à¤¨à¤°à¥à¤¨à¤¿à¤§à¤¾à¤°à¤¿à¤¤ à¤à¤°à¤¬à¤¾ लà¥à¤² à¤à¤½ सà¤à¥ à¤à¥à¥¤\nठबदलल नॠà¤à¤¾ सà¤à¥à¤à¥¤",
"prefs-emailconfirm-label": "à¤-पतà¥à¤° पà¥à¤·à¥à¤à¤¿:",
"youremail": "à¤-पतà¥à¤°:",
- "username": "पà¥à¤°à¤¯à¥à¤à¥à¤¤à¤¾à¤¨à¤¾à¤®:",
- "prefs-memberingroups": "{{PLURAL:$1|सà¤à¤µà¤°à¥à¤|सà¤à¤µà¤°à¥à¤ सà¤}}:à¤à¤à¤° सदसà¥à¤¯",
+ "username": "{{GENDER:$1|पà¥à¤°à¤¯à¥à¤à¤à¤°à¥à¤¤à¤¾à¤¨à¤¾à¤®}}:",
+ "prefs-memberingroups": "निमà¥à¤¨à¤²à¤¿à¤à¤¿à¤¤ {{PLURAL:$1|समà¥à¤¹|समà¥à¤¹à¤¸à¤}}ठ{{GENDER:$2|सदसà¥à¤¯}}:",
"prefs-memberingroups-type": "$1",
"prefs-registration": "पà¤à¤à¥à¤à¤°à¤£à¤ समà¤:",
"prefs-registration-date-time": "$1",
@@ -980,7 +1004,7 @@
"badsig": "à¤
मानà¥à¤¯ पà¥à¤°à¤¾à¤°à¤®à¥à¤à¤¿à¤ पहिà¤à¤¾à¤¨à¥¤\nà¤à¤.à¤à¥.à¤à¤®.à¤à¤².à¤à¥à¤¨à¥à¤¹ à¤à¤¾à¤à¤à¥à¥¤",
"badsiglength": "à¤
हाà¤à¤ हसà¥à¤¤à¤¾à¤à¥à¤·à¤° बडà¥à¤¡ पà¥à¤ à¤
à¤à¤¿à¥¤\nठ$1 सठबà¥à¤¸à¥ नॠहà¥à¤¬à¤¾à¤ à¤à¤¾à¤¹à¥ {{PLURAL:$1|वरà¥à¤£|वरà¥à¤£}} पà¥à¤à¥¤",
"yourgender": "पà¥à¤°à¥à¤ à¤à¤à¤¿ सà¥à¤¤à¥à¤°à¥",
- "gender-unknown": "à¤
à¤à¥à¤à¤¾à¤¤",
+ "gender-unknown": "à¤
हाà¤à¤ वरà¥à¤£à¤¨ à¤à¤°à¥à¤¤ समय, à¤à¤¤à¥à¤à¤§à¤°à¤¿ समà¥à¤à¤µ हà¥à¤à¤¤ सफà¥à¤à¤µà¥à¤¯à¤° लिà¤à¥à¤ तà¤à¤¸à¥à¤¥ शबà¥à¤¦à¤¸à¤à¤ पà¥à¤°à¤¯à¥à¤ à¤à¤°à¤¤",
"gender-male": "पà¥à¤°à¥à¤",
"gender-female": "सà¥à¤¤à¥à¤°à¥",
"prefs-help-gender": "वà¥à¤à¤²à¥à¤ªà¤¿à¤: तà¤à¤¤à¥à¤°à¤¾à¤à¤¶ दà¥à¤µà¤¾à¤°à¤¾ लिà¤à¤ निरपà¥à¤à¥à¤· समà¥à¤¬à¥à¤§à¤¨ लà¥à¤² पà¥à¤°à¤¯à¥à¤à¥à¤¤à¥¤\nठसà¥à¤à¤¨à¤¾ सारà¥à¤µà¤à¤¨à¤¿à¤ हà¤à¤¤à¥¤",
@@ -1010,10 +1034,10 @@
"userrights": "पà¥à¤°à¤¯à¥à¤à¥à¤¤à¤¾ à¤
धिà¤à¤¾à¤°à¤ पà¥à¤°à¤¬à¤¨à¥à¤§à¤¨",
"userrights-lookup-user": "पà¥à¤°à¤¯à¥à¤à¥à¤¤à¤¾ सà¤à¤µà¤°à¥à¤ सà¤à¤ पà¥à¤°à¤¬à¤¨à¥à¤§ à¤à¤°à¥",
"userrights-user-editname": "à¤à¤à¤à¤¾ पà¥à¤°à¤¯à¥à¤à¥à¤¤à¤¾à¤¨à¤¾à¤® लिà¤à¥:",
- "editusergroup": "पà¥à¤°à¤¯à¥à¤à¥à¤¤à¤¾ सà¤à¤µà¤°à¥à¤ सà¤à¤ समà¥à¤ªà¤¾à¤¦à¤¨ à¤à¤°à¥",
- "editinguser": "पà¥à¤°à¤¯à¥à¤à¥à¤¤à¤¾à¤ पà¥à¤°à¤¯à¥à¤à¥à¤¤à¤¾ à¤
धिà¤à¤¾à¤° बदलब '''[[User:$1|$1]]''' $2",
+ "editusergroup": "{{GENDER:$1|सदसà¥à¤¯}} समà¥à¤¹à¤¸à¤à¤ समà¥à¤ªà¤¾à¤¦à¤¨ à¤à¤°à¥",
+ "editinguser": "सदसà¥à¤¯ '''[[User:$1|$1]]''' $2 ठà¤
धिà¤à¤¾à¤° बदलि\n{{GENDER:$1|सदसà¥à¤¯}}ठसदसà¥à¤¯ à¤
धिà¤à¤¾à¤° बदलल à¤à¤¾ रहल à¤
à¤à¤¿ [[User:$1|$1]] $2",
"userrights-editusergroup": "पà¥à¤°à¤¯à¥à¤à¥à¤¤à¤¾ सà¤à¤µà¤°à¥à¤ सà¤à¤ समà¥à¤ªà¤¾à¤¦à¤¨ à¤à¤°à¥",
- "saveusergroups": "पà¥à¤°à¤¯à¥à¤à¥à¤¤à¤¾ सà¤à¤µà¤°à¥à¤ सà¤à¤à¥à¤ सà¥à¤°à¤à¥à¤·à¤¿à¤¤ à¤à¤°à¥",
+ "saveusergroups": "{{GENDER:$1|सदसà¥à¤¯}} समà¥à¤¹ सà¤à¥à¤à¥à¤°à¤¹ à¤à¤°à¥",
"userrights-groupsmember": "ठसदसà¥à¤¯:",
"userrights-groupsmember-auto": "ठà¤à¤¾à¤¨à¤² सदसà¥à¤¯:",
"userrights-groups-help": "à¤
हाठठपà¥à¤°à¤¯à¥à¤à¥à¤¤à¤¾à¤ वरà¥à¤à¤à¥à¤ बदलि सà¤à¥ à¤à¥:\n* à¤à¤à¤à¤¾ निशान लà¤à¤¾à¤à¤² बà¤à¥à¤¸à¤¾ मानॠपà¥à¤°à¤¯à¥à¤à¥à¤¤à¤¾ à¤à¤ वरà¥à¤à¤®à¥ à¤
à¤à¤¿à¥¤\n* à¤à¤à¤à¤¾ बिन निशान लà¤à¤¾à¤à¤² मानॠपà¥à¤°à¤¯à¥à¤à¥à¤¤à¤¾ à¤à¤ वरà¥à¤à¤®à¥ नॠà¤
à¤à¤¿à¥¤\n* ठ* दà¥à¤à¤¬à¥à¤ à¤à¥ à¤
हाठवरà¥à¤à¤à¥à¤ à¤à¤ बà¥à¤° दà¥à¤²à¤¾à¤ बाद हà¤à¤¾ नॠसà¤à¥ à¤à¥, ठà¤à¤à¤° à¤à¤²à¤ सà¥à¤¹à¥ ठà¥à¤ à¤
à¤à¤¿à¥¤",
@@ -1027,31 +1051,32 @@
"userrights-irreversible-marker": "$1*",
"userrights-conflict": "पà¥à¤°à¤¯à¥à¤à¥à¤¤à¤¾ à¤
धिà¤à¤¾à¤° बदलावठसमयमॠà¤
à¤à¤¤à¤°à¥à¤µà¤¿à¤°à¥à¤§! à¤à¥à¤ªà¤¯à¤¾ à¤
पन बदलाव à¤à¤¾à¤à¤ à¤à¤°à¥ ठपà¥à¤¨à¤ सà¥à¤¨à¤¿à¤¶à¥à¤à¤¿à¤¤ à¤à¤°à¥à¥¤",
"userrights-removed-self": "à¤
हाठसफलतापà¥à¤°à¥à¤µà¤ à¤
पन à¤
धिà¤à¤¾à¤° हà¤à¤¾ दà¥à¤¨à¥ à¤à¥à¥¤ à¤
तठà¤
हाठà¤à¤¬ ठपà¥à¤·à¥à¤ नॠदà¥à¤ सà¤à¥à¤¤ à¤à¥à¥¤",
- "group": "वरà¥à¤:",
- "group-user": "पà¥à¤°à¤¯à¥à¤à¥à¤¤à¤¾ सà¤",
+ "group": "समà¥à¤¹:",
+ "group-user": "पà¥à¤°à¤¯à¥à¤à¥à¤¤à¤¾à¤¸à¤",
"group-autoconfirmed": "सà¥à¤µà¤¤à¤à¤
नà¥à¤®à¥à¤¦à¤¿à¤¤ पà¥à¤°à¤¯à¥à¤à¥à¤¤à¤¾ सà¤",
"group-bot": "सà¥à¤µà¤à¤¾à¤²à¤",
- "group-sysop": "माà¤à¤¨à¤à¤¨",
+ "group-sysop": "पà¥à¤°à¤¬à¤¨à¥à¤§à¤",
"group-bureaucrat": "à¤
धिà¤à¤¾à¤°à¥",
- "group-suppress": "नà¤à¤°à¤¿à¤ªà¤° नॠà¤à¤à¤²",
+ "group-suppress": "नà¥à¤à¤¾à¤¬à¤ वाला",
"group-all": "(सà¤)",
"group-user-member": "{{लिà¤à¤:$1|पà¥à¤°à¤¯à¥à¤à¥à¤¤à¤¾}}",
"group-autoconfirmed-member": "{{लिà¤à¤:$1|सà¥à¤µà¤¤à¤à¤
नà¥à¤®à¥à¤¦à¤¿à¤¤ पà¥à¤°à¤¯à¥à¤à¥à¤¤à¤¾}}",
"group-bot-member": "{{लिà¤à¤:$1|सà¥à¤µà¤à¤¾à¤²à¤}}",
"group-sysop-member": "{{लिà¤à¤:$1|माà¤à¤¨à¤à¤¨}}",
"group-bureaucrat-member": "{{लिà¤à¤:$1|à¤
धिà¤à¤¾à¤°à¥}}",
- "group-suppress-member": "{{लिà¤à¤:$1|नà¤à¤°à¤¿à¤ªà¤° नॠà¤à¤à¤²}}",
+ "group-suppress-member": "{{GENDER:$1|नà¥à¤à¤¾à¤ वाला}}",
"grouppage-user": "{{ns:project}}:पà¥à¤°à¤¯à¥à¤à¥à¤¤à¤¾ सà¤",
"grouppage-autoconfirmed": "{{ns:project}}:सà¥à¤µà¤¤à¤à¤
नà¥à¤®à¥à¤¦à¤¿à¤¤ पà¥à¤°à¤¯à¥à¤à¥à¤¤à¤¾ सà¤",
"grouppage-bot": "{{ns:project}}:सà¥à¤µà¤à¤¾à¤²à¤ सà¤",
"grouppage-sysop": "{{ns:project}}:माà¤à¤¨à¤à¤¨ सà¤",
"grouppage-bureaucrat": "{{ns:project}}:à¤
धिà¤à¤¾à¤°à¥ सà¤",
- "grouppage-suppress": "{{ns:project}}:नà¤à¤°à¤¿à¤ªà¤° नॠà¤à¤à¤²",
+ "grouppage-suppress": "{{ns:project}}:नà¥à¤à¤¾à¤¬à¥",
"right-read": "पनà¥à¤¨à¤¾ सठपढ़à¥",
"right-edit": "पनà¥à¤¨à¤¾ सठसमà¥à¤ªà¤¾à¤¦à¤¨ à¤à¤°à¥",
"right-createpage": "पनà¥à¤¨à¤¾ सठबनाठ(à¤à¥ वारà¥à¤¤à¤¾ पनà¥à¤¨à¤¾ नॠहà¥à¤
à¤)",
"right-createtalk": "वारà¥à¤¤à¤¾ पनà¥à¤¨à¤¾ सठबनाà¤",
"right-createaccount": "नव पà¥à¤°à¤¯à¥à¤à¥à¤¤à¤¾ à¤à¤¾à¤¤à¤¾ सठबनाà¤",
+ "right-autocreateaccount": "बाहरॠà¤à¤¾à¤¤à¤¾à¤¸à¤ सà¥à¤µà¤¤à¤ पà¥à¤°à¤µà¥à¤¶",
"right-minoredit": "समà¥à¤ªà¤¾à¤¦à¤¨ सà¤à¤à¥à¤ मामà¥à¤²à¥ à¤à¤¿à¤¨à¥à¤¹à¤¿à¤¤ à¤à¤°à¥",
"right-move": "पनà¥à¤¨à¤¾ सठà¤à¤¸à¤à¤¾à¤",
"right-move-subpages": "पनà¥à¤¨à¤¾ सà¤à¤à¥à¤ à¤à¤ªà¤ªà¤¨à¥à¤¨à¤¾ सà¤à¤ सà¤à¤ à¤à¤¸à¤à¤¾à¤",
@@ -1120,6 +1145,9 @@
"right-managechangetags": "डà¥à¤à¤¾à¤¬à¥à¤¸ सॠ[[Special:Tags|नà¥à¤à¤¾à¤¬à¥]] बनाबॠà¤à¤° हà¤à¤¾à¤¬à¥",
"right-applychangetags": "पà¥à¤°à¤¯à¥à¤ मà¥à¤ लाबॠ[[Special:Tags|tags]] à¤à¤à¥à¤°à¥ बदलाव à¤à¥ साथ।",
"right-changetags": "à¤à¤®à¤¾ à¤à¤°à¥ à¤à¤° हà¤à¤¾à¤¬à¥ सà¥à¤µà¤¤à¤à¤¤à¥à¤° [[Special:Tags|à¤à¥à¤]] वà¥à¤¯à¤à¥à¤¤à¤¿à¤à¤¤ à¤
वतरण à¤à¤° लà¥à¤ पà¥à¤°à¤µà¤¿à¤à¥à¤¤à¤¿ पà¥",
+ "grant-generic": "\"$1\" à¤
धिà¤à¤¾à¤° सà¤à¥à¤à¥à¤°à¤¹",
+ "grant-group-page-interaction": "पà¥à¤·à¥à¤ सà¤à¤¸à¤ à¤à¥à¤¡à¥",
+ "grant-group-file-interaction": "मिडियासठà¤à¥à¤¡à¥",
"newuserlogpage": "पà¥à¤°à¤¯à¥à¤à¥à¤¤à¤¾ रà¤à¤¨à¤¾ वà¥à¤¤à¥à¤¤à¤²à¥à¤",
"newuserlogpagetext": "ठपà¥à¤°à¤¯à¥à¤à¥à¤¤à¤¾ निरà¥à¤®à¤¾à¤£à¤ वà¥à¤¤à¥à¤¤à¤²à¥à¤ à¤
à¤à¤¿à¥¤",
"rightslog": "पà¥à¤°à¤¯à¥à¤à¥à¤¤à¤¾ à¤
धिà¤à¤¾à¤° वà¥à¤¤à¥à¤¤à¤²à¥à¤",
@@ -1182,7 +1210,7 @@
"recentchanges-label-bot": "ठसमà¥à¤ªà¤¾à¤¦à¤¨ याà¤à¤¤à¥à¤°à¤¿à¤ à¤à¤²à¥¤",
"recentchanges-label-unpatrolled": "ठसमà¥à¤ªà¤¾à¤¦à¤¨à¤ पà¥à¤¨à¤°à¥à¤à¥à¤·à¤£ à¤
à¤à¤¨ धरि नॠà¤à¤à¤² à¤à¥à¤² à¤
à¤à¤¿à¥¤",
"recentchanges-label-plusminus": "पनà¥à¤¨à¤¾à¤à¥ à¤à¤à¤¾à¤° ठबाà¤à¤ सà¤à¤à¥à¤¯à¤¾à¤¸à¥ बदलल à¤à¥à¤²",
- "recentchanges-legend-heading": "à¤à¥à¤à¤à¥: ",
+ "recentchanges-legend-heading": "à¤à¥à¤à¥à¤à¥: ",
"recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} ([[Special:NewPages|नयाठपनà¥à¤¨à¤¸à¤à¤à¥ सà¥à¤à¥]] सहॠदà¥à¤à¥)",
"rcnotefrom": "नà¥à¤à¤¾à¤à¤®à¥ '''$2''' सठà¤à¥à¤² परिवरà¥à¤¤à¤¨ à¤
à¤à¤¿ ('''$1''' धरि दà¥à¤à¤¾à¤à¤²)।",
"rclistfrom": "$3 $2 सठशà¥à¤°à¥ à¤à¥à¤² नव परिवरà¥à¤¤à¤¨ दà¥à¤à¥",
@@ -1323,6 +1351,17 @@
"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-form-label-infoform-title": "विवरण",
+ "upload-form-label-infoform-name": "नाम",
+ "upload-form-label-infoform-description": "विवरण",
+ "upload-form-label-usage-title": "à¤à¤ªà¤¯à¥à¤",
+ "upload-form-label-usage-filename": "फाà¤à¤²à¤ नाम",
+ "foreign-structured-upload-form-label-own-work": "ठहमर à¤à¤¾à¤ à¤à¥",
+ "foreign-structured-upload-form-label-infoform-categories": "शà¥à¤°à¥à¤£à¥à¤¸à¤",
+ "foreign-structured-upload-form-label-infoform-date": "दिनाà¤à¥à¤",
"backend-fail-stream": "\"$1\" à¤à¥à¤ नॠसà¥à¤à¥à¤°à¤¿à¤® ठसà¤à¤²à¥¤",
"backend-fail-backup": "\"$1\" à¤à¥à¤ नॠबà¥à¤¯à¤¾à¤à¤
प ठसà¤à¤²à¥¤",
"backend-fail-notexists": "फाà¤à¤² $1 नॠà¤
à¤à¤¿à¥¤",
@@ -1627,8 +1666,6 @@
"categories": "सà¤à¤µà¤°à¥à¤ सà¤",
"categoriespagetext": "ठ{{PLURAL:$1|सà¤à¤µà¤°à¥à¤à¤®à¥ à¤
à¤à¤¿|सà¤à¤µà¤°à¥à¤ सà¤à¤®à¥ à¤
à¤à¤¿}} पनà¥à¤¨à¤¾ वा मà¥à¤¡à¤¿à¤¯à¤¾à¥¤\n[[Special:UnusedCategories|Unused categories]] à¤à¤¤à¤ दà¥à¤à¤¾à¤à¤² नॠà¤
à¤à¤¿à¥¤\nà¤à¤¹à¥ दà¥à¤à¥ [[Special:WantedCategories|wanted categories]]।",
"categoriesfrom": "पनà¥à¤¨à¤¾ पà¥à¤°à¤¦à¤°à¥à¤¶à¤¨ पà¥à¤°à¤¾à¤°à¤®à¥à¤ à¤à¥à¤²:",
- "special-categories-sort-count": "à¤à¤¾à¤¨à¤¿ à¤à¤½ à¤à¤¾à¤à¤à¥",
- "special-categories-sort-abc": "वरà¥à¤£à¤¾à¤à¥à¤·à¤°à¤¾à¤¨à¥à¤¸à¤¾à¤° à¤à¤¾à¤à¤à¥",
"deletedcontributions": "मà¥à¤à¤¾à¤à¤² पà¥à¤°à¤¯à¥à¤à¥à¤¤à¤¾ यà¥à¤à¤¦à¤¾à¤¨ सà¤",
"deletedcontributions-title": "मà¥à¤à¤¾à¤à¤² पà¥à¤°à¤¯à¥à¤à¥à¤¤à¤¾ यà¥à¤à¤¦à¤¾à¤¨ सà¤",
"sp-deletedcontributions-contribs": "यà¥à¤à¤¦à¤¾à¤¨ सà¤",
@@ -2185,11 +2222,7 @@
"import-logentry-upload-detail": "$1 {{PLURAL:$1|सà¥à¤§à¤¾à¤°|सà¥à¤§à¤¾à¤° सà¤}}",
"import-logentry-interwiki-detail": "$1 {{PLURAL:$1|सà¥à¤§à¤¾à¤°|सà¥à¤§à¤¾à¤° सà¤}} $2 सà¤",
"javascripttest": "à¤à¤¾à¤µà¤¾à¤¸à¥à¤à¥à¤°à¤¿à¤ªà¥à¤ परिà¤à¥à¤·à¤£",
- "javascripttest-pagetext-noframework": "ठपà¥à¤·à¥à¤ à¤à¤¾à¤µà¤¾à¤¸à¥à¤à¥à¤°à¤¿à¤ªà¥à¤ परà¥à¤à¥à¤·à¤£ à¤à¤²à¤¾à¤µà¤ à¤à¥ लà¥à¤² à¤
à¤à¤¿à¥¤",
- "javascripttest-pagetext-unknownframework": "à¤
à¤à¥à¤à¤¾à¤¤ परà¥à¤à¥à¤·à¤£ ढाà¤à¤à¤¾ \"$1\"",
"javascripttest-pagetext-unknownaction": "à¤
à¤à¥à¤à¤¾à¤¤ à¤à¥à¤°à¤¿à¤¯à¤¾ \"$1\" ।",
- "javascripttest-pagetext-frameworks": "à¤à¥à¤ªà¤¯à¤¾ निमà¥à¤¨ परà¥à¤à¥à¤·à¤£ ढाà¤à¤à¤¾ सठमà¥à¤ सठà¤à¤ à¤à¥à¤¨à¥: $1",
- "javascripttest-pagetext-skins": "परà¥à¤à¥à¤·à¤£ à¤à¤°à¤ à¤à¥ लà¥à¤² तà¥à¤µà¤à¤¾ à¤à¥à¤¨à¥:",
"javascripttest-qunit-intro": "mediawiki.org पर [$1 परà¥à¤à¥à¤·à¤£ à¤à¥ पà¥à¤°à¤²à¥à¤à¤¨] दà¥à¤à¥à¥¤",
"tooltip-pt-userpage": "{{GENDER:|à¤
हाà¤à¤ पà¥à¤°à¤¯à¥à¤à¤à¤°à¥à¤¤à¤¾}} पà¥à¤·à¥à¤ ",
"tooltip-pt-anonuserpage": "समà¥à¤ªà¤¾à¤¦à¥à¤¨ à¤à¤à¤² à¤à¤¾ रहल सà¥à¤¥à¤¾à¤¨à¤ à¤
निà¤à¥à¤¤à¤ पà¥à¤°à¤¯à¥à¤à¥à¤¤à¤¾ पनà¥à¤¨à¤¾",
@@ -2451,8 +2484,8 @@
"exif-colorspace": "रà¤à¤à¤ सà¥à¤¥à¤¾à¤¨",
"exif-componentsconfiguration": "सठà¤à¤à¤à¤ à¤
रà¥à¤¥",
"exif-compressedbitsperpixel": "à¤à¤¿à¤¤à¥à¤° सà¤à¤à¥à¤à¤¨ à¤
वसà¥à¤¥à¤¾",
- "exif-pixelydimension": "तसà¥à¤µà¥à¤°à¤ à¤à¥à¤¡à¤¾à¤",
- "exif-pixelxdimension": "तसà¥à¤µà¥à¤°à¤ à¤à¤à¤à¤¾à¤",
+ "exif-pixelxdimension": "तसà¥à¤µà¥à¤°à¤ à¤à¥à¤¡à¤¾à¤",
+ "exif-pixelydimension": "तसà¥à¤µà¥à¤°à¤ à¤à¤à¤à¤¾à¤",
"exif-usercomment": "सदसà¥à¤¯à¤ à¤à¤¿à¤ªà¥à¤ªà¤£à¥",
"exif-relatedsoundfile": "सà¤à¤¬à¤à¤§à¤¿à¤¤ धà¥à¤µà¤¨à¤¿ फ़ाà¤à¤²",
"exif-datetimeoriginal": "डाà¤à¤¾ बनाबà¥à¤ तारà¥à¤ ठसमय",
@@ -2886,7 +2919,6 @@
"version-libraries-library": "लाà¤à¤¬à¥à¤°à¥à¤°à¥",
"version-libraries-version": "सà¤à¤¸à¥à¤à¤°à¤£",
"redirect": "à¤
नà¥à¤ªà¥à¤°à¥à¤·à¤¿à¤¤ à¤à¤°à¥ फ़ाà¤à¤², पà¥à¤°à¤¯à¥à¤à¤à¤°à¥à¤¤à¤¾, वा सà¤à¤¶à¥à¤§à¤¨ पहà¥à¤à¤¾à¤¨ à¤à¥ à¤à¤§à¤¾à¤° मà¥à¤",
- "redirect-legend": "फ़ाà¤à¤² à¤
थवा पनà¥à¤¨à¤¾ à¤à¥ पà¥à¤¨à¤°à¥à¤ªà¥à¤°à¥à¤·à¤£",
"redirect-summary": "ठविशà¥à¤· पनà¥à¤¨à¤¾ फ़ाà¤à¤²à¤¨à¤¾à¤® पà¥à¤°à¤¦à¤¾à¤¨ à¤à¤°à¥ पॠफ़ाà¤à¤² नाम à¤à¥, पनà¥à¤¨ à¤à¤à¥°à¤¦à¥ à¤
थवा à¤
वतरण à¤à¤à¥°à¤¦à¥ दà¥à¤¨à¥ पॠपनà¥à¤¨à¤¾ à¤à¥,à¤à¤° साथॠसदसà¥à¤¯ à¤à¤à¥°à¤¦à¥ दà¥à¤¨à¥ पॠसदसà¥à¤¯ पनà¥à¤¨à¤¾ à¤à¥ पà¥à¤¨à¤°à¥à¤ªà¥à¤°à¥à¤·à¤¿à¤¤ à¤à¤°à¤à¤¤ à¤
à¤à¤¿ । à¤à¤¦à¤¾à¤¹à¤°à¤£: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], या [[{{#Special:Redirect}}/user/101]]।",
"redirect-submit": "à¤à¤¾à¤",
"redirect-lookup": "ताà¤à¥:",
@@ -2898,7 +2930,6 @@
"redirect-not-exists": "बà¥à¤¨à¤° नà¥à¤ मिलà¥à¤²",
"fileduplicatesearch": "दà¥à¤µà¤¿à¤¤à¥à¤¯à¤ सà¤à¤à¤¿à¤à¤¾ ताà¤à¥",
"fileduplicatesearch-summary": "हà¥à¤¶ मानठà¤à¤§à¤¾à¤°à¤ªà¤° दà¥à¤µà¤¿à¤¤à¥à¤¯à¤ सà¤à¤à¤¿à¤à¤¾ ताà¤à¥à¥¤",
- "fileduplicatesearch-legend": "दà¥à¤µà¤¿à¤¤à¥à¤¯à¤ ताà¤à¥",
"fileduplicatesearch-filename": "सà¤à¤à¤¿à¤à¤¾à¤¨à¤¾à¤®:",
"fileduplicatesearch-submit": "ताà¤à¥",
"fileduplicatesearch-info": "$1 à $2 à¤à¤¿à¤¤à¥à¤°à¤¾à¤£à¥ फाà¤à¤² à¤à¤à¤¾à¤°: $3 माà¤à¤® पà¥à¤°à¤à¤¾à¤°: $4",
diff --git a/languages/i18n/mdf.json b/languages/i18n/mdf.json
index e5169da87c..bd32f5a0ea 100644
--- a/languages/i18n/mdf.json
+++ b/languages/i18n/mdf.json
@@ -1135,8 +1135,6 @@
"categories": "ÐаÑегоÑиеÑ",
"categoriespagetext": "{{PLURAL:$1|Ð¢Ñ ÐºÐ°ÑегоÑиенÑ|ÑÑ ÐºÐ°ÑегоÑиеÑненÑ}} ÑÑа ÑлиÑ
ÑÑ Ð»Ð¾Ð¿Ð°Ñ Ñли медиаÑ.\n[[Special:UnusedCategories|ÑÐµÐ²Ñ Ð°Ð¿Ð°Ðº нолдак каÑегоÑиÑÑне]] ÑÑÑа Ð°Ñ Ð½ÑÑневиÑ
ÑÑ.\nСÑане ина ваÑÑ [[Special:WantedCategories|веÑема каÑегоÑиеÑ]].",
"categoriesfrom": "ÐÑÑÑÐµÐ¼Ñ ÐºÐ°ÑегоÑÐ¸ÐµÑ ÑÑÑÑа ÑÑедозÑ:",
- "special-categories-sort-count": "аÑаÑÑÐ¾Ð¼Ñ Ð»ÑÑÑÑ ÐºÐ¾ÑÑÑ",
- "special-categories-sort-abc": "аÑаÑÑÐ¾Ð¼Ñ Ð°Ð»ÑавиÑÐ¾Ð½Ñ ÐºÐ¾ÑÑÑ",
"deletedcontributions": "ÐаÑÐ´Ð°Ñ ÑииÑ
Ð½ÐµÐ½Ñ Ð¿ÑÑкÑÑна",
"deletedcontributions-title": "ÐаÑÐ´Ð°Ñ ÑииÑ
Ð½ÐµÐ½Ñ Ð¿ÑÑкÑÑна",
"linksearch": "УÑеÑиÑÐµÐ½Ñ ÑÑлмаÑкÑне",
@@ -1714,8 +1712,8 @@
"exif-colorspace": "ТÑÑÐ¾Ð½Ñ ÑÑкаÑÑ",
"exif-componentsconfiguration": "ÐÑÑ ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÐµÐ½ÑÐ¾Ð½Ñ Ð°ÑÑÑ",
"exif-compressedbitsperpixel": "ÐÑÑ
ÑоÑкÑÐ¾Ð½Ñ ÐºÐ¾Ð¼Ð¿ÑезийамаÑÑ",
- "exif-pixelydimension": "ÐондÑÑÑи аÑÑ
ÑоÑкÑÐ¾Ð½Ñ ÐºÐµÐ»ÐµÑ",
- "exif-pixelxdimension": "ÐондÑÑÑи аÑÑ
ÑоÑкÑÐ¾Ð½Ñ ÑеÑеÑ",
+ "exif-pixelxdimension": "ÐондÑÑÑи аÑÑ
ÑоÑкÑÐ¾Ð½Ñ ÐºÐµÐ»ÐµÑ",
+ "exif-pixelydimension": "ÐондÑÑÑи аÑÑ
ÑоÑкÑÐ¾Ð½Ñ ÑеÑеÑ",
"exif-usercomment": "ТииÑÑ ÑÑÑÑÑкÑонза",
"exif-relatedsoundfile": "СоÑÑ Ð°Ñдио ÑайлÑÑ",
"exif-datetimeoriginal": "Ð¨Ð¸Ð½Ñ ÑиевомаÑÑ ÑиÑÑ Ð´Ð¸ пингÑÑ",
@@ -1984,7 +1982,6 @@
"version-software-version": "ÐеÑзие",
"fileduplicatesearch": "ÐеÑÐµÐ½Ð´ÐµÐ¼Ñ ÐºÐ°ÑÐ¾Ð½Ð·Ð°Ñ ÑайлÑ
не",
"fileduplicatesearch-summary": "ÐеÑÐµÐ½Ð´ÐµÐ¼Ñ ÐºÐ°ÑÐ¾Ð½Ð·Ð°Ñ ÑайлÑ
Ð½ÐµÐ½Ñ Ñ
ÑÑ-ÐºÐ¾Ð´Ð¾Ð½Ñ Ð»ÑÐ²ÐºÑ ÐºÐ¾ÑÑÑ.",
- "fileduplicatesearch-legend": "ÐеÑÐµÐ½Ð´ÐµÐ¼Ñ ÐºÐ°ÑонзаÑкÑ",
"fileduplicatesearch-filename": "Файллем:",
"fileduplicatesearch-submit": "ÐеÑендемÑ",
"fileduplicatesearch-info": "$1 à $2 пикÑÐµÐ»Ñ Ð¤Ð°Ð¹Ð» кÑвалмоÑ: $3 MIME ÑоÑÑ: $4",
diff --git a/languages/i18n/mg.json b/languages/i18n/mg.json
index 83925c2c26..b7a8909d4d 100644
--- a/languages/i18n/mg.json
+++ b/languages/i18n/mg.json
@@ -289,7 +289,7 @@
"sort-descending": "Fandaharana miiba",
"sort-ascending": "Fandaharana miabo",
"nstab-main": "Lahatsoratra",
- "nstab-user": "Pejy ny mpikambana",
+ "nstab-user": "Pejim-pikambana",
"nstab-media": "Pejy sary sy/na feo",
"nstab-special": "Pejy Manokana",
"nstab-project": "Tetikasa",
@@ -1711,8 +1711,6 @@
"categories-submit": "Aseho",
"categoriespagetext": "{{PLURAL:$1}}Ampiasain'ny rakitra na pejy ireo sokajy manaraka ireo.\nTsy hiseho eto ny [[Special:UnusedCategories|sokajy tsy miasa]].\nVangio koa ny [[Special:WantedCategories|sokajy ilaina]].",
"categoriesfrom": "Haneho ny sokajy manomboka amin'ny :",
- "special-categories-sort-count": "afantina amin'ny isan-javatra",
- "special-categories-sort-abc": "famantinana ara-abidy",
"deletedcontributions": "Fandraisan'anjara voafafa",
"deletedcontributions-title": "fandraisan'anjara voafafa",
"sp-deletedcontributions-contribs": "fandraisan'anjara",
@@ -2277,7 +2275,6 @@
"importlogpagetext": "Fampidirana ara-pandraharahana ny pejy miaraka amin'ny tantaram-panvany avy any amin'ny wiki hafa.",
"javascripttest": "Fanandramana JavaScript",
"javascripttest-pagetext-unknownaction": "Asa tsy fantatra \"$1\".",
- "javascripttest-pagetext-skins": "Mifidia skin hanaovana ny fanandramana:",
"javascripttest-qunit-intro": "Jereo ny [$1 fanoroana mikasika ny andrana] eo amin'i mediawiki.org.",
"tooltip-pt-userpage": "Ny pejim-pikambanao",
"tooltip-pt-anonuserpage": "Ny pejim-bikamban'ny IP andraisanao anjara",
@@ -2509,8 +2506,8 @@
"exif-colorspace": "Valan-doko",
"exif-componentsconfiguration": "Dikan'ny mpanorina tsirairay",
"exif-compressedbitsperpixel": "Fomba famintinan-tsary",
- "exif-pixelydimension": "Haavon-tsary",
- "exif-pixelxdimension": "Halala-tsary",
+ "exif-pixelxdimension": "Haavon-tsary",
+ "exif-pixelydimension": "Halala-tsary",
"exif-usercomment": "Diniky ny mpikambana",
"exif-relatedsoundfile": "Rakitra audio miaraka",
"exif-datetimeoriginal": "Daty fangalana niaviana",
@@ -2875,7 +2872,6 @@
"redirect-logid": "ID laogy",
"redirect-not-exists": "Sanda tsy hita",
"fileduplicatesearch": "Hitady rakitra mitovy endrika",
- "fileduplicatesearch-legend": "Hitady mitovy endrika",
"fileduplicatesearch-filename": "Anaran-drakitra :",
"fileduplicatesearch-submit": "Hikaroka",
"fileduplicatesearch-info": "piksely $1 Ã $2 Haben'ilay rakitra : $3 Karazana MIME : $4",
diff --git a/languages/i18n/min.json b/languages/i18n/min.json
index e498c304c8..7b6abe6fa1 100644
--- a/languages/i18n/min.json
+++ b/languages/i18n/min.json
@@ -194,7 +194,7 @@
"articlepage": "Lihek isi laman",
"talk": "Rundiang",
"views": "Caliak",
- "toolbox": "Kotak pakakeh",
+ "toolbox": "Pakakeh",
"userpage": "Lihek laman pangguno",
"projectpage": "Caliak laman proyek",
"imagepage": "Caliak laman berkas",
@@ -282,6 +282,7 @@
"nstab-template": "Templat",
"nstab-help": "Bantuan",
"nstab-category": "Kategori",
+ "mainpage-nstab": "Palanta",
"nosuchaction": "Indak ado tindakan tasabuik",
"nosuchactiontext": "Tindakan nan diminta dek URL tasabuik indak valid. Sanak mungkin salah mangetikkan URL, atau mangikuik pautan nan salah. Iko mungkin manunjuakan adonyo suatu bug pado parangkaik lunak nan dipagunoan dek {{SITENAME}}.",
"nosuchspecialpage": "Indak ado laman istimewa tasabuik",
@@ -431,6 +432,8 @@
"login-abort-generic": "Proses masuak Sanak indak barasil - Dibatalan",
"loginlanguagelabel": "Baso: $1",
"suspicious-userlogout": "Pamintaan Sanak untuak kalua log ditulak karano tampaknyo dikirim oleh paramban nan rusak atau proksi panyinggah.",
+ "pt-login": "Masuak log",
+ "pt-createaccount": "Buek akun",
"pt-userlogout": "Kalua log",
"php-mail-error-unknown": "Kasalahan nan indak jaleh dalam fungsi mail() PHP",
"user-mail-no-addy": "Mancubo mangirim surel tanpa alamaik surel.",
@@ -953,6 +956,7 @@
"minoreditletter": "k",
"newpageletter": "B",
"boteditletter": "b",
+ "rc-change-size-new": "$1 {{PLURAL:$1|byte|bita}} satalah parubahan",
"rc-enhanced-expand": "Tampilkan rincian (paralu JavaScript)",
"rc-enhanced-hide": "Suruakkan rincian",
"recentchangeslinked": "Parubahan takaik",
@@ -1178,8 +1182,6 @@
"categories": "Kategori",
"categoriespagetext": "{{PLURAL:$1|Isi kategori}} ko ado laman atau media.\n[[Special:UnusedCategories|Kategori nan indak tapakai]] indak nampak di siko.\nLihek pulo [[Special:WantedCategories|kategori nan diinginan]].",
"categoriesfrom": "Tunjuakan kategori mulai jo:",
- "special-categories-sort-count": "uruikan manuruik jumlah",
- "special-categories-sort-abc": "uruikan manuruik abjad",
"deletedcontributions": "Jariah nan dihapuih",
"deletedcontributions-title": "Jariah nan dihapuih",
"sp-deletedcontributions-contribs": "Jariah",
@@ -1517,8 +1519,9 @@
"tooltip-pt-mycontris": "Daftar jariah Sanak",
"tooltip-pt-login": "Sanak disaranan untuak masuak log; walaupun indak wajib",
"tooltip-pt-logout": "Kalua log",
+ "tooltip-pt-createaccount": "Sanak dianjuaan mambuek akun dan masuak log; walaupun hal iko indak aruih",
"tooltip-ca-talk": "Parudiangan tantang isi laman",
- "tooltip-ca-edit": "Angku dapek manyuntiang laman ko. Silakan gunoan tombol pratonton sabalun manyimpan",
+ "tooltip-ca-edit": "Suntiang laman ko",
"tooltip-ca-addsection": "Mulai bagian baru",
"tooltip-ca-viewsource": "Laman ko dilinduangi.\nSanak hanyo buliah mancaliak sumbernyo sajo",
"tooltip-ca-history": "Revisi sabalunnyo dari laman ko",
@@ -1731,8 +1734,8 @@
"exif-colorspace": "Ruang warna",
"exif-componentsconfiguration": "Arti tiok komponen",
"exif-compressedbitsperpixel": "Mode kompresi gamba",
- "exif-pixelydimension": "Leba gamba",
- "exif-pixelxdimension": "Tinggi gamba",
+ "exif-pixelxdimension": "Leba gamba",
+ "exif-pixelydimension": "Tinggi gamba",
"exif-usercomment": "Komen pangguno",
"exif-relatedsoundfile": "Berkas audio nan bahubuangan",
"namespacesall": "sadonyo",
diff --git a/languages/i18n/mk.json b/languages/i18n/mk.json
index 1470aeca4e..902150aae4 100644
--- a/languages/i18n/mk.json
+++ b/languages/i18n/mk.json
@@ -16,7 +16,8 @@
"××¢×¨× ×¨××× ××ר×",
"ìë¼",
"Milicevic01",
- "Macofe"
+ "Macofe",
+ "Nemo bis"
]
},
"tog-underline": "ÐоÑÑÑÑÑваÑе на вÑÑки:",
@@ -279,7 +280,7 @@
"toc": "СодÑжина",
"showtoc": "пÑикажи",
"hidetoc": "ÑкÑиÑ",
- "collapsible-collapse": "СобеÑи",
+ "collapsible-collapse": "ÑобеÑи",
"collapsible-expand": "пÑикажи",
"confirmable-confirm": "Ðали {{GENDER:$1|ÑÑе}} ÑигÑÑни?",
"confirmable-yes": "Ðа",
@@ -1291,7 +1292,7 @@
"recentchangeslinked-page": "Ðме на ÑÑÑаниÑаÑа:",
"recentchangeslinked-to": "ÐÑикажи ги пÑомениÑе на ÑÑÑаниÑиÑе повÑзани Ñо даденаÑа ÑÑÑаниÑа",
"recentchanges-page-added-to-category": "[[:$1]] ÑÑавена во каÑегоÑиÑа",
- "recentchanges-page-added-to-category-bundled": "[[:$1]] и ÑÑÑе {{PLURAL:$2|една ÑÑÑаниÑа ÑÑавена|$2 ÑÑÑаниÑи ÑÑавеи}} во каÑегоÑиÑа",
+ "recentchanges-page-added-to-category-bundled": "[[:$1]] и ÑÑÑе [[Special:WhatLinksHere/$1|{{PLURAL:$2|една ÑÑÑаниÑа ÑÑавена|$2 ÑÑÑаниÑи ÑÑавеи}}]] во каÑегоÑиÑа",
"recentchanges-page-removed-from-category": "[[:$1]] оÑÑÑÑанеÑа од каÑегоÑиÑа",
"recentchanges-page-removed-from-category-bundled": "[[:$1]] и ÑÑÑе {{PLURAL:$2|една ÑÑÑаниÑа оÑÑÑÑанеÑа|$2 ÑÑÑаниÑи оÑÑÑÑанеÑи}} од каÑегоÑиÑа",
"autochange-username": "ÐвÑомаÑÑки пÑомени на ÐедиÑаÐики",
@@ -1551,7 +1552,7 @@
"shared-repo": "заедниÑко ÑкладиÑÑе",
"shared-repo-name-wikimediacommons": "РизниÑаÑа",
"filepage.css": "/* ТÑка поÑÑавениÑе каÑкадни ÑÑилÑки ÑÑÑаниÑи (CSS) Ñе вклÑÑени во опиÑнаÑа ÑÑÑаниÑа на подаÑоÑекаÑа, како и на клиенÑÑкиÑе викиÑа */",
- "upload-disallowed-here": "ÐажалоÑÑ, не можеÑе да пÑезапиÑеÑе вÑз Ñликава.",
+ "upload-disallowed-here": "Ðа жал, не можеÑе да пÑезапиÑеÑе вÑз Ñликава.",
"filerevert": "ÐÑаÑи $1",
"filerevert-legend": "ÐÑаÑи подаÑоÑека",
"filerevert-intro": "Ðа вÑаÑаÑе '''[[Media:$1|$1]]''' на [$4 веÑзиÑаÑа од $3, $2].",
@@ -1724,8 +1725,11 @@
"apisandbox-intro": "СÑÑаниÑава ÑлÑжи за вÑÑеÑе пÑоби Ñо '''ÐзвÑÑник на ÐедиÑаÐики'''.\n\nÐовеÑе за ÑпоÑÑебаÑа на Ð¾Ð²Ð¾Ñ Ð¸Ð·Ð²ÑÑник Ñе наÑдеÑе во [//www.mediawiki.org/wiki/API:Main_page неговаÑа докÑменÑаÑиÑа]. ÐÑимеÑ: [//www.mediawiki.org/wiki/API#A_simple_example пÑеземаÑе на ÑодÑжинаÑа на главнаÑа ÑÑÑаниÑа]. ÐдбеÑеÑе деÑÑÑво за да видиÑе повеÑе пÑимеÑи.\n\nÐмаÑÑе пÑедвид дека она Ñо го пÑавиÑе на ÑÑÑаниÑава може да Ñе одÑази вÑз викиÑо, иако ова е пеÑоÑник.",
"apisandbox-submit": "ÐоÑÑави баÑаÑе",
"apisandbox-reset": "ÐÑÑиÑÑи",
- "apisandbox-examples": "ÐÑимеÑ",
- "apisandbox-results": "Ðзвод",
+ "apisandbox-examples": "ÐÑимеÑи",
+ "apisandbox-dynamic-parameters": "ÐополниÑелни паÑамеÑÑи",
+ "apisandbox-dynamic-parameters-add-label": "ÐÐ¾Ð´Ð°Ñ Ð¿Ð°ÑамеÑаÑ:",
+ "apisandbox-dynamic-parameters-add-placeholder": "Ðазив на паÑамеÑаÑоÑ",
+ "apisandbox-results": "ÐÑÑ
од",
"apisandbox-request-url-label": "URL на баÑаÑеÑо:",
"apisandbox-request-time": "ÐÑеме за баÑаÑеÑо: $1",
"booksources": "ÐеÑаÑени извоÑи",
@@ -1767,8 +1771,6 @@
"categories-submit": "ÐÑикажи",
"categoriespagetext": "{{PLURAL:$1|СледнаÑа каÑегоÑиÑа ÑодÑжи|СледниÑе каÑегоÑии ÑодÑжаÑ}} ÑÑÑаниÑи или мÑлÑимедиÑални подаÑоÑеки.\n[[Special:UnusedCategories|ÐеиÑкоÑиÑÑениÑе каÑегоÑии]] не Ñе пÑикажани овде.\nÐогледаÑÑе ги и [[Special:WantedCategories|поÑÑебниÑе каÑегоÑии]].",
"categoriesfrom": "ÐÑиказ на каÑегоÑии поÑнÑваÑÑи од:",
- "special-categories-sort-count": "подÑеди по бÑоÑ",
- "special-categories-sort-abc": "подÑеди азбÑÑно",
"deletedcontributions": "ÐзбÑиÑани коÑиÑниÑки пÑидонеÑи",
"deletedcontributions-title": "ÐзбÑиÑани коÑиÑниÑки пÑидонеÑи",
"sp-deletedcontributions-contribs": "пÑидонеÑи",
@@ -2384,11 +2386,7 @@
"import-logentry-upload-detail": "{{PLURAL:$1|Увезена е една пÑеÑабоÑка|Увезени Ñе $1 пÑеÑабоÑки}}",
"import-logentry-interwiki-detail": "{{PLURAL:$1|Увезена е една пÑеÑабоÑка|Увезени Ñе $1 пÑеÑабоÑки}} од $2",
"javascripttest": "ÐÑоба на JavaScript",
- "javascripttest-pagetext-noframework": "Ðваа ÑÑÑаниÑа е ÑезеÑвиÑана за вÑÑеÑе на пÑоби Ñо JavaScript.",
- "javascripttest-pagetext-unknownframework": "ÐепознаÑа Ñамка â$1â.",
"javascripttest-pagetext-unknownaction": "ÐепознаÑо деÑÑÑво â$1â.",
- "javascripttest-pagetext-frameworks": "ÐзбеÑеÑе една од Ñледниве Ñамки: $1",
- "javascripttest-pagetext-skins": "ÐдбеÑеÑе Ñо кое ÑÑво да Ñа напÑавиÑе пÑобаÑа:",
"javascripttest-qunit-intro": "Ðид. [$1 докÑменÑаÑиÑа на иÑпÑобÑваÑеÑо] на mediawiki.org.",
"tooltip-pt-userpage": "{{GENDER:|ÐаÑаÑа}} коÑиÑниÑка ÑÑÑаниÑа",
"tooltip-pt-anonuserpage": "ÐоÑиÑниÑка ÑÑÑаниÑа за IP-адÑеÑаÑа од коÑа ÑÑедÑваÑе",
@@ -2693,8 +2691,8 @@
"exif-colorspace": "Ðоен пÑоÑÑоÑ",
"exif-componentsconfiguration": "ÐнаÑеÑе на ÑÐµÐºÐ¾Ñ Ð±Ð¾ÐµÐ½ дел",
"exif-compressedbitsperpixel": "Режим на набиваÑе на ÑликаÑа",
- "exif-pixelydimension": "ШиÑина на ÑликаÑа",
- "exif-pixelxdimension": "ÐиÑина на ÑликаÑа",
+ "exif-pixelxdimension": "ШиÑина на ÑликаÑа",
+ "exif-pixelydimension": "ÐиÑина на ÑликаÑа",
"exif-usercomment": "ÐоÑиÑниÑки коменÑаÑи",
"exif-relatedsoundfile": "ÐовÑзана аÑдиоÑнимка",
"exif-datetimeoriginal": "ÐаÑÑм и вÑеме на ÑликаÑе",
@@ -3243,7 +3241,6 @@
"version-libraries-description": "ÐпиÑ",
"version-libraries-authors": "ÐвÑоÑи",
"redirect": "ÐÑенаÑоÑÑваÑе по подаÑоÑеки, коÑиÑник или назнака на пÑеÑабоÑка",
- "redirect-legend": "ÐÑенаÑоÑÑваÑе кон подаÑоÑека или ÑÑÑаниÑа",
"redirect-summary": "Ðваа ÑлÑжбена ÑÑÑаниÑа пÑенаÑоÑÑва кон подаÑоÑека (Ñе задава имеÑо), ÑÑÑаниÑа (Ñе задава назнакаÑа на пÑеÑабоÑкаÑа или ÑÑÑаниÑаÑа) или коÑиÑниÑка ÑÑÑанÑа (Ñе задава бÑоÑÑенаÑа назнака на коÑиÑникоÑ). УпоÑÑеба: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revision/328429]] или [[{{#Special:Redirect}}/user/101]].",
"redirect-submit": "ÐаÑ",
"redirect-lookup": "ÐÑебаÑаÑ:",
@@ -3256,7 +3253,6 @@
"redirect-not-exists": "ÐÑедноÑÑа не е наÑдена",
"fileduplicatesearch": "ÐаÑаÑе на дÑплиÑани подаÑоÑеки",
"fileduplicatesearch-summary": "ÐÑебаÑÑваÑе на дÑплиÑани подаÑоÑеки по ÑаÑабни вÑедноÑÑи.",
- "fileduplicatesearch-legend": "ÐаÑаÑе на дÑпликаÑ",
"fileduplicatesearch-filename": "ÐодаÑоÑека:",
"fileduplicatesearch-submit": "ÐаÑаÑ",
"fileduplicatesearch-info": "$1 à $2 пикÑели Ðолемина на подаÑоÑекаÑа: $3 MIME-Ñип: $4",
diff --git a/languages/i18n/ml.json b/languages/i18n/ml.json
index e313abe782..560ecb0d13 100644
--- a/languages/i18n/ml.json
+++ b/languages/i18n/ml.json
@@ -1298,7 +1298,7 @@
"recentchangeslinked-page": "താളിനàµà´±àµ à´ªàµà´°àµ:",
"recentchangeslinked-to": "തനàµà´¨à´¿à´°à´¿à´àµà´àµà´¨àµà´¨ താളിലൠമാറàµà´±à´àµà´àµ¾à´àµà´àµ à´ªà´à´°à´ ബനàµà´§à´ªàµà´ªàµà´àµà´ താളàµà´à´³à´¿à´²àµ മാറàµà´±à´àµà´àµ¾ à´à´¾à´£à´¿à´àµà´àµà´",
"recentchanges-page-added-to-category": "[[:$1]] വർà´àµà´à´¤àµà´¤à´¿à´²àµà´àµà´àµ à´àµàµ¼à´¤àµà´¤à´¿à´°à´¿à´àµà´àµà´¨àµà´¨àµ",
- "recentchanges-page-added-to-category-bundled": "[[:$1]] താളàµà´ à´à´ªàµà´ªà´ {{PLURAL:$2|മറàµà´±àµà´°àµ താളàµà´|$2 താളàµà´à´³àµà´}} വർà´àµà´à´¤àµà´¤à´¿à´²àµà´àµà´àµ à´àµàµ¼à´¤àµà´¤à´¿à´°à´¿à´àµà´àµà´¨àµà´¨àµ",
+ "recentchanges-page-added-to-category-bundled": "[[:$1]] താളàµà´ à´à´ªàµà´ªà´ [[Special:WhatLinksHere/$1|{{PLURAL:$2|മറàµà´±àµà´°àµ താളàµà´|$2 താളàµà´à´³àµà´}}]] വർà´àµà´à´¤àµà´¤à´¿à´²àµà´àµà´àµ à´àµàµ¼à´¤àµà´¤à´¿à´°à´¿à´àµà´àµà´¨àµà´¨àµ",
"recentchanges-page-removed-from-category": "[[:$1]] വർà´àµà´à´¤àµà´¤à´¿àµ½ നിനàµà´¨àµ à´¨àµà´àµà´à´à´àµà´¯àµà´¤àµ",
"recentchanges-page-removed-from-category-bundled": "[[:$1]] താളàµà´ à´à´ªàµà´ªà´ {{PLURAL:$2|മറàµà´±àµà´°àµ താളàµà´|$2 താളàµà´à´³àµà´}} വർà´àµà´à´¤àµà´¤à´¿àµ½ നിനàµà´¨àµ à´¨àµà´àµà´à´à´àµà´¯àµà´¤à´¿à´°à´¿à´àµà´àµà´¨àµà´¨àµ",
"autochange-username": "à´®àµà´¡à´¿à´¯à´µà´¿à´àµà´à´¿ à´¸àµà´µà´¯à´à´ªàµà´°à´µàµ¼à´¤àµà´¤à´¿à´¤ മാറàµà´±à´",
@@ -1769,8 +1769,6 @@
"categories-submit": "à´ªàµà´°à´¦àµ¼à´¶à´¿à´ªàµà´ªà´¿à´àµà´àµà´",
"categoriespagetext": "താഴൠà´àµà´àµà´¤àµà´¤à´¿à´°à´¿à´àµà´àµà´¨àµà´¨ {{PLURAL:$1|വർà´àµà´à´¤àµà´¤à´¿àµ½|വർà´àµà´à´àµà´à´³à´¿àµ½}} താളàµà´à´³àµà´ à´ªàµà´°à´®à´¾à´£à´àµà´à´³àµà´®àµà´£àµà´àµ.\n[[Special:UnusedCategories|à´à´ªà´¯àµà´à´¿à´àµà´à´ªàµà´ªàµà´à´¾à´¤àµà´¤ വർà´àµà´à´àµà´àµ¾]] à´à´µà´¿à´àµ à´à´¾à´£à´¿à´àµà´àµà´¨àµà´¨à´¿à´²àµà´².\n[[Special:WantedCategories|à´
വശàµà´¯à´µàµ¼à´àµà´à´àµà´àµ¾]] à´àµà´à´¿ à´à´¾à´£àµà´.",
"categoriesfrom": "à´à´àµà´à´¨àµ à´¤àµà´à´àµà´àµà´¨àµà´¨ വർà´àµà´à´àµà´àµ¾ à´à´¾à´àµà´àµà´:",
- "special-categories-sort-count": "à´à´£àµà´£à´¤àµà´¤à´¿à´¨à´¨àµà´¸à´°à´¿à´àµà´àµ à´àµà´°à´®à´ªàµà´ªàµà´àµà´¤àµà´¤àµà´",
- "special-categories-sort-abc": "à´
à´àµà´·à´°à´®à´¾à´²à´¾à´àµà´°à´®à´¤àµà´¤à´¿àµ½ à´àµà´°à´®àµà´à´°à´¿à´àµà´àµà´",
"deletedcontributions": "മായàµà´àµà´à´ªàµà´ªàµà´àµà´ à´à´ªà´¯àµà´àµà´¤àµà´¸à´à´à´¾à´µà´¨à´àµ¾",
"deletedcontributions-title": "മായàµà´àµà´à´ªàµà´ªàµà´àµà´ à´à´ªà´¯àµà´àµà´¤àµà´¸à´à´à´¾à´µà´¨à´àµ¾",
"sp-deletedcontributions-contribs": "à´¸à´âà´à´¾à´µà´¨à´àµ¾",
@@ -2378,11 +2376,7 @@
"import-logentry-upload-detail": "{{PLURAL:$1|à´à´°àµ പതിപàµà´ªàµ|$1 പതിപàµà´ªàµà´àµ¾}} à´à´±à´àµà´àµà´®à´¤à´¿ à´àµà´¯àµà´¤àµ",
"import-logentry-interwiki-detail": "$2 à´à´¨àµà´¨à´¤à´¿àµ½ നിനàµà´¨àµ {{PLURAL:$1|à´à´°àµ പതിപàµà´ªàµ|$1 പതിപàµà´ªàµà´àµ¾}} à´à´±à´àµà´àµà´®à´¤à´¿ à´àµà´¯àµà´¤àµ",
"javascripttest": "à´à´¾à´µà´¾à´¸àµà´àµà´°à´¿à´ªàµà´±àµà´±àµ പരàµà´àµà´·à´£à´",
- "javascripttest-pagetext-noframework": "ഠതാൾ à´à´¾à´µà´¾à´¸àµà´àµà´°à´¿à´ªàµà´±àµà´±àµ പരàµà´àµà´·à´£à´àµà´àµ¾ à´¨à´à´¤àµà´¤à´¾à´¨à´¾à´¯à´¿ മാറàµà´±à´¿à´µàµà´àµà´à´¿à´°à´¿à´àµà´àµà´¨àµà´¨à´¤à´¾à´£àµ.",
- "javascripttest-pagetext-unknownframework": "à´
പരിà´à´¿à´¤à´®à´¾à´¯ പരàµà´àµà´·à´£ à´à´àµà´à´àµà´àµà´àµ \"$1\".",
"javascripttest-pagetext-unknownaction": "à´
à´àµà´à´¾à´¤à´®à´¾à´¯ à´ªàµà´°à´µàµà´¤àµà´¤à´¿ \"$1\".",
- "javascripttest-pagetext-frameworks": "താഴàµà´àµà´àµà´àµà´¤àµà´¤à´¿à´°à´¿à´àµà´àµà´¨àµà´¨à´µà´¯à´¿àµ½ à´à´°àµ പരàµà´àµà´·à´£ à´à´àµà´à´àµà´àµà´àµ തിരà´àµà´àµà´àµà´àµà´àµà´: $1",
- "javascripttest-pagetext-skins": "പരàµà´àµà´·à´£à´àµà´àµ¾ à´¨à´à´¤àµà´¤à´¾à´¨àµà´³àµà´³ à´¦àµà´¶àµà´¯à´°àµà´ªà´ തിരà´àµà´àµà´àµà´àµà´àµà´:",
"javascripttest-qunit-intro": "mediawiki.org-ലൠ[$1 പരàµà´àµà´·à´£ സഹായി] à´à´¾à´£àµà´.",
"tooltip-pt-userpage": "{{GENDER:|താà´àµà´à´³àµà´àµ}} à´à´ªà´¯àµà´àµà´¤àµà´¤à´¾àµ¾",
"tooltip-pt-anonuserpage": "താà´àµà´à´³àµà´àµ à´.പി. വിലാസതàµà´¤à´¿à´¨àµà´±àµ à´à´ªà´¯àµà´àµà´¤àµà´¤à´¾àµ¾",
@@ -2647,8 +2641,8 @@
"exif-colorspace": "à´à´³àµ¼ à´¸àµà´ªàµà´¸àµ",
"exif-componentsconfiguration": "à´à´°àµ à´à´à´à´¤àµà´¤à´¿à´¨àµà´±àµà´¯àµà´ à´
ർതàµà´¥à´",
"exif-compressedbitsperpixel": "à´à´¿à´¤àµà´°à´ à´àµà´°àµà´àµà´àµà´µà´¾à´¨àµà´ªà´¯àµà´à´¿à´àµà´à´¿à´°à´¿à´àµà´àµà´¨àµà´¨ മാർà´àµà´à´",
- "exif-pixelydimension": "à´à´¿à´¤àµà´°à´¤àµà´¤à´¿à´¨àµà´±àµ à´µàµà´¤à´¿",
- "exif-pixelxdimension": "à´à´¿à´¤àµà´°à´¤àµà´¤à´¿à´¨àµà´±àµ à´à´¯à´°à´",
+ "exif-pixelxdimension": "à´à´¿à´¤àµà´°à´¤àµà´¤à´¿à´¨àµà´±àµ à´µàµà´¤à´¿",
+ "exif-pixelydimension": "à´à´¿à´¤àµà´°à´¤àµà´¤à´¿à´¨àµà´±àµ à´à´¯à´°à´",
"exif-usercomment": "à´à´ªà´¯àµà´àµà´¤à´¾à´µà´¿à´¨àµà´±àµ à´àµà´±à´¿à´ªàµà´ªàµà´àµ¾",
"exif-relatedsoundfile": "à´à´¤àµà´®à´¾à´¯à´¿ ബനàµà´§à´®àµà´³àµà´³ à´à´¡à´¿à´¯àµ à´ªàµà´°à´®à´¾à´£à´",
"exif-datetimeoriginal": "ഡാറàµà´± à´¸àµà´·àµà´à´¿à´àµà´à´ªàµà´ªàµà´àµà´ à´¤àµà´¯à´¤à´¿à´¯àµà´ സമയവàµà´",
@@ -3098,7 +3092,6 @@
"version-libraries-description": "വിവരണà´",
"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]] à´
à´²àµà´²àµà´àµà´à´¿àµ½ [[{{#Special:Redirect}}/logid/186]].",
"redirect-submit": "à´ªàµà´àµ",
"redirect-lookup": "à´¤àµà´àµà´:",
@@ -3111,7 +3104,6 @@
"redirect-not-exists": "വില à´à´£àµà´àµà´¤àµà´¤à´¾àµ» à´à´´à´¿à´àµà´à´¿à´²àµà´²",
"fileduplicatesearch": "à´à´°àµ à´ªàµà´°à´®à´¾à´£à´¤àµà´¤à´¿à´¨àµà´±àµ പലപà´àµ¼à´ªàµà´ªàµà´à´³àµà´£àµà´àµà´¯àµà´¨àµà´¨àµ തിരയàµà´",
"fileduplicatesearch-summary": "à´à´°àµ à´ªàµà´°à´®à´¾à´£à´ തനàµà´¨àµ വിവിധ à´ªàµà´°à´¿à´²àµà´£àµà´àµà´¯àµà´¨àµà´¨àµ ഹാഷൠവാലàµà´¯àµà´µà´§à´¿à´·àµà´ ിതമായി തിരയàµà´.",
- "fileduplicatesearch-legend": "à´ªà´àµ¼à´ªàµà´ªàµà´£àµà´àµà´¯àµà´¨àµà´¨àµ തിരയàµà´",
"fileduplicatesearch-filename": "à´ªàµà´°à´®à´¾à´£à´¤àµà´¤à´¿à´¨àµà´±àµ à´ªàµà´°àµ:",
"fileduplicatesearch-submit": "തിരയàµ",
"fileduplicatesearch-info": "$1 à $2 ബിനàµà´¦àµ à´ªàµà´°à´®à´¾à´£à´¤àµà´¤à´¿à´¨àµà´±àµ വലിപàµà´ªà´: $3 à´®àµà´ തരà´: $4",
diff --git a/languages/i18n/mn.json b/languages/i18n/mn.json
index 89929c0c18..5b990cc9c2 100644
--- a/languages/i18n/mn.json
+++ b/languages/i18n/mn.json
@@ -1544,8 +1544,6 @@
"categories": "ÐнгиллÑÑд",
"categoriespagetext": "ÐаÑааÑ
{{PLURAL:$1|ангилалд|ангиллÑÑдад}} Ñ
ÑÑÐ´Ð°Ñ ÑÑвÑл медиа Ñайл агÑÑлагдаж байна.\n[[Special:UnusedCategories|Ð¥ÑÑÑглÑгдÑÑ
гүй байгаа]] ангиллÑÑдÑг Ñнд Ñ
аÑÑÑлÑангүй.\n[[Special:WantedCategories|Ð¥ÑÑÑгÑÑй ангиллÑÑд]] гÑдгийг Ñ
аÑна ÑÑ.",
"categoriesfrom": "ÐÑ
ний анги:",
- "special-categories-sort-count": "ÑÐ¾Ð¾Ð³Ð¾Ð¾Ñ ÑлгаÑ
",
- "special-categories-sort-abc": "Ò¯Ñгийн даÑÐ°Ð°Ð»Ð»Ð°Ð°Ñ ÑлгаÑ
",
"deletedcontributions": "УÑÑгагдÑан Ñ
ÑÑÑглÑгÑийн Ñ
ÑÐ²Ñ Ð½ÑмÑÑ",
"deletedcontributions-title": "УÑÑгагдÑан Ñ
ÑÑÑглÑгÑийн Ñ
ÑÐ²Ñ Ð½ÑмÑÑ",
"sp-deletedcontributions-contribs": "Ñ
ÑÐ²Ñ Ð½ÑмÑÑ",
@@ -2056,8 +2054,6 @@
"import-logentry-upload-detail": "$1 заÑваÑ",
"import-logentry-interwiki-detail": "$2-Ñ Ð°Ð²Ñан $1 заÑваÑ",
"javascripttest": "JavaScript ÑÑÑÑилÑ",
- "javascripttest-pagetext-noframework": "Уг Ñ
ÑÑдÑÑг JavaScript ÑеÑÑ Ñ
ийÑ
Ñд аÑиглана.",
- "javascripttest-pagetext-unknownframework": "\"$1\" мÑдÑÑ
гүй ÑеÑÑ ÑÑеймвоÑк байна.",
"tooltip-pt-userpage": "Ð¢Ð°Ð½Ñ Ñ
ÑÑÑглÑгÑийн Ñ
ÑÑдаÑ",
"tooltip-pt-anonuserpage": "Ð¢Ð°Ð½Ñ Ñ
ÑÑÑглÑж бÑй IP Ñ
аÑгийн Ñ
ÑÑÑглÑгÑийн Ñ
ÑÑдаÑ",
"tooltip-pt-mytalk": "Ð¢Ð°Ð½Ñ ÑÑÐ¸Ð°Ð½Ñ Ñ
ÑÑдаÑ",
@@ -2259,8 +2255,8 @@
"exif-colorspace": "Өнгөний завÑаÑ",
"exif-componentsconfiguration": "ÐÒ¯Ñ
бүÑÑлдÑÑ
үүн Ñ
ÑÑгүүдийн ÑÑга",
"exif-compressedbitsperpixel": "ÐÑÑгийн ÑайлÑг ÑаÑ
аÑ
аÑга",
- "exif-pixelydimension": "ÐÑÑгийн Ó©Ñгөн",
- "exif-pixelxdimension": "ÐÑÑгийн өндөÑ",
+ "exif-pixelxdimension": "ÐÑÑгийн Ó©Ñгөн",
+ "exif-pixelydimension": "ÐÑÑгийн өндөÑ",
"exif-usercomment": "Ð¥ÑÑÑглÑгÑдийн ÑÑмдÑглÑл",
"exif-relatedsoundfile": "ХолбооÑой дÑÑн Ñайл",
"exif-datetimeoriginal": "ÐÑдÑÑллийг Ò¯Ò¯ÑгÑÑÑн огноо ба Ñаг",
@@ -2594,7 +2590,6 @@
"version-software-version": "Ð¥ÑвилбаÑ",
"fileduplicatesearch": "ÐавÑ
аÑдÑан ÑайлÑÑдÑг Ñ
айÑ
",
"fileduplicatesearch-summary": "Ð¥ÑÑ ÐºÐ¾Ð´Ñг аÑиглан давÑ
аÑдÑан ÑайлÑÑдÑн Ñ
айна.",
- "fileduplicatesearch-legend": "ÐавÑ
аÑдалÑÑг Ñ
айÑ
",
"fileduplicatesearch-filename": "ФайлÑн нÑÑ:",
"fileduplicatesearch-submit": "ХайÑ
",
"fileduplicatesearch-info": "$1 à $2 пикÑÑл ФайлÑн Ñ
ÑмжÑÑ: $3 MIME ÑÓ©Ñөл: $4",
diff --git a/languages/i18n/mr.json b/languages/i18n/mr.json
index 1f7e833ec8..a4e9ab6ba0 100644
--- a/languages/i18n/mr.json
+++ b/languages/i18n/mr.json
@@ -1329,7 +1329,7 @@
"recentchangeslinked-page": "पà¥à¤·à¥à¤ नाव:",
"recentchangeslinked-to": "याà¤à¤µà¤à¥ दिलà¥à¤²à¥à¤¯à¤¾ पानाला à¤à¥à¤¡à¤²à¥à¤²à¥à¤¯à¤¾ पानाà¤à¤µà¤°à¥à¤² बदल दाà¤à¤µà¤¾",
"recentchanges-page-added-to-category": "[[:$1]] वरà¥à¤à¤¾à¤¸ à¤à¥à¤¡à¤²à¥",
- "recentchanges-page-added-to-category-bundled": "[[:$1]] व {{PLURAL:$2|à¤à¤ पान वरà¥à¤à¤¾à¤¸ à¤à¥à¤¡à¤²à¥|$2 पानॠवरà¥à¤à¤¾à¤¸ à¤à¥à¤¡à¤²à¥à¤¤}}",
+ "recentchanges-page-added-to-category-bundled": "[[:$1]] व [[Special:WhatLinksHere/$1|{{PLURAL:$2|à¤à¤ पान वरà¥à¤à¤¾à¤¸ à¤à¥à¤¡à¤²à¥|$2 पानॠवरà¥à¤à¤¾à¤¸ à¤à¥à¤¡à¤²à¥à¤¤}}]]",
"recentchanges-page-removed-from-category": "[[:$1]] ला वरà¥à¤à¤¾à¤¤à¥à¤¨ हà¤à¤µà¤¿à¤²à¥",
"recentchanges-page-removed-from-category-bundled": "[[:$1]] व {{PLURAL:$2|à¤à¤ पान वरà¥à¤à¤¾à¤¤à¥à¤¨ हà¤à¤µà¤¿à¤²à¥|$2 पानॠवरà¥à¤à¤¾à¤¤à¥à¤¨ हà¤à¤µà¤¿à¤²à¥à¤¤}}",
"autochange-username": "मिडियाविà¤à¤¿ à¤à¤ªà¥à¤à¤ª बदल",
@@ -1771,8 +1771,6 @@
"categories-submit": "दाà¤à¤µà¤¾",
"categoriespagetext": "विà¤à¤¿à¤µà¤° à¤à¤¾à¤²à¥à¤² वरà¥à¤ {{PLURAL:$1|à¤à¤¹à¥|à¤à¤¹à¥à¤¤}}.\n[[Special:UnusedCategories|न वापरलà¥à¤²à¥ वरà¥à¤]] यà¥à¤¥à¥ दाà¤à¤µà¤²à¥à¤²à¥ नाहà¥à¤¤.\nहà¥à¤¹à¥ पहा: [[Special:WantedCategories|पाहिà¤à¥ à¤
सलà¥à¤²à¥ वरà¥à¤]].",
"categoriesfrom": "या शबà¥à¤¦à¤¾à¤ªà¤¾à¤¸à¥à¤¨ सà¥à¤°à¥ हà¥à¤£à¤¾à¤°à¥ वरà¥à¤ दाà¤à¤µà¤¾:",
- "special-categories-sort-count": "मà¥à¤à¤£à¥à¤¨à¥à¤¸à¤¾à¤° निवडा",
- "special-categories-sort-abc": "à¤
à¤à¤¾à¤°à¤µà¤¿à¤²à¥à¤¹à¥ निवडा",
"deletedcontributions": "वà¤à¤³à¤²à¥à¤²à¥ सदसà¥à¤¯ सà¤à¤ªà¤¾à¤¦à¤¨à¥",
"deletedcontributions-title": "वà¤à¤³à¤²à¥à¤²à¥ सदसà¥à¤¯ सà¤à¤ªà¤¾à¤¦à¤¨à¥",
"sp-deletedcontributions-contribs": "सà¤à¤ªà¤¾à¤¦à¤¨à¥",
@@ -2361,11 +2359,7 @@
"import-logentry-upload-detail": "$1 {{PLURAL:$1|à¤à¤µà¤°à¥à¤¤à¤¨|à¤à¤µà¤°à¥à¤¤à¤¨à¥}}à¤à¤¯à¤¾à¤¤ à¤à¥à¤²à¥à¤¤",
"import-logentry-interwiki-detail": "$2 पासà¥à¤¨ $1 {{PLURAL:$1|à¤à¤µà¤°à¥à¤¤à¤¨|à¤à¤µà¤°à¥à¤¤à¤¨à¥}} à¤à¤¯à¤¾à¤¤ à¤à¥à¤²à¥à¤¤",
"javascripttest": "à¤à¤¾à¤µà¤¾ सà¥à¤à¥à¤°à¤¿à¤ªà¥à¤ तपासणà¥",
- "javascripttest-pagetext-noframework": "हॠपान à¤à¤¾à¤µà¤¾ सà¥à¤à¥à¤°à¤¿à¤ªà¥à¤ तपासणॠसाठॠसà¥à¤°à¤à¥à¤·à¤¿à¤¤ à¤à¥à¤²à¥ à¤à¤¹à¥",
- "javascripttest-pagetext-unknownframework": "à¤
à¤à¥à¤à¤¾à¤¤ तपासणà¥à¤à¥ ठिà¤à¤¾à¤£ $1",
"javascripttest-pagetext-unknownaction": "à¤
नà¥à¤³à¤à¥ à¤à¥à¤°à¤¿à¤¯à¤¾ \"$1\".",
- "javascripttest-pagetext-frameworks": "à¤à¥à¤ªà¤¯à¤¾ à¤à¥à¤¸à¥à¤à¤¿à¤à¤ साठॠपà¥à¤¢à¥à¤² पà¥à¤à¥ वà¥à¤¯à¤µà¤¸à¥à¤¥à¤¾ / पदà¥à¤§à¤¤ निवडावà¥: $1",
- "javascripttest-pagetext-skins": "à¤à¥à¤¸à¥à¤ à¤à¤°à¤£à¥à¤¯à¤¾à¤¸à¤¾à¤ ॠयà¥à¤à¥à¤¯ तॠसà¥à¤à¥à¤¨ निवडावà¥",
"javascripttest-qunit-intro": "mediawiki.org वर [$1 testing documentation] पहा",
"tooltip-pt-userpage": "{{GENDER:|à¤à¤ªà¤²à¥ सदसà¥à¤¯}} पान",
"tooltip-pt-anonuserpage": "तà¥à¤®à¥à¤¹à¥ à¤à¥à¤¯à¤¾ à¤
à¤à¤à¤ªà¤¤à¥à¤¤à¥à¤¯à¤¾à¤¨à¥à¤µà¤¯à¥ सà¤à¤ªà¤¾à¤¦à¤¿à¤¤ à¤à¤°à¤¤ à¤à¤¹à¤¾à¤¤ तà¥à¤¯à¤¾à¤à¤°à¤¿à¤¤à¤¾ हॠसदसà¥à¤¯ पान",
@@ -2619,8 +2613,8 @@
"exif-colorspace": "रà¤à¤à¤¾à¤à¤à¤¨ (à¤à¤²à¤° सà¥à¤ªà¥à¤¸)",
"exif-componentsconfiguration": "पà¥à¤°à¤¤à¥à¤¯à¥à¤ à¤à¤à¤à¤¾à¤à¤¾ à¤
रà¥à¤¥",
"exif-compressedbitsperpixel": "à¤à¤¿à¤¤à¥à¤° à¤à¤à¥à¤à¤à¤¨ सà¥à¤¥à¤¿à¤¤à¥",
- "exif-pixelydimension": "à¤à¤à¥à¤¤à¥à¤à¥ सà¥à¤¯à¥à¤à¥à¤¯ रà¥à¤à¤¦à¥",
- "exif-pixelxdimension": "à¤à¤à¥à¤¤à¥à¤à¥ सà¥à¤¯à¥à¤à¥à¤¯ à¤à¤à¤à¥",
+ "exif-pixelxdimension": "à¤à¤à¥à¤¤à¥à¤à¥ सà¥à¤¯à¥à¤à¥à¤¯ रà¥à¤à¤¦à¥",
+ "exif-pixelydimension": "à¤à¤à¥à¤¤à¥à¤à¥ सà¥à¤¯à¥à¤à¥à¤¯ à¤à¤à¤à¥",
"exif-usercomment": "सदसà¥à¤¯ पà¥à¤°à¤¤à¤¿à¤à¥à¤°à¥à¤¯à¤¾",
"exif-relatedsoundfile": "सà¤à¤¬à¤§à¥à¤¤ धà¥à¤µà¤¨à¥ सà¤à¤à¤¿à¤à¤¾",
"exif-datetimeoriginal": "विदा निरà¥à¤®à¤¿à¤¤à¥à¤à¥ तारà¥à¤ à¤à¤£à¤¿ वà¥à¤³",
@@ -3060,7 +3054,6 @@
"version-libraries-description": "वरà¥à¤£à¤¨",
"version-libraries-authors": "लà¥à¤à¤",
"redirect": "सà¤à¤à¤¿à¤à¤¾,सदसà¥à¤¯ à¤à¤¿à¤à¤µà¤¾ à¤à¤µà¥à¤¤à¥à¤¤à¥ या à¤à¤³à¤à¤£à¥à¤¨à¥à¤¸à¤¾à¤° पà¥à¤¨à¤°à¥à¤¨à¤¿à¤°à¥à¤¦à¥à¤¶à¤¨",
- "redirect-legend": "सà¤à¤à¤¿à¤à¤¾ à¤
थवा पानास पà¥à¤¨à¤°à¥à¤¨à¤¿à¤°à¥à¤¦à¥à¤¶à¤¨",
"redirect-summary": "हॠविशà¥à¤· पान à¤à¤ सà¤à¤à¤¿à¤à¥à¤¸ पà¥à¤¨à¤°à¥à¤¨à¤¿à¤°à¥à¤¦à¥à¤¶à¤¿à¤¤ à¤à¤°à¤¤à¥(दिलà¥à¤²à¥ सà¤à¤à¤¿à¤à¤¾à¤¨à¤¾à¤®),à¤à¤ पान(दिलà¥à¤²à¥ à¤à¤µà¥à¤¤à¥à¤¤à¥ à¤à¤¿à¤à¤µà¤¾ पान à¤à¤³à¤à¤£) à¤à¤¿à¤à¤µà¤¾ à¤à¤ सदसà¥à¤¯à¤ªà¤¾à¤¨(दिलà¥à¤²à¤¾ सदसà¥à¤¯ à¤
à¤à¤).\nवापर:[[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], à¤à¤¿à¤à¤µà¤¾ [[{{#Special:Redirect}}/user/101]].",
"redirect-submit": "à¤à¤¾",
"redirect-lookup": "बà¤à¤¾:",
@@ -3072,7 +3065,6 @@
"redirect-not-exists": "(यà¥à¤à¥à¤¯)मà¥à¤²à¥à¤¯ (वà¥à¤¹à¥
लà¥à¤¯à¥) सापडलॠनाहà¥",
"fileduplicatesearch": "à¤à¥à¤³à¥à¤¯à¤¾ सà¤à¤à¤¿à¤à¤¾ शà¥à¤§à¤¾",
"fileduplicatesearch-summary": "हà¥
श à¤à¤¿à¤à¤®à¤¤à¥à¤ªà¥à¤°à¤®à¤¾à¤£à¥ à¤à¥à¤³à¥à¤¯à¤¾ सà¤à¤à¤¿à¤à¤¾ शà¥à¤§à¤¾.",
- "fileduplicatesearch-legend": "à¤à¥à¤³à¥ सà¤à¤à¤¿à¤à¤¾ शà¥à¤§à¤¾",
"fileduplicatesearch-filename": "सà¤à¤à¤¿à¤à¤¾à¤¨à¤¾à¤µ:",
"fileduplicatesearch-submit": "शà¥à¤§à¤¾",
"fileduplicatesearch-info": "$1 à $2 पà¥à¤à¥à¤¸à¥à¤² सà¤à¤à¤¿à¤à¥à¤à¤¾ à¤à¤à¤¾à¤°: $3 MIME पà¥à¤°à¤à¤¾à¤°: $4",
diff --git a/languages/i18n/ms.json b/languages/i18n/ms.json
index aa44e04cd7..d4b395e0b9 100644
--- a/languages/i18n/ms.json
+++ b/languages/i18n/ms.json
@@ -20,7 +20,8 @@
"ìë¼",
"Pizza1016",
"Macofe",
- "Matma Rex"
+ "Matma Rex",
+ "Nemo bis"
]
},
"tog-underline": "Garis bawah pautan:",
@@ -1252,7 +1253,7 @@
"recentchangeslinked-page": "Nama laman:",
"recentchangeslinked-to": "Paparkan perubahan pada laman yang mengandungi pautan ke laman yang diberikan",
"recentchanges-page-added-to-category": "[[:$1]] ditambahkan kepada kategori",
- "recentchanges-page-added-to-category-bundled": "[[:$1]] dan {{PLURAL:$2|satu|$2}} lagi halaman ditambahkan kepada kategori",
+ "recentchanges-page-added-to-category-bundled": "[[:$1]] dan [[Special:WhatLinksHere/$1|{{PLURAL:$2|satu|$2}}]] lagi halaman ditambahkan kepada kategori",
"recentchanges-page-removed-from-category": "[[:$1]] digugurkan dari kategori",
"recentchanges-page-removed-from-category-bundled": "[[:$1]] dan {{PLURAL:$2|satu|$2}} lagi halaman digugurkan dari kategori",
"autochange-username": "Perubahan automatik MediaWiki",
@@ -1708,8 +1709,6 @@
"categories": "Kategori",
"categoriespagetext": "{{PLURAL:$1|Kategori|Kategori-kategori}} berikut mengandungi laman atau media.\n[[Special:UnusedCategories|Kategori yang tidak digunakan]] tidak dipaparkan di sini.\nLihat juga [[Special:WantedCategories|kategori yang dikehendaki]].",
"categoriesfrom": "Paparkan kategori bermula daripada:",
- "special-categories-sort-count": "susun mengikut tertib bilangan",
- "special-categories-sort-abc": "susun mengikut tertib abjad",
"deletedcontributions": "Sumbangan dihapuskan",
"deletedcontributions-title": "Sumbangan dihapuskan",
"sp-deletedcontributions-contribs": "sumbangan",
@@ -2309,11 +2308,7 @@
"import-logentry-upload-detail": "$1 semakan diimportkan",
"import-logentry-interwiki-detail": "$1 semakan diimportkan daripada $2",
"javascripttest": "Ujian JavaScript",
- "javascripttest-pagetext-noframework": "Laman ini ditempah untuk menjalankan ujian JavaScript.",
- "javascripttest-pagetext-unknownframework": "Kerangka \"$1\" tidak dikenali.",
"javascripttest-pagetext-unknownaction": "Tindakan \"$1\" tidak dikenali.",
- "javascripttest-pagetext-frameworks": "Sila pilih salah satu kerangka yang berikut: $1",
- "javascripttest-pagetext-skins": "Sila pilih satu kulit untuk menjalankan ujian:",
"javascripttest-qunit-intro": "Lihat [$1 pendokumenan ujian] di mediawiki.org.",
"tooltip-pt-userpage": "Laman pengguna anda",
"tooltip-pt-anonuserpage": "Laman pengguna bagi alamat IP anda",
@@ -2580,8 +2575,8 @@
"exif-colorspace": "Ruang warna",
"exif-componentsconfiguration": "Maksud setiap komponen",
"exif-compressedbitsperpixel": "Mod pemampatan imej",
- "exif-pixelydimension": "Lebar imej",
- "exif-pixelxdimension": "Tinggi imej",
+ "exif-pixelxdimension": "Lebar imej",
+ "exif-pixelydimension": "Tinggi imej",
"exif-usercomment": "Komen pengguna",
"exif-relatedsoundfile": "Fail audio berkaitan",
"exif-datetimeoriginal": "Tarikh dan waktu penjanaan data",
@@ -3034,7 +3029,6 @@
"version-libraries-description": "Keterangan",
"version-libraries-authors": "Pengarang",
"redirect": "Lencongkan mengikut ID fail, pengguna, halaman atau semakan",
- "redirect-legend": "Lencongkan ke fail atau halaman",
"redirect-summary": "Halaman khas ini melencong kepada fail (dengan nama fail), halaman (dengan ID semakan atau ID halaman) atau halaman pengguna (dengan ID pengguna berangka). Penggunaan: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], atau [[{{#Special:Redirect}}/user/101]].",
"redirect-submit": "Pergi",
"redirect-lookup": "Cari:",
@@ -3046,7 +3040,6 @@
"redirect-not-exists": "Nilai tidak dijumpai",
"fileduplicatesearch": "Cari fail serupa",
"fileduplicatesearch-summary": "Anda boleh mencari fail serupa berdasarkan nilai cincangannya.",
- "fileduplicatesearch-legend": "Cari fail serupa",
"fileduplicatesearch-filename": "Nama fail:",
"fileduplicatesearch-submit": "Cari",
"fileduplicatesearch-info": "$1 Ã $2 piksel Saiz fail: $3 Jenis MIME: $4",
diff --git a/languages/i18n/mt.json b/languages/i18n/mt.json
index f09f565b16..2993d36c94 100644
--- a/languages/i18n/mt.json
+++ b/languages/i18n/mt.json
@@ -11,7 +11,8 @@
"CharlieTheCabbie",
"Leli Forte",
"Macofe",
- "Matma Rex"
+ "Matma Rex",
+ "MTSap"
]
},
"tog-underline": "Ħoloq sottolinjati:",
@@ -106,7 +107,7 @@
"may": "Mejj",
"jun": "Ä un",
"jul": "Lul",
- "aug": "Awwi",
+ "aug": "Aww",
"sep": "Sett",
"oct": "Ott",
"nov": "Nov",
@@ -258,7 +259,7 @@
"newmessageslinkplural": "{{PLURAL:$1|messaġġ ġdid|999=messaġġi ġodda}}",
"newmessagesdifflinkplural": "l-aħħar {{PLURAL:$1|bidla|999=bidliet}}",
"youhavenewmessagesmulti": "Għandek messaġġi ġodda fuq $1",
- "editsection": "editja",
+ "editsection": "immodifika",
"editold": "editja",
"viewsourceold": "ara s-sors",
"editlink": "editja",
@@ -295,6 +296,7 @@
"nstab-template": "Mudell",
"nstab-help": "Paġna tal-għajnuna",
"nstab-category": "Kategorija",
+ "mainpage-nstab": "Il-PaÄ¡na prinÄipali",
"nosuchaction": "Ma teżistix din l-azzjoni",
"nosuchactiontext": "L-azzjoni speÄifikata mill-URL mhijiex valida.\nJista' jkun li tkun ktibt ħażin il-URL, jew Ä¡ejt imwassal għal ħolqa ħażina.\nDan jista' jindika wkoll bug fis-softwer użat fil-{{SITENAME}}.",
"nosuchspecialpage": "L-ebda paÄ¡na speÄjali",
@@ -585,7 +587,7 @@
"newarticle": "(Ä did)",
"newarticletext": "Inti segwejt link għal paġna li għadha ma ġietx maħluqa.\nSabiex toħloq il-paġna, ikteb fil-kaxxa li tinsab hawn taħt (ara [$1 paġna tal-għajnuna] għal aktar informazzjoni).\nJekk wasalt hawn biż-żball, agħfas il-buttuna '''lura''' (''back'') fuq il-browser tiegħek.",
"anontalkpagetext": "----''Din hija l-paÄ¡na ta' diskussjoni ta' utent anonimu li għadu ma ħoloqx kont, jew inkella li ma jużahx.\nGħaldaqstant biex nidentifikawh ikollna nużaw l-indirizz tal-IP tiegħu/tagħha.\nL-istess indirizz tal-IP jista' jkun użat minn bosta utenti differenti.\nJekk int utent anonimu u tħoss li qiegħed tirÄievi kummenti irrelevanti jew li ma jagħmlux sens, jekk jogħġbok [[Special:UserLogin|idħol fil-kont tiegħek]] jew [[Special:UserLogin/signup|oħloq wieħed]] sabiex tevita li fil-futur tiÄ¡i konfuż ma' utenti anonimi oħra.''",
- "noarticletext": "Bħalissa m'hemm l-ebda test f'din il-paġna.\nInti tista' [[Special:Search/{{PAGENAME}}|tfittex it-titlu ta' din il-paġna]] f'paġni oħra, jew [{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} tfittex ir-reġistri relatati], jew [{{fullurl:{{FULLPAGENAME}}|action=edit}} timmodifika din il-paġna] .",
+ "noarticletext": "Bħalissa m'hemm l-ebda test f'din il-paġna.\nTista' [[Special:Search/{{PAGENAME}}|tfittex it-titlu ta' din il-paġna]] f'paġni oħra, [{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} tfittex ir-reġistri relatati], jew [{{fullurl:{{FULLPAGENAME}}|action=edit}} toħloq dil-paġna] .",
"noarticletext-nopermission": "Bħalissa m'hemm l-ebda test f'din il-paġna. Inti tista' [[Special:Search/{{PAGENAME}}|tfittex dan it-titlu tal-paġna]] f'paġni oħra, jew [{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} tfittex ir-reġistri relatati] , imma m'għandikx permess toħloq dil-paġna.",
"missing-revision": "Ir-reviżjoni #$1 tal-paġna bl-isem \"{{FULLPAGENAME}}\" ma teżistix.\n\nDan ħafna drabi jiġri minħabba li tkun segwejt ħolqa lejn paġna mħassra, f'kronoloġija li mhix aġġornata.\nId-detallji tista' ssibhom fir-[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} reġistru tat-tħassir].",
"userpage-userdoesnotexist": "Il-kont tal-utent \"$1 \" mhux reġistrat.\nJekk jogħġbok, ara jekk verament tridx toħloq/timodifika din il-paġna.",
@@ -821,7 +823,7 @@
"searchprofile-images-tooltip": "Fittex għal fajls",
"searchprofile-everything-tooltip": "Fittex kullimkien (inklużi l-paġni ta' diskussjoni)",
"searchprofile-advanced-tooltip": "Fittex fi spazji tal-isem personalizzati",
- "search-result-size": "$1 ({{PLURAL:$2|1 word|$2 kliem}})",
+ "search-result-size": "$1 ({{PLURAL:$2|1 kelma|$2 kliem}})",
"search-result-category-size": "{{PLURAL:$1|membru wieħed|$1 membri}} ({{PLURAL:$2|sottokategorija waħda|$2 sottokategoriji}}, {{PLURAL:$3|fajl wieħed|$3 fajls}})",
"search-redirect": "(rindirizza $1)",
"search-section": "(sezzjoni $1)",
@@ -1556,8 +1558,6 @@
"categories": "Kategoriji",
"categoriespagetext": "Il-{{PLURAL:$1|kategorija segwenti għandha|kategoriji segwenti għandhom}} paġni jew fajls multimedjali. \nIl-[[Special:UnusedCategories|kategoriji vojta]] ma jidhrux hawnhekk.\nAra wkoll il-[[Special:WantedCategories|kategoriji rikjesti]].",
"categoriesfrom": "Uri kategoriji minn:",
- "special-categories-sort-count": "irranġa skont in-numru",
- "special-categories-sort-abc": "irranġa skont l-alfabett",
"deletedcontributions": "Kontribuzzjonijiet imħassra tal-utent",
"deletedcontributions-title": "Kontribuzzjonijiet imħassra tal-utent",
"sp-deletedcontributions-contribs": "kontribuzzjonijiet",
@@ -1818,6 +1818,7 @@
"contributions": "Kontributi tal-{{GENDER:$1|utent}}",
"contributions-title": "Kontribuzzjonijiet tal-utent għal $1",
"mycontris": "Kontributi",
+ "anoncontribs": "Kontribuzzjonijiet",
"contribsub2": "Għal {{GENDER:$3|$1}} ($2)",
"contributions-userdoesnotexist": "L-utent \"$1\" mhuwiex reġistrat.",
"nocontribs": "L-Ebda modifiki li jisodisfa l-kriterji tat-tfittxija.",
@@ -2127,12 +2128,9 @@
"import-logentry-upload-detail": "{{PLURAL:$1|Reviżjoni waħda importata|$1 reviżjonijiet importati}}",
"import-logentry-interwiki-detail": "{{PLURAL:$1|reviżjoni|$1 reviżjonijiet}} minn $2",
"javascripttest": "Testjar tal-JavaScript",
- "javascripttest-pagetext-noframework": "Din il-paġna hi riservata għall-eżekuzzjoni tat-testijiet tal-JavaScript.",
"javascripttest-pagetext-unknownaction": "Azzjoni \"$1\" mhux magħrufa.",
- "javascripttest-pagetext-frameworks": "Jekk jogħġbok agħżel wieħed mill-oqsma tal-ittestjar: $1",
- "javascripttest-pagetext-skins": "Agħżel aspett grafiku fuq liema tesegwixxi testijiet:",
"javascripttest-qunit-intro": "Ara d-[$1 dokumentazzjoni dwar it-test] fuq mediawiki.org.",
- "tooltip-pt-userpage": "Il-paġna tal-utent tiegħek",
+ "tooltip-pt-userpage": "Il-paġna tiegħek ta' utent",
"tooltip-pt-anonuserpage": "Il-Paġna tal-utent ta' dan l-indirizz tal-IP",
"tooltip-pt-mytalk": "Il-paġna ta' diskussjoni tiegħek",
"tooltip-pt-anontalk": "Diskussjoni dwar il-modifiki magħmula minn dan l-indirizz tal-IP",
@@ -2143,7 +2141,7 @@
"tooltip-pt-logout": "Oħroġ (illogja 'l barra)",
"tooltip-pt-createaccount": "Nagħtuk parir toħloq kont u tidħol fih; però dan mhux obligatorju.",
"tooltip-ca-talk": "Diskussjoni dwar il-paġna ta' kontenut",
- "tooltip-ca-edit": "Tista' timmodifika din il-paġna. Jekk jogħġbok uża l-buttuna tad-dehra proviżorja qabel ma ssalva l-modifiki.",
+ "tooltip-ca-edit": "Immodifika din il-paġna",
"tooltip-ca-addsection": "Ibda sezzjoni Ä¡dida",
"tooltip-ca-viewsource": "Din il-paġna hija protetta. Tista' tara s-sors tagħha.",
"tooltip-ca-history": "Verżjonijiet preÄedenti ta' din il-paÄ¡na",
@@ -2152,9 +2150,9 @@
"tooltip-ca-delete": "Ħassar din il-paġna",
"tooltip-ca-undelete": "Irkupra l-modifiki magħmula f'din il-paġna qabel ma ġiet imħassra",
"tooltip-ca-move": "Mexxi din il-paġna",
- "tooltip-ca-watch": "Żid din il-paġna mal-lista ta' osservazzjoni tiegħek",
+ "tooltip-ca-watch": "Żid dil-paġna mal-lista ta' dawk li qed isssegwi",
"tooltip-ca-unwatch": "Neħħi din il-paÄ¡na mill-osservazzjonijiet speÄjali tiegħek",
- "tooltip-search": "Fittex fil-{{SITENAME}}",
+ "tooltip-search": "Fittex fis-sit: {{SITENAME}}",
"tooltip-search-go": "Mur fil-paġna b'dan it-titlu eżatt, jekk teżisti",
"tooltip-search-fulltext": "Fittex dan it-test fil-paġni",
"tooltip-p-logo": "Å»ur il-paÄ¡na prinÄipali",
@@ -2162,14 +2160,14 @@
"tooltip-n-mainpage-description": "Å»ur il-paÄ¡na prinÄipali",
"tooltip-n-portal": "Dwar il-proġett, x'tista' tagħmel, fejn tista' ssib l-affarijiet",
"tooltip-n-currentevents": "Sib aktar informazzjoni dwar il-Ä¡rajjiet kurrenti",
- "tooltip-n-recentchanges": "Il-lista tal-bidliet riÄenti fil-wiki",
+ "tooltip-n-recentchanges": "Lista tal-bidliet riÄenti fil-wiki",
"tooltip-n-randompage": "Uri paġna kwalunkwe",
"tooltip-n-help": "Il-post fejn issir taf iżjed.",
"tooltip-t-whatlinkshere": "Lista tal-paġni tal-wiki kollha li jwasslu hawn",
- "tooltip-t-recentchangeslinked": "Link għal modifiki riÄenti ta' paÄ¡ni relatati",
+ "tooltip-t-recentchangeslinked": "Modifiki riÄenti f'paÄ¡ni b'ħolqa minn din il-paÄ¡na",
"tooltip-feed-rss": "Feed RSS għal din il-paġna",
"tooltip-feed-atom": "Feed Atom għal din il-paġna",
- "tooltip-t-contributions": "Uri l-lista tal-kontribuzzjonijiet ta' dan l-utent",
+ "tooltip-t-contributions": "Lista tal-kontribuzzjonijiet ta' {{GENDER:$1|dal-utent}}",
"tooltip-t-emailuser": "Ibgħat posta elettronika lil dan l-utent",
"tooltip-t-info": "Aktar informazzjoni fuq din il-paġna",
"tooltip-t-upload": "Tella' fajls",
@@ -2179,7 +2177,7 @@
"tooltip-ca-nstab-main": "Uri l-paġna ta' kontenut",
"tooltip-ca-nstab-user": "Uri l-paġna tal-utent",
"tooltip-ca-nstab-media": "Uri l-paġna tal-medja",
- "tooltip-ca-nstab-special": "Din hija paÄ¡na speÄjali, ma tistax tagħmel modifiki f'din il-paÄ¡na",
+ "tooltip-ca-nstab-special": "Din paÄ¡na speÄjali, u ma tistax tiÄ¡i mmodifikata",
"tooltip-ca-nstab-project": "Uri l-paġna tal-proġett",
"tooltip-ca-nstab-image": "Uri l-paġna tal-fajl",
"tooltip-ca-nstab-mediawiki": "Uri l-messaġġ tas-sistema",
@@ -2344,7 +2342,7 @@
"metadata-help": "Dan il-fajl fih aktar informazzjoni, aktarx ġie miżjud minn kamera diġitali jew skanner li ġew użati sabiex joħolquh jew biex jagħmluh diġitali.\nJekk il-fajl ġie modifikat mill-istat oriġinali, xi dettalji jistgħu ma jikkorispondux mal-verżjoni kurrenti.",
"metadata-expand": "Uri d-dettalji",
"metadata-collapse": "Aħbi d-dettalji",
- "metadata-fields": "Il-metadati tal-istampa mniżżla f'dan il-messaġġ se jiġu inklużi fuq il-paġna tal-sitampa meta t-tabella tal-metadata tkun magħluqa.\nOħrajn jiġu moħbija kif inhu definit oriġinarjament.\n* make\n* model\n* datetimeoriginal\n* exposuretime\n* fnumber\n* isospeedratings\n* focallength\n* artist\n* copyright\n* imagedescription\n* gpslatitude\n* gpslongitude\n* gpsaltitude",
+ "metadata-fields": "Il-lista f'dal-messaġġ tal-metadati tal-istampa se tiġi inkluża fil-paġna tal-istampa meta t-tabella tal-metadata tingħalaq.\nOħrajn jiġu moħbija skont kif inhu predefinit.\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": "Wisa'",
"exif-imagelength": "Għoli",
"exif-bitspersample": "Bits għal kull komponent",
@@ -2378,8 +2376,8 @@
"exif-colorspace": "Spazju tal-kuluri",
"exif-componentsconfiguration": "Tfissira dwar kull komponent",
"exif-compressedbitsperpixel": "Għamla tal-kompressjoni tal-istampa",
- "exif-pixelydimension": "Wisa' tal-istampa",
- "exif-pixelxdimension": "Għoli tal-istama",
+ "exif-pixelxdimension": "Wisa' tal-istampa",
+ "exif-pixelydimension": "Għoli tal-istama",
"exif-usercomment": "Noti tal-utent",
"exif-relatedsoundfile": "Fajl relatat mal-ismiegħ",
"exif-datetimeoriginal": "Data u ħin tal-ħolqien tad-data",
@@ -2823,7 +2821,6 @@
"version-libraries-library": "Librerija",
"version-libraries-version": "Verżjoni",
"redirect": "Irrindirizza lejn fajl, utent, paġna jew reviżjoni",
- "redirect-legend": "Irrindirizza lejn fajl jew paġna",
"redirect-summary": "Din il-paÄ¡na speÄjali tirrindirizza lejn fajl (meta tispeÄifika isem ta' fajl), paÄ¡na (meta tispeÄifika l-ID tar-reviżjoni jew l-ID tal-paÄ¡na) jew paÄ¡na tal-utent (meta tispeÄifika l-ID numeriku tal-utent). Użu: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], jew [[{{#Special:Redirect}}/user/101]].",
"redirect-submit": "Mur",
"redirect-lookup": "Fittex:",
@@ -2835,7 +2832,6 @@
"redirect-not-exists": "Il-valur ma nstabx",
"fileduplicatesearch": "Fittex fajls duplikati",
"fileduplicatesearch-summary": "Fittex fajls duplikati fil-bażi għal valur ''hash''.",
- "fileduplicatesearch-legend": "Fittex għal duplikat",
"fileduplicatesearch-filename": "Isem il-fajl:",
"fileduplicatesearch-submit": "Fittex",
"fileduplicatesearch-info": "$1 Ã $2 pixel Daqs tal-fajl: $3 tip MIME: $4",
diff --git a/languages/i18n/my.json b/languages/i18n/my.json
index 7ad983aeb9..c1cf0194cd 100644
--- a/languages/i18n/my.json
+++ b/languages/i18n/my.json
@@ -22,7 +22,8 @@
"ìë¼",
"9.sinistra",
"Ninjastrikers",
- "Penguinlay"
+ "Penguinlay",
+ "Nemo bis"
]
},
"tog-underline": "ááá·áºááᯠáá»ááºá¸áá¬á¸ááá·áº áá¯á¶á
ᶠ-",
@@ -178,8 +179,8 @@
"returnto": "$1 ááá¯á· áá¼ááºáá½á¬á¸áááºá",
"tagline": "{{SITENAME}} áá¾",
"help": "á¡âáá°âá¡âáá®â",
- "search": "áá¾á¬âáá½á±âáááºâ",
- "searchbutton": "áá¾á¬âáá½á±âáááºâ",
+ "search": "áá¾á¬áá½á±áááº",
+ "searchbutton": "áá¾á¬áá½á±áááº",
"go": "áá½á¬á¸âáá«â",
"searcharticle": "áá½á¬á¸âáá«â",
"history": "á
á¬áá»ááºáá¾á¬ áá¬ááááº",
@@ -230,7 +231,7 @@
"protectedpage": "áá¬áá½ááºáá¬á¸ááá·áº á
á¬áá»ááºáá¾á¬",
"jumpto": "á¤áá±áá¬ááá¯á·áá½á¬á¸ááẠ-",
"jumptonavigation": "á¡âáá½á¾ááºá¸â",
- "jumptosearch": "áá¾á¬âáá½á±âáááºâ",
+ "jumptosearch": "áá¾á¬áá½á±áááº",
"view-pool-error": "áá¬áá¬ááẠááá¯á¡áá»áááºáá½áẠááá»á¾áá±á¬áááºááᯠáááºá¸áá±ááááºá\ná¡áá¯á¶á¸áá¼á¯áá° á¡áá¼á±á¬ááºá¡áá»á¬á¸á á¤á
á¬áá»ááºáá¾á¬ááᯠáá¼áá·áºáá¾á¯ááẠáá¼áá¯á¸áááºá¸áá±áá¼áááºá\ná¤á
á¬áá»ááºáá¾á¬ááᯠáá±á¬ááºáá
áºáá¼ááẠáá¼ááºááá¼áá·áºáá® áááá¬áá»á¾ á
á±á¬áá·áºáá«á\n\n$1",
"generic-pool-error": "áááºá¸áááºá¸áá«áááºá áá¬áá¬áá»á¬á¸ááẠááá¯á¡áá»áááºáá½áẠááá»á¾áá±á¬áááºááᯠáááºá¸áá±ááááºá\ná¡áá¯á¶á¸áá¼á¯áá° á¡áá¼á±á¬ááºá¡áá»á¬á¸á á¤á
á¬áá»ááºáá¾á¬ááᯠáá¼áá·áºáá¾á¯ááẠáá¼áá¯á¸áááºá¸áá±áá¼áááºá\ná¤á
á¬áá»ááºáá¾á¬ááᯠáá±á¬ááºáá
áºáá¼ááẠáá¼ááºááá¼áá·áºáá® áááá¬áá»á¾ á
á±á¬áá·áºáá«á",
"pool-errorunknown": "á¡áááºáááá¡áá¾á¬á¸",
@@ -563,6 +564,7 @@
"revdelete-show-file-submit": "áá¾ááº",
"revdelete-selected-file": "[[:$2]] á áá½á±á¸áá»ááºáá¬á¸áá±á¬ {{PLURAL:$1|ááá¯ááºáá¬á¸áá¾ááºá¸|ááá¯ááºáá¬á¸áá¾ááºá¸áá»á¬á¸}}:",
"revdelete-text-text": "áá»ááºááá¯ááºááá·áº áá°áá»á¬á¸ááẠá
á¬áá»ááºáá¾á¬áá¬ááááºáá½áẠáá¾ááá±á¦á¸áááºáá¼á
áºáá±á¬áºáááºá¸ ááá¯áá«áááºá¡áá¼á±á¬ááºá¸á¡áá¬ááẠá¡áá»á¬á¸áá¼ááºáá°áá¾ áá¼ááºááá±á¬á·ááẠááá¯ááºáá±á",
+ "revdelete-text-file": "áá»ááºááá¯ááºáá±á¬ ááá¯ááºáá¬á¸áá¾ááºá¸áá»á¬á¸ááẠááá¯ááºáá¬ááááºáá²áá½áẠáá¾ááá±á¦á¸áááºáá¼á
áºáá±á¬áºáááºá¸ áááºá¸ááá¯á·ááᯠá¡áá»á¬á¸áá¼ááºáá° áá¼áá·áºáá¾á¯ááá¯ááºááẠááá¯ááºáá±á",
"logdelete-text": "áá»ááºááá¯ááºáá±á¬ áá¾ááºáááºá¸ááẠáá¾ááºáááºá¸áá»á¬á¸áá²áá½áẠáá±á«áºáá±á¦á¸áááºáá¼á
áºáá±á¬áºáááºá¸ áá«áááºá¡áá¼á±á¬ááºá¸á¡áá¬ááᯠá¡áá»á¬á¸áá¼ááºáá°áá»á¬á¸ áá¼ááºááá±á¬á·ááẠááá¯ááºáá±á",
"revdelete-text-others": "á¡ááá¯ááá·áºáááºáá»ááºáá»á¬á¸ááᯠáááá·áºáá¬á¸áá«á á¡áá¼á¬á¸áá±á¬ á¡ááºááááºáá»á¬á¸á¡áá±áá¼áá·áº áá¾ááºáá¬á¸áá±á¬ á¡áá¼á±á¬ááºá¸á¡áá¬ááᯠáá¼áá·áºááá¯ááºáá¼á®á¸ áá»ááºáá¬á¸áá¼ááºá¸ááᯠáááºáá»ááºááá¯ááºáááºá",
"revdelete-confirm": "á¤ááá¯á· áá»ááºáá
áºááẠááẠá¡áá¾ááºáááẠáááºáá½ááºáá»áẠáá±á¬ááºáááºáá½á² á¡áá»áá¯á¸áááºáá»á¬á¸ááᯠáááá¾ááá¬á¸áááºáá¼á®á¸ [[{{MediaWiki:Policy-url}}|áá°áá«á]]á¡ááá¯ááºá¸ áá¯ááºáá±á¬ááºáá±áá¼ááºá¸áá¼á
áºáá¼á±á¬ááºá¸ááᯠáá»á±á¸áá°á¸áá¼á¯á á¡áááºáá¼á¯áá±á¸áá«á",
@@ -685,7 +687,7 @@
"prefs-editing": "áááºá¸áá¼ááºáá¼ááºá¸",
"rows": "á¡áá»á¬á¸ááá¯ááºáááºá¸ -",
"columns": "áá±á«ááºááá¯ááºáááºá¸ -",
- "searchresultshead": "áá¾á¬âáá½á±âáááºâ",
+ "searchresultshead": "áá¾á¬áá½á±áááº",
"stub-threshold-disabled": "ááááºáá¬á¸áááº",
"recentchangesdays": "áááºááá±á¬á¡áá¼á±á¬ááºá¸á¡áá²áá»á¬á¸ááᯠáá¼áááºáá±á·áá»á¬á¸ -",
"recentchangesdays-max": "á¡áá»á¬á¸áá¯á¶á¸ $1 {{PLURAL:$1|áááº|áááº}}",
@@ -710,7 +712,7 @@
"timezoneregion-indian": "á¡ááá¹áááááá¯áá¹ááá¬",
"timezoneregion-pacific": "áá
áááááºááá¯áá¹ááá¬",
"allowemail": "á¡áá¼á¬á¸á¡áá¯á¶á¸áá¼á¯áá°áá»á¬á¸áá¶áá¾ á¡á®á¸áá±á¸áá»á¬á¸ááᯠáááºáá¶áááº",
- "prefs-searchoptions": "áá¾á¬âáá½á±âáááºâ",
+ "prefs-searchoptions": "áá¾á¬áá½á±áááº",
"prefs-namespaces": "á¡áááºáá½á¾ááºá¸",
"default": "áá¯á¶áá¾ááºá¡á¬á¸áá¼áá·áº",
"prefs-files": "ááá¯ááº",
@@ -910,7 +912,7 @@
"recentchangeslinked-page": "á
á¬áá»ááºáá¾á¬ á¡ááẠ-",
"recentchangeslinked-to": "áá±á¸áá¬á¸áá±á¬ á
á¬áá»ááºáá¾á¬áá»á¬á¸á¡á
á¬á¸ ááá·áºáá»á¬á¸áá¾áá·áº áááºá
ááºáá±áᬠá
á¬áá»ááºáá¾á¬áá»á¬á¸á á¡áá¼á±á¬ááºá¸á¡áá²áá»á¬á¸ááᯠáá¼áááº",
"recentchanges-page-added-to-category": "ááá¹ááá²ááá¯á· [[:$1]] ááᯠáá±á«ááºá¸ááá·áºáá²á·áááº",
- "recentchanges-page-added-to-category-bundled": "[[:$1]] áá¾áá·áº {{PLURAL:$2|á
á¬áá»ááºáá¾á¬ áá
áºáá¯|á
á¬áá»ááºáá¾á¬ $2 áá¯}}ááᯠááá¹ááá²ááá¯á· áá±á«ááºá¸ááá·áºáá²á·áááº",
+ "recentchanges-page-added-to-category-bundled": "[[:$1]] áá¾áá·áº [[Special:WhatLinksHere/$1|{{PLURAL:$2|á
á¬áá»ááºáá¾á¬ áá
áºáá¯|á
á¬áá»ááºáá¾á¬ $2 áá¯}}]]ááᯠááá¹ááá²ááá¯á· áá±á«ááºá¸ááá·áºáá²á·áááº",
"recentchanges-page-removed-from-category": "ááá¹ááá²áá¾ [[:$1]] ááᯠáááºáá¾á¬á¸áá²á·áááº",
"recentchanges-page-removed-from-category-bundled": "[[:$1]] áá¾áá·áº {{PLURAL:$2|á
á¬áá»ááºáá¾á¬ áá
áºáá¯|á
á¬áá»ááºáá¾á¬ $2 áá¯}}ááᯠááá¹ááá²áá¾ áááºáá¾á¬á¸áá²á·áááº",
"upload": "ááá¯ááºâáááºâáááºâ",
@@ -1117,15 +1119,13 @@
"categories": "ááá¹ááá»á¬á¸",
"categories-submit": "áá¼ááááº",
"categoriesfrom": "á¤áá¾á
áá±á¬ á¡áá»áá¯á¸á¡á
á¬á¸áá»á¬á¸ááᯠáá¼ááẠ-",
- "special-categories-sort-count": "á¡áááºá¸á¡áá»á¬á¸á¡ááá¯ááºá
á®áááº",
- "special-categories-sort-abc": "á¡áá¹ááá¬á
ááºá¡ááá¯ááºá
á®áááº",
"deletedcontributions": "áá»ááºááá¯ááºáá±á¬ áá¶á·ááá¯á¸áá¾á¯áá»á¬á¸",
"deletedcontributions-title": "áá»ááºááá¯ááºáá±á¬ áá¶á·ááá¯á¸áá¾á¯áá»á¬á¸",
"sp-deletedcontributions-contribs": "áá¶á·ááá¯á¸áá¬á¸áá¾á¯áá»á¬á¸",
"linksearch": "áá¼ááºáááá·áºááºáá»á¬á¸ áá¾á¬áá½á±",
"linksearch-pat": "áá¾á¬ááá·áºáá¯á¶á
ᶠ-",
"linksearch-ns": "á¡áááºáá½á¾ááºá¸ -",
- "linksearch-ok": "áá¾á¬âáá½á±âáááºâ",
+ "linksearch-ok": "áá¾á¬áá½á±áááº",
"linksearch-line": "$1 ááẠ$2 áá¾ ááá·áºáá»áááºáá¬á¸áááº",
"listusersfrom": "á¤áá¾á
áá±á¬ á¡áá¯á¶á¸áá¼á¯áá°áá»á¬á¸ááᯠáá¼ááẠ-",
"listusers-submit": "áá¼",
@@ -1267,7 +1267,7 @@
"undeletecomment": "á¡âáá¼á±á¬ááºá¸âáá¼âáá»áẠ-",
"undeletedrevisions": "{{PLURAL:$1|áá°áá
áºáá¯|áá° $1 áá¯}} ááá¯áá¼ááºááẠááááºá¸ááááºá¸áá¼á®á¸",
"undelete-search-box": "áá»ááºáá
áºááá·áº á
á¬áá»ááºáá¾á¬áá»á¬á¸áá¾ áá¾á¬áááº",
- "undelete-search-submit": "áá¾á¬âáá½á±âáááºâ",
+ "undelete-search-submit": "áá¾á¬áá½á±áááº",
"undelete-show-file-submit": "áá¾ááº",
"namespace": "á¡áááºáá½á¾ááºá¸ -",
"invert": "áá½á±á¸áá»ááºáá¬á¸áá¼ááºá¸ááᯠáá¼á±á¬ááºá¸áá¼ááºáá¾ááºáááº",
@@ -1292,7 +1292,7 @@
"sp-contributions-search": "áá¶á·ááá¯á¸áá¾á¯áá»á¬á¸ááᯠáá¾á¬áááº",
"sp-contributions-username": "á¡áá¯ááºáá®ááááºá
ᬠááá¯á· á¡áá¯á¶á¸áá¼á¯áá°á¡ááẠ:",
"sp-contributions-toponly": "áá±á¬ááºáá¯á¶á¸áááºá¸áá¼ááºáá°áá»á¬á¸áá¬áá¼áááº",
- "sp-contributions-submit": "áá¾á¬âáá½á±âáááºâ",
+ "sp-contributions-submit": "áá¾á¬áá½á±áááº",
"whatlinkshere": "áááºáááá·áºááºáá¬á¸áá²",
"whatlinkshere-title": "\"$1\" ááᯠááá·áºáá¬á¸áá±á¬ á
á¬áá»ááºáá¾á¬áá»á¬á¸",
"whatlinkshere-page": "á
á¬áá»ááºáá¾á¬ -",
@@ -1335,7 +1335,7 @@
"blocklist": "ááááºáááºáá¬á¸áá±á¬ á¡áá¯á¶á¸áá¼á¯áá°áá»á¬á¸",
"ipblocklist": "ááááºáááºáá¬á¸áá±á¬ á¡áá¯á¶á¸áá¼á¯áá°áá»á¬á¸",
"ipblocklist-legend": "ááááºáááºáá¬á¸áá±á¬ á¡áá¯á¶á¸áá¼á¯áá°áá
áºá¦á¸ááᯠáá¾á¬áááº",
- "ipblocklist-submit": "áá¾á¬âáá½á±âáááºâ",
+ "ipblocklist-submit": "áá¾á¬áá½á±áááº",
"ipblocklist-otherblocks": "á¡áá¼á¬á¸ ááááºáááºáá¬á¸áá¾á¯{{PLURAL:$1|áá¯|áá¯}}",
"infiniteblock": "á¡ááá·áºá¡áááºááá¾á",
"expiringblock": "$1 ááẠ$2 á¡áá»áááºáá½áẠáááºáááºá¸áá¯ááºáááº",
@@ -1431,7 +1431,7 @@
"tooltip-ca-move": "á¤á
á¬áá»ááºáá¾á¬ááᯠáá½á¾á±á·áá¼á±á¬ááºá¸áááº",
"tooltip-ca-watch": "á¤á
á¬áá»ááºáá¾á¬ááᯠá
á±á¬áá·áºáá¼áá·áºá
á¬áááºá¸ááá¯á· ááá·áºáááº",
"tooltip-ca-unwatch": "á¤á
á¬áá»ááºáá¾á¬ááᯠá
á±á¬áá·áºáá¼áá·áºá
á¬áááºá¸áá¾ áá¼á¯ááºáááº",
- "tooltip-search": "{{SITENAME}}ááᯠáá¾á¬áááº",
+ "tooltip-search": "{{SITENAME}}áá½áẠáá¾á¬áá½á±áááº",
"tooltip-search-go": "á¤á¡áááºáá¾áá·áº áááºáá°áá®áá±á¬ á
á¬áá»ááºáá¾á¬áá¾ááá«á áááºá¸ááá¯á· áá½á¬á¸áááº",
"tooltip-search-fulltext": "á¤á
á¬áá«áá±á¬ á
á¬áá»ááºáá¾á¬áá»á¬á¸ááᯠáá¾á¬áááº",
"tooltip-p-logo": "áááá¯á
á¬áá»ááºáá¾á¬ááá¯á· áá½á¬á¸áááº",
@@ -1490,7 +1490,7 @@
"newimages-legend": "á
áá
á
áºáá¾á¯",
"newimages-label": "ááá¯ááºá¡ááẠ(ááá¯á· áááºá¸áá¡á
áááºá¡ááá¯ááºá¸) -",
"noimages": "áá¼áá·áºá
áá¬áá¬áá¾ ááá¾ááá«á",
- "ilsubmit": "áá¾á¬âáá½á±âáááºâ",
+ "ilsubmit": "áá¾á¬áá½á±áááº",
"bydate": "áááºá
á½á²áá¼ááá·áº",
"sp-newimages-showfrom": "$1 áá±á· $2 á¡áá»áááºáá
áá±á¬ ááá¯ááºá¡áá
áºáá»á¬á¸ááᯠáá¼áááº",
"bad_image_list": "áá±á¬áááºáá¯á¶á
á¶áá¾á¬ á¡á±á¬ááºáá«á¡ááá¯ááºá¸áá¼á
áºáááºá\n\ná
á¬áááºá¸áá½ááºááá·áºáá½ááºá¸áá¬á¸áá±á¬ á¡áá¬áá»á¬á¸ááá¯áᬠááá·áºáá½ááºá¸á
ááºá¸á
á¬á¸áááºá (ááá±áá½áá·áº * áá¼áá·áºá
áá±á¬ á
á¬áá¼á±á¬ááºá¸áá»á¬á¸)\ná
á¬áá¼á±á¬ááºá¸á ááááá¯á¶á¸ ááá·áºááẠááá¯ááºáá¶á· áá¼á
áºááááºá\náááºá¸á
á¬áá¼á±á¬ááºá¸áá½ááºááẠáá±á¬ááºáááºáá¬áá±á¬ááá·áºáá»á¬á¸ááᯠáá»á½ááºá¸áá»ááºá¡áá¼á
Ạá
ááºá¸á
á¬á¸áááºá ááá¯ááá¯áááºáá¾á¬ áááºá¸ááá·áºáá»á¬á¸áá½ááºáááºá¸ á¡ááá¯áá« ááá¯ááºáá¶á· áá«áá±á¬ááºá¸ áá«áááºáá±áááºá",
@@ -1513,8 +1513,8 @@
"exif-copyright": "áá°ááá¯ááºáá½áá·áºááá¯ááºáá¾ááº",
"exif-exifversion": "Exif áá¬á¸áá¾ááºá¸",
"exif-colorspace": "á¡áá±á¬ááºáá±áá¬",
- "exif-pixelydimension": "áá¯á¶á¡áá»ááº",
- "exif-pixelxdimension": "áá¯á¶á¡áá¼áá·áº",
+ "exif-pixelxdimension": "áá¯á¶á¡áá»ááº",
+ "exif-pixelydimension": "áá¯á¶á¡áá¼áá·áº",
"exif-usercomment": "á¡áá¯á¶á¸áá¼á¯áá° áá¾ááºáá»ááºáá»á¬á¸",
"exif-relatedsoundfile": "áááºáá½ááºáá±á¬ á¡áá¶ááá¯ááº",
"exif-datetimeoriginal": "áá±áá¬áááºáá®á¸áá²á·áá±á¬ áá±á·á
á½á²áá¾áá·áº á¡áá»áááº",
@@ -1594,9 +1594,8 @@
"version-software-product": "áá¯ááºáá¯ááº",
"version-software-version": "áá¬á¸áá¾ááºá¸",
"fileduplicatesearch": "áá¾á
áºáá¯áááºáá±áá±á¬ááá¯ááºáá»á¬á¸ááᯠáá¾á¬áááº",
- "fileduplicatesearch-legend": "áá¾á
áºáá¯áááºáá±áááºááᯠáá¾á¬áááº",
"fileduplicatesearch-filename": "ááá¯ááºá¡ááẠ-",
- "fileduplicatesearch-submit": "áá¾á¬âáá½á±âáááºâ",
+ "fileduplicatesearch-submit": "áá¾á¬áá½á±áááº",
"specialpages": "á¡âáá°á¸ âá
á¬âáá»ááºâáá¾á¬âáá»á¬á¸",
"specialpages-group-maintenance": "ááááºá¸ááááºá¸áá¾á¯ á¡á
á®áááºáá¶áá»ááºáá»á¬á¸",
"specialpages-group-other": "á¡áá¼á¬á¸á¡áá°á¸á
á¬áá»ááºáá¾á¬áá»á¬á¸",
diff --git a/languages/i18n/myv.json b/languages/i18n/myv.json
index a1a9bb125d..9f40bf462e 100644
--- a/languages/i18n/myv.json
+++ b/languages/i18n/myv.json
@@ -1006,8 +1006,6 @@
"allpages-bad-ns": "{{SITENAME}} ÑайÑÑÑнÑÑ Ð°ÑаÑÑ Ð»ÐµÐ¼ поÑмо \"$1\".",
"categories": "ÐаÑегоÑиÑÑ",
"categoriespagetext": "{{PLURAL:$1|Те каÑегоÑиÑÑонÑÑ|ÐеÑÑ ÐºÐ°ÑегоÑиÑÑнеÑÑ}} ÑлиÑÑ Ð»Ð¾Ð¿Ð°Ñ Ñли медиÑÑ.\n[[Special:UnusedCategories|ÑÐµÐ²Ñ Ð°Ð¿Ð°Ðº нолда каÑегоÑиÑÑне]] ÑеÑÑ Ð° невÑевиÑÑ.\nÐÑÑÑжо ванÑÑÑ [[Special:WantedCategories|веÑема каÑегоÑиÑÑненÑ]].",
- "special-categories-sort-count": "аÑавÑÐ¾Ð¼Ñ ÑÑÑÐ¾Ð½Ñ ÐºÐ¾ÑÑÑ",
- "special-categories-sort-abc": "аÑавÑÐ¾Ð¼Ñ Ð°Ð»ÑÑавиÑÑÐ½Ñ ÐºÐ¾ÑÑÑ",
"sp-deletedcontributions-contribs": "пÑÑовкÑонзо",
"linksearch": "УÑо ÑÐ½Ð´Ð¾Ð½Ñ ÑÑÐ»Ð¼Ð°Ð²Ð¾Ð¼Ð°Ð¿ÐµÐ½ÐµÐ½Ñ Ð²ÐµÑнема",
"linksearch-pat": "ÐеÑÐ½ÐµÐ¼ÐºÑ Ð¿Ð°ÑÑÑн:",
@@ -1412,8 +1410,8 @@
"exif-artist": "ТеиÑÑзо",
"exif-copyright": "ÐÐ¾Ð¿Ð¸Ñ ÑÐµÐµÐ¼Ð°Ð½Ñ Ð²Ð¸Ð´ÐµÑÐ¸Ð½Ñ ÐºÐ¸ÑдиÑÑÑÑ",
"exif-colorspace": "ТÑÑ ÑÑко",
- "exif-pixelydimension": "ÐÑÑовкÑонÑÑ ÐºÐµÐ»ÐµÐ·Ñ",
- "exif-pixelxdimension": "ÐÑÑовкÑонÑÑ ÑÑÑезÑ",
+ "exif-pixelxdimension": "ÐÑÑовкÑонÑÑ ÐºÐµÐ»ÐµÐ·Ñ",
+ "exif-pixelydimension": "ÐÑÑовкÑонÑÑ ÑÑÑезÑ",
"exif-usercomment": "ТеиÑÑÐ½Ñ Ð¼ÐµÐ»ÑÑÑ-аÑÑÑемаÑ",
"exif-exposuretime": "ÐалдомÑÐ¾Ð¼Ð°Ð½Ñ (ÐкÑпозиÑиÑнÑ) Ñка",
"exif-fnumber": "ÐиаÑÑÐ°Ð³Ð¼Ð°Ð½Ñ ÑиÑлаÑÑ",
@@ -1583,7 +1581,6 @@
"version-software-product": "ШкавкÑ-нолдавкÑ",
"version-software-version": "ÐеÑзиÑ",
"fileduplicatesearch": "ÐеÑÐ½ÐµÐ¼Ñ ÐºÐ°Ð²ÑаÑÑке ÑайлаÑ",
- "fileduplicatesearch-legend": "ÐеÑÐ½ÐµÐ¼Ñ ÐºÐ°Ð²ÑаÑÑке",
"fileduplicatesearch-filename": "Файла лем:",
"fileduplicatesearch-submit": "ÐеÑнемÑ",
"specialpages": "ÐаÑка ÑÐµÐ²ÐµÐ½Ñ Ð»Ð¾Ð¿Ð°Ñ",
diff --git a/languages/i18n/nan.json b/languages/i18n/nan.json
index 69be88a6e4..1bd4a2b9f7 100644
--- a/languages/i18n/nan.json
+++ b/languages/i18n/nan.json
@@ -14,6 +14,7 @@
"tog-hideminor": "Am chòe-kīn ê sió kái-pià n",
"tog-hidepatrolled": "Am chòe-kīn sûn koè--ê kái-pià n",
"tog-newpageshidepatrolled": "Sin-iaÌh ê chheng-toaâ¿ am sûn koè--ê",
+ "tog-hidecategorization": "KÄ iaÌh ê lÅ«i-piaÌt chhà ng--khì-lâi",
"tog-extendwatchlist": "thián-khui kà m-sÄ«-toaâ¿, khoà ⿠choân-pÅÍ kái ê, mÌ-nÄ choè-kÄ«n niÄ.",
"tog-usenewrc": "å
±æç« æè¿ææ¹çä½®ç£è¦å表å¥åä¼",
"tog-numberheadings": "Phiau-tê chÅ«-tÅng pian-hÅ",
@@ -24,6 +25,8 @@
"tog-watchdefault": "KÄ goá pian-chiÌp kòe ê iaÌh kah tóng-à n ka-jiÌp kà m-sÄ«-toaâ¿ lÄi-té",
"tog-watchmoves": "KÄ goá soá ê iaÌh kah tóng-à n ka-jiÌp kà m-sÄ«-toaâ¿",
"tog-watchdeletion": "KÄ goá thâi tiÄu ê iaÌh kah tóng-à n ka-jiÌp kà m-sÄ«-toaâ¿",
+ "tog-watchuploads": "Chiong góa ap-lÃ³Í Ãª tóng-à n ka-jiÌp kam-sÄ«-toaâ¿",
+ "tog-watchrollback": "Chiong góa Ã-keng ká--tÅg-khì ê iaÌh-bÄ«n ka-jiÌp góa-ê kam-sÄ«-toaâ¿",
"tog-minordefault": "ChiÄm-tÄng bÄ«-lâi ê siu-kái lóng sÄ« sió siu-kái",
"tog-previewontop": "Sûn-khoà ⿠ê lÅe-iông tÄ« pian-chiÌp keh-á thâu-chêng",
"tog-previewonfirst": "Thâu-pái pian-chiÌp seng khoà â¿-mÄi",
@@ -34,14 +37,16 @@
"tog-shownumberswatching": "Hián-sÄ« tng leh khoà ⿠ê iÅng-chiá sòÍ-boÌk",
"tog-oldsig": "Chit-má ê chhiam-miâ:",
"tog-fancysig": "å
±æçç°½åç¶åæç« æåï¼ï¼ç¡éè¦èªåé£çµï¼",
- "tog-uselivepreview": "Äng sui khoà â¿-mÄi (chhì-giÄm--ê)",
+ "tog-uselivepreview": "Äng sui khoà â¿-mÄi",
"tog-forceeditsummary": "Pian-chiÌp khà i-ià u bô thi⿠ê sî-chÅ«n, kÄ goá thê-chhéâ¿",
"tog-watchlisthideown": "Kà m-sÄ«-toaâ¿ bián hián-sÄ« goá ê pian-chiÌp",
"tog-watchlisthidebots": "Kà m-sÄ«-toaâ¿ bián hián-sÄ« ki-khì pian-chiÌp",
"tog-watchlisthideminor": "Kà m-sī-toa⿠bián hián-sī sió siu-kái",
"tog-watchlisthideliu": "Kà m-sÄ«-toaâ¿ bián hián-sÄ« iÅng-chiá Å« teng-jiÌp ê pian-chiÌp",
+ "tog-watchlistreloadautomatically": "Tong kè-lÅ«-khì kái-tÅng sî chÅ«-tÅng têng-khui kam-sÄ«-toaâ¿ (su-ià u JavaScript)",
"tog-watchlisthideanons": "Kà m-sÄ«-toaâ¿ bián hián-sÄ« bû-bêng-sÄ« ê pian-chiÌp",
"tog-watchlisthidepatrolled": "Kà m-sÄ«-toaâ¿ bián hián-sÄ« khoà â¿-koè--ê pian-chiÌp",
+ "tog-watchlisthidecategorization": "KÄ iaÌh ê lÅ«i-piaÌt chhà ng--khì-lâi",
"tog-ccmeonemails": "Kià hÅÍ paÌt-lâng ê email sÅ«n-soà kià copy hÅÍ goá",
"tog-diffonly": "Diff Ä-pêng bián hián-sÄ« iaÌh ê loÄ-iông",
"tog-showhiddencats": "Hián-sÄ« chhà ng khÃ--lâi ê lÅ«i-piaÌt",
@@ -118,6 +123,8 @@
"october-date": "10æ$1",
"november-date": "11æ$1",
"december-date": "12æ$1",
+ "period-am": "AM",
+ "period-pm": "PM",
"pagecategories": "{{PLURAL:$1|LÅ«i-piaÌt|LÅ«i-piaÌt}}",
"category_header": "TÄ« \"$1\" chit ê lÅ«i-piaÌt ê bûn-chiuâ¿",
"subcategories": "Ä-lÅ«i-piaÌt",
@@ -143,7 +150,7 @@
"morenotlisted": "éæ¯æ¯å®æ´ç表",
"mypage": "IaÌh",
"mytalk": "Thó-lūn",
- "anontalk": "Chit ê IP ê thó-lÅ«n-iaÌh",
+ "anontalk": "Thó-lūn",
"navigation": "SeÌh chÄm",
"and": " kap",
"qbfind": "ChhÅe",
@@ -222,6 +229,7 @@
"pool-queuefull": "TÅ«i-liaÌt pâi moá ah",
"pool-errorunknown": "MÌ-chai siá⿠chhò-gÅÍ",
"pool-servererror": "ç¡æä¾ç³»çµ±æå總æ¸ççµ±è¨ã",
+ "poolcounter-usage-error": "Äng-hoat chhò-gÅÍ: $1",
"aboutsite": "Koan-hÄ {{SITENAME}}",
"aboutpage": "Project:Koan-hÄ",
"copyright": "Tû liáu Å« lÄng-goÄ kóng, nÄ bô loÄ-iông sÄ« chià u $1 tiâu-kiÄâ¿ tÅ thang sú-iÅng.",
@@ -301,20 +309,25 @@
"databaseerror-query": "æ£ï¼$1",
"databaseerror-function": "åè½ï¼$1",
"databaseerror-error": "chhò-gÅÍ",
+ "transaction-duration-limit-exceeded": "Ūi tioÌh mà i sán-seng koân liÅng ê têng-hok iân-sî, pún kà i choán-sà ng in-Å«i sia-jiÌp sî-kan ($1) chhiau-kòe {{PLURAL:$2|bió-cheng}} ê chè-hÄn, Ã-keng hong hòng-khì.\nNÄ chún là sÄ« beh chiÌt kái kái-tÅng kúi--a-ê hÄng-boÌk, chhì Äng chÄ pái sió chhau-chok khòaâ¿-mÄi.",
"laggedslavemode": "'''æéï¼'''é å
§å®¹å¯è½æ¯æ¯ä¸æ°çã",
"readonly": "Chu-liÄu-khò· só tiâu leh",
"enterlockreason": "Phah beh hong-só ê lÃ-iû, pau-koah koÍ-kè siáâ¿-miÌh sî-chÅ«n Ä kái-tû hong-só.",
- "readonlytext": "Chu-liÄu-khò· hiÄn-chú-sî só tiâu leh, bô khai-hòng hÅ· lâng siu-kái. Che tÄi-khà i sÄ« in-Å«i teh pÄn î-siu khang-khòe, oân-sêng liáu-Äu èng-tong tÅ Ä hôe-hoÌk chèng-siông. HÅ«-chek ê hêng-chèng jîn-oân lâu chit-ê soat-bêng: $1",
+ "readonlytext": "Chu-liÄu-khÃ²Í hiÄn-chú-sî só tiâu leh, bô khai-hòng hÅÍ lâng siu-kái. Che tÄi-khà i sÄ« in-Å«i teh pÄn chéng-pÄ« khang-khòe, goân-sêng liáu-Äu èng-tong tÅ Ä hôe-hoÌk chèng-siông. \n\nHÅ«-chek ê hêng-chèng jîn-oân lâu chit-ê soat-bêng: $1",
"missing-article": "Chu-liÄu-khÃ²Í chhoÄ bô iaÌh ê luÄ-iông, iaÌh ê miâ \"$1\" $2 .\n\nChe it-poaâ¿ sÄ« in-Å«i koè-sî ê cheng-chha iaÌh sÄ« leÌk-sú liân-kiat ê iaÌh Ã-keng hông thâi tià u.\n\nNÄ mÌ-sÄ« hit chióng chêng-hêng, là khó-lêng tú tioÌh nÅg-thé ê chhò-ngÅÍ. Chhiá⿠pò hÅÍ chiÌt Å«i [[Special:ListUsers/sysop|koán-lÃ-goân]], Å«i liân-kiat hiâ khì lâu thong-ti .",
"missingarticle-rev": "ï¼ä¿®è¨çæ¬ï¼ï¼$1ï¼",
"missingarticle-diff": "ï¼ç²¾å·®ï¼$1ï¼$2ï¼",
"readonly_lag": "ä½é屬çè³æ庫æ´æ°å°ä¸»è¦è³æ庫è³æçæé£ï¼è³æ庫æèªåéå®ã",
+ "nonwrite-api-promise-error": "TÄ« leh HTTP header ê 'Promise-Non-Write-API-Action' Ã-keng sà ng--chhut-khì mÌ-koh chit-ê iau-kiû sÄ« sà ng kòe 1-ê API siá-jiÌp module.",
"internalerror": "LoÄ-pÅÍ Ãª chhò-ngÅÍ",
"internalerror_info": "LoÄ-pÅÍ Ãª chhò-ngÅÍ: $1",
+ "internalerror-fatal-exception": "\"$1\" lÅ«i ê tì-miÄ lÄ-gÅa",
"filecopyerror": "Bô-hoat-tÅ· kÄ tóng-à n \"$1\" khó·-pih khì \"$2\".",
"filerenameerror": "Bô-hoat-tÅ· kÄ tóng-à n \"$1\" kái-miâ chò \"$2\".",
"filedeleteerror": "Bô-hoat-tÅ· kÄ tóng-à n \"$1\" thâi tiÄu",
"directorycreateerror": "Bô-hoat-tÅÍ khui boÌk-loÌk \"$1\".",
+ "directoryreadonlyerror": "BoÌk-lioÌk \"$1\" sÄ« taâ¿ Ä-tà ng thaÌk--ê.",
+ "directorynotreadableerror": "BoÌk-lioÌk \"$1\" sÄ« bÄ-tà ng thaÌk--ê",
"filenotfound": "ChhÅe bô tóng-à n \"$1\".",
"unexpected": "Koà i-koà i ê pió-tat: \"$1\"=\"$2\"ã",
"formerror": "Chhò-gÅ·: bô-hoat-tÅ· kÄ pió sà ng chhut khì.",
@@ -325,6 +338,9 @@
"no-null-revision": "è¢ç¶äº\"$1\"ç¢çä¸ä¸ªç©ºçä¿®è¨æ¬ã",
"badtitle": "MÌ-chiâ⿠piau-tê",
"badtitletext": "Iau-kiû ê piau-tê sÄ« bô-hÄu ê, khang ê, aÌh-sÄ« liân-kiat chhò-gÅ· ê inter-language/inter-wiki piau-tê.",
+ "title-invalid-empty": "SÃ³Í iau-kiû ê iaÌh-bÄ«n tê-boÌk sÄ« khang--ê heÌk-chiá kaâ¿-taâ¿ hâm liáu miâ-khong-kan.",
+ "title-invalid-utf8": "SÃ³Í iau-kiû ê iaÌh-bÄ«n tê-boÌk hâm liáu bô chià â¿-khak ê 1 liaÌt UTF-8 ê jÄ«.",
+ "title-invalid-interwiki": "SÃ³Í iau-kiû ê iaÌh-bÄ«n tê-boÌk pau-hâm liáu 1-ê bÄ-tà ng Äng ùi tê-boÌk ê interwiki liân-kiat.",
"perfcached": "Ä-kha ê chu-liÄu tùi lâi--ê, só·-à bô it-tÄng sÄ« siÅng sin ê. TÄ« khoà i-chhûn-khu siÅng chÄ Ä-tà ng khǹg{{PLURAL:$1| pit|$1 pit}} chu-liÄu.",
"perfcachedts": "Ä-kha ê chu-liÄu tùi lâi--ê, tÄ« $1 keng-sin--koè. TÄ« khoà i-chûn-khu siÅng chÄ Ä-tà ng khǹg {{PLURAL:$4|pit|$4 pit}} chu-liÄu.",
"querypage-no-updates": "Chit-má bÄ-sái kái chit iaÌh.\nChia ê chu-liÄu bÄ-tà ng sui tiông-sin chéng-lÃ.",
@@ -464,6 +480,10 @@
"changeemail": "Kái tiÄn-chú-phoe ê tÄ-chÃ",
"changeemail-oldemail": "Chit-má ê E-mail tÄ-chÃ:",
"changeemail-newemail": "Sin E-mail ê chÅ«-chÃ:",
+ "changeemail-password": "LÃ-ê {{SITENAME}} biÌt-bé:",
+ "changeemail-submit": "Kái-pià n tiÄn-chu-phoe",
+ "changeemail-throttled": "Là chiÌt-ê-á teng-jiÌp liáu siuâ¿ chÄ kái.\nChiá⿠tan-thÄi $1 kòe-Äu chà i chhì chiÌt pái.",
+ "changeemail-nochange": "Chhiá⿠su-jiÌp chiÌt-ê bô-kâng ê sin tiÄn-chú-phoe chÅ«-chÃ.",
"bold_sample": "Chho·-thé bûn-jī",
"bold_tip": "Chho·-thé jī",
"italic_sample": "Chhú-thé ê bûn-jī",
@@ -475,10 +495,12 @@
"headline_sample": "Thâu-tiâu bûn-jī",
"headline_tip": "TÄ-2-chân (level 2) ê phiau-tê",
"nowiki_sample": "Chia siá bô keh-sek ê bûn-jī",
+ "nowiki_tip": "MÃ i chhap wiki keh-sek",
"image_sample": "Iann-siong-e-le.jpg",
"image_tip": "Giap tÄ« lÄi-bÄ«n ê iáâ¿-siÅng",
"media_tip": "Tóng-à n liân-kiat",
"sig_tip": "Là ê chhiam-miâ kap sî-kan ìn-á",
+ "hr_tip": "Thán-pîâ¿-chÅa (hà n leh Äng)",
"summary": "Khà i-ià u:",
"subject": "Tê-boÌk/piau-tê:",
"minoredit": "Che sī sió siu-kái",
@@ -530,6 +552,11 @@
"recreate-moveddeleted-warn": "'''Sè-jÄ«: Là taâ¿ chún-pÄ« beh khui ê iaÌh, chêng bat hÅÍ lâng thâi tiÄu koè.''' Là tioÌh chim-chiok soà -chiap pian-chiÌp chit iaÌh ê pit-ià u-sèng. Chia Å« chit iaÌh ê san-tû kì-loÌk (deletion log) hÅÍ là chham-khó:",
"edit-conflict": "Siu-kái sio-chhiong",
"defaultmessagetext": "Siat piÄn ê bûn-jÄ«",
+ "content-model-wikitext": "wikitext",
+ "content-model-text": "sûn bûn-pún",
+ "content-model-javascript": "JavaScript",
+ "content-json-empty-object": "Khang buÌt-kiÄâ¿",
+ "content-json-empty-array": "Khang tÄ«n-liaÌt",
"post-expand-template-inclusion-warning": "'''Kéng-pò:'''Pau jiÌt lâi ê pán-bôo sioâ¿ koè tsÄ iaÌh tuÄ.\nŪ chiÌt-koá-á Ä bô pau jiÌt lâi.",
"undo-success": "Pian-chiÌp Ã-keng chhú-siau. Chhiá⿠khak-tÄng, liáu-Äu kÄ Ä-kha hoÌk-goân ê kái-pià n pó-chûn--khÃ-lâi.",
"undo-failure": "Pian-chiÌp bÄ-tà ng chhú-siau, in-Å«i chhiong tioÌh kî-kan chhah-jiÌp ê pian-chiÌp.",
@@ -576,7 +603,7 @@
"searchprofile-everything-tooltip": "ChhoÄ choân-pÅÍ (pau-koat thó-lÅ«n-iaÌh)",
"searchprofile-advanced-tooltip": "ä½ä½ 家己è¨çå空éå
§åºæ£",
"search-result-size": "$1 ({{PLURAL:$2|1 jī-goân|$2 jī-goân}})",
- "search-redirect": "ï¼è½å» $1ï¼",
+ "search-redirect": "ï¼$1 è½ï¼",
"search-section": "(toÄn-loÌh $1)",
"searchall": "choân-pÅ·",
"showingresults": "Ä-kha tùi #$2 khai-sà hián-sÄ« $1 hÄng kiat-kó.",
@@ -606,9 +633,28 @@
"localtime": "ChÄi-tÄ sî-kan sÄ«",
"servertime": "Server sî-kan hiÄn-chÄi sÄ«",
"guesstimezone": "Tùi liû-lám-khì chhau--lâi",
+ "timezoneregion-africa": "Hui-chiu",
+ "timezoneregion-america": "BÃ-chiu",
+ "timezoneregion-antarctica": "Lâm-keÌk-chiu",
+ "timezoneregion-arctic": "Pak-keÌk",
+ "timezoneregion-asia": "A-chiu",
+ "timezoneregion-atlantic": "TÄi-se-iûâ¿",
+ "timezoneregion-australia": "Australia",
+ "timezoneregion-europe": "Au-chiu",
+ "timezoneregion-indian": "Ãn-tÅÍ-iûâ¿",
+ "timezoneregion-pacific": "Thà i-pêng-iûâ¿",
"allowemail": "Ãn-chún paÌt-ê iÅng-chiá kià email kòe-lâi",
+ "prefs-searchoptions": "Cha-sûn",
+ "prefs-namespaces": "Miâ-khong-kan",
+ "default": "kì-tÄng",
"prefs-files": "Tóng-à n",
+ "prefs-custom-css": "Chū-siat CSS",
+ "prefs-custom-js": "Chū-siat JavaScript",
+ "prefs-common-css-js": "SóÍ-Å« gÅa-phôe kong-ke ê CSS/JavaScript",
+ "prefs-reset-intro": "Là Ä-sà i Äng pún iaÌh lâi chiong là ê siat-tì têng-siat chò pún chÄm kì-tÄng.\nChe bÄ hoat-tÅÍ hoÌk-goân.",
+ "prefs-emailconfirm-label": "TiÄn-chú-phoe khak-tÄng:",
"youremail": "Là ê email:",
+ "username": "{{GENDER:$1|Äng-chiá-miâ-hÅ}}:",
"yourrealname": "Là ê chin miâ:",
"yourlanguage": "Kà i-bīn gú-giân:",
"yournick": "Là ê sió-miâ (chhiam-miâ iÅng):",
@@ -622,7 +668,12 @@
"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",
+ "right-move-categorypages": "Sóa tÅng iaÌh-bÄ«n lÅ«i-liaÌt",
+ "right-movefile": "Sóa tóng-à n",
+ "right-upload": "KÄ tóng-à n chiÅ«â¿-bÄng",
+ "right-upload_by_url": "Tùi 1-ê URL thoân thóng-à n",
"right-writeapi": "ç¨API寫",
+ "right-delete": "Thâi iaÌh",
"newuserlogpage": "khui kháu-chÅ jiÌt-chì",
"rightslogtext": "Chit-ê log liaÌt-chhut kái-pià n iÅng-chiá koân-lÄ« ê tÅng-chok.",
"action-edit": "Siu-kái chit iaÌh",
@@ -724,14 +775,19 @@
"doubleredirects": "Siang-thâu choán-iaÌh",
"brokenredirects": "Choán-iaÌh kò·-chiòng",
"brokenredirectstext": "Ã-hÄ Ãª choán-iaÌh liân kà u bô chûn-chÄi ê iaÌh:",
+ "brokenredirects-edit": "siu-kái",
+ "brokenredirects-delete": "thâi",
"withoutinterwiki": "Bô gÃ-giân liân-kiat ê iaÌh",
"withoutinterwiki-summary": "Ä-kha ê iaÌh bô kî-thaâ¿ gÃ-giân pán-pún ê liân-kiat:",
+ "withoutinterwiki-legend": "Jī-thâu",
+ "withoutinterwiki-submit": "HÃan-sÄ«",
"fewestrevisions": "SiÅng bô siu-tÄng ê bûn-chiuâ¿",
"nbytes": "$1 {{PLURAL:$1|jī-goân|jī-goân}}",
"ncategories": "$1 {{PLURAL:$1|ê lÅ«i-piaÌt |ê lÅ«i-piaÌt}}",
- "nlinks": "$1 ê liân-kiat",
+ "nlinks": "$1 ê {{PLURAL:$1|liân-kiat}}",
"nmembers": "$1{{PLURAL:$1|ê sêng-oân}}",
- "nrevisions": "$1 ê siu-tÄng-pún",
+ "nmemberschanged": "$1 â $2 ê {{PLURAL:$2|sêng-oân}}",
+ "nrevisions": "$1 ê {{PLURAL:$1|siu-tÄng-pún}}",
"lonelypages": "Ko·-iaÌh",
"uncategorizedpages": "Bô lÅ«i-piaÌt ê iaÌh",
"uncategorizedcategories": "Bô lÅ«i-piaÌt ê lÅ«i-piaÌt",
@@ -752,6 +808,7 @@
"deadendpages": "KhuÌt-thâu-iaÌh",
"deadendpagestext": "Ä-kha ê iaÌh bô liân kà u wiki lÄi-té ê kî-thaâ¿ iaÌh.",
"protectedpages": "SiÅ« pó-hÅÍ Ãª iaÌh",
+ "protectedpages-page": "IaÌh",
"listusers": "IÅng-chiá liaÌt-toaâ¿",
"newpages": "Sin iaÌh",
"newpages-username": "IÅng-chiá miâ-chheng:",
@@ -895,9 +952,11 @@
"move-watch": "Kà m-sÄ« chit iaÌh",
"movepagebtn": "Sóa iaÌh",
"pagemovedsub": "Sóa-ūi sêng-kong",
+ "movepage-moved": "\"$1\" Ã-keng hong sóa khì \"$2\" ",
"articleexists": "KÄng miâ ê iaÌh Ã-keng tÄ« leh, aÌh-sÄ« là kéng ê miâ bô-hÄu. Chhiá⿠kéng paÌt ê miâ.",
"movetalk": "SÅ«n-sòa sóa thó-lÅ«n-iaÌh",
"movepage-page-moved": "$1 Ã-keng sóa khì tÄ« $2.",
+ "movepage-page-unmoved": "$1 chit iaÌh hô hoat-tÅÍ sóa khì $2.",
"movelogpagetext": "Ä-kha liaÌt-chhut hông soá-Å«i ê iaÌh.",
"movereason": "LÃ-iû:",
"revertmove": "hôe-tÅg",
@@ -957,6 +1016,7 @@
"tooltip-minoredit": "è¨éæ¯ä¸ä¸ªå°æ¹",
"tooltip-save": "Pó-chhûn là chò ê kái-pià n",
"tooltip-preview": "Chhiá⿠tī pó-chûn chìn-chêng, sian khoà ⿠là chò ê kái-pià n !",
+ "tooltip-diff": "Hián-sÄ« là tùi bûn-pún sÃ³Í chò ê kái-tÅng",
"tooltip-watch": "å
±éé å å
¥å»ä½ çç£è¦å®",
"tooltip-rollback": "JiÌh \"Hoê-choán\" Ä-sái thè tÅg-khì téng-chiÌt-ê kái ê lâng ê iaÌh.",
"tooltip-preferences-save": "ä¿åè¨å®",
@@ -965,6 +1025,7 @@
"siteuser": "{{SITENAME}} iÅng-chiá $1",
"othercontribs": "Kin-kù $1 ê kòng-hià n.",
"siteusers": "{{SITENAME}} iÅng-chiá $1",
+ "simpleantispam-label": "Khòng spam kiám-cha.\nMà i thiÄm chit Å«i!",
"pageinfo-toolboxlink": "IaÌh ê chu-sìn",
"markaspatrolleddiff": "Phiau-sī sûn--kòe",
"markedaspatrolledtext": "Ã-keng phiau-sÄ« chit ê siu-tÄng-pún Å« lâng sûn--kòe.",
diff --git a/languages/i18n/nap.json b/languages/i18n/nap.json
index d1b54bd27d..dbd48f3e94 100644
--- a/languages/i18n/nap.json
+++ b/languages/i18n/nap.json
@@ -12,7 +12,8 @@
"ìë¼",
"Candalua",
"Macofe",
- "V6rg"
+ "V6rg",
+ "Nemo bis"
]
},
"tog-underline": "Sottolinia 'e jonte:",
@@ -30,6 +31,7 @@
"tog-watchdefault": "Azzecca 'e paggene e li files cagnà te a l'elenco 'e cuntrollo",
"tog-watchmoves": "Azzecca 'e paggene e li files spustate a l'elenco 'e cuntrollo",
"tog-watchdeletion": "Azzecca 'e paggene e li files scancellate a l'elenco 'e cuntrollo",
+ "tog-watchuploads": "Azzecca 'e file nuove ca sto a carrecà dint'a lista 'e paggene cuntrullate",
"tog-watchrollback": "Azzecca 'e paggene addò aggio fatto nu rollback ('o torna arreto) a l'elenco 'e cuntrollo",
"tog-minordefault": "Indica ogne cagnamento comme piccerillo (predefinito)",
"tog-previewontop": "Vide previsióne primma d' 'a casella 'e modifica",
@@ -153,7 +155,6 @@
"moredotdotdot": "Cchiù...",
"morenotlisted": "Chisto elenco nun è cumpreto.",
"mypage": "Paggena",
- "anonuserpage": "Utente scanusciuto",
"mytalk": "'E chià cchieriate mmie",
"anontalk": "Chiacchierate",
"navigation": "Navigazzione",
@@ -471,7 +472,7 @@
"noemail": "Nun ce sta indirizzo e-mail pe' l'utente \"$1\".",
"noemailcreate": "S'add'appruviggiunà n'indirizzo e-mail buono.",
"passwordsent": "Na password nova è stata inviata a l'innerizzo e-mail riggistrato 'a ll'utente \"$1\".\nPe' piacere, trasite appena avite ricevuta sta password.",
- "blocked-mailpassword": "Ll'IP tuoja è bloccata pe' scrivere, picciò nun se ponno usà 'e ffunzione pe te mannà na password nova.",
+ "blocked-mailpassword": "Ll'IP toja è bloccata pe' scrivere. Pe' ce sparagnà n'abbuso, nun se ponn'ausà 'e ffunzione pe ve mannà na password nova 'a st'indirizzo IP.",
"eauthentsent": "Na mmasciata 'e conferma t'è stata mannata a l'indirizzo e-mail nzignà to.\nApprimm' 'e te mannà n'atu mail, hè 'a stà 'a ffà 'e struzione dint'a l'e-mail, pe' cunfermà ca 'o cunto fosse d' 'o tujo overo.",
"throttled-mailpassword": "S'è mannata na mail pe te' riabbià 'a password 'a meno 'e {{PLURAL:$1|n'ora|$1 ore}}.\nPe' ce sparagnà abbuse, 'a funzione 'e riabbiamento d' 'a password se può usa sulamente na vota ogne {{PLURAL:$1|ora|$1 ore}}.",
"mailerror": "Errore pe' tramente ca se mannava na mmasciata: $1",
@@ -1309,9 +1310,9 @@
"recentchangeslinked-page": "Nomme d' 'a paggena",
"recentchangeslinked-to": "Mmusta sulamente 'e cagnamiente a 'e paggene cullegate a chilla specificata",
"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-added-to-category-bundled": "[[:$1]] azzeccata â categurìa, [[Special:WhatLinksHere/$1|sta paggena azzeccat' a 'e categurìe]]",
"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",
+ "recentchanges-page-removed-from-category-bundled": "[[:$1]] luvate 'e categurìa, [[Special:WhatLinksHere/$1|sta paggena è azzeccata dint'a n'ati paggene]]",
"autochange-username": "Cagnamiento automateco MediaWiki",
"upload": "Carreca file",
"uploadbtn": "Carreca file",
@@ -1490,6 +1491,7 @@
"uploadstash-badtoken": "L'esecuzione 'e sta azione scassaje.\nForse pecché 'e credenziale 'e cagnamiento so' mmaturate.\nPruvate n'ata vota.",
"uploadstash-errclear": "'A pulezzia d' 'e file scassaje.",
"uploadstash-refresh": "Agghiuorna l'elenco d' 'e file",
+ "uploadstash-thumbnail": "vide miniatura",
"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",
@@ -1808,8 +1810,6 @@
"categories-submit": "Faje vedé",
"categoriespagetext": "{{PLURAL:$1|'A categurìa 'nnecata 'e seguito cuntiene|'E categurìe 'nnecate 'e seguito cuntengono}} paggene o file multimediale.\n'E [[Special:UnusedCategories|categurìe vuote]] nun song mostrate ccà .\nVere anche 'e [[Special:WantedCategories|categurìe richieste]].",
"categoriesfrom": "Fà vedè 'e categurìe partenno 'a:",
- "special-categories-sort-count": "arricetta pe' cunteggio",
- "special-categories-sort-abc": "arricetta arfabbeticamente",
"deletedcontributions": "Contribbute utente scancellate",
"deletedcontributions-title": "Contribbute utente scancellate",
"sp-deletedcontributions-contribs": "contribbute",
@@ -2185,6 +2185,7 @@
"ipb-unblock": "Sblocca nomme utente o indirizzo IP",
"ipb-blocklist": "Fà vedé 'e blocche ch'esisteno",
"ipb-blocklist-contribs": "Contribbute 'e {{GENDER:$1|$1}}",
+ "ipb-blocklist-duration-left": "$1 rummase",
"unblockip": "Sblocca utente",
"unblockiptext": "Ausa 'o modulo ccà abbascio p'arrepiglià 'e deritte 'e scrittura a l'indirizze IP o cunte utente ca primma so state bluccate.",
"ipusubmit": "Lèva stu blocco",
@@ -2426,11 +2427,7 @@
"import-logentry-upload-detail": "$1 {{PLURAL:$1|verzione|verziune}} mpurtate",
"import-logentry-interwiki-detail": "$1 {{PLURAL:$1|verzione|verziune}} mpurtate 'a $2",
"javascripttest": "Test JavaScript",
- "javascripttest-pagetext-noframework": "Sta paggena è riservata pe' l'esecuziune d' 'e test 'e Javascript.",
- "javascripttest-pagetext-unknownframework": "Ambiente 'e test scanusciuto \"$1\".",
"javascripttest-pagetext-unknownaction": "Azione scanusciuta \"$1\".",
- "javascripttest-pagetext-frameworks": "Pe' piacere sciglite uno 'e ll'ambiente 'e test ccà abbascio: $1",
- "javascripttest-pagetext-skins": "Sciglite nu skin pe' ne fà 'e test:",
"javascripttest-qunit-intro": "Vedite 'a [$1 documentaziona d' 'o test] ncopp'a mediawiki.org.",
"tooltip-pt-userpage": "'A paggena {{GENDER:|utente}} vòsta",
"tooltip-pt-anonuserpage": "'A paggena utente pe l'IP ca vuje state cagnanno cumme",
@@ -2684,8 +2681,8 @@
"exif-colorspace": "Spazio d' 'e culore",
"exif-componentsconfiguration": "Significato d'ogne componente",
"exif-compressedbitsperpixel": "Modo 'e compressione 'e l'immaggene",
- "exif-pixelydimension": "Larghezza 'e l'immaggene",
- "exif-pixelxdimension": "Autezza 'e l'immaggene",
+ "exif-pixelxdimension": "Larghezza 'e l'immaggene",
+ "exif-pixelydimension": "Autezza 'e l'immaggene",
"exif-usercomment": "Note 'e ll'utente",
"exif-relatedsoundfile": "File audio cullegato",
"exif-datetimeoriginal": "Data e ora d' 'a criazione d' 'e date",
@@ -3011,6 +3008,10 @@
"confirmemail_body_set": "Coccheruno, può darse ca site vuje, 'a l'indirizzo IP $1,\nha mpustato nu cunto utente \"$2\" cu st'indirizzo e-mail ncopp'a {{SITENAME}}.\n\nPe' putè cunfermà ca stu cunto è stato overo criato e vuje e ve putè apiccià 'a funziona e-mail 'e {{SITENAME}}, arapite stu cullegamento dint' 'o navigatóre web d' 'o vuosto:\n\n$3\n\nSi vuje *NUN* avite riggistrato 'o cunto utente, secutate stu cullegamento pe' ve scancellà st'indirizzo e-mail utente:\n\n$5\n\nStu codece 'e cunferma murarrà 'o $4.",
"confirmemail_invalidated": "Cunferma 'e l'indirizze e-mail scangelleta",
"invalidateemail": "Scancella 'a cunferma 'e l'e-mail",
+ "notificationemail_subject_changed": "L'indirizzo email riggistrato ncopp'a {{SITENAME}} è stato cagnato",
+ "notificationemail_subject_removed": "L'indirizzo email riggistrato dint'a {{SITENAME}} è stato luvato",
+ "notificationemail_body_changed": "Coccheruno, probbabilmente vuje, 'a ll'indirizzo IP $1,\nave cagnato l'indirizze e-mail d' 'o cunto \"$2\" a \"$3\" ncopp'a {{SITENAME}}.\n\nSi nun eravate vuje, pe' piacere tuzzuliate mò mò n'ammenistratore.",
+ "notificationemail_body_removed": "Coccheruno, probbabilmente vuje, 'a ll'indirizzo IP $1,\nave luvato l'indirizze e-mail d' 'o cunto \"$2\" ncopp'a {{SITENAME}}.\n\nSi nun eravate vuje, pe' piacere tuzzuliate mò mò n'ammenistratore.",
"scarytranscludedisabled": "['A funziona cullegamiento nfra site wiki è stata stutata]",
"scarytranscludefailed": "[L'analisi d' 'o template s'è scassato pe' $1]",
"scarytranscludefailed-httpstatus": "[L'analisi d' 'o template s'è scassato pe' $1: HTTP $2]",
@@ -3064,7 +3065,7 @@
"watchlistedit-raw-done": "L'elenco 'e paggene cuntrullate è stato agghiurnato.",
"watchlistedit-raw-added": "{{PLURAL:$1|nu titolo è|$1 titule so'}} stat'azzeccate:",
"watchlistedit-raw-removed": "{{PLURAL:$1|nu titolo è stato luvato|$1 titule so' state luvate}}:",
- "watchlistedit-clear-title": "Elenco 'e cuntrollo pulezzato",
+ "watchlistedit-clear-title": "Pulezza 'a lista 'e cuntrollo",
"watchlistedit-clear-legend": "Pulezza l'elenco 'e paggene cuntrullate",
"watchlistedit-clear-explain": "Tutte sti titule se luvarranno 'a l'elenco 'e paggene cuntrullate vuosto",
"watchlistedit-clear-titles": "Titule:",
@@ -3126,7 +3127,6 @@
"version-libraries-description": "Descrizzione",
"version-libraries-authors": "Auture",
"redirect": "Rediretto 'a nu file, n'utente, na paggena, na verziona o nu riggistro ID",
- "redirect-legend": "Rediretto ca spuntasse a nu file o na paggena",
"redirect-summary": "Sta pà ggena speciale redireziona a nu file (dato 'o nomme d' 'o file), na pà ggene (dato n'ID 'e verziona), o 'na pà ggene utente (dato n'ID nummereca 'e l'utende), o na trasuta a 'o riggistro (dato 'o riggistro ID). Ause: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revision/328429]], o [[{{#Special:Redirect}}/user/101]], o [[{{#Special:Redirect}}/logid/186]].",
"redirect-submit": "Vaje",
"redirect-lookup": "Ascìa:",
@@ -3139,7 +3139,6 @@
"redirect-not-exists": "Valore nun accucchiato",
"fileduplicatesearch": "Ascìa 'e file duprecate",
"fileduplicatesearch-summary": "Circa pe' file duprecate cu bbase 'o valore hash.",
- "fileduplicatesearch-legend": "Circa pe' nu duprecato",
"fileduplicatesearch-filename": "Nomme d' 'o file",
"fileduplicatesearch-submit": "Truova",
"fileduplicatesearch-info": "$1 Ã $2 pixel, dimenzione d' 'o file: $3 tipo MIME: $4",
@@ -3340,7 +3339,7 @@
"logentry-protect-protect-cascade": "$1 {{GENDER:$2|pruteggette}} $3 $4 [cascading]",
"logentry-protect-modify": "$1 {{GENDER:$2|cagnaje}} 'o livello 'e prutezione pe' $3 $4",
"logentry-protect-modify-cascade": "$1 {{GENDER:$2|cagnaje}} 'o livello 'e prutezione pe' $3 $4 [cascading]",
- "logentry-rights-rights": "$1 {{GENDER:$2|cagnaje}} 'e gruppo pe' $3 'a $4 a $5",
+ "logentry-rights-rights": "$1 {{GENDER:$2|cagnaje}} 'e gruppo pe' {{GENDER:$6|$3}} 'a $4 a $5",
"logentry-rights-rights-legacy": "$1 {{GENDER:$2|cagnaje}} 'e gruppo pe' $3",
"logentry-rights-autopromote": "$1 è {{GENDER:$2|stato promosso|stata promossa}} automatecamente 'a $4 a $5",
"logentry-upload-upload": "$1 {{GENDER:$2|ave carrecato}} $3",
@@ -3433,6 +3432,7 @@
"api-error-unknownerror": "Errore scanusciuto: \"$1\"",
"api-error-uploaddisabled": "'E carreche so' stutate dint'a sta siki.",
"api-error-verification-error": "Stu file putesse stà nguacchiato, o tene n'estensione sbagliata.",
+ "api-error-was-deleted": "Nu file cu stu nomme s'è carrecato primma e po' s'è scancellaje.",
"duration-seconds": "$1 {{PLURAL:$1|secondo|seconde}}",
"duration-minutes": "$1 {{PLURAL:$1|minuto|minute}}",
"duration-hours": "$1 {{PLURAL:$1|ora|ore}}",
@@ -3523,6 +3523,7 @@
"special-characters-group-ipa": "IPA",
"special-characters-group-symbols": "Simmule",
"special-characters-group-greek": "Grieco",
+ "special-characters-group-greekextended": "Grieco spannuto",
"special-characters-group-cyrillic": "Cirillico",
"special-characters-group-arabic": "Arabo",
"special-characters-group-arabicextended": "Arabo spannuto",
@@ -3548,5 +3549,54 @@
"sessionprovider-generic": "$1 sessiune",
"sessionprovider-mediawiki-session-cookiesessionprovider": "sessiune basate ncopp' 'e cookie",
"sessionprovider-nocookies": "'E cookie ponno stà stutate. Vedite si 'e cookie stann'appicciate e accumminciate n'ata vota.",
- "randomrootpage": "Paggena 'e rareca a ccaso"
+ "randomrootpage": "Paggena 'e rareca a ccaso",
+ "log-action-filter-block": "Tipo 'e blocco:",
+ "log-action-filter-contentmodel": "Tipo 'e cagnamiento 'e mudell'e cuntenute (contentmodel)",
+ "log-action-filter-delete": "Tipo 'e scancellazione:",
+ "log-action-filter-import": "Tipo 'e import:",
+ "log-action-filter-managetags": "Tipo 'e aziona 'e gistinone 'etichette:",
+ "log-action-filter-move": "Tipo 'e spostamento:",
+ "log-action-filter-newusers": "Tipo e' criazione utenza:",
+ "log-action-filter-patrol": "Tipo 'e verifica:",
+ "log-action-filter-protect": "Tipo 'e protezione:",
+ "log-action-filter-rights": "Tipo 'e cagnamiento 'e deritte",
+ "log-action-filter-suppress": "Tipo 'e suppressione",
+ "log-action-filter-upload": "Tipo 'e carreca:",
+ "log-action-filter-all": "Tutte",
+ "log-action-filter-block-block": "Blocco",
+ "log-action-filter-block-reblock": "Modifica blocco",
+ "log-action-filter-block-unblock": "Sblocca",
+ "log-action-filter-contentmodel-change": "Cagnamiento 'e mudello 'e cuntenute (Contentmodel)",
+ "log-action-filter-contentmodel-new": "Criazione 'e na paggena 'e mudello 'e cuntenute nun standard",
+ "log-action-filter-delete-delete": "Scancellazione 'e paggena",
+ "log-action-filter-delete-restore": "Arrepigliament' 'e paggena",
+ "log-action-filter-delete-event": "Scancellazione d' 'o reggistro",
+ "log-action-filter-delete-revision": "Scancellazione d' 'a verziona",
+ "log-action-filter-import-interwiki": "Mpurtaziona transwiki",
+ "log-action-filter-import-upload": "Mpurtazione 'e XML carrecato",
+ "log-action-filter-managetags-create": "Criazione 'etichetta",
+ "log-action-filter-managetags-delete": "Scancellazione 'etichetta",
+ "log-action-filter-managetags-activate": "Appiccia 'etichetta",
+ "log-action-filter-managetags-deactivate": "Stuta etichetta",
+ "log-action-filter-move-move": "Móve senza sovrascrivere 'e redirect",
+ "log-action-filter-move-move_redir": "Móve senza sovrascrivere 'e redirect",
+ "log-action-filter-newusers-create": "Criazione 'a n'utente anonimo",
+ "log-action-filter-newusers-create2": "Criazione 'a n'utente riggistrato",
+ "log-action-filter-newusers-autocreate": "Criazione automatica",
+ "log-action-filter-newusers-byemail": "Criazione cu na password mannata via email",
+ "log-action-filter-patrol-patrol": "Verifica manuale",
+ "log-action-filter-patrol-autopatrol": "Verifica automatica",
+ "log-action-filter-protect-protect": "Prutezione",
+ "log-action-filter-protect-modify": "Cagna prutezione",
+ "log-action-filter-protect-unprotect": "Sprutezione",
+ "log-action-filter-protect-move_prot": "Prutezione spustata",
+ "log-action-filter-rights-rights": "Cagnamento manuale",
+ "log-action-filter-rights-autopromote": "Cagnamento automatico",
+ "log-action-filter-suppress-event": "Scancellazione 'e riggistro",
+ "log-action-filter-suppress-revision": "Scancellazione 'e verziona",
+ "log-action-filter-suppress-delete": "Scancellazione 'e paggena",
+ "log-action-filter-suppress-block": "Scancellazione 'utente 'a blocco",
+ "log-action-filter-suppress-reblock": "Scancellazione utente 'a re-blocco",
+ "log-action-filter-upload-upload": "Carreca nova",
+ "log-action-filter-upload-overwrite": "Recarreca"
}
diff --git a/languages/i18n/nb.json b/languages/i18n/nb.json
index 4bdecee698..d3ec6498e3 100644
--- a/languages/i18n/nb.json
+++ b/languages/i18n/nb.json
@@ -47,7 +47,8 @@
"Kingu",
"Tarjeimo",
"Matma Rex",
- "SuperPotato"
+ "SuperPotato",
+ "Nemo bis"
]
},
"tog-underline": "Strek under lenker:",
@@ -1346,7 +1347,7 @@
"recentchangeslinked-page": "Sidenavn:",
"recentchangeslinked-to": "Vis endringer på sider som lenker til den gitte siden istedet",
"recentchanges-page-added-to-category": "[[:$1]] lagt til kategori",
- "recentchanges-page-added-to-category-bundled": "[[:$1]] og {{PLURAL:$2|én side|$2 sider}} lagt til kategori",
+ "recentchanges-page-added-to-category-bundled": "[[:$1]] og [[Special:WhatLinksHere/$1|{{PLURAL:$2|én side|$2 sider}}]] lagt til kategori",
"recentchanges-page-removed-from-category": "[[:$1]] fjernet fra kategori",
"recentchanges-page-removed-from-category-bundled": "[[:$1]] og {{PLURAL:$2|én side|$2 sider}} fjernet fra kategori",
"autochange-username": "Automatisk MediaWiki-endring",
@@ -1810,8 +1811,6 @@
"categories-submit": "Vis",
"categoriespagetext": "Følgende {{PLURAL:$1|kategori|kategorier}} inneholder sider eller media.\n[[Special:UnusedCategories|Ubrukte kategorier]] vises ikke her.\nSe også [[Special:WantedCategories|ønskede kategorier]].",
"categoriesfrom": "Vis kategorier fra og med:",
- "special-categories-sort-count": "soter etter antall",
- "special-categories-sort-abc": "sorter alfabetisk",
"deletedcontributions": "Slettede brukerbidrag",
"deletedcontributions-title": "Slettede brukerbidrag",
"sp-deletedcontributions-contribs": "bidrag",
@@ -2423,11 +2422,7 @@
"import-logentry-upload-detail": "{{PLURAL:$1|Ãn revisjon|$1 revisjoner}} er importert",
"import-logentry-interwiki-detail": "{{PLURAL:$1|Ãn revisjon|$1 revisjoner}} er importert fra $2",
"javascripttest": "JavaScript-testing",
- "javascripttest-pagetext-noframework": "Denne siden er reservert for å kjøre JavaScript-tester.",
- "javascripttest-pagetext-unknownframework": "Ukjent testerammeverk \"$1\".",
"javascripttest-pagetext-unknownaction": "Ukjent handling «$1».",
- "javascripttest-pagetext-frameworks": "Vennligst velg en av følgende testerammeverk: $1",
- "javascripttest-pagetext-skins": "Velg et utseende for testene:",
"javascripttest-qunit-intro": "Se [$1 testedokumentasjonen] på mediawiki.org.",
"tooltip-pt-userpage": "{{GENDER:|Din brukerside}}",
"tooltip-pt-anonuserpage": "Brukersiden for IP-adressen du redigerer fra",
@@ -2683,8 +2678,8 @@
"exif-colorspace": "Fargerom",
"exif-componentsconfiguration": "Betydning av hver komponent",
"exif-compressedbitsperpixel": "Bildekompresjonsmodus",
- "exif-pixelydimension": "Bildebredde",
- "exif-pixelxdimension": "Bildehøyde",
+ "exif-pixelxdimension": "Bildebredde",
+ "exif-pixelydimension": "Bildehøyde",
"exif-usercomment": "Brukerkommentarer",
"exif-relatedsoundfile": "Relatert lydfil",
"exif-datetimeoriginal": "Dato og tid for datagenerering",
@@ -3152,7 +3147,6 @@
"version-libraries-description": "Beskrivelse",
"version-libraries-authors": "Forfattere",
"redirect": "Omdiriger via filnavn, bruker eller versjonsid",
- "redirect-legend": "Omdiriger til en fil eller side",
"redirect-summary": "Denne spesialsiden omdirigerer til en fil (hvis et filnavn angis), en side (hvis et redigeringsnummer angis) eller en brukerside (hvis en numerisk brukeridentifikator angis).\nEksempler:[[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revision/328429]], or [[{{#Special:Redirect}}/user/101]].",
"redirect-submit": "GÃ¥",
"redirect-lookup": "Oppslag:",
@@ -3164,7 +3158,6 @@
"redirect-not-exists": "Verdi er ikke funnet",
"fileduplicatesearch": "Søk etter duplikatfiler",
"fileduplicatesearch-summary": "Søk etter duplikatfiler basert på dets hash-verdi.",
- "fileduplicatesearch-legend": "Søk etter en duplikatfil",
"fileduplicatesearch-filename": "Filnavn:",
"fileduplicatesearch-submit": "Søk",
"fileduplicatesearch-info": "$1 à $2 piksler Filstørrelse: $3 MIME-type: $4",
diff --git a/languages/i18n/nds-nl.json b/languages/i18n/nds-nl.json
index e122c0e958..67031217e5 100644
--- a/languages/i18n/nds-nl.json
+++ b/languages/i18n/nds-nl.json
@@ -271,7 +271,7 @@
"toc": "Inhold",
"showtoc": "Bekieken",
"hidetoc": "Verbarg",
- "collapsible-collapse": "Samenvouwen",
+ "collapsible-collapse": "Inklappen",
"collapsible-expand": "Uutklappen",
"confirmable-confirm": "{{GENDER:$1|Bi'j}} daor wisse van?",
"confirmable-yes": "Ja",
@@ -299,6 +299,7 @@
"nstab-template": "Mal",
"nstab-help": "Hulpe",
"nstab-category": "Kategorie",
+ "mainpage-nstab": "Veurblad",
"nosuchaction": "De op-egeven haandeling besteet niet",
"nosuchactiontext": "De opdrachte in t webadres in ongeldig.\nJe hebben t webadres misschien verkeerd in-etikt of de verkeerde verwiezing evolgd.\nDit kan oek dujen op n fout in de programmatuur van {{SITENAME}}.",
"nosuchspecialpage": "Der besteet gien spesiale zied mit disse naam",
@@ -573,7 +574,7 @@
"newarticle": "(Niej)",
"newarticletext": "Disse zied besteet nog niet.\nIn t veld hieronder ku'j wat schrieven um disse zied an te maken (meer informasie vie'j op de [$1 hulpzied]).\nA'j hier per ongelok terechtekeumen bin gebruuk dan de knoppe '''veurige''' um weerumme te gaon.",
"anontalkpagetext": "---- ''Disse overlegzied heurt bie n anonieme gebruker die nog gien gebrukersnaam hef, of t niet gebruukt. We gebruken daorumme t IP-adres um hum of heur te herkennen, mer t kan oek ween dat meerdere personen t zelfde IP-adres gebruken, en da'j hiermee berichten ontvangen die niet veur joe bedoeld bin. A'j dit veurkoemen willen, dan ku'j t best [[Special:UserLogin/signup|n gebrukersnaam anmaken]] of [[Special:UserLogin|anmelden]].''",
- "noarticletext": "Der steet noen gien tekste op disse zied.\nJe kunnen [[Special:Search/{{PAGENAME}}|de titel opzeuken]] in aandere ziejen,\n[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} zeuken in de logboeken],\nof [{{fullurl:{{FULLPAGENAME}}|action=edit}} disse zied bewarken] .",
+ "noarticletext": "Der steet noen gien tekste op disse zied.\nJe kunnen [[Special:Search/{{PAGENAME}}|de titel opzeuken]] in aandere ziejen,\n[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} zeuken in de logboeken],\nof [{{fullurl:{{FULLPAGENAME}}|action=edit}} disse zied anmaken] .",
"noarticletext-nopermission": "Op disse zied steet gien tekste.\nJe kunnen [[Special:Search/{{PAGENAME}}|zeuken naor disse term]] in aandere ziejen of\n[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} de logboeken deurzeuken] , mer je hebben gien rechten um disse zied an te maken.",
"missing-revision": "De versie #$1 van de zied \"{{FULLPAGENAME}} besteet niet.\n\nDit kömp meestentieds deur t volgen van n verouwerde verwiezing naor n zied die vortedaon is.\nWaorschienlik ku'j der meer gegevens over vienen in t [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} vortdologboek].",
"userpage-userdoesnotexist": "Je bewarken n gebrukerszied van n gebruker die niet besteet (gebruker \"$1 \"). Kiek effen nao o'j disse zied wel anmaken/bewarken willen.",
@@ -1124,6 +1125,9 @@
"rcshowhidemine": "$1 mien bewarkingen",
"rcshowhidemine-show": "Bekiek",
"rcshowhidemine-hide": "Verbarg",
+ "rcshowhidecategorization": "$1 kategorisering van ziejen",
+ "rcshowhidecategorization-show": "Bekiek",
+ "rcshowhidecategorization-hide": "Verbarg",
"rclinks": "Bekiek de leste $1 wiezigingen van de aofgeleupen $2 dagen $3",
"diff": "wiez",
"hist": "gesch",
@@ -1486,6 +1490,7 @@
"usereditcount": "$1 {{PLURAL:$1|bewarking|bewarkingen}}",
"usercreated": "{{GENDER:$3|Eregistreerd}} op $1 um $2",
"newpages": "Nieje artikels",
+ "newpages-submit": "Bekiek",
"newpages-username": "Gebrukersnaam:",
"ancientpages": "Oudste artikels",
"move": "Herneumen",
@@ -1532,8 +1537,6 @@
"categories": "Kategorieën",
"categoriespagetext": "De de volgende {{PLURAL:$1|kategorie steet|kategorieën staon}} ziejen of mediabestaanden.\n[[Special:UnusedCategories|ongebruukten kategorieën]] zie'j hier niet.\nZie oek [[Special:WantedCategories|gewunste kategorieën]].",
"categoriesfrom": "Laot kategorieën zien vanaof:",
- "special-categories-sort-count": "op antal sorteren",
- "special-categories-sort-abc": "alfebeties sorteren",
"deletedcontributions": "Vortedaone gebrukersbiedragen",
"deletedcontributions-title": "Vortedaone gebrukersbiedragen",
"sp-deletedcontributions-contribs": "biedragen",
@@ -1555,6 +1558,7 @@
"activeusers-hidebots": "Bots verbargen",
"activeusers-hidesysops": "Beheerders verbargen",
"activeusers-noresult": "Gien aktieve gebrukers evunnen.",
+ "activeusers-submit": "Bekiek",
"listgrouprights": "Rechten van gebrukersgroepen",
"listgrouprights-summary": "Op disse zied staon de gebrukersgroepen van disse wiki beschreven, mit de biebeheurende rechten.\nMeer informasie over de rechten ku'j [[{{MediaWiki:Listgrouprights-helppage}}|hier vienen]].",
"listgrouprights-key": "Leganda:\n* Toe-ewezen recht \n* In-etrökken recht ",
@@ -1621,6 +1625,7 @@
"wlheader-showupdated": "Ziejen die sinds joew leste bezeuk bie-ewörken bin staon '''vet'''.",
"wlnote": "Hieronder {{PLURAL:$1|steet de leste wieziging|staon de leste $1 wiezigingen}} in {{PLURAL:$2|t aofgeleupen ure|de leste $2 uren}} vanaof $3 um $4.",
"wlshowlast": "Laot de veurbieje $1 uur $2 dagen zien",
+ "watchlist-submit": "Bekiek",
"watchlist-options": "Opsies veur de volglieste",
"watching": "Volg...",
"unwatching": "Niet volgen...",
@@ -1651,6 +1656,7 @@
"delete-confirm": "\"$1\" vortdoon",
"delete-legend": "Vortdoon",
"historywarning": "'''Waorschuwing''': de zied die'j vortdoon, hef $1 {{PLURAL:$1|versie|versies}}:",
+ "historyaction-submit": "Bekiek",
"confirmdeletetext": "Je staon op t punt n zied en de geschiedenisse dervan vort te doon.\nBevestig hieronder dat dit inderdaod de bedoeling is, da'j de gevolgen begriepen en dat t akkedeert mit t [[{{MediaWiki:Policy-url}}|beleid]].",
"actioncomplete": "Uutevoerd",
"actionfailed": "De haandeling is mislokt.",
@@ -1781,6 +1787,7 @@
"contributions": "{{GENDER:$1|Biedragen van disse gebruker}}",
"contributions-title": "Biedragen van $1",
"mycontris": "Mien biedragen",
+ "anoncontribs": "Biedragen",
"contribsub2": "Veur {{GENDER:$3|$1}} ($2)",
"nocontribs": "Gien wiezigingen evunnen die an de estelde criteria voldoon.",
"uctop": "(leste wieziging)",
@@ -2079,23 +2086,19 @@
"import-logentry-upload-detail": "$1 {{PLURAL:$1|versie|versies}}",
"import-logentry-interwiki-detail": "$1 {{PLURAL:$1|versie|versies}} van $2",
"javascripttest": "JavaScript testen",
- "javascripttest-pagetext-noframework": "Disse zied is ereserveerd veur t uutvoeren van JavaScript-testen.",
- "javascripttest-pagetext-unknownframework": "Onbekend testraamwark \"$1\".",
- "javascripttest-pagetext-frameworks": "Kies een van de volgende testraamwarken: $1",
- "javascripttest-pagetext-skins": "Kies n vormgeving um de tests mee uut te voeren:",
"javascripttest-qunit-intro": "Zie de [$1 testdokumentasie] op mediawiki.org.",
- "tooltip-pt-userpage": "Oew gebroekersziede",
+ "tooltip-pt-userpage": "{{GENDER:|Oew}} gebroekersziede",
"tooltip-pt-anonuserpage": "Gebroekersbladziede vuur t IP-adres da'j broekt",
- "tooltip-pt-mytalk": "Oew oaverlegbladziede",
+ "tooltip-pt-mytalk": "{{GENDER:|Oew}} oaverlegziede",
"tooltip-pt-anontalk": "Oaverlegbladziede van n naamlozen gebroeker van dit IP-adres",
- "tooltip-pt-preferences": "Miene vuurkeuren",
+ "tooltip-pt-preferences": "{{GENDER:|Miene}} vuurkeuren",
"tooltip-pt-watchlist": "Lieste van zieden die op miene volglieste stoan",
- "tooltip-pt-mycontris": "Liest van oew biejdraegen",
+ "tooltip-pt-mycontris": "Oaverzicht van {{GENDER:|oew}} biejdreagen",
"tooltip-pt-login": "Iej wördt van harte oetneugd um oe an te melden as gebroeker, mer t is nich verplicht",
"tooltip-pt-logout": "Ofmaelden",
"tooltip-pt-createaccount": "Schrief je eigen veural in en meld je an, mer t is niet verplicht.",
"tooltip-ca-talk": "Loat n oaverlegtekst oaver disse ziede zeen",
- "tooltip-ca-edit": "Bewaerk disse ziede",
+ "tooltip-ca-edit": "Beweark disse ziede",
"tooltip-ca-addsection": "Niej oonderwaerp tovogen",
"tooltip-ca-viewsource": "Disse ziede is beveiligd taegen veraanderen. Iej könt wal kieken noar de ziede",
"tooltip-ca-history": "Oaldere versies van disse ziede",
@@ -2121,7 +2124,7 @@
"tooltip-t-recentchangeslinked": "Pas verrichte veraanderingen die noar disse ziede verwiezen",
"tooltip-feed-rss": "RSS-voer vuur disse ziede",
"tooltip-feed-atom": "Atom-voer vuur disse ziede",
- "tooltip-t-contributions": "Lieste met biejdraegen van disse gebroeker",
+ "tooltip-t-contributions": "Lieste met biejdreagen van {{GENDER:$1|disse gebroeker}}",
"tooltip-t-emailuser": "Stuur disse gebroeker n netpostbericht",
"tooltip-t-info": "Meer informasie over disse zied",
"tooltip-t-upload": "Laad ofbeeldingen en/of geluudsmateriaal",
@@ -2170,7 +2173,7 @@
"spam_reverting": "Bezig mit t weerummezetten naor de leste versie die gien verwiezing hef naor $1",
"spam_blanking": "Alle wiezigingen mit n verwiezing naor $1 wörden vortehaold",
"spam_deleting": "In alle versies staon verwiezingen naor $1. Zied vortedaon",
- "simpleantispam-label": "Antispamkontraole.\nHier '''NIKS''' invullen!",
+ "simpleantispam-label": "Antispamkontraole.\nHier niks invullen!",
"pageinfo-title": "Informasie over \"$1\"",
"pageinfo-not-current": "Disse gegevens bin allinnig beschikbaor veur disse versie.",
"pageinfo-header-basic": "Baosisinformasie",
@@ -2328,8 +2331,8 @@
"exif-colorspace": "Kleurruumte",
"exif-componentsconfiguration": "Betekenisse van elk compenent",
"exif-compressedbitsperpixel": "Beeldkompressiemethode",
- "exif-pixelydimension": "Aofbeeldingsbreedte",
- "exif-pixelxdimension": "Aofbeeldingsheugte",
+ "exif-pixelxdimension": "Aofbeeldingsbreedte",
+ "exif-pixelydimension": "Aofbeeldingsheugte",
"exif-usercomment": "Opmarkingen",
"exif-relatedsoundfile": "Biebeheurend geluudsbestaand",
"exif-datetimeoriginal": "Tiedstip van datagenerasie",
@@ -2742,7 +2745,6 @@
"version-entrypoints-header-entrypoint": "Ingang",
"version-entrypoints-header-url": "Webadres",
"redirect": "Deurverwiezen op bestaandsnaam, gebrukersnummer, ziednummer of versienummer",
- "redirect-legend": "Deurverwiezen naor n bestaand of zied",
"redirect-summary": "Disse spesiale zied verwis deur naor n bestaand (as de bestaandsnaam op-egeven wördt), n zied (as n zied- of versienummer op-egeven wördt) of n gebrukerszied (as t gebrukersnummer op-egeven wördt). Gebruuk: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], of [[{{#Special:Redirect}}/user/101]].",
"redirect-submit": "Zeuk",
"redirect-lookup": "Opzeuken:",
@@ -2753,7 +2755,6 @@
"redirect-not-exists": "Weerde niet evunnen",
"fileduplicatesearch": "Dubbele bestaanden zeuken",
"fileduplicatesearch-summary": "Dubbele bestaanden zeuken op baosis van de hashweerde.",
- "fileduplicatesearch-legend": "Dubbele bestaanden zeuken",
"fileduplicatesearch-filename": "Bestaandsnaam:",
"fileduplicatesearch-submit": "Zeuken",
"fileduplicatesearch-info": "$1 Ã $2 beeldpunten Bestaandsgrootte: $3 MIME-type: $4",
diff --git a/languages/i18n/nds.json b/languages/i18n/nds.json
index f83ab1405d..40f07fd188 100644
--- a/languages/i18n/nds.json
+++ b/languages/i18n/nds.json
@@ -1186,8 +1186,6 @@
"categories": "Kategorien",
"categoriespagetext": "In disse Kategorien staht Sieden oder Mediendatein.\n[[Special:UnusedCategories|Nich bruukte Kategorien]] warrt hier nich wiest.\nKiek ok bi de [[Special:WantedCategories|wünschten Kategorien]].",
"categoriesfrom": "Wies Kategorien anfungen mit:",
- "special-categories-sort-count": "na Tall sorteren",
- "special-categories-sort-abc": "alphabeetsch sorteren",
"deletedcontributions": "Wegsmetene Bidrääg vunân Bruker",
"deletedcontributions-title": "Wegsmetene Bidrääg vunân Bruker",
"sp-deletedcontributions-contribs": "Bidrääg",
@@ -1813,8 +1811,8 @@
"exif-colorspace": "Farvruum",
"exif-componentsconfiguration": "Bedüden vun elk Kumponent",
"exif-compressedbitsperpixel": "Komprimeerte Bits je Pixel",
- "exif-pixelydimension": "Gellen Bildbreed",
- "exif-pixelxdimension": "Gellen Bildhööchd",
+ "exif-pixelxdimension": "Gellen Bildbreed",
+ "exif-pixelydimension": "Gellen Bildhööchd",
"exif-usercomment": "Brukerkommentar",
"exif-relatedsoundfile": "Tohörige Toondatei",
"exif-datetimeoriginal": "Tiet vun de Opnahm",
@@ -2109,7 +2107,6 @@
"version-entrypoints-header-url": "URL",
"fileduplicatesearch": "Söök na Datein, de jüst gliek sünd",
"fileduplicatesearch-summary": "Söök na Datein, de na jemehr Hash-Tallen jüst gliek sünd.",
- "fileduplicatesearch-legend": "Söök na Datein, de jüst gliek sünd",
"fileduplicatesearch-filename": "Dateinaam:",
"fileduplicatesearch-submit": "Söken",
"fileduplicatesearch-info": "$1 à $2 Pixel Dateigrött: $3 MIME-Typ: $4",
diff --git a/languages/i18n/ne.json b/languages/i18n/ne.json
index ac0d25ce61..470c2888c8 100644
--- a/languages/i18n/ne.json
+++ b/languages/i18n/ne.json
@@ -1681,8 +1681,6 @@
"categories-submit": "दà¥à¤à¤¾à¤à¤¨à¥à¤¹à¥à¤¸à¥",
"categoriespagetext": "निमà¥à¤¨à¤²à¤¿à¤à¤¿à¤¤ {{PLURAL:$1|शà¥à¤°à¥à¤£à¥|शà¥à¤°à¥à¤£à¥à¤¹à¤°à¥}}मा पà¥à¤·à¥à¤ वा मà¥à¤¡à¤¿à¤¯à¤¾ à¤à¤¨à¥ । à¤à¥à¤¨ [[Special:UnusedCategories|पà¥à¤°à¤¯à¥à¤ नà¤à¤°à¤¿à¤à¤à¤¾ शà¥à¤°à¥à¤£à¥à¤¹à¤°à¥]] यहाठदà¥à¤à¤¾à¤à¤à¤à¥ à¤à¥à¤¨à¥¤ [[Special:WantedCategories|à¤à¤¾à¤¹à¤¿à¤à¤à¥ शà¥à¤°à¥à¤£à¥à¤¹à¤°à¥]] पनि हà¥à¤°à¥à¤¨à¥à¤¹à¥à¤¸à¥¤",
"categoriesfrom": "शà¥à¤°à¥à¤£à¥à¤¹à¤°à¥ दà¥à¤à¤¾à¤à¤¨ शà¥à¤°à¥ हà¥à¤¨à¥ यहाà¤:",
- "special-categories-sort-count": "à¤à¤£à¤¨à¤¾ à¤à¥à¤°à¤®à¤®à¤¾ राà¤à¥à¤¨à¥à¤¹à¥à¤¸à¥",
- "special-categories-sort-abc": "वरà¥à¤£à¤¾à¤¨à¥à¤à¥à¤°à¤® à¤
नà¥à¤¸à¤¾à¤° मिलाà¤à¤¨à¥",
"deletedcontributions": "पà¥à¤°à¤¯à¥à¤à¤à¤°à¥à¤¤à¤¾à¤à¤¾ मà¥à¤à¤¿à¤à¤à¤¾ यà¥à¤à¤¦à¤¾à¤¨à¤¹à¤°à¥",
"deletedcontributions-title": "पà¥à¤°à¤¯à¥à¤à¤à¤°à¥à¤¤à¤¾à¤à¤¾ मà¥à¤à¤¾à¤à¤à¤à¤¾ यà¥à¤à¤¦à¤¾à¤¨à¤¹à¤°à¥",
"sp-deletedcontributions-contribs": "यà¥à¤à¤¦à¤¾à¤¨à¤¹à¤°à¥",
@@ -2282,11 +2280,7 @@
"import-logentry-upload-detail": "$1 {{PLURAL:$1|सà¤à¤¶à¥à¤§à¤¨|सà¤à¤¶à¥à¤§à¤¨à¤¹à¤°à¥}} à¤à¤¯à¤¾à¤¤ à¤à¤¯à¥",
"import-logentry-interwiki-detail": "$2 दà¥à¤à¤¿ $1 {{PLURAL:$1|पà¥à¤¨à¤°à¤¾à¤µà¤²à¥à¤à¤¨|पà¥à¤¨à¤°à¤¾à¤µà¤²à¥à¤à¤¨à¤¹à¤°à¥}} à¤à¤¯à¤¾à¤¤ à¤à¤¯à¥",
"javascripttest": "JavaScript à¤à¤¾à¤à¤ à¤à¤°à¤¿à¤¦à¥",
- "javascripttest-pagetext-noframework": "यॠपà¥à¤·à¥à¤ à¤à¤¾à¤à¤¾à¤¸à¥à¤à¥à¤°à¤¿à¤ªà¤ à¤à¤¾à¤à¤à¤¹à¤°à¥à¤à¥ लाà¤à¥ à¤à¤à¥à¤¡à¤¾à¤®à¤¾ राà¤à¤¿à¤à¤à¥ ठ।",
- "javascripttest-pagetext-unknownframework": "à¤
à¤à¥à¤à¤¾à¤¤ à¤à¤¾à¤à¤ à¤à¤¾à¤à¤à¤¾ \"$1\" ।",
"javascripttest-pagetext-unknownaction": "à¤
à¤à¥à¤à¤¾à¤¤ à¤à¤¾à¤°à¤µà¤¾à¤¹à¥ \"$1\" ।",
- "javascripttest-pagetext-frameworks": "à¤à¥à¤ªà¤¯à¤¾ निमà¥à¤¨ परà¥à¤à¥à¤·à¤£ ढाà¤à¤à¤¾à¤¹à¤°à¥ मधà¥à¤¯à¥ à¤à¤à¤à¤¾ à¤à¤¾à¤¨à¥à¤¨à¥à¤¹à¥à¤¸à¥: $1",
- "javascripttest-pagetext-skins": "परà¥à¤à¥à¤·à¤£à¤à¥ लाà¤à¤¿ à¤à¥à¤² à¤à¤¾à¤¨à¥à¤¨à¥à¤¹à¥à¤¸à¥:",
"javascripttest-qunit-intro": "mediawiki.org मा [$1 à¤à¤¾à¤à¤à¤à¥ à¤à¤¾à¤à¤à¤¾à¤¤] हà¥à¤°à¥à¤¨à¥à¤¹à¥à¤¸à¥ ।",
"tooltip-pt-userpage": "तपाà¤à¤à¤à¥ पà¥à¤°à¤¯à¥à¤à¤à¤°à¥à¤¤à¤¾ पà¥à¤·à¥à¤ ",
"tooltip-pt-anonuserpage": "तपाà¤à¤ à¤à¥à¤¨ IP ठà¥à¤à¤¾à¤¨à¤¾à¤à¥ रà¥à¤ªà¤®à¤¾ समà¥à¤ªà¤¾à¤¦à¤¨ à¤à¤°à¥à¤¦à¥ हà¥à¤¨à¥à¤¹à¥à¤¨à¥à¤ , तà¥à¤¯à¤¸à¤à¥ पà¥à¤°à¤¯à¥à¤à¤à¤°à¥à¤¤à¤¾ पà¥à¤·à¥à¤ निमà¥à¤¨ ठ:",
@@ -2542,8 +2536,8 @@
"exif-colorspace": "वरà¥à¤£ सà¥à¤¥à¤¾à¤¨",
"exif-componentsconfiguration": "पà¥à¤°à¤¤à¥à¤¯à¥à¤ à¤à¤à¤à¤à¥ à¤
रà¥à¤¥",
"exif-compressedbitsperpixel": "à¤à¤¿à¤¤à¥à¤° समà¥à¤ªà¥à¤¡à¤¨ मà¥à¤¡",
- "exif-pixelydimension": "à¤à¤¿à¤¤à¥à¤°à¤à¥ à¤à¥à¤¡à¤¼à¤¾à¤",
- "exif-pixelxdimension": "à¤à¤¿à¤¤à¥à¤°à¤à¥ à¤à¤à¤¾à¤",
+ "exif-pixelxdimension": "à¤à¤¿à¤¤à¥à¤°à¤à¥ à¤à¥à¤¡à¤¼à¤¾à¤",
+ "exif-pixelydimension": "à¤à¤¿à¤¤à¥à¤°à¤à¥ à¤à¤à¤¾à¤",
"exif-usercomment": "पà¥à¤°à¤¯à¥à¤à¤à¤°à¥à¤¤à¤¾à¤à¤¾ à¤à¤¿à¤ªà¥à¤ªà¤£à¤à¤°à¥:",
"exif-relatedsoundfile": "समà¥à¤¬à¤¨à¥à¤§à¤¿à¤¤ à¤
डियॠफाà¤à¤²",
"exif-datetimeoriginal": "डà¥à¤à¤¾ सà¤à¥à¤à¤¾à¤²à¤¨à¤à¥ मिति र समय",
@@ -3062,7 +3056,6 @@
"version-libraries-description": "वरà¥à¤£à¤¨",
"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]]।",
"redirect-submit": "à¤à¤¾à¤¨à¥",
"redirect-lookup": "à¤à¥à¤à¥:",
@@ -3074,7 +3067,6 @@
"redirect-not-exists": "मान पतà¥à¤¤à¤¾ लाà¤à¥à¤¨",
"fileduplicatesearch": "नà¤à¥à¤à¤² फाà¤à¤² à¤à¥à¤à¥à¤¨à¥",
"fileduplicatesearch-summary": "हà¥à¤¯à¤¾à¤¸ मानà¤à¥ à¤à¤§à¤¾à¤°à¤®à¤¾ दà¥à¤°à¥à¤¸à¥à¤¤ नà¤à¥à¤à¤² फाà¤à¤¹à¤°à¥ à¤à¥à¤à¥à¤¨à¥ ।",
- "fileduplicatesearch-legend": " नà¤à¥à¤à¤² à¤à¥à¤à¥à¤¨à¥à¤¹à¥à¤¸à¥",
"fileduplicatesearch-filename": "फाà¤à¤²à¤¨à¤¾à¤®:",
"fileduplicatesearch-submit": "à¤à¥à¤à¥ à¤à¤°à¥à¤¨à¥à¤¹à¥à¤¸à¥",
"fileduplicatesearch-info": "$1 à $2 पिà¤à¥à¤¸à¥à¤² फाà¤à¤² à¤à¤à¤¾à¤°: $3 MIME पà¥à¤°à¤à¤¾à¤°: $4",
diff --git a/languages/i18n/new.json b/languages/i18n/new.json
index 95b66b25d0..6dccabf006 100644
--- a/languages/i18n/new.json
+++ b/languages/i18n/new.json
@@ -339,8 +339,8 @@
"exif-software": "à¤à¥à¤¯à¤²à¤¾à¤¤à¤à¤à¥ सफà¥à¤¤à¤µà¥à¤¯à¤°",
"exif-artist": "à¤à¥à¤µà¤®à¤¿",
"exif-copyright": "लà¥à¤à¤¾à¤§à¤¿à¤à¤¾à¤° थà¥à¤µà¤¾",
- "exif-pixelydimension": "à¤à¤¿à¤ªà¤¾ बà¥à¤¯à¤¾à¤",
- "exif-pixelxdimension": "à¤à¤¿à¤ªà¤¾ à¤à¤¾à¤",
+ "exif-pixelxdimension": "à¤à¤¿à¤ªà¤¾ बà¥à¤¯à¤¾à¤",
+ "exif-pixelydimension": "à¤à¤¿à¤ªà¤¾ à¤à¤¾à¤",
"exif-dc-date": "तिथि",
"namespacesall": "सà¤à¤²",
"autosumm-new": "नà¥à¤¹à¥à¤à¥ पà¥: $1",
diff --git a/languages/i18n/nl.json b/languages/i18n/nl.json
index ecc88309b5..15f8e89248 100644
--- a/languages/i18n/nl.json
+++ b/languages/i18n/nl.json
@@ -73,7 +73,10 @@
"Matma Rex",
"Robin van der Vliet",
"Catrope",
- "Edoderoo"
+ "Edoderoo",
+ "Nemo bis",
+ "Lemondoge",
+ "Dinosaur918"
]
},
"tog-underline": "Koppelingen onderstrepen:",
@@ -91,6 +94,7 @@
"tog-watchdefault": "Paginaâs en bestanden die ik bewerk automatisch volgen",
"tog-watchmoves": "Paginaâs en bestanden die ik hernoem automatisch volgen",
"tog-watchdeletion": "Paginaâs en bestanden die ik verwijder automatisch volgen",
+ "tog-watchuploads": "Nieuwe bestanden die ik upload toevoegen aan mijn volglijst",
"tog-watchrollback": "Pagina's waarop ik heb teruggedraaid automatisch volgen",
"tog-minordefault": "Mijn bewerkingen standaard als kleine bewerking markeren",
"tog-previewontop": "Voorvertoning boven bewerkingsveld weergeven",
@@ -531,7 +535,7 @@
"noemail": "Er is geen e-mailadres bekend voor gebruiker \"$1\".",
"noemailcreate": "U moet een geldig e-mailadres opgeven",
"passwordsent": "Het wachtwoord is verzonden naar het e-mailadres voor \"$1\".\nMeld u aan nadat u het hebt ontvangen.",
- "blocked-mailpassword": "Uw IP-adres is geblokkeerd voor het maken van wijzigingen.\nOm misbruik te voorkomen is het niet mogelijk om een nieuw wachtwoord aan te vragen.",
+ "blocked-mailpassword": "Uw IP-adres is geblokkeerd voor het maken van wijzigingen. Om misbruik te voorkomen is het niet mogelijk om een nieuw wachtwoord aan te vragen.",
"eauthentsent": "Er is ter bevestiging een e-mail naar het opgegeven e-mailadres gezonden.\nVolg de aanwijzingen in de e-mail om aan te geven dat het uw e-mailadres is.\nTot die tijd worden er geen e-mails naar het e-mailadres gezonden.",
"throttled-mailpassword": "In {{PLURAL:$1|het laatste uur|de laatste $1 uur}} is al een wachtwoordherinnering verzonden.\nOm misbruik te voorkomen wordt er slechts één wachtwoordherinnering per {{PLURAL:$1|uur|$1 uur}} verzonden.",
"mailerror": "Fout bij het verzenden van e-mail: $1",
@@ -548,7 +552,7 @@
"createaccount-title": "Gebruikers registreren voor {{SITENAME}}",
"createaccount-text": "Iemand heeft een gebruiker op {{SITENAME}} ($4) aangemaakt met de naam \"$2\" en uw e-mailadres.\nHet wachtwoord voor \"$2\" is \"$3\".\nMeld u aan en wijzig uw wachtwoord.\n\nNegeer dit bericht als deze gebruiker zonder uw medeweten is aangemaakt.",
"login-throttled": "U heeft recentelijk te veel mislukte aanmeldpogingen gedaan.\nWacht alstublieft $1 voordat u het opnieuw probeert.",
- "login-abort-generic": "U bent niet aangemeld. De procedure is afgebroken.",
+ "login-abort-generic": "Uw aanmelding is mislukt - Afgebroken",
"login-migrated-generic": "Uw gebruikersnaam is hernoemd, en uw gebruikersnaam bestaat niet langer op deze wiki.",
"loginlanguagelabel": "Taal: $1",
"suspicious-userlogout": "Uw verzoek om af te melden is genegeerd, omdat het lijkt alsof het verzoek is verzonden door een browser of cacheproxy die stuk is.",
@@ -568,7 +572,7 @@
"newpassword": "Nieuw wachtwoord:",
"retypenew": "Herhaling nieuwe wachtwoord:",
"resetpass_submit": "Wachtwoord instellen en aanmelden",
- "changepassword-success": "Uw wachtwoord is gewijzigd.",
+ "changepassword-success": "Uw wachtwoord is gewijzigd!",
"changepassword-throttled": "U heeft recentelijk te veel mislukte aanmeldpogingen gedaan.\nWacht alstublieft $1 voordat u het opnieuw probeert.",
"botpasswords": "Botwachtwoorden",
"botpasswords-summary": "Botwachtwoorden zorgen voor toegang tot de API via een gebruikersaccount zonder gebruik te maken van de aanmeldgegevens van dat account. De gebruikersrechten die beschikbaar zijn kunnen afwijken indien er aangemeld is met een botwachtwoord.\n\nAls u niet weet wat de gevolgen hiervan zijn, is het handiger om dit ook dan niet te doen. Niemand hoort u te vragen om een botwachtwoord aan te maken en deze vervolgens aan hem of haar te geven.",
@@ -591,7 +595,7 @@
"botpasswords-insert-failed": "Toevoegen van botnaam \"$1\" mislukt. Is deze misschien al toegevoegd?",
"botpasswords-update-failed": "Bijwerken van botnaam \"$1\" mislukt. Is deze misschien verwijderd?",
"botpasswords-created-title": "Botwachtwoord aangemaakt",
- "botpasswords-created-body": "Het botwachtwoord \"$1\" is succesvol aangemaakt.",
+ "botpasswords-created-body": "Het botwachtwoord voor botnaam \"$1\" van gebruiker \"$2\" is gemaakt.",
"botpasswords-updated-title": "Botwachtwoord bijgewerkt",
"botpasswords-updated-body": "Het botwachtwoord \"$1\" is succesvol bijgewerkt.",
"botpasswords-deleted-title": "Botwachtwoord verwijderd",
@@ -681,7 +685,7 @@
"anoneditwarning": "Waarschuwing: u bent niet aangemeld.\nUw IP-adres wordt opgeslagen als u wijzigingen op deze pagina maakt. Wanneer u [$1 aanmeldt] of [$2 een gebruiker aanmaakt] verschijnen uw bewerkingen onder uw gebruikersnaam, naast andere voordelen.",
"anonpreviewwarning": "''U bent niet aangemeld.''\n''Door uw bewerking op te slaan wordt uw IP-adres opgeslagen in de paginageschiedenis.''",
"missingsummary": "'''Let op:''' u hebt geen bewerkingssamenvatting opgegeven.\nAls u nogmaals op \"{{int:savearticle}}\" klikt wordt de bewerking zonder samenvatting opgeslagen.",
- "selfredirect": "Waarschuwing: U heeft een doorverwijzing gemaakt naar dezelfde pagina. Mogelijk heeft u de verkeerde bestemming voor de doorverwijzing gebruikt, of bewerkt u de verkeerde pagina. Door alsnog op \"{{int:savearticle}}\" te klikken word de doorverwijzing alsnog aangemaakt.",
+ "selfredirect": "Waarschuwing: U heeft een doorverwijzing gemaakt naar dezelfde pagina. Mogelijk heeft u de verkeerde bestemming voor de doorverwijzing gebruikt, of bewerkt u de verkeerde pagina. Door nogmaals op \"{{int:savearticle}}\" te klikken word de doorverwijzing alsnog aangemaakt.",
"missingcommenttext": "Plaats uw reactie hieronder.",
"missingcommentheader": "Let op: u hebt geen onderwerp/kop voor deze opmerking opgegeven.\nAls u opnieuw op \"{{int:savearticle}}\" klikt, wordt uw wijziging zonder een onderwerp/kop opgeslagen.",
"summary-preview": "Bewerkingssamenvatting nakijken:",
@@ -889,7 +893,7 @@
"revdelete-unsuppress": "Beperkingen op teruggeplaatste wijzigingen verwijderen",
"revdelete-log": "Reden:",
"revdelete-submit": "Toepassen op de geselecteerde {{PLURAL:$1|bewerking|bewerkingen}}",
- "revdelete-success": "Deze zichtbaarheid van de wijziging is bijgewerkt.",
+ "revdelete-success": "Zichtbaarheid van wijziging bijgewerkt.",
"revdelete-failure": "De zichtbaarheid van de wijziging kon niet bijgewerkt worden:\n$1",
"logdelete-success": "De zichtbaarheid van de gebeurtenis is ingesteld.",
"logdelete-failure": "De zichtbaarheid van de logboekregel kon niet ingesteld worden:\n$1",
@@ -1348,7 +1352,7 @@
"rcshowhidemine-hide": "verbergen",
"rcshowhidecategorization": "paginacategorisatie $1",
"rcshowhidecategorization-show": "weergeven",
- "rcshowhidecategorization-hide": "verbergen",
+ "rcshowhidecategorization-hide": "Verbergen",
"rclinks": "De $1 laatste wijzigingen bekijken in de laatste $2 dagen $3",
"diff": "wijz",
"hist": "gesch",
@@ -1373,7 +1377,7 @@
"recentchangeslinked-page": "Paginanaam:",
"recentchangeslinked-to": "Wijzigingen aan pagina's met koppelingen naar deze pagina bekijken",
"recentchanges-page-added-to-category": "[[:$1]] aan categorie toegevoegd",
- "recentchanges-page-added-to-category-bundled": "[[:$1]] en {{PLURAL:$2|één pagina|$2 pagina's}} zijn toegevoegd aan categorie",
+ "recentchanges-page-added-to-category-bundled": "[[:$1]] en [[Special:WhatLinksHere/$1|{{PLURAL:$2|één pagina|$2 pagina's}}]] zijn toegevoegd aan categorie",
"recentchanges-page-removed-from-category": "[[:$1]] is verwijderd uit categorie",
"recentchanges-page-removed-from-category-bundled": "[[:$1]] en {{PLURAL:$2|één pagina|$2 pagina's}} zijn verwijderd uit categorie",
"autochange-username": "Automatische wijziging van MediaWiki",
@@ -1553,8 +1557,9 @@
"uploadstash-clear": "Verborgen bestanden weggooien",
"uploadstash-nofiles": "Er zijn geen verborgen bestanden.",
"uploadstash-badtoken": "Het uitvoeren van de handeling is mislukt. Dit komt mogelijk doordat uw bewerkingsreferenties zijn verlopen. Probeer het opnieuw.",
- "uploadstash-errclear": "Het verwijderen van de bestanden is mislukt.",
+ "uploadstash-errclear": "Het wissen van de bestanden is mislukt.",
"uploadstash-refresh": "Lijst met bestanden bijwerken",
+ "uploadstash-thumbnail": "miniatuurafbeelding weergeven",
"invalid-chunk-offset": "Ongeldige chunkoffset",
"img-auth-accessdenied": "Toegang geweigerd",
"img-auth-nopathinfo": "PATH_INFO ontbreekt.\nUw server is niet ingesteld om deze gegevens door te geven.\nMisschien gebruikt deze CGI, en dan wordt img_auth niet ondersteund.\nZie https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Image_Authorization voor meer informatie.",
@@ -1808,7 +1813,7 @@
"apisandbox-api-disabled": "De API is uitgeschakeld op deze site.",
"apisandbox-intro": "Gebruik deze pagina om te experimenteren met de MediaWiki-API .\nZie de [[mw:API:Main page|API-documentatie]] voor verdere details over het gebruik van de API. Voorbeeld: [//www.mediawiki.org/wiki/API#A_simple_example hoe de inhoud van een Hoofdpagina ophalen]. Selecteer een handeling om meer voorbeelden te zien.\n\nHoewel dit een testfunctie is, kunnen sommige handelingen toch wijzigingen in de wiki maken.",
"apisandbox-fullscreen": "Paneel uitvouwen",
- "apisandbox-fullscreen-tooltip": "Het zandbakvenster uitvoeren om het browservenster te vullen.",
+ "apisandbox-fullscreen-tooltip": "Het zandbakpaneel zo groot als het browservenster maken.",
"apisandbox-unfullscreen": "Pagina weergeven",
"apisandbox-unfullscreen-tooltip": "Het zandbakvenster samenvouwen zodat de navigatie voor MediaWiki weer beschikbaar is.",
"apisandbox-submit": "Verzoek uitvoeren",
@@ -1875,8 +1880,6 @@
"categories-submit": "Weergeven",
"categoriespagetext": "De volgende {{PLURAL:$1|categorie bevat|categorieën bevatten}} pagina's of mediabestanden.\n[[Special:UnusedCategories|Ongebruikte categorieën]] worden hier niet weergegeven.\nZie ook [[Special:WantedCategories|niet-bestaande categorieën met koppelingen]].",
"categoriesfrom": "Categorieën weergeven vanaf:",
- "special-categories-sort-count": "op aantal sorteren",
- "special-categories-sort-abc": "alfabetisch sorteren",
"deletedcontributions": "Verwijderde bijdragen",
"deletedcontributions-title": "Verwijderde gebruikersbijdragen",
"sp-deletedcontributions-contribs": "bijdragen",
@@ -2044,7 +2047,7 @@
"delete-toobig": "Deze pagina heeft een lange bewerkingsgeschiedenis, meer dan $1 {{PLURAL:$1|versie|versies}}.\nHet verwijderen van dit soort pagina's is met rechten beperkt om het per ongeluk verstoren van de werking van {{SITENAME}} te voorkomen.",
"delete-warning-toobig": "Deze pagina heeft een lange bewerkingsgeschiedenis, meer dan $1 {{PLURAL:$1|versie|versies}}.\nHet verwijderen van deze pagina kan de werking van de database van {{SITENAME}} verstoren.\nWees voorzichtig.",
"deleteprotected": "U kunt deze pagina niet verwijderen omdat hij is beveiligd.",
- "deleting-backlinks-warning": "'''Waarschuwing:''' [[Special:WhatLinksHere/{{FULLPAGENAME}}|andere pagina's]] gebruiken of verwijzen naar de pagina die u wilt verwijderen.",
+ "deleting-backlinks-warning": "Waarschuwing: [[Special:WhatLinksHere/{{FULLPAGENAME}}|andere pagina's]] gebruiken of verwijzen naar de pagina die u wilt verwijderen.",
"rollback": "Wijzigingen ongedaan maken",
"rollbacklink": "terugdraaien",
"rollbacklinkcount": "{{PLURAL:$1|één bewerking|$1 bewerkingen}} terugdraaien",
@@ -2252,6 +2255,7 @@
"ipb-unblock": "Een gebruiker of IP-adres deblokkeren",
"ipb-blocklist": "Bestaande blokkades bekijken",
"ipb-blocklist-contribs": "Bijdragen van {{GENDER:$1|$1}}",
+ "ipb-blocklist-duration-left": "$1 te gaan",
"unblockip": "Gebruiker deblokkeren",
"unblockiptext": "Gebruik het onderstaande formulier om opnieuw schrijftoegang te geven aan een geblokkeerde gebruiker of IP-adres.",
"ipusubmit": "Blokkade opheffen",
@@ -2493,11 +2497,7 @@
"import-logentry-upload-detail": "$1 {{PLURAL:$1|versie|versies}} geïmporteerd",
"import-logentry-interwiki-detail": "$1 {{PLURAL:$1|versie|versies}} geïmporteerd uit $2",
"javascripttest": "JavaScript testen",
- "javascripttest-pagetext-noframework": "Deze pagina is gereserveerd voor het uitvoeren van JavaScripttesten.",
- "javascripttest-pagetext-unknownframework": "Onbekend testframework \"$1\".",
"javascripttest-pagetext-unknownaction": "Onbekende handeling \"$1\".",
- "javascripttest-pagetext-frameworks": "Kies een van de volgende testframeworks: $1",
- "javascripttest-pagetext-skins": "Kies een vormgeving om de tests mee uit te voeren:",
"javascripttest-qunit-intro": "Zie de [$1 testdocumentatie] op mediawiki.org.",
"tooltip-pt-userpage": "{{GENDER:|Uw}} gebruikerspagina",
"tooltip-pt-anonuserpage": "Gebruikerspagina voor uw IP-adres",
@@ -2768,8 +2768,8 @@
"exif-colorspace": "Kleurruimte",
"exif-componentsconfiguration": "Betekenis van elke component",
"exif-compressedbitsperpixel": "Beeldcompressiemethode",
- "exif-pixelydimension": "Afbeeldingsbreedte",
- "exif-pixelxdimension": "Afbeeldingshoogte",
+ "exif-pixelxdimension": "Afbeeldingsbreedte",
+ "exif-pixelydimension": "Afbeeldingshoogte",
"exif-usercomment": "Opmerkingen",
"exif-relatedsoundfile": "Bijbehorend audiobestand",
"exif-datetimeoriginal": "Tijdstip gegevensaanmaak",
@@ -3225,7 +3225,6 @@
"version-libraries-description": "Beschrijving",
"version-libraries-authors": "Auteurs",
"redirect": "Doorverwijzen op bestandsnaam, gebruikers-, pagina-, versie- of logboekregelnummer",
- "redirect-legend": "Doorverwijzen naar een bestand of pagina",
"redirect-summary": "Deze speciale pagina verwijst door naar een bestand (als een bestandsnaam wordt opgegeven), een pagina (als een paginanummer of versienummer wordt opgegeven), een gebruikerspagina (als een gebruikersnummer wordt opgegeven) of een logboekregel (als een logboekregel-ID wordt opgegeven). Gebruik: [[{{#Special:Redirect}}/file/Voorbeeld.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], [[{{#Special:Redirect}}/user/101]] of [[{{#Special:Redirect}}/logid/186]].",
"redirect-submit": "OK",
"redirect-lookup": "Opzoeken:",
@@ -3238,7 +3237,6 @@
"redirect-not-exists": "Waarde niet gevonden",
"fileduplicatesearch": "Duplicaatbestanden zoeken",
"fileduplicatesearch-summary": "Duplicaatbestanden zoeken op basis van de hashwaarde.",
- "fileduplicatesearch-legend": "Duplicaatbestanden zoeken",
"fileduplicatesearch-filename": "Bestandsnaam:",
"fileduplicatesearch-submit": "Zoeken",
"fileduplicatesearch-info": "$1 Ã $2 pixels Bestandsgrootte: $3 MIME-type: $4",
@@ -3532,6 +3530,7 @@
"api-error-unknownerror": "Onbekende fout: \"$1\"",
"api-error-uploaddisabled": "Uploaden is niet mogelijk in deze wiki.",
"api-error-verification-error": "Dit bestand is mogelijk beschadigd of heeft een onjuiste extensie.",
+ "api-error-was-deleted": "Een bestand met deze naam is al eerder geüpload en vervolgens verwijderd.",
"duration-seconds": "$1 {{PLURAL:$1|seconde|seconden}}",
"duration-minutes": "$1 {{PLURAL:$1|minuut|minuten}}",
"duration-hours": "$1 {{PLURAL:$1|uur|uren}}",
@@ -3622,6 +3621,7 @@
"special-characters-group-ipa": "IPA",
"special-characters-group-symbols": "Symbolen",
"special-characters-group-greek": "Grieks",
+ "special-characters-group-greekextended": "Grieks-uitgebreid",
"special-characters-group-cyrillic": "Cyrillisch",
"special-characters-group-arabic": "Arabisch",
"special-characters-group-arabicextended": "Arabisch uitgebreid",
@@ -3649,5 +3649,29 @@
"sessionprovider-generic": "$1 sessies",
"sessionprovider-mediawiki-session-cookiesessionprovider": "sessies gebaseerd op cookies",
"sessionprovider-nocookies": "Cookies kunnen uitgeschakeld zijn. Zorg ervoor dat u cookies hebt ingeschakeld en probeer het opnieuw.",
- "randomrootpage": "Willekeurige hoofdpagina"
+ "randomrootpage": "Willekeurige hoofdpagina",
+ "log-action-filter-block": "Soort blokkade:",
+ "log-action-filter-delete": "Soort verwijdering:",
+ "log-action-filter-managetags": "Type labelbeheerhandeling:",
+ "log-action-filter-move": "Soort hernoeming:",
+ "log-action-filter-newusers": "Type accountaanmaak:",
+ "log-action-filter-patrol": "Soort markering:",
+ "log-action-filter-protect": "Soort beveiliging:",
+ "log-action-filter-all": "Alles",
+ "log-action-filter-block-block": "Blokkade",
+ "log-action-filter-block-reblock": "Aanpassing van blokkade",
+ "log-action-filter-block-unblock": "Opheffing van blokkade",
+ "log-action-filter-delete-delete": "Verwijderen van pagina",
+ "log-action-filter-delete-restore": "Terugplaatsen van pagina",
+ "log-action-filter-newusers-autocreate": "Automatische aanmaak",
+ "log-action-filter-patrol-patrol": "Handmatige markering",
+ "log-action-filter-patrol-autopatrol": "Automatische markering",
+ "log-action-filter-protect-protect": "Beveiliging",
+ "log-action-filter-protect-modify": "Aanpassing van beveiliging",
+ "log-action-filter-protect-unprotect": "Opheffen van beveliging",
+ "log-action-filter-protect-move_prot": "Beveiliging verplaatst",
+ "log-action-filter-rights-rights": "Handmatige aanpassing",
+ "log-action-filter-rights-autopromote": "Automatische aanpassing",
+ "log-action-filter-upload-upload": "Nieuwe upload",
+ "log-action-filter-upload-overwrite": "Herupload"
}
diff --git a/languages/i18n/nn.json b/languages/i18n/nn.json
index d751514c13..c01b64a278 100644
--- a/languages/i18n/nn.json
+++ b/languages/i18n/nn.json
@@ -494,6 +494,7 @@
"resetpass-wrong-oldpass": "Feil mellombels eller noverande passord.\nDu kan allereie ha byta passordet, eller ha bede om å få eit nytt mellombels passord.",
"resetpass-temp-password": "Mellombels passord:",
"resetpass-abort-generic": "Passordbytet vart stogga av ei utviding.",
+ "resetpass-validity-soft": "Passordet ditt er ikkje gyldig: $1\n\nGjer vel å velja eit nytt passord no, eller klikk «{{int:resetpass-submit-cancel}}» for å endra det seinare.",
"passwordreset": "Attendestilling av passord",
"passwordreset-text-one": "Fyll ut dette skjemaet for å attendestilla passordet ditt.",
"passwordreset-disabled": "âTilbakestilling av passord er ikkje aktivert pÃ¥ denne wikien",
@@ -633,6 +634,7 @@
"edit-conflict": "Endringskonflikt.",
"edit-no-change": "Endringa di vart ignorert fordi det ikkje vart gjort endringar i teksten.",
"postedit-confirmation-created": "Sida vart oppretta.",
+ "postedit-confirmation-restored": "Sida vart attoppretta.",
"postedit-confirmation-saved": "Endringa di vart lagra.",
"edit-already-exists": "Kunne ikkje opprette ny side fordi ho alt eksisterer.",
"defaultmessagetext": "Standard meldingstekst",
@@ -1558,8 +1560,6 @@
"categories-submit": "Vis",
"categoriespagetext": "Følgjande {{PLURAL:$1|category contains|kategoriar inneheld}} sider eller media.\n[[Special:UnusedCategories|Unytta kategoriar]] vert ikkje vist her.\nSjå òg [[Special:WantedCategories|ønska kategoriar]].",
"categoriesfrom": "Vis kategoriar frå og med:",
- "special-categories-sort-count": "sorter etter storleik",
- "special-categories-sort-abc": "sorter alfabetisk",
"deletedcontributions": "Sletta brukarbidrag",
"deletedcontributions-title": "Sletta brukarbidrag",
"sp-deletedcontributions-contribs": "bidrag",
@@ -2127,11 +2127,7 @@
"import-logentry-upload-detail": "{{PLURAL:$1|Ãin versjon|$1 versjonar}}",
"import-logentry-interwiki-detail": "{{PLURAL:$1|Ãin versjon|$1 versjonar}} frÃ¥ $2",
"javascripttest": "JavaScript-utrøyning",
- "javascripttest-pagetext-noframework": "Sida er reservert for køyring av JavaScript-utrøyningar.",
- "javascripttest-pagetext-unknownframework": "Ukjent utrøyningsrammeverk: «$1».",
"javascripttest-pagetext-unknownaction": "Ukjend handling \"$1\".",
- "javascripttest-pagetext-frameworks": "Vel eitt av dei fylgjande utrøyningsrammeverka: $1",
- "javascripttest-pagetext-skins": "Vel ei drakt som utrøyningane skal køyrast med:",
"javascripttest-qunit-intro": "Sjå [$1 utrøyningsdokumentasjon] på mediawiki.org.",
"tooltip-pt-userpage": "{{GENDER:|Brukarsida}} di",
"tooltip-pt-anonuserpage": "Brukarsida for ip-adressa du endrar under",
@@ -2379,8 +2375,8 @@
"exif-colorspace": "Fargerom",
"exif-componentsconfiguration": "Komponentanalyse",
"exif-compressedbitsperpixel": "Komprimerte bits pr. pixel",
- "exif-pixelydimension": "Biletbreidd",
- "exif-pixelxdimension": "Bilethøgd",
+ "exif-pixelxdimension": "Biletbreidd",
+ "exif-pixelydimension": "Bilethøgd",
"exif-usercomment": "Brukarkommentarar",
"exif-relatedsoundfile": "Tilknytt lydfil",
"exif-datetimeoriginal": "Dato og tid laga",
@@ -2811,7 +2807,6 @@
"version-libraries-library": "Bibliotek",
"version-libraries-version": "Versjon",
"redirect": "Omdiriger etter filnamn, brukar- eller versjons-ID",
- "redirect-legend": "Omdiriger til ei fil eller ei side",
"redirect-summary": "Denne spesialsida omdirigerer til ei fil (med eit filnamn), ei side (med ein versjons-ID) eller ei brukarside (med eit brukartal).",
"redirect-submit": "GÃ¥",
"redirect-lookup": "Sjå etter:",
@@ -2823,7 +2818,6 @@
"redirect-not-exists": "Fann ikkje verdi",
"fileduplicatesearch": "Søk etter duplikatfiler",
"fileduplicatesearch-summary": "Søk etter duplikatfiler basert på hash-verdiane deira.",
- "fileduplicatesearch-legend": "Søk etter ei duplikatfil",
"fileduplicatesearch-filename": "Filnamn:",
"fileduplicatesearch-submit": "Søk",
"fileduplicatesearch-info": "$1 Ã $2 pikslar Filstorleik: $3 MIME-type: $4",
diff --git a/languages/i18n/oc.json b/languages/i18n/oc.json
index 3a68073ecc..e16a822e5f 100644
--- a/languages/i18n/oc.json
+++ b/languages/i18n/oc.json
@@ -1610,8 +1610,6 @@
"categories": "Categorias",
"categoriespagetext": "{{PLURAL:$1|La categoria seguenta es utilizada|Las categorias seguentas son utilizadas}} per de paginas o de fichièrs.\n[[Special:UnusedCategories|Las categorias inutilizadas]] son pas afichadas aicÃ.\nVejatz tanben [[Special:WantedCategories|las categorias demandadas]].",
"categoriesfrom": "Afichar las categorias que començan a :",
- "special-categories-sort-count": "triada per compte",
- "special-categories-sort-abc": "triada alfabetica",
"deletedcontributions": "Contribucions suprimidas dâun utilizaire",
"deletedcontributions-title": "Contribucions suprimidas dâun utilizaire",
"sp-deletedcontributions-contribs": "contribucions",
@@ -2175,11 +2173,7 @@
"import-logentry-upload-detail": "$1 {{PLURAL:$1|revision importada|revisions importadas}}",
"import-logentry-interwiki-detail": "$1 {{PLURAL:$1|revision importada|revisions importadas}} dempuèi $2",
"javascripttest": "Tèst de JavaScript",
- "javascripttest-pagetext-noframework": "Aquesta pagina es reservada per l'execucion dels tèsts JavaScript.",
- "javascripttest-pagetext-unknownframework": "Estructura « $1 » desconeguda.",
"javascripttest-pagetext-unknownaction": "Accion «â¯$1â¯Â» desconeguda.",
- "javascripttest-pagetext-frameworks": "Causissètz una de las estructuras de tèst seguentas : $1",
- "javascripttest-pagetext-skins": "Causissètz un abilhatge amb lo qual cal aviar los tèsts :",
"javascripttest-qunit-intro": "Veire [$1 la documentacion de tèst] sus mediawiki.org.",
"tooltip-pt-userpage": "Vòstra pagina d'{{GENDER:|utilizaire|utilizaira}}",
"tooltip-pt-anonuserpage": "La pagina d'utilizare de lâIP amb la quala contribuissètz",
@@ -2430,8 +2424,8 @@
"exif-colorspace": "Espaci colorimetric",
"exif-componentsconfiguration": "Significacion de cada compausanta",
"exif-compressedbitsperpixel": "Mòde de compression de lâimatge",
- "exif-pixelydimension": "Largor de lâimatge",
- "exif-pixelxdimension": "Nautor de lâimatge",
+ "exif-pixelxdimension": "Largor de lâimatge",
+ "exif-pixelydimension": "Nautor de lâimatge",
"exif-usercomment": "Comentaris de l'utilizaire",
"exif-relatedsoundfile": "Fichièr à udio associat",
"exif-datetimeoriginal": "Data e ora de la generacion de donadas",
@@ -2873,7 +2867,6 @@
"version-libraries-description": "Descripcion",
"version-libraries-authors": "Autors",
"redirect": "Redirigit per fichièr, utilizaire, pagina o ID de revision.",
- "redirect-legend": "Redirigir cap a una pagina o un fichièr",
"redirect-submit": "Validar",
"redirect-lookup": "Recèrca :",
"redirect-value": "Valor :",
@@ -2884,7 +2877,6 @@
"redirect-not-exists": "Valor pas trobada",
"fileduplicatesearch": "Recèrca dels fichièrs en doble",
"fileduplicatesearch-summary": "Recèrca de las còpias de fichièrs identics d'aprèp lor emprenta de hachatge.",
- "fileduplicatesearch-legend": "Recèrca dâun doble",
"fileduplicatesearch-filename": "Nom del fichièr :",
"fileduplicatesearch-submit": "Recercar",
"fileduplicatesearch-info": "$1 à $2 pixèls Talha del fichièr : $3 MIME type : $4",
diff --git a/languages/i18n/or.json b/languages/i18n/or.json
index b72829552d..d711ecdaa1 100644
--- a/languages/i18n/or.json
+++ b/languages/i18n/or.json
@@ -375,7 +375,7 @@
"virus-badscanner": "ମନàଦ ସà¬à¬°à¬à¬¨à¬¾: à¬
à¬à¬£à¬¾ à¬à¬¾à¬à¬°à¬¸ ସàà¬à¬¾à¬¨à¬°: ''$1''",
"virus-scanfailed": "ସàà¬à¬¾à¬¨ à¬à¬°à¬¿à¬¬à¬¾ ବିଫଳ ହàଲା (à¬àଡ଼ $1)",
"virus-unknownscanner": "à¬
à¬à¬£à¬¾ à¬à¬£àà¬à¬¿à¬à¬¾à¬à¬°à¬¸:",
- "logouttext": "ଲà¬-à¬à¬à¬ ହàà¬à¬à¬²à¬¾ । \n\nà¬à¬ªà¬£ ନିà¬à¬° ବàରାà¬à¬à¬°à¬° à¬
ସàଥାàà ସàମତି (cache) ନ ଲିà¬à¬¾à¬à¬¬à¬¾ ଯାଠହàà¬à¬¤ à¬à¬¿à¬à¬¿ ପàଷàଠାରà ଲà¬-à¬à¬¨ ହàଠରହିପାରà ।",
+ "logouttext": "à¬à¬ªà¬£ ଲà¬-à¬à¬à¬ ହàà¬à¬à¬²à । \n\nà¬à¬ªà¬£ ନିà¬à¬° ବàରାà¬à¬à¬°à¬° à¬
ସàଥାàà ସàମàତି (cache) à¬à¬¾à¬²à¬¿ ନ'à¬à¬°à¬¿à¬¬à¬¾à¬¯à¬¾à¬, ହàà¬à¬¤ à¬à¬¿à¬à¬¿ ପàଷàଠାରà ଲà¬-à¬à¬¨ ହàà¬à¬¥à¬¿à¬¬à¬¾ ପରି ଦàà¬à¬¾à¬¯à¬¾à¬à¬ªà¬¾à¬°à ।",
"cannotlogoutnow-title": "ଲଠà¬à¬à¬ ହàà¬à¬ªà¬¾à¬°à¬¿à¬²à¬¾ ନାହିà¬",
"cannotlogoutnow-text": "$1ବààବହାର à¬à¬°àଥିବା ବàଳà ଲଠà¬à¬à¬ ହàà¬à¬ªà¬¾à¬°à¬¿à¬¬ ନାହିଠ।",
"welcomeuser": "ସàଵାà¬à¬¤, $1!",
@@ -1092,7 +1092,7 @@
"right-rollback": "à¬à¬ ନିରàଦàଦିଷàଠପàଷàଠାà¬à ବଦଳାà¬à¬¥à¬¿à¬¬à¬¾ ଶàଷ ସà¬ààà¬àଠସମàପାଦନାà¬à ସà¬àà¬àସà¬àà¬à ପàରାପàରି ପà¬à¬à ଫàରାà¬à¬¦àବà",
"right-markbotedits": "ପàରାପàରି ପà¬à¬à ଫàରାà¬à¬¬à¬¾ ବଦଳà¬àଡ଼ିଠà¬à¬ªà à¬à¬ªà à¬à¬°à¬¾ ବଦଳ ବàଲି à¬à¬£à¬¿à¬¬à",
"right-noratelimit": "ବିରଳ ସàମା ଦàଠପàରà¬à¬¾à¬¬à¬¿à¬¤ ହàଠନଥିବା",
- "right-import": "ବାà¬à¬¿ à¬à¬à¬à¬¿à¬°à ପàଷàଠାମାନ à¬à¬®à¬¦à¬¾à¬¨à à¬à¬°à¬¿à¬¬à",
+ "right-import": "ବାà¬à¬¿ à¬à¬à¬à¬¿à¬°à ପàଷàଠାମାନ à¬à¬®à¬¦à¬¾à¬¨à¬¿ à¬à¬°à¬¿à¬¬à",
"right-importupload": "à¬à¬ ଫାà¬à¬² à¬
ପଲàଡ଼ରà à¬à¬¹à¬¿ ପàଷàଠାସବà à¬à¬£à¬¿à¬¬à",
"right-patrol": "ବାà¬à¬¿ ମାନà¬àଠବଦଳà¬à à¬à¬à¬¾à¬¯à¬¾à¬à¬¥à¬¿à¬¬à¬¾ ବଦଳ ବàଲି à¬à¬¿à¬¹àନିତ à¬à¬°à¬¿à¬¬à",
"right-autopatrol": "à¬à¬£à¬à¬° à¬à¬ªà¬£à¬¾ ସମàପାଦନାସବà à¬à¬à¬¾à¬¯à¬¾à¬à¬
à¬à¬¿ ବàଲି à¬à¬¿à¬¹àନିତ ହàà¬à¬¯à¬¾à¬",
@@ -1516,16 +1516,16 @@
"specialpage-empty": "à¬à¬¹à¬¿ à¬
ନàରàଧ ପାà¬à¬ à¬à¬¿à¬à¬¿ ଫଳାଫଳ ମିଳିଲା ନାହିଠ।",
"lonelypages": "à¬
ନାଥ ପàଷàଠା ସବà",
"lonelypagestext": "ତଲାଲିà¬à¬¿à¬¤ ପàଷàଠାମାନ {{SITENAME}}ରà ଥିବା ବାà¬à¬¿ ପàଷàଠାମାନà¬àଠସହ ଯàଡ଼ାଯାà¬à¬¨à¬¾à¬¹à¬¿à¬ ବା à¬àବଳ ସàଥିରà ବààବହାର à¬à¬°à¬¾à¬¯à¬¾à¬à¬¨à¬¾à¬¹à¬¿à¬ ।",
- "uncategorizedpages": "ଶàରàଣàହିନ ପàଷàଠାସମàହ",
- "uncategorizedcategories": "ଶàରàଣàହିନ ଶàରàଣàସମàହ",
+ "uncategorizedpages": "ଶàରàଣàହàନ ପàଷàଠାସମàହ",
+ "uncategorizedcategories": "ଶàରàଣàହàନ ଶàରàଣàସମàହ",
"uncategorizedimages": "ଶàରàଣàହàନ ଫାà¬à¬²à¬¸à¬®àହ",
- "uncategorizedtemplates": "ଶàରàଣàହିନ à¬à¬¾à¬àà¬à¬¸à¬¬à",
+ "uncategorizedtemplates": "ଶàରàଣàହàନ à¬à¬¾à¬àà¬à¬¸à¬¬à",
"unusedcategories": "ବààବହାର ହàà¬à¬¨à¬¥à¬¿à¬¬à¬¾ ଶàରàଣàସମàହ",
"unusedimages": "ବààବହାର ହàà¬à¬¨à¬¥à¬¿à¬¬à¬¾ ଫାà¬à¬²à¬¸à¬®àହ",
"wantedcategories": "ଦରà¬à¬¾à¬°à ଶàରàଣàସମàହ",
- "wantedpages": "ଦରà¬à¬¾à¬°à¬¿ ପàଷàଠା",
+ "wantedpages": "ଦରà¬à¬¾à¬°à ପàଷàଠା",
"wantedpages-badtitle": "$1 à¬à¬¤àତରସବàରà ଥିବା à¬àଲ à¬à¬¾à¬à¬à¬²",
- "wantedfiles": "ଦରà¬à¬¾à¬°à¬¿ ଫାà¬à¬²",
+ "wantedfiles": "ଦରà¬à¬¾à¬°à ଫାà¬à¬²",
"wantedfiletext-cat": "ନିମàନଲିà¬à¬¿à¬¤ ଫାà¬à¬²à¬àଡିଠବààବହàତ ହàà¬à¬à¬¿ ହଲà ନାହିଠ। ରହିଥିବା ଫାà¬à¬² ବଦଳରà ବାହାରà ଥିବା ଫାà¬à¬²à¬àଡିଠତାଲିà¬à¬¾à¬àà¬àତ ହàà¬à¬à¬¿ । à¬à¬¹à¬¿à¬à¬³à¬¿ à¬àଲ ସତààà¬àଡିଠstruck out ହàà¬à¬¯à¬¿à¬¬ । à¬
ଧିà¬à¬¨àତà, ପàରà¬àତରà ନଥିବା ଫାà¬à¬²à¬àଡିà¬à¬° ପàଷàଠାà¬àଡିଠ[[:$1]]ରà ତାଲିà¬à¬¾à¬àà¬àତ ହàà¬à¬à¬¿ ।",
"wantedfiletext-cat-noforeign": "à¬à¬¹à¬¿ ଫାà¬à¬²à¬¸à¬¬à ତିà¬à¬°à¬¿ ନ à¬à¬°à¬¾à¬¯à¬¾à¬ ବààବହାର à¬à¬°à¬¾à¬¯à¬¾à¬à¬à¬¿ । à¬à¬¥à¬¿ ସହିତ, ତିà¬à¬°à¬¿ ହàà¬à¬¨à¬¥à¬¿à¬¬à¬¾ ଫାà¬à¬²à¬à à¬à¬®à¬¬àଡ଼ à¬à¬°à¬¿à¬¥à¬¿à¬¬à¬¾ ପàଷàଠାସବàର ତାଲିà¬à¬¾ [[:$1]]ରà ରହିà¬à¬¿ ।",
"wantedfiletext-nocat": "ନିମàନଲିà¬à¬¿à¬¤ ଫାà¬à¬²à¬àଡିଠବààବହàତ ହàà¬à¬à¬¿ ହଲà ନାହିଠ। ରହିଥିବା ଫାà¬à¬² ବଦଳରà ବାହାରà ଥିବା ଫାà¬à¬²à¬àଡିଠତାଲିà¬à¬¾à¬àà¬àତ ହàà¬à¬à¬¿ । à¬à¬¹à¬¿à¬à¬³à¬¿ à¬àଲ ସତààà¬àଡିଠstruck out ହàà¬à¬¯à¬¿à¬¬ ।",
@@ -1622,8 +1622,6 @@
"categories": "ଶàରàଣàସମàହ",
"categoriespagetext": "ତଳଲିà¬à¬¿à¬¤ {{PLURAL:$1|ଶàରàଣà|ଶàରàଣàସମàହ}}ରà ପàଷàଠା ବା ମିଡ଼ିଠରହିà¬
à¬à¬¿ ।\n[[Special:UnusedCategories|ବààବହାର ହàà¬à¬¨à¬¥à¬¿à¬¬à¬¾ ଶàରàଣàସବà]] ଦàà¬à¬¾à¬¯à¬¾à¬à¬¨à¬¾à¬¹à¬¿à¬ ।\n[[Special:WantedCategories|ଦରà¬à¬¾à¬°à ଶàରàଣàସମàହ]] ସବà ଦàà¬à¬¨àତà ।",
"categoriesfrom": "à¬à¬¹à¬¿ ନାମରà à¬à¬°à¬®àଠହàà¬à¬¥à¬¿à¬¬à¬¾ ଶàରàଣàà¬àଡ଼ିà¬à ଦàà¬à¬¾à¬à¬¬à:",
- "special-categories-sort-count": "à¬à¬£à¬¨ à¬à¬°à¬¿ ସà¬à¬¾à¬à¬¬à",
- "special-categories-sort-abc": "à¬
à¬àଷରର à¬àରମ à¬
ନàସାରà ସà¬à¬¾à¬à¬¬à",
"deletedcontributions": "ଲିà¬à¬¾à¬ ଦିà¬à¬¯à¬¾à¬à¬¥à¬¿à¬¬à¬¾ ସà¬ààà¬àଠà¬
ବଦାନ",
"deletedcontributions-title": "ଲିà¬à¬¾à¬ ଦିà¬à¬¯à¬¾à¬à¬¥à¬¿à¬¬à¬¾ ସà¬ààà¬àଠà¬
ବଦାନସମàହ",
"sp-deletedcontributions-contribs": "à¬
ବଦାନସମàହ",
@@ -2161,16 +2159,16 @@
"import-interwiki-sourcepage": "ମàଳ ପàଷàଠା:",
"import-interwiki-history": "à¬à¬¹à¬¿ ପàଷàଠା ନିମନàତà ସବàଯାଠସà¬à¬¸àà¬à¬°à¬£ à¬à¬¤à¬¿à¬¹à¬¾à¬¸ ନà¬à¬² à¬à¬°à¬¿à¬¨à¬¿à¬
ନàତà",
"import-interwiki-templates": "ସବàଯାଠà¬à¬¾à¬àଠà¬à¬¹à¬¾ à¬à¬¿à¬¤à¬°à ରà¬à¬¿à¬¬à",
- "import-interwiki-submit": "à¬à¬®à¬¦à¬¾à¬¨à",
+ "import-interwiki-submit": "à¬à¬®à¬¦à¬¾à¬¨à¬¿",
"import-upload-filename": "ଫାà¬à¬² ନାମ:",
"import-comment": "ମତାମତ:",
"importtext": "[[Special:Export|ରପàତାନି ସàବିଧା]] ବààବହାର à¬à¬°à¬¿ ମàଳ à¬à¬à¬à¬¿à¬°à ଫାà¬à¬²à¬à¬¿ ରପàତାନି à¬à¬°à¬¨àତà ।\nତାହାà¬à à¬à¬ªà¬£à¬¾ à¬à¬®àପàà¬à¬°à¬°à ସାà¬à¬¤à¬¿ à¬à¬ ାରà à¬
ପଲàଡ଼ à¬à¬°à¬¨àତà ।",
"importstart": "ପàଷàଠା à¬à¬®à¬¦à¬¾à¬¨à¬¿ à¬à¬°àà¬à...",
"import-revision-count": "$1 à¬àà¬à¬¿ {{PLURAL:$1|ସà¬à¬¸àà¬à¬°à¬£|ସà¬à¬¸àà¬à¬°à¬£}}",
"importnopages": "à¬à¬®à¬¦à¬¾à¬¨à¬¿ à¬à¬°à¬¿à¬¬à¬¾ ନିମନàତà ପàଷàଠା ନାହିଠ।",
- "imported-log-entries": "$1 à¬àà¬à¬¿ {{PLURAL:$1|à¬à¬¤à¬¿à¬¹à¬¾à¬¸|à¬à¬¤à¬¿à¬¹à¬¾à¬¸}}ର ନିବàଶ à¬à¬®à¬¦à¬¾à¬¨à à¬à¬°à¬¾à¬à¬²à¬¾ ।",
+ "imported-log-entries": "$1 à¬àà¬à¬¿ {{PLURAL:$1|à¬à¬¤à¬¿à¬¹à¬¾à¬¸|à¬à¬¤à¬¿à¬¹à¬¾à¬¸}}ର ନିବàଶ à¬à¬®à¬¦à¬¾à¬¨à¬¿ à¬à¬°à¬¾à¬à¬²à¬¾ ।",
"importfailed": "à¬à¬®à¬¦à¬¾à¬¨à¬¿ ବିଫଳ ହàଲା: $1 ",
- "importunknownsource": "à¬
à¬à¬£à¬¾ à¬à¬®à¬¦à¬¾à¬¨à ମàଳାଧାର ପàରà¬à¬¾à¬°",
+ "importunknownsource": "à¬à¬®à¬¦à¬¾à¬¨à¬¿ ମàଳାଧାର ପàରà¬à¬¾à¬° à¬
à¬à¬£à¬¾",
"importcantopen": "à¬à¬¹à¬°à¬£ ଫାà¬à¬²à¬à¬¿ à¬àଲି ପାରିଲà ନାହିà¬",
"importbadinterwiki": "à¬à¬°à¬¾à¬ª à¬à¬£àà¬à¬°à¬à¬à¬à¬¿ ଲିà¬àà¬",
"importsuccess": "à¬à¬¹à¬°à¬£ ଶàଷ ହàଲା!",
@@ -2201,10 +2199,6 @@
"import-logentry-upload-detail": "$1 {{PLURAL:$1|à¬àà¬à¬¿ ସà¬à¬¸àà¬à¬°à¬£|à¬àà¬à¬¿ ସà¬à¬¸àà¬à¬°à¬£}} à¬
ଣାà¬à¬²à¬¾",
"import-logentry-interwiki-detail": "$2ରà $1 {{PLURAL:$1|à¬àà¬à¬¿ ସà¬à¬¸àà¬à¬°à¬£|à¬àà¬à¬¿ ସà¬à¬¸àà¬à¬°à¬£}} à¬
ଣାà¬à¬²à¬¾",
"javascripttest": "à¬à¬¾à¬à¬¾à¬¸àà¬àରିପàଠପରà¬",
- "javascripttest-pagetext-noframework": "à¬à¬¹à¬¿ ପàଷàଠାà¬à¬¿ à¬à¬¾à¬à¬¾à¬¸àà¬àରିପàଠପରଠପାà¬à¬ ସà¬à¬°à¬àଷଣ à¬à¬°à¬¿ ରà¬à¬¾à¬¯à¬¾à¬à¬à¬¿ ।",
- "javascripttest-pagetext-unknownframework": "\"$1\" à¬
à¬à¬£à¬¾ ପରଠà¬à¬¤à¬¿à¬¬à¬¿à¬§à¬¿ ।",
- "javascripttest-pagetext-frameworks": "ଦàାà¬à¬°à¬¿ ନିମàନରà ଥିବା à¬à¬ ପରଠପàରà¬àରିàାà¬à ବାà¬à¬¨àତà :$1",
- "javascripttest-pagetext-skins": "à¬à¬¹à¬¿ ପରà¬à¬à à¬à¬¾à¬²à à¬à¬°à¬¿à¬¬à¬¾ ପାà¬à¬ à¬à¬ à¬à¬¬à¬°à¬£ ବାà¬à¬¨àତà ।",
"javascripttest-qunit-intro": "mediawiki.orgରà [$1 testing documentation]à¬à ଦàà¬à¬¨àତà ।",
"tooltip-pt-userpage": "{{GENDER:|à¬à¬ªà¬£à¬àà¬}} ବààବହାରà¬à¬¾à¬°à ପàଷàଠା",
"tooltip-pt-anonuserpage": "à¬à¬ªà¬£ ଯàà¬à¬ IP ଠିà¬à¬£à¬¾à¬° ବààବହାରà¬à¬¾à¬°à ପàଷàଠାà¬à¬¿ ବଦଳାà¬à¬¬à¬¾ ପାà¬à¬ à¬àଷàà¬à¬¾ à¬à¬°àà¬à¬¨àତି",
@@ -2449,8 +2443,8 @@
"exif-colorspace": "ରà¬àଠଫାà¬àà¬à¬¾ à¬à¬¾à¬à¬¾",
"exif-componentsconfiguration": "ପàରତିତି à¬à¬ªà¬¾à¬¦à¬¾à¬¨à¬° à¬
ରàଥ",
"exif-compressedbitsperpixel": "à¬à¬¬à¬¿ ସà¬àà¬àà¬à¬¨ à¬
ବସàଥା",
- "exif-pixelydimension": "à¬à¬¬à¬¿ à¬à¬¸à¬¾à¬°",
- "exif-pixelxdimension": "à¬à¬¬à¬¿ à¬à¬àà¬à¬¤à¬¾",
+ "exif-pixelxdimension": "à¬à¬¬à¬¿ à¬à¬¸à¬¾à¬°",
+ "exif-pixelydimension": "à¬à¬¬à¬¿ à¬à¬àà¬à¬¤à¬¾",
"exif-usercomment": "ସà¬àà ମତାମତ",
"exif-relatedsoundfile": "ସମàବନàଧିତ ଶବàଦ ଫାà¬à¬²",
"exif-datetimeoriginal": "ତଥàà ତିà¬à¬°à¬¿à¬¹àବାର ତାରିଠଠସମà",
@@ -2885,7 +2879,6 @@
"version-libraries-library": "ପାଠାà¬à¬¾à¬°",
"version-libraries-version": "ସà¬à¬¸àà¬à¬°à¬£",
"redirect": "ଫାà¬à¬², ସà¬àà, ପàଷàଠା à¬à¬¿à¬®àବା ସà¬à¬¸àà¬à¬°à¬£ ID à¬
ନàସାରà ପàନପàରàରଣ",
- "redirect-legend": "à¬à¬ ଫାà¬à¬² à¬à¬¿à¬®àବା ପàଷàଠାà¬à ପàନପàରàରଣ à¬à¬°à¬¨àତà",
"redirect-summary": "(ଫାà¬à¬² ନାମ ଥିଲà), (à¬à¬ ସà¬à¬¸àà¬à¬°à¬£ ID à¬à¬¿à¬®àବା ପàଷàଠା ID ଥିଲà) à¬à¬¿à¬®àବା à¬à¬ ସà¬àà à¬à¬¾à¬¤à¬¾ ଥିଲà (à¬à¬ ସାà¬à¬à¬¿à¬ ସà¬àà ID)à¬à¬¹à¬¿ ବିଶàଷ ପàଷàଠାà¬à¬¿ à¬à¬ ଫାà¬à¬²à¬à ଲàà¬à¬à¬¾à¬ ଦàà¬à¬¥à¬¾à¬ । ବààବହାର: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], à¬à¬¿à¬®àବା [[{{#Special:Redirect}}/user/101]].",
"redirect-submit": "ଯାà¬à¬¨àତà",
"redirect-lookup": "à¬àà¬à¬¨àତà:",
@@ -2897,7 +2890,6 @@
"redirect-not-exists": "ମàଳàà ମିଳିଲା ନାହିà¬",
"fileduplicatesearch": "à¬à¬¹à¬¾à¬° ନà¬à¬² ପàଷàଠା à¬àà¬à¬¿à¬¬à ।",
"fileduplicatesearch-summary": "ହାସà ମàଲààà¬à ନàଠଦàà¬à¬¥à¬° ଥିବା ଫାà¬à¬² à¬àà¬à¬¨àତà ।",
- "fileduplicatesearch-legend": "ନà¬à¬² ପାà¬à¬ à¬àà¬à¬¨àତà ।",
"fileduplicatesearch-filename": "ଫାà¬à¬² ନାମ:",
"fileduplicatesearch-submit": "à¬àà¬à¬¨àତà",
"fileduplicatesearch-info": "$1 à $2 pixel ଫାà¬à¬² ପàରà¬à¬¾à¬°: $3 MIME ପàରà¬à¬¾à¬°: $4",
diff --git a/languages/i18n/pa.json b/languages/i18n/pa.json
index 407e9b9f44..9bb2e213f6 100644
--- a/languages/i18n/pa.json
+++ b/languages/i18n/pa.json
@@ -1356,8 +1356,6 @@
"categories": "ਸ਼à©à¨°à©à¨£à©à¨à¨",
"categories-submit": "ਦਿà¨à¨¾à¨",
"categoriesfrom": "à¨à¨¸à¨¤à©à¨ ਸ਼à©à¨°à© ਹà©à¨£ ਵਾਲ਼à©à¨à¨ à¨à©à¨à©à¨à¨°à©à¨à¨ ਵà¨à¨¾à¨:",
- "special-categories-sort-count": "à¨à¨¿à¨£à¨¤à© ਮà©à¨¤à¨¾à¨¬à¨ ਤਰਤà©à¨¬ ਦà©à¨µà©",
- "special-categories-sort-abc": "à¨
ੱà¨à¨°à¨¾à¨ ਮà©à¨¤à¨¾à¨¬à¨ ਤਰਤà©à¨¬ ਦਿà¨",
"deletedcontributions": "ਮਿà¨à¨¾à¨ ਹà©à¨ ਵਰਤà©à¨à¨à¨¾à¨° ਯà©à¨à¨¦à¨¾à¨¨",
"deletedcontributions-title": "ਮਿà¨à¨¾à¨ ਹà©à¨ ਵਰਤà©à¨à¨à¨¾à¨° ਯà©à¨à¨¦à¨¾à¨¨",
"sp-deletedcontributions-contribs": "ਯà©à¨à¨¦à¨¾à¨¨",
@@ -1920,8 +1918,8 @@
"exif-copyright": "à¨à¨¾à¨ªà©à¨°à¨¾à¨à¨ à¨à¨¾à¨à¨à¨²",
"exif-exifversion": "à¨à¨à¨à¨¼à¨¿à¨«à¨¼ ਦਾ ਰà©à¨ª",
"exif-colorspace": "ਰੰਠਸਪà©à¨¸",
- "exif-pixelydimension": "ਤਸਵà©à¨° ਦ੠à¨à©à©à¨¾à¨",
- "exif-pixelxdimension": "ਤਸਵà©à¨° ਦ੠ਲੰਬਾà¨",
+ "exif-pixelxdimension": "ਤਸਵà©à¨° ਦ੠à¨à©à©à¨¾à¨",
+ "exif-pixelydimension": "ਤਸਵà©à¨° ਦ੠ਲੰਬਾà¨",
"exif-usercomment": "ਵਰਤà©à¨à¨à¨¾à¨° ਦà©à¨à¨ à¨à¨¿à©±à¨ªà¨£à©à¨à¨",
"exif-relatedsoundfile": "ਮਿਲਦà©-à¨à©à¨²à¨¦à© à¨à¨¡à©à¨ ਫ਼ਾà¨à¨²",
"exif-datetimeoriginal": "ਡਾà¨à¨¾ ਦ੠ਬਣਨ ਦ੠ਮਿਤ੠à¨
ਤ੠ਸਮਾà¨",
@@ -2226,7 +2224,6 @@
"version-software-version": "ਵਰà¨à¨¨",
"version-entrypoints-header-entrypoint": "ਦਾà¨à¨¼à¨²à¨¾ ਬਿੰਦà©",
"version-entrypoints-header-url": "ਯà©.à¨à¨°.à¨à©±à¨²",
- "redirect-legend": "à¨à¨¿à¨¸à© ਸਫ਼੠à¨à¨¾à¨ ਫ਼ਾà¨à¨² ਵੱਲ ਰà©à¨¡à¨¾à¨à¨°à©à¨à¨ à¨à¨°à©",
"redirect-submit": "à¨à¨¾à¨",
"redirect-lookup": "ਲੱà¨à©:",
"redirect-value": "ਮà©à©±à¨²:",
@@ -2236,7 +2233,6 @@
"redirect-file": "ਫ਼ਾà¨à¨² ਦਾ ਨਾà¨",
"redirect-not-exists": "ਮà©à©±à¨² ਲੱà¨à¨¿à¨ ਨਹà©à¨",
"fileduplicatesearch": "ਨà¨à¨²à© ਫ਼ਾà¨à¨²à¨¾à¨ ਲਠà¨à©à¨ à¨à¨°à©",
- "fileduplicatesearch-legend": "à¨à¨¿à¨¸à© ਨà¨à¨² ਲਠà¨à©à¨à©",
"fileduplicatesearch-filename": "ਫ਼ਾà¨à¨² ਦਾ ਨਾà¨:",
"fileduplicatesearch-submit": "à¨à©à¨",
"fileduplicatesearch-noresults": "\"$1\" ਨਾਠਦ੠à¨à©à¨ ਫ਼ਾà¨à¨² ਨਹà©à¨ ਲੱà¨à©à¥¤",
diff --git a/languages/i18n/pam.json b/languages/i18n/pam.json
index 7060c0bbcd..6e60056fe3 100644
--- a/languages/i18n/pam.json
+++ b/languages/i18n/pam.json
@@ -955,8 +955,6 @@
"allpages-bad-ns": "Ing {{SITENAME}} ala lang pirinan lagyung (namespace) \"$1\".",
"categories": "Kategoriya",
"categoriespagetext": "Deng tutuking categoria atin lang bulung o media\n[[Special:UnusedCategories|Unused categories]] are not shown here.\nAlso see [[Special:WantedCategories|wanted categories]].",
- "special-categories-sort-count": "surian tukituki agpang keng bilang",
- "special-categories-sort-abc": "surian lang tukituki agpang keng kulitan",
"deletedcontributions": "Deng ambag da reng talagamit a mebura",
"deletedcontributions-title": "Deng ambag da reng talagamit a mebura",
"linksearch": "Suglung palual",
@@ -1454,8 +1452,8 @@
"exif-colorspace": "Pirinan kule (color space)",
"exif-componentsconfiguration": "Kabaldugan ning balang dake (component)",
"exif-compressedbitsperpixel": "Paralan/ayus pamamitpit larawan (image compression mode)",
- "exif-pixelydimension": "Ustung lapad ning larawan",
- "exif-pixelxdimension": "Ustung katas ning larawan",
+ "exif-pixelxdimension": "Ustung lapad ning larawan",
+ "exif-pixelydimension": "Ustung katas ning larawan",
"exif-usercomment": "Komentu da ring talagamit",
"exif-relatedsoundfile": "Makaugneng simpan a katni (audio file)",
"exif-datetimeoriginal": "Petsa ampong oras ning pamaglalang king data (data generation)",
@@ -1644,7 +1642,6 @@
"version-software-version": "Bersion",
"version-libraries-license": "Lisensya",
"fileduplicatesearch": "Maintun simpan (file) a kapareu",
- "fileduplicatesearch-legend": "Maintun kapareu",
"fileduplicatesearch-filename": "Lagyungsimpan (filename):",
"fileduplicatesearch-submit": "Maintun",
"fileduplicatesearch-result-1": "Ala yang eksaktung kapareu ing simpan (file) a \"$1\".",
diff --git a/languages/i18n/pl.json b/languages/i18n/pl.json
index 0a24d1bbd5..77a6e8b4f8 100644
--- a/languages/i18n/pl.json
+++ b/languages/i18n/pl.json
@@ -82,7 +82,10 @@
"PiotrAntosz",
"The Polish",
"Expert3222",
- "Mateuszek045"
+ "Mateuszek045",
+ "Sethakill",
+ "Mateon1",
+ "Jdx"
]
},
"tog-underline": "PodkreÅlenie linków:",
@@ -100,6 +103,7 @@
"tog-watchdefault": "Dodawaj do obserwowanych strony i pliki, które edytujÄ",
"tog-watchmoves": "Dodawaj do obserwowanych strony i pliki, które przenoszÄ",
"tog-watchdeletion": "Dodawaj do obserwowanych strony i pliki, które usuwam",
+ "tog-watchuploads": "Dodawaj do obserwowanych przesyÅane przeze mnie nowe pliki",
"tog-watchrollback": "Dodawaj do obserwowanych strony, w których {{GENDER:|wycofaÅem|wycofaÅam}} edycjÄ",
"tog-minordefault": "Wszystkie edycje domyÅlnie oznaczaj jako drobne",
"tog-previewontop": "Pokazuj podglÄ
d powyżej obszaru edycji",
@@ -542,7 +546,7 @@
"noemail": "Brak zdefiniowanego adresu eâmail dla użytkownika â$1â.",
"noemailcreate": "Musisz podaÄ prawidÅowy adres eâmail",
"passwordsent": "Nowe hasÅo zostaÅo wysÅane na adres eâmail użytkownika â$1â.\nPo otrzymaniu go zaloguj siÄ ponownie.",
- "blocked-mailpassword": "Twój adres IP zostaÅ zablokowany i nie możesz używaÄ funkcji odzyskiwania hasÅa z powodu możliwoÅci jej nadużywania.",
+ "blocked-mailpassword": "Edycja z twojego adresu IP jest zablokowana. Aby zapobiec nadużyciom, dla tego adresu IP funkcja odzyskiwania hasÅa nie jest możliwa.",
"eauthentsent": "Potwierdzenie zostaÅo wysÅane na adres eâmail.\nZanim jakiekolwiek inne wiadomoÅci zostanÄ
wysÅane na ten adres, należy wykonaÄ zawarte w mailu instrukcje. Potwierdzisz w ten sposób, że ten adres eâmail należy do Ciebie.",
"throttled-mailpassword": "Przypomnienie hasÅa zostaÅo już wysÅane w ciÄ
gu {{PLURAL:$1|ostatniej godziny|ostatnich $1 godzin}}.\nAby zapobiec nadużyciom nadużyÄ możliwoÅÄ wysyÅania przypomnieÅ zostaÅa ograniczona do jednego na {{PLURAL:$1|godzinÄ|$1 godziny|$1 godzin}}.",
"mailerror": "W trakcie wysyÅania wiadomoÅci eâmail wystÄ
piÅ bÅÄ
d: $1",
@@ -582,13 +586,31 @@
"changepassword-success": "Twoje hasÅo zostaÅo zmienione!",
"changepassword-throttled": "Ostatnio zbyt wiele razy próbowaÅeÅ zalogowaÄ siÄ na to konto.\nOdczekaj $1, zanim ponowisz próbÄ.",
"botpasswords": "HasÅa bota",
+ "botpasswords-summary": "HasÅa bota pozwalajÄ
na dostÄp do konta użytkownika za poÅrednictwem interfejsu API bez korzystania z danych konta. Uprawnienia uczestnika przy użyciu hasÅa bota mogÄ
byÄ ograniczone.\n\nJeÅli nie wiesz, dlaczego miaÅbyÅ je tworzyÄ, nie powinieneÅ tego robiÄ. Nikt nie powinien prosiÄ CiÄ o utworzyÄ i podanie tego hasÅa.",
+ "botpasswords-disabled": "HasÅa robotów zostaÅy wyÅÄ
czone.",
+ "botpasswords-no-central-id": "Aby użyÄ hasÅa robotów, musisz byÄ zalogowany na koncie uniwersalnym.",
+ "botpasswords-existing": "IstniejÄ
ce hasÅo bota",
+ "botpasswords-createnew": "Stwórz nowe hasÅo bota",
+ "botpasswords-editexisting": "Edytuj istniejÄ
ce hasÅo bota",
"botpasswords-label-appid": "Nazwa bota:",
"botpasswords-label-create": "Utwórz",
"botpasswords-label-update": "Aktualizuj",
"botpasswords-label-cancel": "Anuluj",
"botpasswords-label-delete": "UsuÅ",
"botpasswords-label-resetpassword": "Zresetuj hasÅo",
+ "botpasswords-label-grants": "Zastosowane uprawnienia:",
+ "botpasswords-label-restrictions": "Ograniczenia użytkowania:",
"botpasswords-label-grants-column": "Przyznane",
+ "botpasswords-bad-appid": "Nazwa bota \"$1\" nie jest prawidÅowa.",
+ "botpasswords-created-title": "HasÅo bota stworzone",
+ "botpasswords-created-body": "HasÅo bota \"$1\" użytkownika \"$2\" zostaÅo utworzone.",
+ "botpasswords-updated-title": "HasÅo bota zaktualizowane",
+ "botpasswords-updated-body": "HasÅo bota \"$1\" użytkownika \"$2\" zostaÅo zaktualizowane.",
+ "botpasswords-deleted-title": "HasÅo bota usuniÄte",
+ "botpasswords-deleted-body": "HasÅo bota \"$1\" użytkownika \"$2\" zostaÅo usuniÄte.",
+ "botpasswords-no-provider": "BotPasswordsSessionProvider nie jest dostÄpne.",
+ "botpasswords-restriction-failed": "Logowanie nie powiodÅo siÄ z powodu ograniczeÅ na hasÅo bota.",
+ "botpasswords-not-exist": "Użytkownik \"$1\" nie ma hasÅa dla bota o nazwie \"$2\".",
"resetpass_forbidden": "HasÅa nie mogÄ
zostaÄ zmienione",
"resetpass-no-info": "Musisz byÄ zalogowany, by uzyskaÄ bezpoÅredni dostÄp do tej strony.",
"resetpass-submit-loggedin": "ZmieÅ hasÅo",
@@ -729,7 +751,7 @@
"copyrightwarning2": "Wszelki wkÅad na {{SITENAME}} może byÄ edytowany, zmieniany lub usuniÄty przez innych użytkowników.\nJeÅli nie chcesz, żeby Twój tekst byÅ dowolnie zmieniany przez każdego i rozpowszechniany bez ograniczeÅ, nie umieszczaj go tutaj. \nZapisujÄ
c swojÄ
edycjÄ, oÅwiadczasz, że ten tekst jest Twoim dzieÅem lub pochodzi z materiaÅów dostÄpnych na warunkach ''domeny publicznej'' lub kompatybilnych (zobacz także $1).\n'''PROSZÄ NIE WPROWADZAÄ MATERIAÅÃW CHRONIONYCH PRAWEM AUTORSKIM BEZ POZWOLENIA WÅAÅCICIELA!'''",
"editpage-cannot-use-custom-model": "Model zawartoÅci tej strony nie może byÄ zmieniony.",
"longpageerror": "'''BÅÄ
d! Wprowadzony przez Ciebie tekst ma {{PLURAL:$1|1 kilobajt|$1 kilobajty|$1 kilobajtów}}. DÅugoÅÄ tekstu nie może przekraczaÄ {{PLURAL:$2|1 kilobajt|$2 kilobajty|$2 kilobajtów}}. Tekst nie może byÄ zapisany.'''",
- "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 systemu, który zablokowaÅ bazÄ, podaÅ nastÄpujÄ
cy powód: $1",
+ "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żesz skopiowaÄ jÄ
do pliku, aby móc zapisaÄ jÄ
później. \n\nAdministrator systemu, który zablokowaÅ bazÄ, podaÅ nastÄpujÄ
cy powód: $1",
"protectedpagewarning": "'''Uwaga! MożliwoÅÄ modyfikacji tej strony zostaÅa zabezpieczona. MogÄ
jÄ
edytowaÄ jedynie użytkownicy z uprawnieniami administratora.'''\nOstatni wpis z rejestru jest pokazany poniżej.",
"semiprotectedpagewarning": "'''Uwaga!''' Ta strona zostaÅa zabezpieczona i tylko zarejestrowani użytkownicy mogÄ
jÄ
edytowaÄ.\nOstatni wpis z rejestru jest pokazany poniżej.",
"cascadeprotectedwarning": "Uwaga: 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:",
@@ -913,6 +935,7 @@
"mergehistory-fail-bad-timestamp": "Znacznik czasu jest nieprawidÅowy.",
"mergehistory-fail-invalid-source": "Strona źródÅowa jest nieprawidÅowa.",
"mergehistory-fail-invalid-dest": "Strona docelowa jest nieprawidÅowa.",
+ "mergehistory-fail-permission": "Brak uprawnieÅ aby poÅÄ
czyÄ historiÄ.",
"mergehistory-fail-self-merge": "Strona źródÅowa i docelowa sÄ
takie same.",
"mergehistory-fail-toobig": "Nie można poÅÄ
czyÄ historii, gdyż wymagaÅoby to przeniesienia wiÄcej niż maksymalnej dopuszczalnej liczby $1 {{PLURAL:$1|wersji}}.",
"mergehistory-no-source": "Strona źródÅowa $1 nie istnieje.",
@@ -1355,9 +1378,9 @@
"recentchangeslinked-page": "TytuÅ strony:",
"recentchangeslinked-to": "Pokaż zmiany nie na stronach linkowanych, a na stronach linkujÄ
cych do podanej strony",
"recentchanges-page-added-to-category": "dodano [[:$1]] do kategorii",
- "recentchanges-page-added-to-category-bundled": "dodano [[:$1]] oraz {{PLURAL:$2|jednÄ
stronÄ|$2 strony|$2 stron}} do kategorii",
+ "recentchanges-page-added-to-category-bundled": "dodano [[:$1]] do kategorii, [[Special:WhatLinksHere/$1|ta strona jest zawarta w innych stronach]]",
"recentchanges-page-removed-from-category": "usuniÄto [[:$1]] z kategorii",
- "recentchanges-page-removed-from-category-bundled": "usuniÄto [[:$1]] oraz {{PLURAL:$2|jednÄ
stronÄ|$2 strony|$2 stron}} z kategorii",
+ "recentchanges-page-removed-from-category-bundled": "usuniÄto [[:$1]] z kategorii, [[Special:WhatLinksHere/$1|ta strona jest zawarta w innych stronach]]",
"autochange-username": "Automatyczna zmiana MediaWiki",
"upload": "PrzeÅlij plik",
"uploadbtn": "PrzeÅlij plik",
@@ -1426,6 +1449,7 @@
"uploaddisabledtext": "MożliwoÅÄ przesyÅania plików zostaÅa wyÅÄ
czona.",
"php-uploaddisabledtext": "PrzesyÅanie plików PHP zostaÅo zablokowane. Sprawdź ustawienie âfile_uploadsâ.",
"uploadscripted": "Plik zawiera kod HTML lub skrypt, który może zostaÄ bÅÄdnie zinterpretowany przez przeglÄ
darkÄ internetowÄ
.",
+ "upload-scripted-pi-callback": "Nie można przesÅaÄ pliku, zawierajÄ
cego instrukcjÄ obsÅugi arkusza stylów XML.",
"uploaded-script-svg": "Znaleziono element skryptowy â$1â we przesyÅanym pliku SVG.",
"uploaded-hostile-svg": "Znaleziono niebezpieczny kod CSS w przesyÅanym pliku SVG.",
"uploadscriptednamespace": "Ten plik SVG zawiera niedozwolonÄ
przestrzeÅ nazw '$1'",
@@ -1440,7 +1464,7 @@
"upload-description": "Opis pliku",
"upload-options": "Opcje przesyÅania",
"watchthisupload": "Obserwuj ten plik",
- "filewasdeleted": "Plik o tej nazwie istniaÅ, ale zostaÅ usuniÄty.\nZanim zaÅadujesz go ponownie, sprawdź $1.",
+ "filewasdeleted": "Plik o tej nazwie już istniaÅ, ale zostaÅ usuniÄty.\nZanim zaÅadujesz go ponownie, sprawdź $1.",
"filename-thumb-name": "Nazwa pliku wskazuje na to, że próbujesz przesÅaÄ miniaturkÄ obrazka. Prosimy nie przesyÅaÄ miniaturek w ramach tej samej wiki. JeÅli jest to konieczne, to zmieÅ nazwÄ na bardziej opisowÄ
(w szczególnoÅci takÄ
, w której nie ma prefiksu typowego dla miniaturek).",
"filename-bad-prefix": "Nazwa pliku, który przesyÅasz, zaczyna siÄ od '''â$1â'''. Jest to nazwa zazwyczaj przypisywana automatycznie przez cyfrowe aparaty fotograficzne, która nie informuje o zawartoÅci pliku.\nZmieÅ nazwÄ pliku na bardziej opisowÄ
.",
"filename-prefix-blacklist": " # \n# SkÅadnia jest nastÄpujÄ
ca:\n# * Wszystko od znaku \"#\" do koÅca linii uznawane jest za komentarz\n# * Każda niepusta linia zawiera poczÄ
tek nazwy pliku domyÅlnie wykorzystywany przez aparaty cyfrowe\nCIMG # Casio\nDSC_ # Nikon\nDSCF # Fuji\nDSCN # Nikon\nDUW # niektóre telefony komórkowe\nIMG # ogólny\nJD # Jenoptik\nMGP # Pentax\nPICT # wiele różnych\n # ",
@@ -1525,6 +1549,7 @@
"uploadstash-badtoken": "Operacja nie powiodÅa siÄ. ByÄ może Twoje upoważnienie do edytowania wygasÅo. Spróbuj ponownie.",
"uploadstash-errclear": "Czyszczenie plików nie powiodÅo siÄ.",
"uploadstash-refresh": "OdÅwież listÄ plików",
+ "uploadstash-thumbnail": "pokaż miniaturkÄ",
"invalid-chunk-offset": "NieprawidÅowe przesuniÄcie fragmentu",
"img-auth-accessdenied": "Odmowa dostÄpu",
"img-auth-nopathinfo": "Brak PATH_INFO.\nSerwer nie zostaÅ skonfigurowany, tak aby przekazywaÅ tÄ informacjÄ.\nMożliwe, że jest oparty na CGI i nie może obsÅugiwaÄ img_auth.\nWiÄcej o informacji o autoryzacji grafik na https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Image_Authorization.",
@@ -1784,6 +1809,7 @@
"apisandbox-reset": "WyczyÅÄ",
"apisandbox-retry": "Ponów próbÄ",
"apisandbox-loading": "Åadowanie informacji o module API â$1ââ¦",
+ "apisandbox-load-error": "WystÄ
piÅ bÅÄ
d podczas pobierania informacji dla moduÅu API â$1â: $2",
"apisandbox-no-parameters": "Ten moduŠAPI nie posiada parametrów.",
"apisandbox-helpurls": "Linki pomocy",
"apisandbox-examples": "PrzykÅady",
@@ -1798,6 +1824,7 @@
"apisandbox-results": "Wyniki",
"apisandbox-sending-request": "WysyÅanie zapytania APIâ¦",
"apisandbox-loading-results": "Pobieranie wyników API...",
+ "apisandbox-results-error": "WystÄ
piÅ bÅÄ
d podczas pobierania odpowiedzi na zapytanie API: $1.",
"apisandbox-request-url-label": "URL zapytania:",
"apisandbox-request-time": "Czas przetwarzania zapytania: {{PLURAL:$1|$1 ms}}",
"apisandbox-results-fixtoken": "Popraw token i wyÅlij ponownie",
@@ -1841,8 +1868,6 @@
"categories-submit": "Pokaż",
"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:",
- "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",
@@ -2217,6 +2242,7 @@
"ipb-unblock": "Odblokuj użytkownika lub adres IP",
"ipb-blocklist": "Zobacz istniejÄ
ce blokady",
"ipb-blocklist-contribs": "WkÅad {{GENDER:$1|$1}}",
+ "ipb-blocklist-duration-left": "pozostaÅo $1",
"unblockip": "Odblokuj użytkownika",
"unblockiptext": "Użyj poniższego formularza, by przywróciÄ możliwoÅÄ edycji z wczeÅniej zablokowanego adresu IP lub użytkownikowi.",
"ipusubmit": "Odblokuj",
@@ -2458,11 +2484,7 @@
"import-logentry-upload-detail": "$1 {{PLURAL:$1|wersja|wersje|wersji}}",
"import-logentry-interwiki-detail": "$1 {{PLURAL:$1|wersja|wersje|wersji}} z $2",
"javascripttest": "Testowanie JavaScript",
- "javascripttest-pagetext-noframework": "Ta strona jest zarezerwowana dla wykonywania testów JavaScript.",
- "javascripttest-pagetext-unknownframework": "Nieznany framework testowania â$1â.",
"javascripttest-pagetext-unknownaction": "Nieznana akcja \"$1\".",
- "javascripttest-pagetext-frameworks": "Wybierz jeden z nastÄpujÄ
cych frameworków testowania: $1",
- "javascripttest-pagetext-skins": "Wybierz skórkÄ, na której chcesz uruchomiÄ testy:",
"javascripttest-qunit-intro": "Zobacz [$1 dokumentacjÄ testów] na mediawiki.org.",
"tooltip-pt-userpage": "{{GENDER:|Moja}} strona osobista",
"tooltip-pt-anonuserpage": "Strona użytkownika dla adresu IP, spod którego edytujesz",
@@ -2727,8 +2749,8 @@
"exif-colorspace": "PrzestrzeŠkolorów",
"exif-componentsconfiguration": "Znaczenie skÅadowych",
"exif-compressedbitsperpixel": "Skompresowanych bitów na piksel",
- "exif-pixelydimension": "PrawidÅowa szerokoÅÄ obrazu",
- "exif-pixelxdimension": "PrawidÅowa wysokoÅÄ obrazu",
+ "exif-pixelxdimension": "SzerokoÅÄ obrazu",
+ "exif-pixelydimension": "WysokoÅÄ obrazu",
"exif-usercomment": "Komentarz użytkownika",
"exif-relatedsoundfile": "PowiÄ
zany plik audio",
"exif-datetimeoriginal": "Data i czas utworzenia oryginaÅu",
@@ -3096,7 +3118,7 @@
"autoredircomment": "Przekierowanie do [[$1]]",
"autosumm-new": "Utworzono nowÄ
stronÄ \"$1\"",
"autosumm-newblank": "Utworzono pustÄ
stronÄ",
- "size-bytes": "$1 B",
+ "size-bytes": "$1 {{PLURAL:$1|bajt|bajty|bajtów}}",
"size-kilobytes": "$1 KB",
"size-megabytes": "$1 MB",
"size-gigabytes": "$1 GB",
@@ -3211,8 +3233,7 @@
"version-libraries-description": "Opis",
"version-libraries-authors": "Autorzy",
"redirect": "Przekierowanie z identyfikatora pliku, użytkownika, strony, wersji lub wpisu rejestru",
- "redirect-legend": "Przekieruj do pliku lub strony",
- "redirect-summary": "Ta strona specjalna przekierowuje do: pliku (o podanej nazwie), do strony (o podanym numerze wersji lub identyfikatorze strony) albo do strony użytkownika (o podanym identyfikatorze numerycznym). Sposób użycia: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revision/328429]] albo [[{{#Special:Redirect}}/user/101]].",
+ "redirect-summary": "Ta strona specjalna przekierowuje do: pliku (o podanej nazwie), do strony (o podanym numerze wersji lub identyfikatorze strony), do strony użytkownika (o podanym identyfikatorze numerycznym) albo do rejestru (o podanym numerze akcji). Sposób użycia: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revision/328429]], [[{{#Special:Redirect}}/user/101]] albo [[{{#Special:Redirect}}/logid/186]].",
"redirect-submit": "Przejdź",
"redirect-lookup": "Wyszukaj:",
"redirect-value": "WartoÅÄ:",
@@ -3220,10 +3241,10 @@
"redirect-page": "Identyfikator strony",
"redirect-revision": "Wersja strony",
"redirect-file": "Nazwa pliku",
+ "redirect-logid": "ID rejestru",
"redirect-not-exists": "Nie znaleziono wartoÅci",
"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-submit": "Szukaj",
"fileduplicatesearch-info": "$1 Ã $2 pikseli WielkoÅÄ pliku: $3 Typ MIME: $4",
@@ -3421,7 +3442,7 @@
"logentry-protect-protect-cascade": "$1 {{GENDER:$2|zabezpieczyÅ|zabezpieczyÅa|zabezpieczyÅ(a)}} $3 $4 [kaskadowo]",
"logentry-protect-modify": "$1 {{GENDER:$2|zmieniÅ|zmieniÅa|zmieniÅ(a)}} poziom zabezpieczenia dla $3 $4",
"logentry-protect-modify-cascade": "$1 {{GENDER:$2|zmieniÅ|zmieniÅa|zmieniÅ(a)}} poziom zabezpieczenia dla $3 $4 [kaskadowo]",
- "logentry-rights-rights": "$1 {{GENDER:$2|zmieniÅ|zmieniÅa}} przynależnoÅÄ $3 do grup ($4 â $5)",
+ "logentry-rights-rights": "$1 {{GENDER:$2|zmieniÅ|zmieniÅa|zmieniÅ(a)}} przynależnoÅÄ {{GENDER:$6|$3}} do grupy z $4 do $5",
"logentry-rights-rights-legacy": "$1 {{GENDER:$2|zmieniÅ|zmieniÅa}} przynależnoÅÄ $3 do grup",
"logentry-rights-autopromote": "$1 automatycznie {{GENDER:$2|zmieniÅ|zmieniÅa}} przynależnoÅÄ ($4 â $5)",
"logentry-upload-upload": "$1 {{GENDER:$2|przesÅaÅ|przesÅaÅa}} $3",
@@ -3514,6 +3535,7 @@
"api-error-unknownerror": "Nieznany bÅÄ
d: â$1â",
"api-error-uploaddisabled": "Na tej wiki przesyÅanie zostaÅo wyÅÄ
czone.",
"api-error-verification-error": "Plik może byÄ uszkodzony lub nazwa pliku ma nieprawidÅowe rozszerzenie.",
+ "api-error-was-deleted": "Plik o tej nazwie już istniaÅ, ale zostaÅ usuniÄty.",
"duration-seconds": "$1 {{PLURAL:$1|sekunda|sekundy|sekund}}",
"duration-minutes": "$1 {{PLURAL:$1|minuta|minuty|minut}}",
"duration-hours": "$1 {{PLURAL:$1|godzina|godziny|godzin}}",
@@ -3551,6 +3573,7 @@
"expand_templates_generate_rawhtml": "Pokaż surowy HTML",
"expand_templates_preview": "PodglÄ
d",
"expand_templates_preview_fail_html": "Ponieważ {{SITENAME}} ma wÅÄ
czony surowy kod HTML i zaistniaÅa strata danych z sesji, podglÄ
d jest ukryty jako zabezpieczenie przed atakiem JavaScript. \n\nJeÅli to jest próba sÅusznego podglÄ
du, proszÄ spróbowaÄ ponownie. \nJeÅli to nie pomoże â spróbuj [[Special:UserLogout|wylogowaÄ siÄ]] i zalogowaÄ ponownie, a także upewnij siÄ, że twoja przeglÄ
darka akceptuje ciasteczka z tej witryny.",
+ "expand_templates_input_missing": "Trzeba wpisaÄ jakiÅ tekst.",
"pagelanguage": "Zmiana jÄzyka strony",
"pagelang-name": "Strona",
"pagelang-language": "JÄzyk",
@@ -3601,6 +3624,7 @@
"special-characters-group-ipa": "IPA",
"special-characters-group-symbols": "Symbole",
"special-characters-group-greek": "Greckie",
+ "special-characters-group-greekextended": "Greckie (rozszerzony)",
"special-characters-group-cyrillic": "Cyrylica",
"special-characters-group-arabic": "Arabskie",
"special-characters-group-arabicextended": "Arabskie (rozszerzony)",
@@ -3624,5 +3648,30 @@
"mw-widgets-titleinput-description-new-page": "strona jeszcze nie istnieje",
"mw-widgets-titleinput-description-redirect": "przekierowanie do $1",
"api-error-blacklisted": "Wybierz inny, opisowy tytuÅ.",
- "randomrootpage": "Losowa strona (bez podstron)"
+ "sessionmanager-tie": "Nie można ÅÄ
czyÄ kilku rodzajów uwierzytelniania dla zapytania: $1.",
+ "sessionprovider-mediawiki-session-cookiesessionprovider": "sesje na podstawie cookie",
+ "sessionprovider-nocookies": "ByÄ może cookies sÄ
wyÅÄ
czone. Upewnij siÄ, że masz wÅÄ
czone cookies i zacznij od nowa.",
+ "randomrootpage": "Losowa strona (bez podstron)",
+ "log-action-filter-block": "Rodzaj blokady:",
+ "log-action-filter-delete": "Rodzaj usuniÄcia:",
+ "log-action-filter-protect": "Rodzaj zabezpieczenia:",
+ "log-action-filter-upload": "Rodzaj przesÅanych:",
+ "log-action-filter-all": "Wszystkie",
+ "log-action-filter-block-block": "Zablokowanie",
+ "log-action-filter-block-reblock": "Zmiana blokady",
+ "log-action-filter-block-unblock": "Odblokowanie",
+ "log-action-filter-delete-delete": "UsuniÄcie strony",
+ "log-action-filter-delete-restore": "Odtworzenie strony",
+ "log-action-filter-delete-event": "UsuniÄcie wpisu rejestru",
+ "log-action-filter-delete-revision": "UsuniÄcie wersji",
+ "log-action-filter-import-interwiki": "Import transwiki",
+ "log-action-filter-managetags-create": "Utworzenie znacznika",
+ "log-action-filter-managetags-delete": "UsuniÄcie znacznika",
+ "log-action-filter-managetags-activate": "Aktywacja znacznika",
+ "log-action-filter-managetags-deactivate": "Deaktywacja znacznika",
+ "log-action-filter-protect-protect": "Zabezpieczenie",
+ "log-action-filter-protect-modify": "Zmiana zabezpieczenia",
+ "log-action-filter-protect-unprotect": "Odbezpieczenie",
+ "log-action-filter-upload-upload": "Nowe przesÅane",
+ "log-action-filter-upload-overwrite": "PrzesÅane ponownie"
}
diff --git a/languages/i18n/pms.json b/languages/i18n/pms.json
index 305806f391..f127930f88 100644
--- a/languages/i18n/pms.json
+++ b/languages/i18n/pms.json
@@ -1656,8 +1656,6 @@
"categories": "Categorìe",
"categoriespagetext": "{{PLURAL:$1|Costa categorìa a conten|Coste categorìe a conten-o}} dle pà gine ò dj'archivi.\n[[Special:UnusedCategories|Le categorìe nen dovrà ]] a son pa mostrà ambelessì.\nCh'a bèica ëdcò [[Special:WantedCategories|le categorìe domandà ]].",
"categoriesfrom": "Smon-e le categorìe an partend da:",
- "special-categories-sort-count": "ordiné për nùmer",
- "special-categories-sort-abc": "rangé la lista an órdin alfabétich",
"deletedcontributions": "Modìfiche faite da utent scancelà ",
"deletedcontributions-title": "Modìfiche faite da utent scancelà ",
"sp-deletedcontributions-contribs": "contribussion",
@@ -2240,11 +2238,7 @@
"import-logentry-upload-detail": "$1 {{PLURAL:$1|revision}} amportà ",
"import-logentry-interwiki-detail": "$1 {{PLURAL:$1|revision}} amportà da $2",
"javascripttest": "Preuva ëd JavaScript",
- "javascripttest-pagetext-noframework": "Costa pà gina a l'é arservà për fé dle preuve JavaScript.",
- "javascripttest-pagetext-unknownframework": "Strutura ëd preuva pa conossùa «$1».",
"javascripttest-pagetext-unknownaction": "Assion nen conossùa «$1».",
- "javascripttest-pagetext-frameworks": "Për piasì, ch'a serna un-a dle struture ëd preuva sì-dapress: $1",
- "javascripttest-pagetext-skins": "Ch'a serna na pel për fé le preuve:",
"javascripttest-qunit-intro": "Vëdde [$1 la documentassion dle preuve] dzora a mediawiki.org.",
"tooltip-pt-userpage": "Soa pà gina utent",
"tooltip-pt-anonuserpage": "La pà gina utent për l'IP con ël qual chiel a contribuiss",
@@ -2494,8 +2488,8 @@
"exif-colorspace": "Spassi dij color",
"exif-componentsconfiguration": "Significà ëd minca component",
"exif-compressedbitsperpixel": "Sistema ëd compression dle figure",
- "exif-pixelydimension": "Larghëssa dla figura",
- "exif-pixelxdimension": "Autëssa dla figura",
+ "exif-pixelxdimension": "Larghëssa dla figura",
+ "exif-pixelydimension": "Autëssa dla figura",
"exif-usercomment": "Nòte lìbere",
"exif-relatedsoundfile": "Archivi sonor colegà ",
"exif-datetimeoriginal": "Data e ora dla generassion dij dat",
@@ -2954,7 +2948,6 @@
"version-libraries-library": "Biblioteca",
"version-libraries-version": "Version",
"redirect": "Ridirigiù da archivi, utent, pà gina o ID ëd revision",
- "redirect-legend": "Ridirige a n'archivi o na pà gina",
"redirect-summary": "Costa pà gina special a ponta a n'archivi (dà it ël nòm dl'archivi), na pà gina (dà it n'ID ëd revision o n'ID ëd pà gina) o na pà gina d'utent (dà it n'identificativ numérich a l'utent). Usagi: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revision/328429]], o [[{{#Special:Redirect}}/user/101]].",
"redirect-submit": "Andé",
"redirect-lookup": "Arserca:",
@@ -2966,7 +2959,6 @@
"redirect-not-exists": "Valor nen trovà ",
"fileduplicatesearch": "Arsërca dj'archivi dobi",
"fileduplicatesearch-summary": "Arsërca dj'archivi dobi a parte dal valor d'ordinament.",
- "fileduplicatesearch-legend": "Arsërca ëd na dobia",
"fileduplicatesearch-filename": "Nòm dl'archivi:",
"fileduplicatesearch-submit": "Arsërca",
"fileduplicatesearch-info": "$1 à $2 pontin Amzure: $3 Sòrt MIME: $4",
diff --git a/languages/i18n/pnb.json b/languages/i18n/pnb.json
index 57c0b4290b..3ef60e7ef4 100644
--- a/languages/i18n/pnb.json
+++ b/languages/i18n/pnb.json
@@ -1357,8 +1357,6 @@
"categories": "گٹھاں",
"categoriespagetext": "تھÙÛ {{PLURAL:$1|Ú¯Ù¹Ú¾ Ú|گٹھاں Ú}} صÙÛ Ûا Ù
ÛÚÛاÛ\n[[Special:UnusedCategories|Ùاں ÙرتÛاں گٹھاں]] اÛØªÚ¾Û ÙئÛÚº Ø¯Ø³Û Ú¯ÛÛ\nاÛÛ ÙÛ ÙÛÚ©Ú¾Ù [[Special:WantedCategories|ÚائÛدÛاں گٹھاں]]",
"categoriesfrom": "گٹھاں Ùکھاؤ جÛÛÚÛاں شرÙع ÛÙÙ:",
- "special-categories-sort-count": "Ú¯ÙØªÛ Ø³Ø¹Ø§Ø¨ Ùا٠ÙکھرÛاں کرÙ",
- "special-categories-sort-abc": "ا ب Ø¯Û Ø³Ø¹Ø§Ø¨ Ùا٠ÙÙÚÙ",
"deletedcontributions": "Ùرت٠ÙاÙÛ Ø¯Û Ú©Ù
Ù
Ù¹Ø§Ø¯ØªÛ Ú¯ÛÛ",
"deletedcontributions-title": "Ùرت٠ÙاÙÛ Ø¯Û Ú©Ù
Ù
Ù¹Ø§Ø¯ØªÛ Ú¯ÛÛ",
"sp-deletedcontributions-contribs": " Ú©Ù
",
@@ -1878,10 +1876,6 @@
"import-logentry-upload-detail": "$1 {{PLURAL:$1|رÛÙÛÙ|رÛÙÛÙاں}}",
"import-logentry-interwiki-detail": "$1 {{PLURAL:$1|رÛÙÛÙ|رÛÙÛÙاں }} $2 تÙÚº",
"javascripttest": "JavaScript Ù¹ÛسٹÙÚ¯",
- "javascripttest-pagetext-noframework": "اÛÛ ØµÙÛ JavaScript Ù¹Ûسٹاں ÙØ¦Û Ø¨ÚاÛا Ú¯Ûا اÛÛ",
- "javascripttest-pagetext-unknownframework": "\"$1\" اÙجاÙا Ù¹ÛسٹÙÚ¯ ÙرÛÙ
ÙرکÛ",
- "javascripttest-pagetext-frameworks": "Ù
ÛرباÙÛ Ú©Ø±Ú©Û ØªÚ¾ÙÛ Ø¯ØªÛ Ú¯Û Ù¹Ûسٹ ÙرÛÙ
Ùرکاں ÚÙÚº اک ÚÙÙ : $1",
- "javascripttest-pagetext-skins": "اپÙÛ Ù¾Ø³Ùد دا Ú©ÙØ¦Û ÙÙ
ÙÙÛ ÚÙ٠جÛØ¯Û ØªÛ Ù¹Ûسٹ ÚÙÙ:",
"javascripttest-qunit-intro": "mediawiki.org ØªÛ [$1 ٹسٹÙÚ¯ ÚÙÚ©ÙÙ
ÙÙ¹ÛØ´Ù] ÙÛÚ©Ú¾ÙÛ",
"tooltip-pt-userpage": "Ù
Ûرا صÙÛ",
"tooltip-pt-anonuserpage": "Ùرت٠صÙÛ IP Ù¾ØªÛ ÙØ¦Û ØªØ³Û ØªØ¨Ø¯Û٠کر Ø±Û Ø§ÙÛÛÛ",
@@ -2065,8 +2059,8 @@
"exif-colorspace": "رÙÚ¯ سپÛس",
"exif-componentsconfiguration": "Ûر اÙÚ¯ دا Ù
Ø·Ùب",
"exif-compressedbitsperpixel": "اÙ
Ûج Ú©Ù
پرÛØ´Ù Ù
ÙÚ",
- "exif-pixelydimension": "اÙ
Ûج ÚÙÚائÛ",
- "exif-pixelxdimension": "اÙ
Ûج اÚائÛ",
+ "exif-pixelxdimension": "اÙ
Ûج ÚÙÚائÛ",
+ "exif-pixelydimension": "اÙ
Ûج اÚائÛ",
"exif-usercomment": "Ùرت٠آÙÛ Ø¯Û ØµÙاع",
"exif-relatedsoundfile": "رÙØ¯Û Ø¢ÚÛÙ ÙائÙ",
"exif-datetimeoriginal": "ترÛØ® ØªÛ ÙÛÙÛ ÚÛٹا جÙرÛش٠دا",
@@ -2466,7 +2460,6 @@
"version-software-version": "ÙرÚÙ",
"fileduplicatesearch": "دÙÛØ±Û ÙائÙاں Ø¯Û Ú©Ú¾Ùج کرÙ",
"fileduplicatesearch-summary": "دÙÛرÛاں ÙائÙاں Ø¯Û Ú©Ú¾Ùج ÛÛØ´ ÙÛÙÛÙ ØªÛ Ø§ÛÛ",
- "fileduplicatesearch-legend": "دÙÛØ±Û Ø¯Û Ú©Ú¾Ùج کرÙÛ",
"fileduplicatesearch-filename": "Ùائ٠دا Ùاں",
"fileduplicatesearch-submit": "Ú©Ú¾Ùج",
"fileduplicatesearch-info": "$1 à $2 پکس٠Ùائ٠Ùاپ: $3 Ù
ائÙ
ٹائپ: $4",
diff --git a/languages/i18n/prg.json b/languages/i18n/prg.json
index 3a71cc6ee6..698cbc1335 100644
--- a/languages/i18n/prg.json
+++ b/languages/i18n/prg.json
@@ -1078,8 +1078,6 @@
"allpages-bad-ns": "En {{SITENAME}} ni ast tītelin plattibi \"$1\".",
"categories": "KategÅrijas",
"categoriesfrom": "Waidinnais kategÅrijans pagaÅ«nintins sen:",
- "special-categories-sort-count": "rikaūjais pa gīrbin",
- "special-categories-sort-abc": "rikaÅ«jais pa alfabÄtan",
"deletedcontributions": "AupausintÄ tÄrpautajas Ändija",
"deletedcontributions-title": "AupausintÄ tÄrpautajas Ändija",
"sp-deletedcontributions-contribs": "Ändija",
@@ -1665,8 +1663,8 @@
"exif-colorspace": "BÄrwis plattibi",
"exif-componentsconfiguration": "KÅmpunÄntin zentlisnÄ",
"exif-compressedbitsperpixel": "Bildes kÅmpresiÅnis wÄ«ds",
- "exif-pixelydimension": "TikrÅmiskan bildes plattu",
- "exif-pixelxdimension": "TikrÅmiskan bildes aÅ«ktan",
+ "exif-pixelxdimension": "TikrÅmiskan bildes plattu",
+ "exif-pixelydimension": "TikrÅmiskan bildes aÅ«ktan",
"exif-usercomment": "TÄrpautajas kumentÄrai",
"exif-relatedsoundfile": "SÄitan audiÅ zÅ«rbrukis",
"exif-datetimeoriginal": "ÅriginÄlas teÄ«ksnas dÄtan be kerdÄ",
@@ -1907,7 +1905,6 @@
"version-software-version": "WersiÅni",
"fileduplicatesearch": "Laukīs dwigubbintans zūrbrukins",
"fileduplicatesearch-summary": "LaukÄ«s dwigubbintans zÅ«rbrukins pa tenÄisan kÅntrÅlingin summin.",
- "fileduplicatesearch-legend": "Laukīs dwigubbintans zūrbrukins",
"fileduplicatesearch-filename": "ZÅ«rbrukes pabilisnÄ:",
"fileduplicatesearch-submit": "Laukīs",
"fileduplicatesearch-info": "$1 à $2 pikselai Zūrbrukis debban: $3 MIME tīps: $4",
diff --git a/languages/i18n/ps.json b/languages/i18n/ps.json
index 8257539035..8e677db5a3 100644
--- a/languages/i18n/ps.json
+++ b/languages/i18n/ps.json
@@ -1415,8 +1415,6 @@
"categories-submit": "Úکار٠کÙÙ",
"categoriespagetext": "دا ÙاÙدÙÙÛ {{PLURAL:$1|ÙÛØ´ÙÙزÙ|ÙÛØ´ÙÙزÛ}} Ù
Ø®ÙÙÙ Ùا رسÙÙØ²Û Ø¯ÙتÙÛ ÙرÙ.\nدÙت٠[[Special:UnusedCategories|ÙاکارÛدÙÛ ÙÛØ´ÙÙزÛ]] Ù٠د٠Úکار٠شÙÙ.\n[[Special:WantedCategories|غÙÚتÙÛ ÙÛØ´ÙÙزÛ]] ÙÙ
ÙÚ¯ÙرÛ.",
"categoriesfrom": "Ùغ٠ÙÛØ´ÙÙØ²Û Ú©ØªÙ ÚÛ Ù¾ÛÙÛÚÙ Ù¾Ù:",
- "special-categories-sort-count": "د Ø´Ù
Ûر ÙÙ Ù
Ø®Û Ø§ÙÚÙ",
- "special-categories-sort-abc": "د ابÛÚ
Ù ÙÙ Ù
Ø®Û Ø§ÙÚÙ",
"deletedcontributions": "ÚÙÚ¯ÛدÙÛ Ú©Ø§Ø±Ù ÙÙÚÛ",
"deletedcontributions-title": "ÚÙÚ¯ÛدÙÛ Ú©Ø§Ø±Ù ÙÙÚÛ",
"sp-deletedcontributions-contribs": "ÙÙÚÛ",
@@ -1860,7 +1858,6 @@
"import-logentry-upload-detail": "$1 {{PLURAL:$1|بڼÙ|بڼÛ}} راÙÙÛÚدÛدÛ",
"javascripttest": "د جاÙا سکرÛپټ آزÙ
ÛÚت",
"javascripttest-pagetext-unknownaction": "ÙاÚ
رگÙد٠کÚÙÙ \"$1\".",
- "javascripttest-pagetext-skins": "د آزÙ
ÛÚتÙÙ٠د Ù¾ÙÙ Ú©ÙÙÙ Ùپار٠ÙÙÙ Ù¾ÙÚÛ Ùټاکئ:",
"tooltip-pt-userpage": "{{GENDER:|Ø³ØªØ§Ø³Û Ú©Ø§Ø±Ù}} Ù
Ø®",
"tooltip-pt-mytalk": "{{GENDER:|ستاسÛ}} د خبرÙاتر٠Ù
Ø®",
"tooltip-pt-preferences": "{{GENDER:|ستاسÛ}} غÙر٠تÙبÙÙÙ",
@@ -2071,8 +2068,8 @@
"exif-copyright": "د رÚت٠خاÙÙد",
"exif-exifversion": "Exif بڼÙ",
"exif-colorspace": "رÙÚ¯ تشÙاÙ",
- "exif-pixelydimension": "د اÙÚÙر سÙر",
- "exif-pixelxdimension": "د اÙÚÙر جگÙاÙÛ",
+ "exif-pixelxdimension": "د اÙÚÙر سÙر",
+ "exif-pixelydimension": "د اÙÚÙر جگÙاÙÛ",
"exif-usercomment": "د کار٠تبصرÛ",
"exif-relatedsoundfile": "اÚÙÙد٠غÚÙز٠دÙتÙÙ",
"exif-datetimeoriginal": "د اÙÙ
تÙÚ© د جÙÚÛدÙÛ Ùخت ا٠ÙÛÙ¼Ù",
@@ -2377,7 +2374,6 @@
"redirect-logid": "Ù¾ÛÚÙد ÙادÚت",
"redirect-not-exists": "ارزÚت Ù ÙÙ Ù
ÙÙد٠شÙ",
"fileduplicatesearch": "د دÙÙ Ú¯ÙÙ٠دÙتÙÙ Ù¾ÙÙ¼ÙÙ",
- "fileduplicatesearch-legend": "د دÙÙ Ú¯ÙÙ٠دÙتÙÙ Ù¾ÙÙ¼ÙÙ",
"fileduplicatesearch-filename": "د دÙتÙÛ ÙÙÙ
:",
"fileduplicatesearch-submit": "Ù¾ÙÙ¼Ù",
"fileduplicatesearch-info": "$1 à $2 Ù¾Ûکس٠د دÙتÙÛ Ú©ÚÙ: $3 ÚÙÙ MIME: $4",
@@ -2605,5 +2601,7 @@
"mw-widgets-dateinput-placeholder-month": "Ú©Ú©Ú©Ú©-Ù
Ù
",
"mw-widgets-titleinput-description-new-page": "تر اÙس٠پÙØ±Û Ø¯Ø§ Ù
Ø® ÙشتÙ",
"mw-widgets-titleinput-description-redirect": "$1 ت٠ÙرگرÚÛدÙÙ",
- "randomrootpage": "د ÙاټاکÙÛ Ø±ÙÚÛ Ù
Ø®"
+ "randomrootpage": "د ÙاټاکÙÛ Ø±ÙÚÛ Ù
Ø®",
+ "log-action-filter-all": "Ù¼ÙÙ",
+ "log-action-filter-block-block": "بÙدÙز ÙÚ¯ÙÙ"
}
diff --git a/languages/i18n/pt-br.json b/languages/i18n/pt-br.json
index 20b2d5e61f..6000918c08 100644
--- a/languages/i18n/pt-br.json
+++ b/languages/i18n/pt-br.json
@@ -94,7 +94,8 @@
"HenriqueCrang",
"Caçador de Palavras",
"Luk3",
- "Ryuu"
+ "Ryuu",
+ "Luan"
]
},
"tog-underline": "Sublinhar links:",
@@ -381,7 +382,7 @@
"nstab-user": "Página d{{GENDER:{{BASEPAGENAME}}|o usuário|a usuária|e usuário(a)}}",
"nstab-media": "Página de mÃdia",
"nstab-special": "Página especial",
- "nstab-project": "Página de projeto",
+ "nstab-project": "Página do projeto",
"nstab-image": "Arquivo",
"nstab-mediawiki": "Mensagem",
"nstab-template": "Predefinição",
@@ -811,14 +812,14 @@
"content-json-empty-object": "Objeto vazio",
"content-json-empty-array": "Array vazia",
"duplicate-args-warning": " Aviso: [[:$1]] está chamando [[:$2]] com mais de um valor para o parâmetro \"$3\". Será utilizado apenas o último valor fornecido.",
- "duplicate-args-category": "Páginas que utilizam argumentos duplicados ao chamar predefinições",
+ "duplicate-args-category": "Páginas com argumentos de predefinições duplicados",
"duplicate-args-category-desc": "A pagina contem modelos que usam argumentos duplicados, como {{foo|bar=1|bar=2}}
ou {{foo|bar|1=baz}}
.",
"expensive-parserfunction-warning": "Aviso: Esta página contém muitas chamadas a funções do analisador \"parser\".\n\nDeveria ter menos de $2 {{PLURAL:$2|chamada|chamadas}}. Neste momento {{PLURAL:$1|há $1 chamada|existem $1 chamadas}}.",
"expensive-parserfunction-category": "Páginas com muitas chamadas a funções do analisador \"parser\"",
"post-expand-template-inclusion-warning": "'''Aviso''': a soma do tamanho de inclusão de predefinições é muito grande.\nAlgumas predefinições não serão processadas.",
- "post-expand-template-inclusion-category": "Páginas onde a soma do tamanho de inclusão de predefinições é excedido",
+ "post-expand-template-inclusion-category": "Páginas com excesso de predefinições",
"post-expand-template-argument-warning": "Aviso: Esta página contém pelo menos um argumento de predefinição com um tamanho muito grande.\nEstes argumentos foram omitidos.",
- "post-expand-template-argument-category": "Páginas com omissões de argumentos em predefinições",
+ "post-expand-template-argument-category": "Páginas com argumentos de predefinições descartados",
"parser-template-loop-warning": "Ciclo de predefinições detectado: [[$1]]",
"parser-template-recursion-depth-warning": "O limite de profundidade de recursividade de predefinição foi ultrapassado ($1)",
"language-converter-depth-warning": "O limite de profundidade do conversor de lÃnguas excedeu a ($1)",
@@ -1560,6 +1561,7 @@
"uploadstash-badtoken": "Não foi possÃvel executar essa operação, talvez porque as suas credenciais de edição expiraram. Tente novamente.",
"uploadstash-errclear": "Não foi possÃvel apagar os arquivos.",
"uploadstash-refresh": "Atualizar a lista de arquivos",
+ "uploadstash-thumbnail": "ver miniatura",
"invalid-chunk-offset": "Deslocamento de fragmento inválido",
"img-auth-accessdenied": "Acesso negado",
"img-auth-nopathinfo": "PATH_INFO em falta.\nO seu servidor não está configurado para passar esta informação.\nPode ser baseado em CGI e não consegue suportar img_auth.\nConsulte a documentação em [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Image_Authorization Image Authorization].",
@@ -1854,8 +1856,6 @@
"categories-submit": "Exibir",
"categoriespagetext": "{{PLURAL:$1|A seguinte categoria contém|As seguintes contém}} páginas ou mÃdia.\n[[Special:UnusedCategories|Categorias não utilizadas]] não são mostradas aqui.\nVeja também [[Special:WantedCategories|categorias pedidas]].",
"categoriesfrom": "Listar categorias começando por:",
- "special-categories-sort-count": "ordenar por contagem",
- "special-categories-sort-abc": "ordenar alfabeticamente",
"deletedcontributions": "Edições eliminadas",
"deletedcontributions-title": "Contribuições eliminadas",
"sp-deletedcontributions-contribs": "contribuições",
@@ -2465,11 +2465,7 @@
"import-logentry-upload-detail": "{{PLURAL:$1|uma edição|$1 edições}}",
"import-logentry-interwiki-detail": "{{PLURAL:$1|$1 edição|$1 edições}} de $2",
"javascripttest": "Teste de JavaScript",
- "javascripttest-pagetext-noframework": "Esta página é exclusiva para testes de JavaScript.",
- "javascripttest-pagetext-unknownframework": "A estrutura de testes \"$1\" é desconhecida.",
"javascripttest-pagetext-unknownaction": "Ação desconhecida de $1",
- "javascripttest-pagetext-frameworks": "Escolha uma das seguintes estruturas de teste: $1",
- "javascripttest-pagetext-skins": "Escolha o tema para executar os testes:",
"javascripttest-qunit-intro": "Veja a [$1 documentação de testes] no mediawiki.org.",
"tooltip-pt-userpage": "Sua página de {{GENDER:|usuário|usuária|usuário(a)}}",
"tooltip-pt-anonuserpage": "A página de usuário para o ip com o qual você está editando",
@@ -2723,8 +2719,8 @@
"exif-colorspace": "Espaço de cor",
"exif-componentsconfiguration": "Significado de cada componente",
"exif-compressedbitsperpixel": "Modo de compressão de imagem",
- "exif-pixelydimension": "Largura da imagem",
- "exif-pixelxdimension": "Altura da imagem",
+ "exif-pixelxdimension": "Largura da imagem",
+ "exif-pixelydimension": "Altura da imagem",
"exif-usercomment": "Comentários de usuários",
"exif-relatedsoundfile": "arquivo áudio relacionado",
"exif-datetimeoriginal": "Data e hora de geração de dados",
@@ -3117,7 +3113,7 @@
"watchlisttools-edit": "Ver e editar a lista de páginas vigiadas",
"watchlisttools-raw": "Edição crua da lista de páginas vigiadas",
"signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|discussão]])",
- "timezone-local": "Localização",
+ "timezone-local": "Local",
"duplicate-defaultsort": "Aviso: A chave de ordenação padrão \"$2\" sobrepõe-se à anterior chave de ordenação padrão \"$1\".",
"duplicate-displaytitle": "Aviso: O tÃtulo exibido \"$2\" substituà o tÃtulo anterior \"$1\".",
"invalid-indicator-name": "Erro: O atributo indicador do status da página name
não deve estar vazio.",
@@ -3167,7 +3163,6 @@
"version-libraries-description": "Descrição",
"version-libraries-authors": "Autores",
"redirect": "Redirecionar por arquivo, usuário, página, revisão ou registro de identificação.",
- "redirect-legend": "Redirecionar para um arquivo ou página",
"redirect-summary": "Esta página especial redireciona a um arquivo (dado o nome do arquivo), a uma página (dado um ID de revisão ou ID da página) ou a uma página de usuário (dado o ID do usuário). Uso: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], or [[{{#Special:Redirect}}/user/101]].",
"redirect-submit": "Ir",
"redirect-lookup": "Buscar",
@@ -3179,7 +3174,6 @@
"redirect-not-exists": "Valor não encontrado",
"fileduplicatesearch": "Procurar por arquivos duplicados",
"fileduplicatesearch-summary": "Procure por arquivos duplicados tendo por base seu valor \"hash\".",
- "fileduplicatesearch-legend": "Procurar por duplicatas",
"fileduplicatesearch-filename": "Nome do arquivo:",
"fileduplicatesearch-submit": "Pesquisa",
"fileduplicatesearch-info": "$1 Ã $2 pixels Tamanho: $3 tipo MIME: $4",
diff --git a/languages/i18n/pt.json b/languages/i18n/pt.json
index 7a17015e34..51f26c16ff 100644
--- a/languages/i18n/pt.json
+++ b/languages/i18n/pt.json
@@ -68,7 +68,9 @@
"Jkb8",
"Ãnni",
"Diniscoelho",
- "Josep Maria Roca Peña"
+ "Josep Maria Roca Peña",
+ "Luan",
+ "Gato Preto"
]
},
"tog-underline": "Sublinhar ligações:",
@@ -86,6 +88,7 @@
"tog-watchdefault": "Adicionar as páginas e ficheiros que eu editar às minhas páginas vigiadas",
"tog-watchmoves": "Adicionar as páginas e ficheiros que eu mover às minhas páginas vigiadas",
"tog-watchdeletion": "Adicionar as páginas e ficheiros que eu eliminar às minhas páginas vigiadas",
+ "tog-watchuploads": "Adicionar novos ficheiros carregados por mim à minha lista de artigos vigiados",
"tog-watchrollback": "Adicionar páginas onde fiz uma reversão às minhas páginas vigiadas",
"tog-minordefault": "Por omissão, marcar todas as edições como menores",
"tog-previewontop": "Mostrar a antevisão antes da caixa de edição",
@@ -351,7 +354,7 @@
"nstab-user": "Página d{{GENDER:{{BASEPAGENAME}}|o utilizador|a utilizadora|e utilizador(a)}}",
"nstab-media": "Multimédia",
"nstab-special": "Página especial",
- "nstab-project": "Página de projeto",
+ "nstab-project": "Página do projeto",
"nstab-image": "Ficheiro",
"nstab-mediawiki": "Mensagem",
"nstab-template": "Predefinição",
@@ -523,7 +526,7 @@
"noemail": "Não foi registado um endereço de correio eletrónico para o utilizador \"$1\".",
"noemailcreate": "Tem de fornecer um endereço de correio eletrónico válido.",
"passwordsent": "Foi enviada uma palavra-passe nova para o endereço de correio eletrónico do utilizador \"$1\".\nVolte a iniciar sessão após recebê-la, por favor.",
- "blocked-mailpassword": "O seu endereço IP foi bloqueado e, portanto, não será possÃvel utilizar a função de recuperação da palavra-passe, para prevenir o uso abusivo.",
+ "blocked-mailpassword": "O seu endereço IP está bloqueado para edição. Para evitar abusos, não é permitido a utilização da recuperação de palavra-passe a partir deste endereço IP.",
"eauthentsent": "Foi enviada uma mensagem de confirmação para o endereço de correio eletrónico que especificou.\nAntes que seja enviada qualquer outra mensagem para a conta, terá de seguir as instruções na mensagem enviada, de modo a confirmar que a conta lhe pertence.",
"throttled-mailpassword": "Já foi enviada um email de recuperação de palavra-passe {{PLURAL:$1|na última hora|nas últimas $1 horas}}.\nPara prevenir abusos, só um email de recuperação de palavra-passe pode ser enviado a cada {{PLURAL:$1|hora|$1 horas}}.",
"mailerror": "Erro ao enviar correio electrónico: $1",
@@ -775,14 +778,14 @@
"content-json-empty-object": "Objeto vazio",
"content-json-empty-array": "Matriz vazia",
"duplicate-args-warning": "Aviso: [[:$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": "Páginas com argumentos de predefinições duplicados",
"duplicate-args-category-desc": "A página contém campos de predefinições que utilizam duplicatas de argumentos, tais como {{foo|bar=1|bar=2}}
ou {{foo|bar|1=baz}}
.",
"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}}.",
"expensive-parserfunction-category": "Páginas com demasiadas chamadas a funções exigentes",
"post-expand-template-inclusion-warning": "Aviso: O tamanho de inclusão de predefinições é demasiado grande, algumas predefinições não serão incluÃdas.",
- "post-expand-template-inclusion-category": "Páginas onde o tamanho de inclusão de predefinições é excedido",
+ "post-expand-template-inclusion-category": "Páginas com excesso de predefinições",
"post-expand-template-argument-warning": "Aviso: Esta página contém pelo menos um argumento de predefinição com um tamanho expandido demasiado grande.\nEstes argumentos foram omitidos.",
- "post-expand-template-argument-category": "Páginas com omissão de argumentos para predefinições",
+ "post-expand-template-argument-category": "Páginas com argumentos de predefinições descartados",
"parser-template-loop-warning": "Ciclo de predefinições detetado: [[$1]]",
"parser-template-recursion-depth-warning": "Foi excedido o limite da profundidade de recursividade nas predefinições ($1)",
"language-converter-depth-warning": "O limite de profundidade do conversor de idiomas excedeu a ($1)",
@@ -1359,9 +1362,9 @@
"recentchangeslinked-page": "Nome da página:",
"recentchangeslinked-to": "Inversamente, mostrar mudanças às páginas que contêm ligações para esta",
"recentchanges-page-added-to-category": "[[:$1]] foi adicionada à categoria",
- "recentchanges-page-added-to-category-bundled": "[[:$1]] e [[Special:WhatLinksHere/$1|{{PLURAL:$2|uma outra página|$2 outras páginas}}]] foram adicionadas à categoria",
+ "recentchanges-page-added-to-category-bundled": "[[:$1]] adicionada à categoria; [[Special:WhatLinksHere/$1|esta página está incluÃda noutras]]",
"recentchanges-page-removed-from-category": "[[:$1]] foi removida da categoria",
- "recentchanges-page-removed-from-category-bundled": "[[:$1]] e [[Special:WhatLinksHere/$1|{{PLURAL:$2|uma outra página|$2 outras páginas}}]] foram removidas da categoria",
+ "recentchanges-page-removed-from-category-bundled": "[[:$1]] removida da categoria; [[Special:WhatLinksHere/$1|esta página está incluÃda noutras]]",
"autochange-username": "Alteração automática do MediaWiki",
"upload": "Carregar ficheiro",
"uploadbtn": "Carregar ficheiro",
@@ -1528,6 +1531,7 @@
"uploadstash-badtoken": "Não foi possÃvel executar a operação. Talvez as suas credenciais de edição tenham expirado. Tente novamente.",
"uploadstash-errclear": "Não foi possÃvel apagar os ficheiros.",
"uploadstash-refresh": "Atualizar a lista de ficheiros",
+ "uploadstash-thumbnail": "ver miniatura",
"invalid-chunk-offset": "Deslocamento de fragmento inválido",
"img-auth-accessdenied": "Acesso negado",
"img-auth-nopathinfo": "PATH_INFO em falta.\nO seu servidor não está configurado para passar esta informação.\nPode ser baseado em CGI e não consegue suportar img_auth.\nConsulte a documentação em https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Image_Authorization.",
@@ -1799,6 +1803,7 @@
"apisandbox-results": "Resultados",
"apisandbox-request-url-label": "URL do pedido:",
"apisandbox-request-time": "Tempo de processamento: {{PLURAL:$1|$1 ms}}",
+ "apisandbox-alert-field": "O valor deste campo não é válido.",
"booksources": "Fontes bibliográficas",
"booksources-search-legend": "Pesquisar referências bibliográficas",
"booksources-search": "Pesquisar",
@@ -1837,8 +1842,6 @@
"categories-submit": "Mostrar",
"categoriespagetext": "{{PLURAL:$1|A seguinte categoria contém páginas ou ficheiros multimédia|As seguintes categorias contêm páginas ou ficheiros multimédia}}.\nAs [[Special:UnusedCategories|categorias não utilizadas]] não são apresentadas nesta lista.\nVeja também as [[Special:WantedCategories|categorias desejadas]].",
"categoriesfrom": "Mostrar categorias que comecem por:",
- "special-categories-sort-count": "ordenar por contagem",
- "special-categories-sort-abc": "ordenar alfabeticamente",
"deletedcontributions": "Edições eliminadas",
"deletedcontributions-title": "Edições eliminadas",
"sp-deletedcontributions-contribs": "contribuições",
@@ -2028,6 +2031,12 @@
"changecontentmodel-submit": "Alterar",
"changecontentmodel-success-title": "O modelo de conteúdo foi alterado",
"changecontentmodel-success-text": "O tipo de conteúdo de [[:$1]] foi alterado.",
+ "changecontentmodel-cannot-convert": "O conteúdo em [[:$1]] não pode ser convertido para um tipo de $2.",
+ "changecontentmodel-nodirectediting": "O modelo de conteúdo $1 não suporta edição direta",
+ "log-name-contentmodel": "Registo de alteração de modelo de conteúdo",
+ "log-description-contentmodel": "Eventos relacionados com os modelos de conteúdo de uma página",
+ "logentry-contentmodel-new": "$1 {{GENDER:$2|criou}} a página $3 com o modelo de conteúdo desconhecido \"$5\"",
+ "logentry-contentmodel-change": "$1 {{GENDER:$2|alterou}} o modelo de conteúdo da página $3 de \"$4\" para \"$5\"",
"logentry-contentmodel-change-revertlink": "reverter",
"logentry-contentmodel-change-revert": "reverter",
"protectlogpage": "Registo de proteção",
@@ -2209,6 +2218,7 @@
"ipb-unblock": "Desbloquear um utilizador ou endereço IP",
"ipb-blocklist": "Ver bloqueios em vigência",
"ipb-blocklist-contribs": "Contribuições de {{GENDER:$1|$1}}",
+ "ipb-blocklist-duration-left": "resta $1",
"unblockip": "Desbloquear utilizador",
"unblockiptext": "Utilize o formulário abaixo para restaurar o acesso de escrita de um endereço IP ou utilizador previamente bloqueado.",
"ipusubmit": "Remover este bloqueio",
@@ -2450,11 +2460,7 @@
"import-logentry-upload-detail": "$1 {{PLURAL:$1|edição importada|edições importadas}}",
"import-logentry-interwiki-detail": "$1 {{PLURAL:$1|edição importada|edições importadas}} de $2",
"javascripttest": "Teste de JavaScript",
- "javascripttest-pagetext-noframework": "Esta página é reservada para a execução de testes de JavaScript.",
- "javascripttest-pagetext-unknownframework": "Estrutura de testes \"$1\" desconhecida.",
"javascripttest-pagetext-unknownaction": "Ação \"$1\" desconhecida.",
- "javascripttest-pagetext-frameworks": "Escolha, por favor, uma das seguintes estruturas de teste: $1",
- "javascripttest-pagetext-skins": "Escolher um tema para executar os testes com:",
"javascripttest-qunit-intro": "Consulte a [ $1 documentação de testes] no mediawiki.org.",
"tooltip-pt-userpage": "A sua página de {{GENDER:|utilizador|utilizadora|utilizador(a)}}",
"tooltip-pt-anonuserpage": "A página de utilizador para o endereço IP que está a usar",
@@ -2714,8 +2720,8 @@
"exif-colorspace": "Espaço de cores",
"exif-componentsconfiguration": "Significado de cada componente",
"exif-compressedbitsperpixel": "Modo de compressão da imagem",
- "exif-pixelydimension": "Largura válida da imagem",
- "exif-pixelxdimension": "Altura válida da imagem",
+ "exif-pixelxdimension": "Largura da imagem",
+ "exif-pixelydimension": "Altura da imagem",
"exif-usercomment": "Comentários de utilizadores",
"exif-relatedsoundfile": "Ficheiro áudio relacionado",
"exif-datetimeoriginal": "Data e hora de geração de dados",
@@ -3093,7 +3099,7 @@
"watchlistedit-raw-done": "A sua lista de páginas vigiadas foi atualizada.",
"watchlistedit-raw-added": "{{PLURAL:$1|Foi adicionada uma página|Foram adicionadas $1 páginas}}:",
"watchlistedit-raw-removed": "{{PLURAL:$1|Foi removida uma página|Foram removidas $1 páginas}}:",
- "watchlistedit-clear-title": "Lista de páginas vigiadas limpa",
+ "watchlistedit-clear-title": "Limpar lista de páginas vigiadas",
"watchlistedit-clear-legend": "Limpar lista de páginas vigiadas",
"watchlistedit-clear-explain": "Todos os tÃtulos serão removidos da sua lista de páginas vigiadas.",
"watchlistedit-clear-titles": "Páginas:",
@@ -3156,8 +3162,7 @@
"version-libraries-description": "Descrição",
"version-libraries-authors": "Autores",
"redirect": "Redirecionar por ficheiro, utilizador, página, revisão, ou ID de registo",
- "redirect-legend": "Redirecionar para um ficheiro ou página",
- "redirect-summary": "Esta página especial redireciona para um ficheiro (dado o nome do ficheiro), para uma página (dado um ID de revisão ou página) ou para uma página de utilizador (dado um ID numérico do utilizador), ou para uma entrada do registo (dado o ID do registo). Utilização: [[{{#Special:Redirect}}/file/Example.jpg]], \n[[{{#Special:Redirect}}/page/64308]], [{{#Special:Redirect}}/revision/328429]], [[{{#Special:Redirect}}/user/101]], ou [[{{#Special:Redirect}}/logid/186]].",
+ "redirect-summary": "Esta página especial redireciona para um ficheiro (dado o nome do ficheiro), para uma página (dado um ID de revisão ou página) ou para uma página de utilizador (dado um ID numérico do utilizador), ou para uma entrada do registo (dado o ID do registo). Utilização: [[{{#Special:Redirect}}/file/Example.jpg]], \n[[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], [[{{#Special:Redirect}}/user/101]], ou [[{{#Special:Redirect}}/logid/186]].",
"redirect-submit": "Ir",
"redirect-lookup": "Pesquisa:",
"redirect-value": "Valor:",
@@ -3169,7 +3174,6 @@
"redirect-not-exists": "Valor não encontrado",
"fileduplicatesearch": "Ficheiros duplicados",
"fileduplicatesearch-summary": "Procure ficheiros duplicados tendo por base o seu resumo criptográfico.",
- "fileduplicatesearch-legend": "Procurar duplicados",
"fileduplicatesearch-filename": "Ficheiro:",
"fileduplicatesearch-submit": "Pesquisar",
"fileduplicatesearch-info": "$1 Ã $2 pixels Tamanho: $3 tipo MIME: $4",
@@ -3365,7 +3369,7 @@
"logentry-protect-protect-cascade": "$1 {{GENDER:$2|protegeu}} $3 $4 [em cascata]",
"logentry-protect-modify": "$1 {{GENDER:$2|alterou}} o nÃvel de proteção para $3 $4",
"logentry-protect-modify-cascade": "$1 {{GENDER:$2|alterou}} o nÃvel de proteção para $3 $4 [em cascata]",
- "logentry-rights-rights": "$1 modificou os privilégios do utilizador $3 de $4 para $5",
+ "logentry-rights-rights": "$1 {{GENDER:$2|modificou}} os privilégios {{GENDER:$3|do utilizador $3|da utilizadora $3|do(a) utilizador(a) $3}} de $4 para $5",
"logentry-rights-rights-legacy": "$1 alterou os grupos de $3",
"logentry-rights-autopromote": "$1 foi automaticamente {{GENDER:$2|promovido|promovida}} de $4 a $5",
"logentry-upload-upload": "$1 {{GENDER:$2|carregou}} $3",
@@ -3378,6 +3382,7 @@
"logentry-managetags-activate": "$1 {{GENDER:$2|ativou}} a etiqueta \"$4\" para uso de utilizadores e robôs.",
"logentry-managetags-deactivate": "$1 {{GENDER:$2|desativou}} a etiqueta \"$4\" para uso de utilizadores e robôs.",
"log-name-tag": "Registo de etiquetas",
+ "log-description-tag": "Esta página mostra utilizadores adicionam ou removem [[Special:Tags|etiquetas]] a partir de revisões individuais ou entradas de registo. O registo não lista ações relacionadas com as etiquetas quando estas ocorrem como parte de uma edição, eliminação ou ação semelhante.",
"logentry-tag-update-add-revision": "$1 {{GENDER:$2|adicionou}} {{PLURAL:$7|a etiqueta|as etiquetas}} $6 à revisão $4 da página $3",
"logentry-tag-update-add-logentry": "$1 {{GENDER:$2|adicionou}} {{PLURAL:$7|a etiqueta|as etiquetas}} $6 à entrada de registo $5 da página $3",
"logentry-tag-update-remove-revision": "$1 {{GENDER:$2|removeu}} {{PLURAL:$9|a etiqueta|as etiquetas}} $8 da revisão $4 da página $3",
@@ -3457,6 +3462,7 @@
"api-error-unknownerror": "Erro desconhecido: \"$1\".",
"api-error-uploaddisabled": "Esta wiki não está configurada para poder receber ficheiros.",
"api-error-verification-error": "Este ficheiro pode estar corrompido, ou ter a extensão errada.",
+ "api-error-was-deleted": "Um ficheiro com este nome foi carregado anteriormente e posteriormente eliminado.",
"duration-seconds": "$1 {{PLURAL:$1|segundo|segundos}}",
"duration-minutes": "$1 {{PLURAL:$1|minuto|minutos}}",
"duration-hours": "$1 {{PLURAL:$1|hora|horas}}",
@@ -3571,5 +3577,49 @@
"sessionprovider-generic": "Sessões $1",
"sessionprovider-mediawiki-session-cookiesessionprovider": "sessões baseadas em cookie",
"sessionprovider-nocookies": "Os cookies podem estar desativados. Certifique-se de que os cookies estão ativados e inicie novamente.",
- "randomrootpage": "Página raiz aleatória"
+ "randomrootpage": "Página raiz aleatória",
+ "log-action-filter-block": "Tipo de bloqueio:",
+ "log-action-filter-contentmodel": "Tipo de alteração de modelo de conteúdo:",
+ "log-action-filter-delete": "Tipo de eliminação:",
+ "log-action-filter-import": "Tipo de importação:",
+ "log-action-filter-managetags": "Tipo de ação de gestão de etiqueta:",
+ "log-action-filter-move": "Tipo do movimento:",
+ "log-action-filter-newusers": "Tipo de criação de conta:",
+ "log-action-filter-patrol": "Tipo de patrulha:",
+ "log-action-filter-protect": "Tipo de proteção:",
+ "log-action-filter-rights": "Tipo de alteração de privilégio",
+ "log-action-filter-suppress": "Tipo de supressão",
+ "log-action-filter-upload": "Tipo de carregamento:",
+ "log-action-filter-all": "Todas",
+ "log-action-filter-block-block": "Bloquear",
+ "log-action-filter-block-reblock": "Alteração de bloqueio",
+ "log-action-filter-block-unblock": "Desbloquear",
+ "log-action-filter-contentmodel-change": "Edição de modelo de conteúdo",
+ "log-action-filter-contentmodel-new": "Criação de página com modelo de conteúdo desconhecido",
+ "log-action-filter-delete-delete": "Eliminação de página",
+ "log-action-filter-delete-restore": "Restauro de página",
+ "log-action-filter-delete-event": "Eliminação de registo",
+ "log-action-filter-delete-revision": "Eliminação de revisão",
+ "log-action-filter-import-interwiki": "Importação de transwiki",
+ "log-action-filter-import-upload": "Importação por carregamento XML",
+ "log-action-filter-managetags-create": "Criação de etiqueta",
+ "log-action-filter-managetags-delete": "Eliminação de etiqueta",
+ "log-action-filter-managetags-activate": "Ativação de etiqueta",
+ "log-action-filter-managetags-deactivate": "Desativação de etiqueta",
+ "log-action-filter-newusers-create": "Criação por utilizador anónimo",
+ "log-action-filter-newusers-create2": "Criação por utilizador registado",
+ "log-action-filter-newusers-autocreate": "Criação automática",
+ "log-action-filter-newusers-byemail": "Criação com palavra-passe enviada por correio eletrónico",
+ "log-action-filter-patrol-patrol": "Patrulha manual",
+ "log-action-filter-patrol-autopatrol": "Patrulha automática",
+ "log-action-filter-protect-protect": "Proteção",
+ "log-action-filter-protect-modify": "Alteração da proteção",
+ "log-action-filter-protect-unprotect": "Desproteção",
+ "log-action-filter-protect-move_prot": "Proteção de movimentos",
+ "log-action-filter-rights-rights": "Alteração manual",
+ "log-action-filter-rights-autopromote": "Alteração automática",
+ "log-action-filter-suppress-event": "Supressão de registo",
+ "log-action-filter-suppress-delete": "Supressão de página",
+ "log-action-filter-upload-upload": "Novo carregamento",
+ "log-action-filter-upload-overwrite": "Recarregar"
}
diff --git a/languages/i18n/qqq.json b/languages/i18n/qqq.json
index 0c588fa29b..9764245d85 100644
--- a/languages/i18n/qqq.json
+++ b/languages/i18n/qqq.json
@@ -175,7 +175,9 @@
"Ciencia Al Poder",
"Aursani",
"Robin van der Vliet",
- "Conquistador"
+ "Conquistador",
+ "Frigory",
+ "Psychoslave"
]
},
"sidebar": "{{notranslate}}",
@@ -194,6 +196,7 @@
"tog-watchdefault": "[[Special:Preferences]], tab 'Watchlist'. Offers user to add edited pages to watchlist. {{Gender}}",
"tog-watchmoves": "[[Special:Preferences]], tab 'Watchlist'. Offers user to add moved pages to watchlist. {{Gender}}",
"tog-watchdeletion": "[[Special:Preferences]], tab 'Watchlist'. Offers user to add deleted pages to watchlist. {{Gender}}",
+ "tog-watchuploads": "[[Special:Preferences]], tab 'Watchlist'. Offers user to add their uploaded files to watchlist. {{Gender}}",
"tog-watchrollback": "[[Special:Preferences]], tab 'Watchlist'. Offers user to add pages where the user has rollbacked an edit to watchlist. {{Gender}}\n\nSee also {{msg-mw|tog-watchdefault}}, {{msg-mw|tog-watchcreations}}.",
"tog-minordefault": "[[Special:Preferences]], tab 'Edit'. Offers user to mark all edits minor by default. {{Gender}}",
"tog-previewontop": "Toggle option used in [[Special:Preferences]]. {{Gender}}",
@@ -307,7 +310,7 @@
"category-article-count-limited": "This message is displayed at the top of a category page showing the number of pages in the category when not all pages in a category are counted.\n\nParameters:\n* $1 - number of pages shown",
"category-file-count": "This message is displayed at the top of a category page showing the number of pages in the category.\n\nParameters:\n* $1 â number of files shown\n* $2 â total number of files in category",
"category-file-count-limited": "This message is displayed at the top of a category page showing the number of pages in the category when not all pages in a category are counted.\n\nParameters:\n* $1 - number of files shown",
- "listingcontinuesabbrev": "Shown in contiuation of each first letter group. This message follows the first letter.\n\nSee http://test.wikipedia.org/wiki/Category:Test_ko?uselang={{SUBPAGENAME}}, for example.",
+ "listingcontinuesabbrev": "Shown in continuation of each first letter group. This message follows the first letter.\n\nSee http://test.wikipedia.org/wiki/Category:Test_ko?uselang={{SUBPAGENAME}}, for example.",
"index-category": "Name of the [[mw:Special:MyLanguage/Help:Tracking categories|tracking category]] where pages with the __INDEX__ behavior switch are listed.\n\nFor description of this behavior switch see [[mw:Special:MyLanguage/Help:Magic_words#Behavior_switches|MediaWiki]].\n\nSee also:\n* {{msg-mw|Index-category-desc}}",
"noindex-category": "Name of the [[mw:Special:MyLanguage/Help:Tracking categories|tracking category]] where pages with the __NOINDEX__ behavior switch are listed.\n\nFor description of this behavior switch see [[mw:Special:MyLanguage/Help:Magic_words#Behavior_switches|MediaWiki]].\n\nSee also:\n* {{msg-mw|Noindex-category-desc}}",
"broken-file-category": "Name of [[mw:Special:MyLanguage/Help:Tracking categories|tracking category]] where pages that embed files that do not exist (\"broken images\") are listed.\n\nSee also:\n* {{msg-mw|Broken-file-category-desc}}",
@@ -723,7 +726,7 @@
"botpasswords-label-cancel": "Button label for a button to cancel the creation or edit of a bot password.\n{{Identical|Cancel}}",
"botpasswords-label-delete": "Button label for the button to delete a bot password.\n{{Identical|Delete}}",
"botpasswords-label-resetpassword": "Label for the checkbox to reset the actual password for the current bot password.",
- "botpasswords-label-grants": "Label for the checkmatrix for selecting grants allowed when the bot password is used.",
+ "botpasswords-label-grants": "Label for the checkmatrix for selecting grants allowed when the bot password is used.\n\ngrant: Vidu http://komputeko.net/index_en.php?vorto=grant sed \"konced/i\" egale funkcius.",
"botpasswords-help-grants": "Help text for the grant selection checkmatrix.",
"botpasswords-label-restrictions": "Label for the textarea field in which JSON defining access restrictions (e.g. which IP address ranges are allowed) is entered.",
"botpasswords-label-grants-column": "Label for the checkbox column on the checkmatrix for selecting grants allowed when the bot password is used.",
@@ -854,7 +857,7 @@
"userpage-userdoesnotexist": "Error message displayed when trying to edit or create a page or a subpage that belongs to a user who is not registered on the wiki.\n\nParameters:\n* $1 - a username\n{{identical|userdoesnotexist}}",
"userpage-userdoesnotexist-view": "Shown in user pages of non-existing users. See for example [{{canonicalurl:User:Foo}} User:Foo].\n\nParameters:\n* $1 - a username\n{{identical|userdoesnotexist}}",
"blocked-notice-logextract": "{{gender}}\nParameters:\n* $1 - (Optional) the name of the blocked user. Can be used for GENDER.",
- "clearyourcache": "Text at the top of .js/.css pages",
+ "clearyourcache": "Text at the top of .js/.css pages.\n\nWhen translating browser function names, check how they are translated in the localized versions of these web browsers in your language. If a browser is not translated to it, use English or another language in which browsers are most commonly used by the speakers of your language.",
"usercssyoucanpreview": "Text displayed on every CSS page.\n\nSee also:\n* {{msg-mw|Userjsyoucanpreview}}\n* {{msg-mw|Showpreview}}",
"userjsyoucanpreview": "Text displayed on every JavaScript page.\n\nSee also:\n* {{msg-mw|Usercssyoucanpreview}}\n* {{msg-mw|Showpreview}}",
"usercsspreview": "Text displayed on preview of every user .css subpage.\n\nSee also:\n* {{msg-mw|Sitecsspreview}}",
@@ -968,7 +971,7 @@
"undo-summary-username-hidden": "Edit summary for an undo action where the username of the old revision is hidden.\n\nParameters:\n* $1 - the revision ID being undone\nSee also:\n* {{msg-mw|Undo-summary}}",
"cantcreateaccounttitle": "Used as title of the error message {{msg-mw|Cantcreateaccount-text}}.",
"cantcreateaccount-text": "Used as error message, with the title {{msg-mw|Cantcreateaccounttitle}}.\n* $1 - target IP address\n* $2 - reason or {{msg-mw|Blockednoreason}}\n* $3 - username\nSee also:\n* {{msg-mw|Cantcreateaccount-range-text}}",
- "cantcreateaccount-range-text": "Used as more detailed version of the {{msg-mw|Cantcreateaccount-text}} error message, with the title {{msg-mw|Cantcreateaccounttitle}}.\n* $1 - target IP range\n* $2 - reason or {{msg-mw|Blockednoreason}}\n* $3 - username\n* $4 - current user's IP address",
+ "cantcreateaccount-range-text": "Used as more detailed version of the {{msg-mw|Cantcreateaccount-text}} error message, with the title {{msg-mw|Cantcreateaccounttitle}}.\n* $1 - target IP address range\n* $2 - reason or {{msg-mw|Blockednoreason}}\n* $3 - username\n* $4 - current user's IP address",
"createaccount-hook-aborted": "Placeholder message to return with API errors on account create; passes through the message from a hook {{notranslate}}",
"viewpagelogs": "Link displayed in history of pages",
"nohistory": "Message shown when there are no history to list. See [{{canonicalurl:x|action=history}} example history].\n----\nAlso used as title of error message when the feed is empty. See [{{canonicalurl:x|action=history&feed=atom}} example feed].\n\nSee the error message:\n* {{msg-mw|history-feed-empty}}",
@@ -1405,11 +1408,11 @@
"grant-group-page-interaction": "{{Related|grant-group}}",
"grant-group-file-interaction": "{{Related|grant-group}}",
"grant-group-watchlist-interaction": "{{Related|grant-group}}",
- "grant-group-email": "{{Related|grant-group}}\n{{Identical|E-mail}}",
- "grant-group-high-volume": "{{Related|grant-group}}",
- "grant-group-customization": "{{Related|grant-group}}",
- "grant-group-administration": "{{Related|grant-group}}",
- "grant-group-other": "{{Related|grant-group}}",
+ "grant-group-email": "{{Related|Grant-group}}\n{{Identical|E-mail}}",
+ "grant-group-high-volume": "{{Related|Grant-group}}",
+ "grant-group-customization": "{{Related|Grant-group}}",
+ "grant-group-administration": "{{Related|Grant-group}}",
+ "grant-group-other": "{{Related|Grant-group}}",
"grant-blockusers": "Name for grant \"blockusers\".\n{{Related|grant}}",
"grant-createaccount": "Name for grant \"createaccount\".\n{{Related|grant}}",
"grant-createeditmovepage": "Name for grant \"createeditmovepage\".\n{{Related|grant}}",
@@ -1553,9 +1556,9 @@
"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-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",
"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 embeddedby other pages removed from 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-bundled": "Comment message for templates embedded by other pages removed from a category\n\nParameters:\n* $1 - name of the page being added",
"autochange-username": "Used as bot / unknown username.",
"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}}",
@@ -2108,8 +2111,6 @@
"categories-submit": "Submit button on [[Special:Categories]]\n{{Identical|Show}}",
"categoriespagetext": "{{doc-important|Do not translate or change links.}}\nText displayed in [[Special:Categories]].\n\nIn order to translate \"Unused categories\" and \"wanted categories\" see {{msg-mw|Unusedcategories}} and {{msg-mw|Wantedcategories}}.\n\nParameters:\n* $1 - number of categories",
"categoriesfrom": "Used as label for the input box in [[Special:Categories]].\n\nThis message follows the fieldset label {{msg-mw|categories}}, and is followed by the input box.",
- "special-categories-sort-count": "Commented out at this time.\n\nThis message is used on [[Special:Categories]] to sort the list by the number of members in the categories.\n\nSee also:\n* {{msg-mw|Special-categories-sort-abc}}",
- "special-categories-sort-abc": "Commented out at this time.\n\nThis message is used on [[Special:Categories]] to sort the list by the category name.\n\nSee also:\n* {{msg-mw|Special-categories-sort-count}}\n{{Identical|Sort alphabetically}}",
"deletedcontributions": "The message is shown as a link on [[Special:SpecialPages]] to [[Special:DeletedContributions]].\n\n{{Identical|Deleted user contributions}}",
"deletedcontributions-summary": "{{doc-specialpagesummary|deletedcontributions}}",
"deletedcontributions-title": "Title of [[Special:DeletedContributions]] (extension), a special page with a list of edits to pages which were deleted. Only viewable by sysops.\n\n{{Identical|Deleted user contributions}}",
@@ -2504,6 +2505,7 @@
"ipb-unblock": "Used as page title in [[Special:Block]], if the target user is not specified.\n\nSee also:\n* {{msg-mw|Ipb-unblock-addr}}",
"ipb-blocklist": "Used as link text in [[Special:Block]].\n\nThe link points to Specil:BlockList.",
"ipb-blocklist-contribs": "Used in [[Special:Block]].\n* $1 - target username",
+ "ipb-blocklist-duration-left": "Used on [[Special:BlockList]] to show the remaining time (years, months, days, hours, minutes) until the block expires.\n$1 - The duration left",
"unblockip": "Used as legend for the form in [[Special:Unblock]].",
"unblockiptext": "Used in the {{msg-mw|Unblockip}} form on [[Special:Unblock]].",
"ipusubmit": "Used as button text on [{{canonicalurl:Special:BlockList|action=unblock}} Special:BlockList?action=unblock]. To see the message:\n* Go to [[Special:BlockList]]\n* Click \"unblock\" for any block (but you can only see \"unblock\" if you have administrator rights)\n* It is now the button below the form",
@@ -2563,11 +2565,11 @@
"ipb_expiry_temp": "Warning message displayed on [[Special:BlockIP]] if the option \"hide username\" is selected but the expiry time is not infinite.",
"ipb_hide_invalid": "Used as error message in [[Special:Block]].\n* $1 - Number of edits (Value of [[mw:Manual:$wgHideUserContribLimit]])",
"ipb_already_blocked": "{{Identical|$1 is already blocked}}",
- "ipb-needreblock": "Used in [[Special:Block]].\n* $1 - target username",
+ "ipb-needreblock": "Used in [[Special:Block]].\n* $1 - target username, can be used for GENDER support",
"ipb-otherblocks-header": "[[File:Special.Block with other blocks from GlobalBlocking and TorBlocks.png|thumb|Example]]\nUsed on [[Special:Block]] as header for other blocks, i.e. from GlobalBlocking or TorBlocks\n\nParameters:\n* $1 - number of blocks\nSee also:\n* {{msg-mw|Ipblocklist-otherblocks}}",
"unblock-hideuser": "{{doc-singularthey}}",
"ipb_cant_unblock": "Used as error message in [[Special:Unblock]]. Parameters:\n* $1 - block ID",
- "ipb_blocked_as_range": "Used when unblock of a single IP fails. Parameters:\n* $1 - IP address\n* $2 - IP range",
+ "ipb_blocked_as_range": "Used when unblock of a single IP fails. Parameters:\n* $1 - IP address\n* $2 - IP address range",
"ip_range_invalid": "Used as error message in [[Special:Block]].\n\nSee also:\n* {{msg-mw|Range block disabled}}\n* {{msg-mw|Ip range invalid}}\n* {{msg-mw|Ip range toolarge}}",
"ip_range_toolarge": "Used as error message in [[Special:Block]]. Parameters:\n* $1 - a number from 0 to 32 for IPv4 (from 0 to 128 for IPv6); a part of CIDR (Classless Inter-Domain Routing) notation.\nSee also:\n* {{msg-mw|Range block disabled}}\n* {{msg-mw|Ip range invalid}}\n* {{msg-mw|Ip range toolarge}}",
"proxyblocker": "Used in [[Special:BlockMe]].\n\nSee also:\n* {{msg-mw|proxyblocker-disabled}}\n* {{msg-mw|proxyblockreason}}\n* {{msg-mw|proxyblocksuccess}}",
@@ -2755,14 +2757,7 @@
"import-logentry-interwiki": "{{ignored}}This is a ''logentry'' message only used on IRC. Parameters:\n* $1 - page title",
"import-logentry-interwiki-detail": "Used as success message and log entry. Parameters:\n* $1 - number of succeeded revisions\n* $2 - interwiki name\nSee also:\n* {{msg-mw|Import-logentry-upload-detail}}",
"javascripttest": "Title of the special page [[Special:JavaScriptTest]].\n\nSee also:\n* {{msg-mw|Javascripttest|title}}\n* {{msg-mw|Javascripttest-pagetext-noframework|summary}}\n* {{msg-mw|Javascripttest-pagetext-unknownframework|error message}}",
- "javascripttest-backlink": "{{optional}}\nUsed as subtitle in [[Special:JavaScriptTest]]. Parameters:\n* $1 - page title",
- "javascripttest-title": "{{Ignore}}",
- "javascripttest-pagetext-noframework": "Used as summary when no framework specified.\n\nSee also:\n* {{msg-mw|Javascripttest|title}}\n* {{msg-mw|Javascripttest-pagetext-noframework|summary}}\n* {{msg-mw|Javascripttest-pagetext-unknownframework|error message}}",
- "javascripttest-pagetext-unknownframework": "Error message when given framework ID is not found. Parameters:\n* $1 - the ID of the framework\nSee also:\n* {{msg-mw|Javascripttest|title}}\n* {{msg-mw|Javascripttest-pagetext-noframework|summary}}\n* {{msg-mw|Javascripttest-pagetext-unknownframework|error message}}",
"javascripttest-pagetext-unknownaction": "Error message when url specifies an unknown action. Parameters:\n* $1 - the action specified in the url.",
- "javascripttest-pagetext-frameworks": "Parameters:\n* $1 - frameworks list which contain a link text {{msg-mw|Javascripttest-qunit-name}}",
- "javascripttest-pagetext-skins": "Used as label in [[Special:JavaScriptTest]].",
- "javascripttest-qunit-name": "{{Ignore}}",
"javascripttest-qunit-intro": "Used as summary. Parameters:\n* $1 - the configured URL to the documentation\nSee also:\n* {{msg-mw|Javascripttest-qunit-heading}}",
"accesskey-pt-userpage": "{{doc-accesskey}}\nSee also:\n\n* {{msg-mw|Accesskey-pt-userpage}}\n* {{msg-mw|Tooltip-pt-userpage}}",
"accesskey-pt-anonuserpage": "{{doc-accesskey}}",
@@ -3155,8 +3150,8 @@
"exif-colorspace": "Exif is a format for storing metadata in image files. See this [[w:Exchangeable_image_file_format|Wikipedia article]] and the example at the bottom of [[commons:File:Phalacrocorax-auritus-020.jpg|this page on Commons]]. The tags are explained [http://www.awaresystems.be/imaging/tiff/tifftags/privateifd/exif.html briefly] and [http://www.kodak.com/global/plugins/acrobat/en/service/digCam/exifStandard2.pdf in further detail].\n\nThe colorspace of the photo. This tells the computer how to make the colours in the photo be more true to the original photo. Typical values for this are sRGB or uncalibrated. This only gives information on colour information given in the exif-colorspace property. However, colour information is often stored elsewhere in the photo.\n\nSee also:\n* {{msg-mw|Exif-colorspace}}\n* {{msg-mw|Exif-colorspace-1|optional}}\n* {{msg-mw|Exif-colorspace-65535}}",
"exif-componentsconfiguration": "Exif is a format for storing metadata in image files. See this [[w:Exchangeable_image_file_format|Wikipedia article]] and the example at the bottom of [[commons:File:Phalacrocorax-auritus-020.jpg|this page on Commons]]. The tags are explained [http://www.awaresystems.be/imaging/tiff/tifftags/privateifd/exif.html briefly] and [http://www.kodak.com/global/plugins/acrobat/en/service/digCam/exifStandard2.pdf in further detail].\n\nThis contains how the information in the picture is stored. This is most commonly Y, Cr, Cb to specify luma, red, blue. RGB is also possible to specify Red, Green, Blue.\n{{Related|Exif-componentsconfiguration}}",
"exif-compressedbitsperpixel": "Exif is a format for storing metadata in image files. See this [[w:Exchangeable_image_file_format|Wikipedia article]] and the example at the bottom of [[commons:File:Phalacrocorax-auritus-020.jpg|this page on Commons]]. The tags are explained [http://www.awaresystems.be/imaging/tiff/tifftags/privateifd/exif.html briefly] and [http://www.kodak.com/global/plugins/acrobat/en/service/digCam/exifStandard2.pdf in further detail].",
- "exif-pixelydimension": "Exif is a format for storing metadata in image files. See this [[w:Exchangeable_image_file_format|Wikipedia article]] and the example at the bottom of [[commons:File:Phalacrocorax-auritus-020.jpg|this page on Commons]]. The tags are explained [http://www.awaresystems.be/imaging/tiff/tifftags/privateifd/exif.html briefly] and [http://www.kodak.com/global/plugins/acrobat/en/service/digCam/exifStandard2.pdf in further detail].\n{{Identical|Image width}}",
- "exif-pixelxdimension": "Exif is a format for storing metadata in image files. See this [[w:Exchangeable_image_file_format|Wikipedia article]] and the example at the bottom of [[commons:File:Phalacrocorax-auritus-020.jpg|this page on Commons]]. The tags are explained [http://www.awaresystems.be/imaging/tiff/tifftags/privateifd/exif.html briefly] and [http://www.kodak.com/global/plugins/acrobat/en/service/digCam/exifStandard2.pdf in further detail].\n{{Identical|Image height}}",
+ "exif-pixelxdimension": "Exif is a format for storing metadata in image files. See this [[w:Exchangeable_image_file_format|Wikipedia article]] and the example at the bottom of [[commons:File:Phalacrocorax-auritus-020.jpg|this page on Commons]]. The tags are explained [http://www.awaresystems.be/imaging/tiff/tifftags/privateifd/exif.html briefly] and [http://www.kodak.com/global/plugins/acrobat/en/service/digCam/exifStandard2.pdf in further detail].\n{{Identical|Image width}}",
+ "exif-pixelydimension": "Exif is a format for storing metadata in image files. See this [[w:Exchangeable_image_file_format|Wikipedia article]] and the example at the bottom of [[commons:File:Phalacrocorax-auritus-020.jpg|this page on Commons]]. The tags are explained [http://www.awaresystems.be/imaging/tiff/tifftags/privateifd/exif.html briefly] and [http://www.kodak.com/global/plugins/acrobat/en/service/digCam/exifStandard2.pdf in further detail].\n{{Identical|Image height}}",
"exif-usercomment": "Exif is a format for storing metadata in image files. See this [[w:Exchangeable_image_file_format|Wikipedia article]] and the example at the bottom of [[commons:File:Phalacrocorax-auritus-020.jpg|this page on Commons]]. The tags are explained [http://www.awaresystems.be/imaging/tiff/tifftags/privateifd/exif.html briefly] and [http://www.kodak.com/global/plugins/acrobat/en/service/digCam/exifStandard2.pdf in further detail].\n\nComments by user. Sometimes used like ImageDescription when the ImageDescription contained non-ascii characters. (Technically ImageDescription is supposed to contain ascii characters. In practice utf-8 is used in ImageDescription, so this field isn't used too much.)",
"exif-relatedsoundfile": "Exif is a format for storing metadata in image files. See this [[w:Exchangeable_image_file_format|Wikipedia article]] and the example at the bottom of [[commons:File:Phalacrocorax-auritus-020.jpg|this page on Commons]]. The tags are explained [http://www.awaresystems.be/imaging/tiff/tifftags/privateifd/exif.html briefly] and [http://www.kodak.com/global/plugins/acrobat/en/service/digCam/exifStandard2.pdf in further detail].\n\nSome cameras offer the option to record an audio \"memo\" for the photo they just took. If the user did that, the name of the file is labelled with this message.",
"exif-datetimeoriginal": "Exif is a format for storing metadata in image files. See this [[w:Exchangeable_image_file_format|Wikipedia article]] and the example at the bottom of [[commons:File:Phalacrocorax-auritus-020.jpg|this page on Commons]]. The tags are explained [http://www.awaresystems.be/imaging/tiff/tifftags/privateifd/exif.html briefly] and [http://www.kodak.com/global/plugins/acrobat/en/service/digCam/exifStandard2.pdf in further detail].\n\nThe date and time when the original image data was generated. For example if it was a painting from 1773, scanned in to a computer in 2007, the datetimeoriginal would be 1773 and {{msg-mw|exif-datetimedigitized}} would have the 2007 date.",
@@ -3522,6 +3517,10 @@
"confirmemail_body_set": "This is used in a confirmation email sent when a contact email address is set.\n\nSee also [[MediaWiki:Confirmemail body changed]].\n\nParameters:\n* $1 - the IP address of the user that set the email address\n* $2 - the name of the user\n* $3 - a URL to [[Special:ConfirmEmail]]\n* $4 - a time and date (duplicated by $6 and $7)\n* $5 - a URL to [[Special:InvalidateEmail]]\n* $6 - (Optional) a date\n* $7 - (Optional) a time\n{{Related|Confirmemail body}}",
"confirmemail_invalidated": "This is the text of the special page [[Special:InvalidateEmail|InvalidateEmail]] (with the title in {{msg-mw|Invalidateemail}}) where user goes if he chooses the cancel e-mail confirmation link from the confirmation e-mail.",
"invalidateemail": "This is the '''name of the special page''' where user goes if he chooses the cancel e-mail confirmation link from the confirmation e-mail.",
+ "notificationemail_subject_changed": "Subject of the email sent on the previously registered email address notifying them about the change in the registered email address.",
+ "notificationemail_subject_removed": "Subject of the email sent on the previously registered email address notifying them about the removal of the registered email address.",
+ "notificationemail_body_changed": "Body of the email sent on the previously registered email address notifying them about the change in the registered email address.",
+ "notificationemail_body_removed": "Body of the email sent on the previously registered email address notifying them about the removal of the registered email address.",
"scarytranscludedisabled": "Shown when scary transclusion is disabled.",
"scarytranscludefailed": "Shown when the HTTP request for the template failed. Identical to {{msg-mw|Scarytranscludefailed-httpstatus}}, but does not show the HTTP error which was received. This will not be parsed as wikitext and will appear as is. Parameters:\n* $1 - URL which points to interwiki template",
"scarytranscludefailed-httpstatus": "Identical to {{msg-mw|Scarytranscludefailed}}, but shows the HTTP error which was received. This will not be parsed as wikitext and will appear as is. Parameters:\n* $1 - URL which points to interwiki template\n* $2 - HTTP status, integer (other than 200)",
@@ -3747,7 +3746,6 @@
"version-libraries-description": "Column header for the library's description\n{{Identical|Description}}",
"version-libraries-authors": "Column header for the library's authors\n{{Identical|Author}}",
"redirect": "{{doc-special|Redirect}}\nThis means \"Redirect by file '''name''', user '''ID''', page '''ID''', revision '''ID''', or log '''ID'''\".",
- "redirect-legend": "Legend of fieldset around input box in [[Special:Redirect]]",
"redirect-text": "Inside fieldset for [[Special:Redirect]]",
"redirect-summary": "Shown at top of [[Special:Redirect]]",
"redirect-submit": "Button label in [[Special:Redirect]].\n{{Identical|Go}}",
@@ -3761,7 +3759,6 @@
"redirect-not-exists": "Used as error message in [[Special:Redirect]]",
"fileduplicatesearch": "Name of special page [[Special:FileDuplicateSearch]].",
"fileduplicatesearch-summary": "Summary of [[Special:FileDuplicateSearch]]",
- "fileduplicatesearch-legend": "Legend of the fieldset around the input form of [[Special:FileDuplicateSearch]]",
"fileduplicatesearch-filename": "Input form of [[Special:FileDuplicateSearch]]:\n\n{{Identical|Filename}}",
"fileduplicatesearch-submit": "Button label on [[Special:FileDuplicateSearch]].\n\n{{Identical|Search}}",
"fileduplicatesearch-info": "Information beneath the thumbnail on the right side shown after a successful search via [[Special:FileDuplicateSearch]].\n\nParameters:\n* $1 - width of the file\n* $2 - height of the file\n* $3 - File size\n* $4 - MIME type",
@@ -3968,9 +3965,9 @@
"logentry-protect-protect-cascade": "{{Logentry|[[Special:Log/protect]]}}\n\n* $4 - protect expiry (formatted with {{msg-mw|protect-summary-desc}}, multiple possible)\nFor word \"cascading\" see {{msg-mw|protect-summary-cascade}}",
"logentry-protect-modify": "{{Logentry|[[Special:Log/protect]]}}\n\n* $4 - protect expiry (formatted with {{msg-mw|protect-summary-desc}}, multiple possible)",
"logentry-protect-modify-cascade": "{{Logentry|[[Special:Log/protect]]}}\n\n* $4 - protect expiry (formatted with {{msg-mw|protect-summary-desc}}, multiple possible)\nFor word \"cascading\" see {{msg-mw|protect-summary-cascade}}",
- "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": "* $1 - (see below)\n* $2 - (see below)\n* $3 - target user, like $1\n* $4 - list of user groups or {{msg-mw|Rightsnone}}\n* $5 - list of user groups or {{msg-mw|Rightsnone}}\n* $6 - target user, can be used with GENDER\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]]}}",
+ "logentry-rights-autopromote": "* $1 - username\n* $2 - (see below)\n* $3 - (see below) - unused\n* $4 - comma separated list of old user groups or {{msg-mw|Rightsnone}}\n* $5 - comma separated list of new user groups\n* $6 - target user, can be used with GENDER for $3 - unused\n----\n{{Logentry|[[Special:Log/rights]]}}",
"logentry-upload-upload": "{{Logentry|[[Special:Log/upload]]}}",
"logentry-upload-overwrite": "{{Logentry|[[Special:Log/upload]]}}",
"logentry-upload-revert": "{{Logentry|[[Special:Log/upload]]}}",
@@ -4083,6 +4080,7 @@
"api-error-unknownerror": "API error message that can be used for client side localisation of API errors.\n\nParameters:\n* $1 - an unknown error message\n{{Identical|Unknown error}}",
"api-error-uploaddisabled": "API error message that can be used for client side localisation of API errors.",
"api-error-verification-error": "The word \"extension\" refers to the part behind the last dot in a file name, that by convention gives a hint about the kind of data format which a files contents are in.",
+ "api-error-was-deleted": "API error message that can be used for client side localisation of API errors.",
"duration-seconds": "Used as duration. Parameters:\n* $1 - number of seconds\n{{Related|Duration}}\n{{Identical|Second}}",
"duration-minutes": "Used as duration. Parameters:\n* $1 - number of minutes\n{{Related|Duration}}\n{{Identical|Minute}}",
"duration-hours": "Used as duration. Parameters:\n* $1 - number of hours\n{{Related|Duration}}",
@@ -4178,6 +4176,7 @@
"special-characters-group-ipa": "IPA means a script: \"international phonetic alphabet\" here, and not \"international phonetic association\", the organization behind it.",
"special-characters-group-symbols": "The section name for symbols\n\n{{Identical|Symbol}}",
"special-characters-group-greek": "This is the name of a script, or alphabet, not a language.",
+ "special-characters-group-greekextended": "The name of the Greek Extended character set.",
"special-characters-group-cyrillic": "This is the name of a script, or a group of alphabets, used mainly in Eastern Europe and North and Central Asia.\n{{related|Special-characters-group}}",
"special-characters-group-arabic": "This is the name of a script, or alphabet, not a language.\n{{related|Special-characters-group}}",
"special-characters-group-arabicextended": "This is a description of the additional group of Arabic script characters for languages such as a Persian, Urdu, Pashto and others. This message is supposed to be similar to {{msg-mw|special-characters-group-latinextended}}.\n{{related|Special-characters-group}}",
@@ -4205,5 +4204,54 @@
"sessionprovider-generic": "Used to create a generic session type description when one isn't provided via the proper message. Should be phrased to make sense when added to a message such as {{msg-mw|cannotloginnow-text}}.\n\nParameters:\n* $1 - PHP classname.",
"sessionprovider-mediawiki-session-cookiesessionprovider": "Description of the sessions provided by the CookieSessionProvider class, which use HTTP cookies. Should be phrased to make sense when added to a message such as {{msg-mw|cannotloginnow-text}}.",
"sessionprovider-nocookies": "Used to inform the user that sessions may be missing due to lack of cookies.",
- "randomrootpage": "{{doc-special|RandomRootPage}}"
+ "randomrootpage": "{{doc-special|RandomRootPage}}",
+ "log-action-filter-block": "{{doc-log-action-filter-type|block}}",
+ "log-action-filter-contentmodel": "{{doc-log-action-filter-type|contentmodel}}",
+ "log-action-filter-delete": "{{doc-log-action-filter-type|delete}}",
+ "log-action-filter-import": "{{doc-log-action-filter-type|import}}",
+ "log-action-filter-managetags": "{{doc-log-action-filter-type|managetags}}",
+ "log-action-filter-move": "{{doc-log-action-filter-type|move}}",
+ "log-action-filter-newusers": "{{doc-log-action-filter-type|newusers}}",
+ "log-action-filter-patrol": "{{doc-log-action-filter-type|patrol}}",
+ "log-action-filter-protect": "{{doc-log-action-filter-type|protect}}",
+ "log-action-filter-rights": "{{doc-log-action-filter-type|rights}}",
+ "log-action-filter-suppress": "{{doc-log-action-filter-type|suppress}}",
+ "log-action-filter-upload": "{{doc-log-action-filter-type|upload}}",
+ "log-action-filter-all": "{{doc-log-action-filter-type|all}}\n{{Identical|All}}",
+ "log-action-filter-block-block": "{{doc-log-action-filter-action|block|block}}\n{{Identical|Block}}",
+ "log-action-filter-block-reblock": "{{doc-log-action-filter-action|block|reblock}}",
+ "log-action-filter-block-unblock": "{{doc-log-action-filter-action|block|unblock}}\n{{Identical|Unblock}}",
+ "log-action-filter-contentmodel-change": "{{doc-log-action-filter-action|contentmodel|change}}",
+ "log-action-filter-contentmodel-new": "{{doc-log-action-filter-action|contentmodel|new}}",
+ "log-action-filter-delete-delete": "{{doc-log-action-filter-action|delete|delete}}",
+ "log-action-filter-delete-restore": "{{doc-log-action-filter-action|delete|restore}}",
+ "log-action-filter-delete-event": "{{doc-log-action-filter-action|delete|event}}",
+ "log-action-filter-delete-revision": "{{doc-log-action-filter-action|delete|revision}}",
+ "log-action-filter-import-interwiki": "{{doc-log-action-filter-action|import|interwiki}}",
+ "log-action-filter-import-upload": "{{doc-log-action-filter-action|import|upload}}",
+ "log-action-filter-managetags-create": "{{doc-log-action-filter-action|managetags|create}}",
+ "log-action-filter-managetags-delete": "{{doc-log-action-filter-action|managetags|delete}}",
+ "log-action-filter-managetags-activate": "{{doc-log-action-filter-action|managetags|activate}}",
+ "log-action-filter-managetags-deactivate": "{{doc-log-action-filter-action|managetags|deactivate}}",
+ "log-action-filter-move-move": "{{doc-log-action-filter-action|move|move}}",
+ "log-action-filter-move-move_redir": "{{doc-log-action-filter-action|move|move_redir}}",
+ "log-action-filter-newusers-create": "{{doc-log-action-filter-action|newusers|create}}",
+ "log-action-filter-newusers-create2": "{{doc-log-action-filter-action|newusers|create2}}",
+ "log-action-filter-newusers-autocreate": "{{doc-log-action-filter-action|newusers|autocreate}}",
+ "log-action-filter-newusers-byemail": "{{doc-log-action-filter-action|newusers|byemail}}",
+ "log-action-filter-patrol-patrol": "{{doc-log-action-filter-action|patrol|patrol}}",
+ "log-action-filter-patrol-autopatrol": "{{doc-log-action-filter-action|patrol|autopatrol}}",
+ "log-action-filter-protect-protect": "{{doc-log-action-filter-action|protect|protect}}",
+ "log-action-filter-protect-modify": "{{doc-log-action-filter-action|protect|modify}}",
+ "log-action-filter-protect-unprotect": "{{doc-log-action-filter-action|protect|unprotect}}",
+ "log-action-filter-protect-move_prot": "{{doc-log-action-filter-action|protect|move_prot}}",
+ "log-action-filter-rights-rights": "{{doc-log-action-filter-action|rights|rights}}",
+ "log-action-filter-rights-autopromote": "{{doc-log-action-filter-action|rights|autopromote}}",
+ "log-action-filter-suppress-event": "{{doc-log-action-filter-action|suppress|event}}",
+ "log-action-filter-suppress-revision": "{{doc-log-action-filter-action|suppress|revision}}",
+ "log-action-filter-suppress-delete": "{{doc-log-action-filter-action|suppress|delete}}",
+ "log-action-filter-suppress-block": "{{doc-log-action-filter-action|suppress|block}}",
+ "log-action-filter-suppress-reblock": "{{doc-log-action-filter-action|suppress|reblock}}",
+ "log-action-filter-upload-upload": "{{doc-log-action-filter-action|upload|upload}}",
+ "log-action-filter-upload-overwrite": "{{doc-log-action-filter-action|upload|overwrite}}"
}
diff --git a/languages/i18n/qu.json b/languages/i18n/qu.json
index 134328ab1f..65d39e50c3 100644
--- a/languages/i18n/qu.json
+++ b/languages/i18n/qu.json
@@ -1538,8 +1538,6 @@
"categories": "Katiguriyakuna",
"categoriespagetext": "Kay qatiq {{PLURAL:$1|katiguriyaqa|katiguriyakunaqa}} p'anqayuqmi icha midyayuqmi.\n[[Special:UnusedCategories|Ch'usaq katiguriyakunataqa]] kaypi manam rikunkichu.\n[[Special:WantedCategories|Muchusqa katiguriyakunatapas]] qhaway.",
"categoriesfrom": "Katiguriyakunata rikuchiy kaywan qallarispa:",
- "special-categories-sort-count": "yupaykama allichay",
- "special-categories-sort-abc": "qallarina sanampakama allichay",
"deletedcontributions": "Qullusqa ruraqpa hukchasqankuna",
"deletedcontributions-title": "Qullusqa ruraqpa hukchasqankuna",
"sp-deletedcontributions-contribs": "llamk'apusqakuna",
@@ -2090,10 +2088,6 @@
"import-logentry-upload-detail": "$1 {{PLURAL:$1|hukchasqa|hukchasqakuna}}",
"import-logentry-interwiki-detail": "$1 {{PLURAL:$1|hukchasqa|hukchasqakuna}} $2-manta",
"javascripttest": "JavaScript llanchiy",
- "javascripttest-pagetext-noframework": "Kay p'anqaqa JavaScript llanchina purichinallapaqmi kachun.",
- "javascripttest-pagetext-unknownframework": "Mana riqsisqa \"$1\" nisqa llanchina inchu ruray",
- "javascripttest-pagetext-frameworks": "Ama hina kaspa, kay qatiq llanchina inchu ruraykunamanta hukta akllay: $1",
- "javascripttest-pagetext-skins": "Qarata akllay llanchiykunata paywan purichinaykipaq:",
"javascripttest-qunit-intro": "Qhaway [$1 llanchina yachachinapi], mediawiki.org nisqapi kaq.",
"tooltip-pt-userpage": "Qampa ruraqpa p'anqayki",
"tooltip-pt-anonuserpage": "IP huchhaykipaq ruraqpa p'anqan",
@@ -2339,8 +2333,8 @@
"exif-colorspace": "Llimphi suyu",
"exif-componentsconfiguration": "Sapa ñawpariqninpa sut'in",
"exif-compressedbitsperpixel": "Rikchap mat'isqa kaynin laya",
- "exif-pixelydimension": "Rikchap suni kaynin",
- "exif-pixelxdimension": "Rikchap hanaq kaynin",
+ "exif-pixelxdimension": "Rikchap suni kaynin",
+ "exif-pixelydimension": "Rikchap hanaq kaynin",
"exif-usercomment": "Llamk'achiqpa willayninkuna",
"exif-relatedsoundfile": "Ninachiq ruqyay willañiqi",
"exif-datetimeoriginal": "Willakunap kamaynin p'unchaw, pacha",
@@ -2766,7 +2760,6 @@
"version-entrypoints-header-entrypoint": "Yaykuna t'uksi",
"version-entrypoints-header-url": "URL tiyay",
"redirect": "Willañiqikama, ruraqkama icha musuqchay ID-kama pusapuy",
- "redirect-legend": "Willañiqiman icha p'anqaman pusapuy",
"redirect-submit": "Riy",
"redirect-lookup": "Maskay:",
"redirect-value": "Chani:",
@@ -2777,7 +2770,6 @@
"redirect-not-exists": "Chaniqa manam tarisqachu",
"fileduplicatesearch": "Iskaychasqa willañiqikunata maskay",
"fileduplicatesearch-summary": "Iskaychasqa willañiqikunata maskay ''hash'' chaninpi tiksispa.",
- "fileduplicatesearch-legend": "Iskaychasqata maskay",
"fileduplicatesearch-filename": "Willañiqip sutin:",
"fileduplicatesearch-submit": "Maskay",
"fileduplicatesearch-info": "$1 à $2 iñu Willañiqip chhikan kaynin: $3 MIME laya: $4",
diff --git a/languages/i18n/rm.json b/languages/i18n/rm.json
index be52e1538c..73f33af98b 100644
--- a/languages/i18n/rm.json
+++ b/languages/i18n/rm.json
@@ -1416,8 +1416,6 @@
"categories": "Categorias",
"categoriespagetext": "{{PLURAL:$1|Suandanta categoria cuntegna|Suandantas categorias cuntegnan}} paginas u multimedia.\n[[Special:UnusedCategories|Categorias betg utilisadas]] na vegnan betg mussadas qua.\nGuarda era las [[Special:WantedCategories|categorias giavischadas]].",
"categoriesfrom": "Mussar las categorias davent da:",
- "special-categories-sort-count": "zavrar tenor dumber",
- "special-categories-sort-abc": "zavrar alfabeticamain",
"deletedcontributions": "Contribuziuns d'utilisaders stidadas",
"deletedcontributions-title": "Contribuziuns dad utilisaders stizzadas",
"sp-deletedcontributions-contribs": "contribuziuns",
@@ -1955,10 +1953,6 @@
"import-logentry-upload-detail": "{{PLURAL:$1|Ina versiun|$1 versiuns}}",
"import-logentry-interwiki-detail": "{{PLURAL:$1|Ina versiun|$1 versiuns}} da $2",
"javascripttest": "Test da JavaScript",
- "javascripttest-pagetext-noframework": "Questa pagina è reservada per exequir tests da JavaScript.",
- "javascripttest-pagetext-unknownframework": "Framework da test nunenconuschent \"$1\".",
- "javascripttest-pagetext-frameworks": "Tscherna per plaschair in dals suandantas frameworks da test: $1",
- "javascripttest-pagetext-skins": "Tscherna in skin che duai vegnir utilisà per ils tests:",
"javascripttest-qunit-intro": "Legia la [$1 documentaziun da tests] sin mediawiki.org.",
"tooltip-pt-userpage": "Mussar tia pagina d'utilisader",
"tooltip-pt-anonuserpage": "La pagina d'utilisader per l'adressa IP cun la quala che ti fas modificaziuns",
@@ -2180,8 +2174,8 @@
"exif-colorspace": "Spazi da colurs",
"exif-componentsconfiguration": "Significaziun da las singulas cumponentas",
"exif-compressedbitsperpixel": "Modus da cumprimer",
- "exif-pixelydimension": "Ladezza dal maletg",
- "exif-pixelxdimension": "Autezza dal maletg",
+ "exif-pixelxdimension": "Ladezza dal maletg",
+ "exif-pixelydimension": "Autezza dal maletg",
"exif-usercomment": "Commentari da l'utilisader",
"exif-relatedsoundfile": "Datoteca d'audio appartegnenta",
"exif-datetimeoriginal": "Data e temp da la generaziun",
@@ -2586,7 +2580,6 @@
"version-entrypoints-header-url": "URL",
"fileduplicatesearch": "Tschertgar datotecas dublas",
"fileduplicatesearch-summary": "Tschertgar datotecas dublas a basa da valurs da hash.",
- "fileduplicatesearch-legend": "Tschertgar duplicats",
"fileduplicatesearch-filename": "Num da datoteca:",
"fileduplicatesearch-submit": "Tschertgar",
"fileduplicatesearch-info": "$1 x $2 pixels Grondezza da datoteca: $3 Tip da MIME: $4",
diff --git a/languages/i18n/ro.json b/languages/i18n/ro.json
index c1137ba393..af03e7f03b 100644
--- a/languages/i18n/ro.json
+++ b/languages/i18n/ro.json
@@ -28,7 +28,8 @@
"Macofe",
"ImGelu",
"Wintereu",
- "Rsocol"
+ "Rsocol",
+ "Nemo bis"
]
},
"tog-underline": "Sublinierea legÄturilor:",
@@ -467,7 +468,7 @@
"nocookieslogin": "{{SITENAME}} foloseÈte module cookie pentru a autentifica utilizatorii. Browser-ul dvs. are cookie-urile dezactivate. VÄ rugÄm sÄ le activaÈi Èi sÄ incercaÈi din nou.",
"nocookiesfornew": "Contul de utilizator nu a fost creat, deoarece nu am putut confirma sursa.\nAsiguraÈi-vÄ cÄ aveÈi cookie-urile activate, reîncÄrcaÈi pagina Èi încercaÈi din nou.",
"noname": "Numele de utilizator pe care l-aÈi introdus nu este valid.",
- "loginsuccesstitle": "Autentificare reuÈitÄ",
+ "loginsuccesstitle": "Autentificat(Ä)",
"loginsuccess": "'''AÈi fost autentificat la {{SITENAME}} ca â$1â.'''",
"nosuchuser": "Nu existÄ nici un utilizator cu numele â$1â.\nNumele de utilizatori sunt sensibile la majuscule.\nVerificÄ dacÄ ai scris corect sau [[Special:UserLogin/signup|creeazÄ un nou cont de utilizator]].",
"nosuchusershort": "Nu existÄ niciun utilizator cu numele â$1â.\nVerificaÈi ortografierea.",
@@ -503,7 +504,7 @@
"createaccount-title": "Creare de cont la {{SITENAME}}",
"createaccount-text": "Cineva a creat un cont asociat adresei dumneavoastrÄ de e-mail pe {{SITENAME}} ($4) numit â$2â Èi având parola â$3â.\nEste de dorit sÄ vÄ autentificaÈi Èi sÄ schimbaÈi parola cât mai repede.\n\nIgnoraÈi acest mesaj dacÄ crearea contului s-a produs în urma unei greÈeli.",
"login-throttled": "AÈi avut prea multe încercÄri recente de a vÄ autentifica.\nVÄ rugÄm sÄ aÈteptaÈi $1 pânÄ sÄ reîncercaÈi.",
- "login-abort-generic": "Procesul de autentificare a eÈuat Èi a fost abandonat",
+ "login-abort-generic": "Procesul de autentificare a eÈuat - Abandonat",
"login-migrated-generic": "Contul dumneavoastrÄ a fost migrat, iar numele de utilizator nu mai existÄ pe acest wiki.",
"loginlanguagelabel": "Limba: $1",
"suspicious-userlogout": "Cererea dumneavoastrÄ de a închide sesiunea a fost refuzatÄ Ã®ntrucât pare cÄ a fost trimisÄ printr-o eroare a navigatorului sau de un proxy memorat în cache.",
@@ -523,11 +524,12 @@
"newpassword": "Parola nouÄ:",
"retypenew": "ReintroduceÈi noua parolÄ:",
"resetpass_submit": "SeteazÄ parola Èi autentificÄ",
- "changepassword-success": "Parola dumneavoastrÄ a fost schimbatÄ cu succes!",
+ "changepassword-success": "Parola dumneavoastrÄ a fost schimbatÄ!",
"changepassword-throttled": "AÈi avut prea multe încercÄri recente de a vÄ autentifica.\nVÄ rugÄm sÄ aÈteptaÈi $1 pânÄ sÄ reîncercaÈi.",
"botpasswords": "Parole roboÈi",
"botpasswords-summary": "Parolele de roboÈi permit accesul la un cont de utilizator prin intermediul API-ului fÄrÄ utilizarea identificatorilor de conectare principali ai contului. Este posibil ca drepturile de utilizator disponibile dupÄ conectarea cu parole de roboÈi sÄ fie restricÈionate.\n\nDacÄ nu ÈtiÈi exact de ce aÈi recurge la aceastÄ metodÄ, probabil ar trebui sÄ nu o faceÈi. Nimeni nu ar trebui sÄ vÄ cearÄ vreodatÄ sÄ generaÈi acest tip de parolÄ Èi sÄ le-o furnizaÈi.",
"botpasswords-disabled": "Parolele de roboÈi sunt dezactivate.",
+ "botpasswords-no-central-id": "Pentru a folosi parole pentru roboÈi, trebuie sÄ fiÈi logat într-un cont centralizat.",
"botpasswords-existing": "Parole de robot existente",
"botpasswords-label-appid": "Numele robotului:",
"botpasswords-label-create": "Creare",
@@ -1278,7 +1280,7 @@
"recentchangeslinked-page": "Numele paginii:",
"recentchangeslinked-to": "AratÄ Ã®n schimb modificÄrile asupra paginilor care se leagÄ de pagina indicatÄ",
"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-added-to-category-bundled": "[[:$1]] Èi încÄ [[Special:WhatLinksHere/$1|{{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",
"autochange-username": "Modificare automatÄ a MediaWiki",
@@ -1772,8 +1774,6 @@
"categories-submit": "AfiÈeazÄ",
"categoriespagetext": "{{PLURAL:$1|UrmÄtoarea categorie conÈine|UrmÄtoarele categorii conÈin}} pagini sau fiÈiere.\n[[Special:UnusedCategories|Categoriile neutilizate]] nu apar aici.\nVedeÈi Èi [[Special:WantedCategories|categoriile dorite]].",
"categoriesfrom": "AratÄ categoriile pornind de la:",
- "special-categories-sort-count": "ordoneazÄ dupÄ numÄr",
- "special-categories-sort-abc": "sorteazÄ alfabetic",
"deletedcontributions": "ContribuÈii Èterse",
"deletedcontributions-title": "ContribuÈii Èterse",
"sp-deletedcontributions-contribs": "contribuÈii",
@@ -2388,11 +2388,7 @@
"import-logentry-upload-detail": "$1 {{PLURAL:$1|versiune importatÄ|versiuni importate|de versiuni importate}}",
"import-logentry-interwiki-detail": "$1 {{PLURAL:$1|versiune|versiuni|de versiuni}} importate de la $2",
"javascripttest": "Testare JavaScript",
- "javascripttest-pagetext-noframework": "AceastÄ paginÄ este rezervatÄ rulÄrii testelor JavaScript.",
- "javascripttest-pagetext-unknownframework": "Cadru de testare â$1â necunoscut.",
"javascripttest-pagetext-unknownaction": "AcÈiunea â$1â necunoscutÄ.",
- "javascripttest-pagetext-frameworks": "AlegeÈi unul din urmÄtoarele cadre de testare: $1",
- "javascripttest-pagetext-skins": "AlegeÈi un aspect pentru care sÄ rulaÈi teste:",
"javascripttest-qunit-intro": "A se vedea [$1 documentaÈia de testare] pe mediawiki.org.",
"tooltip-pt-userpage": "Pagina {{GENDER:|dumneavoastrÄ}} de utilizator",
"tooltip-pt-anonuserpage": "Pagina de utilizator pentru adresa IP curentÄ",
@@ -2652,8 +2648,8 @@
"exif-colorspace": "SpaÈiu de culoare",
"exif-componentsconfiguration": "SemnificaÈia fiecÄrei componente",
"exif-compressedbitsperpixel": "Mod de comprimare a imaginii",
- "exif-pixelydimension": "LÄÈimea imaginii",
- "exif-pixelxdimension": "ÃnÄlÈimea imaginii",
+ "exif-pixelxdimension": "LÄÈimea imaginii",
+ "exif-pixelydimension": "ÃnÄlÈimea imaginii",
"exif-usercomment": "Comentariile utilizatorilor",
"exif-relatedsoundfile": "FiÈierul audio asemÄnÄtor",
"exif-datetimeoriginal": "Data Èi ora producerii imaginii",
@@ -3100,7 +3096,6 @@
"version-libraries-description": "Descriere",
"version-libraries-authors": "Autori",
"redirect": "RedirecÈionare dupÄ fiÈier, utilizator, ID-ul paginii, al versiunii sau al jurnalului",
- "redirect-legend": "RedirecÈionare cÄtre un fiÈier sau o paginÄ",
"redirect-summary": "AceastÄ paginÄ specialÄ vÄ redirecÈioneazÄ cÄtre un fiÈier (dat fiind un nume de fiÈier), o paginÄ (dat fiind ID-ul unei versiuni sau ID-ul unei pagini) sau o paginÄ de utilizator (dat fiind un ID numeric al utilizatorului). Utilizare: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]] sau [[{{#Special:Redirect}}/user/101]].",
"redirect-submit": "Du-te",
"redirect-lookup": "CÄutare:",
@@ -3113,7 +3108,6 @@
"redirect-not-exists": "Valoarea nu a fot gÄsitÄ",
"fileduplicatesearch": "CÄutare fiÈiere duplicate",
"fileduplicatesearch-summary": "CÄutarea fiÈierelor duplicate bazatÄ pe valorile hash.",
- "fileduplicatesearch-legend": "CÄutare duplicat",
"fileduplicatesearch-filename": "Nume fiÈier:",
"fileduplicatesearch-submit": "CautÄ",
"fileduplicatesearch-info": "$1 Ã $2 pixeli MÄrime fiÈier: $3 Tip MIME: $4",
@@ -3524,5 +3518,39 @@
"sessionprovider-generic": "sesiuni $1",
"sessionprovider-mediawiki-session-cookiesessionprovider": "sesiuni pe bazÄ de module cookie.",
"sessionprovider-nocookies": "Modulele cookie par dezactivate. AsiguraÈi-vÄ cÄ aÈi activat modulele cookie Èi începeÈi din nou.",
- "randomrootpage": "PaginÄ-rÄdÄcinÄ aleatorie"
+ "randomrootpage": "PaginÄ-rÄdÄcinÄ aleatorie",
+ "log-action-filter-block": "Tip de blocare:",
+ "log-action-filter-contentmodel": "Tip de modificare a modelului de conÈinut:",
+ "log-action-filter-delete": "Tip de Ètergere:",
+ "log-action-filter-import": "Tip de import:",
+ "log-action-filter-move": "Tip de mutare:",
+ "log-action-filter-newusers": "Tip de creare de cont:",
+ "log-action-filter-patrol": "Tip de patrulare:",
+ "log-action-filter-protect": "Tip de protecÈie:",
+ "log-action-filter-rights": "Tip de schimbare de drepturi",
+ "log-action-filter-upload": "Tip de încÄrcare:",
+ "log-action-filter-all": "Toate",
+ "log-action-filter-block-block": "Blocare",
+ "log-action-filter-block-reblock": "Modificare a unei blocÄri",
+ "log-action-filter-block-unblock": "Deblocare",
+ "log-action-filter-delete-delete": "Ètergere a paginii",
+ "log-action-filter-delete-restore": "Recuperare a paginii",
+ "log-action-filter-delete-event": "Ètergere a logului",
+ "log-action-filter-delete-revision": "Ètergere a reviziei",
+ "log-action-filter-import-interwiki": "Import transwiki",
+ "log-action-filter-import-upload": "Import prin încÄrcare de XML",
+ "log-action-filter-managetags-create": "Creare tag",
+ "log-action-filter-managetags-delete": "Ètergere tag",
+ "log-action-filter-managetags-activate": "Activare tag",
+ "log-action-filter-managetags-deactivate": "Dezactivare tag",
+ "log-action-filter-patrol-patrol": "PatrulÄ manualÄ",
+ "log-action-filter-patrol-autopatrol": "PatrulÄ automatÄ",
+ "log-action-filter-protect-protect": "ProtecÈie",
+ "log-action-filter-protect-modify": "Modificarea protecÈiei",
+ "log-action-filter-protect-unprotect": "Deprotejare",
+ "log-action-filter-protect-move_prot": "Mutarea protecÈiei",
+ "log-action-filter-rights-rights": "Modificare manualÄ",
+ "log-action-filter-rights-autopromote": "Schimbare automatÄ",
+ "log-action-filter-upload-upload": "ÃncÄrcare nouÄ",
+ "log-action-filter-upload-overwrite": "ReîncÄrcare"
}
diff --git a/languages/i18n/roa-tara.json b/languages/i18n/roa-tara.json
index 5e2559e19a..f9515d4949 100644
--- a/languages/i18n/roa-tara.json
+++ b/languages/i18n/roa-tara.json
@@ -1228,6 +1228,7 @@
"recentchangeslinked-page": "Nome d'a vôsce:",
"recentchangeslinked-to": "Fa vedè le cangiaminde de le pà ggene colleghete a 'na certa pà gene",
"recentchanges-page-added-to-category": "[[:$1]] aggiunde a categorije",
+ "recentchanges-page-removed-from-category-bundled": "[[:$1]] luate da 'a categorije, [[Special:WhatLinksHere/$1|sta vôsce ste sckaffate jndr'à otre pà ggene]]",
"upload": "Careche 'u file",
"uploadbtn": "Careche 'nu fail",
"reuploaddesc": "Scangille 'u carecamende e tuerne a 'a schermete de le carecaminde",
@@ -1670,8 +1671,6 @@
"categories": "Le Categorije",
"categoriespagetext": "{{PLURAL:$1|'A seguende categorije tène|Le seguende categorije tènene}} pà ggene o media.\n[[Special:UnusedCategories|Categorije non ausate]] non ge se vèdene aqquà .\nVide pure [[Special:WantedCategories|Categorije cercate]].",
"categoriesfrom": "Fà vedè le categorije partenne da:",
- "special-categories-sort-count": "ordere pe condegge",
- "special-categories-sort-abc": "ordere alfabbeticamende",
"deletedcontributions": "Condrebbute de l'utende scangellete",
"deletedcontributions-title": "Condrebbute de l'utende scangellate",
"sp-deletedcontributions-contribs": "condrebbute",
@@ -2267,11 +2266,7 @@
"import-logentry-upload-detail": "$1 {{PLURAL:$1|revisione|revisiune}} 'mbortate",
"import-logentry-interwiki-detail": "$1 {{PLURAL:$1|revisione|revisiune}} 'mbortate da $2",
"javascripttest": "Test de JavaScript",
- "javascripttest-pagetext-noframework": "Sta pà gene jè riservate pe le esecuziune de le test de Javascript.",
- "javascripttest-pagetext-unknownframework": "Ambiende de teste scanusciute \"$1\".",
"javascripttest-pagetext-unknownaction": "Aziona scanusciute \"$1\"",
- "javascripttest-pagetext-frameworks": "Pe piacere scacchie une de le seguende ambiende de test: $1",
- "javascripttest-pagetext-skins": "Scacchie 'n'aspette pe eseguì le test cu:",
"javascripttest-qunit-intro": "Vide 'a [$1 documendazione d'u test] sus a mediawiki.org.",
"tooltip-pt-userpage": "'A pà gene utende meje",
"tooltip-pt-anonuserpage": "'A pà gene utende pe l'IP ca tu ste cange cumme",
@@ -2577,8 +2572,8 @@
"exif-colorspace": "Spazie d'u culore",
"exif-componentsconfiguration": "Significate de ogne combonende",
"exif-compressedbitsperpixel": "Mode de combressione de l'immaggine",
- "exif-pixelydimension": "Larghezze de l'immaggine",
- "exif-pixelxdimension": "Altezze de l'immaggine",
+ "exif-pixelxdimension": "Larghezze de l'immaggine",
+ "exif-pixelydimension": "Altezze de l'immaggine",
"exif-usercomment": "Commende de l'utende",
"exif-relatedsoundfile": "File audio collegate",
"exif-datetimeoriginal": "Date e ore d'a generazione de le date",
@@ -3127,7 +3122,6 @@
"version-libraries-description": "Descrizione",
"version-libraries-authors": "Auture",
"redirect": "Redirette da 'u file, utende o ID d'a revisione",
- "redirect-legend": "Redirette a 'nu file o 'na pà gene",
"redirect-summary": "Sta pà gena speciale redirezione a 'nu file (date 'u nome d'u file), 'na pà gene (date 'n'ID de revisione), o 'na pà gene utende (date 'n'ID numeriche de l'utende). Ause: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revision/328429]], o [[{{#Special:Redirect}}/user/101]].",
"redirect-submit": "Véje",
"redirect-lookup": "Mappature:",
@@ -3139,7 +3133,6 @@
"redirect-not-exists": "Valore non acchiate",
"fileduplicatesearch": "Cirche pe le file duplichete",
"fileduplicatesearch-summary": "Cirche pe file duplichete sus a base d'u valore hash.",
- "fileduplicatesearch-legend": "Cirche pe 'nu duplichete",
"fileduplicatesearch-filename": "Nome d'u faile:",
"fileduplicatesearch-submit": "Cirche",
"fileduplicatesearch-info": "$1 Ã $2 pixel Dimenzione d'u file: $3 Tipe de MIME: $4",
diff --git a/languages/i18n/ru.json b/languages/i18n/ru.json
index 17a131476e..bda02c8b3e 100644
--- a/languages/i18n/ru.json
+++ b/languages/i18n/ru.json
@@ -88,7 +88,9 @@
"ÐÑаÑноÑÑдÑева Ðлена",
"Frhdkazan",
"ЯдеÑнÑй ТÑамвай",
- "ÐÑмаил СадÑев"
+ "ÐÑмаил СадÑев",
+ "Lemondoge",
+ "SamGold"
]
},
"tog-underline": "ÐодÑÑÑкивание ÑÑÑлок:",
@@ -106,6 +108,7 @@
"tog-watchdefault": "ÐобавлÑÑÑ Ð² ÑпиÑок наблÑÐ´ÐµÐ½Ð¸Ñ Ð¸Ð·Ð¼ÐµÐ½ÑннÑе мной ÑÑÑаниÑÑ Ð¸ опиÑÐ°Ð½Ð¸Ñ Ñайлов",
"tog-watchmoves": "ÐобавлÑÑÑ Ð² ÑпиÑок наблÑÐ´ÐµÐ½Ð¸Ñ Ð¿ÐµÑеименованнÑе мной ÑÑÑаниÑÑ Ð¸ ÑайлÑ",
"tog-watchdeletion": "ÐобавлÑÑÑ Ð² ÑпиÑок наблÑÐ´ÐµÐ½Ð¸Ñ ÑдалÑннÑе мной ÑÑÑаниÑÑ Ð¸ ÑайлÑ",
+ "tog-watchuploads": "ÐобавлÑÑÑ Ð·Ð°ÐºÐ°ÑаннÑе Ð¼Ð½Ð¾Ñ ÑÐ°Ð¹Ð»Ñ Ð² ÑпиÑок наблÑдениÑ",
"tog-watchrollback": "ÐобавлÑÑÑ ÑÑÑаниÑÑ, где Ñ Ð²Ñполнил оÑкаÑ, в мой ÑпиÑок наблÑдениÑ",
"tog-minordefault": "ÐомеÑаÑÑ Ð¿Ð¾ ÑмолÑÐ°Ð½Ð¸Ñ Ð¿Ñавки как малознаÑимÑе",
"tog-previewontop": "ÐомеÑаÑÑ Ð¿ÑедпÑоÑмоÑÑ Ð¿ÐµÑед окном ÑедакÑиÑованиÑ",
@@ -365,6 +368,7 @@
"site-atom-feed": "$1 â Atom-ленÑа",
"page-rss-feed": "«$1» â RSS-ленÑа",
"page-atom-feed": "«$1» â Atom-ленÑа",
+ "feed-atom": "ÐÑом",
"red-link-title": "$1 (ÑÑÑаниÑа не ÑÑÑеÑÑвÑеÑ)",
"sort-descending": "УпоÑÑдоÑиÑÑ Ð¿Ð¾ ÑбÑваниÑ",
"sort-ascending": "УпоÑÑдоÑиÑÑ Ð¿Ð¾ возÑаÑÑаниÑ",
@@ -547,7 +551,7 @@
"noemail": "ÐÐ»Ñ ÑÑаÑÑника Ñ Ð¸Ð¼ÐµÐ½ÐµÐ¼ $1 ÑлекÑÑоннÑй адÑÐµÑ Ñказан не бÑл.",
"noemailcreate": "Ðам необÑ
одимо ÑказаÑÑ ÐºÐ¾ÑÑекÑнÑй адÑÐµÑ ÑлекÑÑонной поÑÑÑ",
"passwordsent": "ÐовÑй паÑÐ¾Ð»Ñ Ð±Ñл вÑÑлан на адÑÐµÑ ÑлекÑÑонной поÑÑÑ, ÑказаннÑй Ð´Ð»Ñ ÑÑаÑÑника $1.\n\nÐожалÑйÑÑа, пÑедÑÑавÑÑеÑÑ ÑиÑÑеме заново поÑле полÑÑÐµÐ½Ð¸Ñ Ð¿Ð°ÑолÑ.",
- "blocked-mailpassword": "РедакÑиÑование Ñ Ð²Ð°Ñего IP-адÑеÑа запÑеÑено, поÑÑÐ¾Ð¼Ñ Ð·Ð°Ð±Ð»Ð¾ÐºÐ¸Ñована и ÑÑнкÑÐ¸Ñ Ð²Ð¾ÑÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿Ð°ÑолÑ.",
+ "blocked-mailpassword": "РедакÑиÑование Ñ Ð²Ð°Ñего IP-адÑеÑа запÑеÑено. ÐÐ»Ñ Ð¿ÑедоÑвÑаÑÐµÐ½Ð¸Ñ Ð·Ð»Ð¾ÑпоÑÑеблений Ð´Ð»Ñ ÑÑого IP-адÑеÑа заблокиÑована и ÑÑнкÑÐ¸Ñ Ð²Ð¾ÑÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿Ð°ÑолÑ.",
"eauthentsent": "Ðа ÑказаннÑй адÑÐµÑ ÑлекÑÑонной поÑÑÑ Ð¾ÑпÑавлено пиÑÑмо. \nЧÑÐ¾Ð±Ñ Ð¿Ð¾Ð»ÑÑаÑÑ Ð¿Ð¸ÑÑма в далÑнейÑем, ÑледÑйÑе изложеннÑм Ñам инÑÑÑÑкÑиÑм Ð´Ð»Ñ Ð¿Ð¾Ð´ÑвеÑждениÑ, ÑÑо ÑÑÐ¾Ñ Ð°Ð´ÑÐµÑ Ð´ÐµÐ¹ÑÑвиÑелÑно пÑÐ¸Ð½Ð°Ð´Ð»ÐµÐ¶Ð¸Ñ Ð²Ð°Ð¼.",
"throttled-mailpassword": "ФÑнкÑÐ¸Ñ Ð½Ð°Ð¿Ð¾Ð¼Ð¸Ð½Ð°Ð½Ð¸Ñ Ð¿Ð°ÑÐ¾Ð»Ñ Ñже иÑполÑзовалаÑÑ Ð² ÑеÑение {{PLURAL:$1|1=поÑледнего ÑаÑа|поÑледниÑ
$1 ÑаÑов}}.\nÐÐ»Ñ Ð¿ÑедоÑвÑаÑÐµÐ½Ð¸Ñ Ð·Ð»Ð¾ÑпоÑÑеблений, ÑазÑеÑено запÑаÑиваÑÑ Ð½Ðµ более одного Ð½Ð°Ð¿Ð¾Ð¼Ð¸Ð½Ð°Ð½Ð¸Ñ {{PLURAL:$1|за $1 ÑаÑ|за $1 ÑаÑов|за $1 ÑаÑа|1=в ÑаÑ}}.",
"mailerror": "ÐÑибка пÑи оÑпÑавке поÑÑÑ: $1",
@@ -1336,7 +1340,7 @@
"recentchanges-label-bot": "ÐÑа пÑавка Ñделана боÑом",
"recentchanges-label-unpatrolled": "ÐÑа пÑавка еÑÑ Ð½Ð¸ÐºÐµÐ¼ не паÑÑÑлиÑовалаÑÑ",
"recentchanges-label-plusminus": "изменение ÑазмеÑа в байÑаÑ
",
- "recentchanges-legend-heading": "Ðегенда: ",
+ "recentchanges-legend-heading": "Ðегенда: ",
"recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (Ñм. Ñакже [[Special:NewPages|ÑпиÑок новÑÑ
ÑÑÑаниÑ]])",
"recentchanges-legend-plusminus": "(''±123'')",
"recentchanges-submit": "ÐоказаÑÑ",
@@ -1388,9 +1392,9 @@
"recentchangeslinked-page": "Ðазвание ÑÑÑаниÑÑ:",
"recentchangeslinked-to": "ÐаобоÑоÑ, показаÑÑ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð½Ð° ÑÑÑаниÑаÑ
, коÑоÑÑе ÑÑÑлаÑÑÑÑ Ð½Ð° ÑказаннÑÑ ÑÑÑаниÑÑ",
"recentchanges-page-added-to-category": "[[:$1]] добавлена в каÑегоÑиÑ",
- "recentchanges-page-added-to-category-bundled": "[[:$1]] и [[Special:WhatLinksHere/$1|$2 {{PLURAL:$2|ÑÑÑаниÑа|ÑÑÑаниÑ|ÑÑÑаниÑÑ}}]] Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ñ Ð² каÑегоÑиÑ",
+ "recentchanges-page-added-to-category-bundled": "[[:$1]] добавлена в каÑегоÑиÑ, [[Special:WhatLinksHere/$1|ÑÑа ÑÑÑаниÑа вклÑÑена в дÑÑгие ÑÑÑаниÑÑ]]",
"recentchanges-page-removed-from-category": "[[:$1]] ÑбÑана из каÑегоÑии",
- "recentchanges-page-removed-from-category-bundled": "[[:$1]] и [[Special:WhatLinksHere/$1|$2 {{PLURAL:$2|ÑÑÑаниÑа|ÑÑÑаниÑ|ÑÑÑаниÑÑ}}]] ÑÐ´Ð°Ð»ÐµÐ½Ñ Ð¸Ð· каÑегоÑии",
+ "recentchanges-page-removed-from-category-bundled": "[[:$1]] Ñдалена из каÑегоÑии, [[Special:WhatLinksHere/$1|ÑÑа ÑÑÑаниÑа вклÑÑена в дÑÑгие ÑÑÑаниÑÑ]]",
"autochange-username": "ÐвÑомаÑиÑеÑкое изменение MediaWiki",
"upload": "ÐагÑÑзиÑÑ Ñайл",
"uploadbtn": "ÐагÑÑзиÑÑ Ñайл",
@@ -1570,6 +1574,7 @@
"uploadstash-badtoken": "Ðе ÑдалоÑÑ Ð²ÑполниÑÑ ÑказаннÑе дейÑÑвиÑ. Ðозможно, иÑÑÑк ÑÑок дейÑÑÐ²Ð¸Ñ Ð²Ð°ÑиÑ
ÑÑÑÑнÑÑ
даннÑÑ
. ÐожалÑйÑÑа, пÑобÑйÑе еÑÑ Ñаз.",
"uploadstash-errclear": "ÐÑиÑÑка Ñайлов не ÑдалаÑÑ.",
"uploadstash-refresh": "ÐбновиÑÑ ÑпиÑок Ñайлов",
+ "uploadstash-thumbnail": "показаÑÑ Ð¼Ð¸Ð½Ð¸Ð°ÑÑÑÑ",
"invalid-chunk-offset": "ÐедопÑÑÑимое ÑмеÑение ÑÑагменÑа",
"img-auth-accessdenied": "ÐоÑÑÑп запÑеÑÑн",
"img-auth-nopathinfo": "ÐÑÑÑÑÑÑвÑÐµÑ PATH_INFO
.\nÐÐ°Ñ ÑеÑÐ²ÐµÑ Ð½Ðµ наÑÑÑоен Ð´Ð»Ñ Ð¿ÐµÑедаÑи ÑÑиÑ
Ñведений.\nÐозможно, он ÑабоÑÐ°ÐµÑ Ð½Ð° оÑнове CGI и не поддеÑÐ¶Ð¸Ð²Ð°ÐµÑ img_auth
.\nСм. https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Image_Authorization.",
@@ -1649,6 +1654,7 @@
"shared-repo-from": "из $1",
"shared-repo": "обÑего Ñ
ÑанилиÑа",
"shared-repo-name-wikimediacommons": "ÐикиÑклада",
+ "filepage.css": "/* CSS и помеÑÐµÐ½Ñ ÑÑда вÑ
Ð¾Ð´Ð¸Ñ Ð½Ð° ÑÑÑаниÑе опиÑÐ°Ð½Ð¸Ñ Ñайла, Ñакже на заÑÑбежного заказÑика Ðики */",
"upload-disallowed-here": "ÐÑ Ð½Ðµ можеÑе пеÑезапиÑаÑÑ ÑÑÐ¾Ñ Ñайл.",
"filerevert": "ÐозвÑÐ°Ñ Ðº ÑÑаÑой веÑÑии $1",
"filerevert-legend": "ÐозвÑаÑиÑÑ Ð²ÐµÑÑÐ¸Ñ Ñайла",
@@ -1890,8 +1896,6 @@
"categories-submit": "ÐоказаÑÑ",
"categoriespagetext": "{{PLURAL:$1|1=СледÑÑÑÐ°Ñ ÐºÐ°ÑегоÑÐ¸Ñ ÑодеÑжиÑ|СледÑÑÑие каÑегоÑии ÑодеÑжаÑ}} ÑÑÑаниÑÑ Ð¸Ð»Ð¸ медиаÑайлÑ.\nÐдеÑÑ Ð½Ðµ Ð¿Ð¾ÐºÐ°Ð·Ð°Ð½Ñ [[Special:UnusedCategories|неиÑполÑзÑемÑе каÑегоÑии]].\nСм. Ñакже [[Special:WantedCategories|ÑпиÑок ÑÑебÑемÑÑ
каÑегоÑий]].",
"categoriesfrom": "ÐоказаÑÑ ÐºÐ°ÑегоÑии, наÑинаÑÑиеÑÑ Ñ:",
- "special-categories-sort-count": "ÑпоÑÑдоÑиÑÑ Ð¿Ð¾ колиÑеÑÑвÑ",
- "special-categories-sort-abc": "ÑпоÑÑдоÑиÑÑ Ð¿Ð¾ алÑавиÑÑ",
"deletedcontributions": "УдалÑннÑй вклад ÑÑаÑÑника",
"deletedcontributions-title": "УдалÑннÑй вклад",
"sp-deletedcontributions-contribs": "вклад",
@@ -2270,6 +2274,7 @@
"ipb-unblock": "РазблокиÑоваÑÑ ÑÑаÑÑника или IP-адÑеÑ",
"ipb-blocklist": "ÐоказаÑÑ Ð´ÐµÐ¹ÑÑвÑÑÑие блокиÑовки",
"ipb-blocklist-contribs": "Ðклад {{GENDER:$1|$1}}",
+ "ipb-blocklist-duration-left": "оÑÑалоÑÑ $1",
"unblockip": "РазблокиÑоваÑÑ ÑÑаÑÑника",
"unblockiptext": "ÐÑполÑзÑйÑе ÑоÑÐ¼Ñ Ð½Ð¸Ð¶Ðµ, ÑÑÐ¾Ð±Ñ Ð²Ð¾ÑÑÑановиÑÑ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ÑÑÑ ÑедакÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ñ Ñанее заблокиÑованного IP-адÑеÑа или ÑÑÑÑной запиÑи.",
"ipusubmit": "СнÑÑÑ ÑÑÑ Ð±Ð»Ð¾ÐºÐ¸ÑовкÑ",
@@ -2511,11 +2516,7 @@
"import-logentry-upload-detail": "$1 {{PLURAL:$1|веÑÑÐ¸Ñ Ð¸Ð¼Ð¿Ð¾ÑÑиÑована|веÑÑии импоÑÑиÑовано|веÑÑий импоÑÑиÑовано}}",
"import-logentry-interwiki-detail": "$1 {{PLURAL:$1|веÑÑÐ¸Ñ Ð¸Ð¼Ð¿Ð¾ÑÑиÑована|веÑÑии импоÑÑиÑовано|веÑÑий импоÑÑиÑовано}} из $2",
"javascripttest": "ÐÑовеÑка JavaScript",
- "javascripttest-pagetext-noframework": "ÐÑа ÑÑÑаниÑа заÑезеÑвиÑована Ð´Ð»Ñ Ð·Ð°Ð¿ÑÑка JavaScript-ÑеÑÑов.",
- "javascripttest-pagetext-unknownframework": "ÐеизвеÑÑÐ½Ð°Ñ ÑÑеда ÑеÑÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Â«$1».",
"javascripttest-pagetext-unknownaction": "ÐеизвеÑÑное дейÑÑвие «$1».",
- "javascripttest-pagetext-frameworks": "ÐожалÑйÑÑа, вÑбеÑиÑе Ð¾Ð´Ð½Ñ Ð¸Ð· ÑледÑÑÑиÑ
ÑÑед ÑеÑÑиÑованиÑ: $1",
- "javascripttest-pagetext-skins": "ÐÑбеÑиÑе ÑÐµÐ¼Ñ Ð¾ÑоÑÐ¼Ð»ÐµÐ½Ð¸Ñ Ð´Ð»Ñ Ð·Ð°Ð¿ÑÑка ÑеÑÑов:",
"javascripttest-qunit-intro": "См. [$1 докÑменÑаÑÐ¸Ñ Ð¿Ð¾ ÑеÑÑиÑованиÑ] на mediawiki.org.",
"tooltip-pt-userpage": "{{GENDER:|ÐаÑа}} ÑÑÑаниÑа ÑÑаÑÑника",
"tooltip-pt-anonuserpage": "СÑÑаниÑа ÑÑаÑÑника Ð´Ð»Ñ Ð¼Ð¾ÐµÐ³Ð¾ IP",
@@ -2591,11 +2592,13 @@
"print.css": "/* РазмеÑÑннÑй здеÑÑ CSS бÑÐ´ÐµÑ Ð¿ÑименÑÑÑÑÑ Ðº веÑÑии Ð´Ð»Ñ Ð¿ÐµÑаÑи */",
"noscript.css": "/* РазмеÑÑннÑй здеÑÑ CSS бÑÐ´ÐµÑ Ð¿ÑименÑÑÑÑÑ Ð´Ð»Ñ ÑÑаÑÑников Ñ Ð¾ÑклÑÑеннÑм JavaScript */",
"group-autoconfirmed.css": "/* РазмеÑÑннÑй здеÑÑ CSS бÑÐ´ÐµÑ Ð¿ÑименÑÑÑÑÑ Ð´Ð»Ñ Ð°Ð²ÑоподÑвеÑждÑннÑÑ
ÑÑаÑÑников */",
+ "group-user.css": "/* CSS Ð´Ð»Ñ ÑазмеÑен здеÑÑ Ð·Ð°ÑÑонÑÑ ÑолÑко Ð´Ð»Ñ Ð·Ð°ÑегиÑÑÑиÑованнÑÑ
полÑзоваÑелей */",
"group-bot.css": "/* РазмеÑÑннÑй здеÑÑ CSS бÑÐ´ÐµÑ Ð¿ÑименÑÑÑÑÑ ÑолÑко Ð´Ð»Ñ Ð±Ð¾Ñов */",
"group-sysop.css": "/* РазмеÑÑннÑй здеÑÑ CSS бÑÐ´ÐµÑ Ð¿ÑименÑÑÑÑÑ ÑолÑко Ð´Ð»Ñ Ð°Ð´Ð¼Ð¸Ð½Ð¸ÑÑÑаÑоÑов */",
"group-bureaucrat.css": "/* РазмеÑÑннÑй здеÑÑ CSS бÑÐ´ÐµÑ Ð¿ÑименÑÑÑÑÑ ÑолÑко Ð´Ð»Ñ Ð±ÑÑокÑаÑов */",
"common.js": "/* РазмеÑÑннÑй здеÑÑ ÐºÐ¾Ð´ JavaScript бÑÐ´ÐµÑ Ð·Ð°Ð³ÑÑжаÑÑÑÑ Ð¿Ð¾Ð»ÑзоваÑелÑм пÑи обÑаÑении к каждой ÑÑÑаниÑе */",
"group-autoconfirmed.js": "/* РазмеÑÑннÑй здеÑÑ ÐºÐ¾Ð´ JavaScript бÑÐ´ÐµÑ Ð·Ð°Ð³ÑÑжаÑÑÑÑ ÑолÑко ÑÑаÑÑникам, имеÑÑим ÑÑаÑÑÑ Ð°Ð²ÑоподÑвеÑждÑннÑÑ
(autoconfirmed) */",
+ "group-user.js": "/* ÐдеÑÑ Ð»Ñбой JavaScript бÑÐ´ÐµÑ Ð·Ð°Ð³ÑÑжаÑÑÑÑ ÑолÑко Ð´Ð»Ñ Ð·Ð°ÑегиÑÑÑиÑованнÑÑ
полÑзоваÑелей */",
"group-bot.js": "/* РазмеÑÑннÑй здеÑÑ ÐºÐ¾Ð´ JavaScript бÑÐ´ÐµÑ Ð·Ð°Ð³ÑÑжаÑÑÑÑ ÑолÑко ÑÑаÑÑникам, имеÑÑим ÑÑаÑÑÑ Ð±Ð¾Ñов (bots) */",
"group-sysop.js": "/* РазмеÑÑннÑй здеÑÑ ÐºÐ¾Ð´ JavaScript бÑÐ´ÐµÑ Ð·Ð°Ð³ÑÑжаÑÑÑÑ ÑолÑко ÑÑаÑÑникам, имеÑÑим ÑÑаÑÑÑ Ð°Ð´Ð¼Ð¸Ð½Ð¸ÑÑÑаÑоÑов (sysops) */",
"group-bureaucrat.js": "/* РазмеÑÑннÑй здеÑÑ ÐºÐ¾Ð´ JavaScript бÑÐ´ÐµÑ Ð·Ð°Ð³ÑÑжаÑÑÑÑ ÑолÑко ÑÑаÑÑникам, имеÑÑим ÑÑаÑÑÑ Ð±ÑÑокÑаÑов (bureaucrats) */",
@@ -2751,6 +2754,7 @@
"sunday-at": "в воÑкÑеÑенÑе в $1",
"yesterday-at": "ÐÑеÑа в $1",
"bad_image_list": "ФоÑÐ¼Ð°Ñ Ð´Ð¾Ð»Ð¶ÐµÐ½ бÑÑÑ ÑледÑÑÑим:\n\nÐÑдÑÑ ÑÑиÑÑваÑÑÑÑ ÑолÑко ÑлеменÑÑ ÑпиÑка (ÑÑÑоки, наÑинаÑÑиеÑÑ Ð½Ð° Ñимвол *).\nÐеÑÐ²Ð°Ñ ÑÑÑлка ÑÑÑоки должна бÑÑÑ ÑÑÑлкой на запÑеÑÑнное Ð´Ð»Ñ Ð²ÑÑавки изобÑажение.\nÐоÑледÑÑÑие ÑÑÑлки в Ñой же ÑÑÑоке бÑдÑÑ ÑаÑÑмаÑÑиваÑÑÑÑ ÐºÐ°Ðº иÑклÑÑениÑ, Ñо еÑÑÑ ÑÑаÑÑи, кÑда изобÑажение Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð²ÐºÐ»ÑÑено.",
+ "variantname-zh-hans": "его",
"metadata": "ÐеÑаданнÑе",
"metadata-help": "Файл ÑодеÑÐ¶Ð¸Ñ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸ÑелÑнÑе даннÑе, обÑÑно добавлÑемÑе ÑиÑÑовÑми камеÑами или ÑканеÑами. ÐÑли Ñайл поÑле ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ ÑедакÑиÑовалÑÑ, Ñо некоÑоÑÑе паÑамеÑÑÑ Ð¼Ð¾Ð³ÑÑ Ð½Ðµ ÑооÑвеÑÑÑвоваÑÑ ÑекÑÑÐµÐ¼Ñ Ð¸Ð·Ð¾Ð±ÑажениÑ.",
"metadata-expand": "ÐоказаÑÑ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸ÑелÑнÑе даннÑе",
@@ -2789,8 +2793,8 @@
"exif-colorspace": "ЦвеÑовое пÑоÑÑÑанÑÑво",
"exif-componentsconfiguration": "ÐонÑигÑÑаÑÐ¸Ñ ÑвеÑовÑÑ
компоненÑов",
"exif-compressedbitsperpixel": "ÐлÑбина ÑвеÑа поÑле ÑжаÑиÑ",
- "exif-pixelydimension": "ШиÑина изобÑажениÑ",
- "exif-pixelxdimension": "ÐÑÑоÑа изобÑажениÑ",
+ "exif-pixelxdimension": "ШиÑина изобÑажениÑ",
+ "exif-pixelydimension": "ÐÑÑоÑа изобÑажениÑ",
"exif-usercomment": "ÐополниÑелÑнÑй комменÑаÑий",
"exif-relatedsoundfile": "Файл звÑкового комменÑаÑиÑ",
"exif-datetimeoriginal": "ÐÑигиналÑнÑе даÑа и вÑемÑ",
@@ -2940,6 +2944,8 @@
"exif-copyrighted-true": "ÐÑ
ÑанÑеÑÑÑ Ð°Ð²ÑоÑÑким пÑавом",
"exif-copyrighted-false": "ÐвÑоÑÑко-пÑавовой ÑÑаÑÑÑ Ð½Ðµ задан",
"exif-photometricinterpretation-1": "ЧÑÑнÑй и белÑй (ÑÑÑнÑй â 0)",
+ "exif-photometricinterpretation-4": "ÐаÑка пÑозÑаÑноÑÑи",
+ "exif-photometricinterpretation-5": "Ð Ð°Ð·Ð´ÐµÐ»ÐµÐ½Ñ (видимо в CMYK)",
"exif-unknowndate": "ÐеизвеÑÑÐ½Ð°Ñ Ð´Ð°Ñа",
"exif-orientation-1": "ÐоÑмалÑнаÑ",
"exif-orientation-2": "ÐÑÑажено по гоÑизонÑали",
@@ -3118,6 +3124,10 @@
"confirmemail_body_set": "ÐÑо-Ñо (возможно вÑ) Ñ IP-адÑеÑом $1\nÑказал даннÑй адÑÐµÑ ÑлекÑÑонной поÑÑÑ Ð´Ð»Ñ ÑÑÑÑной запиÑи «$2» в пÑоекÑе «{{SITENAME}}».\n\nЧÑÐ¾Ð±Ñ Ð¿Ð¾Ð´ÑвеÑдиÑÑ, ÑÑо ÑÑа ÑÑÑÑÐ½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑ Ð´ÐµÐ¹ÑÑвиÑелÑно пÑÐ¸Ð½Ð°Ð´Ð»ÐµÐ¶Ð¸Ñ Ð²Ð°Ð¼,\nи вклÑÑиÑÑ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ÑÑÑ Ð¾ÑпÑавки пиÑем Ñ ÑайÑа «{{SITENAME}}», оÑкÑойÑе в бÑаÑзеÑе пÑиведÑннÑÑ Ð½Ð¸Ð¶Ðµ ÑÑÑлкÑ:\n\n$3\n\nÐÑли Ð´Ð°Ð½Ð½Ð°Ñ ÑÑÑÑÐ½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑ *не* оÑноÑиÑÑÑ Ðº вам, Ñо пеÑейдиÑе по ÑледÑÑÑей ÑÑÑлке,\nÑÑÐ¾Ð±Ñ Ð¾ÑмениÑÑ Ð¿Ð¾Ð´ÑвеÑждение адÑеÑа ÑлекÑÑонной поÑÑÑ:\n\n$5\n\nÐод подÑвеÑÐ¶Ð´ÐµÐ½Ð¸Ñ Ð´ÐµÐ¹ÑÑвиÑелен до $4.",
"confirmemail_invalidated": "ÐодÑвеÑждение адÑеÑа ÑлекÑÑонной поÑÑÑ Ð¾Ñменено.",
"invalidateemail": "ÐÑмена подÑвеÑÐ¶Ð´ÐµÐ½Ð¸Ñ Ð°Ð´ÑеÑа ÑлекÑÑонной поÑÑÑ",
+ "notificationemail_subject_changed": "{{SITENAME}} заÑегиÑÑÑиÑованнÑй адÑÐµÑ ÑлекÑÑонной поÑÑÑ Ð±Ñл изменен",
+ "notificationemail_subject_removed": "{{SITENAME}} заÑегиÑÑÑиÑованнÑй адÑÐµÑ ÑлекÑÑонной поÑÑÑ Ð±Ñл Ñдален",
+ "notificationemail_body_changed": "ÐÑо-Ñо, веÑоÑÑно, вÑ, Ñ IP-адÑеÑа $1,\nизменил адÑÐµÑ ÑлекÑÑонной поÑÑÑ ÑÑеÑной запиÑи \"$2\" на \"$3\" на {{SITENAME}}.\n\nÐÑли ÑÑо бÑли не вÑ, обÑаÑиÑеÑÑ Ðº админиÑÑÑаÑоÑÑ ÑайÑа немедленно.",
+ "notificationemail_body_removed": "ÐÑо-Ñо, веÑоÑÑно вÑ, Ñ IP-адÑеÑа $1,\nÑдалил адÑÐµÑ ÑлекÑÑонной поÑÑÑ ÑÑеÑной запиÑи \"$2\" на {{SITENAME}}.\n\nÐÑли ÑÑо бÑли не вÑ, обÑаÑиÑеÑÑ Ðº админиÑÑÑаÑоÑÑ ÑайÑа немедленно.",
"scarytranscludedisabled": "[ÐнÑеÑвики-вклÑÑение оÑклÑÑено]",
"scarytranscludefailed": "[ÐÑибка обÑаÑÐµÐ½Ð¸Ñ Ðº ÑÐ°Ð±Ð»Ð¾Ð½Ñ $1]",
"scarytranscludefailed-httpstatus": "[Ðе ÑдалоÑÑ Ð·Ð°Ð³ÑÑзиÑÑ Ñаблон Ð´Ð»Ñ $1: HTTP $2]",
@@ -3185,7 +3195,7 @@
"watchlistedit-raw-done": "ÐÐ°Ñ ÑпиÑок наблÑÐ´ÐµÐ½Ð¸Ñ ÑоÑ
ÑанÑн.",
"watchlistedit-raw-added": "{{PLURAL:$1|ÐÑла добавлена|ÐÑли добавленÑ|ÐÑло добавлено}} $1 {{PLURAL:$1|запиÑÑ|запиÑи|запиÑей}}:",
"watchlistedit-raw-removed": "{{PLURAL:$1|ÐÑла Ñдалена|ÐÑли ÑдаленÑ|ÐÑло Ñдалено}} $1 {{PLURAL:$1|запиÑÑ|запиÑи|запиÑей}}:",
- "watchlistedit-clear-title": "ÐÑиÑÑка ÑпиÑка наблÑдениÑ",
+ "watchlistedit-clear-title": "ÐÑиÑÑиÑÑ ÑпиÑок наблÑдениÑ",
"watchlistedit-clear-legend": "ÐÑиÑÑиÑÑ ÑпиÑок наблÑдениÑ",
"watchlistedit-clear-explain": "ÐÑе запиÑи бÑдÑÑ ÑÐ´Ð°Ð»ÐµÐ½Ñ Ð¸Ð· ваÑего ÑпиÑка наблÑдениÑ",
"watchlistedit-clear-titles": "Ðаголовки:",
@@ -3302,7 +3312,6 @@
"version-libraries-description": "ÐпиÑание",
"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]] или [[{{#Special:Redirect}}/logid/186]].",
"redirect-submit": "ÐеÑейÑи",
"redirect-lookup": "ÐоиÑк:",
@@ -3315,7 +3324,6 @@
"redirect-not-exists": "ÐнаÑение не найдено",
"fileduplicatesearch": "ÐоиÑк одинаковÑÑ
Ñайлов",
"fileduplicatesearch-summary": "ÐоиÑк одинаковÑÑ
Ñайлов по Ñ
ÑÑ-кодÑ.",
- "fileduplicatesearch-legend": "ÐоиÑк дÑбликаÑов",
"fileduplicatesearch-filename": "ÐÐ¼Ñ Ñайла:",
"fileduplicatesearch-submit": "ÐайÑи",
"fileduplicatesearch-info": "$1 à $2 {{PLURAL:$2|пикÑелÑ|пикÑелÑ|пикÑелей}} Ð Ð°Ð·Ð¼ÐµÑ Ñайла: $3 MIME-Ñип: $4",
@@ -3516,7 +3524,7 @@
"logentry-protect-protect-cascade": "$1 заÑиÑил{{GENDER:$2||а}} $3 $4 [каÑкадно]",
"logentry-protect-modify": "$1 изменил{{GENDER:$2||а}} ÑÑÐ¾Ð²ÐµÐ½Ñ Ð·Ð°ÑиÑÑ $3 $4",
"logentry-protect-modify-cascade": "$1 изменил{{GENDER:$2||а}} ÑÑÐ¾Ð²ÐµÐ½Ñ Ð·Ð°ÑиÑÑ $3 $4 [каÑкадно]",
- "logentry-rights-rights": "$1 {{GENDER:$2|изменил|изменила}} ÑленÑÑво в гÑÑппаÑ
Ð´Ð»Ñ $3 Ñ $4 на $5",
+ "logentry-rights-rights": "$1 {{GENDER:$2|изменил|изменила}} ÑленÑÑво в гÑÑппаÑ
Ð´Ð»Ñ {{GENDER:$6|$3}} Ñ $4 на $5",
"logentry-rights-rights-legacy": "$1 {{GENDER:$2|изменил|изменила}} ÑленÑÑво в гÑÑппаÑ
Ð´Ð»Ñ $3",
"logentry-rights-autopromote": "$1 бÑл{{GENDER:$2||а}} авÑомаÑиÑеÑки пеÑеведен{{GENDER:$2||а}} из $4 в $5",
"logentry-upload-upload": "$1 загÑÑзил{{GENDER:$2||а}} $3",
@@ -3609,6 +3617,7 @@
"api-error-unknownerror": "ÐеизвеÑÑÐ½Ð°Ñ Ð¾Ñибка: «$1».",
"api-error-uploaddisabled": "Ð ÑÑой вики оÑклÑÑена возможноÑÑÑ Ð·Ð°Ð³ÑÑзки Ñайлов.",
"api-error-verification-error": "Ðозможно, ÑÑÐ¾Ñ Ñайл повÑеждÑн или Ð¸Ð¼ÐµÐµÑ Ð½ÐµÐ¿ÑавилÑное ÑаÑÑиÑение.",
+ "api-error-was-deleted": "Файл Ñ Ñаким именем бÑл Ñже Ñанее загÑÑжен и впоÑледÑÑвии ÑдалÑн.",
"duration-seconds": "$1 {{PLURAL:$1|ÑекÑнда|ÑекÑндÑ|ÑекÑнд}}",
"duration-minutes": "$1 {{PLURAL:$1|минÑÑа|минÑÑÑ|минÑÑ}}",
"duration-hours": "$1 {{PLURAL:$1|ÑаÑ|ÑаÑа|ÑаÑов}}",
@@ -3699,6 +3708,7 @@
"special-characters-group-ipa": "ÐФР(IPA)",
"special-characters-group-symbols": "СимволÑ",
"special-characters-group-greek": "ÐÑеÑеÑкие",
+ "special-characters-group-greekextended": "РаÑÑиÑеннÑй гÑеÑеÑкий",
"special-characters-group-cyrillic": "ÐиÑиллиÑа",
"special-characters-group-arabic": "ÐÑабÑкие",
"special-characters-group-arabicextended": "ÐÑабÑкие ÑаÑÑиÑеннÑе",
@@ -3726,5 +3736,54 @@
"sessionprovider-generic": "$1 ÑеÑÑий",
"sessionprovider-mediawiki-session-cookiesessionprovider": "ÑеÑÑий на оÑнове кÑки",
"sessionprovider-nocookies": "ÐогÑÑ Ð±ÑÑÑ Ð¾ÑклÑÑÐµÐ½Ñ ÐºÑки. УбедиÑеÑÑ, ÑÑо Ñ Ð²Ð°Ñ Ð²ÐºÐ»ÑÑÐµÐ½Ñ ÐºÑки и наÑниÑе заново.",
- "randomrootpage": "СлÑÑÐ°Ð¹Ð½Ð°Ñ ÐºÐ¾ÑÐ½ÐµÐ²Ð°Ñ ÑÑÑаниÑа"
+ "randomrootpage": "СлÑÑÐ°Ð¹Ð½Ð°Ñ ÐºÐ¾ÑÐ½ÐµÐ²Ð°Ñ ÑÑÑаниÑа",
+ "log-action-filter-block": "Тип блокиÑовки:",
+ "log-action-filter-contentmodel": "Тип модиÑикаÑии contentmodel:",
+ "log-action-filter-delete": "Тип ÑдалениÑ:",
+ "log-action-filter-import": "Тип импоÑÑа:",
+ "log-action-filter-managetags": "Тип Ñега ÑпÑавленÑеÑкиÑ
дейÑÑвий:",
+ "log-action-filter-move": "Тип пеÑеименованиÑ:",
+ "log-action-filter-newusers": "Тип ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ ÑÑÑÑной запиÑи:",
+ "log-action-filter-patrol": "Тип паÑÑÑлиÑованиÑ:",
+ "log-action-filter-protect": "Тип заÑиÑÑ:",
+ "log-action-filter-rights": "Тип Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¿Ñав",
+ "log-action-filter-suppress": "Тип ÑокÑÑÑиÑ",
+ "log-action-filter-upload": "Тип загÑÑзки:",
+ "log-action-filter-all": "ÐÑе",
+ "log-action-filter-block-block": "ÐлокиÑовка",
+ "log-action-filter-block-reblock": "Ðзменение блокиÑовки",
+ "log-action-filter-block-unblock": "РазблокиÑовка",
+ "log-action-filter-contentmodel-change": "Ðзменение модели ÑодеÑжимого",
+ "log-action-filter-contentmodel-new": "Создание ÑÑÑаниÑÑ Ñ Ð½ÐµÑÑандаÑÑной моделÑÑ Contentmodel",
+ "log-action-filter-delete-delete": "Ð£Ð´Ð°Ð»ÐµÐ½Ð¸Ñ ÑÑÑаниÑÑ",
+ "log-action-filter-delete-restore": "ÐоÑÑÑановление ÑÑÑаниÑÑ",
+ "log-action-filter-delete-event": "Удаление жÑÑнала",
+ "log-action-filter-delete-revision": "Удаление веÑÑии",
+ "log-action-filter-import-interwiki": "ТÑанÑвики импоÑÑ",
+ "log-action-filter-import-upload": "ÐмпоÑÑ ÑеÑез загÑÑÐ·ÐºÑ XML",
+ "log-action-filter-managetags-create": "Создание Ñегов",
+ "log-action-filter-managetags-delete": "Удаление Ñегов",
+ "log-action-filter-managetags-activate": "ÐкÑиваÑÐ¸Ñ Ñегов",
+ "log-action-filter-managetags-deactivate": "ÐÑклÑÑение Ñега",
+ "log-action-filter-move-move": "ÐвигаÑÑÑÑ Ð±ÐµÐ· пеÑезапиÑи пеÑеадÑеÑаÑий",
+ "log-action-filter-move-move_redir": "ÐеÑемеÑÑиÑÑ Ñ Ð·Ð°Ð¼ÐµÐ½Ð¾Ð¹ пеÑеадÑеÑаÑий",
+ "log-action-filter-newusers-create": "Создание анонимнÑм ÑÑаÑÑником",
+ "log-action-filter-newusers-create2": "Создание заÑегиÑÑÑиÑованнÑм ÑÑаÑÑником",
+ "log-action-filter-newusers-autocreate": "ÐвÑомаÑиÑеÑкое Ñоздание",
+ "log-action-filter-newusers-byemail": "Создание Ñ Ð¿Ð°Ñолем, пÑиÑланнÑм по ÑлекÑÑонной поÑÑе",
+ "log-action-filter-patrol-patrol": "Ð ÑÑное паÑÑÑлиÑование",
+ "log-action-filter-patrol-autopatrol": "ÐвÑомаÑиÑеÑкое паÑÑÑлиÑование",
+ "log-action-filter-protect-protect": "ÐаÑиÑа",
+ "log-action-filter-protect-modify": "Ðзменение заÑиÑÑ",
+ "log-action-filter-protect-unprotect": "СнÑÑие заÑиÑÑ",
+ "log-action-filter-protect-move_prot": "ÐеÑÐµÐ½Ð¾Ñ Ð·Ð°ÑиÑÑ",
+ "log-action-filter-rights-rights": "Ð ÑÑное изменение",
+ "log-action-filter-rights-autopromote": "ÐвÑомаÑиÑеÑкое изменение",
+ "log-action-filter-suppress-event": "СокÑÑÑие жÑÑнала",
+ "log-action-filter-suppress-revision": "СокÑÑÑие веÑÑии",
+ "log-action-filter-suppress-delete": "СокÑÑÑие ÑÑÑаниÑÑ",
+ "log-action-filter-suppress-block": "СокÑÑÑие полÑзоваÑÐµÐ»Ñ ÑеÑез блокиÑовки",
+ "log-action-filter-suppress-reblock": "СокÑÑÑие полÑзоваÑÐµÐ»Ñ ÑеÑез повÑоÑное блокиÑование",
+ "log-action-filter-upload-upload": "ÐÐ¾Ð²Ð°Ñ Ð·Ð°Ð³ÑÑзка",
+ "log-action-filter-upload-overwrite": "ÐовÑоÑно загÑÑзиÑÑ"
}
diff --git a/languages/i18n/rue.json b/languages/i18n/rue.json
index 1c1c7cee1d..60b29929fb 100644
--- a/languages/i18n/rue.json
+++ b/languages/i18n/rue.json
@@ -1507,8 +1507,6 @@
"categories": "ÐаÑеÒоÑÑÑ",
"categoriespagetext": "{{PLURAL:$1|ÐаÑлÑдÑÑÑа каÑеÒоÑÑÑ|ÐаÑлÑдÑÑÑÑ ÐºÐ°ÑеÒоÑÑÑ}} {{PLURAL:$1|обÑÑгÑÑ|обÑÑгÑÑÑÑ}} ÑÑоÑÑÐ½ÐºÑ Ð°Ð±Ð¾ ÑайлÑ.\nÐÐµÐ²ÐºÐ°Ð·Ð°Ð½Ñ ÑÑÑÑ Ñо [[Special:UnusedCategories|неÑ
оÑÐ½Ð¾Ð²Ð°Ð½Ñ ÐºÐ°ÑеÒоÑÑÑ]].\nÐоÑмоÑÑÑе ÑÑ ÑÑж на [[Special:WantedCategories|Ð¶Ð°Ð´Ð°Ð½Ñ ÐºÐ°ÑеÒоÑÑÑ]].",
"categoriesfrom": "ÐказаÑи ÑÑоÑÑнкÑ, ÑÑо ÑÑ Ð·Ð°ÑÑнаÑÑÑ Ð½Ð°:",
- "special-categories-sort-count": "ÑпоÑÑдковаÑи за кÑлÑкоÑÑÑв",
- "special-categories-sort-abc": "ÑпоÑÑдковаÑи за алÑавÑÑом",
"deletedcontributions": "ÐÑÐ¼Ð°Ð·Ð°Ð½Ñ Ð¿ÑиÑÐ¿ÐµÐ²ÐºÑ Ñ
оÑноваÑелÑ",
"deletedcontributions-title": "ÐÑÐ¼Ð°Ð·Ð°Ð½Ñ Ð¿ÑиÑÐ¿ÐµÐ²ÐºÑ Ñ
оÑноваÑелÑ",
"sp-deletedcontributions-contribs": "пÑиÑпевкÑ",
@@ -2053,10 +2051,6 @@
"import-logentry-upload-detail": "$1 {{PLURAL:$1|ÑевÑзÑÑ|ÑевÑзÑÑ|ÑевÑзÑй}}",
"import-logentry-interwiki-detail": "$1 {{PLURAL:$1|ÑевÑзÑÑ|ÑевÑзÑÑ|ÑевÑзÑй}} з $2",
"javascripttest": "ТеÑÑÐ¾Ð²Ð°Ð½Ñ JavaScript",
- "javascripttest-pagetext-noframework": "ТоÑа ÑÑоÑÑнка Ñ ÑезеÑвована пÑо ÑеÑÑÐ¾Ð²Ð°Ð½Ñ JavaScript.",
- "javascripttest-pagetext-unknownframework": "ÐезнанÑй ÑÑеймвоÑк ÑеÑÑÐ¾Ð²Ð°Ð½Ñ â$1â.",
- "javascripttest-pagetext-frameworks": "ÐÑоÑиме, зволÑÑе Ñден з наÑÑÑпнÑÑ
ÑÑеймвоÑкÑв ÑеÑÑÐ¾Ð²Ð°Ð½Ñ : $1",
- "javascripttest-pagetext-skins": "ÐволÑÑе взглÑд пÑд коÑÑÑм ÑÑ Ð¼Ð°ÑÑÑ ÑеÑÑÑ ÑпÑÑÑиÑи:",
"javascripttest-qunit-intro": "СмоÑÑÑе [$1 докÑменÑаÑÑÑ ÑеÑÑованÑ] на mediawiki.org",
"tooltip-pt-userpage": "ÐаÑа ÑÑоÑÑнка Ñ
оÑноваÑелÑ",
"tooltip-pt-anonuserpage": "СÑоÑÑнка Ñ
оÑноваÑÐµÐ»Ñ Ð¿Ñо IP-адÑеÑÑ, з коÑÑой едÑÑÑÑÑе",
@@ -2298,8 +2292,8 @@
"exif-colorspace": "ФаÑебнÑй пÑоÑÑоÑ",
"exif-componentsconfiguration": "ÐонÑÑÒÑÑаÑÑÑ ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÐµÐ½ÑÑв ÑаÑбÑ",
"exif-compressedbitsperpixel": "ÐомпÑÑмаÑнÑй ÑежÑм",
- "exif-pixelydimension": "ШÑÑка обÑазÑÑка",
- "exif-pixelxdimension": "ÐÑÑка обÑазÑÑка",
+ "exif-pixelxdimension": "ШÑÑка обÑазÑÑка",
+ "exif-pixelydimension": "ÐÑÑка обÑазÑÑка",
"exif-usercomment": "ÐодаÑковÑй коменÑаÑÑ",
"exif-relatedsoundfile": "ÐвÑзанÑй звÑковÑй Ñайл",
"exif-datetimeoriginal": "ÐÑÑÒÑналнÑй даÑÑм Ñ ÑаÑ",
@@ -2710,7 +2704,6 @@
"version-entrypoints-header-entrypoint": "ÐÑÑÑпнÑй пÑнкÑ",
"version-entrypoints-header-url": "URL",
"redirect": "ÐапÑÑмлÑÐ½Ñ Ð·Ð° Ñайлом, Ñ
оÑноваÑелÑм або ID ÑевÑзÑÑ",
- "redirect-legend": "ÐапÑÑмиÑи на Ñайл або ÑÑоÑÑнкÑ",
"redirect-summary": "ТоÑа ÑпеÑÑална ÑÑоÑÑнка напÑÑмÑÑ Ð½Ð° Ñайл (по назвÑ), ÑÑоÑÑÐ½ÐºÑ (по ID ÑевÑзÑÑ) або Ñ
оÑноваÑÐµÐ»Ñ (по ÑÑÑелнÑм Ñ
оÑноваÑелÑвÑм ID).",
"redirect-submit": "ÐеÑейÑи",
"redirect-lookup": "ÐайÑи:",
@@ -2722,7 +2715,6 @@
"redirect-not-exists": "ÐнаÑÑÐ½Ñ ÑÑ Ð½Ðµ наÑло",
"fileduplicatesearch": "ÐлÑÐ´Ð°Ð½Ñ Ð´ÑплÑкаÑнÑÑ
ÑайлÑв",
"fileduplicatesearch-summary": "ÐлÑÐ´Ð°Ð½Ñ Ð´ÑплÑÑÑÑнÑÑ
ÑайлÑв ÑÑ Ð±Ð°Ð·ÑÑ Ð½Ð° ÑÑ
Ð³ÐµÑ ÑÑнкÑÑÑ.",
- "fileduplicatesearch-legend": "ÐлÑÐ´Ð°Ð½Ñ Ð´ÑплÑкаÑÑв",
"fileduplicatesearch-filename": "Ðазва ÑайлÑ:",
"fileduplicatesearch-submit": "ÐлÑдаÑи",
"fileduplicatesearch-info": "$1 à $2 пÑкÑелÑв РозмÑÑ ÑайлÑ: $3 MIME-ÑÑп: $4",
diff --git a/languages/i18n/sa.json b/languages/i18n/sa.json
index 1c1d53445d..6bd7f31c99 100644
--- a/languages/i18n/sa.json
+++ b/languages/i18n/sa.json
@@ -1394,9 +1394,9 @@
"listfiles-delete": "à¤
पाà¤à¥à¤°à¤¿à¤¯à¤¤à¤¾à¤®à¥",
"listfiles-summary": "à¤à¤¤à¤¦à¥à¤µà¤¿à¤¶à¥à¤·à¤ªà¥à¤à¤®à¥ à¤à¤¤à¥à¤¤à¤¾à¤°à¤¿à¤¤à¤¸à¤à¥à¤à¤¿à¤à¤¾à¤ पà¥à¤°à¤¦à¤°à¥à¤¶à¤¯à¤¤à¤¿ । \nयà¥à¤à¤à¥à¤¨ शà¥à¤¦à¥à¤§à¤¾à¤ à¤
तिनà¥à¤¤à¤¨à¤ सà¤à¥à¤à¤¿à¤à¤¾à¤ à¤à¥à¤µà¤²à¤®à¥ à¤
तà¥à¤° पà¥à¤°à¤¦à¤°à¥à¤¶à¤¯à¤¤à¤¿ ।",
"listfiles_search_for": "माधà¥à¤¯à¤®à¤¨à¤¾à¤®à¤§à¥à¤¯à¤¾à¤°à¥à¤¥à¤®à¥ à¤
नà¥à¤µà¤¿à¤·à¤¤à¥ ।",
- "listfiles-userdoesnotexist": "\"$1\" à¤à¤¤à¥à¤¯à¤·à¤¾ सदसà¥à¤¯à¤²à¥à¤à¤¾ पà¤à¥à¤à¥à¤à¥à¤¤à¤ नासà¥à¤¤à¤¿ ।",
+ "listfiles-userdoesnotexist": "\"$1\" à¤à¤¤à¥à¤¯à¤·à¤¾ सदसà¥à¤¯à¤²à¥à¤à¤¾ पà¤à¥à¤à¥à¤à¥à¤¤à¤¾ नासà¥à¤¤à¤¿ ।",
"imgfile": "सà¤à¤à¤¿à¤à¤¾",
- "listfiles": "सà¤à¥à¤à¤¿à¤à¤¾à¤µà¤²à¥ ।",
+ "listfiles": "सà¤à¥à¤à¤¿à¤à¤¾à¤µà¤²à¥",
"listfiles_thumb": "à¤
à¤à¤à¥à¤·à¥à¤ नà¤à¤¾à¤à¤¾à¤°à¤®à¥ ।",
"listfiles_date": "दिनाà¤à¥à¤",
"listfiles_name": "नाम",
@@ -1640,8 +1640,6 @@
"categories": "वरà¥à¤à¤¾à¤",
"categoriespagetext": "निमà¥à¤¨à¥à¤à¥à¤¤à¤¾à¤ {{PLURAL:$1|शà¥à¤°à¥à¤£à¥|शà¥à¤°à¥à¤£à¤¯à¤}} पà¥à¤à¤¾à¤¨à¤¿ माधà¥à¤¯à¤®à¤¾à¤¨à¥ वा यà¥à¤à¥à¤¤à¤¾à¤ ।\nयसà¥à¤¯à¤¾à¤ शà¥à¤°à¥à¤£à¥à¤¯à¤¾à¤ [[Special:UnusedCategories|à¤
पà¥à¤°à¤¯à¥à¤à¥à¤¤à¤¶à¥à¤°à¥à¤£à¥à¤¯à¤]] à¤
तà¥à¤° न सनà¥à¤¤à¤¿ ।\n[[Special:WantedCategories|à¤
पà¥à¤à¥à¤·à¤¿à¤¤à¤¶à¥à¤°à¥à¤£à¥à¤¯à¤]] à¤
पि पशà¥à¤¯à¤¤à¥ ।",
"categoriesfrom": "à¤à¤¤à¥à¤¯à¤¸à¥à¤®à¤¾à¤¤à¥ à¤à¤°à¤à¥à¤¯à¤®à¤¾à¤£à¤¾à¤¨à¤¿ पà¥à¤·à¥à¤ ानि दरà¥à¤¶à¥à¤¯à¤¨à¥à¤¤à¤¾à¤®à¥:",
- "special-categories-sort-count": "à¤à¤£à¤¨à¤¾à¤¨à¥à¤à¥à¤£à¤ वरà¥à¤à¥à¤à¤°à¥à¤¤à¥ ।",
- "special-categories-sort-abc": "à¤
à¤à¤¾à¤°à¤¦à¤¿à¤à¥à¤°à¤®à¥à¤£ वरà¥à¤à¥à¤à¤°à¥à¤¤à¥ ।",
"deletedcontributions": "à¤
पमरà¥à¤à¤¿à¤¤à¤¾à¤¨à¤¿ यà¥à¤à¤à¤¯à¥à¤à¤¦à¤¾à¤¨à¤¾à¤¨à¤¿ ।",
"deletedcontributions-title": "à¤
पमरà¥à¤à¤¿à¤¤à¤¾à¤¨à¤¿ यà¥à¤à¤à¤¯à¥à¤à¤¦à¤¾à¤¨à¤¾à¤¨à¤¿ ।",
"sp-deletedcontributions-contribs": "यà¥à¤à¤¦à¤¾à¤¨à¤¾à¤¨à¤¿ ।",
@@ -1914,7 +1912,7 @@
"mycontris": "यà¥à¤à¤¦à¤¾à¤¨à¤¾à¤¨à¤¿",
"anoncontribs": "à¤
à¤à¤¶à¤¦à¤¾à¤¤à¤¾",
"contribsub2": "($2) à¤à¥à¤¤à¥ {{GENDER:$3|$1}}",
- "contributions-userdoesnotexist": "\"$1\" à¤à¤¤à¥à¤¯à¤·à¤¾ सदसà¥à¤¯à¤²à¥à¤à¤¾ पà¤à¥à¤à¥à¤à¥à¤¤à¤ नासà¥à¤¤à¤¿ ।",
+ "contributions-userdoesnotexist": "\"$1\" à¤à¤¤à¥à¤¯à¤·à¤¾ सदसà¥à¤¯à¤²à¥à¤à¤¾ पà¤à¥à¤à¥à¤à¥à¤¤à¤¾ नासà¥à¤¤à¤¿ ।",
"nocontribs": "à¤à¤¤à¤¾à¤¦à¥à¤¶à¤¯à¥à¤à¥à¤¯à¤¤à¤¾à¤à¤¿à¤ समठपरिवरà¥à¤¤à¤¨à¤¾à¤¨à¤¿ न दà¥à¤·à¥à¤à¤¾à¤¨à¤¿ ।",
"uctop": "वरà¥à¤¤à¤®à¤¾à¤¨à¤",
"month": "à¤
सà¥à¤®à¤¾à¤¤à¥ मासातॠ(पà¥à¤°à¤¾à¤à¥à¤¤à¤¨à¤¾à¤¨à¤¿ à¤):",
@@ -2143,7 +2141,7 @@
"export-addnstext": "नामसà¥à¤¥à¤¾à¤¨à¤¾à¤¤à¥ पà¥à¤à¤¾à¤¨à¤¿ यà¥à¤à¤¯à¤¤à¥ ।",
"export-addns": "सà¤à¤¯à¥à¤à¤¯à¤¤à¤¿",
"export-download": "सà¤à¥à¤à¤¿à¤à¤¾ à¤à¤µ रà¤à¥à¤·à¤¤à¥ ।",
- "export-templates": "पà¥à¤°à¤¾à¤à¥à¤¤à¥à¤ à¤
नरà¥à¤à¤¾à¤µà¤¯à¤¤à¥ ।",
+ "export-templates": "फलà¤à¤¾à¤¨à¤¿ à¤à¤¯à¤¾à¤¤à¤ à¤à¤°à¥à¤¤à¥",
"export-pagelinks": "...à¤à¤¤à¥à¤¯à¤¸à¥à¤¯ à¤à¤¾à¤¹à¤¾à¤¯ à¤
नà¥à¤¬à¤¦à¥à¤§à¤ªà¥à¤à¤¾à¤¨à¤¿ à¤
नà¥à¤¤à¤°à¤à¤¾à¤µà¤¯à¤¤à¥ ।",
"allmessages": "वà¥à¤¯à¤µà¤¸à¥à¤¥à¤¾ सनà¥à¤¦à¥à¤¶à¤¾à¤",
"allmessagesname": "नाम",
@@ -2175,13 +2173,13 @@
"thumbnail_gd-library": "à¤
पà¥à¤°à¥à¤£à¤ à¤à¤¿.à¤à¤¿.à¤à¥à¤°à¤¨à¥à¤¥à¤¾à¤²à¤¯à¤¾à¤¨à¥à¤¨à¥à¤¯à¤¾à¤¸à¤ : विनषà¥à¤à¤ à¤à¤¾à¤°à¥à¤¯à¤à¤²à¤¾à¤ªà¤ $1",
"thumbnail_image-missing": "सà¤à¥à¤à¤¿à¤à¤¾ विनषà¥à¤à¤¾ à¤à¤¤à¤¿ à¤à¤¾à¤¤à¤¿ : $1",
"thumbnail_image-failure-limit": "à¤à¤¤à¤¤à¥ थमà¥à¤¬à¤²à¤¾à¤à¤¨à¥ सिदà¥à¤§à¤ à¤à¤°à¥à¤¤à¥à¤ सदà¥à¤¯à¤ à¤à¤¾à¤¤à¤¾à¤ बहवठà¤
सफलाठपà¥à¤°à¤¯à¤¾à¤¸à¤¾à¤ सनà¥à¤¤à¤¿ ($1 à¤à¤¤ à¤
धिà¤à¤¾à¤) । à¤à¥à¤ªà¤¯à¤¾ पà¥à¤¨à¤ पà¥à¤°à¤¯à¤¤à¤¤à¤¾à¤®à¥ ।",
- "import": "पà¥à¤·à¥à¤ ानाठनिरà¥à¤¯à¤¾à¤¤à¤ à¤à¤°à¥à¤¤à¥",
+ "import": "पà¥à¤·à¥à¤ मॠà¤à¤¯à¤¾à¤¤à¤ à¤à¤°à¥à¤¤à¥",
"importinterwiki": "à¤
नà¥à¤¯à¤¸à¥à¤®à¤¾à¤¤à¥ विà¤à¤¿-à¤à¤¾à¤²à¤¸à¥à¤¥à¤¾à¤¨à¤¾à¤¤à¥ पà¥à¤·à¥à¤ ानि à¤à¤¯à¤¾à¤¤à¤ à¤à¤°à¥à¤¤à¥",
"import-interwiki-text": "à¤à¤¯à¤¾à¤¤à¤ à¤à¤°à¥à¤¤à¥à¤®à¥ à¤à¤à¥à¤à¤¨ विà¤à¤¿-पà¥à¤°à¤à¤²à¥à¤ªà¤, à¤à¤¿à¤à¥à¤à¤¿à¤¤à¥ पà¥à¤·à¥à¤ ठठà¤à¤¿à¤¨à¥à¤¤à¥ ।\nसà¤à¤¸à¥à¤à¤°à¤£à¤¸à¥à¤¯ दिनाà¤à¥à¤à¤, समà¥à¤ªà¤¾à¤¦à¤à¤¸à¥à¤¯ नाम यथा सà¥à¤¥à¤¾à¤¨à¥ à¤à¤µà¤¿à¤·à¥à¤¯à¤¤à¤¿ ।\nà¤
नà¥à¤¯à¤¸à¥à¤®à¤¾à¤¤à¥ विà¤à¤¿-पà¥à¤°à¤à¤²à¥à¤ªà¤¾à¤¤à¥ à¤à¤¯à¤¾à¤¤à¤à¥à¤¤à¤¾à¤ सरà¥à¤µà¤¾à¤ सà¤à¤°à¤à¥à¤·à¤¿à¤¤à¤¾à¤½à¤½à¤µà¤²à¥à¤¯à¤ [[Special:Log/import|à¤à¤¯à¤¾à¤¤à¤¸à¤à¤°à¤à¥à¤·à¤¿à¤¤à¤¾à¤½à¤½à¤²à¥à¤¯à¤¾à¤]] à¤à¤µà¤¿à¤·à¥à¤¯à¤¨à¥à¤¤à¤¿ ।",
"import-interwiki-sourcewiki": "सà¥à¤°à¥à¤¤-विà¤à¤¿ :",
"import-interwiki-sourcepage": "सà¥à¤°à¥à¤¤à¤ªà¥à¤·à¥à¤ मॠ:",
- "import-interwiki-history": "à¤à¤¤à¤¤à¥à¤ªà¥à¤à¤¾à¤°à¥à¤¥à¤ सरà¥à¤µà¥à¤¤à¤¿à¤¹à¤¾à¤¸à¤¾à¤¨à¥ पà¥à¤¨à¤°à¤¾à¤µà¥à¤¤à¥à¤¤à¥à¤ ठपà¥à¤°à¤à¥à¤¤à¥à¤ à¤à¤°à¥à¤¤à¥ ।",
- "import-interwiki-templates": "पà¥à¤°à¤¾à¤à¥à¤¤à¥à¤ à¤
नरà¥à¤à¤¾à¤µà¤¯à¤¤à¥ ।",
+ "import-interwiki-history": "à¤à¤¤à¤¸à¥à¤¯ पà¥à¤·à¥à¤ सà¥à¤¯ सरà¥à¤µà¤®à¥ à¤à¤¤à¤¿à¤¹à¤¾à¤¸à¤®à¥ à¤à¤¯à¤¤à¤ à¤à¤°à¥à¤¤à¥",
+ "import-interwiki-templates": "सरà¥à¤µà¥à¤ à¤à¤ªà¤«à¤²à¤à¥à¤ सह (फलà¤à¥ पà¥à¤°à¤¯à¥à¤à¥à¤¤à¤¾à¤¨à¤¿) à¤à¤¯à¤¾à¤¤à¤ à¤à¤°à¥à¤¤à¥",
"import-interwiki-submit": "à¤à¤¯à¤¾à¤¤à¤ à¤à¤°à¥à¤¤à¥ ।",
"import-mapping-default": "मà¥à¤²à¤¸à¥à¤¥à¤¿à¤¤à¤¿à¤®à¥ à¤à¤¯à¤¾à¤¤à¤ à¤à¤°à¥à¤¤à¥",
"import-mapping-namespace": "नामाà¤à¤¾à¤¶à¥ à¤à¤¯à¤¾à¤¤à¤ à¤à¤°à¥à¤¤à¥ :",
@@ -2189,7 +2187,7 @@
"import-upload-filename": "सà¤à¥à¤à¤¿à¤à¤¾à¤¨à¤¾à¤®",
"import-comment": "à¤à¤¿à¤ªà¥à¤ªà¤£à¥ :",
"importtext": "[[Special:Export|export utility]] à¤à¤¤à¥à¤¨à¤¾à¤¨à¥à¤¬à¤¨à¥à¤§à¥à¤¨ सà¥à¤°à¥à¤¤à¤µà¤¿à¤à¤¿à¤¤à¤ सà¤à¥à¤à¤¿à¤à¤¾à¤¨à¤¾à¤ निरà¥à¤¯à¤¾à¤¤à¤ à¤à¤°à¥à¤¤à¥ । à¤à¤µà¤¦à¥à¤¯à¤¸à¤à¥à¤à¤£à¤à¥ सà¥à¤°à¤à¥à¤·à¥à¤¯ à¤
तà¥à¤° à¤à¤¤à¥à¤¤à¤¾à¤°à¤¯à¤¤à¥ ।",
- "importstart": "पà¥à¤à¤¾à¤¨à¤¾à¤®à¥ à¤à¤¯à¤¾à¤¤à¤....",
+ "importstart": "à¤à¤¯à¤¾à¤¤à¤à¤¾à¤°à¥à¤¯à¤ पà¥à¤°à¤à¤²à¤¤à¤¿...",
"import-revision-count": "$1 {{PLURAL:$1|पà¥à¤¨à¤°à¤¾à¤µà¥à¤¤à¥à¤¤à¤¿à¤}}",
"importnopages": "à¤à¤¯à¤¾à¤¤à¤ à¤à¤°à¥à¤¤à¥à¤ पà¥à¤à¤¾à¤¨à¤¿ न सनà¥à¤¤à¤¿ ।",
"imported-log-entries": "à¤à¤¯à¤¾à¤¤à¤à¥à¤¤à¤®à¥$1{{PLURAL:$1|log entry|पà¥à¤°à¤µà¥à¤¶à¤¸à¥à¤à¤¿à¤à¤¾à¤}}.",
@@ -2225,11 +2223,7 @@
"import-logentry-upload-detail": "$1 {{PLURAL:$1|सà¤à¤¸à¥à¤à¤°à¤£à¤¸à¥à¤¯|सà¤à¤¸à¥à¤à¤°à¤£à¤¾à¤¨à¤¾à¤®à¥}} à¤à¤¯à¤¾à¤¤à¤ à¤
à¤à¤µà¤¤à¥",
"import-logentry-interwiki-detail": "$1 {{PLURAL:$1|सà¤à¤¸à¥à¤à¤°à¤£à¤¸à¥à¤¯|सà¤à¤¸à¥à¤à¤°à¤£à¤¾à¤¨à¤¾à¤®à¥}} à¤à¤¯à¤¾à¤¤à¤ à¤
à¤à¤µà¤¤à¥ $2",
"javascripttest": "à¤à¤¾à¤µà¤¾à¤²à¤¿à¤ªà¤¿à¤ªà¤°à¥à¤à¥à¤·à¤£à¤®à¥ ।",
- "javascripttest-pagetext-noframework": "à¤à¤¾à¤µà¤²à¤¿à¤ªà¤¿à¤à¤¾à¤²à¤¨à¤ªà¤°à¥à¤à¥à¤·à¤¾à¤°à¥à¤¥à¤®à¥ à¤à¤¤à¤¤à¥à¤ªà¥à¤à¤®à¥ à¤à¤°à¤à¥à¤·à¤¿à¤¤à¤®à¥ ।",
- "javascripttest-pagetext-unknownframework": "à¤
à¤à¥à¤à¤¾à¤¤à¤ªà¤°à¥à¤à¥à¤·à¤¾à¤ªà¥à¤°à¤à¥à¤°à¤¿à¤¯à¤¾ $1",
"javascripttest-pagetext-unknownaction": "\"$1\" à¤
à¤à¥à¤à¤¾à¤¤à¤à¥à¤°à¤¿à¤¯à¤¾ ।",
- "javascripttest-pagetext-frameworks": "à¤
धॠदतà¥à¤¤à¥à¤·à¥ à¤à¤à¥à¤à¤¿à¤¦à¥à¤à¤¾à¤ परà¥à¤à¥à¤·à¤¾à¤ªà¥à¤°à¤à¥à¤°à¤¿à¤¯à¤¾à¤ à¤à¤¿à¤¨à¥à¤¤à¥ : $1",
- "javascripttest-pagetext-skins": "à¤
नà¥à¤¨ सह परà¥à¤à¥à¤·à¤¾à¤ सà¤à¥à¤à¤¾à¤²à¤¯à¤¿à¤¤à¥à¤ à¤à¤¾à¤à¤¿à¤¤à¥ तà¥à¤µà¤à¥ à¤à¤¿à¤¨à¥à¤¤à¥ ।",
"javascripttest-qunit-intro": "mediawiki.org. [$1 à¤
à¤à¤¿à¤²à¥à¤à¤ªà¤°à¥à¤à¥à¤·à¤¾] à¤à¤¤à¥à¤¯à¤¤à¥à¤° पशà¥à¤¯à¤¤à¥ ।",
"tooltip-pt-userpage": "{{GENDER:|à¤à¤µà¤¤à¤/à¤à¤µà¤¤à¥à¤¯à¤¾à¤ सदसà¥à¤¯à¤ªà¥à¤·à¥à¤ मà¥}}",
"tooltip-pt-anonuserpage": "à¤à¤ªà¤¿à¤¸à¤à¥à¤à¥à¤¤à¤¾à¤°à¥à¤¥à¤ यà¥à¤à¤à¤ªà¥à¤à¤ à¤à¤µà¤¾à¤¨à¥ समà¥à¤ªà¤¾à¤¦à¤¯à¤¤à¤¿ à¤à¤µà¤®à¥..",
@@ -2477,8 +2471,8 @@
"exif-colorspace": "वरà¥à¤£à¤¾à¤µà¤à¤¾à¤¶à¤",
"exif-componentsconfiguration": "पà¥à¤°à¤¤à¥à¤¯à¥à¤à¤ à¤à¤¾à¤à¤¸à¥à¤¯ à¤
रà¥à¤¥à¤ ।",
"exif-compressedbitsperpixel": "à¤à¤¿à¤¤à¥à¤°à¤¸à¤à¥à¤à¥à¤à¤µà¤¿à¤§à¤¾à¤¨à¤®à¥ ।",
- "exif-pixelydimension": "à¤à¤¿à¤¤à¥à¤°à¤ªà¤¾à¤°à¥à¤¥à¤µà¤®à¥ (width)",
- "exif-pixelxdimension": "à¤à¤¿à¤¤à¥à¤°à¥à¤¨à¥à¤¨à¤¤à¥à¤¯à¤®à¥ ।",
+ "exif-pixelxdimension": "à¤à¤¿à¤¤à¥à¤°à¤ªà¤¾à¤°à¥à¤¥à¤µà¤®à¥ (width)",
+ "exif-pixelydimension": "à¤à¤¿à¤¤à¥à¤°à¥à¤¨à¥à¤¨à¤¤à¥à¤¯à¤®à¥ ।",
"exif-usercomment": "यà¥à¤à¤à¤¾à¤à¤¿à¤ªà¥à¤°à¤¾à¤¯à¤ ।",
"exif-relatedsoundfile": "समà¥à¤¬à¤¦à¥à¤§à¤¶à¥à¤°à¤µà¤£à¤¸à¤à¥à¤à¤¿à¤à¤¾ ।",
"exif-datetimeoriginal": "दतà¥à¤¤à¤¾à¤à¤¶à¤¸à¤°à¥à¤à¤¨à¤¸à¥à¤¯ दिनाà¤à¥à¤à¤ समयठठ।",
@@ -2914,7 +2908,6 @@
"version-libraries-library": "à¤à¥à¤°à¤¨à¥à¤¥à¤¾à¤²à¤¯à¤",
"version-libraries-version": "सà¤à¤¸à¥à¤à¤°à¤£à¤®à¥",
"redirect": "सà¤à¥à¤à¤¿à¤à¤¾-सदसà¥à¤¯-पà¥à¤·à¥à¤ à¥à¤à¥à¤¯à¤ à¤à¤¤ सà¤à¤¸à¥à¤à¤°à¤£à¤¾à¤¤à¥ पà¥à¤¨à¤°à¥à¤¨à¤¿à¤°à¥à¤¦à¤¿à¤·à¥à¤à¤®à¥",
- "redirect-legend": "सà¤à¥à¤à¤¿à¤à¤¾à¤¯à¤¾à¤, पà¥à¤·à¥à¤ ातॠवा पà¥à¤¨à¤°à¥à¤¨à¤¿à¤°à¥à¤¦à¤¿à¤·à¥à¤à¤®à¥",
"redirect-summary": "à¤à¤¤à¤¤à¥ विशिषà¥à¤à¤ªà¥à¤·à¥à¤ ठसà¤à¥à¤à¤¿à¤à¤¾à¤ (सà¤à¥à¤à¤¿à¤à¤¾à¤¯à¤¾à¤ नाम पà¥à¤°à¤¦à¤¤à¥à¤¤à¤®à¥) पà¥à¤°à¤¤à¤¿ पà¥à¤¨à¤°à¥à¤¨à¤¿à¤°à¥à¤¦à¤¿à¤·à¥à¤à¤®à¥ à¤
सà¥à¤¤à¤¿ । पà¥à¤·à¥à¤ ठ(à¤
à¤à¤¿à¤à¥à¤à¤¾à¤ªà¤à¤¸à¥à¤¯ सà¤à¤¸à¥à¤à¤°à¤£à¤®à¥ à¤à¤¤ पà¥à¤·à¥à¤ ाà¤à¤¿à¤à¥à¤à¤¾à¤ªà¤à¤ पà¥à¤°à¤¦à¤¤à¥à¤¤à¤®à¥), à¤à¤¤ सदसà¥à¤¯à¤ªà¥à¤·à¥à¤ मॠ(सà¤à¥à¤à¥à¤¯à¤¾à¤¤à¥à¤®à¤à¤ सदसà¥à¤¯à¤¾à¤à¤¿à¤à¥à¤à¤¾à¤ªà¤à¤ पà¥à¤°à¤¦à¤¤à¥à¤¤à¤®à¥) । à¤à¤ªà¤¯à¥à¤à¤ : [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], à¤à¤¤ [[{{#Special:Redirect}}/user/101]].",
"redirect-submit": "à¤à¤®à¥à¤¯à¤¤à¤¾à¤®à¥",
"redirect-lookup": "à¤
नà¥à¤µà¤¿à¤·à¥à¤¯à¤¾à¤®à¥ :",
@@ -2926,7 +2919,6 @@
"redirect-not-exists": "मà¥à¤²à¥à¤¯à¤ न पà¥à¤°à¤¾à¤ªà¥à¤¤à¤®à¥",
"fileduplicatesearch": "पà¥à¤°à¤¤à¤¿à¤à¥à¤¤à¤¿à¤¸à¤à¥à¤à¤¿à¤à¤¾à¤°à¥à¤¥à¤®à¥ à¤
नà¥à¤µà¤¿à¤·à¤¤à¥ ।",
"fileduplicatesearch-summary": "समà¥à¤®à¤¿à¤¶à¥à¤°à¤®à¥à¤²à¥à¤¯à¤¾à¤®à¥à¤²à¤¯à¥à¤¤à¤°à¥à¤¥à¤ पà¥à¤°à¤¤à¤¿à¤à¥à¤¤à¤¿à¤¸à¤à¥à¤à¤¿à¤à¤¾à¤°à¥à¤¥à¤®à¥ à¤
नà¥à¤µà¤¿à¤·à¤¤à¥ ।",
- "fileduplicatesearch-legend": "पà¥à¤°à¤¤à¤¿à¤à¥à¤¤à¥à¤¯à¤°à¥à¤¥à¤®à¥ à¤
नà¥à¤µà¤¿à¤·à¤¤à¥ ।",
"fileduplicatesearch-filename": "सà¤à¥à¤à¤¿à¤à¤¾à¤¨à¤¾à¤®:",
"fileduplicatesearch-submit": "à¤
नà¥à¤µà¥à¤·à¤£à¤®à¥",
"fileduplicatesearch-info": "$1 à $2 पिà¤à¥à¤¸à¥à¤²à¤¾à¤¨à¤¿, सà¤à¤à¤¿à¤à¤¾à¤¯à¤¾à¤ à¤à¤à¤¾à¤°à¤: $3, MIME-पà¥à¤°à¤à¤¾à¤°à¤: $4",
diff --git a/languages/i18n/sah.json b/languages/i18n/sah.json
index ffbdea6726..6a155bbcb1 100644
--- a/languages/i18n/sah.json
+++ b/languages/i18n/sah.json
@@ -1314,7 +1314,7 @@
"recentchangeslinked-page": "СиÑÑй ааÑа:",
"recentchangeslinked-to": "ТөÑÑÓ©ÑÒ¯Ñүн, ÑйÑллÑбÑÑ ÑиÑÑÐ¹Ð³Ñ ÑигÑнÑÑ ÑиÑÑйдÑÑи көÑдөÑ",
"recentchanges-page-added-to-category": "[[:$1]] каÑегоÑиÑÒа ÑбилиннÑ",
- "recentchanges-page-added-to-category-bundled": "[[:$1]] Ñонна {{PLURAL:$2|Ð±Ð¸Ð¸Ñ ÑиÑÑй|$2 ÑиÑÑй}} каÑегоÑиÑÒа ÑбилиннÑ",
+ "recentchanges-page-added-to-category-bundled": "[[:$1]] Ñонна [[Special:WhatLinksHere/$1|{{PLURAL:$2|Ð±Ð¸Ð¸Ñ ÑиÑÑй|$2 ÑиÑÑй}}]] каÑегоÑиÑÒа ÑбилиннÑ",
"recentchanges-page-removed-from-category": "[[:$1]] каÑегоÑиÑÑÑан ÑоÑÑлÑнна",
"recentchanges-page-removed-from-category-bundled": "[[:$1]] Ñонна {{PLURAL:$2|Ð±Ð¸Ð¸Ñ ÑиÑÑй|$2 ÑиÑÑй}} каÑегоÑиÑÑÑан ÑоÑÑлÑнна",
"autochange-username": "MediaWiki апÑамааÑÑнан ÑлаÑÑйÑÑÑа",
@@ -1802,8 +1802,6 @@
"categories-submit": "ÐÓ©ÑдөÑ",
"categoriespagetext": "ÐÑ {{PLURAL:$1|каÑегоÑÐ¸Ñ Ð¸Ò»Ð¸Ð³ÑÑ|каÑегоÑиÑÐ»Ð°Ñ Ð¸ÑÑÑÑигÑÑ}} ÑиÑÑйдÑÑ ÑбÑÑÑÑ Ð¼ÐµÐ´Ð¸Ð°-билÑлÑÑ Ð±Ð°Ð°Ð»Ð»Ð°Ñ.\n[[Special:UnusedCategories|ТÑÑÑÑллÑÐ±Ð°Ñ ÐºÐ°ÑегоÑиÑлаÑ]] манна көÑÑүбÑÑÑÑÑ.\nÓ¨ÑÑÓ© Ð¼Ð°Ð½Ñ ÐºÓ©Ñ: [[Special:WantedCategories|ÐÐ°Ð°Ñ Ð±ÑолÑоÑ
ÑааÑ
каÑегоÑиÑÐ»Ð°Ñ ÑиһикÑÑÑÑ]].",
"categoriesfrom": "ÐанÑан ÑаÒÐ°Ð»Ð°Ð½Ð°Ñ ÐºÐ°ÑегоÑиÑлаÑÑ ÐºÓ©ÑдөÑ:",
- "special-categories-sort-count": "аÑ
ÑаанÑнан бÑÑÑÑдÑкÑÑÑһин",
- "special-categories-sort-abc": "алпабÑÑÑÑнан бÑÑÑÑдÑкÑÑÑһин",
"deletedcontributions": "СоÑÑллÑбÑÑ ÐºÓ©Ð½Ð½Ó©ÑÒ¯Ò¯",
"deletedcontributions-title": "СоÑÑллÑбÑÑ ÐºÓ©Ð½Ð½Ó©ÑÒ¯Ò¯",
"sp-deletedcontributions-contribs": "киллÑÑииÑÑ (ÑÑÑÑйÑÑÑа)",
@@ -2417,11 +2415,7 @@
"import-logentry-upload-detail": "$1 {{PLURAL:$1|баÑÑл ÑгÑлÑнна|баÑÑÐ»Ñ ÑкÑÑбÑÑ}}",
"import-logentry-interwiki-detail": "ÐаÑÑÑа $2 баÑÑлÑан $1 баÑÑл ÑгÑлÑнна",
"javascripttest": "JavaScript ÑÑÑгÑÑÑÑ",
- "javascripttest-pagetext-noframework": "ÐÑ ÑиÑÑй JavaScript ÑÑÑгÑÑÑÑлаÑга анаммÑÑ.",
- "javascripttest-pagetext-unknownframework": "\"$1\" ÑÑÑгÑÑÑÑ Ð±Ð¸Ð»Ð»Ð¸Ð±ÑÑ ÑйгÑÑÑ.",
"javascripttest-pagetext-unknownaction": "ÐиллибÑÑ Ð´ÑайÑÑ Â«$1».",
- "javascripttest-pagetext-frameworks": "ÐÑка диÑн, Ð±Ñ ÑÑÑгÑÑÑÑÑ ÑйгÑлÑÑиÑÑÑн бииÑин Ñал: $1",
- "javascripttest-pagetext-skins": "ТÑÑгÑÑÑÑÐ½Ñ ÑÑÑаÑга ÑÐ°Ñ ÐºÓ©Ñүҥүн баÑÑаан Ñал:",
"javascripttest-qunit-intro": "[$1 ÑÑÑгÑÑÑÑ Ð´Ð¾ÐºÑменÑаÑиÑÑÑн] манна mediawiki.org көÑ.",
"tooltip-pt-userpage": "{{GENDER:|ÐÑÑÑааÑÑÑ}} бÑÒ»ÑÑÑÑнан ÑÑÑ ÑиÑиҥ",
"tooltip-pt-anonuserpage": "Ðилигин кииÑÐ±Ð¸Ñ IP-м ÑиÑÑйÑ",
@@ -2679,8 +2673,8 @@
"exif-colorspace": "Ó¨Ò¥ кÑйааÑа (пÑоÑÑÑанÑÑво, space)",
"exif-componentsconfiguration": "Ð¥Ð°Ñ Ð±Ð¸Ð¸Ñдии ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÐµÐ½Ñ ÑÑолÑаÑа",
"exif-compressedbitsperpixel": "ÐйÑÑÐ½Ñ Ñ
ам ÑÑÑÑÑ Ð½ÑÑмаÑа",
- "exif-pixelydimension": "ÐйÑÑ ÐºÑÑиÑÑ",
- "exif-pixelxdimension": "ÐйÑÑ Ò¯ÑдүгÑ",
+ "exif-pixelxdimension": "ÐйÑÑ ÐºÑÑиÑÑ",
+ "exif-pixelydimension": "ÐйÑÑ Ò¯ÑдүгÑ",
"exif-usercomment": "ÐÑÑÑааÑÑÑ Ñ
Ð¾Ñ Ð±ÑһааÑÑÑÑа",
"exif-relatedsoundfile": "ÐÑдио-билÑÒÑ ÑÑÒ»ÑаннааÑ
",
"exif-datetimeoriginal": "ÐҥоһÑллÑбÑÑ ÐºÑмÑ",
@@ -3123,7 +3117,6 @@
"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]].",
"redirect-submit": "ТолоÑ",
"redirect-lookup": "ÐÓ©ÑдөÑ:",
@@ -3136,7 +3129,6 @@
"redirect-not-exists": "СÑолÑа көÑÑүбÑÑÑ",
"fileduplicatesearch": "Ð¥Ð¾Ñ Ð±Ð¸Ð»ÑлÑÑи көÑдөөһүн",
"fileduplicatesearch-summary": "ТÑÒ¥ билÑлÑÑи Ñ
ÑÑ-кÑодÑаÑÑнан көÑдөөһүн.",
- "fileduplicatesearch-legend": "ХаÑÑлааһÑннаÑÑ ÐºÓ©Ñдөөһүн",
"fileduplicatesearch-filename": "ÐÐ¸Ð»Ñ Ð°Ð°Ñа:",
"fileduplicatesearch-submit": "ÐÑл",
"fileduplicatesearch-info": "$1 à $2 пиикÑÑл ÐÐ¸Ð»Ñ ÐºÑÑмÑйÑ: $3 MIME-Ñиип: $4",
diff --git a/languages/i18n/scn.json b/languages/i18n/scn.json
index e7363e1928..b50b5b1bce 100644
--- a/languages/i18n/scn.json
+++ b/languages/i18n/scn.json
@@ -1657,8 +1657,6 @@
"categories": "Catigurìi",
"categoriespagetext": "{{PLURAL:$1|La catigurìa ccassutta cunteni|Li catigurìi ccassutta cuntèninu}} pà ggini o file multimidiali.\nLi [[Special:UnusedCategories|catigurìi vacanti]] nun sunnu ammustrati ccà .\nTalìa macari li [[Special:WantedCategories|catigurìi addumannati]].",
"categoriesfrom": "Ammustra li catigurìi a pà rtiri di:",
- "special-categories-sort-count": "òrdina pi cuntiggiu",
- "special-categories-sort-abc": "ordina alfabbeticamenti",
"deletedcontributions": "Cuntribbuti di l'utenti cancillati",
"deletedcontributions-title": "Cuntribbuti di l'utenti cancillati",
"sp-deletedcontributions-contribs": "cuntribbuti",
@@ -2254,11 +2252,7 @@
"import-logentry-upload-detail": "{{PLURAL:$1|na virsioni mpurtata|$1 virsioni mpurtati}}",
"import-logentry-interwiki-detail": "{{PLURAL:$1|na virsioni mpurtata|$1 virsioni mpurtati}} di $2",
"javascripttest": "Virìfichi JavaScript",
- "javascripttest-pagetext-noframework": "Sta pà ggina è risirvata pi l'esicuzzioni dî virìfichi JavaScript.",
- "javascripttest-pagetext-unknownframework": "Framework di virìfica \"$1\" scanusciutu.",
"javascripttest-pagetext-unknownaction": "Azzioni scanusciuta \"$1\".",
- "javascripttest-pagetext-frameworks": "Pi favuri scegghi unu dî framework siguenti di virìfica: $1",
- "javascripttest-pagetext-skins": "Scegghi na peddi câ quali esiguiri li virìfichi:",
"javascripttest-qunit-intro": "Talìa [$1 la ducumintazzioni a prupositu dî virìfichi] supra a mediawiki.org.",
"tooltip-pt-userpage": "La tò pà ggina utenti",
"tooltip-pt-anonuserpage": "La pà ggina utenti di stu ndirizzu IP",
@@ -2510,8 +2504,8 @@
"exif-colorspace": "Spazziu dî culuri",
"exif-componentsconfiguration": "Significatu d'ognuna cumpunenti",
"exif-compressedbitsperpixel": "Mudalitati di cumprissioni dâ mmà ggini",
- "exif-pixelydimension": "Larghizza dâ mmà ggini",
- "exif-pixelxdimension": "Autizza dâ mmà ggini",
+ "exif-pixelxdimension": "Larghizza dâ mmà ggini",
+ "exif-pixelydimension": "Autizza dâ mmà ggini",
"exif-usercomment": "Noti di l'utenti",
"exif-relatedsoundfile": "File audiu culligatu",
"exif-datetimeoriginal": "Data e ura di criazzioni dî dati",
@@ -2960,7 +2954,6 @@
"version-libraries-description": "Discrizzioni",
"version-libraries-authors": "Autura",
"redirect": "Rimannu pi nomu di file o còdici di utenti, di pà ggina o di virsioni",
- "redirect-legend": "Rimannari a nu file o na pà ggina",
"redirect-summary": "Sta pà ggina spiciali rimanna a nu file (datu lu nomu dû file), a na pà ggina (datu n'ID di virsioni o n'ID di pà ggina), o puru â pà ggina di n'utenti (datu n'ID nummèricu d'utenti). Esempî d'usu: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], o [[{{#Special:Redirect}}/user/101]].",
"redirect-submit": "Vai",
"redirect-lookup": "Arricerca:",
@@ -2972,7 +2965,6 @@
"redirect-not-exists": "Valuri nun attruvatu",
"fileduplicatesearch": "Arricerca dê file duppiuni",
"fileduplicatesearch-summary": "Circata di pussìbbili dupppiuni dû file 'n basi ô valuri di ''hash''.",
- "fileduplicatesearch-legend": "Circata di nu duppiuni",
"fileduplicatesearch-filename": "Nomu dû file:",
"fileduplicatesearch-submit": "Circata",
"fileduplicatesearch-info": "$1 Ã $2 pixel Diminzioni: $3 Tipu MIME: $4",
diff --git a/languages/i18n/sco.json b/languages/i18n/sco.json
index bcba1a5490..4b69dfe365 100644
--- a/languages/i18n/sco.json
+++ b/languages/i18n/sco.json
@@ -1597,8 +1597,6 @@
"categories": "Categeries",
"categoriespagetext": "The follaein {{PLURAL:$1|categerie contains|categeries contain}} pages or media.\n[[Special:UnusedCategories|Onuised categeries]] arna shawn here.\nSee [[Special:WantedCategories|wanted categeries]] ava.",
"categoriesfrom": "Displey categeries stairtin at:",
- "special-categories-sort-count": "sairt bi coont",
- "special-categories-sort-abc": "sairt bi the alphabet",
"deletedcontributions": "Delytit uiser contreebutions",
"deletedcontributions-title": "Delytit uiser contreebutions",
"sp-deletedcontributions-contribs": "contreebutions",
@@ -2175,10 +2173,6 @@
"import-logentry-upload-detail": "$1 {{PLURAL:$1|reveesion|reveesions}} importit",
"import-logentry-interwiki-detail": "$1 {{PLURAL:$1|reveesion|reveesions}} importit fae $2",
"javascripttest": "JavaScript testin",
- "javascripttest-pagetext-noframework": "This page is reserved fer rinnin JavaScript tests.",
- "javascripttest-pagetext-unknownframework": "Onkent testin framewairk \"$1\".",
- "javascripttest-pagetext-frameworks": "Please chuise yin o the follaein testin framewairks: $1",
- "javascripttest-pagetext-skins": "Chuise ae skin tae rin the tests wi:",
"javascripttest-qunit-intro": "See [$1 testin documentation] oan mediawiki.org.",
"tooltip-pt-userpage": "Yer uiser page",
"tooltip-pt-anonuserpage": "The uiser page fer the IP address that ye'r eeditin aes",
@@ -2424,8 +2418,8 @@
"exif-colorspace": "Colour space",
"exif-componentsconfiguration": "Meanin o ilka component",
"exif-compressedbitsperpixel": "Eemage compression mode",
- "exif-pixelydimension": "Eemage width",
- "exif-pixelxdimension": "Eemage heicht",
+ "exif-pixelxdimension": "Eemage width",
+ "exif-pixelydimension": "Eemage heicht",
"exif-usercomment": "Uiser comments",
"exif-relatedsoundfile": "Relatit audÃo file",
"exif-datetimeoriginal": "Date n time o data generation",
@@ -2857,7 +2851,6 @@
"version-entrypoints-header-entrypoint": "Entrie point",
"version-entrypoints-header-url": "URL",
"redirect": "Reguidal bi file, uiser, page or reveesion ID",
- "redirect-legend": "Reguidal til ae file or page",
"redirect-summary": "This byordiair page reguides til ae file (gien the file name), ae page (gien ae reveesion ID or page ID), or ae uiser page (gien ae numereec uiser ID). Uissage: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/reveesion/328429]], or [[{{#Special:Redirect}}/uiser/101]].",
"redirect-submit": "Gang",
"redirect-lookup": "Luikup:",
@@ -2869,7 +2862,6 @@
"redirect-not-exists": "Value na foond",
"fileduplicatesearch": "Rake fer dupleecate files",
"fileduplicatesearch-summary": "Rake fer dupleecate files based oan hash values.",
- "fileduplicatesearch-legend": "Rake fer ae dupleecate",
"fileduplicatesearch-filename": "Filename:",
"fileduplicatesearch-submit": "Rake",
"fileduplicatesearch-info": "$1 Ã $2 pixel File size: $3 MIME type: $4",
diff --git a/languages/i18n/sd.json b/languages/i18n/sd.json
index c6e6e6ddf2..23ddbe9b1a 100644
--- a/languages/i18n/sd.json
+++ b/languages/i18n/sd.json
@@ -47,6 +47,7 @@
"underline-always": "ÙÙ
ÙØ´Û",
"underline-never": "ÚªÚÙÙ Ø¨Û ÙÛ",
"editfont-style": "اÙراض٠ج٠ÙÙÙÙ½ اسٽائÙ٠سÙÙارÙÙ:",
+ "editfont-serif": "سÙرÙ٠اÙÙÚÙ",
"sunday": "Ø¢Úر",
"monday": "سÙÙ
ر",
"tuesday": "اڱارÙ",
@@ -429,6 +430,11 @@
"resetpass_submit": "ڳجھ٠ÙÙظ Ø·Ù٠ڪرÙÙ Û½ Ùاگ اÙÙ Ù¿ÙÙ",
"changepassword-success": "تÙÙا٠ج٠ڳجھ٠ÙÙظ ڪاÙ
ÙابÙء٠سا٠بدÙاÙÙ ÙÙÙ!",
"changepassword-throttled": "تÙÙا٠تاز٠ئ٠Ùاگ اÙÙ Ù¿ÙÚ» جÙÙ ÙÙڪاÙدÙÙÙ Ú¯Ú¾Ú»ÙÙÙ ÚªÙششÙÙ ÚªÙÙ٠آÙÙ. Ù
ÙرباÙ٠ڪر٠$1 Ùاء٠ترس٠پÙØ¡Ù Ùر٠ڪÙشش ڪرÙÙ.",
+ "botpasswords-label-create": "سرجÙÙ",
+ "botpasswords-label-update": "تجدÙد",
+ "botpasswords-label-cancel": "رد",
+ "botpasswords-label-delete": "ÚاÙÙÙ",
+ "botpasswords-label-resetpassword": "ڳجھ٠ÙÙظ ÙئÙ٠سÙر Ù
Ùرر ڪرÙÙ",
"resetpass_forbidden": "ڳجھ٠ÙÙظ بدÙائ٠ÙÛ Ù¿Ù Ø³Ú¯Ú¾Ø¬Ù.",
"resetpass-no-info": "ÙÙء٠صÙØÙ Ù¾ÚÙÚ» Ùاء٠Ùاگ اÙÙ Ù¿ÙÚ» ضرÙر٠آÙÙ.",
"resetpass-submit-loggedin": "ڳجھ٠ÙÙظ بدÙاÙÙ",
@@ -446,6 +452,7 @@
"passwordreset-emaildisabled": "ÙÙ ÙÚªÙء٠ت٠برÙâٽپا٠ÙارÙÙ٠خصÙصÙتÙ٠غÙر Ùعا٠بڻاÙÙÙ ÙÙÙ٠آÙÙ.",
"passwordreset-username": "ÙÙÙزرÙاÙØ¡Ù:",
"passwordreset-domain": "Ù
ÙداÙ:",
+ "passwordreset-capture": "بر٠ٽپا٠Úسڻ ÚاÙÙÙداØ",
"passwordreset-email": "بر٠ٽپا٠پتÙ:",
"passwordreset-emailtitle": "{{SITENAME}} Ùار٠کات٠جا تÙصÙÙ",
"passwordreset-emailelement": "ÙÙÙزر ÙاÙØ¡Ù: \n$1\n\nعارض٠ڳجھ٠ÙÙظ:\n$2",
@@ -530,6 +537,8 @@
"hiddencategories": "ÙÙء٠صÙØÙ {{PLURAL:$1|1 Ùڪ٠زÙ
رÙ|$1 Ùڪ٠زÙ
رÙ}}: ج٠رڪ٠آÙÙ:",
"nocreatetext": "{{SITENAME}} ÙÙا٠صÙØا سرجڻ ج٠رÙڪ٠ڪئ٠آÙÙ.\nتÙÙا٠اڳ٠ئ٠Ù
ÙجÙد صÙØ٠ک٠سÙÙØ§Ø±Ù Ø³Ú¯Ú¾Ù Ù¿Ø§Ø Ùا [[Special:UserLogin|Ùاگ اÙÙ Ù¿Ù Ùا ÙئÙ٠کات٠کÙÙ٠سگھ٠ٿا]].",
"nocreate-loggedin": "تÙÙا٠ک٠ÙÙا٠صÙØا سرجڻ ج٠اجازت Øاص٠ڪاÙÙÙ.",
+ "sectioneditnotsupported-title": "سÙڪش٠ج٠سÙÙار Ù
Ù
ÚªÙ ÙÛ Ø¢ÙÙ",
+ "sectioneditnotsupported-text": "Ù٠صÙØ٠ت٠سÙڪش٠ک٠سÙÙارڻ Ù
Ù
ÚªÙ ÙÛ Ø¢ÙÙ.",
"permissionserrors": "اجازتÙاÙ
٠ج٠ÚÙÚªÙ",
"permissionserrorstext": "ÙÙÙºÙÙ {{PLURAL:$1|سبب|سببÙ}} ڪرÙØ ØªÙÙا٠ک٠اÙ٠ڪرڻ ج٠اجازت Øاص٠ڪاÙÙÙ.",
"permissionserrorstext-withaction": "ÙÙÙºÙÙ {{PLURAL:$1|سبب|سببÙ}} ڪرÙØ ØªÙÙا٠ک٠$2 ج٠اجازت ڪاÙÙÙ.",
@@ -710,6 +719,7 @@
"timezonelegend": "اÙÙات٠زÙÙ:",
"localtime": "Ù
ÙاÙ
Ù ÙÙت:",
"timezoneuseserverdefault": "Ùڪ٠عدÙ
Ù¾ÙرÙ٠استعÙ
ا٠ڪرÙÙ ($1)",
+ "timezoneuseoffset": "Ù»ÙÙ (ÚاڻاÙÙ)",
"servertime": "سÙرÙÙر پٽاÙدر ÙÙت:",
"guesstimezone": "جھاÙÚ¯ÙÙØ¡Ù Ù
ا٠ÚرÙÙ",
"timezoneregion-africa": "Ø¢ÙرÙڪا",
@@ -796,6 +806,7 @@
"right-move-categorypages": "زÙ
رات٠صÙØا ÚÙرÙÙ",
"right-movefile": "ÙائÙÙ ÚÙرÙÙ",
"right-upload": "ÙائÙÙ ÚاÚÙÙÙ",
+ "right-reupload": "Ù
ÙجÙد٠ÙائÙÙÙ Ù
ٿاÙ",
"right-upload_by_url": "ÚªÙÙÙ ÙÙÙآراÙ٠تا٠ÙائÙÙ ÚاÚÙÙÙ",
"right-writeapi": "ا٠پر آء٠ÙÚ©Ú» ج٠استعÙ
اÙ",
"right-delete": "صÙØا ÚاÙÙÙ",
@@ -807,6 +818,7 @@
"right-viewmywatchlist": "Ù¾ÙÙÙج٠ٽÙÙ½ Ùسٽ ÚسÙ",
"right-editmyoptions": "Ù¾ÙÙÙجÙ٠ترجÙØات سÙÙارÙÙ",
"right-import": "Ù»ÙÙ ÙÚªÙز کا٠صÙØا درآÙ
دÙÙ",
+ "right-importupload": "ÚªÙ ÙائÙÙ ÚاÚÙ٠صÙØا درآÙ
دÙÙ",
"right-mergehistory": "صÙØ٠ج٠سÙاÙØ Ø³ÙÙارÙÙ",
"right-userrights": "Ø³Ú ÙÙزر Ø٠ترÙ
ÙÙ
ڪرÙÙ",
"right-userrights-interwiki": "ÙÙ Ùڪ٠ج٠ÙÙزرس جا Ø٠ترÙ
ÙÙ
ڪرÙÙ",
@@ -815,6 +827,18 @@
"right-sendemail": "Ù»ÙÙ ÙÙزرس ÚاÙÙ٠اÙÙ
ÙÙ Ù
ÙÚªÙÙÙ",
"right-passwordreset": "ڳجھ٠ÙÙظ Ù
Ùرر٠بر٠ٽپاÙÙÙ ÚسÙ",
"right-managechangetags": "اعدادخاÙÙ Û¾ [[Special:Tags|Ù½Ùگس]] سرجÙÙ Û½ ÚاÙÙÙ.",
+ "grant-group-email": "بر٠ٽپا٠اÙ
اڻÙÙ",
+ "grant-blockusers": "ÙÙÙزرس ک٠بÙدشÙÙ Û½ اڻبÙدشÙÙ",
+ "grant-createaccount": "ÙئÙ٠کات٠کÙÙÙÙ",
+ "grant-editmywatchlist": "Ù¾ÙÙÙج٠ٽÙÙ½ ÙÙرست سÙÙارÙÙ",
+ "grant-editprotected": "تØÙظÙ٠صÙØا سÙÙارÙÙ",
+ "grant-rollback": "صÙØÙ Û¾ ÚªÙ٠تبدÙÙÙÙÙ Ùاپس ÙراÙÙ",
+ "grant-sendemail": "Ù»ÙÙ ÙÙزرس ÚاÙÙ٠اÙÙ
ÙÙ Ù
ÙÚªÙÙÙ",
+ "grant-uploadeditmovefile": "ÙائÙÙ ÚاÚÙÙÙØ Ù
ÙٽاÙÙØ Û½ ÚاÙÙÙ",
+ "grant-uploadfile": "ÙئÙÙ ÙائÙÙ ÚاÚÙÙÙ",
+ "grant-basic": "بÙÙاد٠ØÙÙ",
+ "grant-viewdeleted": "ÚÙÙºÙÙÙ ÙائÙÙÙ Û½ صÙØا ÚسÙ",
+ "grant-viewmywatchlist": "Ù¾ÙÙÙج٠ٽÙÙ½ ÙÙرست ÚسÙ",
"newuserlogpage": "ÙÙزر کات٠ج٠Ùاگ",
"rightslog": "ÙÙÙزر ØÙ Ùاگ",
"action-read": "Ù٠صÙØÙ Ù¾ÚÙÙ",
@@ -896,7 +920,9 @@
"newpageletter": "Ù",
"boteditletter": "Ú¯",
"number_of_watching_users_pageview": "[$1Ø {{PLURAL:$1|ÙÙÙزر|ÙÙÙزرس}} Ú©Ù Ù½ÙÙ½ÙÙدÙ]",
+ "rc_categories_any": "ÚÙÙÚÙÙÙ Ù
ا٠ڪ٠بÛ",
"rc-change-size-new": "$1 {{PLURAL:$1|بائÙÙ½|بائÙٽس}} تبدÙÙÙء٠کا٠پÙØ¡Ù",
+ "newsectionsummary": "/* $1 */ ÙئÙ٠سÙڪشÙ",
"rc-enhanced-expand": "تÙصÙÙ ÚÙکارÙÙ",
"rc-enhanced-hide": "تÙصÙÙ ÙڪاÙÙ",
"recentchangeslinked": "ÙاڳاپÙ٠تبدÙÙÙÙÙ",
@@ -916,6 +942,9 @@
"fileuploadsummary": "Ø®ÙاصÙ:",
"filereuploadsummary": "ÙائÙ٠تبدÙÙÙÙÙ:",
"filesource": "ذرÙعÙ:",
+ "ignorewarnings": "ÙارÙڱس Ú©Ù ÙظراÙداز ڪرÙÙ",
+ "badfilename": "ÙائÙÙâÙاÙء٠بدÙائ٠\"$1\" رکÙÙ ÙÙ٠آÙÙ.",
+ "empty-file": "تÙÙا٠ج٠جÙ
ع ڪراÙÙ ÙائÙ٠خاÙ٠آÙÙ.",
"filename-tooshort": "ÙائÙÙ ÙاÙØ¡ÙÙ ÙÙڪاÙد٠ÙÙÚ٠آÙÙ.",
"filetype-banned": "ÙائÙ٠ج٠ÙÙØ¡Ù ÙسÙ
بÙدشÙ٠آÙÙ.",
"verification-error": "ÙÙ ÙائÙ٠ج٠تصدÙÙ Ù¿Ù ÙÛ Ø³Ú¯Ú¾Ù.",
@@ -944,6 +973,7 @@
"upload-options": "ÚاÚÚ¾ جا Úارا",
"watchthisupload": "ÙÙØ¡Ù ÙائÙÙ Ù½ÙÙ½ÙÙ",
"upload-file-error": "اÙدرÙÙÙ ÚÙÚªÙ",
+ "upload-http-error": "اÙÚ Ù½Ù Ù½Ù Ù¾Ù Ø¬Ù ÚÙڪ٠ٿ٠آÙÙ: $1",
"upload-dialog-title": "ÙائÙÙ ÚاÚÙÙÙ",
"upload-dialog-button-cancel": "رد",
"upload-dialog-button-done": "Ù¿Ù ÙÙÙ",
@@ -964,10 +994,14 @@
"backend-fail-move": "ÙائÙÙ \"$1\" Ú©Ù \"$2\" ÚاÙÙÙ ÚÙر٠Ù٠سگھÙÙ.",
"backend-fail-opentemp": "عارض٠ÙائÙئ Ú©ÙÙÙ Ù٠سگھÙÙ.",
"backend-fail-read": "ÙائÙÙ \"$1\" Ú©Ù Ù¾ÚÙÙ Ù٠سگھÙÙ.",
+ "uploadstash-thumbnail": "Ù½ÙÚªÙÙÙ ÚسÙ",
+ "img-auth-accessdenied": "دسترس کا٠جÙاب",
"license-header": "ÙائÙسÙسڪارÙ",
+ "nolicense": "ÚÙÙÚ Ø§Ú»Ù
ÙجÙد",
"listfiles-delete": "ÚاÙÙÙ",
"imgfile": "ÙائÙÙ",
"listfiles": "ÙائÙÙ ÙÙرست",
+ "listfiles_thumb": "Ù½ÙÚªÙÙÙÙ",
"listfiles_date": "تارÙØ®",
"listfiles_name": "ÙاÙÙ",
"listfiles_user": "ÙÙÙزر",
@@ -987,6 +1021,7 @@
"filehist-datetime": "تارÙØ®/ÙÙت",
"filehist-thumb": "Ø¢Ú±ÙÙºÙ ÙÙÙÙ",
"filehist-thumbtext": "$1 ج٠ÙظرثاÙÙ Ùاء٠تصÙÙر٠ÙشاÙ",
+ "filehist-nothumb": "Ù½ÙÚªÙÙÙ٠اڻÙ
ÙجÙد",
"filehist-user": "ÙÙÙزر",
"filehist-dimensions": "Ù
اپÙ",
"filehist-filesize": "ÙائÙ٠سائÙز",
@@ -1015,7 +1050,9 @@
"unusedtemplates": "اڻ استعÙ
اÙÙ٠ساÙÚا",
"unusedtemplateswlh": "Ù»Ùا Ú³ÙÚڻا",
"randompage": "بÙاترتÙب صÙØÙ",
+ "randomincategory": "زÙ
ر٠Ù
ا٠ڪ٠بÙاترتÙب صÙØÙ",
"randomincategory-category": "زÙ
رÙ:",
+ "randomincategory-legend": "زÙ
ر٠Ù
ا٠ڪ٠بÙاترتÙب صÙØÙ",
"randomincategory-submit": "ÙÙÙ",
"randomredirect": "بÙا ترتÙب ÚÙرڻÙ",
"statistics": "اÙÚ¯ اکر",
@@ -1030,6 +1067,7 @@
"statistics-users": "کاتÙدار [[Special:ListUsers|ÙÙÙزرس]]",
"statistics-users-active": "سرگرÙ
ÙÙÙزرس",
"statistics-users-active-desc": "اÙÙ ÙÙÙزرس ج٠پÙÙÙ {{PLURAL:$1|ÚÙÙÙÙ|$1 ÚÙÙÙÙ}} Û¾ ڪا سرگرÙ
Ù ÚÙکار٠آÙÙ.",
+ "pageswithprop-prop": "خصÙصÙت ÙاÙØ¡Ù:",
"pageswithprop-submit": "Ú¾ÙÙ",
"doubleredirects": "ٻٽا ÚÙرڻا",
"double-redirect-fixed-move": "[[$1]] ÚÙرج٠Úڪ٠آÙÙ. ا٠ک٠خÙدڪارا٠تجدÙدÙÙ ÙÙÙ Û½ Ùاڻ٠اÙÙ [[$2]] ÚاÙÙÙ ÙÙºÙ ÙÚÙ Ù¿Ù.",
@@ -1073,7 +1111,9 @@
"deadendpages": "اڻ Ú³ÙÚÙÙØ¯Ú ØµÙØا",
"protectedpages": "تØÙظÙ٠صÙØا",
"protectedpages-noredirect": "ÚÙرڻا ÙڪاÙÙ",
+ "protectedpages-timestamp": "اÙÙات٠Ù
ÙÙÙرÙ",
"protectedpages-page": "صÙØÙ",
+ "protectedpages-params": "تØÙظ جا ÙÙ
ÙÙ¾ÙÙ
ا",
"protectedpages-reason": "سبب",
"protectedpages-submit": "صÙØا ÚÙکارÙÙ",
"protectedpages-unknown-timestamp": "اڻÚاتÙ",
@@ -1082,28 +1122,42 @@
"protectedtitles-submit": "عÙÙا٠ÚÙکارÙÙ",
"listusers": "ÙÙÙزر ÙÙرست",
"newpages": "ÙÙا٠صÙØا",
+ "newpages-submit": "ÚÙکارÙÙ",
"newpages-username": "ÙÙÙزرÙاÙØ¡Ù:",
"ancientpages": "ÙدÙÙ
ترÙ٠صÙØا",
"move": "ÚÙرÙÙ",
"movethispage": "ÙÙء٠صÙØÙ ÚÙرÙÙ",
"notargettitle": "بÙا٠ÙدÙ",
+ "nopagetitle": "اÙداÙ٠صÙØ٠اڻÙ
ÙجÙد",
"pager-older-n": "{{PLURAL:$1|پراڻ٠1|پراڻا $1}}",
+ "apisandbox-retry": "Ù»ÙÙر ÚªÙشش ڪرÙÙ",
+ "apisandbox-helpurls": "اÙ
داد٠ڳÙÚڻا",
+ "apisandbox-examples": "Ù
ثاÙ",
+ "apisandbox-dynamic-parameters-add-label": "ÙÙÙ
Ù¾ÙÙ
ا شاÙ
٠ڪرÙÙ",
+ "apisandbox-dynamic-parameters-add-placeholder": "ÙÙÙ
Ù¾ÙÙ
ا ÙاÙØ¡Ù",
+ "apisandbox-results": "ÙتÙجا",
"booksources": "ڪتاب٠ÙسÙÙا",
"booksources-search-legend": "ڪتاب٠ذرÙع٠ج٠ڳÙÙا ڪرÙÙ",
"booksources-search": "Ú³ÙÙÙÙ",
"specialloguserlabel": "Ù¾ÙØ´ ÚªÙدÚ:",
"speciallogtitlelabel": "ÙشاÙÙ (عÙÙا٠Ùا {{ns:user}}:Ùا ÙÙزÙاÙØ¡Ù ÙÙر ج٠ÙاءÙ):",
"log": "Ùاگس",
+ "logeventslist-submit": "ÚÙکارÙÙ",
"all-logs-page": "Ø³Ú Ø¹ÙاÙ
Ù Ùاگس",
+ "checkbox-none": "ÚªÙ Ø¨Û ÙÛ",
+ "checkbox-invert": "ابتÙÙ",
"allpages": "Ø³Ú ØµÙØا",
"nextpage": "اڳÙÙ٠صÙØÙ ($1)",
"prevpage": "Ù¾ÙÙÙ٠صÙØÙ ($1)",
"allpagesfrom": "ھتا٠شرÙع Ù¿ÙÙØ¯Ú ØµÙØا ÙÙ
اÙÙ",
+ "allpagesto": "ا٠ت٠ختÙ
Ù¿ÙÙØ¯Ú ØµÙØا ÙÙÙ
اÙÙ:",
"allarticles": "سÙ
Ùرا Ù
ضÙ
ÙÙ",
"allinnamespace": "سÙ
Ùرا صÙØا ($1 ÙاÙØ¡ÙÙ¾ÙÙار)",
"allpagessubmit": "Ú¾ÙÙ",
"allpagesprefix": "صÙØا ÙÙ
اÙ٠بÙ
ع اڳÙاÚÙ:",
+ "allpagesbadtitle": "صÙØ٠ج٠گھرب٠عÙÙا٠ڪار ÚªÙÙÙÙØ Ùا خاÙ٠آÙÙØ Ùا Ùر٠غÙردرست طرÙÙ٠سا٠ڳÙÚÙ٠بÙÙâاÙزباÙÙ Ùا بÙÙâاÙÙڪ٠عÙÙا٠آÙÙ. \nا٠۾ ÙÚª Ùا ÙÚª کا٠ÙÚÙÚª اÙÚا اکر Ù
ÙجÙد Ù¿Ù Ø³Ú¯Ú¾Ù Ù¿Ø§Ø Ø¬Ùڪ٠عÙÙا٠۾ استعÙ
ا٠ڪر٠ÙÛ Ù¿Ø§ سگھجÙ.",
"categories": "زÙ
را",
+ "categories-submit": "ÚÙکارÙÙ",
"deletedcontributions": "ÙÙÙزر جÙÙ Úاٺ٠ÚاڱÙدارÙÙÙ",
"deletedcontributions-title": "ÙÙÙزر جÙÙ Úاٺ٠ÚاڱÙدارÙÙÙ",
"sp-deletedcontributions-contribs": "ÚاڱÙدارÙÙÙ",
@@ -1124,6 +1178,7 @@
"listgrouprights-addgroup-all": "Ø³Ú Ú¯Ø±Ùپ٠شاÙ
٠ڪرÙÙ",
"listgrouprights-removegroup-all": "Ø³Ú Ú¯Ø±ÙÙ¾ ÙٽاÙÙ",
"listgrouprights-namespaceprotection-namespace": "ÙاÙØ¡Ù Ù¾ÙÙار:",
+ "listgrants-rights": "ØÙ",
"trackingcategories-name": "Ù¾ÙغاÙ
ج٠ÙاÙÙ",
"trackingcategories-nodesc": "ڪا ب٠تشرÙØ Ù
ÙجÙد Ù٠آÙÙ.",
"trackingcategories-disabled": "زÙ
ر٠ÙاÙابÙ٠ڪار بڻاÙ٠آÙÙ.",
@@ -1147,6 +1202,7 @@
"mywatchlist": "Ù½ÙÙ½ ÙÙرست",
"addwatch": "Ù½ÙÙ½ ÙÙرست Û¾ شاÙ
٠ڪرÙÙ",
"addedwatchtext": "صÙØÙ\"[[:$1]]\" ا٠ج٠بØØ« Ùار٠صÙØ٠اÙÙا٠ج٠[[Special:Watchlist|Ù½ÙÙ½ ÙÙرست]] Û¾ شاÙ
Ù ÚªÙÙ ÙÙ٠آÙÙ.",
+ "removewatch": "Ù½ÙÙ½ ÙÙرست Ù
ا٠خارج ڪرÙÙ",
"removedwatchtext": "صÙØ٠بعÙÙا٠\"[[:$1]]\" تÙÙا٠ج٠[[Special:Watchlist|Ù½ÙÙ½ ÙÙرست]] Ù
ا٠ÙÙ½Ù Úڪ٠آÙÙ.",
"removedwatchtext-short": "\"صÙØ٠بعÙÙا٠\"$1\" تÙÙا٠ج٠ٽÙÙ½ ÙÙرست Ù
ا٠ÙÙ½Ù Úڪ٠آÙÙ.\"",
"watch": "Ù½ÙÙ½ÙÙ",
@@ -1473,8 +1529,8 @@
"exif-artist": "ÙÙÚ©Úª",
"exif-copyright": "ØÙ Û½ Ùاسطا رکÙدÚ",
"exif-colorspace": "رÙÚ¯ Ù¾ÙÙار",
- "exif-pixelydimension": "عڪس ج٠ÙÙڪر",
- "exif-pixelxdimension": "عڪس ج٠اÙÚائÙ",
+ "exif-pixelxdimension": "عڪس ج٠ÙÙڪر",
+ "exif-pixelydimension": "عڪس ج٠اÙÚائÙ",
"exif-usercomment": "ÙÙÙزر جا تاثرات",
"exif-relatedsoundfile": "ÙاڳاپÙ٠آÙاز٠ÙائÙÙ",
"exif-datetimeoriginal": "اعداد ج٠جÚÚ» ج٠تارÙØ® Û½ ÙÙت",
diff --git a/languages/i18n/sdh.json b/languages/i18n/sdh.json
index 015e408d06..cf0dcd399d 100644
--- a/languages/i18n/sdh.json
+++ b/languages/i18n/sdh.json
@@ -557,7 +557,7 @@
"metadata-help": "ئÛÛ Ù¾ÛÚÚ¯Û Ø²Ø§ÙÛØ§Ø±Û ÙرÛÛÚ¯ ÙÛتÛÛÛØ Ú© Ú¯Ûھا دÛردÛÙ (camera) Ûا ئسکÛÙÛر (scanner) خستÛÛ Ø³ÛرÛ. ئÛÚ¯Ûر Ù¾ÛÚÚ¯ÛÚ¯Û ÙÛ ØاڵÛØªÛ Ø³ÛرÛتاÛÛÛÚ¯ÛÛÛ٠دÛØ³Ú©Ø§Ø±Û Ú©Ø±ÛاÛØ¯Ø Ú¯Ø§Ú¾Ûس بÚÛÚ¯ ÙÛ ÙردÛکارÛÛÛÙØ Ø²Ø§ÙÛارÛگا٠ÙÛÙÛ Ú¯ÙÙÚÛاÛÛÚ¯Û ÙÛ ØªÛÙاÙÛ ÙÛشا٠ÙÛدÛÙ.",
"metadata-fields": "کاڵگÛگا٠(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-imagedescription": "ÙاÙÙÛشا٠ÙÛÙÛ",
- "exif-pixelxdimension": "بÛØ±Ø²Û ÙÛÙÛ",
+ "exif-pixelydimension": "بÛØ±Ø²Û ÙÛÙÛ",
"exif-flash": "ÙÙÛØ´",
"exif-keywords": "Ú©ÙÛÙâÙØ´ÛÛÙ",
"exif-writer": "ÙÛسÛر",
diff --git a/languages/i18n/ses.json b/languages/i18n/ses.json
index 2c92aaba96..2488e06be3 100644
--- a/languages/i18n/ses.json
+++ b/languages/i18n/ses.json
@@ -1594,8 +1594,6 @@
"categories": "Dumey",
"categoriespagetext": "Ne {{PLURAL:$1|dumoo goo nda|dumey goo nda}} mooyaŠwala hẽenandi haya.\n[[Special:UnusedCategories|Dumey kaŠši goy]] ga cebandi ne.\nDii da [[Special:WantedCategories|dumey kaŠga ceecandi]].",
"categoriesfrom": "Dumey cebe kaÅ ga Å¡intin ne:",
- "special-categories-sort-count": "fay kabu bande \\",
- "special-categories-sort-abc": "fay abaca bande",
"deletedcontributions": "Goykaw kanbuzaama tuusantey",
"deletedcontributions-title": "Goykaw kanbuzaama tuusantey",
"sp-deletedcontributions-contribs": "kanbuzaamawey",
@@ -2177,10 +2175,6 @@
"import-logentry-upload-detail": "{{PLURAL:$1|Filla}} $1 ka huru",
"import-logentry-interwiki-detail": "{{PLURAL:$1|Filla}} $1 huru ka hun $2 ga",
"javascripttest": "JavaScript Å¡iiyan",
- "javascripttest-pagetext-noframework": "Moɲoo woo n' ka lanbandi ka JavaScript šiiyaney tee.",
- "javascripttest-pagetext-unknownframework": "Kungagoy \"$1\" Å¡iiyan Å¡i bayandi.",
- "javascripttest-pagetext-frameworks": "Å iiyan kungagoy Å¡iiyaney wey affoo suuba: $1",
- "javascripttest-pagetext-skins": "Kuuru foo suuba ka Å¡iiyaney tee nd'a:",
"javascripttest-qunit-intro": "Guna [$1 Å¡iiyan fahamandi tiira] mediawiki.org ga.",
"tooltip-pt-userpage": "War goykaw moɲoo",
"tooltip-pt-anonuserpage": "Goykaw moo IP aderesoo kaÅ war goo m'a fasal sanda",
@@ -2488,8 +2482,8 @@
"exif-colorspace": "Noone farru",
"exif-componentsconfiguration": "Jere-ize foo kul maana",
"exif-compressedbitsperpixel": "Bii kankamandiyan yaayi",
- "exif-pixelydimension": "Bii hayri",
- "exif-pixelxdimension": "Bii kayyan",
+ "exif-pixelxdimension": "Bii hayri",
+ "exif-pixelydimension": "Bii kayyan",
"exif-usercomment": "Goykaw daarawey",
"exif-relatedsoundfile": "Jinde tuku hangante",
"exif-datetimeoriginal": "Han nda waati bayhaya teeyan se",
@@ -3035,7 +3029,6 @@
"version-entrypoints-articlepath": "[https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgArticlePath Article path]",
"version-entrypoints-scriptpath": "[https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgScriptPath Script path]",
"redirect": "Tuku, goykaw, moo wala boÅtammaasa filla n'a kuubi",
- "redirect-legend": "Kuubi tuku wala moo ga",
"redirect-summary": "Moo cerecerante ga kuubi tuku ga (tuku maa bande), moo (sanda boÅtammaasa wala boÅtammaasa moo), wala goykaw moo (sanda hinna goykaw boÅtammaasa). Goyyan: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/moo/64308]], [[{{#Special:Redirect}}/filla/328429]], wala [[{{#Special:Redirect}}/goykaw/101]].",
"redirect-submit": "Koy",
"redirect-lookup": "Guna:",
@@ -3047,7 +3040,6 @@
"redirect-not-exists": "Hinna mana duwandi",
"fileduplicatesearch": "Tuku fillantey ceeci",
"fileduplicatesearch-summary": "Tuku fillantey kaÅÂ ga hanga hanga hinnawey ceeci.",
- "fileduplicatesearch-legend": "Ize fillante ceeci",
"fileduplicatesearch-filename": "Tukumaa:",
"fileduplicatesearch-submit": "Ceeci",
"fileduplicatesearch-info": "biitonbi $1 Ã $2 Tuku azzaati: $3 MIME dumi: $4",
diff --git a/languages/i18n/sgs.json b/languages/i18n/sgs.json
index ec538b1411..b994d2637c 100644
--- a/languages/i18n/sgs.json
+++ b/languages/i18n/sgs.json
@@ -1636,8 +1636,8 @@
"exif-exifversion": "Exif atmains",
"exif-colorspace": "Spalvū lauks",
"exif-compressedbitsperpixel": "AbruozdielÄ sospaudÄma rÄžÄms",
- "exif-pixelydimension": "AbruozdielÄ platoms",
- "exif-pixelxdimension": "AbruozdielÄ augoms",
+ "exif-pixelxdimension": "AbruozdielÄ platoms",
+ "exif-pixelydimension": "AbruozdielÄ augoms",
"exif-usercomment": "PÄiÅ¡kÄnÄmÄ",
"exif-relatedsoundfile": "PrÄgolons garsos",
"exif-datetimeoriginal": "ŽÄnÄs paderbÄma Äiesos",
@@ -1761,7 +1761,6 @@
"redirect-revision": "PoslapÄ versÄjÄ",
"redirect-file": "AbruozdÄlÄ vards",
"fileduplicatesearch": "ÄiÅ¡kuotÄ doblikoutu failu",
- "fileduplicatesearch-legend": "ÄiÅ¡kuotÄ doblÄkatu",
"fileduplicatesearch-filename": "Faila vards:",
"fileduplicatesearch-submit": "ÄiÅ¡kuotÄ",
"fileduplicatesearch-info": "$1 Ã $2 pÄkseliu Faila dÄdoms: $3 MIME tÄps: $4",
diff --git a/languages/i18n/sh.json b/languages/i18n/sh.json
index 754df9718f..26fea824c0 100644
--- a/languages/i18n/sh.json
+++ b/languages/i18n/sh.json
@@ -1227,7 +1227,7 @@
"recentchangeslinked-page": "Naslov stranice:",
"recentchangeslinked-to": "Pokaži promjene stranica koji su povezane sa datom stranicom",
"recentchanges-page-added-to-category": "[[:$1]] pridodano kategoriji",
- "recentchanges-page-added-to-category-bundled": "[[:$1]] i {{PLURAL:$2|stranica|$2 stranica}} {{PLURAL:$2|pridodana|pridodane}} kategoriji",
+ "recentchanges-page-added-to-category-bundled": "[[:$1]] i [[Special:WhatLinksHere/$1|{{PLURAL:$2|stranica|$2 stranica}} {{PLURAL:$2|pridodana|pridodane}}]] kategoriji",
"recentchanges-page-removed-from-category": "[[:$1]] uklonjeno iz kategorije",
"recentchanges-page-removed-from-category-bundled": "[[:$1]] i {{PLURAL:$2|stranica|$2 stranica}} {{PLURAL:$2|uklonjena|uklonjenne}} iz kategorije",
"autochange-username": "MediaWiki automatska promjena",
@@ -1678,8 +1678,6 @@
"categories": "Kategorije",
"categoriespagetext": "{{PLURAL:$1|SlijedeÄa kategorija sadrži|SlijedeÄe kategorije sadrže}} stranice ili multimedijalne datoteke.\n[[Special:UnusedCategories|NekoriÅ¡tene kategorije]] nisu prikazane ovdje.\nVidi takoÄer [[Special:WantedCategories|zatražene kategorije]].",
"categoriesfrom": "Prikaži kategorije poÄev od:",
- "special-categories-sort-count": "sortiranje po broju",
- "special-categories-sort-abc": "sortiraj po abecedi",
"deletedcontributions": "Obrisani doprinosi korisnika",
"deletedcontributions-title": "Obrisani doprinosi korisnika",
"sp-deletedcontributions-contribs": "doprinosi",
@@ -2272,10 +2270,6 @@
"import-logentry-upload-detail": "$1 {{PLURAL:$1|revizija|revizije|revizija}}",
"import-logentry-interwiki-detail": "$1 {{PLURAL:$1|revizija|revizije|revizija}} sa $2",
"javascripttest": "Javaskript test",
- "javascripttest-pagetext-noframework": "Ova stranica je rezervisana za izvršavanje javaskript testova.",
- "javascripttest-pagetext-unknownframework": "Nepoznati radni okvir â$1â.",
- "javascripttest-pagetext-frameworks": "Izaberite jedan od sledeÄih radnih okvira: $1",
- "javascripttest-pagetext-skins": "Izaberite s kojim skinom (interfejsom) želite da pokrenete probu:",
"javascripttest-qunit-intro": "Pogledajte [$1 dokumentaciju za testiranje] na mediawiki.org.",
"tooltip-pt-userpage": "{{GENDER:|VaÅ¡a korisniÄka}} stranica",
"tooltip-pt-anonuserpage": "KorisniÄka stranica za ip koju Vi ureÄujete kao",
@@ -2519,8 +2513,8 @@
"exif-colorspace": "Prostor boje",
"exif-componentsconfiguration": "ZnaÄenje pojedine komponente",
"exif-compressedbitsperpixel": "Dubina boje poslije sažimanja",
- "exif-pixelydimension": "Å irina slike",
- "exif-pixelxdimension": "Visina slike",
+ "exif-pixelxdimension": "Å irina slike",
+ "exif-pixelydimension": "Visina slike",
"exif-usercomment": "KorisniÄki komentari",
"exif-relatedsoundfile": "Povezana zvuÄna datoteka",
"exif-datetimeoriginal": "Datum i vrijeme generisanja podataka",
@@ -2932,7 +2926,6 @@
"version-entrypoints-header-entrypoint": "Ulazna taÄka",
"version-entrypoints-header-url": "URL",
"redirect": "Preusmjeravanje preko datoteke, korisnika ili ID-a izmjene",
- "redirect-legend": "Preusmjeravanje na datoteku ili stranicu",
"redirect-summary": "Ova posebna stranica preusmjerava na datoteku (ako je navedeno ime datoteke), stranicu (ako postoji ID revizije) ili korisniÄku stranicu (ako postoji brojÄani ID korisnika).",
"redirect-submit": "Idi",
"redirect-lookup": "Pregled:",
@@ -2943,7 +2936,6 @@
"redirect-not-exists": "Vrijednost nije pronaÄena",
"fileduplicatesearch": "Potraga za duplim datotekama",
"fileduplicatesearch-summary": "Pretraga duplih datoteka na bazi njihove haš vrijednosti.",
- "fileduplicatesearch-legend": "Pretraga dvojnika",
"fileduplicatesearch-filename": "Ime datoteke:",
"fileduplicatesearch-submit": "Traži",
"fileduplicatesearch-info": "$1 Ã $2 piksel VeliÄina datoteke: $3 MIME vrsta: $4",
diff --git a/languages/i18n/si.json b/languages/i18n/si.json
index 087407028b..e4c3484f43 100644
--- a/languages/i18n/si.json
+++ b/languages/i18n/si.json
@@ -1689,8 +1689,6 @@
"categories-submit": "පà·à¶±à·à·à¶±à·à¶±",
"categoriespagetext": "පà·à¶ {{PLURAL:$1|පà·âරà·à¶»à·à¶à¶ºà·à·à· à¶
නà·à¶à¶»à·à¶à¶à¶º |පà·âරà·à¶»à·à¶à¶ºà¶±à·à·à· à¶
නà·à¶à¶»à·à¶à¶à¶ºà¶±à·}} à·à¶±à·à¶ºà· පà·à¶§à· à·à· මà·à¶°à·âයයනà·à¶º.\n[[Special:UnusedCategories|භà·à·à·à¶à¶±à·à·à· පà·âරà·à¶»à·à¶à¶ºà¶±à·]] මà·à·à· පà·à¶±à·à·à· දà¶à·à·à· නà·à¶¸à·à¶.\n [[Special:WantedCategories|à¶
à·à·à·âය පà·âරà·à¶»à·à¶à¶ºà¶±à·]]ද බලනà·à¶±.",
"categoriesfrom": "මà·à·à·à¶¯à· à¶à¶»à¶¹à·à¶± පà·âරà·à¶»à·à¶ පà·à¶±à·à·à¶±à·à¶±:",
- "special-categories-sort-count": "à¶à¶«à¶«à¶º පරà·à¶¯à· à·à·à¶¶à·à¶¯à·à¶¸",
- "special-categories-sort-abc": "à¶
à¶à·à¶»à·à¶¯à·à¶ºà· පà·à·
à·à·à·à¶½à¶§ à·à¶à·à¶±à·à¶±",
"deletedcontributions": "මà¶à·à¶¯à·à¶¸à· පරà·à·à·à¶½à¶ දà·à¶ºà¶à¶à·à·à¶ºà¶±à·",
"deletedcontributions-title": "මà¶à·à¶¯à·à¶¸à· පරà·à·à·à¶½à¶ දà·à¶ºà¶à¶à·à·à¶ºà¶±à·",
"sp-deletedcontributions-contribs": "දà·à¶ºà¶à¶à·à·à¶ºà¶±à·",
@@ -2256,7 +2254,6 @@
"import-logentry-upload-detail": " {{PLURAL:$1|à·à¶à·à·à¶°à¶±à¶º|à·à¶à·à·à¶°à¶± $1 à¶à·}}",
"import-logentry-interwiki-detail": "$2 à·à·à¶à·à¶±à· {{PLURAL:$1|à¶à¶à· à·à¶à·à·à¶°à¶±à¶ºà¶à·|à·à¶à·à·à¶°à¶± $1 à¶à·}}",
"javascripttest": "ජà·à·à·à·à·à¶à·âරà·à¶´à·à¶§à· පරà·à¶à·à·à·à¶à¶»à¶¸à·à¶±à·",
- "javascripttest-pagetext-noframework": "මà·à¶¸ පà·à¶§à·à· ජà·à·à·à·à·à¶à·âරà·à¶´à·à¶§à· පරà·à¶à·à·à¶« à·à·à¶¯à·à¶à·à¶»à·à¶¸ à·à¶³à·à· à·à·à¶±à·à¶à¶» à¶à¶.",
"tooltip-pt-userpage": "à¶à¶¶à¶à· පරà·à·à·à¶½à¶ පà·à¶§à·à·",
"tooltip-pt-anonuserpage": "à·à¶à·à·à¶à¶»à¶«à¶ºà¶§ à¶à¶¶ භà·à·à·à¶à· à¶à¶»à¶¸à·à¶±à· පà·à¶à·à¶± à¶
නà·à¶à¶»à·à¶¢à·à¶½ ලà·à¶´à·à¶±à¶º à·à¶³à·à· පරà·à·à·à¶½à¶ පà·à¶§à·à·",
"tooltip-pt-mytalk": "à¶à¶¶à¶à· à·à¶à·à·à¶¯ පà·à¶§à·à·",
@@ -2506,8 +2503,8 @@
"exif-colorspace": "à·à¶»à·à¶« à¶
à·à¶à·à·à¶º",
"exif-componentsconfiguration": "à¶à¶à· à¶à¶à· à·à¶à¶»à¶ à¶à¶ºà· à¶
රà·à¶®à¶º",
"exif-compressedbitsperpixel": "රà·à¶´ à·à¶¸à·à¶´à·à¶©à¶± මà·à¶¯à·à¶½à·à¶º",
- "exif-pixelydimension": "පà·âරà¶à·à¶¶à·à¶¸à·à¶¶à¶ºà·à·à· පà·
ල",
- "exif-pixelxdimension": "පà·âරà¶à·à¶¶à·à¶¸à·à¶¶à¶ºà·à·à· à¶à·",
+ "exif-pixelxdimension": "පà·âරà¶à·à¶¶à·à¶¸à·à¶¶à¶ºà·à·à· පà·
ල",
+ "exif-pixelydimension": "පà·âරà¶à·à¶¶à·à¶¸à·à¶¶à¶ºà·à·à· à¶à·",
"exif-usercomment": "පරà·à·à·à¶½à¶ පරà·à¶à¶®à¶±à¶ºà¶±à·",
"exif-relatedsoundfile": "à·à·à·à¶¸à·à¶¶à¶±à·à¶°à·à¶ à·à·âරà·à·âය à¶à·à¶±à·à·",
"exif-datetimeoriginal": "දà¶à·à¶ ජනන දà·à¶±à¶º à·à· à·à·à¶½à·à·",
@@ -2998,7 +2995,6 @@
"redirect-not-exists": "à¶
à¶à¶º à·à¶¸à· නà·à·à·à¶«à·",
"fileduplicatesearch": "à¶
නà·à¶´à·à¶§à¶´à¶à· à¶à·à¶±à· à·à¶³à·à· à¶à·à·à·à¶«à¶º à¶à¶»à¶±à·à¶±",
"fileduplicatesearch-summary": "à¶à·à· පà·à¶»à¶ à¶
à¶à¶º පà·à¶¯à¶ à¶à¶» à¶à·à¶± à¶
නà·à¶´à·à¶§à¶´à¶à· à¶à·à¶±à· à·à¶³à·à· à¶à·à·à·à¶«à¶º à¶à¶»à¶±à·à¶±.",
- "fileduplicatesearch-legend": "à¶
නà·à¶´à·à¶§à¶´à¶à¶à· à·à¶³à·à· à¶à·à·à·à¶«à¶º à¶à¶»à¶±à·à¶±",
"fileduplicatesearch-filename": "à¶à·à¶±à·-නà·à¶¸à¶º:",
"fileduplicatesearch-submit": "à¶à·à·à·à¶«à¶º",
"fileduplicatesearch-info": "$1 à $2 පà·à¶à·à·à¶½ à¶à·à¶±à· à·à·à·à·à¶½à¶à·à·à¶º: $3 MIME à·à·à¶½à·à¶º: $4",
diff --git a/languages/i18n/sk.json b/languages/i18n/sk.json
index 9b85e15cbe..1fcafaa2f0 100644
--- a/languages/i18n/sk.json
+++ b/languages/i18n/sk.json
@@ -616,7 +616,7 @@
"newarticle": "(Nový)",
"newarticletext": "Sledovali ste odkaz na stránku, ktorá zatiaľ neexistuje.\nStránku vytvorÃte tak, že zaÄnete pÃsaÅ¥ do poľa nižšie (viac informácià nájdete na stránkach [$1 nápovedy]).\nAk ste sa sem dostali nechtiac, kliknite na tlaÄidlo späť vo svojom prehliadaÄi.",
"anontalkpagetext": "----''Toto je diskusná stránka anonymného použÃvateľa, ktorý nemá vytvorené svoje konto alebo ho nepoužÃva.\nPreto musÃme na jeho identifikáciu použiÅ¥ numerickú IP adresu. Je možné, že takúto IP adresu použÃvajú viacerà použÃvatelia.\nAk ste anonymný použÃvateľ a máte pocit, že vám boli adresované irelevantné diskusné prÃspevky, [[Special:UserLogin/signup|vytvorte si konto]] alebo sa [[Special:UserLogin|prihláste]], aby sa zamedzilo budúcim zámenám s inými anonymnými použÃvateľmi.''",
- "noarticletext": "Na tejto stránke sa momentálne nenachádza žiadny text.\nMôžete [[Special:Search/{{PAGENAME}}|vyhľadávať názov tejto stránky]] v obsahu iných stránok,\n[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} vyhľadávať v súvisiacich záznamoch] alebo [{{fullurl:{{FULLPAGENAME}}|action=edit}} upravovať túto stránku] .",
+ "noarticletext": "Na tejto stránke sa momentálne nenachádza žiadny text.\nMôžete [[Special:Search/{{PAGENAME}}|vyhľadávať názov tejto stránky]] v obsahu iných stránok,\n[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} vyhľadávať v súvisiacich záznamoch] alebo [{{fullurl:{{FULLPAGENAME}}|action=edit}} vytvoriť túto stránku] .",
"noarticletext-nopermission": "Táto stránka momentálne neobsahuje žiadny text.\nMôžete [[Special:Search/{{PAGENAME}}|hľadať názov tejto stránky]] v texte iných stránok\nalebo [{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} hľadať v súvisiacich záznamoch] , ale nemáte oprávnenie túto stránku vytvoriť.",
"missing-revision": "RevÃzia #$1 stránky s názvom â{{FULLPAGENAME}}â neexistuje.\n\nPravdepodobne ste nasledovali zastaraný odkaz na historickú verziu stránky, ktorá bola medziÄasom odstránená.\nPodrobnosti nájdete v [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} zázname zmazanÃ].",
"userpage-userdoesnotexist": "PoužÃvateľský úÄet â$1 â nie je registrovaný. ProsÃm, skontrolujte, Äi naozaj chcete vytvoriÅ¥/upravovaÅ¥ túto stránku.",
@@ -1237,7 +1237,7 @@
"recentchangeslinked-page": "Názov stránky:",
"recentchangeslinked-to": "Zobraziť zmeny na stránkach, ''ktoré odkazujú na'' zadanú stránku",
"recentchanges-page-added-to-category": "[[:$1]] zaradená do kategórie",
- "recentchanges-page-added-to-category-bundled": "[[:$1]] a {{PLURAL:$2|jedna ÄalÅ¡ia zaradené|$2 ÄalÅ¡ie zaradené|$2 ÄalÅ¡Ãch zaradených}} do kategórie",
+ "recentchanges-page-added-to-category-bundled": "[[:$1]] a [[Special:WhatLinksHere/$1|{{PLURAL:$2|jedna ÄalÅ¡ia zaradené|$2 ÄalÅ¡ie zaradené|$2 ÄalÅ¡Ãch zaradených}}]] do kategórie",
"recentchanges-page-removed-from-category": "[[:$1]] vyradená z kategórie",
"recentchanges-page-removed-from-category-bundled": "[[:$1]] a {{PLURAL:$2|jedna ÄalÅ¡ia vyradené|$2 ÄalÅ¡ie vyradené|$2 ÄalÅ¡Ãch vyradených}} z kategórie",
"autochange-username": "Automatická úprava MediaWiki",
@@ -1651,7 +1651,7 @@
"log-edit-tags": "EditovaÅ¥ znaÄky zvolených položiek záznamu",
"checkbox-select": "Zvoliť: $1",
"checkbox-all": "VÅ¡etky",
- "checkbox-none": "Ždiadne",
+ "checkbox-none": "Žiadne",
"checkbox-invert": "Invertovať",
"allpages": "Všetky stránky",
"nextpage": "ÄalÅ¡ia stránka ($1)",
@@ -1672,8 +1672,6 @@
"categories-submit": "Zobraziť",
"categoriespagetext": "{{PLURAL:$1|Nasledovná kategória obsahuje|Nasledovné kategórie obsahujú}} stránky alebo multimediálne súbory.\nNie sú tu zobrazené [[Special:UnusedCategories|nepoužité kategórie]].\nPozri aj [[Special:WantedCategories|žiadané kategórie]].",
"categoriesfrom": "ZobraziÅ¥ kategórie poÄnúc:",
- "special-categories-sort-count": "zoradiÅ¥ podľa poÄtu",
- "special-categories-sort-abc": "zoradiť podľa abecedy",
"deletedcontributions": "Zmazané prÃspevky použÃvateľa",
"deletedcontributions-title": "Zmazané prÃspevky použÃvateľa",
"sp-deletedcontributions-contribs": "prÃspevky",
@@ -2268,11 +2266,7 @@
"import-logentry-upload-detail": "$1 {{PLURAL:$1|revÃzia|revÃzie|revÃziÃ}}",
"import-logentry-interwiki-detail": "$1 {{PLURAL:$1|revÃzia|revÃzie|revÃziÃ}} z $2",
"javascripttest": "Testovanie JavaScriptu",
- "javascripttest-pagetext-noframework": "Táto stránka je vyhradená pre testy JavaScriptu.",
- "javascripttest-pagetext-unknownframework": "Neznáma testovacia platfoma â$1â.",
"javascripttest-pagetext-unknownaction": "Neznáma akcia: â$1â.",
- "javascripttest-pagetext-frameworks": "ProsÃm vyberte jednu z nasledovných testovacÃch platforiem: $1",
- "javascripttest-pagetext-skins": "Vyberte tému vzhľadu, na ktorej chcete spustiť testy:",
"javascripttest-qunit-intro": "Pozri [$1 dokumentácia testovania] na mediawiki.org.",
"tooltip-pt-userpage": "VaÅ¡a použÃvateľská stránka",
"tooltip-pt-anonuserpage": "PoužÃvateľská stránka pre ip adresu, ktorú upravujete ako",
@@ -2536,8 +2530,8 @@
"exif-colorspace": "Farebný priestor",
"exif-componentsconfiguration": "Význam jednotlivých zložiek",
"exif-compressedbitsperpixel": "Komprimované bity na pixel",
- "exif-pixelydimension": "Å Ãrka obrázka",
- "exif-pixelxdimension": "Výška obrázka",
+ "exif-pixelxdimension": "Å Ãrka obrázka",
+ "exif-pixelydimension": "Výška obrázka",
"exif-usercomment": "Komentár použÃvateľa",
"exif-relatedsoundfile": "Súvisiaci zvukový súbor",
"exif-datetimeoriginal": "Dátum a Äas vytvorenia dát",
@@ -2975,7 +2969,6 @@
"version-libraries-description": "Popis",
"version-libraries-authors": "Autori",
"redirect": "Presmerovanie podľa súboru, použÃvateľa alebo ID revÃzie",
- "redirect-legend": "Presmerovanie na súbor alebo stránku",
"redirect-summary": "Táto Å¡peciálna stránka presmerováva na súbor (podľa názvu), stránku (podľa ID stránky alebo revÃzie) alebo použÃvateľa (podľa ÄÃselného ID). Použitie: [[{{#Special:Redirect}}/file/Test.jpg]], [[{{#Special:Redirect}}/revision/328429]], resp. [[{{#Special:Redirect}}/user/101]].",
"redirect-submit": "ÃsÅ¥",
"redirect-lookup": "Vyhľadať:",
@@ -2987,7 +2980,6 @@
"redirect-not-exists": "Hodnota nebola nájdená",
"fileduplicatesearch": "Hľadať duplicitné súbory",
"fileduplicatesearch-summary": "Hľadanie duplicitných súborov na základe ich haš hodnôt.",
- "fileduplicatesearch-legend": "Hľadať duplicity",
"fileduplicatesearch-filename": "Názov súboru:",
"fileduplicatesearch-submit": "Hľadať",
"fileduplicatesearch-info": "$1 à $2 pixelov Veľkosť súboru: $3 Typ MIME: $4",
diff --git a/languages/i18n/sl.json b/languages/i18n/sl.json
index 682ee36131..1a85f04d5d 100644
--- a/languages/i18n/sl.json
+++ b/languages/i18n/sl.json
@@ -29,6 +29,7 @@
"tog-watchdefault": "Na spisek nadzorov dodaj vse Älanke in datoteke, ki sem jih spremenil/-a",
"tog-watchmoves": "Dodaj strani in datoteke, ki jih premaknem, na moj spisek nadzorov",
"tog-watchdeletion": "Dodaj strani in datoteke, ki jih izbrišem, na moj spisek nadzorov",
+ "tog-watchuploads": "Dodaj nove datoteke, ki jih naložim, na moj spisek nadzorov",
"tog-watchrollback": "Dodaj strani, na katerih sem izvedel vrnitev, na moj spisek nadzorov",
"tog-minordefault": "Vsa urejanja oznaÄi kot manjÅ¡a",
"tog-previewontop": "Prikaži predogled pred urejevalnim poljem",
@@ -470,7 +471,7 @@
"noemail": "Elektronska pošta uporabnika »$1« ni zapisana.",
"noemailcreate": "Vnesti morate veljaven e-poštni naslov",
"passwordsent": "Na naslov elektronske pošte, vpisanega za »$1«, smo poslali novo geslo.\nKo ga boste prejeli, se ponovno prijavite.",
- "blocked-mailpassword": "Urejanje z vaÅ¡ega IP-naslova je blokirano. Da bi prepreÄili zlorabe, vam ni dovoljeno tudi uporabljati funkcije za povrnitev pozabljenega gesla.",
+ "blocked-mailpassword": "Urejanje z vaÅ¡ega IP-naslova je blokirano. Da bi prepreÄili zlorabe, vam s tega IP-naslova ni dovoljeno uporabljati funkcije za obnovitev pozabljenega gesla.",
"eauthentsent": "E-sporoÄilo je bilo poslano na navedeni e-naslov.\nÄe želite tja poslati Å¡e katero, sledite navodilom v e-sporoÄilu, da potrdite lastniÅ¡tvo raÄuna.",
"throttled-mailpassword": "E-poÅ¡to za ponastavitev gesla smo v {{PLURAL:$1|zadnji uri|zadnjih $1 urah}} že poslali.\nZa prepreÄevanje zlorab lahko na {{PLURAL:$1|uro|$1 uri|$1 ure|$1 ur}} poÅ¡ljemo samo eno sporoÄilo za ponastavitev gesla.",
"mailerror": "Napaka pri pošiljanju pošte: $1",
@@ -1312,9 +1313,9 @@
"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 [[Special:WhatLinksHere/$1|$2 {{PLURAL:$2|stran|strani}}]] {{PLURAL:$2|dodana|dodani|dodane|dodanih}} v kategorijo",
+ "recentchanges-page-added-to-category-bundled": "[[:$1]] dodana v kategorijo; [[Special:WhatLinksHere/$1|stran je vkljuÄena v druge strani]]",
"recentchanges-page-removed-from-category": "[[:$1]] odstranjeno iz kategorije",
- "recentchanges-page-removed-from-category-bundled": "[[:$1]] in [[Special:WhatLinksHere/$1|$2 {{PLURAL:$2|stran|strani}}]] {{PLURAL:$2|odstranjena|odstranjeni|odstranjene|odstranjenih}} iz kategorije",
+ "recentchanges-page-removed-from-category-bundled": "[[:$1]] odstranjena iz kategorije; [[Special:WhatLinksHere/$1|stran je vkljuÄena v druge strani]]",
"autochange-username": "Samodejna sprememba MediaWiki",
"upload": "Naloži datoteko",
"uploadbtn": "Naloži datoteko",
@@ -1494,6 +1495,7 @@
"uploadstash-badtoken": "Izvedba dejanja je spodletela. Morda zaradi izteklih poverilnic za urejanje. Prosimo, poskusite znova.",
"uploadstash-errclear": "ÄiÅ¡Äenje datotek je spodletelo.",
"uploadstash-refresh": "Osveži seznam datotek",
+ "uploadstash-thumbnail": "ogled sliÄice",
"invalid-chunk-offset": "Neveljaven odmik delÄka",
"img-auth-accessdenied": "Dostop zavrnjen",
"img-auth-nopathinfo": "Manjka PATH_INFO.\nVaš strežnik ne poda te informacije.\nMorda temelji na CGI in ne more podpirati img_auth.\nOglejte si https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Image_Authorization.",
@@ -1813,8 +1815,6 @@
"categories-submit": "Prikaži",
"categoriespagetext": "{{PLURAL:$1|Naslednja $1 kategorija vsebuje|Naslednji $1 kategoriji vsebujeta|Naslednje $1 kategorije vsebujejo|Naslednjih $1 kategorij vsebuje}} strani ali datoteke.\n[[Special:UnusedCategories|Neuporabljene kategorije]] niso prikazane.\nGlej tudi [[Special:WantedCategories|želene kategorije]].",
"categoriesfrom": "Prikaži kategorije, ki se zaÄnejo na:",
- "special-categories-sort-count": "razvrsti po Å¡tevilu",
- "special-categories-sort-abc": "razvrsti po abecedi",
"deletedcontributions": "Izbrisani uporabnikovi prispevki",
"deletedcontributions-title": "Izbrisani uporabnikovi prispevki",
"sp-deletedcontributions-contribs": "prispevki",
@@ -2191,6 +2191,7 @@
"ipb-unblock": "Odblokirajte uporabniško ime ali IP-naslov",
"ipb-blocklist": "Ogled obstojeÄih blokad",
"ipb-blocklist-contribs": "Prispevki za {{GENDER:$1|$1}}",
+ "ipb-blocklist-duration-left": "Å¡e $1",
"unblockip": "Deblokirajte uporabnika",
"unblockiptext": "Z naslednjim obrazcem obnovite možnost urejanja z blokiranega IP-naslova ali uporabniÅ¡kega raÄuna.",
"ipusubmit": "Odstrani blokado",
@@ -2432,11 +2433,7 @@
"import-logentry-upload-detail": "{{PLURAL:$1|Uvožena $1 redakcija|Uvoženi $1 redakciji|Uvožene $1 redakcije|Uvoženih $1 redakcij}}",
"import-logentry-interwiki-detail": "{{PLURAL:$1|Uvožena $1 redakcija|Uvoženi $1 redakciji|Uvožene $1 redakcije|Uvoženih $1 redakcij}} z $2",
"javascripttest": "Preizkušanje JavaScripta",
- "javascripttest-pagetext-noframework": "Stran je rezervirana za poganjanje preizkusov JavaScript.",
- "javascripttest-pagetext-unknownframework": "Neznano ogrodje za preizkušanje »$1«.",
"javascripttest-pagetext-unknownaction": "Neznano dejanje »$1«.",
- "javascripttest-pagetext-frameworks": "Prosimo, izberite enega od naslednjih ogrodjev za preizkušanje: $1",
- "javascripttest-pagetext-skins": "Izberite kožo, v kateri želite pognati preizkuse:",
"javascripttest-qunit-intro": "Oglejte si [$1 dokumentacijo o preizkušanju] na mediawiki.org.",
"tooltip-pt-userpage": "{{GENDER:|Vaša}} uporabniška stran",
"tooltip-pt-anonuserpage": "Uporabniška stran IP-naslova, ki ga uporabljate",
@@ -2697,8 +2694,8 @@
"exif-colorspace": "Barvni prostor",
"exif-componentsconfiguration": "Pomen posameznih gradnikov",
"exif-compressedbitsperpixel": "Velikost toÄke po stiskanju (v bitih)",
- "exif-pixelydimension": "Å irina slike",
- "exif-pixelxdimension": "Višina slike",
+ "exif-pixelxdimension": "Å irina slike",
+ "exif-pixelydimension": "Višina slike",
"exif-usercomment": "Uporabniške pripombe",
"exif-relatedsoundfile": "PripadajoÄa zvoÄna datoteka",
"exif-datetimeoriginal": "Datum in Äas ustvaritve podatkov",
@@ -3025,6 +3022,10 @@
"confirmemail_body_set": "Nekdo, najverjetneje vi, je z IP-naslova $1\nna strani {{SITENAME}} nastavil e-poÅ¡tni naslov raÄuna »$2« na ta naslov.\n\nDa potrdite lastniÅ¡tvo tega raÄuna in aktivirate\ne-poÅ¡tne funkcije na {{GRAMMAR:dajalnik|{{SITENAME}}}}, odprite to povezavo v vaÅ¡em brskalniku:\n\n$3\n\nÄe omenjeni raÄun *ni* vaÅ¡, sledite spodnji povezavi za preklic\npotrditve e-poÅ¡tnega naslova:\n\n$5\n\nPotrditvena koda poteÄe $4.",
"confirmemail_invalidated": "Potrditev e-poštnega naslova preklicana",
"invalidateemail": "PrekliÄi potrditev e-poÅ¡tnega naslova",
+ "notificationemail_subject_changed": "Spremenjen e-poštni naslov, registriran na {{SITENAME}}",
+ "notificationemail_subject_removed": "Odstranjen e-poštni naslov, registriran na {{SITENAME}}",
+ "notificationemail_body_changed": "Nekdo, najverjetneje vi, je z IP-naslova $1 spremenil e-poÅ¡tni naslov raÄuna »$2« na »$3« na strani {{SITENAME}}.\n\nÄe to niste bili vi, takoj stopite v stik s skrbnikom strani.",
+ "notificationemail_body_removed": "Nekdo, najverjetneje vi, je z IP-naslova $1 odstranil e-poÅ¡tni naslov raÄuna »$2« na strani {{SITENAME}}.\n\nÄe to niste bili vi, takoj stopite v stik s skrbnikom strani.",
"scarytranscludedisabled": "[PrevkljuÄevanje med wikiji je onemogoÄeno]",
"scarytranscludefailed": "[Pridobivanje predloge za $1 ni uspelo]",
"scarytranscludefailed-httpstatus": "[Pridobivanje predloge za $1 ni uspelo: HTTP $2]",
@@ -3080,7 +3081,7 @@
"watchlistedit-raw-done": "Vaš spisek nadzorov je bil posodobljen.",
"watchlistedit-raw-added": "{{PLURAL:$1|Dodana je bila $1 stran|Dodani sta bili $1 strani|Dodane so bile $1 strani|Dodanih je bilo $1 strani}}:",
"watchlistedit-raw-removed": "{{PLURAL:$1|Odstranjena je bila $1 stran|Odstranjeni sta bili 2 strani|Odstranjene so bile $1 strani|Odstranjenih je bilo $1 strani}}:",
- "watchlistedit-clear-title": "ÄiÅ¡Äenje spiska nadzorov",
+ "watchlistedit-clear-title": "PoÄisti spisek nadzorov",
"watchlistedit-clear-legend": "PoÄistite spisek nadzorov",
"watchlistedit-clear-explain": "Vse naslove bomo odstranili z vašega spiska nadzorov",
"watchlistedit-clear-titles": "Naslovi:",
@@ -3145,7 +3146,6 @@
"version-libraries-description": "Opis",
"version-libraries-authors": "Avtorji",
"redirect": "Preusmeri po datoteki ali ID-ju uporabnika, strani, redakcije ali dnevnika",
- "redirect-legend": "Preusmeritev na datoteko ali stran",
"redirect-summary": "Posebna stran preusmeri na datoteko (Äe podate ime datoteke), stran (Äe podate ID redakcije ali ID strani), uporabniÅ¡ko stran (Äe podate Å¡tevilski ID uporabnika) ali dnevniÅ¡ki vnos (Äe podate ID dnevnika). Uporaba: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]][[{{#Special:Redirect}}/user/101]] ali [[{{#Special:Redirect}}/logid/186]].",
"redirect-submit": "Pojdi",
"redirect-lookup": "Iskanje:",
@@ -3158,7 +3158,6 @@
"redirect-not-exists": "Vrednosti ni mogoÄe najti",
"fileduplicatesearch": "Iskanje podvojenih datotek",
"fileduplicatesearch-summary": "Iskanje podvojenih datotek, ki temelji na podlagi njenih hashvrednosti.",
- "fileduplicatesearch-legend": "PoiÅ¡Äi dvojnik",
"fileduplicatesearch-filename": "Ime datoteke:",
"fileduplicatesearch-submit": "Iskanje",
"fileduplicatesearch-info": "$1 Ã $2 pik Velikost datoteke: $3 Vrsta MIME: $4",
@@ -3359,7 +3358,7 @@
"logentry-protect-protect-cascade": "$1 je {{GENDER:$2|zaÅ¡Äitil|zaÅ¡Äitila|zaÅ¡Äitil(-a)}} $3 $4 [kaskadno]",
"logentry-protect-modify": "$1 je {{GENDER:$2|spremenil|spremenila|spremenil(-a)}} stopnjo zaÅ¡Äite $3 $4",
"logentry-protect-modify-cascade": "$1 je {{GENDER:$2|spremenil|spremenila|spremenil(-a)}} stopnjo zaÅ¡Äite $3 $4 [kaskadno]",
- "logentry-rights-rights": "$1 je {{GENDER:$2|spremenil|spremenila|spremenil(-a)}} uporabniške pravice uporabnika $3 z $4 na $5",
+ "logentry-rights-rights": "$1 je {{GENDER:$2|spremenil|spremenila|spremenil(-a)}} uporabniške pravice {{GENDER:$6|uporabnika|uporabnice}} $3 z $4 na $5",
"logentry-rights-rights-legacy": "$1 je {{GENDER:$2|spremenil|spremenila|spremenil(-a)}} uporabniške pravice uporabnika $3",
"logentry-rights-autopromote": "$1 je {{GENDER:$2|bil samodejno povišan|bila samodejno povišana|bil(-a) samodejno povišan(-a)}} z $4 na $5",
"logentry-upload-upload": "$1 je {{GENDER:$2|naložil|naložila|naložil(-a)}} $3",
@@ -3452,6 +3451,7 @@
"api-error-unknownerror": "Neznana napaka: »$1«.",
"api-error-uploaddisabled": "Nalaganje je onemogoÄeno na tem wikiju.",
"api-error-verification-error": "Ta datoteka je morda poÅ¡kodovana ali ima napaÄno konÄnico.",
+ "api-error-was-deleted": "Datoteko s tem imenom je v preteklosti nekdo že naložil, ampak je bila nato izbrisana.",
"duration-seconds": "$1 {{PLURAL:$1|sekunda|sekundi|sekunde|sekund}}",
"duration-minutes": "$1 {{PLURAL:$1|minuta|minuti|minute|minut}}",
"duration-hours": "$1 {{PLURAL:$1|ura|uri|ure|ur}}",
@@ -3542,6 +3542,7 @@
"special-characters-group-ipa": "Mednarodna fonetiÄna abeceda (IPA)",
"special-characters-group-symbols": "Simboli",
"special-characters-group-greek": "Grški",
+ "special-characters-group-greekextended": "GrÅ¡Äina, razÅ¡irjeno",
"special-characters-group-cyrillic": "Cirilica",
"special-characters-group-arabic": "Arabski",
"special-characters-group-arabicextended": "RazÅ¡irjena arabÅ¡Äina",
@@ -3569,5 +3570,54 @@
"sessionprovider-generic": "sej $1",
"sessionprovider-mediawiki-session-cookiesessionprovider": "sej, ki temeljijo na piškotkih",
"sessionprovider-nocookies": "PiÅ¡kotki so morda onemogoÄeni. PrepriÄaje se, da imate piÅ¡kotke omogoÄene, in zaÄnite znova.",
- "randomrootpage": "NakljuÄna korenska stran"
+ "randomrootpage": "NakljuÄna korenska stran",
+ "log-action-filter-block": "Vrsta blokade:",
+ "log-action-filter-contentmodel": "Vrsta spremembe modelastrani:",
+ "log-action-filter-delete": "Vrsta izbrisa:",
+ "log-action-filter-import": "Vrsta uvoza:",
+ "log-action-filter-managetags": "Vrsta dejanja upravljanja oznak:",
+ "log-action-filter-move": "Vrsta premika:",
+ "log-action-filter-newusers": "Vrsta ustvarjanja raÄuna:",
+ "log-action-filter-patrol": "Vrsta nadzora:",
+ "log-action-filter-protect": "Vrsta zaÅ¡Äite:",
+ "log-action-filter-rights": "Vrsta spremembe pravic",
+ "log-action-filter-suppress": "Vrsta zatrtja",
+ "log-action-filter-upload": "Vrsta nalaganja:",
+ "log-action-filter-all": "Vse",
+ "log-action-filter-block-block": "Blokada",
+ "log-action-filter-block-reblock": "Sprememba blokade",
+ "log-action-filter-block-unblock": "Odstranitev blokade",
+ "log-action-filter-contentmodel-change": "Sprememba Modelastrani",
+ "log-action-filter-contentmodel-new": "Ustvarjanje strani z nestandardnim Modelomstrani",
+ "log-action-filter-delete-delete": "Izbris strani",
+ "log-action-filter-delete-restore": "Obnovitev strani",
+ "log-action-filter-delete-event": "Dnevnik brisanja",
+ "log-action-filter-delete-revision": "Izbris redakcije",
+ "log-action-filter-import-interwiki": "Uvoz med wikiji",
+ "log-action-filter-import-upload": "Uvoz z nalaganjem XML",
+ "log-action-filter-managetags-create": "Ustvarjanje oznake",
+ "log-action-filter-managetags-delete": "Izbris oznake",
+ "log-action-filter-managetags-activate": "Aktivacija oznake",
+ "log-action-filter-managetags-deactivate": "Dezaktivacija oznake",
+ "log-action-filter-move-move": "Premik brez prepisa preusmeritev",
+ "log-action-filter-move-move_redir": "Premik s prepisom preusmeritev",
+ "log-action-filter-newusers-create": "Ustvaril brezimni uporabnik",
+ "log-action-filter-newusers-create2": "Ustvaril registriran uporabnik",
+ "log-action-filter-newusers-autocreate": "Samodejno ustvarjeno",
+ "log-action-filter-newusers-byemail": "Ustvarjeno z geslom, poslanim po e-pošti",
+ "log-action-filter-patrol-patrol": "RoÄni nadzor",
+ "log-action-filter-patrol-autopatrol": "Samodejni nadzor",
+ "log-action-filter-protect-protect": "ZaÅ¡Äita",
+ "log-action-filter-protect-modify": "Sprememba zaÅ¡Äite",
+ "log-action-filter-protect-unprotect": "Odstranitev zaÅ¡Äite",
+ "log-action-filter-protect-move_prot": "Prestavljena zaÅ¡Äita",
+ "log-action-filter-rights-rights": "RoÄna sprememba",
+ "log-action-filter-rights-autopromote": "Samodejna sprememba",
+ "log-action-filter-suppress-event": "Zatrtje dnevnika",
+ "log-action-filter-suppress-revision": "Zatrtje redakcije",
+ "log-action-filter-suppress-delete": "Zatrtje strani",
+ "log-action-filter-suppress-block": "Zatrtje uporabnika z blokado",
+ "log-action-filter-suppress-reblock": "Zatrtje uporabnika s ponovno blokado",
+ "log-action-filter-upload-upload": "Novo nalaganje",
+ "log-action-filter-upload-overwrite": "Ponovno nalaganje"
}
diff --git a/languages/i18n/sli.json b/languages/i18n/sli.json
index 05dd4553cc..25e16488c8 100644
--- a/languages/i18n/sli.json
+++ b/languages/i18n/sli.json
@@ -981,8 +981,6 @@
"categories": "Kategoria",
"categoriespagetext": "Fulgende {{PLURAL:$1|Kategorie enthält|Kategorien enthaaln}} Seita oder Dateien.\n[[Special:UnusedCategories|Unbenutzte Kategorien]] waan hier nee uffgefiehrt.\nSiehe au de Liste der [[Special:WantedCategories|gewinschta Kategorien]].",
"categoriesfrom": "Zeige Kategorien ob:",
- "special-categories-sort-count": "Sortierung noach Oazoahl",
- "special-categories-sort-abc": "Sortierung noach Alphabet",
"deletedcontributions": "Geläschte Beiträge",
"deletedcontributions-title": "Geläschte Beiträge",
"linksearch-ns": "Noamensraum:",
@@ -1488,8 +1486,8 @@
"exif-artist": "Fotogroaf",
"exif-flashpixversion": "understitzte Flashpix-Version",
"exif-colorspace": "Forbraum",
- "exif-pixelydimension": "Giltige Bildbreite",
- "exif-pixelxdimension": "Giltige Bildhiehe",
+ "exif-pixelxdimension": "Giltige Bildbreite",
+ "exif-pixelydimension": "Giltige Bildhiehe",
"exif-usercomment": "Nutzerkommentare",
"exif-relatedsoundfile": "Zugehierige Tondatei",
"exif-exposuretime-format": "$1 Sekunda ($2)",
@@ -1636,7 +1634,6 @@
"version-hook-name": "Schnittstallanoame",
"version-hook-subscribedby": "Uffruff vu",
"fileduplicatesearch-summary": "Suche noach Dateiduplikaten uff Basis ihres Hashwertes.",
- "fileduplicatesearch-legend": "Suche noach Duplikata",
"fileduplicatesearch-filename": "Dateinoame:",
"fileduplicatesearch-submit": "Sucha",
"fileduplicatesearch-info": "$1 Ã $2 Pixel DateigreeÃe: $3 MIME-Typ: $4",
diff --git a/languages/i18n/sq.json b/languages/i18n/sq.json
index 552431f0ee..d17130eff1 100644
--- a/languages/i18n/sq.json
+++ b/languages/i18n/sq.json
@@ -1548,8 +1548,6 @@
"categories": "Kategori",
"categoriespagetext": "{{PLURAL:$1|kategoria në vijim përmban|kategoritë në vikim përmbajnë}} faqe ose media.\n[[Special:UnusedCategories|Kategoritë e pa përdorura]] nuk janë të paraqitura këtu.\nShikoni edhe [[Special:WantedCategories|kategoritë e dëshiruara]].",
"categoriesfrom": "Paraqit kategoritë duke filluar në:",
- "special-categories-sort-count": "radhit sipas numrit",
- "special-categories-sort-abc": "radhiti sipas alfabetit",
"deletedcontributions": "Kontribute të grisura",
"deletedcontributions-title": "Kontribute të grisura",
"sp-deletedcontributions-contribs": "kontributet",
@@ -2080,10 +2078,6 @@
"import-logentry-upload-detail": "$1 {{PLURAL:$1|version|versione}}",
"import-logentry-interwiki-detail": "$1 {{PLURAL:$!1|version|versione}} nga $2",
"javascripttest": "Duke testuar JavaScript",
- "javascripttest-pagetext-noframework": "Kjo faqe është rezervuar për kryerjen e testimeve JavaScript.",
- "javascripttest-pagetext-unknownframework": "Kornizë pune e panjohur testuese \"$1\".",
- "javascripttest-pagetext-frameworks": "Ju lutemi zgjidhni njërën nga kornizat vijuese punuese të testimit: $1",
- "javascripttest-pagetext-skins": "Zgjidhni një mostër për t'i kryer testimet:",
"javascripttest-qunit-intro": "Shiko [$1 dokumentacionin e testimit] në mediawiki.org.",
"tooltip-pt-userpage": "Faqja jote e përdoruesit",
"tooltip-pt-anonuserpage": "Faqja e përdoruesve anonim nga kjo adresë IP",
@@ -2302,8 +2296,8 @@
"exif-colorspace": "Hapësira e ngjyrave",
"exif-componentsconfiguration": "Kuptimi i secilit komponent",
"exif-compressedbitsperpixel": "Lloji i ngjeshjes së figurës",
- "exif-pixelydimension": "Gjerësia Image",
- "exif-pixelxdimension": "lartësi Image",
+ "exif-pixelxdimension": "Gjerësia Image",
+ "exif-pixelydimension": "lartësi Image",
"exif-usercomment": "Komentet e përdoruesit",
"exif-relatedsoundfile": "Skeda audio shoqëruese",
"exif-datetimeoriginal": "Data dhe koha e prodhimit të të dhënave",
@@ -2707,7 +2701,6 @@
"version-entrypoints-header-url": "URL",
"fileduplicatesearch": "Kërkoni për skeda të dyfishta",
"fileduplicatesearch-summary": "Kërkoni për dyfishime të skedave në bazë të vlerës përmbledhëse («hash»).",
- "fileduplicatesearch-legend": "Kërko për dyfishime",
"fileduplicatesearch-filename": "Emri i skedës:",
"fileduplicatesearch-submit": "Kërko",
"fileduplicatesearch-info": "$1 à $2 pixel Madhësia e skedës: $3 Lloji MIME: $4",
diff --git a/languages/i18n/sr-ec.json b/languages/i18n/sr-ec.json
index 9c8254acda..3d08fa1152 100644
--- a/languages/i18n/sr-ec.json
+++ b/languages/i18n/sr-ec.json
@@ -48,6 +48,7 @@
"tog-watchdefault": "ÐÐ¾Ð´Ð°Ñ ÑÑÑаниÑе и даÑоÑеке коÑе изменим Ñ ÑпиÑак надгледаÑа",
"tog-watchmoves": "ÐÐ¾Ð´Ð°Ñ ÑÑÑаниÑе и даÑоÑеке коÑе пÑемеÑÑим Ñ ÑпиÑак надгледаÑа",
"tog-watchdeletion": "ÐÐ¾Ð´Ð°Ñ ÑÑÑаниÑе и даÑоÑеке коÑе обÑиÑем Ñ ÑпиÑак надгледаÑа",
+ "tog-watchuploads": "ÐÐ¾Ð´Ð°Ñ Ð´Ð°ÑоÑеке коÑе оÑпÑемим Ñ ÑпиÑак надгледаÑа",
"tog-watchrollback": "ÐÐ¾Ð´Ð°Ñ ÑÑÑаниÑе на коÑима Ñам вÑаÑио измене Ñ ÑпиÑак надгледаÑа",
"tog-minordefault": "ÐзнаÑÐ°Ð²Ð°Ñ Ñве измене као маÑе",
"tog-previewontop": "ÐÑикажи пÑеглед пÑе оквиÑа за ÑÑеÑиваÑе",
@@ -1413,7 +1414,7 @@
"backend-fail-read": "Ðе Ð¼Ð¾Ð³Ñ Ð´Ð° пÑоÑиÑам даÑоÑÐµÐºÑ $1.",
"backend-fail-create": "Ðе Ð¼Ð¾Ð³Ñ Ð´Ð° запиÑем даÑоÑÐµÐºÑ $1.",
"backend-fail-maxsize": "Ðе Ð¼Ð¾Ð³Ñ Ð´Ð° запиÑем даÑоÑÐµÐºÑ $1 ÑÐµÑ Ñе веÑа од {{PLURAL:$2|$2 баÑÑа|$2 баÑÑа|$2 баÑÑова}}.",
- "backend-fail-readonly": "СкладиÑна оÑнова â$1â ÑÑенÑÑно не може да Ñе запиÑÑÑе. Ðаведени Ñазлог глаÑи: â$2â",
+ "backend-fail-readonly": "СкладиÑна оÑнова â$1â ÑÑенÑÑно не може да Ñе запиÑÑÑе. Ðаведени Ñазлог глаÑи: $2 ",
"backend-fail-synced": "ÐаÑоÑека â$1â Ñе недоÑледна измеÑÑ ÑнÑÑÑаÑÑиÑ
ÑкладиÑниÑ
оÑнова",
"backend-fail-connect": "Ðе Ð¼Ð¾Ð³Ñ Ð´Ð° Ñе повежем Ñа ÑкладиÑном оÑновом â$1â.",
"backend-fail-internal": "ÐоÑло Ñе до непознаÑе гÑеÑке Ñ ÑкладиÑÐ½Ð¾Ñ Ð¾Ñнови â$1â.",
@@ -1733,8 +1734,6 @@
"categories-submit": "ÐÑикажи",
"categoriespagetext": "{{PLURAL:$1|1=СледеÑа каÑегоÑиÑа ÑадÑжи|СледеÑе каÑегоÑиÑе ÑадÑже}} ÑÑÑаниÑе или даÑоÑеке.\n[[Special:UnusedCategories|ÐекоÑиÑÑене каÑегоÑиÑе]] ниÑÑ Ð¿Ñиказане овде.\nÐогледаÑÑе и [[Special:WantedCategories|ÑÑажене каÑегоÑиÑе]].",
"categoriesfrom": "ÐÑикажи каÑегоÑиÑе поÑев од:",
- "special-categories-sort-count": "поÑеÑÐ°Ñ Ð¿Ð¾ бÑоÑÑ",
- "special-categories-sort-abc": "поÑеÑÐ°Ñ Ð¿Ð¾ азбÑÑном ÑедÑ",
"deletedcontributions": "ÐбÑиÑани коÑиÑниÑки допÑиноÑи",
"deletedcontributions-title": "ÐбÑиÑани коÑиÑниÑки допÑиноÑи",
"sp-deletedcontributions-contribs": "допÑиноÑи",
@@ -2076,7 +2075,7 @@
"unblock": "ÐеблокиÑаÑе коÑиÑника",
"blockip": "ÐлокиÑÐ°Ñ {{GENDER:$1|коÑиÑника|коÑиÑниÑÑ}}",
"blockip-legend": "ÐлокиÑÐ°Ñ ÐºÐ¾ÑиÑника",
- "blockiptext": "ÐоÑиÑÑиÑе доÑи обÑÐ°Ð·Ð°Ñ Ð´Ð° биÑÑе забÑанили пÑиÑÑÑп за пиÑаÑе Ñ Ð¾Ð´ÑеÑене ÐРадÑеÑе или коÑиÑниÑког имена.\nÐво би ÑÑебало да вÑÑиÑе Ñамо Ñади ÑпÑеÑаваÑа вандализма, Ñ ÑÐºÐ»Ð°Ð´Ñ Ñа [[{{MediaWiki:Policy-url}}|ÑмеÑниÑама]].\nÐзабеÑиÑе конкÑеÑан Ñазлог иÑпод (пÑимеÑ: навоÑеÑе конкÑеÑниÑ
ÑÑÑаниÑа коÑе ÑÑ Ð²Ð°Ð½Ð´Ð°Ð»Ð¸Ð·Ð¾Ð²Ð°Ð½Ðµ).",
+ "blockiptext": "ÐоÑиÑÑиÑе доÑи обÑÐ°Ð·Ð°Ñ Ð´Ð° биÑÑе забÑанили пÑиÑÑÑп за пиÑаÑе Ñ Ð¾Ð´ÑеÑене ÐРадÑеÑе или коÑиÑниÑког имена.\nÐво би ÑÑебало да вÑÑиÑе Ñамо Ñади ÑпÑеÑаваÑа вандализма, Ñ ÑÐºÐ»Ð°Ð´Ñ Ñа [[{{MediaWiki:Policy-url}}|ÑмеÑниÑама]].\nÐзабеÑиÑе конкÑеÑан Ñазлог иÑпод (пÑимеÑ: навоÑеÑе конкÑеÑниÑ
ÑÑÑаниÑа коÑе ÑÑ Ð²Ð°Ð½Ð´Ð°Ð»Ð¸Ð·Ð¾Ð²Ð°Ð½Ðµ). ÐожеÑе блокиÑаÑи опÑеге ÐРадÑеÑа помоÑÑ [https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing CIDR] ÑинÑакÑе, наÑвеÑи дозвоÑени опÑег за IPv4 Ñе /$1 одноÑно /$2 за IPv6.",
"ipaddressorusername": "ÐРадÑеÑа или коÑиÑниÑко име:",
"ipbexpiry": "ÐÑÑиÑе:",
"ipbreason": "Разлог:",
@@ -2338,11 +2337,7 @@
"import-logentry-upload-detail": "$1 {{PLURAL:$1|измена Ñвезена|измене Ñвезене|измена Ñвезено}}",
"import-logentry-interwiki-detail": "$1 {{PLURAL:$1|измена Ñвезена|измене Ñвезене|измена Ñвезено}} из $2",
"javascripttest": "ÐаваÑкÑÐ¸Ð¿Ñ ÑеÑÑ",
- "javascripttest-pagetext-noframework": "Ðва ÑÑÑаниÑа Ñе ÑезеÑвиÑана за извÑÑаваÑе ÑаваÑкÑÐ¸Ð¿Ñ ÑеÑÑова.",
- "javascripttest-pagetext-unknownframework": "ÐепознаÑи Ñадни Ð¾ÐºÐ²Ð¸Ñ â$1â.",
"javascripttest-pagetext-unknownaction": "ÐепознаÑа ÑадÑа â$1â.",
- "javascripttest-pagetext-frameworks": "ÐзабеÑиÑе Ñедан од ÑледеÑиÑ
ÑадниÑ
оквиÑа: $1",
- "javascripttest-pagetext-skins": "ÐзабеÑиÑе Ñ ÐºÐ¾Ñом Ñемом желиÑе да покÑенеÑе пÑобÑ:",
"javascripttest-qunit-intro": "ÐогледаÑÑе [$1 докÑменÑаÑиÑÑ Ð·Ð° ÑеÑÑиÑаÑе] на mediawiki.org.",
"tooltip-pt-userpage": "{{GENDER:|ÐаÑа}} коÑиÑниÑка ÑÑÑаниÑа",
"tooltip-pt-anonuserpage": "ÐоÑиÑниÑка ÑÑÑаниÑа за ÐРадÑеÑÑ Ñ ÐºÐ¾Ñе ÑÑеÑÑÑеÑе",
@@ -2647,8 +2642,8 @@
"exif-colorspace": "ÐÑоÑÑÐ¾Ñ Ð±Ð¾Ñе",
"exif-componentsconfiguration": "ÐнаÑеÑе Ñваког дела",
"exif-compressedbitsperpixel": "Режим ÑажимаÑа Ñлике",
- "exif-pixelydimension": "ШиÑина Ñлике",
- "exif-pixelxdimension": "ÐиÑина Ñлике",
+ "exif-pixelxdimension": "ШиÑина Ñлике",
+ "exif-pixelydimension": "ÐиÑина Ñлике",
"exif-usercomment": "ÐоÑиÑниÑки коменÑаÑи",
"exif-relatedsoundfile": "Ðовезани звÑÑни запиÑ",
"exif-datetimeoriginal": "ÐаÑÑм и вÑеме ÑликаÑа",
@@ -3179,7 +3174,6 @@
"version-libraries-description": "ÐпиÑ",
"version-libraries-authors": "ÐÑÑоÑи",
"redirect": "ÐÑеÑÑмеÑеÑе на даÑоÑекÑ, коÑиÑника, ÑÑÑаниÑÑ Ð¸Ð»Ð¸ изменÑ",
- "redirect-legend": "ÐÑеÑÑмеÑи на даÑоÑÐµÐºÑ Ð¸Ð»Ð¸ ÑÑÑаниÑÑ",
"redirect-submit": "Ðди",
"redirect-lookup": "Тип вÑедноÑÑи:",
"redirect-value": "ÐÑедноÑÑ:",
@@ -3190,7 +3184,6 @@
"redirect-not-exists": "ÐÑедноÑÑ Ð½Ð¸Ñе пÑонаÑена",
"fileduplicatesearch": "ÐÑеÑÑага дÑпликаÑа",
"fileduplicatesearch-summary": "ÐÑеÑÑага дÑплиÑаниÑ
даÑоÑека пÑема Ñ
ÐµÑ Ð²ÑедноÑÑи.",
- "fileduplicatesearch-legend": "ÐÑеÑÑага дÑпликаÑа",
"fileduplicatesearch-filename": "Ðазив даÑоÑеке:",
"fileduplicatesearch-submit": "ÐÑеÑÑажи",
"fileduplicatesearch-info": "$1 à $2 пикÑела ÐелиÑина даÑоÑеке: $3 MIME Ñип: $4",
@@ -3354,7 +3347,7 @@
"logentry-protect-protect-cascade": "$1 Ñе {{GENDER:$2|заÑÑиÑио|заÑÑиÑила}} $3 $4 [пÑеноÑива заÑÑиÑа]",
"logentry-protect-modify": "$1 Ñе {{GENDER:$2|пÑоменио|пÑоменила}} ÑÑепен заÑÑиÑе за $3 $4",
"logentry-protect-modify-cascade": "$1 Ñе {{GENDER:$2|пÑоменио|пÑоменила}} ÑÑепен заÑÑиÑе за $3 $4 [пÑеноÑива заÑÑиÑа]",
- "logentry-rights-rights": "$1 Ñе {{GENDER:$2|пÑоменио|пÑоменила}} ÑланÑÑво гÑÑпе за $3 из $4 Ñ $5",
+ "logentry-rights-rights": "$1 Ñе {{GENDER:$2|пÑоменио|пÑоменила}} ÑланÑÑво гÑÑпе за {{GENDER:$6|$3}} из $4 Ñ $5",
"logentry-rights-rights-legacy": "$1 Ñе {{GENDER:$2|пÑоменио|пÑоменила}} ÑланÑÑво гÑÑпе за $3",
"logentry-rights-autopromote": "$1 Ñе аÑÑомаÑÑки {{GENDER:$2|ÑнапÑеÑен|ÑнапÑеÑена}} из $4 Ñ $5",
"logentry-upload-upload": "$1 Ñе {{GENDER:$2|поÑлао|поÑлала}} $3",
@@ -3506,5 +3499,43 @@
"mw-widgets-titleinput-description-new-page": "ÑÑÑаниÑа ÑÐ¾Ñ Ñвек не поÑÑоÑи",
"mw-widgets-titleinput-description-redirect": "пÑеÑÑмеÑава на $1",
"api-error-blacklisted": "ÐзабеÑиÑе дÑÑгаÑиÑи, опиÑан назив.",
- "randomrootpage": "СлÑÑаÑна коÑенÑка ÑÑÑаниÑа"
+ "randomrootpage": "СлÑÑаÑна коÑенÑка ÑÑÑаниÑа",
+ "log-action-filter-block": "Тип блокиÑаÑа:",
+ "log-action-filter-contentmodel": "Тип пÑомене модела ÑадÑжаÑа:",
+ "log-action-filter-delete": "Тип бÑиÑаÑа:",
+ "log-action-filter-import": "Тип Ñвоза:",
+ "log-action-filter-managetags": "Тип ÑÑеÑиваÑа ознака:",
+ "log-action-filter-move": "Тип пÑемеÑÑаÑа:",
+ "log-action-filter-newusers": "Тип новог налога:",
+ "log-action-filter-patrol": "Тип паÑÑолиÑаÑа:",
+ "log-action-filter-protect": "Тип закÑÑÑаваÑа:",
+ "log-action-filter-rights": "Тип пÑомене коÑиÑниÑкиÑ
пÑава:",
+ "log-action-filter-upload": "Тип оÑпÑемаÑа:",
+ "log-action-filter-all": "Ñве",
+ "log-action-filter-block-block": "блокиÑаÑе",
+ "log-action-filter-block-reblock": "измена блокиÑаÑа",
+ "log-action-filter-block-unblock": "деблокиÑаÑе",
+ "log-action-filter-delete-delete": "бÑиÑаÑе ÑÑÑаниÑе",
+ "log-action-filter-delete-restore": "вÑаÑаÑе ÑÑÑаниÑе",
+ "log-action-filter-delete-event": "бÑиÑаÑе ÑноÑа Ñ Ð´Ð½ÐµÐ²Ð½Ð¸Ñима",
+ "log-action-filter-delete-revision": "бÑиÑаÑе измене",
+ "log-action-filter-managetags-create": "нова ознака",
+ "log-action-filter-managetags-delete": "бÑиÑаÑе ознаке",
+ "log-action-filter-managetags-activate": "акÑивиÑаÑе ознаке",
+ "log-action-filter-managetags-deactivate": "деакÑивиÑаÑе ознаке",
+ "log-action-filter-move-move": "пÑемеÑÑаÑе без пÑеÑнимаваÑа пÑеÑÑмеÑеÑа",
+ "log-action-filter-move-move_redir": "пÑемеÑÑаÑе Ñа пÑеÑнимаваÑем пÑеÑÑмеÑеÑа",
+ "log-action-filter-newusers-create": "оÑвоÑио анониман коÑиÑник",
+ "log-action-filter-newusers-create2": "оÑвоÑио ÑегиÑÑÑован коÑиÑник",
+ "log-action-filter-newusers-autocreate": "аÑÑомаÑÑки оÑвоÑен",
+ "log-action-filter-patrol-patrol": "ÑÑÑно",
+ "log-action-filter-patrol-autopatrol": "аÑÑомаÑÑко",
+ "log-action-filter-protect-protect": "закÑÑÑаваÑе",
+ "log-action-filter-protect-modify": "измена закÑÑÑаваÑа",
+ "log-action-filter-protect-unprotect": "ÑклаÑаÑе закÑÑÑаваÑа",
+ "log-action-filter-protect-move_prot": "пÑемеÑÑаÑе заÑÑиÑе",
+ "log-action-filter-rights-rights": "ÑÑÑно",
+ "log-action-filter-rights-autopromote": "аÑÑомаÑÑки",
+ "log-action-filter-upload-upload": "ново",
+ "log-action-filter-upload-overwrite": "пÑомена поÑÑоÑеÑег"
}
diff --git a/languages/i18n/sr-el.json b/languages/i18n/sr-el.json
index c189237047..696e8f4259 100644
--- a/languages/i18n/sr-el.json
+++ b/languages/i18n/sr-el.json
@@ -1358,7 +1358,7 @@
"backend-fail-read": "Ne mogu da proÄitam datoteku $1.",
"backend-fail-create": "Ne mogu da zapišem datoteku $1.",
"backend-fail-maxsize": "Ne mogu da zapiÅ¡em datoteku $1 jer je veÄa od {{PLURAL:$2|$2 bajta|$2 bajta|$2 bajtova}}.",
- "backend-fail-readonly": "SkladiÅ¡na osnova â$1â trenutno ne može da se zapisuje. Navedeni razlog glasi: â$2â",
+ "backend-fail-readonly": "SkladiÅ¡na osnova â$1â trenutno ne može da se zapisuje. Navedeni razlog glasi: $2 ",
"backend-fail-synced": "Datoteka â$1â je nedosledna izmeÄu unutraÅ¡njih skladiÅ¡nih osnova",
"backend-fail-connect": "Ne mogu da se povežem sa skladiÅ¡nom osnovom â$1â.",
"backend-fail-internal": "DoÅ¡lo je do nepoznate greÅ¡ke u skladiÅ¡noj osnovi â$1â.",
@@ -1677,8 +1677,6 @@
"categories-submit": "Prikaži",
"categoriespagetext": "{{PLURAL:$1|1=SledeÄa kategorija sadrži|SledeÄe kategorije sadrže}} stranice ili datoteke.\n[[Special:UnusedCategories|NekoriÅ¡Äene kategorije]] nisu prikazane ovde.\nPogledajte i [[Special:WantedCategories|tražene kategorije]].",
"categoriesfrom": "Prikaži kategorije poÄev od:",
- "special-categories-sort-count": "poreÄaj po broju",
- "special-categories-sort-abc": "poreÄaj po azbuÄnom redu",
"deletedcontributions": "Obrisani korisniÄki doprinosi",
"deletedcontributions-title": "Obrisani korisniÄki doprinosi",
"sp-deletedcontributions-contribs": "doprinosi",
@@ -2019,7 +2017,7 @@
"unblock": "Deblokiraj korisnika",
"blockip": "Blokiraj korisnika",
"blockip-legend": "Blokiraj korisnika",
- "blockiptext": "Koristite donji obrazac da biste zabranili pristup za pisanje s odreÄene IP adrese ili korisniÄkog imena.\nOvo bi trebalo da vrÅ¡ite samo radi spreÄavanja vandalizma, u skladu sa [[{{MediaWiki:Policy-url}}|smernicama]].\nIzaberite konkretan razlog ispod (primer: navoÄenje konkretnih stranica koje su vandalizovane).",
+ "blockiptext": "Koristite donji obrazac da biste zabranili pristup za pisanje s odreÄene IP adrese ili korisniÄkog imena.\nOvo bi trebalo da vrÅ¡ite samo radi spreÄavanja vandalizma, u skladu sa [[{{MediaWiki:Policy-url}}|smernicama]].\nIzaberite konkretan razlog ispod (primer: navoÄenje konkretnih stranica koje su vandalizovane). Možete blokirati opsege IP adresa pomoÄu [https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing CIDR] sintakse, najveÄi dozvoljeni opseg za IPv4 je /$1 odnosno /$2 za IPv6.",
"ipaddressorusername": "IP adresa ili korisniÄko ime:",
"ipbexpiry": "IstiÄe:",
"ipbreason": "Razlog:",
@@ -2281,10 +2279,6 @@
"import-logentry-upload-detail": "$1 {{PLURAL:$1|izmena uvezena|izmene uvezene|izmena uvezeno}}",
"import-logentry-interwiki-detail": "$1 {{PLURAL:$1|izmena uvezena|izmene uvezene|izmena uvezeno}} iz $2",
"javascripttest": "Javaskript test",
- "javascripttest-pagetext-noframework": "Ova stranica je rezervisana za izvršavanje javaskript testova.",
- "javascripttest-pagetext-unknownframework": "Nepoznati radni okvir â$1â.",
- "javascripttest-pagetext-frameworks": "Izaberite jedan od sledeÄih radnih okvira: $1",
- "javascripttest-pagetext-skins": "Izaberite s kojom temom želite da pokrenete probu:",
"javascripttest-qunit-intro": "Pogledajte [$1 dokumentaciju za testiranje] na mediawiki.org.",
"tooltip-pt-userpage": "{{GENDER:|VaÅ¡a}} korisniÄka stranica",
"tooltip-pt-anonuserpage": "KorisniÄka stranica za IP adresu s koje ureÄujete",
@@ -2589,8 +2583,8 @@
"exif-colorspace": "Prostor boje",
"exif-componentsconfiguration": "ZnaÄenje svakog dela",
"exif-compressedbitsperpixel": "Režim sažimanja slike",
- "exif-pixelydimension": "Å irina slike",
- "exif-pixelxdimension": "Visina slike",
+ "exif-pixelxdimension": "Å irina slike",
+ "exif-pixelydimension": "Visina slike",
"exif-usercomment": "KorisniÄki komentari",
"exif-relatedsoundfile": "Povezani zvuÄni zapis",
"exif-datetimeoriginal": "Datum i vreme slikanja",
@@ -3120,7 +3114,6 @@
"version-libraries-description": "Opis",
"version-libraries-authors": "Autori",
"redirect": "Preusmerenje na datoteku, korisnika, stranicu ili izmenu",
- "redirect-legend": "Preusmeri na datoteku ili stranicu",
"redirect-submit": "Idi",
"redirect-lookup": "Tip vrednosti:",
"redirect-value": "Vrednost:",
@@ -3131,7 +3124,6 @@
"redirect-not-exists": "Vrednost nije pronaÄen",
"fileduplicatesearch": "Pretraga duplikata",
"fileduplicatesearch-summary": "Pretraga dupliranih datoteka prema heš vrednosti.",
- "fileduplicatesearch-legend": "Pretraga duplikata",
"fileduplicatesearch-filename": "Naziv datoteke:",
"fileduplicatesearch-submit": "Pretraži",
"fileduplicatesearch-info": "$1 Ã $2 piksela VeliÄina datoteke: $3 MIME tip: $4",
@@ -3295,7 +3287,7 @@
"logentry-protect-protect-cascade": "$1 je {{GENDER:$2|zaštitio|zaštitila}} $3 $4 [prenosiva zaštita]",
"logentry-protect-modify": "$1 je {{GENDER:$2|promenio|promenila}} stepen zaštite za $3 $4",
"logentry-protect-modify-cascade": "$1 je {{GENDER:$2|promenio|promenila}} stepen zaštite za $3 $4 [prenosiva zaštita]",
- "logentry-rights-rights": "$1 je {{GENDER:$2|promenio|promenila}} Älanstvo grupe za $3 iz $4 u $5",
+ "logentry-rights-rights": "$1 je {{GENDER:$2|promenio|promenila}} Älanstvo grupe za {{GENDER:$6|$3}} iz $4 u $5",
"logentry-rights-rights-legacy": "$1 je {{GENDER:$2|promenio|promenila}} Äalnstvo grupe za $3",
"logentry-rights-autopromote": "$1 je automatski {{GENDER:$1|unapreÄen|unapreÄena}} iz $4 u $5",
"logentry-upload-upload": "$1 je {{GENDER:$2|poslao|poslala}} $3",
diff --git a/languages/i18n/stq.json b/languages/i18n/stq.json
index 9f38a0a8f4..0df794d3fb 100644
--- a/languages/i18n/stq.json
+++ b/languages/i18n/stq.json
@@ -1273,8 +1273,6 @@
"categories": "Kategorien",
"categoriespagetext": "Foulgjende {{PLURAL:$1|Kategorie änthoalt|Kategorien änthoolde}} Sieden of Doatäie.\n[[Special:UnusedCategories|Nit benutsede Kategorien]] wäide hier nit apfierd.\nSjuch uk ju Lieste fon do [[Special:WantedCategories|wonskede Kategorien]].",
"categoriesfrom": "Wies Kategorien siet:",
- "special-categories-sort-count": "Sortierenge ätter Antaal",
- "special-categories-sort-abc": "Sortierenge ätter Alphabet",
"deletedcontributions": "Läskede Benutserbiedraage",
"deletedcontributions-title": "Läskede Benutserbiedraage",
"sp-deletedcontributions-contribs": "Benutserbiedraage",
@@ -1951,8 +1949,8 @@
"exif-colorspace": "Faawenruum",
"exif-componentsconfiguration": "Betjuudenge fon älke Komponente",
"exif-compressedbitsperpixel": "Komprimierde Bits pro Pixel",
- "exif-pixelydimension": "Bieldebratte",
- "exif-pixelxdimension": "Bieldehöchte",
+ "exif-pixelxdimension": "Bieldebratte",
+ "exif-pixelydimension": "Bieldehöchte",
"exif-usercomment": "Benutserkommentoare",
"exif-relatedsoundfile": "Touheerige Toondoatäi",
"exif-datetimeoriginal": "Ãrfoatengstiedpunkt",
@@ -2275,7 +2273,6 @@
"version-software-version": "Version",
"fileduplicatesearch": "Doatäi-Duplikoat-Säike",
"fileduplicatesearch-summary": "Säike ätter Doatäi-Duplikoate ap Basis fon hieren Hash-Wäid.",
- "fileduplicatesearch-legend": "Säike ätter Duplikoate",
"fileduplicatesearch-filename": "Doatäinoome:",
"fileduplicatesearch-submit": "Säike (016)",
"fileduplicatesearch-info": "$1 à $2 Pixel Doatäigrööte: $3 MIME-Typ: $4",
diff --git a/languages/i18n/su.json b/languages/i18n/su.json
index 520f3b3d7c..ce6ca9d428 100644
--- a/languages/i18n/su.json
+++ b/languages/i18n/su.json
@@ -592,7 +592,7 @@
"newarticle": "(anyar)",
"newarticletext": "Anjeun geus nuturkeun tutumbu ka kaca nu can aya.\nPikeun nyieun kaca, mimitian ku ngetik jeroeun kotak di handap\n(tempo [$1 kaca pitulung] pikeun leuwih écés).\nMun anjeun ka dieu teu ngahaja, klik baé tombol '''back''' na panyungsi anjeun.",
"anontalkpagetext": "----\nIeu mangrupa kaca sawala pikeun pamaké anonim anu can nyieun akun, atawa anu henteu maké. \nKu kituna kapaksa make alamat IP pikeun nyirikeun anjeunna. Alamat IP ieu bisa dipaké ku sababaraha jalma. Lamun anjeun salasahiji pamaké anonim sarta ngarasa aya koméntar nu teu pakait geus ditujukeun ka anjeun, mangga [[Special:UserLogin/signup|nyieun akun]] atawa [[Special:UserLogin|asup log]] sangkan teu pacorok jeung pamaké anonim lianna.",
- "noarticletext": "Kiwari can aya téks dina ieu kaca.\nAnjeun bisa [[Special:Search/{{PAGENAME}}|nyusud judul ieu kaca]] dina kaca séjén,\n[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} nyusud log nu tumali],\natawa [{{fullurl:{{FULLPAGENAME}}|action=edit}} ngédit ieu kaca] .",
+ "noarticletext": "Kiwari can aya téks dina ieu kaca.\nAnjeun bisa [[Special:Search/{{PAGENAME}}|nyusud judul ieu kaca]] dina kaca séjén,\n[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} nyusud log nu tumali],\natawa [{{fullurl:{{FULLPAGENAME}}|action=edit}} nyieun ieu kaca] .",
"noarticletext-nopermission": "Kiwari can aya téks dina ieu kaca.\nAnjeun bisa [[Special:Search/{{PAGENAME}}|nyusud judul ieu kaca]] dina kaca séjén,atawa [{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} nyusud log nu tumali] , tapi teu wenang pikeun nyieun ieu kaca.",
"missing-revision": "Révisi #$1 kaca \"{{FULLPAGENAME}}\" teu aya.\n\nKajadian ieu biasana kusabab nuturkeun tutumbu jujutan kaca anu geus dihapus.\nWincikanana bisa ditempo di [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} log hapusan].",
"userpage-userdoesnotexist": "Rekening pamaké \"$1 \" tacan kadaptar. Mangga tilikan lamun anjeun hoyong ngadamel/ngédit kaca ieu.",
@@ -1452,8 +1452,6 @@
"categories": "Kategori",
"categoriespagetext": "{{PLURAL:$1|Kategori|Kategori}} ngandung kaca atawa média.\n[[Special:UnusedCategories|Kategori nu teu kapaké]] henteu ditémbongkeun di dieu.\nBaca ogé [[Special:WantedCategories|kategori nu dipikabutuh]].",
"categoriesfrom": "Tembongkeun kategori-kategori dimimitian ku:",
- "special-categories-sort-count": "ngurut numutkeun jumlah",
- "special-categories-sort-abc": "runtuykeun dumasar abjad",
"deletedcontributions": "Kontribusi nu dihapus",
"deletedcontributions-title": "Kontribusi nu dihapus",
"sp-deletedcontributions-contribs": "kontribusi",
@@ -1662,6 +1660,7 @@
"undelete-show-file-submit": "Enya",
"namespace": "Ngaranspasi:",
"invert": "Balikkeun pilihan",
+ "tooltip-invert": "Contang ieu kotak pikeun nyumputkeun parobahan kaca-kaca dina ruang nama anu dipilih (jeung ruang nama anu tumali, lamun dicontang)",
"blanknamespace": "(Utama)",
"contributions": "Kontribusi {{GENDER:$1|pamaké}}",
"contributions-title": "Sumbangan tulisan ti $1",
@@ -2059,8 +2058,8 @@
"exif-colorspace": "Rohangan warna",
"exif-componentsconfiguration": "Harti unggak komponén",
"exif-compressedbitsperpixel": "Mode komprési gambar",
- "exif-pixelydimension": "Lébar gambar",
- "exif-pixelxdimension": "Jangkung gambar",
+ "exif-pixelxdimension": "Lébar gambar",
+ "exif-pixelydimension": "Jangkung gambar",
"exif-usercomment": "Koméntar pamaké",
"exif-datetimeoriginal": "Titimangsa jeung wanci dijieunna data",
"exif-datetimedigitized": "Titimangsa jeung wanci digitisasi",
@@ -2348,7 +2347,6 @@
"version-software-product": "Produk",
"version-software-version": "Vérsi",
"fileduplicatesearch": "Sungsi gambar duplikat",
- "fileduplicatesearch-legend": "Sungsi duplikat",
"fileduplicatesearch-filename": "Ngaran koropak:",
"fileduplicatesearch-submit": "Sungsi",
"fileduplicatesearch-info": "$1 Ã $2 piksel Ukuran koropak: $3 Tipeu MIME: $4",
diff --git a/languages/i18n/sv.json b/languages/i18n/sv.json
index ccbdafbfeb..56419fa931 100644
--- a/languages/i18n/sv.json
+++ b/languages/i18n/sv.json
@@ -87,6 +87,7 @@
"tog-watchdefault": "Lägg till sidor och filer jag redigerar i min bevakningslista",
"tog-watchmoves": "Lägg till sidor och filer jag flyttar i min bevakningslista",
"tog-watchdeletion": "Lägg till sidor och filer jag raderar i min bevakningslista",
+ "tog-watchuploads": "Lägg till nya filer jag laddar upp i min bevakningslista",
"tog-watchrollback": "Lägg till sidor där jag har utfört en tillbakarullning till min bevakningslista",
"tog-minordefault": "Markera automatiskt ändringar som mindre",
"tog-previewontop": "Visa förhandsgranskningen ovanför redigeringsrutan",
@@ -339,7 +340,7 @@
"viewdeleted": "Visa $1?",
"restorelink": "{{PLURAL:$1|en raderad version|$1 raderade versioner}}",
"feedlinks": "Flöde:",
- "feed-invalid": "Ogiltig flödestyp.",
+ "feed-invalid": "Ogiltig flödestyp för prenumeration.",
"feed-unavailable": "Syndikerade flöden är inte tillgängliga",
"site-rss-feed": "$1 RSS-flöde",
"site-atom-feed": "$1 Atom-flöde",
@@ -527,7 +528,7 @@
"noemail": "Användaren \"$1\" har inte registrerat någon e-postadress.",
"noemailcreate": "Du måste ange en giltig e-postadress",
"passwordsent": "Ett nytt lösenord har skickats till den e-postadress som användaren \"$1\" har registrerat. När du får meddelandet, var god logga in igen.",
- "blocked-mailpassword": "Din IP-adress är blockerad, därför kan den inte användas för att få ett nytt lösenord.",
+ "blocked-mailpassword": "Din IP-adress har blockerats från att redigera. För att förhindra missbruk kan den inte användas för att få ett nytt lösenord.",
"eauthentsent": "Ett e-postmeddelande för bekräftelse har skickats till den angivna e-postadressen.\nInnan någon annan e-post kan skickas till kontot, måste du följa instruktionerna i e-postmeddelandet för att bekräfta att kontot verkligen är ditt.",
"throttled-mailpassword": "En lösenordsåterställning har redan skickats för mindre än {{PLURAL:$1|en timme|$1 timmar}} sedan.\nFör att förhindra missbruk skickas bara en lösenordsåterställning per {{PLURAL:$1|timme|$1-timmarsperiod}}.",
"mailerror": "Fel vid skickande av e-post: $1",
@@ -1370,9 +1371,9 @@
"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 [[Special:WhatLinksHere/$1|{{PLURAL:$2|en sida|$2 sidor}}]] lades till i kategorin",
+ "recentchanges-page-added-to-category-bundled": "[[:$1]] lades till i kategorin, [[Special:WhatLinksHere/$1|denna sida inkluderas i andra sidor]]",
"recentchanges-page-removed-from-category": "[[:$1]] togs bort från kategorin",
- "recentchanges-page-removed-from-category-bundled": "[[:$1]] och [[Special:WhatLinksHere/$1|{{PLURAL:$2|en sida|$2 sidor}}]] togs bort från kategorin",
+ "recentchanges-page-removed-from-category-bundled": "[[:$1]] togs bort från kategorin, [[Special:WhatLinksHere/$1|denna sida inkluderas i andra sidor]]",
"autochange-username": "Automatisk MediaWiki-ändring",
"upload": "Ladda upp fil",
"uploadbtn": "Ladda upp fil",
@@ -1552,6 +1553,7 @@
"uploadstash-badtoken": "Misslyckades att utföra åtgärden. Dina redigeringsrättigheter har kanske löpt ut. Försök igen.",
"uploadstash-errclear": "Rensning av filerna misslyckades.",
"uploadstash-refresh": "Uppdatera listan över filer",
+ "uploadstash-thumbnail": "visa miniatyr",
"invalid-chunk-offset": "Ogiltig segmentsförskjutning",
"img-auth-accessdenied": "Ã
tkomst nekad",
"img-auth-nopathinfo": "PATH_INFO saknas.\nDin server är inte inställd för att ge denna information.\nDen kan vara CGI-baserad och stöder inte img_auth.\n[https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Image_Authorization Se bildbehörighet.]",
@@ -1871,8 +1873,6 @@
"categories-submit": "Visa",
"categoriespagetext": "Följande {{PLURAL:$1|kategori|kategorier}} innehåller sidor eller media.\n[[Special:UnusedCategories|Oanvända kategorier]] visas inte här.\nSe även [[Special:WantedCategories|önskade kategorier]].",
"categoriesfrom": "Visa kategorier från och med:",
- "special-categories-sort-count": "sortera efter storlek",
- "special-categories-sort-abc": "sortera alfabetiskt",
"deletedcontributions": "Raderade användarbidrag",
"deletedcontributions-title": "Raderade användarbidrag",
"sp-deletedcontributions-contribs": "bidrag",
@@ -2249,6 +2249,7 @@
"ipb-unblock": "Ta bort blockering av en användare eller IP-adress",
"ipb-blocklist": "Visa gällande blockeringar",
"ipb-blocklist-contribs": "Bidrag från {{GENDER:$1|$1}}",
+ "ipb-blocklist-duration-left": "$1 kvar",
"unblockip": "Ta bort blockering av användare/IP-adress",
"unblockiptext": "Använd formuläret nedan för att ta bort blockeringen av en IP-adress.",
"ipusubmit": "Upphäv denna blockering",
@@ -2490,11 +2491,7 @@
"import-logentry-upload-detail": "$1 {{PLURAL:$1|version|versioner}} importerades",
"import-logentry-interwiki-detail": "$1 {{PLURAL:$1|version|versioner}} importerades från $2",
"javascripttest": "JavaScript-testning",
- "javascripttest-pagetext-noframework": "Denna sida är reserverat för att köra JavaScript-tester.",
- "javascripttest-pagetext-unknownframework": "Okänd testmiljö \"$1\".",
"javascripttest-pagetext-unknownaction": "Okänd handling \"$1\".",
- "javascripttest-pagetext-frameworks": "Välj en av följande testmiljöer: $1",
- "javascripttest-pagetext-skins": "Välj ett utseende att köra tester med:",
"javascripttest-qunit-intro": "Se [$1 testningsdokumentationen] på mediawiki.org.",
"tooltip-pt-userpage": "{{GENDER:|Din användarsida}}",
"tooltip-pt-anonuserpage": "Användarsida för ip-numret du redigerar från",
@@ -2764,8 +2761,8 @@
"exif-colorspace": "Färgrymd",
"exif-componentsconfiguration": "Komponentanalys",
"exif-compressedbitsperpixel": "Bildkomprimeringsläge",
- "exif-pixelydimension": "Bildbredd",
- "exif-pixelxdimension": "Bildhöjd",
+ "exif-pixelxdimension": "Bildbredd",
+ "exif-pixelydimension": "Bildhöjd",
"exif-usercomment": "Kommentarer",
"exif-relatedsoundfile": "Relaterad ljudfil",
"exif-datetimeoriginal": "Exponeringstidpunkt",
@@ -3091,6 +3088,10 @@
"confirmemail_body_set": "Någon, förmodligen du, från IP-adressen $1,\nhar angivit e-postadressen till kontot \"$2\" till den här adressen på {{SITENAME}}.\n\nFör att bekräfta att kontot verkligen tillhör dig, bör du aktivera e-postfunktionerna på {{SITENAME}}, öppna denna länk i din webbläsare:\n\n$3\n\nOm kontot *inte* tillhör dig, följ den här länken för att avbryta bekräftelsen av e-postadressen:\n\n$5\n\nDenna bekräftelsekod kommer att sluta fungera efter $4.",
"confirmemail_invalidated": "Bekräftelsen av e-postadressen har ogiltigförklarats",
"invalidateemail": "Avbryt bekräftelse av e-postadress",
+ "notificationemail_subject_changed": "Registrerad e-postadress på {{SITENAME}} har ändrats",
+ "notificationemail_subject_removed": "Registrerad e-postadress på {{SITENAME}} har tagits bort",
+ "notificationemail_body_changed": "Någon, förmodligen du, har ändrat e-postadressen\nför kontot \"$2\" till \"$3\" på {{SITENAME}} från IP-adressen $1.\n\nOm det inte var du bör du kontakta en webbplatsadministratör genast.",
+ "notificationemail_body_removed": "Någon, förmodligen du, har tagit bort e-postadressen\nför kontot \"$2\" på {{SITENAME}} från IP-adressen $1.\n\nOm det inte var du bör du kontakta en webbplatsadministratör genast.",
"scarytranscludedisabled": "[Interwiki-inklusion är inte aktiverad]",
"scarytranscludefailed": "[Hämtning av mall för $1 misslyckades]",
"scarytranscludefailed-httpstatus": "[Hämtning av mall för $1 misslyckades: HTTP $2]",
@@ -3211,7 +3212,6 @@
"version-libraries-description": "Beskrivning",
"version-libraries-authors": "Författare",
"redirect": "Omdirigering efter filnamn, användar-ID, sida, versions-ID eller logg-ID",
- "redirect-legend": "Omdirigera till en fil eller sida",
"redirect-summary": "Den här specialsidan omdirigerar till en fil (efter filnamn), en sida (efter en versions eller sidas ID), en användarsida (efter användar-ID) eller en loggpost (efter logg-ID). Användning: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], [[{{#Special:Redirect}}/user/101]] eller [[{{#Special:Redirect}}/logid/186]].",
"redirect-submit": "Kör",
"redirect-lookup": "Slå upp:",
@@ -3224,7 +3224,6 @@
"redirect-not-exists": "Värdet hittades inte",
"fileduplicatesearch": "Sök efter dubblettfiler",
"fileduplicatesearch-summary": "Sök efter dubblettfiler baserat på filernas hash-värden.",
- "fileduplicatesearch-legend": "Sök efter en dubblettfil",
"fileduplicatesearch-filename": "Filnamn:",
"fileduplicatesearch-submit": "Sök",
"fileduplicatesearch-info": "$1 Ã $2 pixlar Filstorlek: $3 MIME-typ: $4",
@@ -3425,7 +3424,7 @@
"logentry-protect-protect-cascade": "$1 {{GENDER:$2|skyddade}} $3 $4 [kaskaderande]",
"logentry-protect-modify": "$1 {{GENDER:$2|ändrade}} skyddsnivån för $3 $4",
"logentry-protect-modify-cascade": "$1 {{GENDER:$2|ändrade}} skyddsnivån för $3 $4 [kaskaderande]",
- "logentry-rights-rights": "$1 {{GENDER:$2|ändrade}} gruppmedlemskapet för $3 från $4 till $5",
+ "logentry-rights-rights": "$1 {{GENDER:$2|ändrade}} gruppmedlemskapet för {{GENDER:$6|$3}} från $4 till $5",
"logentry-rights-rights-legacy": "$1 {{GENDER:$2|ändrade}} gruppmedlemskapet för $3",
"logentry-rights-autopromote": "$1 {{GENDER:$2|befordrades}} automatiskt från $4 till $5",
"logentry-upload-upload": "$1 {{GENDER:$2|laddade upp}} $3",
@@ -3453,7 +3452,7 @@
"feedback-bugnew": "Jag kontrollerade. Rapportera ett nytt fel",
"feedback-bugornote": "Om du har möjlighet att ge en detaljerad teknisk beskrivning av felet kan du lämna en [$1 buggrapport]. \nAnvänd annars formuläret nedan. Din kommentar kommer att läggas till på sidan \"[$3 $2]\", tillsammans med ditt användarnamn.",
"feedback-cancel": "Avbryt",
- "feedback-close": "Färdig",
+ "feedback-close": "Fixat",
"feedback-external-bug-report-button": "Registrera en teknisk uppgift",
"feedback-dialog-title": "Skicka återkoppling",
"feedback-dialog-intro": "Du kan använda det enkla formuläret nedan för att skicka in din återkoppling. Din kommentar kommer att läggas till på sidan \"$1\" tillsammans med ditt användarnamn.",
@@ -3518,6 +3517,7 @@
"api-error-unknownerror": "Okänt fel: \"$1\".",
"api-error-uploaddisabled": "Uppladdning är inaktiverad på denna wiki.",
"api-error-verification-error": "Denna fil kan vara skadad eller har fel filändelse.",
+ "api-error-was-deleted": "En fil med detta namn har tidigare laddats upp och sedan raderats.",
"duration-seconds": "$1 {{PLURAL:$1|sekund|sekunder}}",
"duration-minutes": "$1 {{PLURAL:$1|minut|minuter}}",
"duration-hours": "$1 {{PLURAL:$1|timme|timmar}}",
@@ -3608,6 +3608,7 @@
"special-characters-group-ipa": "IPA",
"special-characters-group-symbols": "Symboler",
"special-characters-group-greek": "Grekiska",
+ "special-characters-group-greekextended": "Grekiska utvidgad",
"special-characters-group-cyrillic": "Kyrilliskt",
"special-characters-group-arabic": "Arabiska",
"special-characters-group-arabicextended": "Arabiska utökade",
@@ -3635,5 +3636,43 @@
"sessionprovider-generic": "$1-sessioner",
"sessionprovider-mediawiki-session-cookiesessionprovider": "cookiebaserade sessioner",
"sessionprovider-nocookies": "Cookies kan vara inaktiverade. Se till att du har cookies aktiverat och försök igen.",
- "randomrootpage": "Slumprotsida"
+ "randomrootpage": "Slumprotsida",
+ "log-action-filter-block": "Typ av blockering:",
+ "log-action-filter-delete": "Typ av radering:",
+ "log-action-filter-import": "Importeringstyp:",
+ "log-action-filter-move": "Flyttningstyp:",
+ "log-action-filter-newusers": "Typ av kontoskapande:",
+ "log-action-filter-patrol": "Typ av patrullering:",
+ "log-action-filter-protect": "Typ av skydd:",
+ "log-action-filter-suppress": "Censurtyp",
+ "log-action-filter-upload": "Typ av uppladdning:",
+ "log-action-filter-all": "Alla",
+ "log-action-filter-block-block": "Blockering",
+ "log-action-filter-block-reblock": "Blockeringsändring",
+ "log-action-filter-block-unblock": "Tog bort blockering",
+ "log-action-filter-contentmodel-change": "Ãndring av innehÃ¥llsmodell",
+ "log-action-filter-delete-delete": "Radering av sida",
+ "log-action-filter-delete-restore": "Ã
terställde sida",
+ "log-action-filter-delete-event": "Radering av logg",
+ "log-action-filter-delete-revision": "Radering av sidversion",
+ "log-action-filter-import-upload": "Importera med XML-uppladdning",
+ "log-action-filter-managetags-create": "Märke skapad",
+ "log-action-filter-managetags-delete": "Märke raderad",
+ "log-action-filter-managetags-activate": "Märke aktiverad",
+ "log-action-filter-managetags-deactivate": "Märke inaktiverad",
+ "log-action-filter-move-move": "Flyttning utan överskrivning av omdirigeringar",
+ "log-action-filter-move-move_redir": "Flyttning med överskrivning av omdirigeringar",
+ "log-action-filter-newusers-create": "Skapade av anonyma användare",
+ "log-action-filter-newusers-create2": "Skapade av registrerade användare",
+ "log-action-filter-newusers-autocreate": "Skapades automatiskt",
+ "log-action-filter-patrol-patrol": "Manuell patrullering",
+ "log-action-filter-patrol-autopatrol": "Automatisk patrullering",
+ "log-action-filter-protect-protect": "Skydd",
+ "log-action-filter-protect-modify": "Ãndring av skydd",
+ "log-action-filter-protect-unprotect": "Tog bort skydd",
+ "log-action-filter-protect-move_prot": "Flyttade skydd",
+ "log-action-filter-rights-rights": "Manuell ändring",
+ "log-action-filter-rights-autopromote": "Automatisk ändring",
+ "log-action-filter-upload-upload": "Ny uppladdning",
+ "log-action-filter-upload-overwrite": "Ã
teruppladdning"
}
diff --git a/languages/i18n/sw.json b/languages/i18n/sw.json
index 532f1abb64..c39fa4e0ac 100644
--- a/languages/i18n/sw.json
+++ b/languages/i18n/sw.json
@@ -1550,8 +1550,6 @@
"categories": "Jamii",
"categoriespagetext": "Jamii {{PLURAL:$1|inayofuata ina|zinazofuata zina}} kurasa au mafaili ya picha au sauti.\n[[Special:UnusedCategories|Jamii zisizotumiwa]] hazitandazwi hapa.\nTazama pia [[Special:WantedCategories|jamii zinazohitajika]].",
"categoriesfrom": "Tandaza jamii kuanzia na:",
- "special-categories-sort-count": "panga kwa idadi",
- "special-categories-sort-abc": "panga kwa herufi",
"deletedcontributions": "Michango ya mtumiaji aliyefutwa",
"deletedcontributions-title": "Michango ya mtumiaji aliyefutwa",
"sp-deletedcontributions-contribs": "michango",
@@ -2134,8 +2132,8 @@
"exif-copyright": "Mwenye hatimiliki",
"exif-exifversion": "Mtindo wa Exif",
"exif-componentsconfiguration": "Maana ya kila kijenzi",
- "exif-pixelydimension": "Upana wa picha",
- "exif-pixelxdimension": "Urefu wa picha",
+ "exif-pixelxdimension": "Upana wa picha",
+ "exif-pixelydimension": "Urefu wa picha",
"exif-usercomment": "Maoni ya mtumiaji",
"exif-relatedsoundfile": "Faili la sauti linalohusika",
"exif-lightsource": "Mwanga",
@@ -2366,7 +2364,6 @@
"redirect-submit": "Nenda",
"fileduplicatesearch": "Tafuta mafaili ya nakili",
"fileduplicatesearch-summary": "Kutafuta mafaili ya nakili kwa kuzingatia thamani za reli.",
- "fileduplicatesearch-legend": "Kutafuta kifani",
"fileduplicatesearch-filename": "Jina la faili:",
"fileduplicatesearch-submit": "Tafuta",
"fileduplicatesearch-info": "Piseli $1 Ã $2 Ukubwa wa faili: $3 Aina ya MIME: $4",
diff --git a/languages/i18n/szl.json b/languages/i18n/szl.json
index ee91968fe3..589adc00fa 100644
--- a/languages/i18n/szl.json
+++ b/languages/i18n/szl.json
@@ -1273,8 +1273,6 @@
"categories": "Kategoryje",
"categoriespagetext": "Zajta przedstowjo lista katygoryji s zajtůma a plikůma.\n[[Special:UnusedCategories|Åyużywane kategoryj]] Åy zostoÅy tukej pokozane.\nKukÅij tyż [[Special:WantedCategories|ÅyistÅyjůnce kategoryje]].",
"categoriesfrom": "Pokož kategoryje zaÄynajůnc uod:",
- "special-categories-sort-count": "sortowanie wedle liÄby",
- "special-categories-sort-abc": "sortowanie wedle alfabyta",
"deletedcontributions": "WyÄepane sprowjyÅa użytkowÅika",
"deletedcontributions-title": "WyÄepane sprowjyÅa użytkowÅika",
"linksearch": "Necowe uodwoÅaÅa",
@@ -1853,8 +1851,8 @@
"exif-colorspace": "PÅestÅyÅ kolorůw",
"exif-componentsconfiguration": "ZnaÄyÅy skuadowych",
"exif-compressedbitsperpixel": "Skůmpresowanych bitůw na piksel",
- "exif-pixelydimension": "PrawidÅowa szyrzka uobrozu",
- "exif-pixelxdimension": "PrawidÅowo wyżka uobrozu",
+ "exif-pixelxdimension": "PrawidÅowa szyrzka uobrozu",
+ "exif-pixelydimension": "PrawidÅowo wyżka uobrozu",
"exif-usercomment": "KůmyntoÅ užytkowÅika",
"exif-relatedsoundfile": "Powjůnzany plik audjo",
"exif-datetimeoriginal": "Data i Äas utwoÅyÅo uoryginouu",
@@ -2124,7 +2122,6 @@
"version-software-version": "Wersjo",
"fileduplicatesearch": "Å nupej za duplikatym plika",
"fileduplicatesearch-summary": "Å nupej za duplikatůma plika na podstawje wartoÅÄi fůnkcyji skrůtu.",
- "fileduplicatesearch-legend": "Šnupej za duplikatůma plika",
"fileduplicatesearch-filename": "Mjano pliku:",
"fileduplicatesearch-submit": "Å nupej",
"fileduplicatesearch-info": "$1 Ã $2 pikseli WjelgoÅÄ plika: $3 Typ MIME: $4",
diff --git a/languages/i18n/ta.json b/languages/i18n/ta.json
index 37ab024417..01370cab26 100644
--- a/languages/i18n/ta.json
+++ b/languages/i18n/ta.json
@@ -46,7 +46,9 @@
"Dineshkumar Ponnusamy",
"Sharanrajindia",
"Maathavan",
- "தமிழà¯à®à¯à®à¯à®°à®¿à®à®¿à®²à¯"
+ "தமிழà¯à®à¯à®à¯à®°à®¿à®à®¿à®²à¯",
+ "Nemo bis",
+ "JAaron95"
]
},
"tog-underline": "à®à®£à¯à®ªà¯à®ªà¯à®à®³à¯à®à¯à®à¯ à®
à®à®¿à®à¯à®à¯à®à®¿à®à¯",
@@ -388,7 +390,7 @@
"perfcachedts": "பினà¯à®µà®°à¯à®®à¯ தரவà¯à®à®³à¯ à®à®à¯à®®à®¾à®±à¯à®±à¯à®à¯ à®à¯à®£à¯à®à¯à®³à¯à®³à®©, தரவà¯à®à®³à¯ à®à®à¯à®à®¿à®¯à®¾à® $1 à®à®²à¯ பà¯à®¤à¯à®ªà®¿à®à¯à®à®ªà¯à®ªà®à¯à®à¯à®³à¯à®³à®©.à®
திà®à®ªà®à¯à®à®®à®¾à® {{PLURAL:$4|à®à®°à¯ à®®à¯à®à®¿à®µà¯|$4 à®®à¯à®à®¿à®µà¯à®à®³à¯}} à®à®à¯à®®à®¾à®±à¯à®±à®¿à®²à¯ à®à®°à¯à®à¯à®à®²à®¾à®®à¯.",
"querypage-no-updates": "à®à®ªà¯à®ªà®à¯à®à®¤à¯à®¤à¯à®à¯à®à®¾à®© à®à®±à¯à®±à¯à®ªà¯à®ªà®à¯à®¤à¯à®¤à®²à¯à®à®³à¯ à®à¯à®¯à®²à®¿à®´à®à¯à®à®à¯ à®à¯à®¯à¯à®¯à®ªà¯à®ªà®à¯à®à¯à®³à¯à®³à®©. à®à®à¯à®à¯ à®à®³à¯à®³à®¤à¯ தரவà¯à®à®³à¯ தறà¯à®à®®à®¯à®®à¯ à®à®±à¯à®±à¯à®ªà¯à®ªà®à¯à®¤à¯à®¤à®ªà¯à®ªà®à®®à®¾à®à¯à®à®¾à®¤à¯.",
"viewsource": "à®®à¯à®²à®¤à¯à®¤à¯à®ªà¯ பாரà¯",
- "viewsource-title": "$1à®à¯à®à®¾à®© à®®à¯à®²à®¤à¯à®¤à¯à®ªà¯ பாரà¯",
+ "viewsource-title": "$1 à®à®©à¯à®ªà®¤à®±à¯à®à®¾à®© à®®à¯à®²à®¤à¯à®¤à¯à®ªà¯ பாரà¯",
"actionthrottled": "à®à¯à®¯à®±à¯à®ªà®¾à®à¯ à®à®à¯à®à¯à®ªà¯à®ªà®à¯à®¤à¯à®¤à®ªà¯à®ªà®à¯à®à®¤à¯",
"actionthrottledtext": "à®à®°à®¿à®¤à®à¯ à®à®¾à®ªà¯à®ªà¯ நà®à®µà®à®¿à®à¯à®à¯à®¯à®¾à®à®ªà¯ பயனà¯à®°à¯à®µà®°à¯ à®à¯à®±à®¿à®¤à¯à®¤ à®à®¿à®±à¯ à®à®¾à®² à®à®à¯à®µà¯à®³à®¿à®¯à®¿à®²à¯ à®à®à¯à®à¯à®¯à®±à¯à®ªà®¾à®à¯à®à¯ à®
திà®à®³à®µà®¿à®²à¯ à®à¯à®¯à¯à®µà®¤à¯ தà®à¯à®à¯à®à®ªà¯à®ªà®à¯à®à¯à®³à¯à®³à®¤à¯. நà¯à®°à¯ à®
வà¯à®µà¯à®²à¯à®²à¯à®¯à¯à®¤à¯ தாணà¯à®à®¿à®µà®¿à®à¯à®à¯à®°à¯. à®
à®°à¯à®³à¯ à®à¯à®°à¯à®¨à¯à®¤à¯ à®à®¿à®² நிமிà®à®à¯à®à®³à®¿à®²à¯ à®®à¯à®¯à®²à®µà¯à®®à¯.",
"protectedpagetext": "à®à®ªà¯à®ªà®à¯à®à®®à¯ தà¯à®à¯à®à¯à®à®ªà¯à®ªà®à¯à®µà®¤à¯à®¯à¯ à®
லà¯à®²à®¤à¯ பிற à®à¯à®¯à®²à¯à®à®³à¯à®¤à¯ தவிரà¯à®ªà¯à®ªà®¤à®±à¯à®à®¾à®à®µà¯ பà¯à®à¯à®à®ªà¯à®ªà®à¯à®à¯à®³à¯à®³à®¤à¯.",
@@ -484,7 +486,7 @@
"nocookieslogin": "{{SITENAME}} தளம௠பயனரà¯à®à®³à¯à®ªà¯ பà¯à®à¯à®ªà®¤à®¿à®à¯ à®à¯à®¯à¯à®µà®¤à®±à¯à®à¯ à®à®¾à®ªà®à®¿à®à®³à¯à®ªà¯ (à®à¯à®à¯à®à®¿à®à®³à¯) பயனà¯à®ªà®à¯à®¤à¯à®¤à¯à®à®¿à®±à®¤à¯. நà¯à®à¯à®à®³à¯ à®à®¾à®ªà®à®¿à®à®³à¯à®à¯ à®à¯à®¯à®²à®¿à®´à®à¯à®à®à¯ à®à¯à®¯à¯à®¤à¯à®³à¯à®³à¯à®°à¯à®à®³à¯. தயவà¯à®à¯à®¯à¯à®¤à¯ à®
வறà¯à®±à¯à®à¯ à®à¯à®¯à®±à¯à®ªà®¾à®à¯à®³à¯à®³à®¤à®¾à®à¯à®à®¿à®¤à¯ திரà¯à®®à¯à®ªà®µà¯à®®à¯ à®®à¯à®¯à®²à¯à®à¯à®à®³à¯.",
"nocookiesfornew": "பயனர௠à®à®£à®à¯à®à¯ à®à®°à¯à®µà®¾à®à¯à®à®ªà¯à®ªà®à®µà®¿à®²à¯à®²à¯, à®
த௠பà¯à®² à®
தன௠மà¯à®²à®¤à¯à®¤à¯ à®à®à¯à®à®³à®¾à®²à¯ à®à®±à¯à®¤à®¿à®à¯à®¯à¯à®¯ à®à®¯à®²à®µà®¿à®²à¯à®²à¯.நà¯à®à¯à®à®³à¯ à®à¯à®à¯à®à®¿à®à®³à¯ (cookies) à®à®¯à®à¯à®à®à¯à®à¯à®¯à¯à®¯à®ªà¯à®ªà®à¯à®à®¿à®°à¯à®ªà¯à®ªà®¤à¯ à®à®±à¯à®¤à®¿à®à¯à®¯à¯à®¯à®µà¯à®®à¯,à®à®ªà¯à®ªà®à¯à®à®¤à¯à®¤à¯ reload à®à¯à®¯à¯à®¯à®µà¯à®®à¯ மறà¯à®±à¯à®®à¯ à®®à¯à®£à¯à®à¯à®®à¯ à®®à¯à®¯à®±à¯à®à®¿à®à¯à®à®µà¯à®®à¯.",
"noname": "நà¯à®à¯à®à®³à¯ à®à¯à®à¯à®¤à¯à®¤ பயனர௠பà¯à®¯à®°à¯ à®à¯à®²à¯à®²à¯à®ªà®à®¿à®¯à®±à¯à®±à®¤à¯.",
- "loginsuccesstitle": "பà¯à®à¯à®ªà®¤à®¿à®à¯ வà¯à®±à¯à®±à®¿",
+ "loginsuccesstitle": "பà¯à®à¯à®ªà®¤à®¿à®à¯à®¯à®¿à®²à¯ à®à®³à¯à®³à¯à®°à¯à®à®³à¯.",
"loginsuccess": "நà¯à®à¯à®à®³à¯ தறà¯à®ªà¯à®´à¯à®¤à¯ {{SITENAME}} தளதà¯à®¤à®¿à®²à¯ \"$1\" à®à®£à®à¯à®à®¿à®©à¯à®à®¾à® பà¯à®à¯à®ªà®¤à®¿à®à¯ à®à¯à®¯à¯à®¤à¯à®³à¯à®³à¯à®°à¯à®à®³à¯.",
"nosuchuser": "\"$1\" à®à®©à¯à®± பà¯à®¯à®°à®¿à®²à¯ பயனர௠à®à®µà®°à¯à®®à®¿à®²à¯à®²à¯.\n\nபயனர௠பà¯à®¯à®°à¯, பà¯à®°à®¿à®¯ à®à®´à¯à®¤à¯à®¤à¯, à®à®¿à®±à®¿à®¯ à®à®´à¯à®¤à¯à®¤à¯ à®à®©à¯à®± விதà¯à®¤à®¿à®¯à®¾à®à®¤à¯à®¤à®¿à®±à¯à®à¯à®à¯à®ªà®à¯à®à®¤à¯.\n\nà®à®´à¯à®¤à¯à®¤à¯à®ªà¯ பிழà¯à®à®³à¯à®à¯ à®à®°à®¿ பாரà¯à®à¯à®à®µà¯à®®à¯, à®
லà¯à®²à®¤à¯ [[Special:UserLogin/signup|பà¯à®¤à®¿à®¯ பயனர௠à®à®£à®à¯à®à¯à®©à¯à®±à¯ à®à®°à¯à®µà®¾à®à¯à®à®µà¯à®®à¯]].",
"nosuchusershort": "\"$1\" à®à®©à¯à®± பà¯à®¯à®°à®¿à®²à¯ பயனர௠யாரà¯à®®à¯ à®à®²à¯à®²à¯. நà¯à®à¯à®à®³à¯ à®à®³à¯à®³à®¿à®à¯à® பà¯à®¯à®°à¯à®à¯ à®à®°à®¿ பாரà¯à®à¯à®à®µà¯à®®à¯.",
@@ -503,7 +505,7 @@
"noemail": "\"$1\" பயனரà¯à®à¯à®à¯ மினà¯à®©à®à¯à®à®²à¯ à®®à¯à®à®µà®°à®¿ à®à®¤à¯à®µà¯à®®à¯ பதியபà¯à®ªà®à¯à®à®¿à®°à¯à®à¯à®à®µà®¿à®²à¯à®²à¯.",
"noemailcreate": "à®à®°à¯ à®à¯à®²à¯à®²à®¤à¯à®¤à®à¯à® மினà¯à®©à®à¯à®à®²à¯ à®®à¯à®à®µà®°à®¿à®¯à¯ நà¯à®à¯à®à®³à¯ தரவà¯à®£à¯à®à¯à®®à¯.",
"passwordsent": "\"$1\" பயனரà¯à®à¯à®à®¾à®© மினà¯à®©à®à¯à®à®²à¯ à®®à¯à®à®µà®°à®¿à®à¯à®à¯ à®à®°à¯ பà¯à®¤à®¿à®¯ à®à®à®µà¯à®à¯à®à¯à®²à¯ à®
னà¯à®ªà¯à®ªà®ªà¯à®ªà®à¯à®à¯à®³à¯à®³à®¤à¯. பà¯à®±à¯à®±à¯à®à¯à®à¯à®£à¯à®à®¤à¯à®®à¯ தயவà¯à®à¯à®¯à¯à®¤à¯ à®®à¯à®£à¯à®à¯à®®à¯ பà¯à®à¯à®ªà®¤à®¿à®à¯ à®à¯à®¯à¯à®¯à®µà¯à®®à¯.",
- "blocked-mailpassword": "à®à®à¯à®à®³à¯ à®.பி. à®®à¯à®à®µà®°à®¿ தà®à¯à®à¯à®à®ªà¯à®ªà®à¯à®à¯à®³à¯à®³à®¤à¯, விà®à®® à®à¯à®¯à®±à¯à®ªà®¾à®à¯à®à®³à¯à®¤à¯ தவிரà¯à®à¯à® à®à®à®µà¯à®à¯à®à¯à®²à¯ à®®à¯à®à¯à®ªà¯à®à¯ à®à¯à®¯à®²à®¿à®¯à¯ நà¯à®à¯à®à®³à¯ பயனà¯à®ªà®à¯à®¤à¯à®¤à¯ à®
னà¯à®®à®¤à®¿à®à¯à®à®ªà¯à®ªà®à®µà®¿à®²à¯à®²à¯.",
+ "blocked-mailpassword": "à®à®à¯à®à®³à¯ à®.பி. à®®à¯à®à®µà®°à®¿ தà¯à®à¯à®ªà¯à®ªà®¤à®¿à®²à®¿à®°à¯à®¨à¯à®¤à¯ தà®à¯ à®à¯à®¯à¯à®¯à®ªà¯à®ªà®à¯à®à¯à®³à¯à®³à®¤à¯. விà®à®® à®à¯à®¯à®±à¯à®ªà®¾à®à¯à®à®³à¯à®¤à¯ தவிரà¯à®à¯à® à®à®à®µà¯à®à¯à®à¯à®²à¯ à®®à¯à®à¯à®ªà¯à®à¯ à®à¯à®¯à®²à®¿à®¯à¯ நà¯à®à¯à®à®³à¯ பயனà¯à®ªà®à¯à®¤à¯à®¤à¯ à®
னà¯à®®à®¤à®¿à®à¯à®à®ªà¯à®ªà®à®µà®¿à®²à¯à®²à¯.",
"eauthentsent": "à®à®±à¯à®¤à®¿à®ªà¯à®ªà®à¯à®¤à¯à®¤à®²à¯ மினà¯à®©à®à¯à®à®²à¯à®©à¯à®±à¯ நà¯à®à¯à®à®³à¯ à®à¯à®à¯à®¤à¯à®¤ மினà¯à®©à®à¯à®à®²à¯ à®®à¯à®à®µà®°à®¿à®à¯à®à¯ à®
னà¯à®ªà¯à®ªà®ªà¯ பà®à¯à®à¯à®³à¯à®³à®¤à¯.\nà®®à¯à®²à¯à®®à¯ மினà¯à®©à®à¯à®à®²à¯à®à®³à¯ à®à®¨à¯à®¤ à®®à¯à®à®µà®°à®¿à®à¯à®à¯ à®
னà¯à®ªà¯à®ªà®ªà¯à®ªà®à¯à®®à¯ à®®à¯à®©à¯à®©à®°à¯, மினà¯à®©à®à¯à®à®²à®¿à®²à¯ à®à¯à®à¯à®à¯à®à®ªà¯à®ªà®à¯à®à¯à®³à¯à®³ வழிமà¯à®±à¯à®à®³à¯ பினà¯à®ªà®±à¯à®±à®¿, à®à®®à¯à®®à®¿à®©à¯à®©à®à¯à®à®²à¯ à®®à¯à®à®µà®°à®¿ à®à®à¯à®à®³à¯à®à¯à®¯à®¤à¯ தான௠à®à®©à¯à®ªà®¤à¯ à®à®±à¯à®¤à®¿à®ªà¯à®ªà®à¯à®¤à¯à®¤à®µà¯à®®à¯.",
"throttled-mailpassword": "à®à®à®¨à¯à®¤ {{PLURAL:$1|மணிநà¯à®°à®¤à¯à®¤à¯à®à¯à®à¯à®³à¯|$1 மணிநà¯à®°à®à¯à®à®³à¯à®à¯à®à¯à®³à¯}} à®à®°à¯ à®à®à®µà¯à®à¯à®à¯à®²à¯ நினà¯à®µà¯à®à¯à®à®²à¯ மினà¯à®©à®à¯à®à®²à¯ à®à®±à¯à®à®©à®µà¯ à®
னà¯à®ªà¯à®ªà®ªà¯à®ªà®à¯à®à¯à®µà®¿à®à¯à®à®¤à¯. விà®à®®à®ªà¯ பயனà¯à®ªà®¾à®à¯à®à®³à¯à®¤à¯ தவிரà¯à®ªà¯à®ªà®¤à®±à¯à®à®¾à® {{PLURAL:$1|மணிநà¯à®°à®¤à¯à®¤à®¿à®±à¯à®à¯|$1 மணிநà¯à®°à®à¯à®à®³à¯à®à¯à®à¯}} à®à®°à¯ à®à®à®µà¯à®à¯à®à¯à®²à¯ நினà¯à®µà¯à®à¯à®à®²à¯ மினà¯à®©à®à¯à®à®²à¯ à®®à®à¯à®à¯à®®à¯ à®
னà¯à®ªà¯à®ªà®ªà¯à®ªà®à¯à®®à¯.",
"mailerror": "மினà¯à®©à®à¯à®à®²à¯ à®
னà¯à®ªà¯à®ªà¯à®µà®¤à®¿à®²à¯ தவறà¯: $1",
@@ -520,7 +522,7 @@
"createaccount-title": "{{SITENAME}} தளதà¯à®¤à¯à®à¯à®à®¾à®© à®à®£à®à¯à®à¯ தà¯à®à®à¯à®à®®à¯",
"createaccount-text": "யார௠à®à®°à¯à®µà®°à¯ à®à®à¯à®à®³à¯ மினà¯à®©à®à¯à®à®²à¯ à®®à¯à®µà®°à®¿à®à¯à®à®¾à® {{SITENAME}} ($4) தளதà¯à®¤à®¿à®²à¯ à®à®£à®à¯à®à¯à®£à¯à®±à¯ தà¯à®à®à¯à®à®¿à®¯à¯à®³à¯à®³à®¾à®°à¯. à®à®£à®à¯à®à®¿à®©à¯ பà¯à®¯à®°à¯ \"$2\", à®à®à®µà¯à®à¯à®à¯à®²à¯ \"$3\". நà¯à®à¯à®à®³à¯ à®à®ªà¯à®ªà¯à®¤à¯ பà¯à®à¯à®ªà®¤à®¿à®à¯à®à¯ à®à¯à®¯à¯à®¤à¯ à®à®à®µà¯à®à¯à®à¯à®²à¯à®²à¯ மாறà¯à®± வà¯à®£à¯à®à¯à®®à¯.\n\nà®à®à¯à®à®£à®à¯à®à¯ தவறà¯à®¤à®²à®¾à® தà¯à®à®à¯à®à®ªà¯à®ªà®à¯à®à®¿à®°à¯à®¨à¯à®¤à®¾à®²à¯, à®à®¤à¯à®¤à®à®µà®²à¯à®ªà¯ பà¯à®±à®à¯à®à®£à®¿à®à¯à®à®²à®¾à®®à¯.",
"login-throttled": "தாà®à¯à®à®³à¯ மி஠à®
ணà¯à®®à¯à®¯à®¿à®²à¯ பலமà¯à®±à¯ பà¯à®à¯à®ªà®¤à®¿à®à¯ à®à¯à®¯à¯à®¯ à®®à¯à®¯à®±à¯à®à®¿ à®à¯à®¯à¯à®¤à¯à®³à¯à®³à¯à®°à¯à®à®³à¯.\n\nà®®à¯à®£à¯à®à¯à®®à¯ à®®à¯à®¯à®±à¯à®à®¿à®à¯à®à¯à®®à¯ à®®à¯à®©à¯ $1 à®à®¾à®¤à¯à®¤à®¿à®°à¯à®à¯à®à®µà¯à®®à¯.",
- "login-abort-generic": "à®à®à¯à®à®³à¯ à®à®³à¯à®¨à¯à®´à¯à®µà¯ தà¯à®²à¯à®µà®¿à®¯à¯à®±à¯à®±à®¤à¯ - Aborted",
+ "login-abort-generic": "à®à®à¯à®à®³à¯ à®à®³à¯à®¨à¯à®´à¯à®µà¯ தà¯à®²à¯à®µà®¿à®¯à¯à®±à¯à®±à®¤à¯ - ரதà¯à®¤à¯ à®à¯à®¯à¯à®¯à®ªà®à¯à®à®¤à¯",
"login-migrated-generic": "à®à®à¯à®à®³à¯ à®à®£à®à¯à®à¯ நà®à®°à¯à®¤à¯à®¤à®ªà¯à®ªà®à¯à®à¯à®³à¯à®³à®¤à¯, à®®à¯à®²à¯à®®à¯ à®à®à¯à®à®³à¯ பயனரà¯à®ªà¯à®¯à®°à®¿à®²à¯ à®à®¨à¯à®¤ விà®à¯à®à®¿à®¯à®¿à®²à¯ à®à®²à¯à®²à¯.",
"loginlanguagelabel": "à®®à¯à®´à®¿: $1",
"suspicious-userlogout": "à®à®à¯à®à®³à¯ விà®à¯à®ªà®¤à®¿à®à¯ à®à¯à®°à®¿à®à¯à®à¯ மறà¯à®à¯à®à®ªà¯à®ªà®à¯à®à®¤à¯ à®à®©à¯à®©à¯à®±à®¾à®²à¯ à®
த௠à®
à®±à¯à®ªà®à¯à® à®à®²à®¾à®µà®¿ à®
லà¯à®²à®¤à¯ மாறà¯à®±à¯ à®à®à¯à®à¯à®à®¿à®à®à¯à®à®¿à®¯à®¾à®²à¯ à®
னà¯à®ªà¯à®ªà®ªà¯à®ªà®à¯à®à¯à®³à¯à®³à®¤à¯.",
@@ -725,7 +727,7 @@
"sectioneditnotsupported-text": "à®à®ªà¯à®ªà®à¯à®à®¤à¯à®¤à®¿à®²à¯ à®à®à¯à®ªà®¿à®°à®¿à®µà¯ தà¯à®à¯à®à¯à® தà¯à®µà¯à®¯à®¾à®© à®à®¤à®°à®µà®¿à®²à¯à®²à¯.",
"permissionserrors": "à®
னà¯à®®à®¤à®¿ தவறà¯à®à®³à¯",
"permissionserrorstext": "பினà¯à®µà®°à¯à®®à¯ {{PLURAL:$1|à®à®¾à®°à®£à®¤à¯à®¤à¯à®à¯à®à®¾à®|à®à®¾à®°à®£à®à¯à®à®³à¯à®à¯à®à®¾à®}} நà¯à®à¯à®à®³à¯ à®
தà¯à®à¯ à®à¯à®¯à¯à®¯ à®®à¯à®à®¿à®¯à®¾à®¤à¯:",
- "permissionserrorstext-withaction": "$2-à®à¯à®à¯ தà®à¯à®à®³à¯à®à¯à®à¯ à®
னà¯à®®à®¤à®¿ à®à®²à¯à®²à¯. à®
தறà¯à®à®¾à®© {{PLURAL:$1|à®à®¾à®°à®£à®®à¯|à®à®¾à®°à®£à®à¯à®à®³à¯}}:",
+ "permissionserrorstext-withaction": "$2- à®à®¤à®±à¯à®à¯ தà®à¯à®à®³à¯à®à¯à®à¯ à®
னà¯à®®à®¤à®¿ à®à®²à¯à®²à¯. à®
தறà¯à®à®¾à®© {{PLURAL:$1|à®à®¾à®°à®£à®®à¯|à®à®¾à®°à®£à®à¯à®à®³à¯}}:",
"recreate-moveddeleted-warn": "'''à®à®à¯à®à®°à®¿à®à¯à®à¯: தாà®à¯à®à®³à¯ à®à®±à¯à®à®©à®µà¯ நà¯à®à¯à®à®ªà¯à®ªà®à¯à® பà®à¯à®à®®à¯à®©à¯à®±à¯ à®®à¯à®£à¯à®à¯à®®à¯ தà¯à®à®à¯à® விழà¯à®à®¿à®±à¯à®°à¯à®à®³à¯.'''\n\nà®à®ªà¯à®ªà®à¯à®à®¤à¯à®¤à¯à®¤à¯ தà¯à®à®°à¯à®¨à¯à®¤à¯ தà¯à®à¯à®ªà¯à®ªà®¤à¯ à®à®°à®¿à®¯à®¾à®©à®¤à®¾ à®à®©à¯à®±à¯ à®à®£à¯à®£à®¿à®ªà¯à®ªà®¾à®°à¯à®à¯à®à®µà¯à®®à¯.\n\nதà®à¯à®à®³à®¿à®©à¯ வà®à®¤à®¿à®à¯à®à®¾à® à®à®ªà¯à®ªà®à¯à®à®¤à¯à®¤à®¿à®©à¯ நà¯à®à¯à®à®²à¯ மறà¯à®±à¯à®®à¯ நà®à®°à¯à®¤à¯à®¤à®²à¯ à®à¯à®±à®¿à®ªà¯à®ªà¯à®à®³à¯ à®à¯à®à¯à®à¯à®à®ªà¯à®ªà®à¯à®à¯à®³à¯à®³à®¤à¯:",
"moveddeleted-notice": "à®à®¤à¯ à®à®°à¯ நà¯à®à¯à®à®ªà¯à®ªà®à¯à® பà®à¯à®à®®à®¾à®à¯à®®à¯.\n\nதà®à¯à®à®³à®¿à®©à¯ வà®à®¤à®¿à®à¯à®à®¾à® à®à®ªà¯à®ªà®à¯à®à®¤à¯à®¤à®¿à®©à¯ நà¯à®à¯à®à®²à¯ மறà¯à®±à¯à®®à¯ நà®à®°à¯à®¤à¯à®¤à®²à¯ à®à¯à®±à®¿à®ªà¯à®ªà¯à®à®³à¯ à®à¯à®à¯à®à¯à®à®ªà¯à®ªà®à¯à®à¯à®³à¯à®³à®¤à¯.",
"moveddeleted-notice-recent": "மனà¯à®©à®¿à®à¯à®à®µà¯à®®à¯, à®à®¨à¯à®¤à®ªà¯ பà®à¯à®à®®à¯ à®
ணà¯à®®à¯à®¯à®¿à®²à¯ நà¯à®à¯à®à®ªà¯à®ªà®à¯à®à¯à®³à¯à®³à®¤à¯ (24 மணிதà¯à®¤à®¿à®¯à®¾à®²à®¤à¯à®¤à®¿à®±à¯à®à¯à®³à¯). à®à®ªà¯à®ªà®à¯à®à®¤à¯à®¤à®¿à®±à¯à®à®¾à®© நà¯à®à¯à®à®²à¯ மறà¯à®±à¯à®®à¯ நà®à®°à¯à®¤à¯à®¤à®²à¯ பதிவ௠à®à¯à®´à¯ à®®à¯à®±à¯à®à¯à®³à¯à®à¯à®à®¾à® தரபà¯à®ªà®à¯à®à¯à®³à¯à®³à®¤à¯.",
@@ -739,7 +741,7 @@
"postedit-confirmation-saved": "à®à®à¯à®à®³à®¤à¯ தà¯à®à¯à®ªà¯à®ªà¯ à®à¯à®®à®¿à®à¯à®à®ªà¯à®ªà®à¯à®à®¤à¯.",
"edit-already-exists": "பà¯à®¤à®¿à®¯ பà®à¯à®à®®à¯à®©à¯à®±à¯ à®à®°à¯à®µà®¾à®à¯à® à®®à¯à®à®¿à®¯à®¾à®¤à¯.\nà®à®ªà¯à®ªà®à¯à®à®®à¯ à®à®±à¯à®à®©à®µà¯ à®à®³à¯à®³à®¤à¯.",
"defaultmessagetext": "à®à®¯à®²à¯à®ªà®¿à®°à¯à®ªà¯à®ªà¯ தà®à®µà®²à¯ à®à®°à¯",
- "content-failed-to-parse": "à®à®³à¯à®³à®à®à¯à®à®®à¯ $2 வà®à¯ $1 à®à¯à®à®¾à® பாà®à¯à®ªà®à¯à®¤à¯à®¤à®²à¯ தà¯à®²à¯à®µà®¿: $3",
+ "content-failed-to-parse": "à®à®³à¯à®³à®à®à¯à®à®®à¯ $2 வà®à¯ $1 à®à®±à¯à®à®¾à® பாà®à¯à®ªà®à¯à®¤à¯à®¤à®²à¯ தà¯à®²à¯à®µà®¿: $3",
"invalid-content-data": "à®à¯à®²à¯à®²à®¾à®¤ à®à®³à¯à®³à®à®à¯à®à®¤à¯ தரவà¯",
"content-not-allowed-here": "\"$1\" à®à®³à¯à®³à®à®à¯à®à®®à¯ [[$2]] பà®à¯à®à®¤à¯à®¤à®¿à®²à¯ à®
னà¯à®®à®¤à®¿à®à¯à®à®ªà¯à®ªà®à®µà®¿à®²à¯à®²à¯.",
"editwarning-warning": "à®à®¨à¯à®¤ பà®à¯à®à®¤à¯à®¤à¯ விà®à¯à®à¯ à®à¯à®²à¯à®µà®¤à¯ நà¯à®à¯à®à®³à¯ à®à®±à¯à®ªà®à¯à®¤à¯à®¤à®¿à®¯ மாறà¯à®±à®à¯à®à®³à¯ à®à®´à®à¯à® வழிவà®à¯à®à¯à®à¯à®®à¯.\nநà¯à®à¯à®à®³à¯ பà¯à®à¯à®ªà®¤à®¿à®¨à¯à®¤à®¿à®°à¯à®¨à¯à®¤à®¾à®²à¯, à®à®¨à¯à®¤ à®à®à¯à®à®°à®¿à®à¯à®à¯à®¯à¯ à®à®à¯à®à®³à¯ விரà¯à®ªà¯à®ªà®¤à¯à®¤à¯à®°à¯à®µà®¿à®²à¯ à®à®³à¯à®³ \"{{int:prefs-editing}}\" பà®à¯à®¤à®¿ à®®à¯à®²à®®à¯ நà¯à®à¯à®à®²à®¾à®®à¯.",
@@ -1278,7 +1280,7 @@
"recentchanges-label-newpage": "à®à®¨à¯à®¤à®¤à¯ தà¯à®à¯à®ªà¯à®ªà¯ à®à®°à¯ பà¯à®¤à®¿à®¯ பà®à¯à®à®¤à¯à®¤à¯ à®à®°à¯à®µà®¾à®à¯à®à®¿à®¯à¯à®³à¯à®³à®¤à¯",
"recentchanges-label-minor": "à®à®¤à¯ à®à®°à¯ à®à®¿à®±à¯ தà¯à®à¯à®ªà¯à®ªà¯",
"recentchanges-label-bot": "à®à®¨à¯à®¤ தà¯à®à¯à®ªà¯à®ªà®¾à®©à®¤à¯ à®à®°à¯ தானியà®à¯à®à®¿à®¯à®¾à®²à¯ à®à¯à®¯à¯à®¯à®ªà¯à®ªà®à¯à®à®¤à®¾à®à¯à®®à¯",
- "recentchanges-label-unpatrolled": "à®à®¨à¯à®¤ தà¯à®à¯à®ªà¯à®ªà¯ à®à®©à¯à®©à¯à®®à¯ à®°à¯à®¨à¯à®¤à®¿à®à®ªà¯à®ªà®à®µà®¿à®²à¯à®²à¯",
+ "recentchanges-label-unpatrolled": "à®à®¤à¯à®¤à¯à®à¯à®ªà¯à®ªà¯ à®à®©à¯à®©à¯à®®à¯ à®à¯à®±à¯à®±à¯à®à¯à®à®¾à®µà®²à¯à®à¯à®à¯ à®à®³à¯à®³à®¾à®à®µà®¿à®²à¯à®²à¯",
"recentchanges-label-plusminus": "à®à®¤à¯à®¤à®©à¯ பà¯à®à¯à®à¯à®à®³à¯à®à¯à®à¯ பà®à¯à®à®¤à¯à®¤à®¿à®©à¯ à®
ளவ௠மாறà¯à®±à®ªà¯à®ªà®à¯à®à¯à®³à¯à®³à®¤à¯",
"recentchanges-legend-heading": "à®à¯à®±à®¿à®¯à¯à®à¯à®à¯ விளà®à¯à®à®®à¯: ",
"recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} ([[Special:NewPages|பà¯à®¤à®¿à®¯ பà®à¯à®à®à¯à®à®³à¯ பà®à¯à®à®¿à®¯à®²à¯à®¯à¯à®®à¯]] à®à®¾à®£à®µà¯à®®à¯)",
@@ -1330,7 +1332,7 @@
"recentchangeslinked-page": "பà®à¯à®à®ªà¯ பà¯à®¯à®°à¯:",
"recentchangeslinked-to": "à®à®¤à®±à¯à®à¯à®ªà¯ பதிலா஠à®à®ªà¯à®ªà®à¯à®à®¤à¯à®¤à®¿à®©à¯ à®à®£à¯à®¤à¯à®¤ பà®à¯à®à®à¯à®à®³à®¿à®©à¯ மாறà¯à®±à®à¯à®à®³à¯à®à¯ à®à®¾à®à¯à®à®µà¯à®®à¯",
"recentchanges-page-added-to-category": "[[:$1]] பà®à¯à®ªà¯à®ªà®¿à®²à¯ à®à¯à®°à¯à®à¯à®à®ªà¯à®ªà®à¯à®à®¤à¯",
- "recentchanges-page-added-to-category-bundled": "[[:$1]] மறà¯à®±à¯à®®à¯ {{PLURAL:$2|à®à®°à¯ பà®à¯à®à®®à¯|$2 பà®à¯à®à®à¯à®à®³à¯}} பà®à¯à®ªà¯à®ªà®¿à®²à¯ à®à¯à®°à¯à®à¯à®à®ªà¯à®ªà®à¯à®à®¤à¯",
+ "recentchanges-page-added-to-category-bundled": "[[:$1]] மறà¯à®±à¯à®®à¯ [[Special:WhatLinksHere/$1|{{PLURAL:$2|à®à®°à¯ பà®à¯à®à®®à¯|$2 பà®à¯à®à®à¯à®à®³à¯}}]] பà®à¯à®ªà¯à®ªà®¿à®²à¯ à®à¯à®°à¯à®à¯à®à®ªà¯à®ªà®à¯à®à®¤à¯",
"recentchanges-page-removed-from-category": "[[:$1]] பà®à¯à®ªà¯à®ªà®¿à®²à¯ à®à®°à¯à®¨à¯à®¤à¯ நà¯à®à¯à®à®ªà¯à®ªà®à¯à®à®¤à¯",
"recentchanges-page-removed-from-category-bundled": "[[:$1]] மறà¯à®±à¯à®®à¯ {{PLURAL:$2|à®à®°à¯ பà®à¯à®à®®à¯|$2 பà®à¯à®à®à¯à®à®³à¯}} பà®à¯à®ªà¯à®ªà®¿à®²à®¿à®°à¯à®¨à¯à®¤à¯ நà¯à®à¯à®à®ªà¯à®ªà®à¯à®à®¤à¯",
"autochange-username": "à®®à¯à®à®¿à®¯à®¾à®µà®¿à®à¯à®à®¿ தானியà®à¯à® மாறà¯à®±à®®à¯",
@@ -1777,8 +1779,6 @@
"categories-submit": "à®à®¾à®à¯à®à¯",
"categoriespagetext": "à®à¯à®´à¯ à®à¯à®à¯à®¤à¯à®¤à¯à®³à¯à®³ பà®à¯à®à®à¯à®à®³à¯ à®
லà¯à®²à®¤à¯ à®à®à®à®à¯à®à®³à¯ à®à®¨à¯à®¤ {{PLURAL:$1|பà®à¯à®ªà¯à®ªà¯|பà®à¯à®ªà¯à®ªà¯à®à¯à®à®³à¯}} à®à¯à®£à¯à®à¯à®³à¯à®³à®¤à¯.\n[[Special:UnusedCategories|à®à®ªà®¯à¯à®à®ªà¯à®ªà®à¯à®¤à¯à®¤à®ªà¯à®ªà®à®¾à®¤ பà®à¯à®ªà¯à®ªà¯à®à®³à¯]] à®à®à¯à®à¯ à®à®¾à®£à¯à®ªà®¿à®à¯à®à®ªà¯à®ªà®à®µà®¿à®²à¯à®²à¯.\nà®à®¤à¯à®¤à¯à®à®©à¯ [[Special:WantedCategories|தà¯à®µà¯à®ªà¯à®ªà®à¯à®®à¯ பà®à¯à®ªà¯à®ªà¯à®à®³à¯à®¯à¯à®®à¯]] பாரà¯à®à¯à®à®µà¯à®®à¯.",
"categoriesfrom": "à®à®¤à®¿à®²à¯ தà¯à®à®à¯à®à¯à®®à¯ பà®à¯à®ªà¯à®ªà¯à®à¯à®à®³à¯à®à¯ à®à®¾à®à¯à®à®µà¯à®®à¯:",
- "special-categories-sort-count": "à®à®£à¯à®£à®¿à®à¯à®à¯à®¯à®¿à®©à¯ பà®à®¿ à®à®´à¯à®à¯à®à¯à®ªà¯ பà®à¯à®¤à¯à®¤à¯à®",
- "special-categories-sort-abc": "à®
à®à®°à®µà®°à®¿à®à¯à®ªà¯à®ªà®à®¿ à®à®´à¯à®à¯à®à¯à®ªà¯ பà®à¯à®¤à¯à®¤à¯à®",
"deletedcontributions": "பயனரின௠நà¯à®à¯à®à®ªà¯à®ªà®à¯à® பà®à¯à®à®³à®¿à®ªà¯à®ªà¯à®à®³à¯",
"deletedcontributions-title": "பயனரின நà¯à®à¯à®à®ªà¯à®ªà®à¯à® பà®à¯à®à®³à®¿à®ªà¯à®ªà¯à®à¯à®à®³à¯",
"sp-deletedcontributions-contribs": "பà®à¯à®à®³à®¿à®ªà¯à®ªà¯à®à¯à®à®³à¯",
@@ -1983,7 +1983,7 @@
"protect-summary-cascade": "பà®à®¿à®¨à®¿à®²à¯",
"protect-expiring": "$1 (UTC) மணிà®à¯à®à¯ à®à®¾à®²à®¾à®µà®¤à®¿à®¯à®¾à®à®¿à®±à®¤à¯",
"protect-expiring-local": "à®à®¾à®²à®¾à®µà®¤à®¿à®¯à®¾à®à¯à®®à¯$1",
- "protect-expiry-indefinite": "à®à®¾à®²à®µà®°à¯à®¯à®±à¯à®¯à®±à¯à®±",
+ "protect-expiry-indefinite": "à®à®¾à®²à®µà®°à¯à®¯à®±à¯à®¯à®±à¯à®±à¯",
"protect-cascade": "à®à®ªà¯à®ªà®à¯à®à®¤à¯à®¤à®¿à®²à¯ à®à®£à¯à®à¯à®à®ªà¯à®ªà®à¯à® பà®à¯à®à®à¯à®à®³à¯à®à¯ à®à®¾à®ªà¯à®ªà¯à®à¯ à®à¯à®¯à¯ (பà®à®¿à®¨à®¿à®²à¯à®à¯ à®à®¾à®ªà¯à®ªà¯)",
"protect-cantedit": "à®à®ªà¯à®ªà®à¯à®à®¤à¯à®¤à®¿à®©à¯ à®à®¾à®ªà¯à®ªà¯ நிலà¯à®¯à¯ நà¯à®à¯à®à®³à¯ மாறà¯à®± à®®à¯à®à®¿à®¯à®¾à®¤à¯. à®à®à¯à®à®³à¯à®à¯à®à¯ à®à®¾à®ªà¯à®ªà¯ நிலà¯à®¯à¯ தà¯à®à¯à®ªà¯à®ªà®¤à®±à¯à®à®¾à®© à®
னà¯à®®à®¤à®¿ à®à®¿à®à¯à®¯à®¾à®¤à¯.",
"protect-othertime": "வà¯à®±à¯ நà¯à®°à®®à¯:",
@@ -2000,8 +2000,8 @@
"minimum-size": "à®à¯à®±à¯à®¨à¯à®¤ à®
ளவà¯",
"maximum-size": "à®à¯à®à®¿à®¯ à®
ளவà¯:",
"pagesize": "(பà¯à®à¯à®à¯à®à®³à¯)",
- "restriction-edit": "தà¯à®à¯",
- "restriction-move": "நà®à®°à¯à®¤à¯à®¤à®µà¯à®®à¯",
+ "restriction-edit": "தà¯à®à¯à®¤à¯à®¤à®²à¯",
+ "restriction-move": "நà®à®°à¯à®¤à¯à®¤à®²à¯",
"restriction-create": "à®à®°à¯à®µà®¾à®à¯à®à¯",
"restriction-upload": "பதிவà¯à®±à¯à®±à®®à¯",
"restriction-level-sysop": "à®®à¯à®´à¯à®®à¯à®¯à®¾à® à®à®¾à®à¯à®à®ªà¯à®ªà®à¯à®à®¤à¯",
@@ -2056,7 +2056,7 @@
"contributions-title": "$1 à®à®±à¯à®à®¾à®© பயனர௠பà®à¯à®à®³à®¿à®ªà¯à®ªà¯à®à®³à¯",
"mycontris": "பà®à¯à®à®³à®¿à®ªà¯à®ªà¯à®à¯à®à®³à¯",
"anoncontribs": "பà®à¯à®à®³à®¿à®ªà¯à®ªà¯à®à¯à®à®³à¯",
- "contribsub2": "{{GENDER:$3|$1}} à®à¯à®à®¾à® ($2)",
+ "contribsub2": "{{GENDER:$3|$1}} à®à®±à¯à®à®¾à® ($2)",
"contributions-userdoesnotexist": "பயனர௠à®à®£à®à¯à®à¯ \"$1\" à®à®©à®¤à¯ பதியபà¯à®ªà®à®µà®¿à®²à¯à®²à¯.",
"nocontribs": "à®à®¨à¯à®¤ நிபநà¯à®¤à®©à¯à®¯à¯à®à®©à¯ à®à®¤à¯à®¤à¯à®ªà¯à®ªà¯à®à¯à®®à¯ வà®à¯à®¯à®¿à®²à¯ மாறà¯à®±à®à¯à®à®³à¯à®¤à¯à®µà¯à®®à¯ à®à®¾à®£à®ªà¯à®ªà®à®µà®¿à®²à¯à®²à¯.",
"uctop": "(தறà¯à®ªà¯à®¤à¯à®¯)",
@@ -2153,7 +2153,7 @@
"ipblocklist-submit": "தà¯à®à¯à®",
"ipblocklist-localblock": "à®à®³à¯ தà®à¯à®ªà¯à®ªà¯",
"ipblocklist-otherblocks": "மறà¯à®± {{PLURAL:$1|தà®à¯à®ªà¯à®ªà¯|தà®à¯à®ªà¯à®ªà¯à®à®³à¯}}",
- "infiniteblock": "à®à®¾à®²à®µà®°à¯à®¯à®±à¯à®¯à®±à¯à®±",
+ "infiniteblock": "à®à®¾à®²à®µà®°à¯à®¯à®±à¯à®¯à®±à¯à®±à¯",
"expiringblock": "$1-தà¯à®¤à®¿à®¯à®¿à®²à¯, $2-மணிà®à¯à®à¯ à®à®¤à¯ à®à®¾à®²à®¾à®µà®¤à®¿à®¯à®¾à®à®¿à®±à®¤à¯",
"anononlyblock": "à®
à®à¯à®¯à®¾à®³à®®à¯ à®à®¾à®à¯à®à®¾à®¤ பயனர௠மà®à¯à®à¯à®®à¯",
"noautoblockblock": "தானியà®à¯à®à®®à®¾à®© தà®à¯ à®®à¯à®à®à¯à®à®ªà¯à®ªà®à¯à®à¯à®³à¯à®³à®¤à¯",
@@ -2361,11 +2361,7 @@
"import-logentry-upload-detail": "$1 {{PLURAL:$1|திரà¯à®¤à¯à®¤à®®à¯|திரà¯à®¤à¯à®¤à®à¯à®à®³à¯}} à®à®±à®à¯à®à¯à®®à®¤à®¿ à®à¯à®¯à¯à®¯à®ªà¯à®ªà®à¯à®à®©",
"import-logentry-interwiki-detail": "$2 à®à®²à®¿à®°à¯à®¨à¯à®¤à¯ {{PLURAL:$1|திரà¯à®¤à¯à®¤à®®à¯|திரà¯à®¤à¯à®¤à®à¯à®à®³à¯}} à®à®±à®à¯à®à¯à®®à®¤à®¿ à®à¯à®¯à¯à®¯à®ªà¯à®ªà®à¯à®à®©",
"javascripttest": "à®à®¾à®µà®¾à®¨à®¿à®°à®²à¯ à®à¯à®¤à®©à¯ நà®à®à¯à®à®¿à®©à¯à®±à®¤à¯",
- "javascripttest-pagetext-noframework": "à®à®¨à¯à®¤ பà®à¯à®à®®à¯ JavaScript பரிà®à¯à®¤à®©à¯ à®à®à¯à®à®¤à¯à®¤à®¿à®±à¯à®à®¾à® à®à®¤à¯à®à¯à®à®ªà¯à®ªà®à¯à®à¯à®³à¯à®³à®¤à¯",
- "javascripttest-pagetext-unknownframework": "à®
றியபà¯à®ªà®à®¾à®¤ à®à¯à®¤à®©à¯ பணிà®à¯à®à®à¯à®à®®à¯ \"$1\".",
"javascripttest-pagetext-unknownaction": "à®
றியபà¯à®ªà®à®¾à®¤ à®à¯à®¯à®²à¯ \"$1\".",
- "javascripttest-pagetext-frameworks": "தயவ௠à®à¯à®¯à¯à®¤à¯ பினà¯à®µà®°à¯à®®à¯ à®à¯à®¤à®©à¯ பணிà®à¯ à®à®à¯à®à®à¯à®à®³à®¿à®²à¯ à®à®°à¯à®¨à¯à®¤à¯ à®à®©à¯à®±à¯à®¤à¯ தà¯à®°à¯à®¨à¯à®¤à¯à®à¯: $1",
- "javascripttest-pagetext-skins": "à®à¯à®¤à®©à¯à®à®³à¯ நà®à®¤à¯à®¤ à®®à¯à®à®ªà¯à®ªà¯à®±à¯ à®à®©à¯à®±à¯à®¤à¯ தà¯à®°à¯à®µà¯à®à¯à®¯à¯:",
"javascripttest-qunit-intro": "mediawiki.org à®à®²à¯ [$1 à®à¯à®¤à®©à¯ à®à¯à®ªà¯à®ªà¯à®à®³à¯à®ªà¯] பாரà¯à®à¯à®.",
"tooltip-pt-userpage": "{{GENDER:|à®à®à¯à®à®³à¯ பயனரà¯}} பà®à¯à®à®®à¯",
"tooltip-pt-anonuserpage": "நà¯à®à¯à®à®³à¯ தà¯à®à¯à®¤à¯à®¤à¯à®à¯ à®à¯à®£à¯à®à®¿à®°à¯à®à¯à®à¯à®®à¯ à®.பி. à®®à¯à®à®µà®°à®¿à®à¯à®à®¾à®© பயனர௠பà®à¯à®à®®à¯",
@@ -2501,7 +2497,7 @@
"pageinfo-category-subcats": "தà¯à®£à¯à®ªà®à¯à®ªà¯à®ªà¯à®à®³à®¿à®©à¯ à®à®£à¯à®£à®¿à®à¯à®à¯",
"pageinfo-category-files": "à®à¯à®ªà¯à®ªà¯à®à®³à®¿à®©à¯ à®à®£à¯à®£à®¿à®à¯à®à¯",
"markaspatrolleddiff": "à®°à¯à®¨à¯à®¤à®¿à®à¯à®à®¤à®¾à® à®à¯à®±à®¿",
- "markaspatrolledtext": "à®à®ªà¯à®ªà®à¯à®à®¤à¯à®¤à¯ à®°à¯à®¨à¯à®¤à®¿à®à¯à®à®¤à®¾à®à®à¯ à®à¯à®±à®¿",
+ "markaspatrolledtext": "à®à®¤à®©à¯ à®à¯à®±à¯à®±à¯à®à¯à®à®¾à®µà®²à¯ à®à¯à®¯à¯à®¤à®¤à®¾à®à®à¯ à®à¯à®±à®¿",
"markaspatrolledtext-file": "à®à®à¯à®à¯à®ªà¯à®ªà¯ பதிபà¯à®ªà®¿à®©à¯ à®°à¯à®¨à¯à®¤à®¿à®à¯à®à®¤à®¾à® à®à¯à®±à®¿",
"markedaspatrolled": "à®°à¯à®¨à¯à®¤à®¿à®à¯à®à®¤à®¾à® à®à¯à®±à®¿à®à¯à®à®ªà¯à®ªà®à¯à®à®¤à¯",
"markedaspatrolledtext": "தà¯à®°à®¿à®µà¯ à®à¯à®¯à¯à®¯à®ªà¯à®ªà®à¯à®à®¤à¯ திரà¯à®¤à¯à®¤à®®à¯ [[:$1]] பாரà¯à®µà¯à®¯à®¿à®à¯à®à®¤à®¾à® à®à¯à®±à®¿à®à¯à®à®ªà¯à®ªà®à¯à®à¯à®³à¯à®³à®¤à¯.",
@@ -2512,7 +2508,7 @@
"markedaspatrollederror-noautopatrol": "à®à®®à®¤à¯ மாறà¯à®±à®à¯à®à®³à¯ நà¯à®°à¯ à®°à¯à®¨à¯à®¤à®¿à®à¯à®à®¤à®¾à® à®à¯à®±à®¿à®à¯à® à®
னà¯à®®à®¤à®¿ à®à®¿à®à¯à®¯à®¾à®¤à¯.",
"markedaspatrollednotify": "$1 à®à®²à¯ à®®à¯à®±à¯à®à¯à®³à¯à®³à®ªà¯à®ªà®à¯à® à®à®®à¯à®®à®¾à®±à¯à®±à®®à¯ à®à®£à¯à®à®¾à®£à®¿à®à¯à®à®ªà¯à®ªà®à¯à®à®¤à®¾à®¯à¯à®à¯ à®à¯à®±à®¿à®à¯à®à®ªà¯à®ªà®à¯à®à®¤à¯.",
"markedaspatrollederrornotify": "à®à¯à®±à¯à®±à¯à®à¯à®à®¾à®µà®²à¯ தà¯à®²à¯à®µà®¿à®¯à®à¯à®¨à¯à®¤à®¤à®¾à® à®à¯à®±à®¿à®à¯à®à®ªà¯à®ªà®à¯à®à®¤à¯.",
- "patrol-log-page": "à®°à¯à®¨à¯à®¤à¯à®ªà¯ பதிà®à¯",
+ "patrol-log-page": "à®à¯à®±à¯à®±à¯à®à¯à®à®¾à®µà®²à¯ பதிà®à¯",
"patrol-log-header": "à®à®¤à¯ à®°à¯à®¨à¯à®¤à¯ à®à¯à®¯à¯à®¯à®ªà¯à®ªà®à¯à® பரிà®à¯à®²à®©à¯à®à®³à¯à®à¯à®à®¾à®© à®à¯à®±à®¿à®ªà¯à®ªà¯à®à¯.",
"log-show-hide-patrol": "$1 à®°à¯à®¨à¯à®¤à¯ à®à¯à®±à®¿à®ªà¯à®ªà¯à®à¯",
"log-show-hide-tag": "$1 à®
à®à¯à®¯à®¾à®³ பதிவà¯",
@@ -2616,8 +2612,8 @@
"exif-colorspace": "நிற வà¯à®³à®¿",
"exif-componentsconfiguration": "à®à®µà¯à®µà¯à®°à¯ à®
à®à¯à®à®¤à¯à®¤à®¿à®©à®¤à¯à®®à¯ பà¯à®°à¯à®³à¯",
"exif-compressedbitsperpixel": "பà®à®¿à®® à®à¯à®±à¯à®à¯à® à®®à¯à®±à¯",
- "exif-pixelydimension": "ப஠à®
à®à®²à®®à¯",
- "exif-pixelxdimension": "ப஠à®à®¯à®°à®®à¯",
+ "exif-pixelxdimension": "ப஠à®
à®à®²à®®à¯",
+ "exif-pixelydimension": "ப஠à®à®¯à®°à®®à¯",
"exif-usercomment": "பயனர௠à®à®°à¯à®¤à¯à®¤à¯à®à¯à®à®³à¯",
"exif-relatedsoundfile": "தà¯à®à®°à¯à®ªà¯à®³à¯à®³ à®à®²à®¿à®à¯à®à¯à®ªà¯à®ªà¯",
"exif-datetimeoriginal": "தரவ௠à®à®°à¯à®µà®¾à®à¯à® நாள௠நà¯à®°à®®à¯",
@@ -3056,7 +3052,6 @@
"version-libraries-description": "விளà®à¯à®à®®à¯",
"version-libraries-authors": "à®à®à®¿à®°à®¿à®¯à®°à¯à®à®³à¯",
"redirect": "à®à¯à®ªà¯à®ªà¯, பயனரà¯, பà®à¯à®à®®à¯ à®
லà¯à®²à®¤à¯ திரà¯à®¤à¯à®¤ ID à®à®© வழிமாறà¯à®±à¯",
- "redirect-legend": "à®à¯à®ªà¯à®ªà¯ à®
லà¯à®²à®¤à¯ பà®à¯à®à®¤à¯à®¤à¯à®à¯à®à¯ வழிமாறà¯à®±à¯",
"redirect-submit": "à®à¯à®²à¯à®",
"redirect-lookup": "à®à®µà®©à®¿à®à¯à®à®µà¯à®®à¯:",
"redirect-value": "மதிபà¯à®ªà¯:",
@@ -3068,7 +3063,6 @@
"redirect-not-exists": "மதிபà¯à®ªà¯ à®à®¾à®£à®ªà¯à®ªà¯à®±à®µà®¿à®²à¯à®²à¯",
"fileduplicatesearch": "நà®à®²à¯ à®à¯à®ªà¯à®ªà¯à®à®³à¯à®¤à¯ தà¯à®à¯à®",
"fileduplicatesearch-summary": "நà®à®²à¯ à®à¯à®ªà¯à®ªà¯à®à®³à¯ ஹாஷ௠மதிபà¯à®ªà¯à®à®³à¯ à®
à®à®¿à®ªà¯à®ªà®à¯à®¯à®¿à®²à¯ தà¯à®à¯.",
- "fileduplicatesearch-legend": "நà®à®²à¯à®à®³à¯à®¤à¯ தà¯à®à¯à®",
"fileduplicatesearch-filename": "à®à¯à®ªà¯à®ªà®¿à®©à¯ பà¯à®¯à®°à¯:",
"fileduplicatesearch-submit": "தà¯à®à¯à®",
"fileduplicatesearch-info": "$1 à $2 பிà®à¯à®à®²à¯ à®à¯à®ªà¯à®ªà®¿à®©à¯ à®
ளவà¯: $3 MIME வà®à¯: $4",
@@ -3223,12 +3217,12 @@
"logentry-import-interwiki": "$1 $3-஠வà¯à®±à¯ விà®à¯à®à®¿à®¯à®¿à®²à®¿à®°à¯à®¨à¯à®¤à¯ {{GENDER:$2|à®à®±à®à¯à®à¯à®®à®¤à®¿ à®à¯à®¯à¯à®¤à®¾à®°à¯}}",
"logentry-import-interwiki-details": "$1 $3-à® $5-à®à®²à®¿à®°à¯à®¨à¯à®¤à¯ {{GENDER:$2|à®à®±à®à¯à®à¯à®®à®¤à®¿ à®à¯à®¯à¯à®¤à®¾à®°à¯}} ($4 {{PLURAL:$4|மாறà¯à®±à®®à¯|மாறà¯à®±à®à¯à®à®³à¯}})",
"logentry-merge-merge": "$1 $3-à®à®©à¯ $4-à®à®©à¯à®³à¯ {{GENDER:$2|à®à®£à¯à®¤à¯à®¤à®¾à®°à¯}}",
- "logentry-move-move": "$1 பà®à¯à®à®®à¯ $3-à® $4à®à¯à®à¯ {{GENDER:$2|நà®à®°à¯à®¤à¯à®¤à®¿à®©à®¾à®°à¯}}",
+ "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": "பà®à¯à®à®®à¯ $3 à®à®©à¯ திரà¯à®¤à¯à®¤à®®à¯ $4 à® $1 பாரà¯à®µà¯à®¯à®¿à®à¯à®à¯à®à¯ à®à¯à®±à®¿à®à¯à®à®ªà¯à®ªà®à¯à®à®¤à¯. .",
- "logentry-patrol-patrol-auto": "தானா஠பà®à¯à®à®®à¯ $3-ன௠பரிà®à¯à®²à®©à¯ $4 à®à®©à®¤à¯ à®°à¯à®¨à¯à®¤à¯ à®à¯à®¯à¯à®¯à®ªà¯à®ªà®à¯à®à®¤à¯ à®à®© $1 à®à¯à®±à®¿à®¯à®¿à®à®ªà¯à®ªà®à¯à®à®¤à¯.",
+ "logentry-patrol-patrol-auto": "தானா஠பà®à¯à®à®®à¯ $3 à®à®©à¯ பரிà®à¯à®²à®©à¯ $4 à®à®©à¯à®ªà®¤à¯ à®à¯à®±à¯à®±à¯à®à¯à®à®¾à®µà®²à¯ à®à¯à®¯à¯à®¯à®ªà¯à®ªà®à¯à®à®¤à¯ à®à®© $1 பயனரால௠à®à¯à®±à®¿à®¯à®¿à®à®ªà¯à®ªà®à¯à®à®¤à¯.",
"logentry-newusers-newusers": "பயனர௠à®à®£à®à¯à®à¯ $1 {{GENDER:$2|à®à®°à¯à®µà®¾à®à¯à®à®ªà¯à®ªà®à¯à®à®¤à¯}}",
"logentry-newusers-create": "$1 பà¯à®¤à®¿à®¯ பயனர௠à®à®£à®à¯à®à¯ à®à®°à¯à®µà®¾à®à¯à®à®ªà¯à®ªà®à¯à®à¯à®³à¯à®³à®¤à¯.",
"logentry-newusers-create2": "$3 பயனர௠à®à®£à®à¯à®à®¿à®©à¯ $1 {{GENDER:$2|à®à®°à¯à®µà®¾à®à¯à®à®¿à®©à®¾à®°à¯}}",
@@ -3236,8 +3230,8 @@
"logentry-newusers-autocreate": "பயனர௠à®à®£à®à¯à®à¯ $1 தானா஠à®à®°à¯à®µà®¾à®à¯à®à®ªà¯à®ªà®à¯à®à®¤à¯",
"logentry-protect-move_prot": "$1 à®à®¾à®ªà¯à®ªà¯ à®
à®®à¯à®ªà¯à®ªà¯ $4-à®à®²à®¿à®°à¯à®¨à¯à®¤à¯ $3-à®à®±à¯à®à¯ {{GENDER:$2|நà®à®°à¯à®¤à¯à®¤à®¿à®©à®¾à®°à¯}}",
"logentry-protect-unprotect": "$1 $3-à®à®²à®¿à®°à¯à®¨à¯à®¤à¯ à®à®¾à®ªà¯à®ªà¯ {{GENDER:$2|நà¯à®à¯à®à®¿à®©à®¾à®°à¯}}",
- "logentry-protect-protect": "$1 $3-à®à®©à¯ $4-à®à®±à¯à®à¯ {{GENDER:$2|à®à®¾à®ªà¯à®ªà®à¯ à®à¯à®¯à¯à®¤à®¾à®°à¯}}",
- "logentry-protect-protect-cascade": "$1 $3-à®à®©à¯ $4-à®à®±à¯à®à¯ {{GENDER:$2|à®à®¾à®ªà¯à®ªà®à¯ à®à¯à®¯à¯à®¤à®¾à®°à¯}} [விழà¯à®¤à¯à®¤à¯à®à®°à¯]",
+ "logentry-protect-protect": "$1 $3 à®à®©à¯à®ªà®¤à®©à¯ $4 à®à®©à¯à®ªà®¤à®±à¯à®à¯ {{GENDER:$2|à®à®¾à®ªà¯à®ªà®à¯ à®à¯à®¯à¯à®¤à®¾à®°à¯}}",
+ "logentry-protect-protect-cascade": "$1 $3 à®à®©à¯à®ªà®¤à®©à¯ $4 à®à®©à¯à®ªà®¤à®±à¯à®à¯ {{GENDER:$2|à®à®¾à®ªà¯à®ªà®à¯ à®à¯à®¯à¯à®¤à®¾à®°à¯}} [விழà¯à®¤à¯à®¤à¯à®à®°à¯]",
"logentry-protect-modify": "$1 $3-à®à¯à®à®¾à®© à®à®¾à®ªà¯à®ªà¯ நிலà¯à®¯à¯ $4 நà¯à®°à®¤à¯à®¤à®¿à®±à¯à®à¯ {{GENDER:$2|மாறà¯à®±à®¿à®©à®¾à®°à¯}}",
"logentry-protect-modify-cascade": "$1 $3-à®à¯à®à®¾à®© à®à®¾à®ªà¯à®ªà¯ நிலà¯à®¯à¯ $4 நà¯à®°à®¤à¯à®¤à®¿à®±à¯à®à¯ {{GENDER:$2|மாறà¯à®±à®¿à®©à®¾à®°à¯}} [விழà¯à®¤à¯à®¤à¯à®à®°à¯]",
"logentry-rights-rights": "$1 $3-à®à®±à¯à®à®¾à®© à®à¯à®´à¯ à®
à®à¯à®à®¤à¯à®¤à¯à®µà®¤à¯à®¤à¯ $4-à®à®²à®¿à®°à¯à®¨à¯à®¤à¯ $5-à®à®±à¯à®à¯ {{GENDER:$2|மாறà¯à®±à®¿à®©à®¾à®°à¯}}",
@@ -3408,5 +3402,6 @@
"sessionprovider-generic": "$1 பà®à¯à®¤à®¿",
"sessionprovider-mediawiki-session-cookiesessionprovider": "à®à¯à®à¯à®à¯à®¯à¯ à®
à®à®¿à®ªà®à¯à®¯à®¾à®à¯à®à®à¯ à®à¯à®£à¯à® பà®à¯à®¤à®¿à®à®³à¯",
"sessionprovider-nocookies": "à®à¯à®à¯à®à¯à®à¯ à®à¯à®¯à®²à®±à¯à®±à¯ à®à®°à¯à®à¯à®à®²à®¾à®®à¯. à®à®à¯à®à®³à®¤à¯ à®à¯à®à¯à®à¯à®à¯ à®à¯à®¯à®²à®¿à®²à¯ à®à®³à¯à®³à®¤à¯ à®à®© à®à®±à¯à®¤à®¿à®ªà¯à®ªà®à¯à®¤à¯à®¤à®¿à®µà®¿à®à¯à®à¯ à®®à¯à®£à¯à®à¯à®®à¯ à®®à¯à®¯à®²à¯à®.",
- "randomrootpage": "தறà¯à®ªà¯à®à¯à®à¯ வà¯à®°à¯à®ªà¯ பà®à¯à®à®®à¯"
+ "randomrootpage": "தறà¯à®ªà¯à®à¯à®à¯ வà¯à®°à¯à®ªà¯ பà®à¯à®à®®à¯",
+ "log-action-filter-protect": "பாதà¯à®à®¾à®ªà¯à®ªà¯ வà®à¯:"
}
diff --git a/languages/i18n/tcy.json b/languages/i18n/tcy.json
index 11736b1118..60e42468e2 100644
--- a/languages/i18n/tcy.json
+++ b/languages/i18n/tcy.json
@@ -8,7 +8,8 @@
"Vishwanatha Badikana",
"Bharathesha Alasandemajalu",
"Soundarya shetty s",
- "à°°à°¹à±à°®à°¾à°¨à±à°¦à±à°¦à±à°¨à±"
+ "à°°à°¹à±à°®à°¾à°¨à±à°¦à±à°¦à±à°¨à±",
+ "BHARATHESHA ALASANDEMAJALU"
]
},
"tog-underline": "ಲಿà²à²à³âಲà³à²¦ ತಿರà³à²¤à³ à²à³à²°à³(à²
à²à²¡à²°à³ ಲà³à²¨à³) ಪಾಡà³âಲà³",
@@ -26,6 +27,7 @@
"tog-watchdefault": "ಯಾನೠಸà²à²ªà³à²²à²¿à²ªà³à²¨ ಪà³à²à³à²²à³à²¨à³ ವà³à²à³à²·à²£à²¾à²ªà²à³à²à²¿à²à³ ಸà³à²°à³à²ªà²¾à²²à³",
"tog-watchmoves": "ಯಾನೠಸà³à²¤à²²à²¾à²à²¤à²°à²¿à²¸à³à²¨ ಪà³à²à³à²²à³à²¨à³ à²à²¨à³à²¨ ವà³à²à³à²·à²£à²¾à²ªà²à³à²à²¿à²à³ ಸà³à²°à³à²ªà²¾à²²à³",
"tog-watchdeletion": "ಯಾನೠದà³à²¤à³à²¤à³â ಪಾಡà³à²¨ ಪà³à²à³à²²à³à²¨à³ à²à²¨à³à²¨ ವà³à²à³à²·à²£à²¾à²ªà²à³à²à²¿à²à³ ಸà³à²°à³à²ªà²¾à²²à³",
+ "tog-watchuploads": "à²à²¨à³à²¨ à²
ಪà³à²²à³à²¡à³ ಪà²à³à²à²¿à²à³ ಪà³à²¸ à²à²¡à²¤à³à²²à³à²¨à³ ಸà³à²°à²²",
"tog-watchrollback": "ಯಾನೠಪಿರ ದà³à²¤à³à²¨à³à²¨ ಪà³à²à³à²²à³à²¨à³ à²à²¨à³à²¨ à²à³à²®à²¨à³à²à³ ಸà³à²°à²²à³",
"tog-minordefault": "ಪà³à²°à²¾ ಸà²à²ªà²¾à²¦à²¨à³à²¨à³à²²à²¾ à²à²²à³à²¯ ಪà²à²¡à³âದೠà²à³à²°à³à²¤ ಮಲà³à²ªà³à²²à³",
"tog-previewontop": "ಮà³à²¨à³à²¨à³à²à²¨à³ ಸà²à²ªà²¾à²¦à²¨à³ à²
à²à²à²£à²¦ ಮಿತà³à²¤à³ ತà³à²à³à²ªà²¾à²²à³",
@@ -122,6 +124,8 @@
"october-date": "à²
à²à³à²à³à²¬à²° $1",
"november-date": "ನವà²à²¬à²° $1",
"december-date": "ದಸà²à²¬à²° $1",
+ "period-am": "à²à²¾à²à²¡à³",
+ "period-pm": "ಬà³à²¯à³à²¯",
"pagecategories": "{{PLURAL:$1|ವರà³à²à³|ವರà³à²à³à²²à³}}",
"category_header": "\"$1\" ವರà³à²à²¡à³à²ªà³à²ªà³à²¨à²à²à²¿à²¨ ಲà³à²à²¨à³à²²à³",
"subcategories": "à²à²ª ವರà³à²à³à²²à³",
@@ -147,7 +151,7 @@
"morenotlisted": "ಠಪà²à³à²à²¿ ಪà³à²°à³à²¤à²¿ à²à²¤à³âà²à²¿.",
"mypage": "à²à²¨à³à²¨ ಪà³à²à³",
"mytalk": "à²à²¨à³à²¨ à²à²°à³à²à³",
- "anontalk": "ಠà².ಪಿ à²à³ ಪಾತà³à²°à³âಲà³",
+ "anontalk": "ಪಾತà³à²°à³à²²à³",
"navigation": "ಸà²à²à²¾à²°à³",
"and": " ಬà³à²à³à²",
"qbfind": "ನಾಡà³âಲà³",
@@ -338,6 +342,7 @@
"viewyourtext": "à²à²°à³ ಠಪà³à²à³à²¦ ಮà³à²²à²¨à³ ತà³à²µà³à²²à²¿ ಬà³à²à³à² ನà²à²²à³ ಮಲà³à²ªà³à²²à²¿ à²à²°à³à²¨ ಸà²à²ªà²¦à²¨à³ ",
"protectedinterface": "ಠಪà³à²à³ ತà²à²¤à³à²°à²¾à²à²¸à³ à²à²ªà²¯à³à²à³ ಮಲà³à²ªà³à²¨ ಪà²à³à²¯à³à²¨à³ à²à²¦à²à²¿à²¸à²¾à²ªà³à²à²¡à³. ದà³à²°à³à²ªà²¯à³à² à²
ವà²à²¦à²¿à²²à³à²à³à² à²à²¦à³à²¨à³ ರà²à³à²·à²£à³ ಮಲà³à²ªà³à²²à³.\nಮಾತ ವಿà²à²¿à²²à³à²à³ ಬಾಸಾà²à²¤à²°à³à²¨à³ à²à³à²¡à²¯à³à²°à³ à²
à²à²à²¨à³ ಬದಲà³à²ªà³à²°à³, [//translatewiki.net/ translatewiki.net], the MediaWiki localisation ಯà³à²à²¨à³à²¨à³ à²à²ªà²¯à³à²à²¿à²¸à²²à³\nà²à²¨à³à²¨à²¡",
"ns-specialprotected": "ವಿಶà³à²· ಪà³à²âà²à³âಲà³à²¨à³ ಸà²à²ªà²¾à²¦à²¨à³ ಮಲà³à²ªà²°à³ à²à²ªà³à²à²¿",
+ "exception-nologin": "ಲಾà²à²¿à²¨à³ à²à²¤à³âà²à³à²à²°à³",
"logouttext": "à²à²°à³ à²à²¤à³à²¤à³ ಲಾà²à³ à²à²à³ à²à²¤à²°à³ \nà²à²®à²¨à²¿à²¸à²²à³ à²à²°à³à²¨ ಬà³à²°à³à²¸à²°à³âದ cacheನೠದà³à²¤à³à²¤ ಪಾಡà³à²¨à³à² ಮà³à²à³à²à³ à²à³à²²à²µà³ ಪà³à²à³à²²à³ à²à²°à³ ನಾನಲ ಲಾà²à³ à²à²¨à³ à²à²¦à²¿à²ªà³à²ªà³à²à² ತà³à²à³à²à²¡à³.",
"welcomeuser": "à²à²¦à³à²à³à²¨à³à²µà³,$1!",
"welcomecreation-msg": "à²à²°à³à²¨ à²à²¾à²¤à³à²¨à³ ದà³à²¤à³à²¤à³âದಾತà³à²à²¡à³. à²à²°à³à²¨ [[Special:Preferences|{{SITENAME}} à²à²¯à³à²à³à²¨à³]]ಬದಲà³à²ªà³à²°à³ ಮರಪà³à²¡à³à²à²¿.",
@@ -355,6 +360,7 @@
"remembermypassword": "ಠà²à²£à²à²¯à²à²¤à³à²°à³à²¡à³ à²à²¨à³à²¨ ಲಾà²à²¿à²¨à³ ನà³à²à²ªà³ ದà³à²¡à³à²¨à³à²²à³(ಹà³à²à³à²à³ $1 {{PLURAL:$1|ದಿನà³à²¤|ದಿನà³à²à³à²à³à²²à³}}ಮà³à²à³à²à³)",
"userlogin-remembermypassword": "à²à²¨à²¨à³ ಲಾà²à²¿à²¨à³ à²à²¤à³ ದà³à²¡à³à²²à³",
"userlogin-signwithsecure": "ರà²à³à²·à²£à³à²¦ à²à²¨à³à²à³à²·à²¨à³ à²à²ªà²¯à³à²à²¿à²¸à²²à³.",
+ "cannotloginnow-title": "à²à²¤à³à²¤à³ à²à²²à²¾à²¯à²¿ ಪà³à²¯à²°à³ ಸಾದà³à²¯à³ à²à²¦à³à²¦à²¿",
"yourdomainname": "à²à²°à³à²¨ à²à²¾à²°à³à²¯à²à³à²·à³à²¤à³à²°",
"password-change-forbidden": "à²à²°à³ ಠವಿà²à²¿à²¡à³ ಪà³à²°à²°à²µà³à²¸ ಪದà³à²¨à³ ಬದಲà³à²ªà³à²°à³ ಸಾದà³à²¯à³ à²à²¦à³à²¦à²¿.",
"login": "ಲಾà²à²¿à²¨à³ à²à²²à³",
@@ -379,7 +385,7 @@
"createacct-emailoptional": "ಮಿà²à²à²à²à³ ವಿಲಾಸà³(à²à²à³à²à²¿à²à³)",
"createacct-email-ph": "à²à²°à³à²¨ ಮಿà²à²à²à²à³ ವಿಲಾಸà³à²¨à³ ನಮà³à²¦à²¿à²¸à²²à³.",
"createacct-another-email-ph": "à²-à²
à²à²à³ ವಿಳಾಸà³à²¨à³ ಬದಲಾವಣೠಮಲà³à²ªà³à²²à³",
- "createaccountmail": "ಠಮà³à²²à³ ಮà³à²²à²",
+ "createaccountmail": "(ರಾà²à²¡à²®à³) ತಾತà³à²à²¾à²²à²¿à²à²µà²¾à²¦à³ ಯಾದà³à²à³à²à²¿à² ಪಾಸà³à²µà²°à³à²¡à³ à²à²¯à³à²à³ ಮಾಲà³à²ªà³à²²à³ ಬà³à²à³à²à³ à²à²®à³à²²à³ ವಿಳಾಸà³à²¨à³ ಸà³à²à²¿à²¸à²¦à³ : à²à²¡à²ªà³à²¡à³à²²à³",
"createacct-realname": "ನಿà²à²µà²¾à²¯à²¿à²¨ ಪà³à²¦à²°à³(à²à²à³à²à²¿à²à³)",
"createaccountreason": "à²à²¾à²°à²£",
"createacct-reason": "à²à²¾à²°à²£à³",
@@ -399,7 +405,7 @@
"nocookieslogin": "{{SITENAME}} ಲಾà²à³ à²à²¨à³ ಮಲà³à²ªà²° à²à³à²à³à²¸à³ à²à²ªà²¯à³à² ಮಲà³à²ªà³à²à²¡à³.\nà²à²°à³à²¨ à²à²£à²à²¯à²à²¤à³à²°à²¡à³ à²à³à²à³à²¸à³ ನಿಷಿದà³à²¦ ವಾತà³à²à²¡à³.\nದಯದà³à²¦à³ ಠನಿಷಿದà³à²§à²¨à³ ದà³à²¤à³à²¤à³âದà³, à²à³à²¡à³à²° ಪà³à²°à²¯à²¤à³à²¨ ಮಲà³à²ªà³à²²à³.",
"nocookiesfornew": "ಮà³à²²à²¨à³ ನಿರà³à²§à²°à²¿à²¸à²¾à²µà²° à²à²µà³à²à²¦à²¿à²à³à²à²¿ à²à²¡à³âದಾವರ à²à²°à³à²¨ à²à²¾à²¤à³ ಸà³à²·à³à²à²¿ à²à²¤à³âà²à³à²à²¿. .\nದಯದà³à²¦à³ à²à³à²à³à²¸à³ ನಿಷಿದà³à²§à²¨à³ ದà³à²¤à³à²¤à³âದà³, ಠಪà³à²à²¨à³ ಪಿರ ದಿà²à²à²¾à²¦à³ (load)ಪà³à²°à²¯à²¤à³à²¨à²¿à²¸à²¾à²²à³.",
"noname": "à²à²°à³ ಸರಿಯಾಯಿನ ಬಳà²à³à²¦à²¾à²° ಪà³à²¦à²°à³ à²à³à²°à³à²¤à²¿à²à³à²à²°à³.",
- "loginsuccesstitle": "ಲಾà²à³ à²à²¨à³ ಯಶಸà³à²µà²¿à²¯à²¾à²¤à³âà²à²¡à³",
+ "loginsuccesstitle": "ಲಾà²à³ à²à²¨à³ ಯಶಸà³à²µà²¿à²¯à²¾à²¤à³à²à²¡à³",
"loginsuccess": "ಲಾà²à³ à²à²¨à³ ಯಶಸà³à²µà²¿à²¯à²¾à²¤à³âà²à²¡à³\". {{SITENAME}} \"$1\".'''",
"nosuchuser": "!!\"$1\"ಪà³à²¦à²°à³âದ ವಾ ಸದಸà³à²¯à³à²°à³âಲಾ à²à²à³à²à³à²°à³, à²
à²à³à²·à²° ಸರಿಯಾದ ತà³à²²à³ à²
ಥವಾ [[Special:UserLogin/signup|ಪà³à²¸ ಸದಸà³à²¯à²¤à³à²µ à²à²¾à²¤à³à²¨à³ ಸà³à²·à³à²à²¿ ಮಲà³à²ªà³à²²à³]].",
"nosuchusershort": "!!\"$1\"ಪà³à²¦à²°à³âದ ವಾ ಸದಸà³à²¯à³à²°à³âಲಾ à²à²à³à²à³à²°à³, à²
à²à³à²·à²° ಸರಿಯಾದ ತà³à²²à³.",
@@ -419,8 +425,9 @@
"mailerror": "à²
à²à²à³ à²à²¡à²ªà³à²¡à³à²¨à³à²¡à³ ದà³à²¸à³: $1",
"noemailprefs": "ಠಸà³à²²à²à³à²¯à³à²²à³ à²à³à²²à²¸ ಮಲà³à²ªà²°à³ à²à²à²à²¿ à²-à²
à²à²à³ ವಿಳಾಸà³à²¨à³ ನಮà³à²¦à³ ಮಲà³à²ªà³à²²à³.",
"emailconfirmlink": "à²à²°à³à²¨ à²-à²
à²à²à³ ವಿಳಾಸà³à²¨à³ ದà³à²¡à³à²à²°à²£ ಮಲà³à²ªà³à²²à³.",
+ "emaildisabled": "ಠà²à²¾à²²à²¤à²¾à²£à²¡à³âದೠಮಿà²à²à²à²à³ à²à²¡à²ªà³à²¡à²° à²à²ªà³à²à³à²à²¿",
"accountcreated": "à²à²¾à²¤à³ ಸà³à²·à³à²à²¿à²¯à²¾à²¤à³âà²à²¡à³.",
- "login-abort-generic": "à²à²°à³à²¨ ಲಾà²à³ à²à²¨à³ ವಿಫಲ ವಾತà³âà²à²¡à³",
+ "login-abort-generic": "à²à²°à³à²¨ ಲಾà²à³ à²à²¨à³ ಪà³à²²à³ à²à²¤à³à²à²¡à³",
"loginlanguagelabel": "ಬಾಸà³: $1",
"pt-login": "ಲಾà²à³ à²à²¨à³",
"pt-login-button": "ಲಾà²à²¿à²¨à³ à²à²²à³",
@@ -432,13 +439,32 @@
"newpassword": "ಪà³à²¸ ಪà³à²°à²µà³à²¶à²ªà²¦",
"retypenew": "ಪà³à²°à²µà³à²¶à²ªà²¦ ಪಿರ à²à³à²ªà³ ಮಲà³à²ªà³à²²à³",
"resetpass_submit": "ಪà³à²°à²µà³à²¶à²ªà²¦ ನಿಶà³à²à²¯ ಮಲà³à²¤à³âದೠಲಾà²à³ à²à²¨à³ à²à²²à³",
+ "changepassword-success": "à²à²°à³à²¨ ಪಾಸà³âವರà³à²¡à³ ಬದಲಾತà³âà²à²¡à³",
+ "botpasswords": "ಬಾà²à³ ಪಾಸà³âವರà³à²¡à³",
+ "botpasswords-disabled": "ಬಾà²à³ ಪಾಸà³âವರà³à²¡à³âಲà³à²¨à³ ನಿಸà³à²à³à²°à³à²¯à³ ಮಲà³à²¤à²¾à²¤à³à²à²¡à³",
+ "botpasswords-existing": "à²
ಸà³à²¤à²¿à²¤à³à²µà³à²¡à³ à²à²¦à³à²¯à²¾à²à²¦à²¿à²¨ ಬಾà²à³ ಪಾಸà³âವರà³à²¡à³",
+ "botpasswords-label-appid": "ಬಾà²à³ ಪà³à²¦à²°à³",
+ "botpasswords-label-create": "ಸà³à²°à²¿à²¸à³à²à²¿à²¸à²²à³",
+ "botpasswords-label-update": "ಮಿತà³à²¤à³ à²à²°à²²à³",
+ "botpasswords-label-cancel": "ವà²à²¾ ಮಲà³à²ªà³à²²à³",
+ "botpasswords-label-delete": "ದà³à²ªà³à²ªà³à²²à³",
+ "botpasswords-label-resetpassword": "ಪà³à²°à²µà³à²¸à³ ಪದà³à²¨à³ ಪಿರ ಸà³à²¤à²¾à²ªà²¨à³ ಮಲà³à²ªà³à²²à³",
+ "botpasswords-label-grants": "à²
ನà³à²µà²¯à³ à²à²ªà³à²¨ à²
ನà³à²¦à²¾à²¨à³",
+ "botpasswords-label-grants-column": "à²
ನà³à²¦à²¾à²¨à³",
+ "botpasswords-created-title": "ಬಾà²à³ ಪಾಸà³âವರà³à²¡à³âನೠಸà³à²°à²¿à²¸à³à²à²¿à²¸à²¦à²¾à²¤à³à²à²¡à³",
+ "botpasswords-updated-title": "ಬಾà²à³ ಪಾಸà³âವರà³à²¡à³âನೠಮಿತà³à²¤à³ à²à²°à³à²ªà²¦à²¾à²¤à³à²à²¡à³",
+ "botpasswords-deleted-title": "ಬಾà²à³ ಪಾಸà³âವರà³à²¡à³â ದà³à²¤à³à²¤à³âದಾತà³à²à²¡à³",
"resetpass-submit-loggedin": "ಪà³à²°à²µà³à²¶à²ªà²¦à³à²¨à³ ಬದಲಾವಣೠಮಲà³à²ªà³à²²à³",
"resetpass-submit-cancel": "ವà²à²¾ ಮಲà³à²ªà³à²²à³",
"resetpass-temp-password": "ತಾತà³à²à²¾à²²à²¿à² ಪà³à²°à²µà³à²¶à²ªà²¦:",
"passwordreset": "ಪà³à²°à²µà³à²¸à³ ಪದà³à²¨à³ ಪಿರ ಸà³à²¤à²¾à²ªà²¨à³ ಮಲà³à²ªà³à²²à³",
"passwordreset-username": "ಸದಸà³à²¯à³à²°à³à²¨ ಪà³à²¦à²°à³:",
+ "passwordreset-domain": "à²à³à²·à³à²¤à³à²°à³:",
"passwordreset-email": "à²-à²
à²à²à³ ವಿಳಾಸà³",
+ "changeemail-newemail": "ಪà³à²¸ à²-à²
à²à²à³ ವಿಳಾಸà³:",
+ "changeemail-none": "à²à²µà³à²µà³à²²à²¾ à²à²à³à²à²¿",
"changeemail-submit": "à²-à²
à²à²à³ ವಿಳಾಸ ಬದಲಾವಣೠಮಲà³à²ªà³à²²à³",
+ "resettokens": "ಸà²à²à³à²¤à³à²²à³à²¨à³ à²à²¤à³à²¸à³à²°à²²à³",
"resettokens-tokens": "ಸà²à²à³à²¤à³à²²à³:",
"resettokens-token-label": "$1(à²à²¤à³à²¤à³à²¦ ಮà³à²²à³à²¯à³:$2)",
"bold_sample": "ದಪà³à²ªà³ à²
à²à³à²·à²°à³",
@@ -474,11 +500,13 @@
"subject-preview": "ವಿಷಯ/ಮà³à²à³à²¯à²¾à³¦à²¶à²¦ ಮà³à²¨à³à²¨à³à²:",
"blockedtitle": "ಠಸದಸà³à²¯à³à²°à³à²¨à³ ತಡೠಮಲà³à²¤à³ ದà³à³¦à²¡à³.",
"blockednoreason": "ವಾ à²à²¾à²°à²£à³à²²à²¾ à²à³à²°à³à²¤à³âà²à²¿",
+ "nosuchsectiontitle": "ಠಪà³à²¦à²°à³âದ ವಾ ವಿà²à²¾à²à²²à²¾ à²à²à³à²à²¿",
+ "loginreqtitle": "ಲಾà²à²¿à²¨à³ à²à²µà³à²¡à³",
"loginreqlink": "ಲಾà²à²¿à²¨à³ à²à²²à³",
"accmailtitle": "ಪà³à²°à²µà³à²¶à²ªà²¦ à²à²¡à²ªà³à²¡à³âದà³à²à²¡à³",
"newarticle": "(ಪà³à²¸à²¤à³)",
"newarticletext": "ನನಲ à²
ಸà³à²¥à²¿à²¤à³à²µà²¡à³ à²à²ªà³à²ªà²à²¦à²¿à²¨ ಪà³à²à³à²à³ à²à²°à³ ಬà³à²¦à²°à³.\nಠಪà³à²à³à²¨à³ ಸà³à²°à²¿à²¸à³à²à²¿ ಮಲà³à²ªà³à²°à³ ತಿರà³à²¤à³âದ à²à³à²à³à²¡à³ ಬರà³à²¯à³à²°à³ ಸà³à²°à³ ಮಲà³à²ªà³à²²à³.\n(à²à²¾à²¸à³à²¤à²¿ ಮಾಹಿತಿà²à³ [$1 ಸಹಾಯ ಪà³à²à³à²¨à³] ತà³à²²à³).\nಠಪà³à²à³à²à³ à²à²°à³ ತಪà³à²ªà²¾à²¦à³ ಬತà³à²¤à²¿à²¤à³à²¤à³à²à²¡ à²à²°à³à²¨ ಬà³à²°à³à²¸à²°à³âದ '''back''' ಬà²à²¨à³âನೠà²à²¤à³à²¤à³âಲà³.",
- "noarticletext": "ಠಪà³à²à³à²¡à³ ಸದà³à²¯à²à³ à²à²µà³à²µà³ ಬರವà³à²²à²¾ à²à²¦à³à²¦à²¿, à²à²°à³ ಬà³à²¤à³ ಪà³à²à³à²¡à³ [[Special:Search/{{PAGENAME}}|ಠಲà³à²à²¨à³à²¨à³ ನಾಡà³à²²à²¿]] [{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} ಸà²à²¬à²à²¦à³ à²à²¤à³à²¤à²¿à²¨ ದಾà²à²²à³à²¨à³ ನಾಡà³âಲà³], à²
ತà³à²¤à³à²à²¡ [{{fullurl:{{FULLPAGENAME}}|action=edit}} ಠಪà³à²à³à²¨à³ ಸà²à²ªà³à²²à²¿à²ªà³à²²à²¿] .",
+ "noarticletext": "ಠಪà³à²à³à²¡à³ ಸದà³à²¯à²à³ à²à²µà³à²µà³ ಬರವà³à²²à²¾ à²à²à³à²à²¿, à²à²°à³ ಬà³à²¤à³ ಪà³à²à³à²¡à³ [[Special:Search/{{PAGENAME}}|ಠಲà³à²à²¨à³à²¨à³ ನಾಡà³à²²à²¿]] [{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} ಸà²à²¬à²à²¦à³ à²à²¤à³à²¤à²¿à²¨ ದಾà²à²²à³à²¨à³ ನಾಡà³âಲà³], à²
ತà³à²¤à²¾à²à²¡ [{{fullurl:{{FULLPAGENAME}}|action=edit}} ಠಪà³à²à³à²¨à³ ಸà²à²ªà³à²²à²¿à²ªà³à²²à²¿] .",
"noarticletext-nopermission": "ಠಪà³à²à³à²¡à³ ಸದà³à²¯à²à³ à²à²µà³à²µà³ ಬರವà³à²²à²¾ à²à²à³à²à²¿, à²à²°à³ ಬà³à²¤à³ ಪà³à²à³à²¡à³ [[Special:Search/{{PAGENAME}}|ಠಲà³à²à²¨à³à²¨à³ ನಾಡà³à²²à²¿]] [{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} ಸà²à²¬à²à²¦à³ à²à²¤à³à²¤à³âನ ಲಾà²à³âನೠನಾಡà³âಲà³], à²
ತà³à²¤à³à²à²¡ [{{fullurl:{{FULLPAGENAME}}|action=edit}} ಠಪà³à²à³à²¨à³ ಸà²à²ªà³à²²à²¿à²ªà³à²²à²¿] .",
"userpage-userdoesnotexist": "ಬಳà²à³à²¦à²¾à²° à²à²¾à²¤à³ \"$1 \" ದಾà²à²²à²¾à²¤à³âà²à³à²à²¿. à²à²°à³ à²à²à²¦à³à²µà³ ಪà³à²à²¨à³ ಸà²à²ªà²¾à²¦à²¨à³ ಮಲà³à²ªà²° à²à²à²¡à²¾à²à²¦à³ à²à²¾à²¤à³à²°à²¿ ಮಲà³à²¤à³à²¨à²¿.",
"previewnote": "'''à²à²à²¦à³ à²à³à²µà²² ಮà³à²¨à³à²¨à³à²; ಪà³à²à³à²¨à³ ನನಲ à²à²°à²¿à²ªà²¾à²¦à²¿à²à²¿ ಪನà³à²ªà³à²¨à³à²¨à³ ಮರಪà³à²°à³à²à²¿!'''",
@@ -889,6 +917,7 @@
"exif-orientation-1": "ಸಾದಾರನà³",
"namespacesall": "ಮಾತ",
"monthsall": "ಮಾತ",
+ "watchlistedit-clear-title": "ತà³à²¯à²¿à²¨à³à²¨à³ ಮಾà²à²¾à²²à³",
"watchlisttools-view": "ಪà³à²°à²¸à³à²¤à³à²¤ ಬದಲಾವಣà³à²²à³ ತà³à²à²¾à²²à³",
"watchlisttools-edit": "ವà³à²à³à²·à²£à²¾à²ªà²à³à²à²¿à²¨à³ ತà³à²²à³ ಬà³à²à³à² à²à²¡à²¿à²à³ ಮಲà³à²ªà³à²²à³",
"signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|ಪಾತà³à²°à³à²²à³]])",
diff --git a/languages/i18n/te.json b/languages/i18n/te.json
index ef2c8a225e..4f5de01468 100644
--- a/languages/i18n/te.json
+++ b/languages/i18n/te.json
@@ -1654,8 +1654,6 @@
"categories-submit": "à°à±à°ªà°¿à°à°à±",
"categoriespagetext": "à° à°à±à°°à°¿à°à°¦à°¿ {{PLURAL:$1|వరà±à°à° à°ªà±à°à±à°²à°¨à± à°²à±à°¦à°¾ మాధà±à°¯à°®à°¾à°²à°¨à± à°à°²à°¿à°à°¿à°µà±à°à°¦à°¿|వరà±à°à°¾à°²à± à°ªà±à°à±à°²à°¨à± à°²à±à°¦à°¾ మాధà±à°¯à°®à°¾à°²à°¨à± à°à°²à°¿à°à°¿à°µà±à°¨à±à°¨à°¾à°¯à°¿}}.\n[[Special:UnusedCategories|వాడà±à°à°²à± à°²à±à°¨à°¿ వరà±à°à°¾à°²à°¨à°¿]] à°à°à±à°à°¡ à°à±à°ªà°¿à°à°à°à±à°²à±à°¦à±.\n[[Special:WantedCategories|à°à±à°°à±à°¤à±à°¨à±à°¨ వరà±à°à°¾à°²à°¨à±]] à°à±à°¡à°¾ à°à±à°¡à°à°¡à°¿.",
"categoriesfrom": "à°à°à±à°à°¡à°¨à±à°à°¡à°¿ à°®à±à°¦à°²à±à°à±à°¨à°¿ వరà±à°à°¾à°²à± à°à±à°ªà°¿à°à°à±:",
- "special-categories-sort-count": "à°¸à°à°à±à°¯à°² à°ªà±à°°à°à°¾à°°à° à°à±à°°à°®à°ªà°°à°à±",
- "special-categories-sort-abc": "à°
à°à°¾à°°à°¾à°¦à°¿ à°à±à°°à°®à°à°²à± à°
మరà±à°à±",
"deletedcontributions": "à°¤à±à°²à°à°¿à°à°à°¬à°¡à°¿à°¨ వాడà±à°à°°à°¿ à°°à°à°¨à°²à±",
"deletedcontributions-title": "à°¤à±à°²à°à°¿à°à°à°¬à°¡à°¿à°¨ వాడà±à°à°°à°¿ à°°à°à°¨à°²à±",
"sp-deletedcontributions-contribs": "మారà±à°ªà±à°à±à°°à±à°ªà±à°²à±",
@@ -1758,9 +1756,11 @@
"watchlist-submit": "à°à±à°ªà°¿à°à°à±",
"wlshowtime": "à°à±à°ªà°¿à°à°à°¾à°²à±à°¸à°¿à°¨ à°à°¾à°²à°:",
"wlshowhideminor": "à°à°¿à°¨à±à°¨ మారà±à°ªà±à°²à±",
+ "wlshowhidebots": "బాà°à±à°²à±",
"wlshowhideliu": "నమà±à°¦à±à°¨ వాడà±à°à°°à±à°²à±",
"wlshowhideanons": "à°
à°à±à°à°¾à°¤ వాడà±à°à°°à±à°²à±",
"wlshowhidemine": "నా మారà±à°ªà±à°²à±",
+ "wlshowhidecategorization": "à°ªà±à°à± వరà±à°à±à°à°°à°£",
"watchlist-options": "à°µà±à°à±à°·à°£ à°à°¾à°¬à°¿à°¤à°¾ à°à°à°ªà°¿à°à°²à±",
"watching": "à°à°®à°¨à°¿à°¸à±à°¤à±à°¨à±à°¨à°¾à°°à±...",
"unwatching": "à°à°®à°¨à°¿à°à°à°¡à° à°²à±à°¦à±...",
@@ -2234,11 +2234,7 @@
"import-logentry-upload-detail": "$1 {{PLURAL:$1|à°à±à°°à±à°ªà±|à°à±à°°à±à°ªà±à°²à±}}",
"import-logentry-interwiki-detail": "$2 à°¨à±à°à°¡à°¿ {{PLURAL:$1|à°à° à°à±à°°à±à°ªà±|$1 à°à±à°°à±à°ªà±à°²à±}}",
"javascripttest": "à°à°¾à°µà°¾à°¸à±à°à±à°°à°¿à°ªà±à°à± పరà±à°à±à°·",
- "javascripttest-pagetext-noframework": "à° à°ªà±à°à± JavaScript పరà±à°à±à°·à°² à°à±à°¸à° à°à°¦à±à°¦à±à°¶à°¿à°à°à°¬à°¡à°¿à°à°¦à°¿.",
- "javascripttest-pagetext-unknownframework": "à°¤à±à°²à°¿à°¯à°¨à°¿ పరà±à°à±à°·à°¾ à°«à±à°°à±à°®à±âవరà±à°à± \"$1\".",
"javascripttest-pagetext-unknownaction": "à°¤à±à°²à°¿à°¯à°¨à°¿ à°à°°à±à°¯ \"$1\".",
- "javascripttest-pagetext-frameworks": "à°à°¿à°à°¦à°¿ పరà±à°à±à°·à°¾ à°«à±à°°à±à°®à±âవరà±à°à±à°²à°²à± à°à°à°¦à°¾à°¨à±à°¨à°¿ à°à°à°à±à°à±à°à°¡à°¿: $1",
- "javascripttest-pagetext-skins": "పరà±à°à±à°·à°²à± నడిపà±à°à°¦à±à°à± à° à°°à±à°ªà±à°¨à± à°à°à°à±à°à±à°à°¡à°¿:",
"javascripttest-qunit-intro": "mediawiki.org à°²à±à°¨à°¿ [$1 పరà±à°à±à°·à°¾ à°¡à°¾à°à±à°¯à±à°®à±à°à°à±à°·à°¨à±] à°à±à°¡à°à°¡à°¿.",
"tooltip-pt-userpage": "మౠవాడà±à°à°°à°¿ à°ªà±à°à±",
"tooltip-pt-anonuserpage": "మౠà°à°ªà± à°à°¿à°°à±à°¨à°¾à°®à°¾à°à°¿ à°¸à°à°¬à°à°§à°¿à°à°à°¿à°¨ వాడà±à°à°°à°¿ à°ªà±à°à±",
@@ -2486,8 +2482,8 @@
"exif-colorspace": "వరà±à°£à°¸à±à°¥à°²à°",
"exif-componentsconfiguration": "à°ªà±à°°à°¤à± à°
à°à°à° à°¯à±à°à±à° à°
à°°à±à°¥à°",
"exif-compressedbitsperpixel": "à°¬à±à°®à±à°® à°à±à°¦à°¿à°à°ªà± పదà±à°§à°¤à°¿",
- "exif-pixelydimension": "à°¬à±à°®à±à°® à°µà±à°¡à°²à±à°ªà±",
- "exif-pixelxdimension": "à°¬à±à°®à±à°® à°à°¤à±à°¤à±",
+ "exif-pixelxdimension": "à°¬à±à°®à±à°® à°µà±à°¡à°²à±à°ªà±",
+ "exif-pixelydimension": "à°¬à±à°®à±à°® à°à°¤à±à°¤à±",
"exif-usercomment": "వాడà±à°à°°à°¿ à°µà±à°¯à°¾à°à±à°¯à°²à±",
"exif-relatedsoundfile": "à°¸à°à°¬à°à°§à°¿à°¤ శబà±à°¦ à°«à±à°²à±",
"exif-datetimeoriginal": "à°¡à±à°à°¾ తయారà±à°¨ à°¤à±à°¦à±, సమయà°",
@@ -2912,7 +2908,6 @@
"version-libraries-description": "వివరణ",
"version-libraries-authors": "à°°à°à°¯à°¿à°¤à°²à±",
"redirect": "à°«à±à°²à±, వాడà±à°à°°à°¿, à°ªà±à°à± à°²à±à°¦à°¾ à°à±à°°à±à°ªà± à°à°¡à± à°ªà±à°°à°à°¾à°°à° దారిమారà±à°ªà±",
- "redirect-legend": "à°«à±à°²à± à°²à±à°¦à°¾ à°ªà±à°à±à°à°¿ దారిమారà±à°ªà±",
"redirect-submit": "à°µà±à°³à±à°³à±",
"redirect-lookup": "à°à±à°¡à±:",
"redirect-value": "విలà±à°µ:",
@@ -2923,7 +2918,6 @@
"redirect-not-exists": "విలà±à°µ à°à°¨à°¬à°¡à°²à±à°¦à±",
"fileduplicatesearch": "à°«à±à°³à±à°² మారà±à°ªà±à°°à°¤à±à°² à°à±à°¸à° à°µà±à°¤à±à°à±",
"fileduplicatesearch-summary": "మారà±à°ªà±à°°à°¤à±à°² à°à±à°¸à° à°«à±à°³à±à°² హాషౠవిలà±à°µ à°à°§à°¾à°°à°à°à°¾ à°µà±à°¤à±à°à±.",
- "fileduplicatesearch-legend": "మారà±à°ªà±à°°à°¤à°¿ à°à±à°°à°à± à°µà±à°¤à±à°à±",
"fileduplicatesearch-filename": "à°«à±à°²à± à°ªà±à°°à±:",
"fileduplicatesearch-submit": "à°µà±à°¤à±à°à±",
"fileduplicatesearch-info": "$1 à $2 పిà°à±à°¸à±à°³à±à°²à± దసà±à°¤à±à°°à°ªà± పరిమాణà°: $3 MIME à°°à°à°: $4",
diff --git a/languages/i18n/tg-cyrl.json b/languages/i18n/tg-cyrl.json
index 7a0fc8178d..70b9b62499 100644
--- a/languages/i18n/tg-cyrl.json
+++ b/languages/i18n/tg-cyrl.json
@@ -1210,8 +1210,6 @@
"categories": "ÐÑÑӯҳҳо",
"categoriespagetext": "ÐÑÑӯҳҳои зеÑин Ð´Ð°Ñ Ð²Ð¸ÐºÐ¸ вÑÒ·Ñд доÑанд.\n[[Special:UnusedCategories|Unused categories]] are not shown here.\nAlso see [[Special:WantedCategories|wanted categories]].",
"categoriesfrom": "ÐамоиÑи гÑÑӯҳҳо бо ÑÑÑÓ¯Ñ Ð°Ð·:",
- "special-categories-sort-count": "мÑÑаÑаб каÑдан Ð±Ð°Ñ Ð°ÑоÑи ÑеÑдод",
- "special-categories-sort-abc": "мÑÑаÑаб каÑдани алиÑбоӣ",
"deletedcontributions": "ҲиÑÑагÑзоÑиҳои ҳазÑÑÑдаи коÑбаÑ",
"deletedcontributions-title": "ҲиÑÑагÑзоÑиҳои ҳазÑÑÑдаи коÑбаÑ",
"linksearch": "Ò¶ÑÑÑÑҷӯи пайвандҳои беÑÑна",
@@ -1771,8 +1769,8 @@
"exif-colorspace": "Фазои Ñанг",
"exif-componentsconfiguration": "ÐаÑнии Ò³Ð°Ñ Ñк аз ÒиÑмҳо",
"exif-compressedbitsperpixel": "ҲолаÑи ÑиÑÑÑдаÑозии акÑ",
- "exif-pixelydimension": "ÐÑзи акÑ",
- "exif-pixelxdimension": "Тӯли акÑ",
+ "exif-pixelxdimension": "ÐÑзи акÑ",
+ "exif-pixelydimension": "Тӯли акÑ",
"exif-usercomment": "ТавзеҳоÑи коÑбаÑ",
"exif-relatedsoundfile": "ÐаÑвандаи ÑабÑи алоÒаманд",
"exif-datetimeoriginal": "ТаÑÑиÑ
ва ваÒÑи Ñавлиди додаҳо",
@@ -2052,7 +2050,6 @@
"version-software-version": "ÐÑÑÑ
а",
"fileduplicatesearch": "Ò¶ÑÑÑÑÒ·Ó¯ баÑои паÑвандаҳои ÑакÑоÑÓ£",
"fileduplicatesearch-summary": "Ò¶ÑÑÑÑÒ·Ó¯ баÑои паÑвандаҳои ÑакÑоÑÓ£ Ð±Ð°Ñ Ð°ÑоÑи миÒдоÑи Ð´Ð°Ñ Ò³Ð°Ð¼ ÑÑдаи онҳо ÑÑÑÐ°Ñ Ð¼ÐµÐ³Ð¸Ñад.",
- "fileduplicatesearch-legend": "Ò¶ÑÑÑÑҷӯи мавоÑиди ÑакÑоÑÓ£",
"fileduplicatesearch-filename": "Ðоми паÑванда:",
"fileduplicatesearch-submit": "Ò¶ÑÑÑÑÒ·Ó¯",
"fileduplicatesearch-info": "$1 à $2 пикÑел Ðндозаи паÑванда: $3 ÐавÑи MIME: $4",
diff --git a/languages/i18n/tg-latn.json b/languages/i18n/tg-latn.json
index f6e9a95f04..981c7ca3ab 100644
--- a/languages/i18n/tg-latn.json
+++ b/languages/i18n/tg-latn.json
@@ -909,8 +909,6 @@
"allpages-bad-ns": "{{SITENAME}} doroi fazoinom \"$1\" nest.",
"categories": "Gurūhho",
"categoriesfrom": "NamoiÅi gurÅ«hho bo ÅurÅ«' az:",
- "special-categories-sort-count": "muratab kardan bar asosi te'dod",
- "special-categories-sort-abc": "muratab kardani alifboī",
"deletedcontributions": "Hissaguzorihoi hazfÅudai korbar",
"deletedcontributions-title": "Hissaguzorihoi hazfÅudai korbar",
"linksearch": "Pajvandhoi beruna",
@@ -1418,8 +1416,8 @@
"exif-colorspace": "Fazoi rang",
"exif-componentsconfiguration": "Ma'niji har jak az qismho",
"exif-compressedbitsperpixel": "Holati fiÅurdasoziji aks",
- "exif-pixelydimension": "Arzi aksi mū'tabar",
- "exif-pixelxdimension": "Tūli aksi mū'tabar",
+ "exif-pixelxdimension": "Arzi aksi mū'tabar",
+ "exif-pixelydimension": "Tūli aksi mū'tabar",
"exif-usercomment": "Tavzehoti korbar",
"exif-relatedsoundfile": "Parvandai sabti aloqamand",
"exif-datetimeoriginal": "Ta'rix va vaqti tavlidi dodaho",
@@ -1684,7 +1682,6 @@
"version-software-version": "Nusxa",
"fileduplicatesearch": "Ãustuçū baroi parvandahoi takrorÄ«",
"fileduplicatesearch-summary": "Ãustuçū baroi parvandahoi takrorÄ« bar asosi miqdori dar ham Åudai onho surat megirad.",
- "fileduplicatesearch-legend": "Ãustuçūi mavoridi takrorÄ«",
"fileduplicatesearch-filename": "Nomi parvanda:",
"fileduplicatesearch-submit": "Ãustuçū",
"fileduplicatesearch-info": "$1 Ã $2 piksel Andozai parvanda: $3 Nav'i MIME: $4",
diff --git a/languages/i18n/th.json b/languages/i18n/th.json
index 453be28df6..c81200a8b8 100644
--- a/languages/i18n/th.json
+++ b/languages/i18n/th.json
@@ -1634,8 +1634,6 @@
"categories-submit": "à¹à¸ªà¸à¸",
"categoriespagetext": "{{PLURAL:$1|หมวà¸à¸«à¸¡à¸¹à¹à¸à¸µà¹|หมวà¸à¸«à¸¡à¸¹à¹à¸à¹à¸à¹à¸à¸à¸µà¹}}มีหà¸à¹à¸²à¸«à¸£à¸·à¸à¸ªà¸·à¹à¸à¸à¹à¸²à¸ à¹\n[[Special:UnusedCategories|หมวà¸à¸«à¸¡à¸¹à¹à¸à¸µà¹à¹à¸¡à¹à¹à¸à¹à¹à¸à¹]]à¸à¸°à¹à¸¡à¹à¹à¸ªà¸à¸à¹à¸à¸à¸µà¹à¸à¸µà¹\nà¸à¸¹à¹à¸à¸´à¹à¸¡à¸à¸µà¹ [[Special:WantedCategories|หมวà¸à¸«à¸¡à¸¹à¹à¸à¸µà¹à¸à¹à¸à¸à¸à¸²à¸£]]",
"categoriesfrom": "à¹à¸ªà¸à¸à¸«à¸¡à¸§à¸à¸«à¸¡à¸¹à¹à¹à¸£à¸´à¹à¸¡à¸à¸²à¸:",
- "special-categories-sort-count": "à¹à¸£à¸µà¸¢à¸à¸à¸²à¸¡à¸à¸³à¸à¸§à¸",
- "special-categories-sort-abc": "à¹à¸£à¸µà¸¢à¸à¸à¸²à¸¡à¸à¸±à¸§à¸à¸±à¸à¸©à¸£",
"deletedcontributions": "à¹à¸£à¸·à¹à¸à¸à¸à¸µà¹à¹à¸à¸µà¸¢à¸à¸à¸à¸à¸à¸¹à¹à¹à¸à¹à¸à¸µà¹à¸à¸¹à¸à¸¥à¸",
"deletedcontributions-title": "à¹à¸£à¸·à¹à¸à¸à¸à¸µà¹à¹à¸à¸µà¸¢à¸à¸à¸à¸à¸à¸¹à¹à¹à¸à¹à¸à¸µà¹à¸à¸¹à¸à¸¥à¸",
"sp-deletedcontributions-contribs": "à¹à¸£à¸·à¹à¸à¸à¸à¸µà¹à¹à¸à¸µà¸¢à¸",
@@ -2213,8 +2211,6 @@
"import-logentry-upload-detail": "à¸à¸³à¹à¸à¹à¸² $1 {{PLURAL:$1|รุà¹à¸à¸à¸²à¸£à¹à¸à¹à¹à¸|รุà¹à¸à¸à¸²à¸£à¹à¸à¹à¹à¸}}",
"import-logentry-interwiki-detail": "à¸à¸³à¹à¸à¹à¸² $1 {{PLURAL:$1|รุà¹à¸à¸à¸²à¸£à¹à¸à¹à¹à¸|รุà¹à¸à¸à¸²à¸£à¹à¸à¹à¹à¸}}à¸à¸²à¸ $2",
"javascripttest": "à¸à¸²à¸£à¸à¸à¸ªà¸à¸à¸à¸²à¸§à¸²à¸ªà¸à¸£à¸´à¸à¸à¹",
- "javascripttest-pagetext-noframework": "หà¸à¹à¸²à¸à¸µà¹à¸ªà¸à¸§à¸à¹à¸§à¹à¸ªà¸³à¸«à¸£à¸±à¸à¸à¸³à¹à¸à¸´à¸à¸à¸²à¸à¸à¸²à¸£à¸à¸à¸ªà¸à¸à¸à¸²à¸§à¸²à¸ªà¸à¸£à¸´à¸à¸à¹",
- "javascripttest-pagetext-skins": "à¹à¸¥à¸·à¸à¸à¸ªà¸à¸´à¸à¸à¸µà¹à¸à¸°à¸à¸³à¹à¸à¸´à¸à¸à¸²à¸à¸à¸²à¸£à¸à¸à¸ªà¸à¸:",
"javascripttest-qunit-intro": "à¸à¸¹[$1 à¹à¸à¸à¸ªà¸²à¸£à¸à¸³à¸à¸±à¸à¸à¸²à¸£à¸à¸à¸ªà¸à¸]à¸à¸ mediawiki.org",
"tooltip-pt-userpage": "หà¸à¹à¸²à¸à¸¹à¹à¹à¸à¹à¸à¸à¸à¸à¸¸à¸",
"tooltip-pt-anonuserpage": "หà¸à¹à¸²à¸à¸¹à¹à¹à¸à¹à¸à¸à¸à¹à¸¥à¸à¸à¸µà¹à¸à¸¢à¸¹à¹à¹à¸à¸à¸µà¸à¸µà¹à¸à¸¸à¸à¸à¸³à¸¥à¸±à¸à¹à¸à¹à¹à¸à¹à¹à¸",
@@ -2479,8 +2475,8 @@
"exif-colorspace": "สà¹à¸à¸à¸ªà¸µ",
"exif-componentsconfiguration": "à¸à¸§à¸²à¸¡à¸«à¸¡à¸²à¸¢à¸à¸à¸à¹à¸à¹à¸¥à¸°à¸à¸à¸¡à¹à¸à¹à¸à¸à¸à¹",
"exif-compressedbitsperpixel": "à¹à¸«à¸¡à¸à¸à¸²à¸£à¸à¸µà¸à¸à¸±à¸à¸ าà¸",
- "exif-pixelydimension": "à¸à¸§à¸²à¸¡à¸à¸§à¹à¸²à¸à¸à¸à¸à¸ าà¸",
- "exif-pixelxdimension": "à¸à¸§à¸²à¸¡à¸ªà¸¹à¸à¸à¸à¸à¸ าà¸",
+ "exif-pixelxdimension": "à¸à¸§à¸²à¸¡à¸à¸§à¹à¸²à¸à¸à¸à¸à¸ าà¸",
+ "exif-pixelydimension": "à¸à¸§à¸²à¸¡à¸ªà¸¹à¸à¸à¸à¸à¸ าà¸",
"exif-usercomment": "à¸à¸§à¸²à¸¡à¹à¸«à¹à¸à¸à¸¹à¹à¹à¸à¹",
"exif-relatedsoundfile": "à¹à¸à¸¥à¹à¹à¸ªà¸µà¸¢à¸à¸à¸µà¹à¹à¸à¸µà¹à¸¢à¸§à¸à¹à¸à¸",
"exif-datetimeoriginal": "วัà¸à¸à¸µà¹à¹à¸¥à¸°à¹à¸§à¸¥à¸²à¸à¸²à¸£à¸à¹à¸à¸à¸³à¹à¸à¸´à¸à¸à¹à¸à¸¡à¸¹à¸¥",
@@ -2822,7 +2818,6 @@
"version-entrypoints-articlepath": "[https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgArticlePath à¹à¸ªà¹à¸à¸à¸²à¸à¸à¸à¸à¸§à¸²à¸¡]",
"version-entrypoints-scriptpath": "[https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgScriptPath à¹à¸ªà¹à¸à¸à¸²à¸à¸ªà¸à¸£à¸´à¸à¸à¹]",
"redirect": "à¸à¸²à¸£à¹à¸à¸¥à¸µà¹à¸¢à¸à¸à¸²à¸à¸à¸²à¸¡à¸à¸·à¹à¸à¹à¸à¸¥à¹ รหัสà¸à¸£à¸°à¸à¸³à¸à¸¹à¹à¹à¸à¹ หà¸à¹à¸² รุà¹à¸à¸«à¸£à¸·à¸à¸à¸¹à¸¡",
- "redirect-legend": "à¸à¸²à¸£à¹à¸à¸¥à¸µà¹à¸¢à¸à¸à¸²à¸à¹à¸à¸¢à¸±à¸à¹à¸à¸¥à¹à¸«à¸£à¸·à¸à¸«à¸à¹à¸²",
"redirect-summary": "หà¸à¹à¸²à¸à¸´à¹à¸¨à¸©à¸à¸µà¹à¹à¸à¸¥à¸µà¹à¸¢à¸à¸à¸²à¸à¹à¸à¸¢à¸±à¸à¹à¸à¸¥à¹ (ระà¸à¸¸à¹à¸à¹à¸à¸à¸·à¹à¸à¹à¸à¸¥à¹) หà¸à¹à¸² (ระà¸à¸¸à¹à¸à¹à¸à¸£à¸«à¸±à¸ªà¸£à¸¸à¹à¸à¸«à¸£à¸·à¸à¸£à¸«à¸±à¸ªà¸«à¸à¹à¸²) หรืà¸à¸«à¸à¹à¸²à¸à¸¹à¹à¹à¸à¹ (ระà¸à¸¸à¹à¸à¹à¸à¸£à¸«à¸±à¸ªà¸à¸¹à¹à¹à¸à¹à¸à¸±à¸§à¹à¸¥à¸) à¸à¸²à¸£à¹à¸à¹à¸à¸²à¸: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]] หรืภ[[{{#Special:Redirect}}/user/101]]",
"redirect-submit": "à¹à¸",
"redirect-lookup": "à¸à¹à¸à¸à¸¹:",
@@ -2834,7 +2829,6 @@
"redirect-not-exists": "à¹à¸¡à¹à¸à¸à¸à¹à¸²",
"fileduplicatesearch": "à¸à¹à¸à¸«à¸²à¹à¸à¸¥à¹à¸à¹à¸³à¸à¹à¸à¸",
"fileduplicatesearch-summary": "à¸à¹à¸à¸«à¸²à¹à¸à¸¥à¹à¸à¹à¸³à¸à¸±à¸à¸à¸²à¸¡à¸à¹à¸²à¹à¸®à¸",
- "fileduplicatesearch-legend": "à¸à¹à¸à¸«à¸²à¹à¸à¸¥à¹à¸à¸µà¹à¸à¹à¸³à¸à¸±à¸",
"fileduplicatesearch-filename": "à¸à¸·à¹à¸à¹à¸à¸¥à¹:",
"fileduplicatesearch-submit": "à¸à¹à¸à¸«à¸²",
"fileduplicatesearch-info": "$1 à $2 à¸à¸´à¸à¹à¸à¸¥ à¸à¸à¸²à¸à¹à¸à¸¥à¹: $3 à¸à¸à¸´à¸à¸à¸à¸à¹à¸¡à¸¡à¹: $4",
diff --git a/languages/i18n/tk.json b/languages/i18n/tk.json
index 7e088736bb..590dbe2670 100644
--- a/languages/i18n/tk.json
+++ b/languages/i18n/tk.json
@@ -1223,8 +1223,6 @@
"categories": "Kategoriýalar",
"categoriespagetext": "AÅakdaky {{PLURAL:$1|kategoriýada|kategoriýalarda}} sahypa ýa-da media faýllary bardyr.\n[[Special:UnusedCategories|Ulanylmaýan kategoriýalar]] Åu ýerde görkezilmeýär.\nÅeýle-de [[Special:WantedCategories|Talap edilýän kategoriýalara]] serediÅ.",
"categoriesfrom": "ÅunuÅ bilen baÅlaýan kategoriýalary görkez:",
- "special-categories-sort-count": "mukdar boýunça tertiple",
- "special-categories-sort-abc": "elipbiý boýunça tertiple",
"deletedcontributions": "Ãçürilen ulanyjy goÅantlary",
"deletedcontributions-title": "Ãçürilen ulanyjy goÅantlary",
"sp-deletedcontributions-contribs": "goÅantlar",
@@ -1857,8 +1855,8 @@
"exif-colorspace": "ReÅk giÅiÅligi",
"exif-componentsconfiguration": "Her komponentiÅ manysy",
"exif-compressedbitsperpixel": "Surat gysyŠrežimi",
- "exif-pixelydimension": "Dogry surat ini",
- "exif-pixelxdimension": "Dogry surat beýikligi",
+ "exif-pixelxdimension": "Dogry surat ini",
+ "exif-pixelydimension": "Dogry surat beýikligi",
"exif-usercomment": "Ulanyjy teswirleri",
"exif-relatedsoundfile": "DegiÅli audio faýl",
"exif-datetimeoriginal": "Asyl sene we wagt",
@@ -2136,7 +2134,6 @@
"version-software-version": "Wersiýa",
"fileduplicatesearch": "Dublikat faýllaryŠgözlegi",
"fileduplicatesearch-summary": "HeÅ kodlary boýunça meÅzeÅ faýllary gözle.",
- "fileduplicatesearch-legend": "Dublikatyny gözle",
"fileduplicatesearch-filename": "FaýlyŠady:",
"fileduplicatesearch-submit": "Gözle",
"fileduplicatesearch-info": "$1 à $2 piksel FaýlyŠölçegi: $3 MIME tipi: $4",
diff --git a/languages/i18n/tl.json b/languages/i18n/tl.json
index 44ff623d7a..ca3e47b618 100644
--- a/languages/i18n/tl.json
+++ b/languages/i18n/tl.json
@@ -154,7 +154,7 @@
"categoryviewer-pagedlinks": "($1) ($2)",
"about": "Patungkol",
"article": "Pahina ng nilalaman",
- "newwindow": "(magbubukas sa bagong bintana)",
+ "newwindow": "(magbubukas sa bagong window)",
"cancel": "Kanselahin",
"moredotdotdot": "Damihan pa...",
"morenotlisted": "Hindi kumpleto ang talang ito.",
@@ -181,12 +181,12 @@
"search": "Paghahanap",
"searchbutton": "Maghanap",
"go": "Gawin",
- "searcharticle": "Gawin",
+ "searcharticle": "Pumunta",
"history": "Kasaysayan ng pahina",
"history_short": "Kasaysayan",
"updatedmarker": "isinapanahon mula noong huli kong pagdalaw",
"printableversion": "Bersiyong maililimbag",
- "permalink": "Palagiang kawing",
+ "permalink": "Palagiang link",
"print": "Ilimbag",
"view": "Tingnan",
"view-foreign": "Tingnan sa $1",
@@ -224,7 +224,7 @@
"categorypage": "Tingnan ang pahina ng kategorya",
"viewtalkpage": "Tingnan ang usapan",
"otherlanguages": "Sa ibang wika",
- "redirectedfrom": "(Ikinarga mula sa $1)",
+ "redirectedfrom": "(Nakaturo mula sa $1)",
"redirectpagesub": "Pahina ng pagkarga",
"redirectto": "Papuntahin sa:",
"lastmodifiedat": "Huling binago ang pahinang ito noong $2, noong $1.",
@@ -307,7 +307,7 @@
"nstab-media": "Pahina ng midya",
"nstab-special": "Natatanging pahina",
"nstab-project": "Pahina ng proyekto",
- "nstab-image": "Talaksan",
+ "nstab-image": "File",
"nstab-mediawiki": "Mensahe",
"nstab-template": "Padron",
"nstab-help": "Pahina ng tulong",
@@ -544,16 +544,16 @@
"italic_tip": "Nakahilig na panitik",
"link_sample": "Pamagat ng kawing",
"link_tip": "Panloob na kawing",
- "extlink_sample": "http://www.example.com na kawing ng pamagat",
- "extlink_tip": "Panlabas na kawing (tandaan ang unlaping http://)",
- "headline_sample": "Paulong teksto",
- "headline_tip": "Paulong antas 2",
+ "extlink_sample": "http://www.example.com na link ng pamagat",
+ "extlink_tip": "Panlabas na link (tandaan ang unlaping http://)",
+ "headline_sample": "Teksto ng ulong pambungad",
+ "headline_tip": "Antas 2 na ulong pambungad",
"nowiki_sample": "Isingit ang hindi nakapormat na teksto dito",
"nowiki_tip": "Balewalain ang pormat na pangwiki",
"image_sample": "Halimbawa.jpg",
- "image_tip": "Nakabaong talaksan",
+ "image_tip": "File na naka-embed",
"media_sample": "Halimbawa.ogg",
- "media_tip": "Kawing sa talaksan",
+ "media_tip": "Link ng file",
"sig_tip": "Lagda mo na may tatak ng oras",
"hr_tip": "Pahalagang na guhit (gamitin nang madalang)",
"summary": "Buod:",
@@ -562,9 +562,9 @@
"watchthis": "Bantayan ang pahinang ito",
"savearticle": "Itala ang pahina",
"preview": "Paunang tingin",
- "showpreview": "Ipakita ang paunang tingin",
+ "showpreview": "Paunang tingin",
"showdiff": "Ipakita ang mga pagbabago",
- "anoneditwarning": "'''Babala:''' Hindi ka nakalagda.\nMatatala ang iyong direksiyong IP sa kasaysayan ng pagbabago ng pahinang ito.",
+ "anoneditwarning": "Babala: Hindi ka nakalagda.\nMakikita ng publiko ang iyong IP address kung gagawa ka ng mga pagbabago. Kung [$1 mag-login] ka o [$2 lumikha ng account] , maiuugnay ang iyong mga pagbabago sa iyong account, kasama ang ibang pakinabang.",
"anonpreviewwarning": "''Hindi ka nakalagda. Itatala sa inyong pagtatala ang inyong direksiyong IP sa kasaysayan ng pagbabago ng pahinang ito.''",
"missingsummary": "'''Paalala:''' Hindi ka nagbigay ng buod ng pagbabago.\nKapag pinindot mo uli ang Sagip, masasagip ang pagbabago mo na wala nito.",
"missingcommenttext": "Magbigay ng isang kumento/puna sa ibaba.",
@@ -896,7 +896,7 @@
"prefs-searchoptions": "Paghahanap",
"prefs-namespaces": "Mga espasyo ng pangalan",
"default": "Likas na pagtatakda",
- "prefs-files": "Mga talaksan",
+ "prefs-files": "Mga file",
"prefs-custom-css": "Pasadyang CSS",
"prefs-custom-js": "Pasadyang JS",
"prefs-common-css-js": "Naibahaging CSS/JS para sa lahat ng pabalat:",
@@ -988,9 +988,9 @@
"right-move": "Ilipat ang mga pahina",
"right-move-subpages": "Ilipat ang mga pahina kasama ang pahinang nasa ilalim nito",
"right-move-rootuserpages": "Ilipat ang pinagugatang mga pahina ng tagagamit",
- "right-movefile": "Ilipat ang mga talaksan",
+ "right-movefile": "Ilipat ang mga file",
"right-suppressredirect": "Hindi nilikha sa isang pagkarga mula sa lumang pangalan kapag naglipat ng isang pahina",
- "right-upload": "Magkarga ng mga talaksan",
+ "right-upload": "Mag-upload ng mga file",
"right-reupload": "Patungan ang mayroon nang mga talaksan",
"right-reupload-own": "Patungan ang talaksang kinarga ng sarili",
"right-reupload-shared": "Patungan ang mga talaksan sa binabahaging repositoryo midya sa lokal",
@@ -1087,8 +1087,9 @@
"recentchanges-label-minor": "Isa itong munting pagbabago",
"recentchanges-label-bot": "Gawa ng isang bot ang pagbabagong ito",
"recentchanges-label-unpatrolled": "Hindi pa napapatrulyahan ang pagbabagong ito",
+ "recentchanges-label-plusminus": "Nagbago ang laki ng pahina sa ganitong bilang ng mga byte",
"recentchanges-legend-heading": "Gabay: ",
- "recentchanges-legend-newpage": "$1 - bagong pahina",
+ "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (tingnan din [[Special:NewPages|ang talaan ng mga bagong pahina]])",
"rcnotefrom": "Nasa ibaba ang mga pagbabago mula pa noong '''$2''' (ipinapakita ang magpahanggang sa '''$1''').",
"rclistfrom": "Ipakita ang bagong mga pagbabago simula sa $3 $2",
"rcshowhideminor": "$1 ang mga maliliit na pagbabago",
@@ -1131,11 +1132,11 @@
"recentchangeslinked-feed": "Kaugnay na mga pagbabago",
"recentchangeslinked-toolbox": "Kaugnay na mga pagbabago",
"recentchangeslinked-title": "Mga pagbabagong may kaugnayan sa \"$1\"",
- "recentchangeslinked-summary": "Nililista ng natatanging pahina na ito ang huling mga pagbabago na nakaugnay. Naka '''matapang na teksto''' ang iyong mga binabantayan.",
+ "recentchangeslinked-summary": "Ito ang tala ng mga pagbabagong ginawa kamakailan sa mga pahinang naka-link mula sa isang tinukoy na pahina (o sa mga kasapi ng isang tinukoy na kategorya). Makapal na teksto ang mga pahinang [[Special:Watchlist|iyong mga binabantayan]].",
"recentchangeslinked-page": "Pangalan ng pahina:",
"recentchangeslinked-to": "Ipakita ang mga pagbabago sa mga pahinang nakaugnay sa isang binigay na pahina sa halip",
- "upload": "Magkarga ng talaksan",
- "uploadbtn": "Magkarga ng talaksan",
+ "upload": "Mag-upload ng file",
+ "uploadbtn": "Mag-upload ng file",
"reuploaddesc": "Kanselahin/Iurong ang pagkarga at magbalik sa pormularyo ng pagkakarga",
"upload-tryagain": "Ipasa ang binagong paglalarawan ng talaksan",
"uploadnologin": "Hindi nakalagda",
@@ -1150,7 +1151,7 @@
"upload-prohibited": "Ipinagbabawal na mga uri ng talaksan: $1.",
"uploadlogpage": "Tala ng pagkarga",
"uploadlogpagetext": "Nasa ibaba ang tala ng pinakahuling mga karga ng talaksan.",
- "filename": "Pangalan ng talaksan",
+ "filename": "Pangalan ng file",
"filedesc": "Buod",
"fileuploadsummary": "Buod:",
"filereuploadsummary": "Mga pagbabago sa talaksan:",
@@ -1202,12 +1203,12 @@
"uploadscripted": "Naglalaman ang talaksan na ito ng HTML o kodigong script na maaaring mali ang pagkaintindi ng isang web browser.",
"uploadvirus": "Naglalaman ng virus ang talaksan! Mga detalye: $1",
"uploadjava": "Ang talaksan ay isang talaksang ZIP na naglalaman ng isang .klase ng talaksan. na Java. Hindi pinapayagan ang pagkakarga ng mga talaksang Java, dahil nakasasanhi sila ng mga paglilimita ng kaligtasan na kailangang lampasan.",
- "upload-source": "Batayang talaksan",
- "sourcefilename": "Pangalan ng panggagalingang talaksan:",
+ "upload-source": "Batayang file",
+ "sourcefilename": "Pangalan ng panggagalingang file:",
"sourceurl": "Batayang URL:",
- "destfilename": "Pangalan ng patutunguhang talaksan:",
+ "destfilename": "Pangalan ng patutunguhang file:",
"upload-maxfilesize": "Pinakamataas na sukat ng talaksan: $1",
- "upload-description": "Paglalarawan ng talaksan",
+ "upload-description": "Paglalarawan ng file",
"upload-options": "Ikargang pataas ang mga pagpipilian",
"watchthisupload": "Bantayan ang talaksang ito",
"filewasdeleted": "Isang talaksan na may ganitong pangalan ay naikarga dati at nabura. Kailangan mong tingnan ang $1 bago magpatuloy sa pagkarga nito muli.",
@@ -1300,8 +1301,8 @@
"upload_source_file": " (isang talaksan sa iyong kompyuter)",
"listfiles-summary": "Ipinapakita ng natatanging pahinang ito ang lahat ng naikargang mga talaksan.\nKapag sinala ng tagagamit, tanging mga talaksan lang kung saan nagkarga ang tagagamit na iyan ng pinaka kamakailang bersiyon ng talaksan ang ipinapakita.",
"listfiles_search_for": "Hanapin ang pangalan ng midya:",
- "imgfile": "talaksan",
- "listfiles": "Talaan ng talaksan",
+ "imgfile": "file",
+ "listfiles": "Talaan ng file",
"listfiles_thumb": "Kagyat",
"listfiles_date": "Petsa",
"listfiles_name": "Pangalan",
@@ -1311,22 +1312,22 @@
"listfiles_count": "Mga bersiyon",
"listfiles-latestversion-yes": "Oo",
"listfiles-latestversion-no": "Hindi",
- "file-anchor-link": "Talaksan",
- "filehist": "Kasaysayan ng talaksan",
+ "file-anchor-link": "File",
+ "filehist": "Kasaysayan ng file",
"filehist-help": "Pindutin ang isang petsa/oras para makita ang anyo ng talaksan noong panahong iyon.",
"filehist-deleteall": "burahin lahat",
"filehist-deleteone": "burahin",
"filehist-revert": "ibalik",
"filehist-current": "kasalukuyan",
"filehist-datetime": "Petsa/Oras",
- "filehist-thumb": "Kagyat (''thumbnail'')",
+ "filehist-thumb": "Thumbnail",
"filehist-thumbtext": "Kagyat (''thumbnail'') para sa bersyon mula noong $1",
"filehist-nothumb": "Walang kagyat (''thumbnail'')",
"filehist-user": "Tagagamit",
"filehist-dimensions": "Mga sukat",
"filehist-filesize": "Sukat ng talaksan",
"filehist-comment": "Komento",
- "imagelinks": "Paggamit ng talaksan",
+ "imagelinks": "Paggamit ng file",
"linkstoimage": "Nakakawing ang sumusunod na {{PLURAL:$1|pahina|$1 pahina}} sa talaksang ito:",
"linkstoimage-more": "Mahigit sa $1 {{PLURAL:$1|pahina|mga pahina}} ang nakakawing sa talaksang ito.\nIpinapakita sa sumusunod na talaan ang {{PLURAL:$1|unang pahina lamang|unang $1 mga pahina lamang}} na nakakawing sa talaksang ito.\nMayroong makukuhang [[Special:WhatLinksHere/$2|buong talaan]].",
"nolinkstoimage": "Walang pahinang nakakawing sa talaksang ito.",
@@ -1369,7 +1370,7 @@
"filedelete-reason-dropdown": "*Karaniwang mga dahilan ng pagbubura\n** Paglabag sa karapatang-ari\n** Nagkadalawang talaksan",
"filedelete-edit-reasonlist": "Baguhin ang mga dahilan ng pagbura",
"filedelete-maintenance": "Pansamantalang hindi pinagana ang pagbura at pagpapnumbalik ng mga talaksan habang nagpapanatili ng kaayusan.",
- "filedelete-maintenance-title": "Hindi mabura ang talaksan",
+ "filedelete-maintenance-title": "Hindi mabura ang file",
"mimesearch": "Maghanap ng MIME",
"mimesearch-summary": "Pinapagana ng pahinang ito ang pagsasala ng mga talaksan para sa kanyang uri ng MIME. Pagpapasok: uringnilalaman/mababangkabahaginguri, hal. image/jpeg
.",
"mimetype": "Uri ng MIME:",
@@ -1432,7 +1433,7 @@
"wantedcategories": "Kinakailangang mga kategorya",
"wantedpages": "Kinakailangang mga pahina",
"wantedpages-badtitle": "Hindi tanggap na pamagat sa loob ng pangkat ng kinalabasan: $1",
- "wantedfiles": "Ninanais na mga talaksan",
+ "wantedfiles": "Ninanais na mga file",
"wantedfiletext-cat": "Ang sumusunod na mga talaksan ay ginagamit ngunit hindi naman umiiral. Ang mga talaksang nagmumula sa mga repositoryong dayuhan ay maaariing nakalista kahit na umiiral. Ang anumang ganyang mga kamalian sa pagiging positibo ay aalisin. Bilang karagdagan, ang mga pahinang may nakabaon na mga talaksang hindi umiiral ay nakatala sa [[:$1]]",
"wantedfiletext-nocat": "Ginagamit ang sumusunod na mga talaksan ngunit hindi naman umiiral. Ang mga talaksan mula sa mga repositoryong dayuhan ay maaaring nakalista kahit na umiiral. Ang ganyang mga kamalian sa pagiging positibo ay aalisin.",
"wantedtemplates": "Ninanais na mga suleras",
@@ -1509,7 +1510,7 @@
"allpagesto": "Ipakita ang mga pahinang nagtatapos sa:",
"allarticles": "Lahat ng mga pahina",
"allinnamespace": "Lahat ng mga pahina ($1 espasyo ng pangalan)",
- "allpagessubmit": "Gawin",
+ "allpagessubmit": "Ipadala",
"allpagesprefix": "Ipakita ang mga pahinang may unlaping:",
"allpagesbadtitle": "Ang binagay na pamagat ng pahina ay hindi tinatanggap o may unlapi na tumuturo sa ibang wika o wiki. Maaaring naglalaman ito ng isa o higit pa na mga karakter na hindi ginagamit bilang pamagat.",
"allpages-bad-ns": "Wala sa {{SITENAME}} ang espasyo ng pangalang \"$1\".",
@@ -1520,8 +1521,6 @@
"categories": "Mga kategorya",
"categoriespagetext": "Naglalaman ang sumusunod na {{PLURAL:$1|kategorya|mga kategorya}} ng mga pahina o midya.\nHindi ipinapakita rito ang [[Special:UnusedCategories|mga kategoryang hindi ginagamit]].\nTingnan din ang [[Special:WantedCategories|ninanais na mga kategorya]].",
"categoriesfrom": "Ipakita ang mga kategoryang nagsisimula sa:",
- "special-categories-sort-count": "ayusin sa pamamagitan ng bilang",
- "special-categories-sort-abc": "ayusin sa pamamagitan ng alpabeto",
"deletedcontributions": "Naburang ambag ng tagagamit",
"deletedcontributions-title": "Naburang ambag ng tagagamit",
"sp-deletedcontributions-contribs": "mga ambag",
@@ -1654,7 +1653,7 @@
"delete-toobig": "May isang malaking kasaysayan ng pagbabago ang pahinang ito, mahigit sa $1 {{PLURAL:$1|pagbabago|mga pagbabago}}.\nIpanagbabawal ang pagbura ng ganyang mga pahina upang maiwasan ang hindi sinasadyang pagantala/paggambala sa {{SITENAME}}.",
"delete-warning-toobig": "May malaking kasaysayan ng pagbabago ang pahinang ito, mahigit sa $1 {{PLURAL:$1|pagbabago|mga pagbabago}}.\nMaaaring makagambala/makaabala sa pagpapatakbo sa kalipunan ng dato ng {{SITENAME}};\nmagpatuloy na may pagiingat.",
"rollback": "Mga pagbabagong may kaugnayan sa pagpapagulong na pabalik sa (mas) dati",
- "rollbacklink": "pagulunging pabalik sa (mas) dati",
+ "rollbacklink": "pagulunging pabalik sa dati",
"rollbacklinkcount": "pagulunging pabalik ang $1 {{PLURAL:$1|pagbabago|mga pagbabago}}",
"rollbacklinkcount-morethan": "pagulunging pabalik ang mahigit sa $1 {{PLURAL:$1|pagbabago|mga pagbabago}}",
"rollbackfailed": "Nabigo ang pagpapagulong na pabalik sa (mas) dati",
@@ -1767,6 +1766,7 @@
"contributions": "Mga ambag ng {{GENDER:$1|tagagamit}}",
"contributions-title": "Mga ambag ng tagagamit na si $1",
"mycontris": "Mga ambag",
+ "anoncontribs": "Mga inambag",
"contribsub2": "Para kay $1 ($2)",
"nocontribs": "Walang pagbabagong nakita sa binigay na kondisyon.",
"uctop": "(kasalukuyan)",
@@ -1796,7 +1796,7 @@
"nolinkshere-ns": "Walang pahinang nakakawing sa '''[[:$1]]''' mula sa loob ng napiling espasyo ng pangalan.",
"isredirect": "pahinang panturo/panuto",
"istemplate": "pagsasali",
- "isimage": "kawing sa talaksan",
+ "isimage": "link ng file",
"whatlinkshere-prev": "{{PLURAL:$1|nakaraang|nakaraang $1}}",
"whatlinkshere-next": "{{PLURAL:$1|susunod|susunod na $1}}",
"whatlinkshere-links": "â mga kawing",
@@ -1988,7 +1988,7 @@
"export-addcat": "Magdagdag",
"export-addnstext": "Magdagdag ng mga pahina mula sa espasyo ng pangalan:",
"export-addns": "Idagdag",
- "export-download": "Itala bilang talaksan",
+ "export-download": "Itala bilang file",
"export-templates": "Kabilang ang mga suleras",
"export-pagelinks": "Isama ang nakakawing na mga pahina magpahanggang sa isang lalim na:",
"allmessages": "Mga mensaheng pansistema",
@@ -2007,7 +2007,7 @@
"allmessages-filter-submit": "Gawin",
"allmessages-filter-translate": "Isalin",
"thumbnail-more": "Palakihin",
- "filemissing": "Nawawala ang talaksan",
+ "filemissing": "Nawawala ang file",
"thumbnail_error": "May kamalian sa paglikha ng kagyat (''thumbnail''): $1",
"djvu_page_error": "Wala sa nasasakupan ang pahinang DjVu",
"djvu_no_xml": "Hindi makuha ang XML para sa talaksang DjVu",
@@ -2024,7 +2024,7 @@
"import-interwiki-history": "Kopyahin ang lahat ng mga bersyon ng kasaysayan para sa pahinang ito",
"import-interwiki-templates": "Isama ang lahat ng mga suleras",
"import-interwiki-submit": "Mag-angkat",
- "import-upload-filename": "Pangalan ng talaksan:",
+ "import-upload-filename": "Pangalan ng file:",
"import-comment": "Komento:",
"importtext": "Pakiluwas ang talaksan magmula sa pinagmulang wiki na ginagamit ang [[Special:Export|kasangkapang pangluwas]]. \nSagipin mo ito sa iyong kompyuter at papaitaas na ikarga ito rito.",
"importstart": "Inaangkat na ang mga pahina...",
@@ -2061,10 +2061,6 @@
"import-logentry-upload-detail": "$1 {{PLURAL:$1|pagbabago|mga pagbabago}}",
"import-logentry-interwiki-detail": "$1 {{PLURAL:$1|pagbabago|mga pagbabago}} mula sa $2",
"javascripttest": "Pagsubok sa JavaScript",
- "javascripttest-pagetext-noframework": "Nakalaan ang pahinang ito para sa pagpapatakbo ng mga pagsubok ng JavaScript.",
- "javascripttest-pagetext-unknownframework": "Hindi napag-aalamang balangkas ng pagsubok na \"$1\".",
- "javascripttest-pagetext-frameworks": "Mangyaring pumili ng isa sa sumusunod na mga balangkas na pangsubok: $1",
- "javascripttest-pagetext-skins": "Pumili ng isang pabalat na patatakbuhan ng mga pagsubok:",
"javascripttest-qunit-intro": "Tingnan ang [$1 dokumentasyon ng pagsubok] sa mediawiki.org.",
"tooltip-pt-userpage": "Ang iyong pahina ng tagagamit",
"tooltip-pt-anonuserpage": "Ang pahina ng tagagamit para sa IP na iyong binabago bilang",
@@ -2073,6 +2069,7 @@
"tooltip-pt-preferences": "Mga nais ko",
"tooltip-pt-watchlist": "Ang talaan ng mga pagbabago sa mga pahinang binabantayan mo",
"tooltip-pt-mycontris": "Talaan ng mga ambag mo",
+ "tooltip-pt-anoncontribs": "Mga tala ng binago ng IP address na ito",
"tooltip-pt-login": "Hinihikayat kang lumagda; gayunpaman, hindi ito kinakailangan.",
"tooltip-pt-logout": "Umalis sa pagkaka-login",
"tooltip-pt-createaccount": "Hinihikayat kang lumikha ng kuwenta at lumigda; gayunpaman, hindi ito kinakailangan",
@@ -2105,10 +2102,10 @@
"tooltip-feed-atom": "Sindikasyong Atom para sa pahinang ito",
"tooltip-t-contributions": "Tunghayan ang tala ng mga ambag ng tagagamit na ito",
"tooltip-t-emailuser": "Magpadala ng isang e-liham sa tagagamit na ito",
- "tooltip-t-upload": "Magkarga ng mga talaksan",
+ "tooltip-t-upload": "Mag-upload ng mga file",
"tooltip-t-specialpages": "Tala ng lahat ng mga natatanging pahina",
"tooltip-t-print": "Bersiyong maililimbag ng pahinang ito",
- "tooltip-t-permalink": "Palagiang kawing sa bersyong ito ng pahina",
+ "tooltip-t-permalink": "Palagiang link sa bersyong ito ng pahina",
"tooltip-ca-nstab-main": "Tingnan ang pahina ng nilalaman",
"tooltip-ca-nstab-user": "Tingnan ang pahina ng tagagamit",
"tooltip-ca-nstab-media": "Tingnan ang pahina ng midya",
@@ -2162,7 +2159,7 @@
"spam_reverting": "Ibinabalik sa huling bersyon na 'di-naglalaman ng mga kawing sa $1",
"spam_blanking": "Lahat ng mga pagbabago ay naglalaman ng mga kawing sa $1, pagpapatlang",
"spam_deleting": "Lahat ng mga pagbabago ay naglalaman ng mga kawing sa $1, binubura",
- "simpleantispam-label": "Pagsusuring panlaban sa \"manlulusob\" (''spam'').\n'''HUWAG''' itong lagyan ng laman!",
+ "simpleantispam-label": "Pagsusuring laban sa spam.\nHUWAG itong lagyan ng laman!",
"pageinfo-title": "Kabatiran para sa \"$1\"",
"pageinfo-not-current": "Maaari lamang ipakita ang impormasyon para sa kasalukuyang rebisyon.",
"pageinfo-header-basic": "Saligang kabatiran",
@@ -2225,7 +2222,7 @@
"file-nohires": "Walang makuhang mas mataas na resolusyon (kalinawan).",
"svg-long-desc": "Talaksang SVG, nasa mga bilang na $1 Ã $2 mga piksel, sukat ng talaksan: $3",
"svg-long-desc-animated": "Animadong talaksang SVG, nasa mga bilang na $1 Ã $2 mga piksel, sukat ng talaksan: $3",
- "show-big-image": "Orihinal na talaksan",
+ "show-big-image": "Orihinal na file",
"show-big-image-preview": "Sukat ng paunang-tingin na ito: $1.",
"show-big-image-other": "Ibang {{PLURAL:$2|resolusyon|mga resolusyon}}: $1.",
"show-big-image-size": "$1 x $2 mga piksel",
@@ -2330,8 +2327,8 @@
"exif-colorspace": "Espasyo ng kulay",
"exif-componentsconfiguration": "Kahulugan ng bawat komponente",
"exif-compressedbitsperpixel": "Modalidad (paraan) ng pagsisiksik ng larawan",
- "exif-pixelydimension": "Lapad ng larawan",
- "exif-pixelxdimension": "Taas ng larawan",
+ "exif-pixelxdimension": "Lapad ng larawan",
+ "exif-pixelydimension": "Taas ng larawan",
"exif-usercomment": "Mga kumento ng tagagamit",
"exif-relatedsoundfile": "Kaugnay na talaksang nadidinig (audio)",
"exif-datetimeoriginal": "Petsa at oras ng paglikha ng mga dato",
@@ -2365,7 +2362,7 @@
"exif-subjectlocation": "Lokasyon ng paksa",
"exif-exposureindex": "Pang-antas o indeks ng pagkakalantad",
"exif-sensingmethod": "Paraang pandama",
- "exif-filesource": "Pinagmulang talaksan",
+ "exif-filesource": "Pinagmulang file",
"exif-scenetype": "Uri ng tagpuan",
"exif-customrendered": "Pagpoproseso ng pinasadyang larawan",
"exif-exposuremode": "Modalidad ng paglalantad",
@@ -2846,8 +2843,7 @@
"version-entrypoints-scriptpath": "[https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgScriptPath Landas ng panitik]",
"fileduplicatesearch": "Maghanap ng kaparehong mga talaksan",
"fileduplicatesearch-summary": "Maghanap ng mga kaparehong mga talaksan sa baba ng kanyang halaga ng ''hash''.",
- "fileduplicatesearch-legend": "Maghanap ng mga kapareho",
- "fileduplicatesearch-filename": "Pangalan ng talaksan:",
+ "fileduplicatesearch-filename": "Pangalan ng file:",
"fileduplicatesearch-submit": "Hanapin",
"fileduplicatesearch-info": "$1 Ã $2 pixel Laki ng talaksan: $3 Uri ng MIME: $4",
"fileduplicatesearch-result-1": "Walang katulad ang talaksan na \"$1\".",
@@ -2874,6 +2870,7 @@
"tags": "Tanggap na mga tatak ng pagbabago",
"tag-filter": "Pansala ng [[Special:Tags|tatak]]:",
"tag-filter-submit": "Pansala",
+ "tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1|Tatak|Mga tatak}}]]: $2)",
"tags-title": "Mga tatak",
"tags-intro": "Itinatala ng pahinang ito ang mga tatak na maaaring ipantatak ng sopwer sa isang pagbabago, at ang kanilang kahulugan.",
"tags-tag": "Tatakan ang pangalan",
diff --git a/languages/i18n/tr.json b/languages/i18n/tr.json
index f214131722..e29e5e533d 100644
--- a/languages/i18n/tr.json
+++ b/languages/i18n/tr.json
@@ -83,7 +83,8 @@
"Matma Rex",
"HakanIST",
"Imabadplayer",
- "Ä°nternion"
+ "Ä°nternion",
+ "Hbseren"
]
},
"tog-underline": "BaÄlantıların altını çiz:",
@@ -181,7 +182,7 @@
"may": "May",
"jun": "Haz",
"jul": "Tem",
- "aug": "Agu",
+ "aug": "AÄu",
"sep": "Eyl",
"oct": "Eki",
"nov": "Kas",
@@ -198,6 +199,8 @@
"october-date": "$1 Ekim",
"november-date": "$1 Kasım",
"december-date": "$1 Aralık",
+ "period-am": "ÃÃ",
+ "period-pm": "ÃS",
"pagecategories": "{{PLURAL:$1|Kategori|Kategoriler}}",
"category_header": "\"$1\" kategorisindeki sayfalar",
"subcategories": "Alt kategoriler",
@@ -512,7 +515,7 @@
"createacct-benefit-heading": "{{SITENAME}} sizin gibi insanlar tarafından geliÅtirilir.",
"createacct-benefit-body1": "{{PLURAL:$1|düzenleme|düzenleme}}",
"createacct-benefit-body2": "{{PLURAL:$1|madde|madde}}",
- "createacct-benefit-body3": "en son {{PLURAL:$1|katkıda bulunan|katkıda bulunan}} kiÅi sayısı",
+ "createacct-benefit-body3": "yakın zamanda {{PLURAL:$1|katkı yapan|katkı yapan}} kiÅi",
"badretype": "GirdiÄiniz Åifreler birbirleriyle uyuÅmuyor.",
"usernameinprogress": "Bu kullanıcı adı için bir hesap oluÅturma zaten sürüyor. Lütfen bekleyin.",
"userexists": "GirdiÄiniz kullanıcı adı zaten kullanımda.\nLütfen farklı bir kullanıcı adı seçiniz.",
@@ -705,7 +708,7 @@
"newarticle": "(Yeni)",
"newarticletext": "Henüz varolmayan bir sayfaya konulmuÅ bir baÄlantıya tıkladınız.\nSayfayı oluÅturmak için aÅaÄıdaki metin kutusunu kullanın. ([$1 yardım sayfasına] bakınız).\nBuraya yanlıÅlıkla geldiyseniz tarayıcınızın geri tuÅuna tıklayın.",
"anontalkpagetext": "----''Bu sayfa henüz bir kullanıcı hesabı oluÅturmamıŠveya hesabını kullanmayan bir anonim kullanıcının mesaj sayfasıdır. Bu nedenle bu kiÅiyi belirtmek için rakamsal IP adresini kullanmak zorundayız. Bu gibi IP adresleri birçok kullanıcı tarafından paylaÅılabilir. EÄer siz de bir anonim kullanıcıysanız ve size sizin ilginiz olmayan iletiler geliyorsa, lütfen diÄer anonim kullanıcılarla olabilecek olan karmaÅayı önlemek için [[Special:UserLogin/signup|bir hesap edinin]] veya [[Special:UserLogin|oturum açın]].''",
- "noarticletext": "Bu sayfa Åu anda boÅtur.\nBu baÅlıÄı [[Special:Search/{{PAGENAME}}|diÄer sayfalarda arayabilir]],\n[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} ilgili kayıtları arayabilir],\nya da bu sayfayı [{{fullurl:{{FULLPAGENAME}}|action=edit}} deÄiÅtirebilirsiniz] .",
+ "noarticletext": "Bu sayfa Åu anda boÅtur.\nBu baÅlıÄı [[Special:Search/{{PAGENAME}}|diÄer sayfalarda arayabilir]],\n[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} ilgili kayıtları arayabilir],\nya da bu sayfayı [{{fullurl:{{FULLPAGENAME}}|action=edit}} oluÅturabilirsiniz] .",
"noarticletext-nopermission": "Bu sayfa Åu anda boÅtur. \nBu baÅlıÄı [[Special:Search/{{PAGENAME}}|diÄer sayfalarda arayabilir]] ya da [{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} ilgili kayıtları tarayabilirsiniz] , fakat sayfayı oluÅturma yetkiniz bulunmamaktadır.",
"missing-revision": "\"{{FULLPAGENAME}}\" sayfasının #$1 sürümü yok.\n\nBu duruma genellikle silinmiÅ bir sayfaya eski tarihli bir baÄlantının takip edilmesi neden olur.\n\nDaha fazla detaylı bilgi [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} sayfasında bulunabilir].",
"userpage-userdoesnotexist": "\"$1 \" kullanıcı hesabı kayıtlı deÄil. Bu sayfayı oluÅturmak/deÄiÅtirmek istiyorsanız lütfen kontrol edin.",
@@ -1084,7 +1087,7 @@
"prefs-help-signature": "TartıÅma sayfalarındaki yorumlar \"~~~~ \" ile imzalanmalıdır, bu imzanıza ve zaman damgasına dönüÅtürülür.",
"badsig": "Geçersiz ham imza; HTML etiketlerini kontrol edin.",
"badsiglength": "İmzanız çok uzun.\n$1 {{PLURAL:$1|karakterin|karakterin}} altında olmalı.",
- "yourgender": "Cinsel kimlik?",
+ "yourgender": "Cinsiyet?",
"gender-unknown": "Açıklamak istemiyorum",
"gender-male": "Erkek",
"gender-female": "Kadın",
@@ -1323,7 +1326,7 @@
"rcshowhidemine": "Benim deÄiÅikliklerimi $1",
"rcshowhidemine-show": "göster",
"rcshowhidemine-hide": "gizle",
- "rcshowhidecategorization": "$1 sayfa kategorizasyonu",
+ "rcshowhidecategorization": "sayfa kategorizasyonunu $1",
"rcshowhidecategorization-show": "Göster",
"rcshowhidecategorization-hide": "Gizle",
"rclinks": "Son $2 günde yapılan son $1 deÄiÅikliÄi göster; $3",
@@ -1335,8 +1338,8 @@
"newpageletter": "Y",
"boteditletter": "b",
"number_of_watching_users_pageview": "[$1 izlenilen {{PLURAL:$1|kullanıcı|kullanıcı}}]",
- "rc_categories": "Kategorilere sınırla (\"|\" ile ayır)",
- "rc_categories_any": "Herhangi",
+ "rc_categories": "Kategorileri sınırla (\"|\" ile ayır)",
+ "rc_categories_any": "Seçilen herhangi bir",
"rc-change-size-new": "DeÄiÅiklikten sonraki boyut: $1 {{PLURAL:$1|bayt|bayt}}",
"newsectionsummary": "/* $1 */ yeni baÅlık",
"rc-enhanced-expand": "Ayrıntıları göster",
@@ -1798,8 +1801,6 @@
"categories-submit": "Göster",
"categoriespagetext": "AÅaÄıdaki {{PLURAL:$1|kategori|kategoriler}} sayfa veya ortam içerir.\n[[Special:UnusedCategories|Kullanılmayan kategoriler]] burada gösterilmemektedir.\nAyrıca [[Special:WantedCategories|Ä°stenen kategoriler]]'e bakınız.",
"categoriesfrom": "Åununla baÅlayan kategorileri görüntüle:",
- "special-categories-sort-count": "sayılarına göre sırala",
- "special-categories-sort-abc": "alfabetik olarak sırala",
"deletedcontributions": "Kullanıcının silinen katkıları",
"deletedcontributions-title": "Kullanıcının silinen katkıları",
"sp-deletedcontributions-contribs": "katkılar",
@@ -2175,10 +2176,10 @@
"blocklist-tempblocks": "Geçici engellemeleri gizle",
"blocklist-addressblocks": "Tek IP engellemelerini gizle",
"blocklist-rangeblocks": "Dizi bloklarını gizle",
- "blocklist-timestamp": "Tarih damgası",
+ "blocklist-timestamp": "Tarih",
"blocklist-target": "Hedef",
"blocklist-expiry": "BitiÅ tarihi",
- "blocklist-by": "Engeli koyan hizmetli",
+ "blocklist-by": "Engeli veren hizmetli",
"blocklist-params": "Engel parametreleri",
"blocklist-reason": "Gerekçe",
"ipblocklist-submit": "Ara",
@@ -2190,7 +2191,7 @@
"noautoblockblock": "otomatik engelleme devre dıÅı bırakıldı",
"createaccountblock": "hesap açımı engellendi",
"emailblock": "e-posta engellendi",
- "blocklist-nousertalk": "kendi tartıÅma sayfasını deÄiÅtiremez",
+ "blocklist-nousertalk": "kendi mesaj sayfasını deÄiÅtiremez",
"ipblocklist-empty": "Engelleme listesi boÅ.",
"ipblocklist-no-results": "İstenen IP adresi ya da kullanıcı adı engellenmedi.",
"blocklink": "engelle",
@@ -2210,7 +2211,7 @@
"block-log-flags-nocreate": "hesap yaratımı engellendi",
"block-log-flags-noautoblock": "Otomatik engelleme iptal edildi",
"block-log-flags-noemail": "e-posta engellendi",
- "block-log-flags-nousertalk": "kendi tartıÅma sayfasını deÄiÅtiremez",
+ "block-log-flags-nousertalk": "kendi mesaj sayfasını deÄiÅtiremez",
"block-log-flags-angry-autoblock": "geliÅmiÅ oto-engelleme devrede",
"block-log-flags-hiddenname": "kullanıcı adı gizli",
"range_block_disabled": "Hizmetliler için aralık engellemesi oluÅturma yeteneÄi devre dıÅı.",
@@ -2400,11 +2401,7 @@
"import-logentry-upload-detail": "$1 {{PLURAL:$1|revizyon|revizyon}} içe aktarıldı",
"import-logentry-interwiki-detail": "$2 sayfasından $1 {{PLURAL:$1|revizyon|revizyon}} içe aktarıldı",
"javascripttest": "JavaScript denemesi",
- "javascripttest-pagetext-noframework": "Bu sayfa JavaScript testleri çalıÅtırmak için ayrılmıÅtır.",
- "javascripttest-pagetext-unknownframework": "Bilinmeyen test çerçevesi \"$1\".",
"javascripttest-pagetext-unknownaction": "Bilinmeyen eylem \"$1\".",
- "javascripttest-pagetext-frameworks": "Lütfen aÅaÄıdaki test çerçevelerinden birini seçin: $1",
- "javascripttest-pagetext-skins": "Testleri koÅmak için bir tema seçin:",
"javascripttest-qunit-intro": "mediawiki.org üzerinden [$1 deneme belgelerine] bakınız.",
"tooltip-pt-userpage": "{{GENDER:|Kullanıcı}} sayfanız",
"tooltip-pt-anonuserpage": "IP adresine ait bir kullanıcı sayfasını düzenliyorsunuz",
@@ -2662,8 +2659,8 @@
"exif-colorspace": "Renk aralıÄı",
"exif-componentsconfiguration": "Her bileÅenin anlamı",
"exif-compressedbitsperpixel": "Resim sıkıÅtırma biçimi",
- "exif-pixelydimension": "Resim geniÅliÄi",
- "exif-pixelxdimension": "Resim yüksekliÄi",
+ "exif-pixelxdimension": "Resim geniÅliÄi",
+ "exif-pixelydimension": "Resim yüksekliÄi",
"exif-usercomment": "Kullanıcı yorumu",
"exif-relatedsoundfile": "Ä°liÅkin ses dosyası",
"exif-datetimeoriginal": "Verinin ilk yaratılma zamanı",
@@ -3126,7 +3123,6 @@
"version-libraries-description": "Açıklama",
"version-libraries-authors": "Yazarlar",
"redirect": "Dosya, kullanıcı, sayfa ya da revizyon kimliÄi ile yönlendirme",
- "redirect-legend": "Bir dosya veya sayfaya yönlendirme",
"redirect-summary": "Bu özel sayfa sizi bir dosya (dosya adı verilen), bir sayfa (bir revizyon ya da sayfa ID'si verilen) veya bir kullanıcı sayfasının (sayısal kullanıcı kimliÄi verilen) adresine yönlendirir. Kullanım: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], ya da [[{{#Special:Redirect}}/user/101]].",
"redirect-submit": "Git",
"redirect-lookup": "Ara:",
@@ -3138,7 +3134,6 @@
"redirect-not-exists": "DeÄer bulunamadı",
"fileduplicatesearch": "Benzer dosyaları ara",
"fileduplicatesearch-summary": "SaÄlama deÄeri tabanında benzer dosyaları ara.",
- "fileduplicatesearch-legend": "Bir benzerini ara",
"fileduplicatesearch-filename": "Dosya adı:",
"fileduplicatesearch-submit": "Ara",
"fileduplicatesearch-info": "$1 Ã $2 piksel Dosya boyutu: $3 MIME tipi: $4",
@@ -3310,7 +3305,7 @@
"revdelete-unrestricted": "hizmetliler için kaldırılmıŠkısıtlamalar",
"logentry-block-block": "$1 {{GENDER:$2|engelledi}} {{GENDER:$4|$3}} engelleme süresi: $5 $6",
"logentry-block-unblock": "$1 kullanıcısının {{GENDER:$2|engeli kaldırıldı}} {{GENDER:$4|$3}}",
- "logentry-block-reblock": "$1 {{GENDER:$2|changed}} block settings for {{GENDER:$4|$3}} engelleme süresi $5 $6",
+ "logentry-block-reblock": "$1, {{GENDER:$4|$3}} kullanıcısının engellenme süresini $5 $6 olarak {{GENDER:$2|deÄiÅtirdi}}",
"logentry-suppress-block": "{{GENDER:$4|$3}} $1 tarafından {{GENDER:$2|engellendi}} ZamanaÅımı: $5 $6",
"logentry-suppress-reblock": "$1 {{GENDER:$2|changed}} block settings for {{GENDER:$4|$3}} engelleme süresi $5 $6",
"logentry-import-upload": "$1 dosya yükleme ile {{GENDER:$2|içe aktardı}}: $3",
@@ -3504,6 +3499,7 @@
"special-characters-group-ipa": "UFA",
"special-characters-group-symbols": "Simgeler",
"special-characters-group-greek": "Yunan",
+ "special-characters-group-greekextended": "GeniÅletilmiÅ Yunanca",
"special-characters-group-cyrillic": "Kiril",
"special-characters-group-arabic": "Arap",
"special-characters-group-arabicextended": "GeniÅletilmiÅ Arapça",
@@ -3526,5 +3522,25 @@
"mw-widgets-titleinput-description-redirect": "$1'e yönlendirildi",
"sessionprovider-mediawiki-session-cookiesessionprovider": "çerez tabanlı oturumlar",
"sessionprovider-nocookies": "Ãerezler devre dıÅı olabilir. Ãerkezlerin aktif olduÄuna emin olun ve yeniden baÅlatin.",
- "randomrootpage": "Rastgele kök sayfası"
+ "randomrootpage": "Rastgele kök sayfası",
+ "log-action-filter-block": "Blok türü:",
+ "log-action-filter-delete": "Silme türü:",
+ "log-action-filter-patrol": "Devriye türü:",
+ "log-action-filter-protect": "Koruma tipi:",
+ "log-action-filter-upload": "Yükleme türü:",
+ "log-action-filter-all": "Tümü",
+ "log-action-filter-block-block": "Blok",
+ "log-action-filter-block-reblock": "Blok deÄiÅtirme",
+ "log-action-filter-block-unblock": "Engeli kaldır",
+ "log-action-filter-delete-delete": "Sayfa silme",
+ "log-action-filter-delete-restore": "Sayfa silmeyi geri al",
+ "log-action-filter-delete-event": "Günlük silme",
+ "log-action-filter-delete-revision": "Gözden geçirmenin silinmesi",
+ "log-action-filter-patrol-patrol": "Manuel devriye",
+ "log-action-filter-patrol-autopatrol": "Otomatik devriye",
+ "log-action-filter-protect-protect": "Koruma",
+ "log-action-filter-protect-modify": "Koruma deÄiÅikliÄi",
+ "log-action-filter-protect-unprotect": "Korunmayan",
+ "log-action-filter-upload-upload": "Yeni yükleme",
+ "log-action-filter-upload-overwrite": "Yeniden yükle"
}
diff --git a/languages/i18n/tt-cyrl.json b/languages/i18n/tt-cyrl.json
index ed1576b416..96f7c0bb6a 100644
--- a/languages/i18n/tt-cyrl.json
+++ b/languages/i18n/tt-cyrl.json
@@ -432,6 +432,7 @@
"badretype": "ÐеÑÑелгÓн ÑеÑÑүзлÓÑ Ð±ÐµÑ Ò¯Ðº Ñүгел.",
"userexists": "ÐеÑÑелгÓн иÑем кÑлланÑла.\nÐинһаÑ, баÑка иÑем ÑайлагÑз.",
"loginerror": "ÐеÑÒ¯ Ñ
аÑаÑÑ",
+ "createacct-error": "ХиÑап ÑзмазÑн бÑлдÑÑÑда Ñ
аÑа киÑÑе",
"createaccounterror": "ХиÑап ÑзмаÑÑн Ñөзеп бÑлмÑй: $1",
"nocookiesnew": "ÐÑлланÑÑÑ ÑеÑкÓлгÓн, лÓкин үз Ñ
иÑап ÑзмаÑÑ Ð±ÐµÐ»Óн кеÑмÓгÓн. {{SITENAME}} кÑлланÑÑÑÐ½Ñ ÑÐ°Ð½Ñ Ó©Ñен «cookies» кÑллана. Ð¡ÐµÐ·Ð´Ó Â«cookies» ÑÑелган. ÐинһаÑ, баÑÑа алаÑÐ½Ñ ÑÓ©Ñ
ÑÓÑ Ð¸Ñегез, аннан иÑем Ò»Óм ÑеÑÑүз белÓн кеÑегез.",
"nocookieslogin": "{{SITENAME}} кÑлланÑÑÑÐ½Ñ ÑÐ°Ð½Ñ Ó©Ñен «cookies» кÑллана. Сез алаÑÐ½Ñ ÑүндеÑгÓнÑез. ÐинһаÑ, алаÑÐ½Ñ ÐºÐ°Ð±ÑзÑп, Ñңадан кеÑегез.",
@@ -454,7 +455,7 @@
"noemail": "$1 иÑемле кÑлланÑÑÑ Ó©Ñен ÑлекÑÑон поÑÑа адÑеÑÑ ÑзÑлмаган.",
"noemailcreate": "Сез дөÑÐµÑ e-mail адÑеÑÑ ÐºÒ¯ÑÑÓÑеÑÐ³Ó ÑиеÑ",
"passwordsent": "Яңа ÑеÑÑүз $1 иÑемле кÑлланÑÑÑнÑÒ£ ÑлекÑÑон поÑÑа адÑеÑÑна ÒибÓÑелде.\n\nÐинһаÑ, ÑеÑÑүзне алгаÑ, ÑиÑÑемага Ñңадан кеÑегез.",
- "blocked-mailpassword": "Сезнең IP адÑеÑÑгÑз белÓн биÑлÓÑ Ò¯Ð·Ð³ÓÑÑеп Ò»Óм ÑеÑÑүзне ÑңаÑÑÑп бÑлмÑй.",
+ "blocked-mailpassword": "Сезнең IP адÑеÑÑгÑздан ÑөзÓÑмÓлÓÑ ÐºÐµÑÑÒ¯ ÑÑелган. ÐиÑÓкÑез ÑÑлÓÑдÓн ÑÐ°ÐºÐ»Ð°Ñ Ó©Ñен Ð±Ñ IP адÑÐµÑ Ó©Ñен ÑÑлай Ñк ÑеÑÑүзне кайÑаÑÑ Ð¼Ó©Ð¼ÐºÐ¸Ð½Ð»ÐµÐ³Ðµ Ð´Ó ÑбÑлган.",
"eauthentsent": "ÐÒ¯ÑÑÓÑелгÓн ÑлекÑÑон поÑÑа адÑеÑÑна үзгÓÑÑүлÓÑне ÑаÑÐ»Ð°Ñ Ó©Ñен Ñ
Ð°Ñ ÒибÓÑелде. ÐилÓÑÓкÑÓÐ´Ó Ñ
аÑÐ»Ð°Ñ ÐºÐ°Ð±Ñл иÑÒ¯ Ó©Ñен, ÑаÑлаÑÐ½Ñ Ò¯Ñегез.",
"throttled-mailpassword": "СеÑÑүзне ÑлекÑÑон поÑÑага ÒибÓÑÒ¯ гамÓлен Ñез {{PLURAL:$1|1=ÑÐ¾Ò£Ð³Ñ $1 ÑÓгаÑÑ}} ÑÑÐµÐ½Ð´Ó ÐºÑлландÑгÑз инде. ÐÑ Ð³Ð°Ð¼Óлне ÑвÑзлаÑÑа кÑлланÑÐ½Ñ ÐºÐ¸ÑÓÑÒ¯ макÑаÑÑннан Ð°Ð½Ñ $1 {{PLURAL:$1|ÑÓгаÑÑ}} аÑалÑгÑнда Ð±ÐµÑ Ð³ÐµÐ½Ó ÑапкÑÑ Ð±Ð°ÑкаÑÑп бÑла.",
"mailerror": "Ð¥Ð°Ñ ÒибÓÑÒ¯ Ñ
аÑаÑÑ: $1",
@@ -499,6 +500,7 @@
"botpasswords-label-restrictions": "ÐÑÐ»Ð»Ð°Ð½Ñ ÑиклÓүлÓÑе:",
"botpasswords-label-grants-column": "Ð Ó©Ñ
ÑÓÑ",
"botpasswords-bad-appid": "ÐÑамаÑÑ Â«$1» бÑлган Ð±Ð¾Ñ Ð¸Ñеме ÑÑамÑй.",
+ "botpasswords-created-title": "ÐÐ¾Ñ ÑеÑÑүзе бÑлдÑÑÑлдÑ",
"resetpass_forbidden": "СеÑÑүз үзгÓÑÑÐµÐ»Ó Ð°Ð»Ð¼Ñй",
"resetpass-no-info": "ÐÑ Ð±Ð¸Ñне каÑÐ°Ñ Ó©Ñен Ñез ÑиÑÑемага үз Ñ
иÑап ÑзмагÑз ÑÑдÓÐ¼ÐµÐ½Ð´Ó ÐºÐµÑеÑÐ³Ó ÑиеÑ.",
"resetpass-submit-loggedin": "СеÑÑүзне үзгÓÑÑÒ¯",
@@ -1315,8 +1317,6 @@
"categories": "ТөÑкемнÓÑ",
"categories-submit": "ÐÒ¯ÑÑÓÑ",
"categoriespagetext": "{{PLURAL:$1|1=Óлеге ÑÓ©Ñкем үз Ó©ÑенÓ|Óлеге ÑÓ©ÑкемнÓÑ Ò¯Ð· Ó©ÑенÓ}} биÑлÓÑне Ò»Óм медиа-ÑайллаÑÐ½Ñ Ð°Ð»Ð°.\nÐÑÑа [[Special:UnusedCategories|кÑлланÑлмаган ÑÓ©ÑкемнÓÑ]] кÓÑÑÓÑелгÓн.\nШÑлай Ñк [[Special:WantedCategories|киÑÓкле ÑÓ©ÑкемнÓÑ Ð¸ÑемлегендÓ]] каÑагÑз.",
- "special-categories-sort-count": "иÑÓп бÑенÑа ÑÓÑÑиплÓÒ¯",
- "special-categories-sort-abc": "ÓлиÑба бÑенÑа ÑÓÑÑиплÓÒ¯",
"deletedcontributions": "ÐÑлланÑÑÑнÑÒ£ беÑеÑелгÓн кеÑÑеме",
"deletedcontributions-title": "ÐеÑеÑелгÓн кеÑÑем",
"sp-deletedcontributions-contribs": "кеÑÑем",
@@ -1647,7 +1647,6 @@
"importnopages": "ÐмпоÑÑÐ»Ð°Ñ Ó©Ñен биÑлÓÑ Ñк.",
"importlogpage": "ÐеÑÑÒ¯ көндÓлеге",
"javascripttest": "JavaScript ÑикÑеÑÒ¯",
- "javascripttest-pagetext-noframework": "Óлеге Ð±Ð¸Ñ JavaScript ÑеÑÑлаÑÑн аÑÑ Ó©Ñен ÑÑалган.",
"tooltip-pt-userpage": "{{GENDER:|ÐÑлланÑÑÑ}} биÑегез",
"tooltip-pt-mytalk": "ÐÓÑ
ÓÑ {{GENDER:|биÑегез}}",
"tooltip-pt-preferences": "{{GENDER:|ÐөйлÓнмÓлÓÑегез}}",
@@ -1718,6 +1717,7 @@
"creditspage": "Ð ÓÑ
мÓÑлÓÑ",
"spamprotectiontitle": "Спам ÑилÑÑÑÑ",
"simpleantispam-label": "ÐнÑи-Ñпам ÑикÑеÑÓ.\nÐÐ¾Ð½Ñ Ð¢Ð£Ð¢Ð«Ð ÐÐÐЫÐ! ",
+ "pageinfo-title": "«$1» бÑенÑа мÓгÑлүмаÑ",
"pageinfo-header-basic": "Төп мÓгÑлүмаÑ",
"pageinfo-header-edits": "ҮзгÓÑÑүлÓÑ ÑаÑиÑ
Ñ",
"pageinfo-header-restrictions": "ÐиÑне ÑклаÑ",
@@ -1817,8 +1817,8 @@
"exif-colorspace": "ТөÑлÓÑ ÑиÑÓлеге",
"exif-componentsconfiguration": "ТөÑлÓÑ ÑөзелеÑенең конÑигÑÑаÑиÑÑе",
"exif-compressedbitsperpixel": "ÐÑÑÑлÑдан Ñоң ÑÓ©Ñнең ÑиÑÓнлеге",
- "exif-pixelydimension": "Ð ÓÑемнең киңлеге",
- "exif-pixelxdimension": "Ð ÓÑемнең биеклеге",
+ "exif-pixelxdimension": "Ð ÓÑемнең киңлеге",
+ "exif-pixelydimension": "Ð ÓÑемнең биеклеге",
"exif-usercomment": "Ó¨ÑÑÓÐ¼Ó Òавап",
"exif-relatedsoundfile": "ТавÑÑ ÑÐ°Ð¹Ð»Ñ ÒавабÑ",
"exif-datetimeoriginal": "ЧÑн вакÑÑÑ",
diff --git a/languages/i18n/tt-latn.json b/languages/i18n/tt-latn.json
index a78db9e8a0..246140549c 100644
--- a/languages/i18n/tt-latn.json
+++ b/languages/i18n/tt-latn.json
@@ -1037,8 +1037,6 @@
"allpagesprefix": "AlquÅımçalı bitlärne kürsätü:",
"categories": "Törkemnär",
"categoriespagetext": "{{PLURAL:$1|Ãlege törkem üz öçenä|Ãlege törkemnär üz öçenä}} bitlärne häm media-fayllarnı ala.\nAsta [[Special:UnusedCategories|qullanılmaÄan törkemnär]] kärsätelgän.\nÅulay uq [[Special:WantedCategories|kiräkle törkemnär isemlegendä]] qaraÄız.",
- "special-categories-sort-count": "isäp buyınça tärtipläw",
- "special-categories-sort-abc": "älifba buyınça tärtipläw",
"sp-deletedcontributions-contribs": "kertem",
"linksearch": "TıÅqı sıltamalar",
"linksearch-pat": "Ezläw öçen ürnäk:",
@@ -1420,8 +1418,8 @@
"exif-colorspace": "Töslär tirälege",
"exif-componentsconfiguration": "Töslär tözeleÅeneñ konfiguratsiäse",
"exif-compressedbitsperpixel": "Qısıludan soñ tösneñ tiränlege",
- "exif-pixelydimension": "Räsemneñ tulı bieklege",
- "exif-pixelxdimension": "Räsemneñ tulı kiñlege",
+ "exif-pixelxdimension": "Räsemneñ tulı bieklege",
+ "exif-pixelydimension": "Räsemneñ tulı kiñlege",
"exif-usercomment": "Ãstämä cawap",
"exif-relatedsoundfile": "TawıŠfaylı cawabı",
"exif-datetimeoriginal": "Ãın waqıtı",
diff --git a/languages/i18n/ug-arab.json b/languages/i18n/ug-arab.json
index 2612631a74..ae20f1dc18 100644
--- a/languages/i18n/ug-arab.json
+++ b/languages/i18n/ug-arab.json
@@ -1498,8 +1498,6 @@
"categories": "تÛرÙÛر",
"categoriespagetext": "تÛÛÛÙدÙÙÙ {{PLURAL:$1|ÙاتÛÚ¯ÙرÙÙÛ|ÙاتÛÚ¯ÙرÙÙÛ}}Ø¯Û Ø¨Ûت ÙاÙÙ ÛاسÙØªÛ Ø¨Ø§Ø±.\n[[Special:UnusedCategories|ئÙØ´ÙÙتÙÙÙ
ÙÚ¯ÛÙ ÙاتÛÚ¯ÙرÙÙÛ]] Ø¨Û Ø¬Ø§Ùدا ÙÛرسÙتÙÙÙ
ÛÙدÛ.\nØ´ÛÙÙÚ Ø¨ÙÙÛ٠بÙÙÙÛ [[Special:WantedCategories|ÙازÙÙ
ÙÙÙ ÙاتÛÚ¯ÙرÙÙÛ]] ÙÙ ÙÛرÛÚ.",
"categoriesfrom": "Ø¨Û ÙاتÛÚ¯ÙرÙÙÛدÙ٠باشÙاÙغاÙÙÙ ÙÛرسÛت:",
- "special-categories-sort-count": "ساÙ٠بÙÙÙÚÛ ØªÛرتÙÙ¾ÙÛ",
- "special-categories-sort-abc": "ئÛÙÙÙ¾Ø¨Û Ø¨ÙÙÙÚÛ ØªÛرتÙÙ¾ÙÛ",
"deletedcontributions": "ئÛÚÛرÛÙÚ¯Û٠ئÙØ´ÙÛتÙÛÚ٠تÛÚ¾Ù¾ÙسÙ",
"deletedcontributions-title": "ئÛÚÛرÛÙÚ¯Û٠ئÙØ´ÙÛتÙÛÚ٠تÛÚ¾Ù¾ÙسÙ",
"sp-deletedcontributions-contribs": "تÛÚ¾Ù¾Û",
@@ -2043,10 +2041,6 @@
"import-logentry-upload-detail": "$1 {{PLURAL:$1|تÛزÙتÙØ´|تÛزÙتÙØ´}}",
"import-logentry-interwiki-detail": "$2 دÙÙ ÙÛÙÚ¯ÛÙ $1 {{PLURAL:$1|تÛزÙتÙØ´|تÛزÙتÙØ´}}",
"javascripttest": "JavaScript سÙÙاش",
- "javascripttest-pagetext-noframework": "Ø¨Û Ø¨Ûت JavaScript ئÙجرا ÙÙÙÙÙ¾ سÙÙاشÙا ÙاÙدÛرÛÙغاÙ.",
- "javascripttest-pagetext-unknownframework": "ÙÙÚÛ٠سÙÙا٠ÙÛرÛÙÙ
ا \"$1\".",
- "javascripttest-pagetext-frameworks": "تÛÛÛÙدÙÙÙ ÙÛرÛÙÙ
ÙدÙ٠بÙرÙ٠تاÙÙاÚ: $1",
- "javascripttest-pagetext-skins": "بÙر تÛØ±Û ØªØ§ÙÙاپ سÙÙاÙÙ٠ئÙجرا ÙÙÙÙÚ:",
"javascripttest-qunit-intro": "mediawiki.org دÙÙÙ [$1 سÙÙاش ÙÙÙÙاÙÙ
ÙسÙ]ÙÙ ÙÛرÛÚ.",
"tooltip-pt-userpage": "ئÙØ´ÙÛتÙÛÚ٠بÛتÙÚÙز",
"tooltip-pt-anonuserpage": "Ø¨Û Ø¨ÛÙÛتÙ٠تÛھرÙرÙÙÚ¯ÛÙØ¯Û Ø¦ÙØ´ÙÛتÙÛÙ IP Ù
اس ÙÛÙÚ¯Û٠ئÙØ´ÙÛتÙÛÚ٠بÛتÙ",
@@ -2323,8 +2317,8 @@
"exif-colorspace": "رÛÚ Ø¨ÙØ´ÙÛÙÙ",
"exif-componentsconfiguration": "Ú¾Ûر بÙر تÛرÙÙÙ¾ÙÙÚ Ø³Ø§ÙÙ
ÙÙÙ",
"exif-compressedbitsperpixel": "سÛرÛت پرÙسÙاش Ø´ÛÙÙÙ",
- "exif-pixelydimension": "سÛرÛت ÙÛÚÙÙÙÙ",
- "exif-pixelxdimension": "سÛرÛت ئÛÚ¯ÙزÙÙÙÙ",
+ "exif-pixelxdimension": "سÛرÛت ÙÛÚÙÙÙÙ",
+ "exif-pixelydimension": "سÛرÛت ئÛÚ¯ÙزÙÙÙÙ",
"exif-usercomment": "ئÙØ´ÙÛتÙÛÚ٠ئÙزاھاتÙ",
"exif-relatedsoundfile": "Ù
ÛÙاسÙÛÛتÙÙ٠ئÛÙ Ú¾ÛججÙتÙ",
"exif-datetimeoriginal": "ساÙÙÙÙ Ù
ÛÙÛÙ
ات ÙÛرÛÙغا٠ÚÛسÙا ÛÛ ÛاÙÙت",
@@ -2733,7 +2727,6 @@
"redirect-not-exists": "ÙÙÙ
Ù
Ùت٠تÛÙ¾ÙÙÙ
ÙدÙ",
"fileduplicatesearch": "تÛÙرار Ú¾ÛججÛت ئÙزدÛ",
"fileduplicatesearch-summary": "ÚاÚÙ
ا (hash) ÙÙÙ
Ù
ÙتÙÚ¯Û Ø¦Ø§Ø³Ø§Ø³Û٠تÛÙرار Ú¾ÛججÛت ئÙزدÛ.",
- "fileduplicatesearch-legend": "تÛÙرار Ú¾ÛججÛت ئÙزدÛ",
"fileduplicatesearch-filename": ":Ú¾ÛججÛت ئاتÙ",
"fileduplicatesearch-submit": "ئÙزدÛ",
"fileduplicatesearch-info": "$1 à $2 ÙÛÙتا Ú¾ÛججÛت ÚÙÚÙÛÙÙ: $3 MIME تÙÙ¾Ù: $4",
diff --git a/languages/i18n/uk.json b/languages/i18n/uk.json
index 6fc58bad9f..84d2d2e77e 100644
--- a/languages/i18n/uk.json
+++ b/languages/i18n/uk.json
@@ -64,7 +64,8 @@
"Translatemyname",
"Dars",
"Mix Gerder",
- "E.belykh"
+ "E.belykh",
+ "Visem"
]
},
"tog-underline": "ÐÑдкÑеÑлÑÐ²Ð°Ð½Ð½Ñ Ð¿Ð¾ÑиланÑ:",
@@ -82,12 +83,13 @@
"tog-watchdefault": "ÐодаваÑи змÑÐ½ÐµÐ½Ñ Ð¼Ð½Ð¾Ñ ÑÑоÑÑнки Ñа Ñайли до мого ÑпиÑÐºÑ ÑпоÑÑеÑеженнÑ",
"tog-watchmoves": "ÐодаваÑи пеÑÐµÐ¹Ð¼ÐµÐ½Ð¾Ð²Ð°Ð½Ñ Ð¼Ð½Ð¾Ñ ÑÑоÑÑнки Ñа Ñайли до мого ÑпиÑÐºÑ ÑпоÑÑеÑеженнÑ",
"tog-watchdeletion": "ÐодаваÑи вилÑÑÐµÐ½Ñ Ð¼Ð½Ð¾Ñ ÑÑоÑÑнки Ñа Ñайли до мого ÑпиÑÐºÑ ÑпоÑÑеÑеженнÑ",
+ "tog-watchuploads": "ÐодаваÑи до мого ÑпиÑÐºÑ ÑпоÑÑеÑÐµÐ¶ÐµÐ½Ð½Ñ Ð½Ð¾Ð²Ñ Ñайли, заванÑÐ°Ð¶ÐµÐ½Ñ Ð¼Ð½Ð¾Ñ",
"tog-watchrollback": "ÐодаваÑи вÑдкоÑÐµÐ½Ñ Ð¼Ð½Ð¾Ñ ÑÑоÑÑнки до мого ÑпиÑÐºÑ ÑпоÑÑеÑеженнÑ",
"tog-minordefault": "ÐознаÑаÑи вÑÑ Ð·Ð¼Ñни Ñк незнаÑÐ½Ñ Ð·Ð° замовÑÑваннÑм",
"tog-previewontop": "ÐоказÑваÑи попеÑеднÑй пеÑеглÑд пеÑед вÑкном ÑедагÑваннÑ, а не пÑÑлÑ",
"tog-previewonfirst": "ÐоказÑваÑи попеÑеднÑй пеÑеглÑд пÑд ÑÐ°Ñ Ð¿ÐµÑÑого ÑедагÑваннÑ",
"tog-enotifwatchlistpages": "ÐовÑдомлÑÑи елекÑÑÐ¾Ð½Ð½Ð¾Ñ Ð¿Ð¾ÑÑÐ¾Ñ Ð¿Ñо змÑÐ½Ñ ÑÑоÑÑнки або ÑÐ°Ð¹Ð»Ñ Ð· мого ÑпиÑÐºÑ ÑпоÑÑеÑеженнÑ",
- "tog-enotifusertalkpages": "ÐовÑдомлÑÑи елекÑÑÐ¾Ð½Ð½Ð¾Ñ Ð¿Ð¾ÑÑÐ¾Ñ Ð¿Ñо змÑни моÑÑ ÑÑоÑÑнки обговоÑеннÑ",
+ "tog-enotifusertalkpages": "ÐовÑдомлÑÑи елекÑÑÐ¾Ð½Ð½Ð¾Ñ Ð¿Ð¾ÑÑÐ¾Ñ Ð¿Ñо змÑни на моÑй ÑÑоÑÑнÑÑ Ð¾Ð±Ð³Ð¾Ð²Ð¾ÑеннÑ",
"tog-enotifminoredits": "ÐадÑилаÑи Ð¼ÐµÐ½Ñ ÐµÐ»ÐµÐºÑÑонного лиÑÑа навÑÑÑ Ð¿Ñи незнаÑниÑ
ÑедагÑваннÑÑ
ÑÑоÑÑнок Ñа ÑайлÑв",
"tog-enotifrevealaddr": "ÐоказÑваÑи Ð¼Ð¾Ñ Ð¿Ð¾ÑÑÐ¾Ð²Ñ Ð°Ð´ÑеÑÑ Ð² повÑдомленнÑÑ
",
"tog-shownumberswatching": "ÐоказÑваÑи ÑиÑло коÑиÑÑÑваÑÑв, ÑÐºÑ Ð´Ð¾Ð´Ð°Ð»Ð¸ ÑÑоÑÑÐ½ÐºÑ Ð´Ð¾ Ñвого ÑпиÑÐºÑ ÑпоÑÑеÑеженнÑ",
@@ -179,8 +181,8 @@
"october-date": "$1 жовÑнÑ",
"november-date": "$1 лиÑÑопада",
"december-date": "$1 гÑÑднÑ",
- "period-am": "AM",
- "period-pm": "PM",
+ "period-am": "ÑанкÑ",
+ "period-pm": "пополÑднÑ",
"pagecategories": "{{PLURAL:$1|1=ÐаÑегоÑÑÑ|ÐаÑегоÑÑÑ}}",
"category_header": "СÑоÑÑнки в каÑегоÑÑÑ Â«$1»",
"subcategories": "ÐÑдкаÑегоÑÑÑ",
@@ -188,7 +190,7 @@
"category-empty": "''Ð¦Ñ ÐºÐ°ÑегоÑÑÑ Ð·Ð°Ñаз поÑожнÑ.''",
"hidden-categories": "{{PLURAL:$1|1=ÐÑиÑ
ована каÑегоÑÑÑ|ÐÑиÑ
Ð¾Ð²Ð°Ð½Ñ ÐºÐ°ÑегоÑÑÑ}}",
"hidden-category-category": "ÐÑиÑ
Ð¾Ð²Ð°Ð½Ñ ÐºÐ°ÑегоÑÑÑ",
- "category-subcat-count": "{{PLURAL:$2|Ð¦Ñ ÐºÐ°ÑегоÑÑÑ Ð¼Ð°Ñ ÑÑлÑки ÑÐ°ÐºÑ Ð¿ÑдкаÑегоÑÑÑ.|Ðоказано $1 {{PLURAL:$1|пÑдкаÑегоÑÑÑ Ð·|пÑдкаÑегоÑÑÑ Ð·|пÑдкаÑегоÑÑй Ñз}} $2.}}",
+ "category-subcat-count": "{{PLURAL:$2|Ðоказано $1 {{PLURAL:$1|пÑдкаÑегоÑÑÑ Ð·|пÑдкаÑегоÑÑÑ Ð·|пÑдкаÑегоÑÑй Ñз}} $2.|1=Ð¦Ñ ÐºÐ°ÑегоÑÑÑ Ð¼Ð°Ñ ÑÑлÑки ÑÐ°ÐºÑ Ð¿ÑдкаÑегоÑÑÑ.}}",
"category-subcat-count-limited": "У ÑÑй каÑегоÑÑÑ {{PLURAL:$1|$1 пÑдкаÑегоÑÑÑ|$1 пÑдкаÑегоÑÑÑ|$1 пÑдкаÑегоÑÑй}}.",
"category-article-count": "Ðоказано $1 {{PLURAL:$1|ÑÑоÑÑнкÑ|ÑÑоÑÑнки|ÑÑоÑÑнок}} ÑÑÑÑ ÐºÐ°ÑегоÑÑÑ (Ñз $2).",
"category-article-count-limited": "У ÑÑй каÑегоÑÑÑ {{PLURAL:$1|$1 ÑÑоÑÑнка|$1 ÑÑоÑÑнки|$1 ÑÑоÑÑнок}}.",
@@ -528,7 +530,7 @@
"noemail": "ÐÐ»Ñ ÐºÐ¾ÑиÑÑÑваÑа \"$1\" не вказано адÑеÑи елекÑÑÐ¾Ð½Ð½Ð¾Ñ Ð¿Ð¾ÑÑи.",
"noemailcreate": "Ðам ÑÑеба вказаÑи пÑавилÑÐ½Ñ Ð°Ð´ÑеÑÑ ÐµÐ»ÐµÐºÑÑÐ¾Ð½Ð½Ð¾Ñ Ð¿Ð¾ÑÑи",
"passwordsent": "Ðовий паÑÐ¾Ð»Ñ Ð±Ñв надÑÑланий на адÑеÑÑ ÐµÐ»ÐµÐºÑÑÐ¾Ð½Ð½Ð¾Ñ Ð¿Ð¾ÑÑи, зазнаÑÐµÐ½Ñ Ð´Ð»Ñ \"$1\".\nÐÑÐ´Ñ Ð»Ð°Ñка, ввÑйдÑÑÑ Ð´Ð¾ ÑиÑÑеми пÑÑÐ»Ñ Ð¾ÑÑÐ¸Ð¼Ð°Ð½Ð½Ñ Ð¿Ð°ÑолÑ.",
- "blocked-mailpassword": "РедагÑÐ²Ð°Ð½Ð½Ñ Ð· ваÑÐ¾Ñ IP-адÑеÑи забоÑонено, заблокована Ñакож ÑÑнкÑÑÑ Ð²ÑÐ´Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð¿Ð°ÑолÑ, Ñоб запобÑгÑи зловживаннÑм.",
+ "blocked-mailpassword": "РедагÑÐ²Ð°Ð½Ð½Ñ Ð· ÐаÑÐ¾Ñ IP-адÑеÑи забоÑонено. Щоб запобÑгÑи зловживаннÑм, заблокована Ñакож ÑÑнкÑÑÑ Ð²ÑÐ´Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð¿Ð°ÑÐ¾Ð»Ñ Ð· ÑÑÑÑ IP-адÑеÑи.",
"eauthentsent": "Ðа Ð²ÐºÐ°Ð·Ð°Ð½Ñ Ð°Ð´ÑеÑÑ ÐµÐ»ÐµÐºÑÑÐ¾Ð½Ð½Ð¾Ñ Ð¿Ð¾ÑÑи вÑдпÑавлено лиÑÑ Ð¿ÑдÑвеÑдженнÑ.\nЩоб оÑÑимÑваÑи Ð½Ð°Ð´Ð°Ð»Ñ Ð±ÑдÑ-ÑÐºÑ Ð¿Ð¾Ð²ÑдомленнÑ, необÑ
Ñдно пÑдÑвеÑдиÑи, Ñо облÑковий Ð·Ð°Ð¿Ð¸Ñ Ð½Ð°Ð»ÐµÐ¶Ð¸ÑÑ ÑпÑÐ°Ð²Ð´Ñ Ðам, за пÑоÑедÑÑоÑ, опиÑÐ°Ð½Ð¾Ñ Ð² лиÑÑÑ.",
"throttled-mailpassword": "ÐиÑÑа Ð´Ð»Ñ Ð¾Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð¿Ð°ÑÐ¾Ð»Ñ Ð²Ð¶Ðµ бÑло надÑÑлано елекÑÑÐ¾Ð½Ð½Ð¾Ñ Ð¿Ð¾ÑÑÐ¾Ñ Ð¿ÑоÑÑгом {{PLURAL:$1|1=оÑÑаннÑÐ¾Ñ Ð³Ð¾Ð´Ð¸Ð½Ð¸|оÑÑаннÑÑ
$1 годин}}.\nÐÐ»Ñ Ð¿Ð¾Ð¿ÐµÑÐµÐ´Ð¶ÐµÐ½Ð½Ñ Ð·Ð»Ð¾Ð²Ð¶Ð¸Ð²Ð°Ð½Ñ Ð´Ð¾Ð·Ð²Ð¾Ð»ÐµÐ½Ð¾ надÑилаÑи ÑÑлÑки одного лиÑÑа Ð¾Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð¿Ð°ÑÐ¾Ð»Ñ Ð·Ð° {{PLURAL:$1|годинÑ|$1 години|$1 годин}}.",
"mailerror": "Ðомилка надÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð¿Ð¾ÑÑи: $1",
@@ -1376,9 +1378,9 @@
"recentchangeslinked-page": "Ðазва ÑÑоÑÑнки:",
"recentchangeslinked-to": "ÐоказаÑи змÑни на ÑÑоÑÑнкаÑ
, пов'ÑзаниÑ
з даноÑ",
"recentchanges-page-added-to-category": "[[:$1]] Ðодано до каÑегоÑÑÑ",
- "recentchanges-page-added-to-category-bundled": "[[:$1]] Ñа Ñе [[Special:WhatLinksHere/$1|{{PLURAL:$2|$2 ÑÑоÑÑнкÑ|$2 ÑÑоÑÑнки|$2 ÑÑоÑÑнок|1=Ð¾Ð´Ð½Ñ ÑÑоÑÑнкÑ}}]] бÑло додано до каÑегоÑÑÑ",
+ "recentchanges-page-added-to-category-bundled": "[[:$1]] додано до каÑегоÑÑÑ, [[Special:WhatLinksHere/$1|ÑÑ ÑÑоÑÑнка вклÑÑена в ÑнÑÑ ÑÑоÑÑнки]]",
"recentchanges-page-removed-from-category": "[[:$1]] бÑло вилÑÑено з каÑегоÑÑÑ",
- "recentchanges-page-removed-from-category-bundled": "[[:$1]] Ñа Ñе [[Special:WhatLinksHere/$1|{{PLURAL:$2|$2 ÑÑоÑÑнкÑ|$2 ÑÑоÑÑнки|$2 ÑÑоÑÑнок|1=Ð¾Ð´Ð½Ñ ÑÑоÑÑнкÑ}}]] бÑло вилÑÑено з каÑегоÑÑÑ",
+ "recentchanges-page-removed-from-category-bundled": "[[:$1]] вилÑÑено з каÑегоÑÑÑ, [[Special:WhatLinksHere/$1|ÑÑ ÑÑоÑÑнка вклÑÑена в ÑнÑÑ ÑÑоÑÑнки]]",
"autochange-username": "ÐвÑомаÑиÑÐ½Ñ ÑедагÑÐ²Ð°Ð½Ð½Ñ MediaWiki",
"upload": "ÐаванÑажиÑи Ñайл",
"uploadbtn": "ÐаванÑажиÑи Ñайл",
@@ -1558,6 +1560,7 @@
"uploadstash-badtoken": "Ðе вдалоÑÑ Ð²Ð¸ÐºÐ¾Ð½Ð°Ñи Ð²ÐºÐ°Ð·Ð°Ð½Ñ Ð´ÑÑ. Ðожливо, виÑеÑпаний ÑеÑмÑн дÑÑ ÑеÑÑÑ ÑедагÑваннÑ. ÐÑÐ´Ñ Ð»Ð°Ñка, ÑпÑобÑйÑе Ñе Ñаз.",
"uploadstash-errclear": "ÐÑиÑÐµÐ½Ð½Ñ ÑайлÑв зазнало невдаÑÑ.",
"uploadstash-refresh": "ÐновиÑи ÑпиÑок ÑайлÑв",
+ "uploadstash-thumbnail": "пеÑеглÑд мÑнÑаÑÑÑи",
"invalid-chunk-offset": "ÐепÑипÑÑÑимий зÑÑв ÑÑагменÑа",
"img-auth-accessdenied": "ÐÑдмовлено в доÑÑÑпÑ",
"img-auth-nopathinfo": "ÐÑдÑÑÑнÑй PATH_INFO.\nÐÐ°Ñ ÑеÑÐ²ÐµÑ Ð½Ðµ налаÑÑовано Ð´Ð»Ñ Ð¿ÐµÑедаÑÑ ÑиÑ
даниÑ
.\nÐожливо, вÑн пÑаÑÑÑ Ð½Ð° оÑÐ½Ð¾Ð²Ñ CGI Ñа не пÑдÑÑимÑÑ img_auth.\nÐеÑеглÑнÑÑе [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Image_Authorization ÐÑдкÑиÑÑÑ Ð´Ð¾ÑÑÑÐ¿Ñ Ð´Ð¾ зобÑаженÑ]",
@@ -1879,8 +1882,6 @@
"categories-submit": "ÐоказаÑи",
"categoriespagetext": "{{PLURAL:$1|1=ÐаÑÑÑпна каÑегоÑÑÑ Ð¼ÑÑÑиÑÑ|ÐаÑÑÑÐ¿Ð½Ñ ÐºÐ°ÑегоÑÑÑ Ð¼ÑÑÑÑÑÑ}} ÑÑоÑÑнки або медÑа-Ñайли.\nТÑÑ Ð½Ðµ Ð¿Ð¾ÐºÐ°Ð·Ð°Ð½Ñ [[Special:UnusedCategories|каÑегоÑÑÑ, Ñо не викоÑиÑÑовÑÑÑÑÑÑ]].\nÐив. Ñакож [[Special:WantedCategories|ÑпиÑок необÑ
ÑдниÑ
каÑегоÑÑй]].",
"categoriesfrom": "ÐоказаÑи каÑегоÑÑÑ, Ñо поÑинаÑÑÑÑÑ Ð·:",
- "special-categories-sort-count": "ÑпоÑÑдкÑваÑи за кÑлÑкÑÑÑÑ",
- "special-categories-sort-abc": "ÑпоÑÑдкÑваÑи за алÑавÑÑом",
"deletedcontributions": "ÐилÑÑений внеÑок коÑиÑÑÑваÑа",
"deletedcontributions-title": "ÐилÑÑений внеÑок коÑиÑÑÑваÑа",
"sp-deletedcontributions-contribs": "внеÑок",
@@ -2260,6 +2261,7 @@
"ipb-unblock": "РозблокÑваÑи коÑиÑÑÑваÑа або IP-адÑеÑÑ",
"ipb-blocklist": "ÐоказаÑи ÑÐ¸Ð½Ð½Ñ Ð±Ð»Ð¾ÐºÑваннÑ",
"ipb-blocklist-contribs": "ÐнеÑок {{GENDER:$1|$1}}",
+ "ipb-blocklist-duration-left": "ÐалиÑилоÑÑ $1",
"unblockip": "РозблокÑваÑи IP-адÑеÑÑ",
"unblockiptext": "ÐикоÑиÑÑовÑйÑе Ð¿Ð¾Ð´Ð°Ð½Ñ Ð½Ð¸Ð¶Ñе ÑоÑмÑ, Ñоб вÑдновиÑи можливÑÑÑÑ Ð·Ð±ÐµÑÐµÐ¶ÐµÐ½Ð½Ñ Ð· ÑанÑÑе Ð·Ð°Ð±Ð»Ð¾ÐºÐ¾Ð²Ð°Ð½Ð¾Ñ IP-адÑеÑи.",
"ipusubmit": "ÐнÑÑи Ñе блокÑваннÑ",
@@ -2502,11 +2504,7 @@
"import-logentry-upload-detail": "ÐмпоÑÑовано $1 {{PLURAL:$1|веÑÑÑÑ|веÑÑÑÑ|веÑÑÑй}}",
"import-logentry-interwiki-detail": "ÐмпоÑÑовано $1 {{PLURAL:$1|веÑÑÑÑ|веÑÑÑÑ|веÑÑÑй}} з $2",
"javascripttest": "ТеÑÑÑÐ²Ð°Ð½Ð½Ñ JavaScript",
- "javascripttest-pagetext-noframework": "Ð¦Ñ ÑÑоÑÑнка пÑизнаÑений Ð´Ð»Ñ ÑеÑÑÑÐ²Ð°Ð½Ð½Ñ JavaScript.",
- "javascripttest-pagetext-unknownframework": "ÐевÑдоме ÑеÑедовиÑе ÑеÑÑÑÐ²Ð°Ð½Ð½Ñ \" $1 \".",
"javascripttest-pagetext-unknownaction": "невÑдома дÑÑ \"$1\".",
- "javascripttest-pagetext-frameworks": "ÐÑÐ´Ñ Ð»Ð°Ñка, обеÑÑÑÑ Ð¾Ð´Ð½Ðµ з наÑÑÑпниÑ
ÑеÑÐµÐ´Ð¾Ð²Ð¸Ñ ÑеÑÑÑваннÑ: $1",
- "javascripttest-pagetext-skins": "ÐибеÑÑÑÑ Ð¾ÑоÑÐ¼Ð»ÐµÐ½Ð½Ñ ÑÑоÑÑнки запÑÑÐºÑ ÑеÑÑÑ:",
"javascripttest-qunit-intro": "ÐеÑеглÑнÑÑи [ $1 ÑеÑÑÑÐ²Ð°Ð½Ð½Ñ Ð´Ð¾ÐºÑменÑаÑÑÑ] на mediawiki.org.",
"tooltip-pt-userpage": "{{GENDER:|ÐаÑа}} ÑÑоÑÑнка коÑиÑÑÑваÑа",
"tooltip-pt-anonuserpage": "СÑоÑÑнка коÑиÑÑÑваÑа Ð´Ð»Ñ Ð²Ð°ÑÐ¾Ñ IP-адÑеÑи",
@@ -2812,8 +2810,8 @@
"exif-colorspace": "ÐолÑÑний пÑоÑÑÑÑ",
"exif-componentsconfiguration": "ÐонÑÑгÑÑаÑÑÑ ÐºÐ¾Ð»ÑоÑовиÑ
компоненÑÑв",
"exif-compressedbitsperpixel": "Ðлибина колÑоÑÑ Ð¿ÑÑÐ»Ñ ÑÑиÑненнÑ",
- "exif-pixelydimension": "ШиÑина зобÑаженнÑ",
- "exif-pixelxdimension": "ÐиÑоÑа зобÑаженнÑ",
+ "exif-pixelxdimension": "ШиÑина зобÑаженнÑ",
+ "exif-pixelydimension": "ÐиÑоÑа зобÑаженнÑ",
"exif-usercomment": "ÐодаÑковий коменÑаÑ",
"exif-relatedsoundfile": "Файл звÑкового коменÑаÑÑ",
"exif-datetimeoriginal": "ÐÑигиналÑÐ½Ñ Ð´Ð°Ñа й ÑаÑ",
@@ -3352,7 +3350,6 @@
"version-libraries-description": "ÐпиÑ",
"version-libraries-authors": "ÐвÑоÑи",
"redirect": "ÐеÑенапÑÐ°Ð²Ð»ÐµÐ½Ð½Ñ Ð·Ð° Ñайлом, коÑиÑÑÑваÑем, ÑÑоÑÑнкоÑ, веÑÑÑÑÑ Ð°Ð±Ð¾ ID жÑÑналÑ",
- "redirect-legend": "ÐеÑенапÑавиÑи на Ñайл Ñи ÑÑоÑÑнкÑ",
"redirect-summary": "Ð¦Ñ ÑпеÑÑалÑна ÑÑоÑÑнка пеÑенапÑавлÑÑ Ð½Ð° Ñайл (за Ð¿Ð¾Ð´Ð°Ð½Ð¾Ñ Ð½Ð°Ð·Ð²Ð¾Ñ ÑайлÑ), ÑÑоÑÑÐ½ÐºÑ (за поданим ID веÑÑÑÑ Ð°Ð±Ð¾ ÑÑоÑÑнки), ÑÑоÑÑÐ½ÐºÑ ÐºÐ¾ÑиÑÑÑваÑа (за поданим ÑиÑловим ID коÑиÑÑÑваÑа) або Ð·Ð°Ð¿Ð¸Ñ Ð¶ÑÑÐ»Ð°Ð½Ñ (за поданим ID жÑÑналÑ). ÐикоÑиÑÑаннÑ: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]],[[{{#Special:Redirect}}/revision/328429]], [[{{#Special:Redirect}}/user/101]] або [[{{#Special:Redirect}}/logid/186]].",
"redirect-submit": "ÐеÑейÑи",
"redirect-lookup": "ШÑкаÑи:",
@@ -3365,7 +3362,6 @@
"redirect-not-exists": "ÐнаÑÐµÐ½Ð½Ñ Ð½Ðµ знайдено",
"fileduplicatesearch": "ÐоÑÑк ÑайлÑв-дÑблÑкаÑÑв",
"fileduplicatesearch-summary": "ÐоÑÑк дÑблÑкаÑÑв ÑайлÑв на оÑÐ½Ð¾Ð²Ñ Ñ
еÑ-знаÑенÑ.",
- "fileduplicatesearch-legend": "ÐоÑÑк дÑблÑкаÑÑв",
"fileduplicatesearch-filename": "Ðазва ÑайлÑ:",
"fileduplicatesearch-submit": "ÐнайÑи",
"fileduplicatesearch-info": "$1 à $2 пÑкÑелÑв РозмÑÑ ÑайлÑ: $3 MIME-Ñип: $4",
@@ -3566,7 +3562,7 @@
"logentry-protect-protect-cascade": "$1 {{GENDER:$2|заÑ
иÑÑив|заÑ
иÑÑила}} $3 $4 [каÑкадно]",
"logentry-protect-modify": "$1 {{GENDER:$2|змÑнив|змÑнила}} налаÑÑÑÐ²Ð°Ð½Ð½Ñ Ð·Ð°Ñ
иÑÑÑ $3 $4",
"logentry-protect-modify-cascade": "$1 {{GENDER:$2|змÑнив|змÑнила}} налаÑÑÑÐ²Ð°Ð½Ð½Ñ Ð·Ð°Ñ
иÑÑÑ $3 $4 [каÑкадно]",
- "logentry-rights-rights": "$1 {{GENDER:$2|змÑнив|змÑнила}} ÑленÑÑво в гÑÑпаÑ
Ð´Ð»Ñ $3 Ñз $4 на $5",
+ "logentry-rights-rights": "$1 {{GENDER:$2|змÑнив|змÑнила}} ÑленÑÑво в гÑÑпаÑ
Ð´Ð»Ñ {{GENDER:$6|$3}} Ñз $4 на $5",
"logentry-rights-rights-legacy": "$1 {{GENDER:$2|змÑнив|змÑнила}} ÑленÑÑво в гÑÑпаÑ
Ð´Ð»Ñ $3",
"logentry-rights-autopromote": "$1 бÑло авÑомаÑиÑно пеÑеведено Ñз $4 в $5",
"logentry-upload-upload": "$1 {{GENDER:$2|заванÑажив|заванÑажила}} $3",
@@ -3659,6 +3655,7 @@
"api-error-unknownerror": "ÐевÑдома помилка: \"$1\".",
"api-error-uploaddisabled": "ÐаванÑÐ°Ð¶ÐµÐ½Ð½Ñ Ð²Ð¸Ð¼ÐºÐ½ÑÑо Ñ ÑÑй вÑкÑ.",
"api-error-verification-error": "Цей Ñайл можливо поÑкоджено, або вÑн Ð¼Ð°Ñ Ð½ÐµÐ¿ÑавилÑне ÑозÑиÑеннÑ.",
+ "api-error-was-deleted": "Файл Ñз ÑÑÑÑ Ð½Ð°Ð·Ð²Ð¾Ñ ÑанÑÑе бÑло заванÑажено Ñ Ð·Ð³Ð¾Ð´Ð¾Ð¼ вилÑÑено.",
"duration-seconds": "$1 {{PLURAL:$1|ÑекÑнда|ÑекÑнди|ÑекÑнд}}",
"duration-minutes": "$1 {{PLURAL:$1|Ñ
вилина|Ñ
вилини|Ñ
вилин}}",
"duration-hours": "$1 {{PLURAL:$1|година|години|годин}}",
@@ -3749,6 +3746,7 @@
"special-characters-group-ipa": "ÐФР(IPA)",
"special-characters-group-symbols": "Символи",
"special-characters-group-greek": "ÐÑеÑÑкÑ",
+ "special-characters-group-greekextended": "РозÑиÑена гÑеÑÑка",
"special-characters-group-cyrillic": "ÐиÑилиÑÑ",
"special-characters-group-arabic": "ÐÑабÑÑкÑ",
"special-characters-group-arabicextended": "ÐÑабÑÑка ÑозÑиÑена",
@@ -3776,5 +3774,54 @@
"sessionprovider-generic": "ÑеÑÑй $1",
"sessionprovider-mediawiki-session-cookiesessionprovider": "ÑеÑÑй на оÑÐ½Ð¾Ð²Ñ ÐºÑк",
"sessionprovider-nocookies": "ÐÑки можÑÑÑ Ð±ÑÑи вÑдклÑÑенÑ. ÐеÑеконайÑеÑÑ, Ñо Ñ ÐÐ°Ñ Ð²ÐºÐ»ÑÑÐµÐ½Ñ cookies Ñ Ð¿Ð¾ÑнÑÑÑ Ð·Ð½Ð¾Ð²Ñ.",
- "randomrootpage": "Ðипадкова коÑенева ÑÑоÑÑнка"
+ "randomrootpage": "Ðипадкова коÑенева ÑÑоÑÑнка",
+ "log-action-filter-block": "Тип блокÑваннÑ:",
+ "log-action-filter-contentmodel": "Тип модиÑÑкаÑÑÑ contentmodel:",
+ "log-action-filter-delete": "Тип вилÑÑеннÑ:",
+ "log-action-filter-import": "Тип ÑмпоÑÑÑ:",
+ "log-action-filter-managetags": "Тип дÑÑ Ð· ÑпÑавлÑÐ½Ð½Ñ Ñегами:",
+ "log-action-filter-move": "Тип пеÑейменÑваннÑ:",
+ "log-action-filter-newusers": "Тип ÑÑвоÑÐµÐ½Ð½Ñ Ð¾Ð±Ð»Ñкового запиÑÑ:",
+ "log-action-filter-patrol": "Тип паÑÑÑлÑваннÑ:",
+ "log-action-filter-protect": "Тип заÑ
иÑÑÑ:",
+ "log-action-filter-rights": "Тип змÑни пÑав",
+ "log-action-filter-suppress": "Тип пÑиÑ
овÑваннÑ",
+ "log-action-filter-upload": "Тип заванÑаженнÑ:",
+ "log-action-filter-all": "УÑÑ",
+ "log-action-filter-block-block": "ÐлокÑваннÑ",
+ "log-action-filter-block-reblock": "ÐмÑна блокÑваннÑ",
+ "log-action-filter-block-unblock": "РозблокÑваннÑ",
+ "log-action-filter-contentmodel-change": "ÐмÑна Contentmodel",
+ "log-action-filter-contentmodel-new": "СÑвоÑÐµÐ½Ð½Ñ ÑÑоÑÑнки з неÑÑандаÑÑÐ½Ð¾Ñ Ð¼Ð¾Ð´ÐµÐ»Ð»Ñ Contentmodel",
+ "log-action-filter-delete-delete": "ÐÐ¸Ð´Ð°Ð»ÐµÐ½Ð½Ñ ÑÑоÑÑнки",
+ "log-action-filter-delete-restore": "ÐÑÐ´Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ ÑÑоÑÑнки",
+ "log-action-filter-delete-event": "ÐилÑÑÐµÐ½Ð½Ñ Ð¶ÑÑналÑ",
+ "log-action-filter-delete-revision": "ÐилÑÑÐµÐ½Ð½Ñ Ð²ÐµÑÑÑÑ",
+ "log-action-filter-import-interwiki": "ТÑанÑвÑкÑ-ÑмпоÑÑ",
+ "log-action-filter-import-upload": "ÐмпоÑÑ ÑеÑез заванÑÐ°Ð¶ÐµÐ½Ð½Ñ XML",
+ "log-action-filter-managetags-create": "СÑвоÑÐµÐ½Ð½Ñ ÑегÑв",
+ "log-action-filter-managetags-delete": "ÐилÑÑÐµÐ½Ð½Ñ ÑегÑв",
+ "log-action-filter-managetags-activate": "ÐкÑиваÑÑÑ ÑегÑв",
+ "log-action-filter-managetags-deactivate": "ÐеакÑиваÑÑÑ ÑегÑв",
+ "log-action-filter-move-move": "ÐеÑейменÑÐ²Ð°Ð½Ð½Ñ Ð±ÐµÐ· пеÑезапиÑÑ ÑÑоÑÑнок-пеÑенапÑавленÑ",
+ "log-action-filter-move-move_redir": "ÐеÑейменÑÐ²Ð°Ð½Ð½Ñ Ð· пеÑезапиÑом ÑÑоÑÑнок-пеÑенапÑавленÑ",
+ "log-action-filter-newusers-create": "СÑвоÑÐµÐ½Ð½Ñ Ð°Ð½Ð¾Ð½Ñмним коÑиÑÑÑваÑем",
+ "log-action-filter-newusers-create2": "СÑвоÑÐµÐ½Ð½Ñ Ð·Ð°ÑеÑÑÑÑованим коÑиÑÑÑваÑем",
+ "log-action-filter-newusers-autocreate": "ÐвÑомаÑиÑне ÑÑвоÑеннÑ",
+ "log-action-filter-newusers-byemail": "СÑвоÑÐµÐ½Ð½Ñ Ð· паÑолем, надÑÑланим елекÑÑÐ¾Ð½Ð½Ð¾Ñ Ð¿Ð¾ÑÑоÑ",
+ "log-action-filter-patrol-patrol": "Ð ÑÑне паÑÑÑлÑваннÑ",
+ "log-action-filter-patrol-autopatrol": "ÐвÑомаÑиÑне паÑÑÑлÑваннÑ",
+ "log-action-filter-protect-protect": "ÐаÑ
иÑÑ",
+ "log-action-filter-protect-modify": "ÐмÑна заÑ
иÑÑÑ",
+ "log-action-filter-protect-unprotect": "ÐнÑÑÑÑ Ð·Ð°Ñ
иÑÑÑ",
+ "log-action-filter-protect-move_prot": "ÐеÑенеÑÐµÐ½Ð½Ñ Ð·Ð°Ñ
иÑÑÑ",
+ "log-action-filter-rights-rights": "Ð ÑÑна змÑна",
+ "log-action-filter-rights-autopromote": "ÐвÑомаÑиÑна змÑна",
+ "log-action-filter-suppress-event": "ÐÑиÑ
овÑÐ²Ð°Ð½Ð½Ñ Ð¶ÑÑналÑ",
+ "log-action-filter-suppress-revision": "ÐÑиÑ
овÑÐ²Ð°Ð½Ð½Ñ Ð²ÐµÑÑÑÑ",
+ "log-action-filter-suppress-delete": "ÐÑиÑ
овÑÐ²Ð°Ð½Ð½Ñ ÑÑоÑÑнки",
+ "log-action-filter-suppress-block": "ÐÑиÑ
овÑÐ²Ð°Ð½Ð½Ñ ÐºÐ¾ÑиÑÑÑваÑа ÑеÑез блокÑваннÑ",
+ "log-action-filter-suppress-reblock": "ÐÑиÑ
овÑÐ²Ð°Ð½Ð½Ñ ÐºÐ¾ÑиÑÑÑваÑа ÑеÑез повÑоÑне блокÑваннÑ",
+ "log-action-filter-upload-upload": "Ðове заванÑаженнÑ",
+ "log-action-filter-upload-overwrite": "ÐовÑоÑне заванÑаженнÑ"
}
diff --git a/languages/i18n/ur.json b/languages/i18n/ur.json
index abceeb09f4..aae60f7374 100644
--- a/languages/i18n/ur.json
+++ b/languages/i18n/ur.json
@@ -1404,6 +1404,7 @@
"exif-iimcategory": "زÙ
رÛ",
"exif-orientation-1": "عاÙ
",
"exif-meteringmode-0": "ÙاÙ
عÙÙÙ
",
+ "exif-dc-contributor": "ترÙ
ÛÙ
Ú©ÙÙدگاÙ",
"namespacesall": "تÙ
اÙ
",
"monthsall": "تÙ
اÙ
",
"deletedwhileediting": "اÙتباÛ: آپ Ú©Û ØªØ±Ù
ÛÙ
شرÙع کرÙÛ Ú©Û Ø¨Ø¹Ø¯ ÛÛ ØµÙØÛ ØØ°Ù Ú©Ûا جا Úکا ÛÛ!",
diff --git a/languages/i18n/uz.json b/languages/i18n/uz.json
index 2a3c48fdf2..f890815547 100644
--- a/languages/i18n/uz.json
+++ b/languages/i18n/uz.json
@@ -11,7 +11,8 @@
"Xexdof",
"Arystanbek",
"6ahodir",
- "ТаÑжимон"
+ "ТаÑжимон",
+ "Ximik1991"
]
},
"tog-underline": "Havolalarning tagiga chizish:",
@@ -149,7 +150,7 @@
"mytalk": "Munozara",
"anontalk": "Ushbu IP-manzil munozarasi",
"navigation": "Saytda harakatlanish",
- "and": " va",
+ "and": " va",
"qbfind": "Topish",
"qbbrowse": "Koʻrib chiqish",
"qbedit": "Tahrirlash",
@@ -1238,6 +1239,7 @@
"pagemovedsub": "Sahifa qayta nomlandi",
"movepage-moved": "'''Sahifa nomi «$1»dan «$2»ga koʻchirildi'''",
"movepage-moved-redirect": "Qayta yoânaltirish yaratildi.",
+ "articleexists": "Shunday nomli sahifa mavjud, yoki siz tanlagan nom mumkin emas. \nIltimos, boshqa nom tanlang.",
"movetalk": "Mos munozara sahifasini qayta nomlash",
"move-subpages": "Ostsahifalarni ham qayta nomlash ($1 tadan kam)",
"move-talk-subpages": "Munozara sahifasining ostsahifalarini ham qayta nomlash ($1 tadan kam)",
diff --git a/languages/i18n/vec.json b/languages/i18n/vec.json
index 6358cec8a1..5bcc0526a3 100644
--- a/languages/i18n/vec.json
+++ b/languages/i18n/vec.json
@@ -1504,8 +1504,6 @@
"categories": "Categorie",
"categoriespagetext": "{{PLURAL:$1|Sta categoria qua soto la|Ste categorie qua soto le}} gà drento pagine o file multimedià i.\nLe [[Special:UnusedCategories|categorie mìa doparà ]] no le vien mìa fate védar.\nVarda anca le [[Special:WantedCategories|categorie domandà ]].",
"categoriesfrom": "Mostra le categorie tacando da :",
- "special-categories-sort-count": "ordina par nùmaro",
- "special-categories-sort-abc": "ordina alfabeticamente",
"deletedcontributions": "Contributi utente scancelà ",
"deletedcontributions-title": "Contributi utente scancelà ",
"sp-deletedcontributions-contribs": "contributi",
@@ -2053,10 +2051,6 @@
"import-logentry-upload-detail": "{{PLURAL:$1|una revixion importà |$1 revixion importae}}",
"import-logentry-interwiki-detail": "{{PLURAL:$1|una revixion importà |$1 revixion importae}} da $2",
"javascripttest": "Sperimentasion JavaScript",
- "javascripttest-pagetext-noframework": "Sta pà jina Åa xe riservà a l'execusion de test de JavaScript.",
- "javascripttest-pagetext-unknownframework": "Framework de test sconosùo \"$1\".",
- "javascripttest-pagetext-frameworks": "Par piasere, sieÅi uno de i seguenti framework pa' i test: $1",
- "javascripttest-pagetext-skins": "SieÅi na skin có cui exeguir i test:",
"javascripttest-qunit-intro": "Varda so mediawiki.org Åa [$1 documentasion rivardante i test].",
"tooltip-pt-userpage": "La {{GENDER:|to}} pagina utente",
"tooltip-pt-anonuserpage": "La pà xena utente de sto indirizo IP",
@@ -2299,8 +2293,8 @@
"exif-colorspace": "Spazio de i coÅori",
"exif-componentsconfiguration": "Significato de ciascuna componente",
"exif-compressedbitsperpixel": "Modalità de compression imagine",
- "exif-pixelydimension": "Larghesa imajine",
- "exif-pixelxdimension": "Altesa imajine",
+ "exif-pixelxdimension": "Larghesa imajine",
+ "exif-pixelydimension": "Altesa imajine",
"exif-usercomment": "Note de l'utente",
"exif-relatedsoundfile": "File audio coÅegà ",
"exif-datetimeoriginal": "Data e ora de creassion de i dati",
@@ -2729,7 +2723,6 @@
"version-libraries-description": "Descrision",
"version-libraries-authors": "Autori",
"redirect": "Rimando par file, utente, pagina o ID de version.",
- "redirect-legend": "Rimandar a un file o na pagina",
"redirect-summary": "Sta pagina speciale la rimanda a un file (dato el nome del file), a na pagina (dato l'ID de la revision), o a na pagina utente (dato l'ID de l'utente).",
"redirect-submit": "VÃ ",
"redirect-lookup": "Ciave de riserca:",
@@ -2740,7 +2733,6 @@
"redirect-not-exists": "Valor mia catà ",
"fileduplicatesearch": "Riçerca dei file duplicà ",
"fileduplicatesearch-summary": "Riçerca de eventuali duplicati del file in base al valor de ''hash''.",
- "fileduplicatesearch-legend": "Riçerca de un duplicato",
"fileduplicatesearch-filename": "Nome del file:",
"fileduplicatesearch-submit": "Riçerca",
"fileduplicatesearch-info": "$1 Ã $2 pixel Dimension: $3 Tipo MIME: $4",
diff --git a/languages/i18n/vep.json b/languages/i18n/vep.json
index c840b1bb52..2b1210191b 100644
--- a/languages/i18n/vep.json
+++ b/languages/i18n/vep.json
@@ -704,6 +704,7 @@
"powersearch-togglelabel": "Kodvda:",
"powersearch-toggleall": "Kaik",
"powersearch-togglenone": "Ei ole nimidä",
+ "powersearch-remember": "Panda valiÄend muÅ¡tho tulebiden ecmižiden täht",
"search-external": "Irdecind",
"searchdisabled": "{{SITENAME}} ecind om saubatud.\nTö voit nügüd' ectä Google'n turbiš.\nOtkat sil'mnägubale üks-se, miše {{SITENAME}}-saitan sädäimišt voib olda vanhtunuden.",
"preferences": "Järgendused",
@@ -940,6 +941,7 @@
"recentchanges-label-bot": "Necen redakcijan tegi bot",
"recentchanges-label-unpatrolled": "Necidä redakcijad ei völ patruliruinugoi",
"recentchanges-label-plusminus": "Suruden toižetamine baitoiš",
+ "recentchanges-legend-heading": "Legend: ",
"recentchanges-legend-newpage": "$1 - uz' lehtpol'",
"rcnotefrom": "Alemba oma anttud toižetused '''$2'''-späi ( '''$1'''-hesai).",
"rclistfrom": "Ozutada uded toižetused dataspäi $3 $2 augotaden",
@@ -1265,8 +1267,6 @@
"categories": "Kategorijad",
"categoriespagetext": "{{PLURAL:$1|Neciš kategorijas|Neniš kategorijoiš }} om lehtpolid vai mediafailoid.\n[[Special:UnusedCategories|Kävumatomid kategorijoid]] ei ozutagoi naku.\nKc. mugažo [[Special:WantedCategories|ectud kategorijoiden nimikirjutez]].",
"categoriesfrom": "Ozutada kategorijad, necišpäi augotaden:",
- "special-categories-sort-count": "järgeta lugumäran mödhe",
- "special-categories-sort-abc": "järgeta kirjamišton mödhe",
"deletedcontributions": "Äutud tond",
"deletedcontributions-title": "Äutud tond",
"sp-deletedcontributions-contribs": "tond",
@@ -1878,8 +1878,8 @@
"exif-colorspace": "Mujuavaruz",
"exif-componentsconfiguration": "Mujukomponentoiden konfiguracii",
"exif-compressedbitsperpixel": "Mujun süvuz ahtištusen jäl'ghe",
- "exif-pixelydimension": "Kuvan leveduz",
- "exif-pixelxdimension": "Kuvan korktuz",
+ "exif-pixelxdimension": "Kuvan leveduz",
+ "exif-pixelydimension": "Kuvan korktuz",
"exif-usercomment": "Kävutajan homaiÄendad",
"exif-relatedsoundfile": "Kulundkommentarijan fail",
"exif-datetimeoriginal": "Todesine dat da aig",
@@ -2221,7 +2221,6 @@
"version-entrypoints-header-url": "URL",
"fileduplicatesearch": "Ectä kaksitadud failad",
"fileduplicatesearch-summary": "ÃhtejiÄÄiden failoiden ecmine niiden heÅ¡-kodan mödhe.",
- "fileduplicatesearch-legend": "Ectä dublikatoid",
"fileduplicatesearch-filename": "Failannimi:",
"fileduplicatesearch-submit": "Ectä",
"fileduplicatesearch-info": "$1 Ã $2 pikselad Failan suruz: $3 MIME-tip: $4",
diff --git a/languages/i18n/vi.json b/languages/i18n/vi.json
index 3952b8e531..d788a2fca7 100644
--- a/languages/i18n/vi.json
+++ b/languages/i18n/vi.json
@@ -493,7 +493,7 @@
"noemail": "Thà nh viên â$1â không ghi thÆ° Äiá»n tá».",
"noemailcreate": "Bạn cần cung cấp má»t Äá»a chá» thÆ° Äiá»n tá» hợp lá»",
"passwordsent": "Máºt khẩu má»i Äã Äược gá»i tá»i thÆ° Äiá»n tá» của thà nh viên â$1â. Xin ÄÄng nháºp lại sau khi nháºn thÆ°.",
- "blocked-mailpassword": "Äá»a chá» IP của bạn bá» cấm không Äược sá»a Äá»i, do Äó cÅ©ng không Äược phép dùng chức nÄng phục há»i máºt khẩu Äá» tránh sai phạm.",
+ "blocked-mailpassword": "Äá»a chá» IP của bạn bá» cấm không Äược sá»a Äá»i. Äá» ngÄn ngừa viá»c lạm dụng, sẽ không Äược phép dùng chức nÄng phục há»i máºt khẩu từ Äá»a chá» IP nà y.",
"eauthentsent": "ThÆ° xác nháºn Äã Äược gá»i cho Äá»a chá» thÆ° Äiá»n tá» Äược chá» Äá»nh. TrÆ°á»c khi bạn có thá» nháºn thÆ°, bạn cần thá»±c hiá»n hÆ°á»ng dẫn trong thÆ° Äá» xác nháºn tà i khoản thuá»c vá» bạn.",
"throttled-mailpassword": "Máºt khẩu Äã Äược gá»i Äến cho bạn trong vòng {{PLURAL:$1|$1 giá»|$1 giá»}} Äá»ng há» trá» lại. Äá» tránh lạm dụng, chá» có thá» gá»i máºt khẩu $1 giá» Äá»ng há» má»t lần.",
"mailerror": "Lá»i gá»i thÆ° : $1",
@@ -1517,6 +1517,7 @@
"uploadstash-badtoken": "Tác vụ bá» thất bại, có lẽ vì thông tin ÄÄng nháºp của bạn Äã hết hạn. Hãy thá» lại.",
"uploadstash-errclear": "Viá»c dá»n sạch các táºp tin bá» thất bại.",
"uploadstash-refresh": "Là m má»i danh sách táºp tin",
+ "uploadstash-thumbnail": "xem hình thu nhá»",
"invalid-chunk-offset": "Khúc lá»ch (chunk offset) không hợp lá»",
"img-auth-accessdenied": "Không cho phép truy cáºp",
"img-auth-nopathinfo": "Thiếu PATH_INFO.\nMáy chủ của bạn không Äược thiết láºp Äá» truyá»n thông tin nà y.\nCó thá» do nó dá»±a trên CGI và không há» trợ img_auth.\nXem [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Image_Authorization hÆ°á»ng dẫn Äiá»u khiá»n truy cáºp hình ảnh].",
@@ -1836,8 +1837,6 @@
"categories-submit": "Xem",
"categoriespagetext": "{{PLURAL:$1|Thá» loại|Các thá» loại}} dÆ°á»i Äây có trang hoặc táºp tin phÆ°Æ¡ng tiá»n.\nNhững [[Special:UnusedCategories|thá» loại trá»ng]] không Äược hiá»n thá» tại Äây.\nXem thêm [[Special:WantedCategories|thá» loại cần thiết]].",
"categoriesfrom": "Hiá»n thá» thá» loại bằng Äầu từ:",
- "special-categories-sort-count": "xếp theo sỠtrang",
- "special-categories-sort-abc": "xếp theo vần",
"deletedcontributions": "Äóng góp Äã bá» xóa của thà nh viên",
"deletedcontributions-title": "Äóng góp Äã bá» xóa của thà nh viên",
"sp-deletedcontributions-contribs": "Äóng góp",
@@ -2455,11 +2454,7 @@
"import-logentry-upload-detail": "Äã nháºp $1 phiên bản",
"import-logentry-interwiki-detail": "Äã nháºp $1 phiên bản từ $2",
"javascripttest": "Kiá»m thá» JavaScript",
- "javascripttest-pagetext-noframework": "Trang nà y dà nh cho viá»c chạy các ca kiá»m thá» JavaScript.",
- "javascripttest-pagetext-unknownframework": "Ná»n tảng kiá»m thá» không rõ â$1â.",
"javascripttest-pagetext-unknownaction": "Tác vụ không rõ â$1â.",
- "javascripttest-pagetext-frameworks": "Hãy chá»n má»t trong những ná»n tảng kiá»m thá» sau: $1",
- "javascripttest-pagetext-skins": "Hãy chá»n giao diá»n Äá» sá» dụng vá»i các ca kiá»m thá»:",
"javascripttest-qunit-intro": "Xem [$1 tà i liá»u kiá»m thá»] tại mediawiki.org.",
"tooltip-pt-userpage": "Trang cá nhân của tôi",
"tooltip-pt-anonuserpage": "Trang của IP bạn Äang dùng",
@@ -2758,8 +2753,8 @@
"exif-colorspace": "Không gian mà u",
"exif-componentsconfiguration": "à nghĩa thà nh phần",
"exif-compressedbitsperpixel": "Äá» nén (bit/Äiá»m)",
- "exif-pixelydimension": "Chiá»u ngang hình",
- "exif-pixelxdimension": "Chiá»u cao hình",
+ "exif-pixelxdimension": "Chiá»u ngang hình",
+ "exif-pixelydimension": "Chiá»u cao hình",
"exif-usercomment": "Lá»i bình của tác giả",
"exif-relatedsoundfile": "Táºp tin âm thanh liên quan",
"exif-datetimeoriginal": "Ngà y giá» sinh dữ liá»u",
@@ -3270,7 +3265,6 @@
"version-libraries-description": "Miêu tả",
"version-libraries-authors": "Tác giả",
"redirect": "Äá»i hÆ°á»ng Äến táºp tin, ngÆ°á»i dùng, trang, hoặc ID ÄÄng nháºp",
- "redirect-legend": "Äá»i hÆ°á»ng Äến táºp tin hoặc trang",
"redirect-summary": "Trang Äặc biá»t nà y Äá»i hÆ°á»ng Äến má»t táºp tin (theo tên táºp tin Äược cho và o), trang (theo sá» phiên bản hoặc sá» trang Äược cho và o), trang cá nhân (theo sá» thà nh viên), hoặc mục nháºt trình (theo sá» mục nháºt trình). Cách sá» dụng: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], [[{{#Special:Redirect}}/user/101]], hoặc [[{{#Special:Redirect}}/logid/186]].",
"redirect-submit": "Äi",
"redirect-lookup": "Tra cứu:",
@@ -3283,7 +3277,6 @@
"redirect-not-exists": "Không tìm thấy giá trá»",
"fileduplicatesearch": "Tìm kiếm các táºp tin trùng lắp",
"fileduplicatesearch-summary": "Tìm kiếm các bản sao y há»t vá»i táºp tin khác, theo giá trá» bÄm của nó.",
- "fileduplicatesearch-legend": "Tìm kiếm táºp tin trùng lắp",
"fileduplicatesearch-filename": "Tên táºp tin:",
"fileduplicatesearch-submit": "Tìm kiếm",
"fileduplicatesearch-info": "$1Ã$2 Äiá»m ảnh KÃch thÆ°á»c táºp tin: $3 Kiá»u MIME: $4",
@@ -3694,5 +3687,17 @@
"sessionprovider-generic": "phiên $1",
"sessionprovider-mediawiki-session-cookiesessionprovider": "phiên dựa trên cookie",
"sessionprovider-nocookies": "Cookie có thá» bá» vô hiá»u hóa. Äảm bảo bạn Äã báºt cookie và bắt Äầu má»t lần nữa.",
- "randomrootpage": "Trang gá»c ngẫu nhiên"
+ "randomrootpage": "Trang gá»c ngẫu nhiên",
+ "log-action-filter-protect": "Loại bảo vá»:",
+ "log-action-filter-upload": "Loại tải lên:",
+ "log-action-filter-all": "Tất cả",
+ "log-action-filter-block-block": "Khá»i",
+ "log-action-filter-import-upload": "Nháºp bằng cách tải lên XML",
+ "log-action-filter-newusers-create": "Tạo bá»i ngÆ°á»i dùng vô danh",
+ "log-action-filter-newusers-create2": "Tạo bá»i ngÆ°á»i dùng Äã ÄÄng ký",
+ "log-action-filter-newusers-byemail": "Tạo vá»i máºt khẩu Äược gá»i qua thÆ° Äiá»n tá»",
+ "log-action-filter-protect-protect": "Bảo vá»",
+ "log-action-filter-rights-autopromote": "Tá»± Äá»ng thay Äá»i",
+ "log-action-filter-upload-upload": "Tải lên má»i",
+ "log-action-filter-upload-overwrite": "Tải lên lại"
}
diff --git a/languages/i18n/vo.json b/languages/i18n/vo.json
index b98b3a53cb..998e2c50ee 100644
--- a/languages/i18n/vo.json
+++ b/languages/i18n/vo.json
@@ -1205,8 +1205,6 @@
"categories": "Klads",
"categoriespagetext": "Klads sököl labons padis u ragivis.\n[[Special:UnusedCategories|Klads no pageböls]] no pajonons is.\nLogolös i [[Special:WantedCategories|klads pevilöl]].",
"categoriesfrom": "Jonön padis primölo de:",
- "special-categories-sort-count": "leodükön ma num",
- "special-categories-sort-abc": "leodükön ma lafab",
"deletedcontributions": "Gebanakeblünots pemoüköl",
"deletedcontributions-title": "Gebanakeblünots pemoüköl",
"sp-deletedcontributions-contribs": "keblünots",
@@ -1828,8 +1826,8 @@
"exif-colorspace": "Kölaspad",
"exif-componentsconfiguration": "Sinif komponena alik",
"exif-compressedbitsperpixel": "Mod kobopedama magoda",
- "exif-pixelydimension": "Magodavidot",
- "exif-pixelxdimension": "Magodageilot",
+ "exif-pixelxdimension": "Magodavidot",
+ "exif-pixelydimension": "Magodageilot",
"exif-usercomment": "Küpets gebana",
"exif-relatedsoundfile": "Tonaragiv tefik",
"exif-datetimeoriginal": "Dät e tim jafama nünodas",
@@ -2076,7 +2074,6 @@
"redirect-file": "Ragivanem",
"fileduplicatesearch": "Sukön ragivis petelüköl",
"fileduplicatesearch-summary": "Sukön ragivis petelüköl stabü völad kontrolasaedota onsik.",
- "fileduplicatesearch-legend": "Sukön telükoti",
"fileduplicatesearch-filename": "Ragivanem:",
"fileduplicatesearch-submit": "Sukön",
"fileduplicatesearch-info": "pixels $1 Ã $2 Ragivagretot: $3 MIME-sot: $4",
diff --git a/languages/i18n/vro.json b/languages/i18n/vro.json
index afd8d8d996..3e1403c9e9 100644
--- a/languages/i18n/vro.json
+++ b/languages/i18n/vro.json
@@ -1517,8 +1517,8 @@
"exif-colorspace": "Värmiruum",
"exif-componentsconfiguration": "Egä osa tähendüs",
"exif-compressedbitsperpixel": "Pildi kokkopakmismuud",
- "exif-pixelydimension": "Kõlbolinõ pildi lakjus",
- "exif-pixelxdimension": "Kõlbolinõ pildi korgus",
+ "exif-pixelxdimension": "Kõlbolinõ pildi lakjus",
+ "exif-pixelydimension": "Kõlbolinõ pildi korgus",
"exif-usercomment": "Pruukja kommõntaariq",
"exif-relatedsoundfile": "Manopant helüteedüstü",
"exif-datetimeoriginal": "Luumisaig",
diff --git a/languages/i18n/war.json b/languages/i18n/war.json
index 6fb8443905..b4e8ba2e40 100644
--- a/languages/i18n/war.json
+++ b/languages/i18n/war.json
@@ -28,6 +28,7 @@
"tog-watchdefault": "Igdugang in mga pakli ngan mga paypay nga akon ginliwat ngadto han akon angay timan-an",
"tog-watchmoves": "Igdugang in mga pakli nga mga paypay nga akon ginpamalhin ngadto han akon angay timan-an",
"tog-watchdeletion": "Igdugang in mga pakli ngan mga paypay nga akon ginpamara ngadto han akon angay timan-an",
+ "tog-watchuploads": "Dugngi an mga file nga akon gin-upload ha akon watchlist",
"tog-watchrollback": "Igdugang an mga pakli ha akon watchlist an ak mga gin-rollback",
"tog-minordefault": "Tigamni an ngatanan nga mga pagliwat nga gudti hin default",
"tog-previewontop": "Igpakita in prevista o pan-ugsa-nga-lantaw ugsa hiton pagliwat nga kahon",
@@ -45,6 +46,7 @@
"tog-watchlisthidebots": "Tago-a an ginliwat hin bot tikang han angay timan-an",
"tog-watchlisthideminor": "Tago-a an mga gagmay nga pagliwat tikang han angay timan-an",
"tog-watchlisthideliu": "Igatag an mga ginliwat han naka log-in nga mga gumaramit tikang ha gintitiman-an",
+ "tog-watchlistreloadautomatically": "Igreload automatic an akon watchlist kada pagbabag-o han filter (kinahanglan hin JavaScript)",
"tog-watchlisthideanons": "Igtago an mga ginliwat han mga waray nagpakilala nga nagamit tikang ha gintitiman-an",
"tog-watchlisthidepatrolled": "Igatag an mga pinatrolya nga mga pagliwat tikang ha angay timan-an",
"tog-watchlisthidecategorization": "Igtago an kategorisasyon han mga pakli",
@@ -448,7 +450,7 @@
"nocookieslogin": "{{SITENAME}} in nagkikinahanglan hin mga kuki para makapagpalog-in hin mga gumaramit. An im mga kuki in diri nagana.\nAlayon paganaha hira ngan utro liwat.",
"nocookiesfornew": "An imo akawnt han gumaramit in waray nahimo, kay tungod diri kami nakakakompirma han tinikangan.\nSiguradoha nga an mga cookies in nakaandar, igreload ini nga pakli ngan utroha.",
"noname": "Waray ka nakahatag hin maupay nga agnay-hit-gumaramit.",
- "loginsuccesstitle": "Malinamposon an pagsulod",
+ "loginsuccesstitle": "Nakalog-in",
"loginsuccess": "'''Ikaw in nakalog-in ha {{SITENAME}} komo \"$1\".'''",
"nosuchuser": "Waray gumaramit an may-ada ngaran nga \"$1\".\nIt mga agnay-hi-gumaramit in case sensitive.\nPanginano-a it imo pagbaybay, o [[Special:UserLogin/signup|paghimo hin bag-o nga akawnt]].",
"nosuchusershort": "Waray nagamit it may ngaran nga \"$1\".\nKitaa kun amo it im pagbaybay.",
@@ -627,7 +629,7 @@
"newarticle": "(Bag-o)",
"newarticletext": "Ginsunod mo an pakli nga waray pa kahihimo. Para ighimo an pakli, tikanga pagmakinilya ha kahon nga aada ha ubos (kitaa an [$1 nabulig nga pakli] para han kadugangan nga pananabutan). Kun sayop an imo pagkanhi, igpidlit an imo kanan panngaykay (''browser'') '''balik''' (''back'') nga piridlitan.",
"anontalkpagetext": "----\n''Ini in hiruhimangraw-nga-pakli para han waray magpakilala nga gumaramit, nga waray pa hinmimo hin akawnt.''\nMagamit la kami hin IP address para makilal-an hiya.\nSugad hini nga IP address, in puydi sinmaro hiton pipira nga mga gumaramit.\nKun ikaw in waray magpakilala nga gumaramit, ngan pag-abat mo in may mga diri naangay nga komento an ginpapadangat ha imo, alayon nala [[Special:UserLogin/signup|paghimo hin akawnt]] o [[Special:UserLogin|pag-log in]] para malikyan an sumurunod nga mga pagkalipat nga dapat para ha iba nga waray magpakilala nga mga gumaramit.",
- "noarticletext": "Waray yana nahasurat hini nga pakli.\nPuyde hi ikaw [[Special:Search/{{PAGENAME}}|magbiling para han ngaran hini nga pakli]] ha iba nga mga pakli,\n[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} binga an mga nanginginlabot nga mga log],\no [{{fullurl:{{FULLPAGENAME}}|action=edit}} igliwat ini nga pakli] .",
+ "noarticletext": "Waray yana teksto ha sulod hinin nga pakli.\nPuyde ka [[Special:Search/{{PAGENAME}}|mamiling hin titulo hinin nga pakli]] ha iba pa nga mga pakli,\n[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} pamilnga an may mga pagkahisumpay nga mga talaan],\no [{{fullurl:{{FULLPAGENAME}}|action=edit}} igliwat ini nga pakli] .",
"noarticletext-nopermission": "Waray yana nahasurat hini nga pakli\nPuyde hi ikaw [[Special:Search/{{PAGENAME}}|magbiling han ngaran hini nga pakli]] ha iba nga mga pakli,\no [{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} mamiling han mga nanginginlabot nga mga talaan] , kundi diri ka gintutugotan hin paghÃmò hini nga pakli.",
"missing-revision": "Waray na an rebisyon #$1 han pakli nga ginngaranan nga \"{{FULLPAGENAME}}\".\n\nIni in agsob tungod han pagsunod hin daan nga sumpay hin kaagi ha pakli nga ginpara.\nAn mga detalye in mabibilngan ha [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} deletion log].",
"userpage-userdoesnotexist": "Diri nakarehistro an akawnt han gumaramit nga \"$1\".\nAlayon pagpamuruotbuot kun karuyag mo maghimo/mag-edit hini nga pakli.",
@@ -987,9 +989,16 @@
"grant-createaccount": "Pahimo hin mga account",
"grant-createeditmovepage": "Paghimo, pagliwat, ngan pagbalhin hin mga pakli",
"grant-delete": "Pagpara hin mga pakli, mga rebisyon, ngan mga iginsulod ha log",
+ "grant-sendemail": "Igpadara hin email ngadto ha iba nga mga gumaramit",
+ "grant-uploadeditmovefile": "Pagkarga, pagsaliwan, ngan pagbalhin hin mga file",
+ "grant-uploadfile": "Pagkarga hin bag-o nga mga file",
+ "grant-basic": "Mga panguna nga katungod",
+ "grant-viewdeleted": "Kitaa an mga pinanmara nga file ngan pakli",
+ "grant-viewmywatchlist": "Kitaa an imo mga barantayon",
"newuserlogpage": "Talaan han paghimo hin gumaramit",
"newuserlogpagetext": "Ini an talaan han mga nagkahihimo nga mga gumaramit.",
"rightslog": "Talaan hin mga katungod han gumaramit",
+ "rightslogtext": "Ini an talaan han mga pagbag-o han mga katungod hit gumaramit.",
"action-read": "basaha ini nga pakli",
"action-edit": "liwata ini nga pakli",
"action-createpage": "pahimo hin mga pakli",
@@ -1349,8 +1358,6 @@
"cachedspecial-refresh-now": "Igkita an pinakaurhi.",
"categories": "Mga kaarangay",
"categoriesfrom": "Igpakita in mga kaarangay nga natikang ha:",
- "special-categories-sort-count": "igtalaan ha pag-ihap",
- "special-categories-sort-abc": "igtalaan ha abakadahan",
"deletedcontributions": "Mga ginpara nga mga ámot hin nágámit",
"deletedcontributions-title": "Ginpara nga mga amot han nagamit",
"sp-deletedcontributions-contribs": "mga amot",
@@ -1675,12 +1682,11 @@
"import-rootpage-invalid": "An ginhatag nga gamot-pakli in uska diri balido nga titulo.",
"import-rootpage-nosubpage": "Ngaran-lat'ang nga \"$1\" han gamot-pakli in diri natugot hin mga bahin-pakli.",
"importlogpage": "Talaan hin pan-aangbit",
- "javascripttest-pagetext-skins": "Pagpili hin panit para ha pag-paandar han:",
- "tooltip-pt-userpage": "An imo pakli hin gumaramit",
- "tooltip-pt-mytalk": "An imo pakli hin hiruhimangraw",
- "tooltip-pt-preferences": "An imo mga karuyag",
+ "tooltip-pt-userpage": "{{GENDER:|An imo gumaramit}} nga pakli",
+ "tooltip-pt-mytalk": "{{GENDER:|An imo}} hiruhimangraw nga pakli",
+ "tooltip-pt-preferences": "{{GENDER:|An imo}} mga karuyag",
"tooltip-pt-watchlist": "An talaan hin mga pakli nga imo ginsisinubay para hin mga kabag-ohan",
- "tooltip-pt-mycontris": "Talaan han imo mga ámot",
+ "tooltip-pt-mycontris": "Listahan han {{GENDER:|imo}} mga gin-amot",
"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",
@@ -1709,7 +1715,7 @@
"tooltip-t-recentchangeslinked": "Mga bag-o nga kabag-ohan ha mga pakli nga nahasumpay tikang hini nga pakli",
"tooltip-feed-rss": "RSS nga pangarga para hini nga pakli",
"tooltip-feed-atom": "Atom nga pangarga para hini nga pakli",
- "tooltip-t-contributions": "Kitaa an talaan hin mga amot hini nga nágámit",
+ "tooltip-t-contributions": "Kitaa an listahan hin mga amot {{GENDER:$1|hinin nga gumaramit}}",
"tooltip-t-emailuser": "Padad-i hin e-mail ini nga nágámit",
"tooltip-t-upload": "Pagkarga hin mga paypay",
"tooltip-t-specialpages": "Talaan hin mga pinaurog nga pakli",
@@ -2018,7 +2024,6 @@
"version-entrypoints-header-entrypoint": "Surudlan",
"version-entrypoints-header-url": "URL",
"fileduplicatesearch": "Pamiling hin nadoble nga mga paypay",
- "fileduplicatesearch-legend": "Pamiling hin nadoble",
"fileduplicatesearch-filename": "Ngaran han paypay:",
"fileduplicatesearch-submit": "Pamilnga",
"fileduplicatesearch-noresults": "Waray nabilngan nga paypay nga an ngaran in \"$1\".",
diff --git a/languages/i18n/wuu.json b/languages/i18n/wuu.json
index a397552ee6..f8a830063f 100644
--- a/languages/i18n/wuu.json
+++ b/languages/i18n/wuu.json
@@ -37,9 +37,10 @@
"tog-editondblclick": "åå»ç¼è¾é¡µé¢",
"tog-editsectiononrightclick": "å³å»æ®µè½æ é¢ç¼è¾æ®µè½",
"tog-watchcreations": "æ¿æ建个页é¢ææä¼ ä¸ªæ件å å°æ个å
³æ³¨è¡¨éå»",
- "tog-watchdefault": "æ¿æç¼ä¸ªé¡µé¢ææ件å å°æ个å
³æ³¨è¡¨éå»",
- "tog-watchmoves": "çæ移个页ææ件å è¿æ个çæ§å表éå»",
+ "tog-watchdefault": "æ¿æç¼è¾ä¸ªé¡µææ件å è¿æ个å
³æ³¨è¡¨é",
+ "tog-watchmoves": "æ¿æ移å¨ä¸ªé¡µææ件å è¿æ个å
³æ³¨è¡¨é",
"tog-watchdeletion": "çæåªè«åé ææ件å é²æåé注表è£",
+ "tog-watchuploads": "æ¿æä¸ä¼ 个æ°æ件å è¿æ个å
³æ³¨è¡¨é",
"tog-watchrollback": "æ¿ææ§è¡è¿åé个页é¢å å°æ个å
³æ³¨è¡¨éå»",
"tog-minordefault": "é»è®¤æ¿ææç¼è¾æ è®°æç»ç¼è¾",
"tog-previewontop": "æ¥æç¼è¾æ¡ä¸å¤´æ¾ç¤ºé¢è§",
@@ -161,16 +162,16 @@
"cancel": "åæ¶",
"moredotdotdot": "éå¤...",
"morenotlisted": "ç®å¼µè¡¨éæå®æã",
- "mypage": "æ个页é¢",
- "mytalk": "æ个讨论",
+ "mypage": "页é¢",
+ "mytalk": "è®²å¼ ",
"anontalk": "è®²å¼ ",
"navigation": "导èª",
- "and": " æ",
+ "and": "æä»",
"qbfind": "å°",
"qbbrowse": "æµè§",
"qbedit": "ç¼è¾",
"qbpageoptions": "ç®é ",
- "qbmyoptions": "æé ",
+ "qbmyoptions": "æ个页é¢",
"faq": "FAQ",
"faqpage": "Project:FAQ",
"actions": "å¨ä½",
@@ -195,15 +196,15 @@
"view-foreign": "ç»$1ä¸ç",
"edit": "ç¼è¾",
"edit-local": "ç¼è¾æ¬å°è¯´æ",
- "create": "建",
+ "create": "å建",
"create-local": "æ·»å æ¬å°è¯´æ",
"editthispage": "ç¼è¾è¯¥åªé¡µé¢",
"create-this-page": "建ç®é ",
"delete": "å é¤",
"deletethispage": "åªç®é ",
- "undeletethispage": "å¼å ç®é¡µ",
- "undelete_short": "復åæ¶è«å$1å編寫",
- "viewdeleted_short": "æ̺$1个å è±ç¼å",
+ "undeletethispage": "è¿åç®é¡µ",
+ "undelete_short": "è¿å{{PLURAL:$1|ä¸è¶ç¼è¾|$1è¶ç¼è¾}}",
+ "viewdeleted_short": "æ{{PLURAL:$1|ä¸åªå è±ä¸ªç¼è¾|$1åªå è±ä¸ªç¼è¾}}",
"protect": "ä¿",
"protect_change": "æ¹",
"protectthispage": "ä¿æ¤è¯¥ä¸ªé¡µé¢",
@@ -454,8 +455,8 @@
"nocookieslogin": "æ¬ç«å©ç¨Cookiesè¿è¡ç¨æ·ç»å½ï¼ä¾¬ä¸ªCookiesåç
å
³æ许ï¼è¯·å¼å¼æ¥åç»å½ã",
"nocookiesfornew": "ç¨æ·è´¦å·æ建起ï¼æé确认å¼äºæ¸ 个åå ã\nä½ è¦åå®cookiesæ¯å¼åé个ï¼å·æ°ç®é¡µè¯è¯åç¸ã",
"noname": "ç¨æ·åæ æã",
- "loginsuccesstitle": "ç»å½æå",
- "loginsuccess": "'''侬ç°å¨ä»¥ \"$1\" 个身份ç»å½å°{{SITENAME}}ã '''",
+ "loginsuccesstitle": "ç»å½å",
+ "loginsuccess": "侬ç°å¨ä»¥â$1â个身份ç»å½å°{{SITENAME}}ã ",
"nosuchuser": "寻å¼çç¨æ·â$1âãç¨æ·åæ¯å¤§å°åææå¤å åºåç¹ç®ä½ä¸ªã请æ£æ¥æ¼åï¼æè
[[Special:UserLogin/signup|å¼åªæ°è´¦æ·]]ã",
"nosuchusershort": "æ 没å«â$1â个ç¨æ·ã请æ£æ¥ä¾¬ä¸ªè¾å
¥ã",
"nouserspecified": "侬å¿
é¡»é个ç¨æ·åã",
@@ -507,7 +508,7 @@
"newpassword": "æ°å¯ç ï¼",
"retypenew": "åæä¸éæ°å¯ç ï¼",
"resetpass_submit": "设置å¯ç åç»å½",
- "changepassword-success": "å¯ç¢¼æ¹å¥½åï¼\nè½çç»éç¶ä¸...",
+ "changepassword-success": "侬个å¯ç æ¹å¥½åï¼",
"changepassword-throttled": "侬è¯ç»å½å¿å¤æ¬¡åãç$1åè¯è¯çã",
"botpasswords": "æºå¨äººå¯ç ",
"botpasswords-label-appid": "æºå¨äººååï¼",
@@ -517,7 +518,7 @@
"resetpass-no-info": "侬å¿
é¡»ç»å½èæ好ç´æ¥è¿å
¥ç®åªé¡µé¢ã",
"resetpass-submit-loggedin": "æ´æ¹å¯ç ",
"resetpass-submit-cancel": "åæ¶",
- "resetpass-wrong-oldpass": "æ æ个临æ¶æè
ç°æå¯ç ã\n侬ä½å
´å·²ç»æåæ¿å¯ç æ¹è±ï¼æè
å·²ç»è¯·æ±ä¸ä¸ªæ°ä¸ªä¸´æ¶å¯ç ã",
+ "resetpass-wrong-oldpass": "æ æ个临æ¶æè
ç°æå¯ç ã侬ä½å
´å·²ç»æ¿å¯ç æ¹è±ï¼æè
请æ±çä¸åªæ°ä¸ªä¸´æ¶å¯ç ã",
"resetpass-recycled": "请éç½®ä¸åªæ侬å½åå¯ç å¼ä¸æ ·ä¸ªå¯ç ã",
"resetpass-temp-password": "临æ¶å¯ç ï¼",
"resetpass-abort-generic": "å¯ç æ´æ¹å·²ç»çæ©å±ç¨åºä¸æ¢ã",
@@ -575,8 +576,8 @@
"summary-preview": "æè¦é¢è§ï¼",
"subject-preview": "主é¢é¢è§ï¼",
"blockedtitle": "ç¨æ·æ¨æ¥å°",
- "blockedtext": "侬个ç¨æ·åæIPå°åå·²ç»æ¨$1æ¥å°ã\n\nç®è¶æ¥å°æ¯ç±$1æå°ä¸ªãåå æ¯''$2''ã\n\n* ç®è¶æ¥å°å¼å§ä¸ªè¾°å
æ¯ï¼$8\n* ç®è¶æ¥å°å°æ个辰å
æ¯ï¼$6\n* 对äºçæ¥å°è
ï¼$7\n\n侬å¯ä»¥èç»$1æè
å
¶ä»ä¸ª [[{{MediaWiki:Grouppage-sysop}}|管çå]]ï¼è®¨è®ºç®è¶æ¥å°ã\né¤é侬已ç»å侬个 [[Special:Preferences|个人设置]]éå设置ä»ä¸åªææ个çµåé®ä»¶å°åï¼å¼ç¶ä¾¬å¼å¥½ä½¿ç¨ãe-mailç®ä½ç¨æ·ãåè½ãå½è®¾ç½®äºä¸åªææ个çµåé®ä»¶å°åä¹åï¼ç®åªåè½æ¯å¼ä¼çå°é个ã\n\n侬个IPå°åæ¯$3ï¼è该æ¥å°IDæ¯ #$5ã 请åæ侬个æ¥è¯¢éå注æ以ä¸ææèµæã",
- "autoblockedtext": "侬个IPå°åå·²ç»èªå¨æ¥å°ï¼ç±äºä¹åå¦ä¸ä½ æ侬ç¨ä¸æ ·IP个ç¨æ·ç$1ææ¥å°ã\nèæ¥å°ä¸ªåå æ¯ï¼\n\n:''$2''\n\n* ç®è¶æ¥å°ä¸ªå¼å§è¾°å
æ¯ï¼$8\n* ç®è¶æ¥å°ä¸ªå°æè¾°å
æ¯ï¼$6\n* 对äºçæ¥å°è
ï¼$7\n\n侬å¯ä»¥èç»$1æè
å
¶ä»ä¸ª [[{{MediaWiki:Grouppage-sysop}}|管çå]]ï¼è®¨è®ºç®è¶æ¥å°ã\né¤é侬已ç»å侬个 [[Special:Preferences|个人设置]]éå设置ä»ä¸åªææ个çµåé®ä»¶å°åï¼å¼ç¶ä¾¬å¼å¥½ä½¿ç¨ãe-mailç®ä½ç¨æ·ãåè½ãå½è®¾ç½®äºä¸åªææ个çµåé®ä»¶å°åä¹åï¼ç®åªåè½æ¯å¼ä¼çå°é个ã\n\n侬个IPå°åæ¯$3ï¼è该æ¥å°IDæ¯ #$5ã 请åæ侬个æ¥è¯¢éå注æ以ä¸ææèµæã",
+ "blockedtext": "侬个ç¨æ·åæIPå°åå·²ç»çæ¥å°ã \n\nç±$1æ¥å°ãçåºä¸ªåå æ¯$2 ã\n\n* æ¥å°å¼å§è¾°å
ï¼$8\n* æ¥å°å°æè¾°å
ï¼$6\n* ç®æ æ¥å°å¯¹è±¡ï¼$7\n\n侬å¯ä»¥èç»$1æè
å
¶ä»ä¸ª[[{{MediaWiki:Grouppage-sysop}}|管çå]]ï¼è®¨è®ºç®è¶æ¥å°ã侬å¼å¥½ä½¿ç¨âçµé®èç³»ç®ä½ç¨æ·âåè½ï¼é¤é侬已ç»å侬个[[Special:Preferences|è´¦å·è®¾ç½®]]éåæå®ä»ä¸åªææ个çµé®å°å并ä¸æçç¦æ¢ä½¿ç¨ç®åªåè½ã侬å½å个IPå°åæ¯$3ï¼è该æ¥å°IDæ¯#$5ã请åæ侬个æ¥è¯¢éå注æ以ä¸ææèµæã",
+ "autoblockedtext": "侬个IPå°åå·²ç»çèªå¨æ¥å°ï¼å 为ä¹åå¦ä¸ä½ç$1æ¥å°ä¸ªç¨æ·æ侬ç¨ä¸æ ·ä¸ªIPå°åãæ¥å°ä¸ªåå æ¯ï¼\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ã请åæ侬个æ¥è¯¢éå注æ以ä¸ææèµæã",
"blockednoreason": "æçåºåå ",
"whitelistedittext": "请$1ç¼è¾ã",
"confirmedittext": "åæç¼è¾æ¤é¡µä¹å侬å¿
须确认侬个é®ç®±å°åã请éè¿[[Special:Preferences|个人设置]]设置并éªè¯ä¾¬ä¸ªé®ç®±å°åã",
@@ -594,7 +595,7 @@
"noarticletext-nopermission": "ç®åªé¡µé¢ç®ååä¸ææ¬ã侬å¯ä»¥åæå
¶ä»é¡µé¢é«å¤´[[Special:Search/{{PAGENAME}}|寻ç®é¡µæ é¢]]ï¼æè
[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} 寻ç¸å
³æ¥å¿] ï¼ä½å¿
è¿ä¾¬åä¸æé建ç«ç®åªé¡µé¢ã",
"userpage-userdoesnotexist": "ç¨æ·è´¦æ·â$1 âå¼æ¾å建ã请åæå建ï¼ç¼è¾è¿ä¸ªé¡µé¢å头å
æ£æ¥ä¸è®°ã",
"userpage-userdoesnotexist-view": "ç¨æ·è´¦æ·â$1âå¼æ¾å建ã",
- "blocked-notice-logextract": "ç®ä½ç¨æ·ç®æçå°éå许ã\nä¸å¤´ææè¿ä¸ªå°é纪å½ä»¥ä¾åèï¼",
+ "blocked-notice-logextract": "ç®ä½ç¨æ·ç®æçå°éå许ãä¸å¤´ææè¿ä¸ªå°é纪å½ä»¥ä¾åèï¼",
"clearyourcache": "注æï¼ åæä¿åä¹åï¼ä¾¬ä½å
´è¦æ¸
é¤æµè§å¨ä¸ªç¼åæ好çè§æ¹åã\n* FirefoxæSafariï¼ æ¿ç¢âShiftâ个åæ¶ç¹å»âå·æ°âï¼ææ¿âCtrl-F5âæâCtrl-Râï¼Macä¸æ¯ââ-Râï¼\n* Google Chromeï¼ æ¿âCtrl-Shift-Râï¼Macä¸æ¯ââ-Shift-Râï¼\n* Internet Explorerï¼ æ¿ç¢âCtrlâ个åæ¶ç¹å»âå·æ°âï¼ææ¿âCtrl-F5â\n* Operaï¼ åæâå·¥å
·âé¦é项âéåæ¸
é¤ç¼å",
"usercssyoucanpreview": "'''æ示ï¼''' åæä¿åä¹å请ç¨â{{int:showpreview}}âæ¿é®æ¥æµè¯æ° CSS ã",
"userjsyoucanpreview": "'''æ示ï¼''' åæä¿åä¹å请ç¨â{{int:showpreview}}âæ¿é®æ¥æµè¯æ° JavaScript ã",
@@ -609,7 +610,7 @@
"continue-editing": "å°ç¼è¾åºå»",
"previewconflict": "ç®ä¸ªé¢è§æ¾ç¤ºäºä¸å¤´æåç¼è¾åºéå个å
容ãæ¸ ä¼å¾åæ侬ä¿åä¹ååºç°ã",
"session_fail_preview": "'''å¼å¥½ææï¼ç±äºä¼è¯æ°æ®è½å¤±ï¼æä¼²å¼å¥½å¤ç侬个ç¼è¾ã'''请éè¯ãå¦æå次失败ï¼è¯·å°è¯[[Special:UserLogout|ç»åº]]ä¹åéæ°ç»å½ã",
- "session_fail_preview_html": "'''å¼å¥½ææï¼æä¼²å¼å¥½å¤ç侬åæè¿ç¨æ°æ®è½å¤±è¾°å
个ç¼è¾ã'''\n\n''ç±äº{{SITENAME}}å
许使ç¨åå§ä¸ª HTMLï¼ä¸ºèé²è JavaScript æ»å»ï¼é¢è§å·²çéèã''\n\n'''å¦æè¿æ¯ä¸æ¬¡åæ³çç¼è¾ï¼è¯·éæ°è¿è¡å°è¯ã'''å¦æè¿ä¸è¡ï¼è¯· [[Special:UserLogout|éåº]]并éæ°ç»å½ã",
+ "session_fail_preview_html": "å¼å¥½ææï¼å 为ä¼è¯æ°æ®è½å¤±ï¼æä¼²å¼å¥½å¤ç侬个ç¼è¾ã\n\nç±äº{{SITENAME}}å
许使ç¨åå§ä¸ªHTMLï¼ä¸ºèé²èJavaScriptæ»å»ï¼é¢è§å·²ç»å¥è±ã \n\nå¦æç®æ¯ä¸è¶åæ³ä¸ªç¼è¾ï¼è¯·åè¯ä¸éã å¦æä»æ§å¼æ¥äºï¼è¯·[[Special:UserLogout|ç»åº]]èåéæ°ç»å½ï¼å¹¶ç¡®ä¿ä¾¬ä¸ªæµè§å¨å
许æ¬ç«ä¸ªcookieã",
"token_suffix_mismatch": "ç±äºä¾¬ç¨æ·ç«¯éå个ç¼è¾ä»¤çæ¯æä»ä¸äºæ ç¹ç¬¦å·åå
ï¼ä¸ºé²æ¢ç¼è¾ä¸ªæåæåï¼ä¾¬ä¸ªç¼è¾å·²ç»çå头ã ç®ç§æ
åµé常åºç°åæ使ç¨å«æ交å
³bugã以ç½ç»ä¸ºä¸»ä¸ªå¿å代çæå¡ä¸ªè¾°å
ã",
"editing": "æ¥éç¼å$1",
"creating": "å建â$1â",
@@ -686,7 +687,7 @@
"viewpagelogs": "æç®é¡µæ¥å¿",
"nohistory": "该åªé¡µé¢åæ¨ç¼è¾åå²ã",
"currentrev": "æåçæ¬",
- "currentrev-asof": "äº$1个ææ°ä¿®è®¢ç",
+ "currentrev-asof": "$1个ææ°ä¿®è®¢ç",
"revisionasof": "åæ$1æä½åºä¸ªä¿®è®¢ç",
"revision-info": "{{GENDER:$6|$2}}$1个çæ¬$7",
"previousrevision": "âæ§ç¹ä¸ªçæ¬",
@@ -698,7 +699,7 @@
"page_first": "æå",
"page_last": "é¿æ«",
"histlegend": "éæ©æ¯è¾çæ¬ï¼æ è®°è¦æ¯è¾ä¸ªä¸¤åªçæ¬ï¼å车æè
æ¿é¡µé¢åºé个æ¿é®ã å¾ä¾ï¼ï¼å½åï¼ = æå½åçæ¬æå¥ä¸¤æ ·ï¼ ï¼ä¸ä¸ªï¼ = æä¸ä¸ªçæ¬æå¥ä¸¤æ ·ï¼å° = å°æ¹å¨ã",
- "history-fieldset-title": "æµè§é¡µå²",
+ "history-fieldset-title": "æµè§åå²",
"history-show-deleted": "åªæ¾ç¤ºå è±ä¸ª",
"histfirst": "顶æ©",
"histlast": "顶æ",
@@ -753,7 +754,7 @@
"revdelete-submit": "åºç¨äºæ£ä¸ä¸ª{{PLURAL:$1|修订}}",
"revdelete-success": "'''修订个å¯è§æ§å·²ç»æåæ´æ°ã'''",
"revdelete-failure": "çæ¬ä¸ªå¯è§æ§æ æ³æ´æ°ï¼$1",
- "logdelete-success": "'''äºä»¶ä¸ªå¯è§æ§å·²ç»æå设置ã'''",
+ "logdelete-success": "æ¥å¿ä¸ªå¯è§æ§è®¾ç½®å¥½åã",
"logdelete-failure": "'''äºä»¶ä¸ªå¯è§æ§æ æ³è®¾ç½®ï¼'''\n$1",
"revdel-restore": "æ¹åå¯è§æ§",
"pagehist": "页é¢åå²",
@@ -795,7 +796,7 @@
"mergelog": "å并æ¥å¿",
"revertmerge": "åå并",
"mergelogpagetext": "ä¸åºæ¯åªæè¿åç个页é¢åå²å并个记å½å表ã",
- "history-title": "â$1âççæ¬åå²",
+ "history-title": "â$1â个修订åå²",
"difference-title": "â$1âçæ¬é´ä¸ªå·®å«",
"difference-title-multipage": "页é¢â$1âæâ$2âä¹é´ä¸ªå·®å«",
"difference-multipage": "ï¼é¡µé¢é´ä¸ªå·®å«ï¼",
@@ -820,7 +821,7 @@
"nextn-title": "å$1个ç»æ",
"shown-title": "ä¸é¡µæ¾ç¤º$1个ç»æ",
"viewprevnext": "æï¼$1 {{int:pipe-separator}} $2ï¼ï¼$3ï¼",
- "searchmenu-exists": "'''ç®wikiéæä¸é¡µååâ[[:$1]]âå'''",
+ "searchmenu-exists": "ç®wikiéæåªå«â[[:$1]]â个页é¢åã {{PLURAL:$2|0=|å¦è§å¯»ç个ç»æã}}",
"searchmenu-new": "ç»ç®Wikiä¸å»ºâ[[:$1]]âé¡µï¼ {{PLURAL:$2|0=|å¦è§å¯»ç个页é¢ã|å¦è§æ寻个ç»æã}}",
"searchprofile-articles": "å
容页",
"searchprofile-images": "å¤åªä½",
@@ -832,7 +833,7 @@
"searchprofile-advanced-tooltip": "åæèªå®ä¹åå空é´éåæç´¢",
"search-result-size": "$1ï¼$2个åï¼",
"search-result-category-size": "$1个æåï¼$2个å¿åç±»ï¼$3个æ件ï¼",
- "search-redirect": "ï¼è½¬æ³å° $1ï¼",
+ "search-redirect": "ï¼éå®å $1ï¼",
"search-section": "ï¼æ®µè½ $1ï¼",
"search-category": "ï¼åç±»$1ï¼",
"search-file-match": "ï¼å¹é
æ件å
容ï¼",
@@ -1213,8 +1214,10 @@
"speciallogtitlelabel": "ç®æ ï¼æ é¢ï¼æé对ç¨æ·ä½¿ç¨{{ns:user}}:ç¨æ·åï¼ï¼",
"log": "è®°å½",
"alllogstext": "ææ{{SITENAME}}å
¬å¼æ¥å¿ä¸ªèåå±ç¤ºã侬å¯ä»¥éæ©æ¥å¿ç±»åãç¨æ·åï¼åºå大å°åï¼æè
ç¸å
³é¡µé¢ï¼åºå大å°åï¼æ¥ç¼©å°æ寻èå´ã",
+ "checkbox-all": "侪é",
+ "checkbox-none": "侪å¼é",
"allpages": "å
¨é¨é¡µé¢",
- "nextpage": "ä¸é¡µ ï¼$1ï¼",
+ "nextpage": "ä¸ä¸é¡µï¼$1ï¼",
"prevpage": "ä¸ä¸é¡µï¼$1ï¼",
"allpagesfrom": "æ¾ç¤ºä¸ªé¡µé¢å¼å§äº:",
"allpagesto": "æ¾ç¤ºä»æ¤å°ç»æ个页é¢ï¼",
@@ -1545,7 +1548,7 @@
"table_pager_first": "头ä¸é¡µ",
"table_pager_last": "é¿æ«ä¸é¡µ",
"table_pager_limit": "æ¾ç¤º $1 æ¡æ¯é¡µ",
- "autoredircomment": "éå®å页é¢è³[[$1]]",
+ "autoredircomment": "éå®å页é¢å°[[$1]]",
"autosumm-new": "æ°é¡µé¢ï¼â$1â",
"watchlistedit-normal-title": "ç¼è¾çè§å表",
"watchlistedit-normal-legend": "ä»å
³æ³¨è¡¨éåæ¿è±æ é¢",
diff --git a/languages/i18n/xal.json b/languages/i18n/xal.json
index dbcefa4972..bae1ce5007 100644
--- a/languages/i18n/xal.json
+++ b/languages/i18n/xal.json
@@ -830,8 +830,8 @@
"exif-artist": "ÐокÑÑлÑ",
"exif-copyright": "ÐокÑÑлÑин зөвÓÐ½Ó Ñзн",
"exif-exifversion": "Exif'ин һаÑÑ",
- "exif-pixelydimension": "ÐÒ¯ÑÑ Ð·ÑÑгин өндÑ",
- "exif-pixelxdimension": "ÐÒ¯ÑÑ Ð·ÑÑгин Ó©Ñгн",
+ "exif-pixelxdimension": "ÐÒ¯ÑÑ Ð·ÑÑгин өндÑ",
+ "exif-pixelydimension": "ÐÒ¯ÑÑ Ð·ÑÑгин Ó©Ñгн",
"exif-exposuretime": "ÐÓвÑдгÑн Ñаг",
"exif-exposuretime-format": "$1 Ñ ($2)",
"exif-contrast": "ÐÓ©ÑÒ¯",
diff --git a/languages/i18n/xmf.json b/languages/i18n/xmf.json
index bc98445479..19b3bec6db 100644
--- a/languages/i18n/xmf.json
+++ b/languages/i18n/xmf.json
@@ -15,7 +15,8 @@
"ìë¼",
"Silovan",
"David1010",
- "Macofe"
+ "Macofe",
+ "Nemo bis"
]
},
"tog-underline": "á áªá®á£áá¤áᨠáááá¦ááá£á:",
@@ -1180,7 +1181,7 @@
"recentchangeslinked-page": "á®áá¡áááᨠá¯áá®á:",
"recentchangeslinked-to": "ááááááá á á¥áá«áá á ááá á®áá¡áááá¨á ááá áªá®áá á®áá¡áááá¤á¨á ááá¨áá¦áááá ááá áá¤áá¤",
"recentchanges-page-added-to-category": "[[:$1]] ááá«ááááá· á á ááá¢áááá ááá¡",
- "recentchanges-page-added-to-category-bundled": "[[:$1]] áá {{PLURAL:$2|áá á á®áá¡á·áá|$2 á®áá¡á·áá}} ááá«áááá á á ááá¢áááá ááá¡",
+ "recentchanges-page-added-to-category-bundled": "[[:$1]] áá [[Special:WhatLinksHere/$1|{{PLURAL:$2|áá á á®áá¡á·áá|$2 á®áá¡á·áá}}]] ááá«áááá á á ááá¢áááá ááá¡",
"recentchanges-page-removed-from-category": "[[:$1]] ááá¡áá á á á ááá¢áááá ááá¨á",
"recentchanges-page-removed-from-category-bundled": "[[:$1]] áá {{PLURAL:$2|áá á á®áá¡á·áá|$2 á®áá¡á·áá}} ááá¡áá á á á ááá¢áááá ááá¨á",
"upload": "á¤ááááᨠáá®áá áá£á",
diff --git a/languages/i18n/yi.json b/languages/i18n/yi.json
index d5f577682f..97278ac1cf 100644
--- a/languages/i18n/yi.json
+++ b/languages/i18n/yi.json
@@ -16,7 +16,8 @@
"Amire80",
"පà·à·à¶³à· à¶à·à·à·à¶±à·à¶¯",
"Matma Rex",
- "Macofe"
+ "Macofe",
+ "Nemo bis"
]
},
"tog-underline": "ש×ר×××× ××× ×ער ××× ×§×¢×",
@@ -473,7 +474,7 @@
"noemail": "ס'××× × ××©× ×¨×¢×§×ר×××¨× ×§××× ×¢-פ××¡× ×Ö·×רעס פֿ×ַר ××Ö·× ×צער \"$1\".",
"noemailcreate": "××ר ××Ö·×¨×¤Ö¿× ×¤Ö¿×ַר××ר×× × ××××××× ×¢-פ××¡× ×Ö·×רעס",
"passwordsent": "× × ×× ×¤×ס××××¨× ××× ×עש××§× ××¢××××¨× ×¦×× ×¢-פ××¡× ××רעס רע××ס×ר××¨× ×¤×ר \"$1\".\n××××¢ ××××ער ×ר××× ×××××¨× × ×× ××¢× ×××ס ××ר ××ק××× ×¢×¡.",
- "blocked-mailpassword": "×××ער ××× ×¤× ××רעס ××× ×××ק××¨× ×¦× ×¨×¢××ק××ר×, ×ער×××¢×× ××¢× × ××ר × ××©× ×¢×¨××××× ×¦× ××× ××¦× ×××× ×¤×ס××××¨× ××××ער×××פ××¢××× × ×¤Ö¿×× ×§×¦××¢ ××× ×¦× ×¤×ר××××× ×¡×ס××¢× ×§×¨××××× ××¥.",
+ "blocked-mailpassword": "×××ער IP-×Ö·×רעס ××× ×××ָק××¨× ×¤×× ×¨×¢××ַק××ר×. ××× ×¦× ×¤×ַר×××× ××ס×ר×××, ס׳××× × ×× ×ער××××× ×¦× × ××¦× ×× ×¤Ö¼×ַר×Ö¸× ××××ער×××פש××¢××× × ×¤×× ×§×¦××¢.",
"eauthentsent": "× ××ש××¢××××× × ×¢-×ר××× ××× ×עש××§× ××¢××××¨× ×¦× ××¢× ××ש××××× ×¢-פ××¡× ××רעס. ××××ער ס×× ×××¢×××¢ ×× ×ערע ×¢-פ××¡× ×××¢× ×××¢×¨× ×עש××§× ×¦× ×ער ק×× ××¢, ×××¢× ××ר ×××¨×¤× ×¤×××× ×× ×× ××××××× ××¢× ××× ×ער ××¢×××× × ××× ×¦× ×××× ×××ער ×× ×× ×§×× ××¢ ××× ××קע ×××ערס.",
"throttled-mailpassword": "×'××× ×©××× ×עש××§× × ×××צ×ר××× ×¦×ר×קצ×ש××¢×× ××ס פ×ס×××ר×, ××× {{PLURAL:$1|×ער ×עצ×ער שע×|×× ×עצ××¢ $1 שע×'×}}. ××× ×¦× ×¤×ר×ײַ×× ×©××¢×× ××× ×צ×, × ×ר ×××× ×¤×ס××××¨× ×¦×ר×קש××¢×× ×××צ×ר××× ×××¢× ×עש××§× ×××¢×¨× ××× {{PLURAL:$1|× ×©×¢× |$1 שע×'×}}.",
"mailerror": "פע×ער ×××× ×©××§× ×¤Ö¼×ָס×: $1",
@@ -1251,9 +1252,9 @@
"recentchangeslinked-page": "×××Ö·× × ×Ö¸××¢×:",
"recentchangeslinked-to": "צ××× ×¢× ×ער×× ××¢× ×¦× ×××¢×ער פ×ר××× ×× ×¦× ××¢× ×××× ×× ×©×××",
"recentchanges-page-added-to-category": "[[:$1]] צ×××¢××××× ×¦× ×§×××¢××ר××¢",
- "recentchanges-page-added-to-category-bundled": "[[:$1]] ××× {{PLURAL:$2|×××× ××××|$2 ×××¢×ער}} צ×××¢××××× ×¦× ×§×××¢××ר××¢",
+ "recentchanges-page-added-to-category-bundled": "[[:$1]] צ×××¢××××× ×¦× ×§×Ö·××¢××ָר××¢, [[Special:WhatLinksHere/$1|×ער ××Ö¸××קער ×××Ö·× ××× ×××× ×עש××Ö¸×¡× ××× ×Ö·× ×ערע ×××¢×ער]]",
"recentchanges-page-removed-from-category": "[[:$1]] ×ר×פ××¢× ×××¢× ×¤×× ×§×××¢××ר××¢",
- "recentchanges-page-removed-from-category-bundled": "[[:$1]] ××× {{PLURAL:$2|×××× ××××|$2 ×××¢×ער}} ×ר×פ××¢× ×××¢× ×¤×× ×§×××¢××ר××¢",
+ "recentchanges-page-removed-from-category-bundled": "[[:$1]] ×ַר×ָפּ××¢× ×××¢× ×¤×× ×§×Ö·××¢××ָר××¢, [[Special:WhatLinksHere/$1|×ער ××Ö¸××קער ×××Ö·× ××× ×××× ×עש××Ö¸×¡× ××× ×Ö·× ×ערע ×××¢×ער]]",
"autochange-username": "××¢×××¢××××§× ×××××××××שער ×××ש",
"upload": "×ַרױפֿ××Ö¸×× ××××ער/×עקעס",
"uploadbtn": "×ַרױפֿ××Ö¸×× ×עקע",
@@ -1663,8 +1664,6 @@
"categories-submit": "××××××",
"categoriespagetext": "×× ×¤Ö¿××××¢× ××¢ {{PLURAL:$1| ק×Ö·××¢××ָר××¢ ×Ö·× ×××Ö·××|ק×Ö·××¢××ָר×עס ×Ö·× ×××Ö·×××}} ×××¢×ער ××ער ××¢×××¢.\n[[Special:UnusedCategories|×××××Ö·× ×צ××¢ ק×Ö·××¢××ר×עס]] ××¢× ×¢× × ××©× ××¢××××× ××.\n××¢× ×××× [[Special:WantedCategories|××¢×××××¢ ק×Ö·××¢××ר×עס]].",
"categoriesfrom": "××ײַ×× ×§×Ö·××¢××ר×עס ×Ö¸× ××××× ××× ×¤Ö¿××:",
- "special-categories-sort-count": "ס×ר××ר ××××× ×¦×× ×××¢×ער",
- "special-categories-sort-abc": "ס×ר×××¨× ×Ö·×פֿ×Ö·××¢××ש",
"deletedcontributions": "×××ס××¢×עק××¢ ××Ö·× ×צער ×ײַש×ײַער×× ××¢×",
"deletedcontributions-title": "×××ס××¢×עק××¢ ××Ö·× ×צער ×ײַש×ײַער×× ××¢×",
"sp-deletedcontributions-contribs": "×ײַש×ײַער×× ××¢×",
@@ -2238,11 +2237,7 @@
"import-logentry-upload-detail": "$1 {{PLURAL:$1|רע××××××¢|רע×××××עס}} ×××פ×ר××ר×",
"import-logentry-interwiki-detail": "$1 {{PLURAL:$1|רע××××××¢|רע×××××עס}} ×××פ×ר×××¨× ×¤Ö¿×× $2",
"javascripttest": "JavaScript ×עס×",
- "javascripttest-pagetext-noframework": " ×ער ×××× ××× ×¨×¢×ער××××¨× ×¤×ר JavaScript. פר×××××.",
- "javascripttest-pagetext-unknownframework": "×××××ק×× ×ער ×עס×× ××¢×¨×¢× \"$1\".",
"javascripttest-pagetext-unknownaction": "×××××ַק×Ö·× ××¢ ×ַקצ××¢ '$1'",
- "javascripttest-pagetext-frameworks": "××××¢ ק××××× ×××× ×¢× ×¤×× ×× ×¤×××× ××¢ ×עס××Ö¾×ערע×: $1",
- "javascripttest-pagetext-skins": "ק××××× × ××× ×צער־××××ערפ××× ××× ×××ס ××ר×צ×פ××¨× ×× ×××ק×ת:",
"javascripttest-qunit-intro": "××¢× [$1 ××ק×××¢× ××צ××¢ פ×ר ×עס××] ×ײַ mediawiki.org.",
"tooltip-pt-userpage": "×××ער {{GENDER:|××× ×צער|××× ×צער××}} ××××",
"tooltip-pt-anonuserpage": "××Ö·× ×צער ×××Ö·× ×¤×× ××¢× IP ×Ö·×רעס",
@@ -2485,8 +2480,8 @@
"exif-colorspace": "ק×××ר ר×××",
"exif-componentsconfiguration": "×××× ×× × ×¤×× ××¢×× ××ש××× ×××××",
"exif-compressedbitsperpixel": "×××× ×¦××××ק×××¢××©× ××××",
- "exif-pixelydimension": "×××× ×ר×××",
- "exif-pixelxdimension": "×××× ××××",
+ "exif-pixelxdimension": "×××× ×ר×××",
+ "exif-pixelydimension": "×××× ××××",
"exif-usercomment": "××× ×צער ק×××¢× ××ר×",
"exif-relatedsoundfile": "פֿ×ַר××× ××¢× ×¢ ××××××Ö¸ ×עקע",
"exif-datetimeoriginal": "××××× ××× ×¦××× ×¤×× ××Ö·×× ××ש×פ×× ×",
@@ -2806,7 +2801,7 @@
"watchlistedit-raw-done": "×××ער ×××פֿפ×ַס×× × ××ס××¢ ××× ××¢××××¨× ×ער××²Ö·× ××ק×",
"watchlistedit-raw-added": "{{PLURAL:$1|1 ×××× ×××|$1 ×××××¢× ××¢× ×¢×}} ××¢×××¢× ×¦×××¢×××××:",
"watchlistedit-raw-removed": "{{PLURAL:$1|1 ×××× ×××|$1 ×××××¢× ××¢× ×¢×}} ××¢×××¢× ×ַר×ָפ××¢× ×××¢×:",
- "watchlistedit-clear-title": "×פ×ער××× ×× ×××פפ××¡× ××ס××¢",
+ "watchlistedit-clear-title": "×××פר×Ö·××¢× ×× ×××פפּ×ַס×Ö¾××ס××¢",
"watchlistedit-clear-legend": "××××××§× ×× ×××פפ××¡× ××ס××¢",
"watchlistedit-clear-explain": "×××¢ ×××¢×ער ×××¢× ××¢× ×ר××¤× ×¢××¢× ×¤×× ×ײַער ×××פפ×ס×× ×Ö¾××ס××¢",
"watchlistedit-clear-titles": "×××××¢×:",
@@ -2892,7 +2887,6 @@
"version-entrypoints-header-url": "URL",
"version-libraries-library": "×××××××עק",
"version-libraries-version": "××ערס××¢",
- "redirect-legend": "××ײַ×ערײַ×ערפ×ר×× × ×¦× × ×עקע ××ער ××××",
"redirect-submit": "××××",
"redirect-lookup": "××××:",
"redirect-value": "××ער×:",
@@ -2903,7 +2897,6 @@
"redirect-not-exists": "×××¢×¨× × ××©× ××¢×ר×פ×",
"fileduplicatesearch": "×××× ××פ××ק×Ö·××¢ ×עקעס",
"fileduplicatesearch-summary": "×××× ××פ××ק×××¢ ×עקעס ×××××¨× ××××£ ××ש־××ער××.",
- "fileduplicatesearch-legend": "×××× × ××פ××ק×Ö·×",
"fileduplicatesearch-filename": "×עקע:",
"fileduplicatesearch-submit": "××××",
"fileduplicatesearch-info": "$1 à $2 פ××§×¡×¢× ×עקע ×ר××ס: $3 ××פ MIME: $4",
@@ -3011,7 +3004,7 @@
"logentry-newusers-create2": "××× ×צער ק×× ××¢ $1 ××× {{GENDER:$2|×עש××¤× ××¢×××ר×}} ×××¨× $3",
"logentry-newusers-byemail": "××× ×צער ק×× ××¢ $3 ××× {{GENDER:$2|×עש××¤× ××¢×××ר×}} ×××¨× $1 ××× ××ס פ×ס××××¨× ××× ×עש××§× ××¢××××¨× ×××¨× ×¢Ö¾×¤×ס×",
"logentry-newusers-autocreate": "××Ö·× ×צער ק×× ××¢ $1 {{GENDER:$2|×עש×פ×}} ×××××××××ש",
- "logentry-rights-rights": "$1 ××× {{GENDER:$2|××¢××××}} ×ר×פע ×××××××ערש×Ö·×¤Ö¿× ×¤Ö¿×ַר $3 פֿ×× $4 ××××£ $5",
+ "logentry-rights-rights": "$1 ××Ö¸× {{GENDER:$2|××¢××××}} ×ר×פּע ×××××××ערש×Ö·×¤× ×¤×ַר $3 פ×× $4 ××××£ $5",
"logentry-rights-rights-legacy": "$1 {{GENDER:$2|××× ××¢××××}} ×ר×פע ×××××××ערש××¤× ×¤×ר $3",
"logentry-rights-autopromote": "$1 ×××××××××ש {{GENDER:$2|פר××××××ר×}} פ×× $4 ×¦× $5",
"logentry-upload-upload": "$1 {{GENDER:$2|××× ×ר××פ××¢××××}} $3",
@@ -3123,5 +3116,9 @@
"special-characters-group-khmer": "××ער",
"special-characters-title-endash": "×¢× ××רע",
"special-characters-title-emdash": "×¢× ××רע",
- "special-characters-title-minus": "××× ×ס"
+ "special-characters-title-minus": "××× ×ס",
+ "log-action-filter-upload": "××פ ×ר××פֿ×××:",
+ "log-action-filter-all": "×Ö·××¢",
+ "log-action-filter-delete-delete": "×××ס××¢×§× ××××",
+ "log-action-filter-protect-unprotect": "×ר××¤× ×¢××¢× ×©××¥"
}
diff --git a/languages/i18n/yo.json b/languages/i18n/yo.json
index 91af0cee53..3b75367960 100644
--- a/languages/i18n/yo.json
+++ b/languages/i18n/yo.json
@@ -1447,8 +1447,6 @@
"categories": "Ãwá»n ẹÌka",
"categoriespagetext": "{{PLURAL:$1|ẸÌka|Ãwá»n ẹÌka}} yìà nà ojúewé tà bà amóhùnmáwòrán.\n[[Special:UnusedCategories|Ãwá»n ẹÌka aláìlò]] kò hà n nÃbÃ.\nBákannáà ẹ wo [[Special:WantedCategories|à wá»n ẹÌka wÃwá]].",
"categoriesfrom": "Ãfihà n à wá»n ẹÌka nÃpa bÃbẹÌráº¹Ì láti:",
- "special-categories-sort-count": "tÃtò bÃi ná»Ìmbà ",
- "special-categories-sort-abc": "tÃtò bÃi lẹÌtà ",
"deletedcontributions": "Ãwá»n à fikún pÃparáº¹Ì onÃá¹£e",
"deletedcontributions-title": "Ãwá»n à fikún pÃparáº¹Ì onÃá¹£e",
"sp-deletedcontributions-contribs": "à wá»n à fikún",
@@ -1988,8 +1986,6 @@
"import-logentry-upload-detail": "{{PLURAL:$1|ÃtúnyẹÌwò|Ãwá»n à túnyẹÌwò}} $1",
"import-logentry-interwiki-detail": "{{PLURAL:$1|ÃtúnyẹÌwò|Ãwá»n à túnyẹÌwò}} $1 láti $2",
"javascripttest": "Ãdánwò JavaScript",
- "javascripttest-pagetext-noframework": "Ojúewé yìà jáº¹Ì dÃdásÃláº¹Ì fún á¹£Ãá¹£e ìdánwò JavaScript.",
- "javascripttest-pagetext-skins": "Ẹ mú irú ojú ara tà ẹ fáº¹Ì lò láti á¹£e à dánwò náà :",
"javascripttest-qunit-intro": "Ẹ wo [$1 ìwé aṣà là yé ìdánwò] nà mediawiki.org.",
"tooltip-pt-userpage": "Ojúewé onÃá¹£e yÃn",
"tooltip-pt-anonuserpage": "Ojúewé onÃá¹£e fún à dÃrẹÌẹÌsì IP tà ẹ únlò láti ṣà túná¹£e",
@@ -2222,8 +2218,8 @@
"exif-colorspace": "Ãyè à wá»Ì",
"exif-componentsconfiguration": "Ãtumá»Ì à kóónú ká»Ìá»Ìkan",
"exif-compressedbitsperpixel": "Ãyè ìtẹÌpá»Ì à wòrán",
- "exif-pixelydimension": "Ãfáº¹Ì Ã wòrán",
- "exif-pixelxdimension": "Ãga à wòrán",
+ "exif-pixelxdimension": "Ãfáº¹Ì Ã wòrán",
+ "exif-pixelydimension": "Ãga à wòrán",
"exif-usercomment": "Ãwá»n à wìsá» onÃá¹£e",
"exif-relatedsoundfile": "Fáìlì ìfohùn tó já»ra",
"exif-datetimeoriginal": "á»já»Ì à ti à sìkò tà dátà jade",
@@ -2486,7 +2482,6 @@
"version-entrypoints-header-url": "URL",
"fileduplicatesearch": "Ãṣà wárà fún à wá»n fáìlì à dáwòká»",
"fileduplicatesearch-summary": "Ãṣà wárà fún à wá»n fáìlì à dáwòká» gẹÌgẹÌbà ná»Ìmbà hash",
- "fileduplicatesearch-legend": "Ãṣà wárà fún à dáwòká» kan",
"fileduplicatesearch-filename": "OrúkỠfáìlì:",
"fileduplicatesearch-submit": "ÃwárÃ",
"fileduplicatesearch-info": "$1 à $2 pixel Ãtóbi fáìlì: $3 Irú MIME: $4",
diff --git a/languages/i18n/yue.json b/languages/i18n/yue.json
index 6d63e20cb0..1e1cd61153 100644
--- a/languages/i18n/yue.json
+++ b/languages/i18n/yue.json
@@ -1239,7 +1239,7 @@
"recentchangeslinked-page": "é å:",
"recentchangeslinked-to": "顯示é£å°æçå°å
ç",
"recentchanges-page-added-to-category": "[[:$1]] å åè½åé¡",
- "recentchanges-page-added-to-category-bundled": "[[:$1]] åå¦å¤ {{PLURAL:$2|1 ç|$2 ç}}å åè½åé¡",
+ "recentchanges-page-added-to-category-bundled": "[[:$1]] åå¦å¤ [[Special:WhatLinksHere/$1|{{PLURAL:$2|1 ç|$2 ç}}]]å åè½åé¡",
"recentchanges-page-removed-from-category": "[[:$1]] æèµ°ååé¡",
"recentchanges-page-removed-from-category-bundled": "[[:$1]] åå¦å¤ {{PLURAL:$2|1 ç|$2 ç}}æèµ°ååé¡",
"autochange-username": "MediaWiki èªåæ¹å",
@@ -1641,8 +1641,6 @@
"categories": "é¡",
"categoriespagetext": "ä¸é¢å
{{PLURAL:$1|é¡}}æçæåªé«ã\n[[Special:UnusedCategories|æªç¨é¡]]åæé¿å¢åº¦å示ã\nè«åæåé±[[Special:WantedCategories|éè¦å
åé¡]]ã",
"categoriesfrom": "顯示ç±å¢é
èµ·å
é¡:",
- "special-categories-sort-count": "è·æ¸éæ",
- "special-categories-sort-abc": "è·åæ¯æ",
"deletedcontributions": "å·²ç¶åªé¤åå
ç¨æ¶è²¢ç»",
"deletedcontributions-title": "å·²ç¶åªé¤åå
ç¨æ¶è²¢ç»",
"sp-deletedcontributions-contribs": "è²¢ç»",
@@ -2229,11 +2227,7 @@
"import-logentry-upload-detail": "$1åä¿®è¨é½å·²ç¶åå
¥å",
"import-logentry-interwiki-detail": "ç±$2åå
¥å
$1åä¿®è¨",
"javascripttest": "JavaScript測試",
- "javascripttest-pagetext-noframework": "å¢é ççè¡JavaScript測試ã",
- "javascripttest-pagetext-unknownframework": "åç¥å
測試æ¡æ¶ã$1ãã",
"javascripttest-pagetext-unknownaction": "åç¥å
åä½ã$1ãã",
- "javascripttest-pagetext-frameworks": "è«æä¸å測試æ¡æ¶ï¼$1",
- "javascripttest-pagetext-skins": "æåå¤è§å»è¡æ¸¬è©¦ï¼",
"javascripttest-qunit-intro": "ç mediawiki.org å
[$1 測試ææª]ã",
"tooltip-pt-userpage": "ä½ å
ç¨æ¶é ",
"tooltip-pt-anonuserpage": "ä½ ç·¨è¼¯å¢åIPå
å°æç¨æ¶é ",
@@ -2499,8 +2493,8 @@
"exif-colorspace": "è²å½©ç©ºé",
"exif-componentsconfiguration": "æ¯åé¨ä»½å
ææ",
"exif-compressedbitsperpixel": "å½±åå£ç¸®æ¨¡å¼",
- "exif-pixelydimension": "å½±åé度",
- "exif-pixelxdimension": "å½±åé«åº¦",
+ "exif-pixelxdimension": "å½±åé度",
+ "exif-pixelydimension": "å½±åé«åº¦",
"exif-usercomment": "ç¨å®¶è¨»è
³",
"exif-relatedsoundfile": "ç¸éè²é³æª",
"exif-datetimeoriginal": "ååµæ¥ææé",
@@ -2850,7 +2844,6 @@
"redirect-file": "æªå",
"fileduplicatesearch": "ã¨éè¦æªæ¡",
"fileduplicatesearch-summary": "ç¨éè¦æªæ¡å
åç´°å¼å»æµåæªæ¡ä¿åä¿éè¦ã",
- "fileduplicatesearch-legend": "æµéè¦",
"fileduplicatesearch-filename": "æªå:",
"fileduplicatesearch-submit": "æµ",
"fileduplicatesearch-info": "$1 à $2 åç´ æªæ¡å¤§ç´°: $3 MIMEé¡å: $4",
diff --git a/languages/i18n/zh-hans.json b/languages/i18n/zh-hans.json
index ea51fc94a6..299d9746ae 100644
--- a/languages/i18n/zh-hans.json
+++ b/languages/i18n/zh-hans.json
@@ -107,6 +107,7 @@
"tog-watchdefault": "æ·»å æç¼è¾ç页é¢åæ件è³æççè§å表",
"tog-watchmoves": "æ·»å æ移å¨ç页é¢åæ件è³æççè§å表",
"tog-watchdeletion": "æ·»å æå é¤ç页é¢åæ件è³æççè§å表",
+ "tog-watchuploads": "æ·»å æä¸ä¼ çæ°æ件è³æççè§å表",
"tog-watchrollback": "æ·»å ææ§è¡è¿åéç页é¢è³æççè§å表",
"tog-minordefault": "é»è®¤æ è®°ææç¼è¾ä¸ºå°ç¼è¾",
"tog-previewontop": "å¨ç¼è¾æ¡ä¸æ¹æ¾ç¤ºé¢è§",
@@ -339,7 +340,7 @@
"retrievedfrom": "åèªâ$1â",
"youhavenewmessages": "{{PLURAL:$3|æ¨}}æ$1ï¼$2ï¼ã",
"youhavenewmessagesfromusers": "{{PLURAL:$4|æ¨}}ææ¥èª{{PLURAL:$3|å
¶ä»ç¨æ·|$3个ç¨æ·}}ç$1ï¼$2ï¼ã",
- "youhavenewmessagesmanyusers": "ä½ ææ¥èªå¤ä¸ªç¨æ·ç$1ï¼$2ï¼ã",
+ "youhavenewmessagesmanyusers": "æ¨ææ¥èªå¤ä¸ªç¨æ·ç$1ï¼$2ï¼ã",
"newmessageslinkplural": "{{PLURAL:$1|æ°ä¿¡æ¯|999=æ°æ¶æ¯}}",
"newmessagesdifflinkplural": "æå{{PLURAL:$1|æ´æ¹|999=æ´æ¹}}",
"youhavenewmessagesmulti": "ä½ å¨$1ææ°ä¿¡æ¯",
@@ -526,14 +527,14 @@
"loginerror": "ç»å½é误",
"createacct-error": "è´¦æ·å建åºé",
"createaccounterror": "æ æ³å»ºç«è´¦æ·ï¼$1",
- "nocookiesnew": "该ç¨æ·å¸æ·å·²è¢«å建ï¼ä½ç»å½å¤±è´¥ã{{SITENAME}}使ç¨Cookieå®ç°ç¨æ·ç»å½ãæ¨å·²ç¦ç¨Cookieï¼è¯·å¯ç¨Cookieï¼ç¶å使ç¨ä½ çæ°ç¨æ·åä¸å¯ç ç»å½ã",
+ "nocookiesnew": "该ç¨æ·å¸æ·å·²è¢«å建ï¼ä½ç»å½å¤±è´¥ã{{SITENAME}}使ç¨Cookieå®ç°ç¨æ·ç»å½ãæ¨å·²ç¦ç¨Cookieï¼è¯·å¯ç¨Cookieï¼ç¶å使ç¨æ¨çæ°ç¨æ·åä¸å¯ç ç»å½ã",
"nocookieslogin": "{{SITENAME}}使ç¨Cookieå®ç°ç¨æ·ç»å½ãæ¨å·²åç¨Cookieã请å¯ç¨Cookieååè¯ã",
"nocookiesfornew": "该ç¨æ·è´¦æ·æªè¢«å建ï¼æ们ä¸è½ç¡®è®¤å®çæ¥æºã请确ä¿ä½ å·²å¯ç¨Cookieï¼å·æ°æ¬é¡µååè¯ã",
"noname": "æªæå®ææçç¨æ·åã",
"loginsuccesstitle": "å·²ç»å½",
"loginsuccess": "æ¨ç°å¨å·²ç»ä»¥\"$1\"ç身份ç»å½äº{{SITENAME}}ã ",
"nosuchuser": "没æå为â$1âçç¨æ·ãç¨æ·ååºå大å°åã请æ£æ¥ä½ çæ¼åæ[[Special:UserLogin/signup|å建æ°è´¦æ·]]ã",
- "nosuchusershort": "没æå为â$1âçç¨æ·ã请æ£æ¥ä½ çæ¼åã",
+ "nosuchusershort": "没æå为â$1âçç¨æ·ã请æ£æ¥æ¨çæ¼åã",
"nouserspecified": "æ¨å¿
é¡»æå®ä¸ä¸ªç¨æ·åã",
"login-userblocked": "该ç¨æ·å·²è¢«å°ç¦ï¼ç¦æ¢ç»å½ã",
"wrongpassword": "æ¨è¾å
¥çå¯ç é误ã请éè¯ã",
@@ -549,7 +550,7 @@
"noemail": "ç¨æ·\"$1\"没æç»è®°çµåé®ä»¶å°åã",
"noemailcreate": "æ¨éè¦æä¾ä¸ä¸ªææççµåé®ä»¶å°å",
"passwordsent": "ç¨æ·\"$1\"çæ°å¯ç å·²ç»å¯å¾æç»è®°ççµåé®ä»¶å°åã\n请å¨æ¶å°ååç»å½ã",
- "blocked-mailpassword": "ä½ çIPå°å被ç¦æ¢ç¼è¾ï¼ä¸ºé¢é²æ»¥ç¨ï¼å¯ç æ¢å¤åè½ä¹è¢«ç¦æ¢ä½¿ç¨ã",
+ "blocked-mailpassword": "æ¨çIPå°å被ç¦æ¢ç¼è¾ï¼ä¸ºé¢é²æ»¥ç¨ï¼ä¹ä¸å
许ä»è¯¥IPå°å使ç¨å¯ç æ¢å¤åè½ã",
"eauthentsent": "ä¸å°ç¡®è®¤ä¿¡å·²ç»åéè³æ¨è®¾å®çé®ä»¶å°åã\nå¨ä»»ä½å
¶ä»é®ä»¶åéè³æ¨çè´¦æ·åï¼æ¨å°ä¸å¾ä¸æ ¹æ®é®ä»¶ä¸çæ示ï¼ç¡®è®¤é£ä¸ªè´¦æ·ç¡®å®æ¯æ¨çã",
"throttled-mailpassword": "å¯ç æéå·²å¨æè¿$1å°æ¶å
åéã为äºå®å
¨èµ·è§ï¼å¨æ¯$1å°æ¶å
åªè½åéä¸ä¸ªå¯ç æéã",
"mailerror": "åéé®ä»¶é误ï¼$1",
@@ -662,7 +663,7 @@
"changeemail-throttled": "æ¨æè¿å°è¯äºå¤ªå¤æ¬¡ç»å½ã请çå¾
$1ååè¯ã",
"changeemail-nochange": "请è¾å
¥ä¸ä¸ªä¸åçæ°ççµåé®ä»¶å°åã",
"resettokens": "éç½®å¯é¥",
- "resettokens-text": "ä½ å¯ä»¥å¨è¿ééç½®å
许访é®ä¸ä½ çè´¦æ·æå
³çç¹å®ç§äººæ°æ®çå¯é¥ã\n\nå¦æä½ æå¤å°å®ä»¬å享ç»ä»äººï¼ææ¯ä½ çè´¦æ·å·²ç»è¢«å
¥ä¾µï¼ä½ åºè¯¥éç½®å®ä»¬ã",
+ "resettokens-text": "æ¨å¯ä»¥å¨è¿ééç½®å
许访é®ä¸æ¨çè´¦æ·æå
³çç¹å®ç§äººæ°æ®çå¯é¥ã\n\nå¦ææ¨æå¤å°å®ä»¬å享ç»ä»äººï¼ææ¯æ¨çè´¦æ·å·²ç»è¢«å
¥ä¾µï¼æ¨åºè¯¥éç½®å®ä»¬ã",
"resettokens-no-tokens": "没æå¯ä»¥éç½®çå¯é¥ã",
"resettokens-tokens": "å¯é¥ï¼",
"resettokens-token-label": "$1ï¼å½åå¼ï¼$2ï¼",
@@ -699,7 +700,7 @@
"anoneditwarning": "è¦åï¼ æ¨æ²¡æç»å½ãå¦ææ¨ååºä»»æç¼è¾ï¼æ¨çIPå°åå°ä¼å
¬å¼å¯è§ãå¦ææ¨[$1 ç»å½] æ[$2 å建] ä¸ä¸ªè´¦æ·ï¼æ¨çç¼è¾å°å½å±äºæ¨çç¨æ·åï¼ä¸å°äº«åå
¶ä»å¥½å¤ã",
"anonpreviewwarning": "æ¨æ²¡æç»å½ãä¿åå°æ¨çIPå°åè®°å½è³æ¤é¡µé¢çç¼è¾åå²ä¸ã ",
"missingsummary": "æç¤ºï¼ æ¨æ²¡ææä¾ç¼è¾æè¦ãå¦ææ¨å次ç¹å»â{{int:savearticle}}âï¼æ¨çç¼è¾å°ä¸å¸¦æè¦ä¿åã",
- "selfredirect": "è¦åï¼ æ¨æ£å¨å°æ¤é¡µé¢éå®åè³å®èªå·±ã\næ¨å¯è½æå®äºé误çéå®åç®æ ï¼æè
æ¨æ£å¨ç¼è¾é误ç页é¢ã\nå¦ææ¨å次ç¹å»â{{int:savearticle}}âï¼éå®åå°æ 论å¦ä½è¢«å建ã",
+ "selfredirect": "è¦åï¼ æ¨æ£å¨å°æ¤é¡µé¢éå®åè³å®èªå·±ãæ¨å¯è½æå®äºé误çéå®åç®æ ï¼æè
æ¨æ£å¨ç¼è¾é误ç页é¢ãå¦ææ¨å次ç¹å»â{{int:savearticle}}âï¼éå®åå°æ 论å¦ä½è¢«å建ã",
"missingcommenttext": "请å¨ä¸é¢è¾å
¥è¯è®ºã",
"missingcommentheader": "æç¤ºï¼ æ¨è¿æ²¡æ为æ¤è¯è®ºæä¾ä¸ä¸ªæ é¢ãå¦ææ¨å次ç¹å»â{{int:savearticle}}âï¼æ¨çç¼è¾å°ä¸å¸¦æ é¢ä¿åã",
"summary-preview": "æè¦é¢è§ï¼",
@@ -710,7 +711,7 @@
"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请æ¨å¨ç³è¯å
容ä¸è¯´æ以ä¸ææä¿¡æ¯ã",
"blockednoreason": "æªç»åºåå ",
"whitelistedittext": "请$1以ç¼è¾é¡µé¢ã",
- "confirmedittext": "ä½ å¿
é¡»ç¡®è®¤ä½ ççµåé®ä»¶å°åæè½ç¼è¾é¡µé¢ã请éè¿[[Special:Preferences|ç³»ç»è®¾ç½®]]è®¾ç½®å¹¶ç¡®è®¤ä½ ççµåé®ä»¶å°åã",
+ "confirmedittext": "æ¨å¿
须确认æ¨ççµåé®ä»¶å°åæè½ç¼è¾é¡µé¢ã请éè¿[[Special:Preferences|ç³»ç»è®¾ç½®]]设置并确认æ¨ççµåé®ä»¶å°åã",
"nosuchsectiontitle": "没æè¿ä¸ªæ®µè½",
"nosuchsectiontext": "æ¨å°è¯ç¼è¾çç« è并ä¸åå¨ã\nå¯è½æ¯å¨æ¨æ¥ç页é¢æ¶å·²ç»ç§»å¨æå é¤ã",
"loginreqtitle": "éè¦ç»å½",
@@ -731,9 +732,9 @@
"usercssyoucanpreview": "æç¤ºï¼ å¨ä¿åå请ç¨â{{int:showpreview}}âæé®æ¥æµè¯æ¨æ°ç CSS ã",
"userjsyoucanpreview": "æç¤ºï¼ å¨ä¿åå请ç¨â{{int:showpreview}}âæé®æ¥æµè¯æ¨æ°ç JavaScript ã",
"usercsspreview": "请记ä½æ¨ç°å¨åªæ¯å¨é¢è§ä½ çç¨æ·CSSãå®å°æªä¿åï¼ ",
- "userjspreview": "请记ä½ä½ ç°å¨åªæ¯å¨æµè¯/é¢è§ä½ çç¨æ·JavaScriptãå®å°æªä¿åï¼ ",
+ "userjspreview": "请记ä½æ¨ç°å¨åªæ¯å¨æµè¯/é¢è§æ¨çç¨æ·JavaScriptãå®å°æªä¿åï¼ ",
"sitecsspreview": "请记ä½ä½ ç°å¨åªæ¯å¨é¢è§è¯¥CSSãå®å°æªä¿åï¼ ",
- "sitejspreview": "请记ä½ä½ ç°å¨åªæ¯å¨é¢è§è¯¥JavaScript代ç ãå®å°æªä¿åï¼ ",
+ "sitejspreview": "请记ä½æ¨ç°å¨åªæ¯å¨é¢è§è¯¥JavaScript代ç ãå®å°æªä¿åï¼ ",
"userinvalidcssjstitle": "è¦åï¼ ä¸åå¨ç®è¤â$1âã注æèªå®ä¹ç .css å .js 页è¦ä½¿ç¨å°åæ é¢ï¼ä¾å¦ï¼{{ns:user}}:Foo/vector.css ä¸åäº {{ns:user}}:Foo/Vector.cssã",
"updated": "ï¼å·²æ´æ°ï¼",
"note": "注æï¼ ",
@@ -749,7 +750,7 @@
"editingsection": "ç¼è¾â$1ï¼æ®µè½ï¼â",
"editingcomment": "ç¼è¾â$1âï¼æ°æ®µè½ï¼",
"editconflict": "ç¼è¾å²çªï¼$1",
- "explainconflict": "å
¶ä»ç¨æ·å¨ä½ å¼å§ç¼è¾åæ´æ¹äºè¯¥é¡µé¢ãä¸é¢çæååºå«æ该页é¢å½åçæåãä¸é¢çæååºæ¾ç¤ºä½ çæ´æ¹ãä½ å¿
é¡»æä½ çæ´æ¹å并è³ç°ææåã'''åªæ'''å½ä½ åå»â{{int:savearticle}}âåï¼ä¸é¢çæååºä¸çæåæä¼è¢«ä¿åã",
+ "explainconflict": "å
¶ä»ç¨æ·å¨æ¨å¼å§ç¼è¾åæ´æ¹äºè¯¥é¡µé¢ãä¸é¢çæååºå«æ该页é¢å½åçæåãä¸é¢çæååºæ¾ç¤ºæ¨çæ´æ¹ãæ¨å¿
é¡»ææ¨çæ´æ¹å并è³ç°ææåãåªæ å½æ¨åå»â{{int:savearticle}}âåï¼ä¸é¢çæååºä¸çæåæä¼è¢«ä¿åã",
"yourtext": "æ¨çæå",
"storedversion": "å·²ä¿åççæ¬",
"nonunicodebrowser": "è¦åï¼æ¨çæµè§å¨ä¸å
¼å®¹Unicodeç¼ç ã è¿éæä¸ä¸ªå·¥ä½åºå°ä½¿æ¨è½å®å
¨å°ç¼è¾é¡µé¢ï¼éASCIIå符å°ä»¥åå
è¿å¶ç¼ç æ¹å¼åºç°å¨ç¼è¾æ¡ä¸ã",
@@ -860,7 +861,7 @@
"history-feed-item-nocomment": "$2 $1",
"history-feed-empty": "æ请æ±ç页é¢ä¸åå¨ãå®å¯è½å·²è¢«å é¤æéå½åã\nå°è¯[[Special:Search|æç´¢æ¬ç«]]è·å¾ç¸å
³çæ°å»ºé¡µé¢ã",
"history-edit-tags": "ç¼è¾éå®ä¿®è®¢çæ¬çæ ç¾",
- "rev-deleted-comment": "ï¼ç¼è¾æè¦è¢«å é¤ï¼",
+ "rev-deleted-comment": "ï¼ç¼è¾æè¦è¢«ç§»é¤ï¼",
"rev-deleted-user": "ï¼ç¨æ·å被å é¤ï¼",
"rev-deleted-event": "ï¼æ¥å¿è¯¦æ
已移é¤ï¼",
"rev-deleted-user-contribs": "[ç¨æ·åæIPå°å被å é¤ - ç¼è¾å¨è´¡ç®ä¸éè]",
@@ -873,9 +874,9 @@
"rev-deleted-no-diff": "æ¨ä¸è½æ¥ç该差å¼ï¼å 为å
¶ä¸ä¸ä¸ªçæ¬å·²è¢«å é¤ ã详æ
请è§[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} å é¤æ¥å¿]ã",
"rev-suppressed-no-diff": "æ æ³æ¥ç该差å¼ï¼å 为å
¶ä¸ä¸ä¸ªçæ¬å·²è¢«å é¤ã",
"rev-deleted-unhide-diff": "该差å¼å¯¹æ¯çå
¶ä¸çä¸ä¸ªçæ¬å·²ç»è¢«å é¤ ãå¨[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} å é¤æ¥å¿]ä¸å¯ä»¥æ¾å°æ´å¤çä¿¡æ¯ãå¦ææ¨æ³ç»§ç»çè¯ï¼æ¨ä»ç¶å¯ä»¥[$1 æ¥çæ¤çæ¬]ã",
- "rev-suppressed-unhide-diff": "该页é¢çå
¶ä¸ä¸æ¬¡çæ¬å·²ç»è¢«çç£éè ã\nå¨[{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} çç£æ¥å¿]ä¸å¯ä»¥æ¾å°æ´å¤çèµæãå¦ææ¨æ³ç»§ç»çè¯ï¼æ¨å¯ä»¥ä»ç¶[$1 å»æ¥çè¿çæ¬]ã",
+ "rev-suppressed-unhide-diff": "该页é¢çå
¶ä¸ä¸æ¬¡çæ¬å·²ç»è¢«å±è½ ãå¨[{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} çç£æ¥å¿]ä¸å¯ä»¥æ¾å°æ´å¤çèµæãå¦ææ¨æ³ç»§ç»çè¯ï¼æ¨ä»ç¶å¯ä»¥[$1 æ¥ç该差å¼]ã",
"rev-deleted-diff-view": "å·®å¼å¯¹æ¯ä¸çä¸æ¬¡çæ¬å·²è¢«å é¤ ãæ¨å¯ä»¥å¯¹æ¯æ¤å·®å¼ã详ç»ä¿¡æ¯å¯å¨[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} å é¤æ¥å¿]ä¸æ¾å°ã",
- "rev-suppressed-diff-view": "å·®å¼å¯¹æ¯ä¸çä¸ä¸ªçæ¬å·²è¢«çç£éè ãæ¨å¯ä»¥å¯¹æ¯æ¤å·®å¼ã详ç»ä¿¡æ¯å¯å¨[{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} çç£æ¥å¿]ä¸æ¾å°ã",
+ "rev-suppressed-diff-view": "å·®å¼å¯¹æ¯ä¸çä¸ä¸ªçæ¬å·²è¢«å±è½ ãæ¨å¯ä»¥å¯¹æ¯æ¤å·®å¼ï¼è¯¦ç»ä¿¡æ¯å¯å¨[{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} çç£æ¥å¿]ä¸æ¾å°ã",
"rev-delundel": "æ´æ¹å¯è§æ§",
"rev-showdeleted": "æ¾ç¤º",
"revisiondelete": "å é¤/è¿åçæ¬",
@@ -998,7 +999,7 @@
"search-result-size": "$1ï¼$2个åï¼",
"search-result-category-size": "$1个æåï¼$2个ååç±»ï¼$3个æ件ï¼",
"search-redirect": "ï¼éå®åèªâ$1âï¼",
- "search-section": "ï¼â$1â段è½ï¼",
+ "search-section": "ï¼â$1âç« èï¼",
"search-category": "ï¼åç±»$1ï¼",
"search-file-match": "ï¼å¹é
æ件å
容ï¼",
"search-suggest": "æ¨æ¯ä¸æ¯è¦æ¾ï¼$1",
@@ -1011,7 +1012,7 @@
"searchall": "ææ",
"showingresults": "ä¸é¢æ¾ç¤ºä»ç¬¬$2 æ¡ç»æå¼å§ç$1 æ¡ç»æã",
"showingresultsinrange": "ä¸é¢æ¾ç¤ºåºé´#$2 è³#$3 ç$1 æ¡ç»æã",
- "search-showingresults": "{{PLURAL:$4|$3 æ¡ç»æä¸ç$1 æ¡|$3 æ¡ç»æä¸ç$1~$2 æ¡}}",
+ "search-showingresults": "{{PLURAL:$4|第$1 æ¡ç»æï¼å
±$3 æ¡|第$1~$2 æ¡ç»æï¼å
±$3 æ¡}}",
"search-nonefound": "æ¾ä¸å°åæ¥è¯¢ç¸å¹é
çç»æã",
"search-nonefound-thiswiki": "å¨æ¤ç½ç«æ¾ä¸å°å¹é
æ¥è¯¢çç»æã",
"powersearch-legend": "é«çº§æç´¢",
@@ -1112,7 +1113,7 @@
"prefs-help-gender": "该设置为å¯é项ãè½¯ä»¶æ ¹æ®è¯¥å¼å¨ç§°å¼æ¨å对ä»äººæåæ¨æ¶ä½¿ç¨éå½çè¯æ³æ§å«ã该信æ¯ä¼è¢«å
¬å¼ã",
"email": "çµåé®ä»¶",
"prefs-help-realname": "çå®å§åæ¯é填项ç®ãå¦ææä¾ï¼å®å¯è½ç¨äºç½²åæ¨çè´¡ç®ã",
- "prefs-help-email": "çµåé®ä»¶å°åæ¯é填项ï¼ä½æ¯å½ä½ å¿è®°ä½ çå¯ç è¦éç½®å¯ç æ¶ï¼éè¦è¯¥ä¿¡æ¯ã",
+ "prefs-help-email": "çµåé®ä»¶å°åæ¯é填项ï¼ä½æ¯å½æ¨å¿è®°æ¨çå¯ç è¦éç½®å¯ç æ¶ï¼éè¦è¯¥ä¿¡æ¯ã",
"prefs-help-email-others": "æ¨ä¹å¯ä»¥éæ©è®©å
¶ä»ç¨æ·éè¿æ¨çç¨æ·æ讨论页é¢ä¸çé¾æ¥ç¨çµåé®ä»¶èç³»æ¨ãå
¶ä»ç¨æ·èç³»æ¨æ¶æ¨ççµåé®ä»¶å°åä¸ä¼æ¾ç¤ºã",
"prefs-help-email-required": "çµåé®ä»¶å°åæ¯å¿
填项ç®ã",
"prefs-info": "åºæ¬ä¿¡æ¯",
@@ -1379,7 +1380,7 @@
"rc_categories": "åç±»éå¶ï¼ç¨â|âåéï¼ï¼",
"rc_categories_any": "ä»»ä½éæ©ç",
"rc-change-size-new": "æ´æ¹åæ$1åè",
- "newsectionsummary": "/* $1 */ æ°æ®µè½",
+ "newsectionsummary": "/* $1 */ æ°ç« è",
"rc-enhanced-expand": "æ¾ç¤ºç»è",
"rc-enhanced-hide": "éèç»è",
"rc-old-title": "æåå建为â$1â",
@@ -1391,9 +1392,9 @@
"recentchangeslinked-page": "页é¢å称ï¼",
"recentchangeslinked-to": "æ¾ç¤ºé¾å°æç»åºç页é¢",
"recentchanges-page-added-to-category": "[[:$1]]已添å è³åç±»",
- "recentchanges-page-added-to-category-bundled": "[[:$1]]å[[Special:WhatLinksHere/$1|å
¶ä»{{PLURAL:$2|$2个页é¢}}]]已添å è³åç±»",
+ "recentchanges-page-added-to-category-bundled": "[[:$1]]已添å è³åç±»ï¼[[Special:WhatLinksHere/$1|æ¤é¡µé¢å
å«å¨å
¶ä»é¡µé¢ä¹å
]]",
"recentchanges-page-removed-from-category": "[[:$1]]å·²ä»åç±»ä¸ç§»é¤",
- "recentchanges-page-removed-from-category-bundled": "[[:$1]]å[[Special:WhatLinksHere/$1|å
¶ä»{{PLURAL:$2|$2个页é¢}}]]å·²ä»åç±»ä¸ç§»é¤",
+ "recentchanges-page-removed-from-category-bundled": "[[:$1]]å·²ä»åç±»ä¸ç§»é¤ï¼[[Special:WhatLinksHere/$1|æ¤é¡µé¢å
å«å¨å
¶ä»é¡µé¢ä¹å
]]",
"autochange-username": "MediaWikièªå¨åæ´æ¹",
"upload": "ä¸ä¼ æ件",
"uploadbtn": "ä¸ä¼ æ件",
@@ -1573,6 +1574,7 @@
"uploadstash-badtoken": "æ§è¡å¯¹åºæä½å¤±è´¥ãå¯è½æ¯å 为æ¨çç¼è¾åè¯å·²è¿æã请éè¯ã",
"uploadstash-errclear": "æ¸
é¤æ件失败ã",
"uploadstash-refresh": "æ´æ°æ件å表",
+ "uploadstash-thumbnail": "æ¾ç¤ºç¼©ç¥å¾",
"invalid-chunk-offset": "æ æåºåå移é",
"img-auth-accessdenied": "æç»è®¿é®",
"img-auth-nopathinfo": "PATH_INFO缺失ã\næ¨çæå¡å¨å°æªè®¾ç½®ä¼ é该信æ¯ã\nå®å¯è½åºäºCGIï¼å èä¸æ¯æimg_authã\n请åè§https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Image_Authorizationã",
@@ -1872,8 +1874,8 @@
"showhideselectedlogentries": "æ´æ¹éå®æ¥å¿è®°å½çå¯è§æ§",
"log-edit-tags": "ç¼è¾éå®æ¥å¿è®°å½çæ ç¾",
"checkbox-select": "éæ©ï¼$1",
- "checkbox-all": "å
¨é¨",
- "checkbox-none": "æ ",
+ "checkbox-all": "å
¨é",
+ "checkbox-none": "å
¨ä¸é",
"checkbox-invert": "åé",
"allpages": "ææ页é¢",
"nextpage": "ä¸ä¸é¡µï¼$1ï¼",
@@ -1894,8 +1896,6 @@
"categories-submit": "æ¾ç¤º",
"categoriespagetext": "以ä¸{{PLURAL:$1|åç±»å
å«}}页é¢æåªä½æ件ã[[Special:UnusedCategories|æªä½¿ç¨åç±»]]ä¸å¨è¿éæ¾ç¤ºãå¦è¯·è§[[Special:WantedCategories|éè¦çåç±»]]ã",
"categoriesfrom": "æ¾ç¤ºåç±»å¼å§äºï¼",
- "special-categories-sort-count": "ææ°éæå",
- "special-categories-sort-abc": "æåæ¯æå",
"deletedcontributions": "被å é¤çç¨æ·è´¡ç®",
"deletedcontributions-title": "被å é¤çç¨æ·è´¡ç®",
"sp-deletedcontributions-contribs": "è´¡ç®",
@@ -2035,7 +2035,7 @@
"enotif_lastvisited": "请æµè§ $1 æ¥çå¨ä½ ä¸æ¬¡è®¿é®åçæææ´æ¹ã",
"enotif_lastdiff": "请æµè§ $1 æ¥ç该æ´æ¹ã",
"enotif_anon_editor": "å¿åç¨æ·$1",
- "enotif_body": "亲ç±ç$WATCHINGUSERNAMEï¼\n\nä½ å¥½ï¼\n\n$PAGEINTRO$NEWPAGE\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{{canonicalurl:{{#special:EditWatchlist}}}}\nä»çè§å表ä¸å é¤è¯¥é¡µé¢ï¼\n$UNWATCHURL\nåé¦ä¸å
¶ä»å¸®å©:\n$HELPPAGE",
+ "enotif_body": "亲ç±ç$WATCHINGUSERNAMEï¼\n\næ¨å¥½ï¼\n$PAGEINTRO$NEWPAGE\n\nç¼è¾æè¦ï¼$PAGESUMMARY $PAGEMINOREDIT\n\nå¯éè¿ä»¥ä¸æ¹å¼èç³»ç¼è¾è
ï¼\nçµåé®ä»¶ï¼$PAGEEDITOR_EMAIL\nç¨æ·é¡µé¢ï¼$PAGEEDITOR_WIKI\n\nå¨æ¨ç»å½å¹¶è®¿é®è¯¥é¡µé¢ä¹åï¼æ们ä¸ä¼åéæ°å¢æ´æ¹çéç¥ãæ¨ä¹å¯ä»¥é设æ¨ççè§å表ä¸ææçè§é¡µé¢çéç¥æ å¿ã\n\n{{SITENAME}}éç¥ç³»ç»\n\n--\næ´æ¹é®ä»¶éç¥è®¾ç½®ï¼\n{{canonicalurl:{{#special:Preferences}}}}\næ´æ¹çè§å表设置ï¼\n{{canonicalurl:{{#special:EditWatchlist}}}}\nä»çè§å表ä¸å é¤è¯¥é¡µé¢ï¼\n$UNWATCHURL\nåé¦ä¸å
¶ä»å¸®å©:\n$HELPPAGE",
"created": "å建",
"changed": "æ´æ¹",
"deletepage": "å é¤é¡µé¢",
@@ -2047,7 +2047,7 @@
"delete-legend": "å é¤",
"historywarning": "è¦åï¼ æ¨å°è¦å é¤ç页é¢æ约$1次{{PLURAL:$1|修订}}çåå²ï¼",
"historyaction-submit": "æ¾ç¤º",
- "confirmdeletetext": "æ¨å³å°å é¤ä¸ä¸ªé¡µé¢æå¾å以åå
¶åå²ã\n请确å®æ¨è¦è¿è¡æ¤é¡¹æä½ï¼å¹¶ä¸äºè§£å
¶åæï¼åæ¶æ¨çè¡ä¸ºç¬¦å[[{{MediaWiki:Policy-url}}]]ã",
+ "confirmdeletetext": "æ¨å³å°å é¤ä¸ä¸ªé¡µé¢æå¾å以åå
¶åå²ã请确å®æ¨è¦è¿è¡æ¤é¡¹æä½ï¼å¹¶ä¸äºè§£å
¶åæï¼åæ¶æ¨çè¡ä¸ºç¬¦å[[{{MediaWiki:Policy-url}}|æ¹é]]ã",
"actioncomplete": "æä½å®æ",
"actionfailed": "æä½å¤±è´¥",
"deletedtext": "â$1â已被å é¤ãæè¿çå é¤æ¥å¿è¯·è§$2ã",
@@ -2273,6 +2273,7 @@
"ipb-unblock": "解å°ç¨æ·åæIPå°å",
"ipb-blocklist": "æ¥çç°æå°ç¦",
"ipb-blocklist-contribs": "{{GENDER:$1|$1}}çè´¡ç®",
+ "ipb-blocklist-duration-left": "å©ä½$1",
"unblockip": "解å°ç¨æ·",
"unblockiptext": "使ç¨ä¸å表åæ¥æ¢å¤ä¹å被å°ç¦çIPå°åæç¨æ·åçåæéã",
"ipusubmit": "解é¤æ¤å°ç¦",
@@ -2514,11 +2515,7 @@
"import-logentry-upload-detail": "导å
¥$1个{{PLURAL:$1|çæ¬}}",
"import-logentry-interwiki-detail": "æ¥èª$2ç$1个{{PLURAL:$1|çæ¬}}已导å
¥",
"javascripttest": "JavaScriptæµè¯",
- "javascripttest-pagetext-noframework": "æ¬é¡µé¢è¢«ä¿çè¿è¡JavaScriptæµè¯ã",
- "javascripttest-pagetext-unknownframework": "æªç¥çæ¡æ¶â$1âã",
"javascripttest-pagetext-unknownaction": "æªç¥æä½â$1âã",
- "javascripttest-pagetext-frameworks": "请éæ©ä»¥ä¸çæ¡æ¶ä¹ä¸ï¼$1",
- "javascripttest-pagetext-skins": "éæ©å¤è§æ¥è¿è¡æµè¯ï¼",
"javascripttest-qunit-intro": "请è§mediawiki.orgç[$1 æµè¯è¯´ææ件]ã",
"tooltip-pt-userpage": "{{GENDER:|æ¨çç¨æ·}}页",
"tooltip-pt-anonuserpage": "æ¨ç¨äºç¼è¾çIPå°åçç¨æ·é¡µé¢",
@@ -2549,7 +2546,7 @@
"tooltip-p-logo": "访é®é¦é¡µ",
"tooltip-n-mainpage": "访é®é¦é¡µ",
"tooltip-n-mainpage-description": "访é®é¦é¡µ",
- "tooltip-n-portal": "å
³äºæ¬é¡¹ç®ï¼ä½ å¯åçäºï¼ä½å¤æ¾å°ä½ æé",
+ "tooltip-n-portal": "å
³äºæ¬é¡¹ç®ï¼æ¨å¯åçäºï¼ä½å¤æ¾å°æ¨æé",
"tooltip-n-currentevents": "æ¥çå½åäºä»¶çèæ¯ä¿¡æ¯",
"tooltip-n-recentchanges": "æ¬wikiæè¿æ´æ¹çå表",
"tooltip-n-randompage": "è½½å
¥ä¸ä¸ªéæºé¡µé¢",
@@ -2804,8 +2801,8 @@
"exif-colorspace": "è²å½©ç©ºé´",
"exif-componentsconfiguration": "åé¨åå«ä¹",
"exif-compressedbitsperpixel": "å¾åå缩模å¼",
- "exif-pixelydimension": "å¾å宽度",
- "exif-pixelxdimension": "å¾åé«åº¦",
+ "exif-pixelxdimension": "å¾å宽度",
+ "exif-pixelydimension": "å¾åé«åº¦",
"exif-usercomment": "ç¨æ·è¯è®º",
"exif-relatedsoundfile": "ç¸å
³å£°é³æ件",
"exif-datetimeoriginal": "æ°æ®çææ¥ææ¶é´",
@@ -3114,7 +3111,7 @@
"namespacesall": "ææ",
"monthsall": "ææ",
"confirmemail": "确认çµåé®ä»¶å°å",
- "confirmemail_noemail": "ä½ è¿æ²¡æå¨ä½ ç[[Special:Preferences|ç³»ç»è®¾ç½®]]ä¸è®¾ç½®ææççµåé®ä»¶å°åã",
+ "confirmemail_noemail": "æ¨è¿æ²¡æå¨æ¨ç[[Special:Preferences|ç³»ç»è®¾ç½®]]ä¸è®¾ç½®ææççµåé®ä»¶å°åã",
"confirmemail_text": "{{SITENAME}}è¦æ±æ¨å¨ä½¿ç¨é®ä»¶åè½ä¹åéªè¯æ¨çé®ç®±å°åã\nç¹å»ä»¥ä¸æé®å¯åæ¨çé®ç®±åéä¸å°ç¡®è®¤é®ä»¶ã该é®ä»¶å
å«æä¸è¡ä»£ç é¾æ¥ï¼\n请å¨æ¨çæµè§å¨ä¸å è½½æ¤é¾æ¥ä»¥ç¡®è®¤æ¨çé®ç®±å°åæ¯ææçã",
"confirmemail_pending": "ä¸ä¸ªç¡®è®¤ç å·²ç»è¢«åéå°æ¨çé®ç®±ï¼æ¨å¯è½éè¦çå åéæè½æ¶å°ãå¦ææ æ³æ¶å°ï¼è¯·åç³è¯·ä¸ä¸ªæ°ç确认ç ã",
"confirmemail_send": "é®ä»¶åé确认代ç ",
@@ -3131,6 +3128,10 @@
"confirmemail_body_set": "æ¥æIPå°å$1çç¨æ·ï¼å¯è½æ¯æ¨ï¼å¨{{SITENAME}}å°è´¦æ·â$2âççµåé®ç®±å°å设置为è¿ä¸ªçµåé®ä»¶å°åã\n\n请确认è¿ä¸ªè´¦æ·æ¯å±äºæ¨çï¼å¹¶åæ¶æ¿æ´»å¨{{SITENAME}}ä¸ççµåé®ä»¶åè½ã请\nå¨æµè§å¨ä¸æå¼ä¸é¢çé¾æ¥ï¼\n\n$3\n\nå¦æè¿ä¸ªè´¦æ·*ä¸æ¯*å±äºæ¨çï¼è¯·æå¼ä¸é¢çé¾æ¥å»åæ¶çµåé®ä»¶ç¡®è®¤ï¼\n\n$5\n\n确认ç ä¼å¨$4è¿æã",
"confirmemail_invalidated": "çµåé®ä»¶å°å确认已åæ¶",
"invalidateemail": "åæ¶çµåé®ä»¶ç¡®è®¤",
+ "notificationemail_subject_changed": "{{SITENAME}}注åççµåé®ä»¶å°å已被æ´æ¹",
+ "notificationemail_subject_removed": "{{SITENAME}}注åççµåé®ä»¶å°å已被移é¤",
+ "notificationemail_body_changed": "æ¥èªIPå°å$1ç人ï¼å¯è½æ¯æ¨ï¼å¨{{SITENAME}}ä¸æ´æ¹äºè´¦æ·â$2âççµåé®ä»¶å°åè³â$3âã\n\nå¦æè¿ä¸æ¯æ¨ï¼è¯·ç«å³èç³»ä¸ä½ç½ç«ç®¡çåã",
+ "notificationemail_body_removed": "æ¥èªIPå°å$1ç人ï¼å¯è½æ¯æ¨ï¼å¨{{SITENAME}}ä¸ç§»é¤äºè´¦æ·â$2âççµåé®ä»¶å°åã\n\nå¦æè¿ä¸æ¯æ¨ï¼è¯·ç«å³èç³»ä¸ä½ç½ç«ç®¡çåã",
"scarytranscludedisabled": "[è·¨ç½ç«çç¼ç 转æ¢ä¸å¯ç¨]",
"scarytranscludefailed": "[æå$1失败]",
"scarytranscludefailed-httpstatus": "[模æ¿$1读å失败ï¼HTTP $2]",
@@ -3256,7 +3257,6 @@
"version-libraries-description": "æè¿°",
"version-libraries-authors": "ä½è
",
"redirect": "éå®åï¼ææ件ãç¨æ·ã页é¢ã修订çæ¬ææ¥å¿IDï¼",
- "redirect-legend": "éå®åè³æ件æ页é¢",
"redirect-summary": "æ¬ç¹æ®é¡µé¢å¯ä»¥è·³è½¬è³ä¸ä¸ªæ件ï¼æä¾æ件åï¼ã页é¢ï¼æä¾ä¿®è®¢çæ¬IDæ页é¢IDï¼ãç¨æ·é¡µï¼æä¾æ°åç¨æ·IDï¼ææ¥å¿è®°å½ï¼æä¾æ¥å¿IDï¼ãç¨æ³ï¼[[{{#Special:Redirect}}/file/Example.jpg]]ã[[{{#Special:Redirect}}/page/64308]]ã[[{{#Special:Redirect}}/revision/328429]]ã[[{{#Special:Redirect}}/user/101]]æ[[{{#Special:Redirect}}/logid/186]]ã",
"redirect-submit": "æ交",
"redirect-lookup": "åºäºï¼",
@@ -3269,7 +3269,6 @@
"redirect-not-exists": "没æ¾å°ç¸åºå¼",
"fileduplicatesearch": "æç´¢éå¤æ件",
"fileduplicatesearch-summary": "æ ¹æ®åå¸ï¼hashï¼å¼æç´¢éå¤æ件ã",
- "fileduplicatesearch-legend": "æç´¢éå¤æ件",
"fileduplicatesearch-filename": "æ件åï¼",
"fileduplicatesearch-submit": "æç´¢",
"fileduplicatesearch-info": "$1Ã$2åç´ æ件大å°ï¼$3 MIMEç±»åï¼$4",
@@ -3443,7 +3442,7 @@
"revdelete-uname-unhid": "å
¬å¼ç¨æ·å",
"revdelete-restricted": "åºç¨å¯¹ç®¡çåçéå¶",
"revdelete-unrestricted": "å é¤å¯¹ç®¡çåçéå¶",
- "logentry-block-block": "$1{{GENDER:$2|å°ç¦äº}}{{GENDER:$4|$3}}ï¼æç»æ¶é´$5 $6",
+ "logentry-block-block": "$1{{GENDER:$2|å°ç¦äº}}{{GENDER:$4|$3}}ï¼æé为$5 $6",
"logentry-block-unblock": "$1{{GENDER:$2|解å°äº}}{{GENDER:$4|$3}}",
"logentry-block-reblock": "$1å°{{GENDER:$4|$3}}çå°ç¦è®¾ç½®{{GENDER:$2|æ´æ¹ä¸º}}æç»æ¶é´$5 $6",
"logentry-suppress-block": "$1{{GENDER:$2|å°ç¦äº}}{{GENDER:$4|$3}}ï¼æç»æ¶é´$5 $6",
@@ -3470,7 +3469,7 @@
"logentry-protect-protect-cascade": "$1{{GENDER:$2|ä¿æ¤äº}}$3 $4[级è]",
"logentry-protect-modify": "$1{{GENDER:$2|æ´æ¹äº}}$3çä¿æ¤ç级$4",
"logentry-protect-modify-cascade": "$1{{GENDER:$2|æ´æ¹äº}}$3çä¿æ¤ç级$4[级è]",
- "logentry-rights-rights": "$1{{GENDER:$2|æ´æ¹}}$3çç¨æ·ç»èª$4è³$5",
+ "logentry-rights-rights": "$1å·²å°{{GENDER:$6|$3}}çç¨æ·ç»ä»$4{{GENDER:$2|æ´æ¹}}è³$5",
"logentry-rights-rights-legacy": "$1æ´æ¹$3çç¨æ·ç»",
"logentry-rights-autopromote": "$1被èªå¨å°{{GENDER:$2|æå}}èª$4è³$5",
"logentry-upload-upload": "$1{{GENDER:$2|ä¸ä¼ }}$3",
@@ -3479,7 +3478,7 @@
"log-name-managetags": "æ ç¾ç®¡çæ¥å¿",
"log-description-managetags": "æ¤é¡µé¢ååºæå
³[[Special:Tags|æ ç¾]]ç管çä»»å¡ã该æ¥å¿ä»
å
å«ç®¡çåæå·¥è¿è¡çæä½ï¼wiki软件å¯è½å建æå é¤æ ç¾èæªå¨æ¤æ¥å¿ä¸çä¸è®°å½ã",
"logentry-managetags-create": "$1{{GENDER:$2|å建äº}}æ ç¾â$4â",
- "logentry-managetags-delete": "$1 {{GENDER:$2|å é¤äº}}â$4âæ ç¾ï¼å·²ä»$5个{{PLURAL:$5|修订çæ¬å/ææ¥å¿æ¡ç®}}ä¸ç§»é¤)",
+ "logentry-managetags-delete": "$1{{GENDER:$2|å é¤äº}}æ ç¾â$4âï¼å·²ä»$5个{{PLURAL:$5|修订çæ¬ææ¥å¿é¡¹|修订çæ¬å/ææ¥å¿é¡¹}}ä¸ç§»é¤ï¼",
"logentry-managetags-activate": "$1 {{GENDER:$2|æ¿æ´»äº}}â$4âæ ç¾ä¾ç¨æ·åæºå¨äººä½¿ç¨",
"logentry-managetags-deactivate": "$1 {{GENDER:$2|åç¨äº}}â$4âæ ç¾ä¾ç¨æ·åæºå¨äººä½¿ç¨",
"log-name-tag": "æ ç¾æ¥å¿",
@@ -3496,7 +3495,7 @@
"feedback-back": "è¿å",
"feedback-bugcheck": "请æ£æ¥æ¬bugæ¯å¦ä¸º[$1 å·²ç¥bug]ã",
"feedback-bugnew": "ææ£æ¥äºãæ¥åæ°bug",
- "feedback-bugornote": "å¦æä½ åå¤å¥½è¯¦ç»æè¿°ä¸ä¸ªææ¯é®é¢ï¼è¯·[$1 æ¥åbug]ãæè
ä½ å¯ä»¥ä½¿ç¨ä¸é¢çç®åè¡¨æ ¼ãä½ çè¯è®ºå°è¢«æ·»å è³é¡µé¢â[$3 $2]âï¼éæä½ çç¨æ·åã",
+ "feedback-bugornote": "å¦ææ¨åå¤å¥½è¯¦ç»æè¿°ä¸ä¸ªææ¯é®é¢ï¼è¯·[$1 æ¥åbug]ãæè
æ¨å¯ä»¥ä½¿ç¨ä¸é¢çç®åè¡¨æ ¼ãæ¨çè¯è®ºå°è¢«æ·»å è³é¡µé¢â[$3 $2]âï¼éææ¨çç¨æ·åã",
"feedback-cancel": "åæ¶",
"feedback-close": "å®æ",
"feedback-external-bug-report-button": "æ交ææ¯æ¥å",
@@ -3563,6 +3562,7 @@
"api-error-unknownerror": "æªç¥é误ï¼$1ã",
"api-error-uploaddisabled": "该wikiåç¨ä¸ä¼ ã",
"api-error-verification-error": "该æ件å¯è½æåææ©å±åé误ã",
+ "api-error-was-deleted": "æ¤å称çæ件æ¾è¢«ä¸ä¼ ï¼éå被å é¤ã",
"duration-seconds": "$1ç§",
"duration-minutes": "$1å",
"duration-hours": "$1å°æ¶",
@@ -3653,6 +3653,7 @@
"special-characters-group-ipa": "å½é
é³æ ",
"special-characters-group-symbols": "符å·",
"special-characters-group-greek": "å¸è
åæ¯",
+ "special-characters-group-greekextended": "å¸è
åæ¯æ©å±",
"special-characters-group-cyrillic": "西éå°åæ¯",
"special-characters-group-arabic": "é¿æ伯åæ¯",
"special-characters-group-arabicextended": "æ©å±é¿æ伯åæ¯",
@@ -3678,5 +3679,54 @@
"sessionprovider-generic": "$1ä¼è¯",
"sessionprovider-mediawiki-session-cookiesessionprovider": "åºäºcookieçä¼è¯",
"sessionprovider-nocookies": "Cookieå¯è½å·²è¢«ç¦ç¨ãç¡®ä¿æ¨å·²å¯ç¨cookieï¼å¹¶éè¯ã",
- "randomrootpage": "éæºæ ¹é¡µé¢"
+ "randomrootpage": "éæºæ ¹é¡µé¢",
+ "log-action-filter-block": "å°ç¦ç±»åï¼",
+ "log-action-filter-contentmodel": "å
容模åä¿®æ¹çç±»åï¼",
+ "log-action-filter-delete": "å é¤ç±»åï¼",
+ "log-action-filter-import": "导å
¥çç±»åï¼",
+ "log-action-filter-managetags": "æ ç¾ç®¡çè¡ä¸ºçç±»åï¼",
+ "log-action-filter-move": "移å¨çç±»åï¼",
+ "log-action-filter-newusers": "è´¦æ·å建çç±»åï¼",
+ "log-action-filter-patrol": "å·¡æ¥ç±»åï¼",
+ "log-action-filter-protect": "ä¿æ¤ç±»åï¼",
+ "log-action-filter-rights": "æéæ´æ¹çç±»å",
+ "log-action-filter-suppress": "å±è½çç±»å",
+ "log-action-filter-upload": "ä¸ä¼ ç±»åï¼",
+ "log-action-filter-all": "å
¨é¨",
+ "log-action-filter-block-block": "å°ç¦",
+ "log-action-filter-block-reblock": "å°ç¦ä¿®æ¹",
+ "log-action-filter-block-unblock": "解å°",
+ "log-action-filter-contentmodel-change": "å
容类åçæ´æ¹",
+ "log-action-filter-contentmodel-new": "带æéæ åå
容模åç页é¢çæ´æ¹",
+ "log-action-filter-delete-delete": "页é¢å é¤",
+ "log-action-filter-delete-restore": "页é¢è¿å",
+ "log-action-filter-delete-event": "æ¥å¿å é¤",
+ "log-action-filter-delete-revision": "修订çæ¬å é¤",
+ "log-action-filter-import-interwiki": "è·¨wiki导å
¥",
+ "log-action-filter-import-upload": "éè¿XMLä¸ä¼ 导å
¥",
+ "log-action-filter-managetags-create": "æ ç¾å建",
+ "log-action-filter-managetags-delete": "æ ç¾å é¤",
+ "log-action-filter-managetags-activate": "æ ç¾æ¿æ´»",
+ "log-action-filter-managetags-deactivate": "æ ç¾åæ¶æ¿æ´»",
+ "log-action-filter-move-move": "移å¨èä¸è¦çéå®å",
+ "log-action-filter-move-move_redir": "移å¨å¹¶è¦çéå®å",
+ "log-action-filter-newusers-create": "ç±å¿åç¨æ·å建",
+ "log-action-filter-newusers-create2": "ç±å·²æ³¨åç¨æ·å建",
+ "log-action-filter-newusers-autocreate": "èªå¨å建",
+ "log-action-filter-newusers-byemail": "带éè¿çµåé®ä»¶åéå¯ç çå建",
+ "log-action-filter-patrol-patrol": "æå¨å·¡æ¥",
+ "log-action-filter-patrol-autopatrol": "èªå¨å·¡æ¥",
+ "log-action-filter-protect-protect": "ä¿æ¤",
+ "log-action-filter-protect-modify": "ä¿æ¤ä¿®æ¹",
+ "log-action-filter-protect-unprotect": "解é¤ä¿æ¤",
+ "log-action-filter-protect-move_prot": "已移å¨ä¿æ¤",
+ "log-action-filter-rights-rights": "æå¨æ´æ¹",
+ "log-action-filter-rights-autopromote": "èªå¨æ´æ¹",
+ "log-action-filter-suppress-event": "æ¥å¿å±è½",
+ "log-action-filter-suppress-revision": "修订çæ¬å±è½",
+ "log-action-filter-suppress-delete": "页é¢å±è½",
+ "log-action-filter-suppress-block": "éè¿å°ç¦çç¨æ·å±è½",
+ "log-action-filter-suppress-reblock": "éè¿åå°ç¦çç¨æ·å±è½",
+ "log-action-filter-upload-upload": "æ°ä¸ä¼ ",
+ "log-action-filter-upload-overwrite": "éæ°ä¸ä¼ "
}
diff --git a/languages/i18n/zh-hant.json b/languages/i18n/zh-hant.json
index 0916c97b80..c3e5aaa45d 100644
--- a/languages/i18n/zh-hant.json
+++ b/languages/i18n/zh-hant.json
@@ -88,6 +88,7 @@
"tog-watchdefault": "å°æ編輯çé é¢åæªæ¡å å
¥ç£è¦æ¸
å®",
"tog-watchmoves": "å°æ移åçé é¢åæªæ¡å å
¥ç£è¦æ¸
å®",
"tog-watchdeletion": "å°æåªé¤çé é¢åæªæ¡å å
¥ç£è¦æ¸
å®",
+ "tog-watchuploads": "å å
¥æä¸å³çæ°æªæ¡è³æçç£è¦æ¸
å®",
"tog-watchrollback": "å°ææ¾ç¶éåçé é¢æ°å¢è³ç£è¦æ¸
å®",
"tog-minordefault": "é è¨æ¨è¨ææç編輯çºå°ä¿®è¨",
"tog-previewontop": "顯示é 覽æ¼ç·¨è¼¯æ¡ä¸æ¹",
@@ -342,10 +343,10 @@
"feedlinks": "è¨é±ï¼",
"feed-invalid": "ç¡æçè¨é± Feed é¡åã",
"feed-unavailable": "ç®åæªæä¾ RSS æ Atom",
- "site-rss-feed": "$1 ç RSS æè¦",
- "site-atom-feed": "$1 ç Atom æè¦",
- "page-rss-feed": "\"$1\" ç RSS æè¦",
- "page-atom-feed": "\"$1\" ç Atom æè¦",
+ "site-rss-feed": "$1 ç RSS ä¾æº",
+ "site-atom-feed": "$1 ç Atom ä¾æº",
+ "page-rss-feed": "\"$1\" ç RSS ä¾æº",
+ "page-atom-feed": "\"$1\" ç Atom ä¾æº",
"red-link-title": "$1 (é é¢ä¸åå¨)",
"sort-descending": "éåªæåº",
"sort-ascending": "æåªæåº",
@@ -479,7 +480,7 @@
"createaccount": "建ç«å¸³è",
"gotaccount": "æ¨å·²ç¶ææ帳èäºåï¼ $1ã",
"gotaccountlink": "ç»å
¥",
- "userlogin-resetlink": "æ¨å¿è¨äºç»å
¥ç詳細è³æï¼",
+ "userlogin-resetlink": "å¿äºæ¨ç»å
¥ç詳細è³æï¼",
"userlogin-resetpassword-link": "å¿è¨å¯ç¢¼ï¼",
"userlogin-helplink2": "ç»å
¥åå©",
"userlogin-loggedin": "æ¨ç®åå·²ç»å
¥ {{GENDER:$1|$1}} 使ç¨è
ï¼\nè«ä½¿ç¨ä¸å表å®æ¹ç»å
¥å¦ä¸ä½ä½¿ç¨è
ã",
@@ -509,7 +510,7 @@
"nocookieslogin": "è¦ç»å
¥ {{SITENAME}} 使ç¨è
éä½¿ç¨ Cookiesï¼\næ¨ç Cookies æªå°éåã\nè«å¨éåå¾é試ã",
"nocookiesfornew": "éå使ç¨è
ç帳èæªå»ºç«ï¼æåä¸è½ç¢ºèªå®çä¾æºã\nè«ç¢ºèªæ¨å·²éå Cookieï¼éæ°è¼å
¥å¾å試ã",
"noname": "æ¨è¼¸å
¥ç使ç¨è
å稱ç¡æã",
- "loginsuccesstitle": "ç»å
¥æå",
+ "loginsuccesstitle": "å·²ç»å
¥",
"loginsuccess": "{{GENDER:|æ¨|妳|ä½ }}ç¾å¨å·²ç¶ä»¥ \"$1\" ç身åç»å
¥äº {{SITENAME}}ã ",
"nosuchuser": "æ¥ç¡ä½¿ç¨è
\"$1\"ã\n使ç¨è
å稱æ大å°å¯«ååï¼\nè«æª¢æ¥æ¨æ¼å¯«æ¯å¦æ£ç¢ºï¼æè
[[Special:UserLogin/signup|建ç«æ°å¸³è]]ã",
"nosuchusershort": "æ¥ç¡ä½¿ç¨è
\"$1\"ï¼\nè«æª¢æ¥æ¨æ¼å¯«æ¯å¦æ£ç¢ºã",
@@ -528,7 +529,7 @@
"noemail": "使ç¨è
\"$1\" æ²æé»åéµä»¶å°åè¨éã",
"noemailcreate": "æ¨éè¦æä¾ä¸åææçé»åéµä»¶å°åã",
"passwordsent": "使ç¨è
\"$1\" çæ°å¯ç¢¼å·²å¯è³ç¶åºç»è¨çé»åéµä»¶å°åï¼\nè«ç¨å¾æ¶å°éµä»¶å¾åç»å
¥ã",
- "blocked-mailpassword": "æ¨ç IP ä½å已被å°éä¸å
許編輯ï¼å¯ç¢¼å¾©åçåè½ä¹å樣被ç¦æ¢ä½¿ç¨ä»¥é²æ¢è¢«æ¿«ç¨ã",
+ "blocked-mailpassword": "æ¨ç IP ä½å已被å°éä¸å
許編輯ï¼å·²ç¦æ¢ä¾èªæ¤ IP ä½åçå¯ç¢¼å¾©ååè½ä»¥é²æ¢æ¿«ç¨ã",
"eauthentsent": "å·²å¯åºä¸å°ç¢ºèªä¿¡å°æ¨æè¨å®çé»åéµä»¶å°åã\nå¨æªæ¶å°å
¶å®é»åéµä»¶åï¼æ¨å¿
é å
ä¾ç
§éµä»¶ä¸çæ示ï¼ç¢ºèªéå帳è確實æ¯æ¨æ¬äººã",
"throttled-mailpassword": "å¯ç¢¼éè¨çé»åéµä»¶å·²ç¶å¨æè¿ $1 å°æå
§å¯åºã\nçºé²æ¢æ¿«ç¨ï¼$1 å°æå
§åªè½å¯åºä¸æ¬¡å¯ç¢¼éè¨ä¿¡ä»¶ã",
"mailerror": "å³éé»åéµä»¶é¯èª¤ï¼$1",
@@ -694,7 +695,7 @@
"nosuchsectiontext": "æ¨å試編輯çç« ç¯ä¸¦ä¸åå¨ã\nå¯è½å¨æ¨æª¢è¦é é¢æå·²ç¶ç§»åæåªé¤ã",
"loginreqtitle": "éè¦ç»å
¥",
"loginreqlink": "ç»å
¥",
- "loginreqpagetext": "æ¨å¿
é $1 æ¹å¯æª¢è¦å
¶ä»é é¢ã",
+ "loginreqpagetext": "è«å
$1 æ¹å¯æª¢è¦å
¶ä»é é¢ã",
"accmailtitle": "å¯ç¢¼å·²å¯åº",
"accmailtext": "[[User talk:$1|$1]] çé¨æ©å¯ç¢¼å·²ç¶å¯éè³ $2ï¼å¯ç»å
¥å¾è³ [[Special:ChangePassword|è®æ´å¯ç¢¼]] é é¢æ´æ¹ ã",
"newarticle": "(æ°)",
@@ -1319,7 +1320,7 @@
"recentchanges-label-bot": "該編輯ç±æ©å¨äººå·è¡",
"recentchanges-label-unpatrolled": "該編輯å°æªå·¡æ¥",
"recentchanges-label-plusminus": "該é é¢è®æ´çå¤§å° (ä½å
çµ)",
- "recentchanges-legend-heading": "說æï¼ ",
+ "recentchanges-legend-heading": "åä¾ï¼ ",
"recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (è«åè[[Special:NewPages|æ°é é¢]])",
"recentchanges-legend-plusminus": "(±123 )",
"recentchanges-submit": "顯示",
@@ -1346,7 +1347,7 @@
"rcshowhidecategorization": "$1 é é¢åé¡",
"rcshowhidecategorization-show": "顯示",
"rcshowhidecategorization-hide": "é±è",
- "rclinks": "顯示æè¿ $2 天å
§ç $1 次æ´æ¹ã $3",
+ "rclinks": "顯示æè¿ $2 天å
§ç $1 次è®æ´ã $3",
"diff": "å·®ç°",
"hist": "æ·å²",
"hide": "é±è",
@@ -1370,9 +1371,9 @@
"recentchangeslinked-page": "é é¢å稱ï¼",
"recentchangeslinked-to": "æ¹é¡¯ç¤ºé£çµè³æå®é é¢çè®æ´",
"recentchanges-page-added-to-category": "[[:$1]] å·²å å
¥è³åé¡",
- "recentchanges-page-added-to-category-bundled": "[[:$1]] è[[Special:WhatLinksHere/$1|å
¶ä» {{PLURAL:$2|1 é |$2 é }}]]å·²å å
¥è³åé¡",
+ "recentchanges-page-added-to-category-bundled": "[[:$1]] å·²å å
¥è³åé¡ï¼[[Special:WhatLinksHere/$1|æ¤é é¢å·²è¢«å
¶ä»é é¢å¼ç¨]]",
"recentchanges-page-removed-from-category": "[[:$1]] å·²èªåé¡ç§»é¤",
- "recentchanges-page-removed-from-category-bundled": "[[:$1]] è[[Special:WhatLinksHere/$1|å
¶ä» {{PLURAL:$2|1 é |$2 é }}]]å·²èªåé¡ç§»é¤",
+ "recentchanges-page-removed-from-category-bundled": "[[:$1]] å·²èªåé¡ç§»é¤ï¼[[Special:WhatLinksHere/$1|æ¤é é¢å·²è¢«å
¶ä»é é¢å¼ç¨]]",
"autochange-username": "MediaWiki èªåè®æ´",
"upload": "ä¸å³æªæ¡",
"uploadbtn": "ä¸å³æªæ¡",
@@ -1551,6 +1552,7 @@
"uploadstash-badtoken": "å·è¡åä½å¤±æãæ¨ç編輯è³è¨å¯è½å·²ç¶éæï¼è«éæ°å試ã",
"uploadstash-errclear": "æ¸
é¤æªæ¡å¤±æã",
"uploadstash-refresh": "æ´æ°æªæ¡æ¸
å®",
+ "uploadstash-thumbnail": "檢è¦ç¸®å",
"invalid-chunk-offset": "ç¡æåå¡ä½ç½®",
"img-auth-accessdenied": "æçµåå",
"img-auth-nopathinfo": "ç¼ºå° PATH_INFO åæ¸ã\næ¨å®è£ç伺æå¨æªå³éæ¤è³è¨ï¼\næ¨å¯è½ä½¿ç¨ CGI çºåºç¤ç伺æå¨ï¼ä¸ä¸æ¯æ´ img_auth åè½ã\nè«åè https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Image_Authorizationã",
@@ -1871,8 +1873,6 @@
"categories-submit": "顯示",
"categoriespagetext": "ä¸åçºå
å«é é¢æåªé«ç{{PLURAL:$1|åé¡}}ã\n[[Special:UnusedCategories|æªä½¿ç¨çåé¡]] ä¸æå¨æ¤é¡¯ç¤ºã\nè«åè [[Special:WantedCategories|éè¦çåé¡]]ã",
"categoriesfrom": "顯示åé¡éå§æ¼ï¼",
- "special-categories-sort-count": "ä¾æ¸éæå",
- "special-categories-sort-abc": "ä¾åæ¯æå",
"deletedcontributions": "å·²åªé¤ç使ç¨è
è²¢ç»",
"deletedcontributions-title": "å·²åªé¤ç使ç¨è
è²¢ç»",
"sp-deletedcontributions-contribs": "è²¢ç»",
@@ -2250,6 +2250,7 @@
"ipb-unblock": "解é¤å°é使ç¨è
å稱æ IP ä½å",
"ipb-blocklist": "檢è¦ç®åçå°é",
"ipb-blocklist-contribs": "{{GENDER:$1|$1}} çè²¢ç»",
+ "ipb-blocklist-duration-left": "å©ä¸ $1",
"unblockip": "解é¤å°é使ç¨è
",
"unblockiptext": "使ç¨ä»¥ä¸è¡¨å®ä»¥éåä¹å被å°éç IP ä½åæ使ç¨è
å稱ç寫å
¥ååã",
"ipusubmit": "移é¤æ¤å°é",
@@ -2491,11 +2492,7 @@
"import-logentry-upload-detail": "å·²å¯å
¥ $1 ç{{PLURAL:$1|ä¿®è¨}}",
"import-logentry-interwiki-detail": "å·²å¾ $2 å¯å
¥ $1 ç{{PLURAL:$1|ä¿®è¨}}",
"javascripttest": "JavaScript 測試",
- "javascripttest-pagetext-noframework": "æ¤é é¢ä¿çç¨ä¾ä½çº JavaScript 測試使ç¨ã",
- "javascripttest-pagetext-unknownframework": "ä¸æç測試 Framework \"$1\"ã",
"javascripttest-pagetext-unknownaction": "ä¸ææä½ \"$1\"ã",
- "javascripttest-pagetext-frameworks": "è«é¸æä¸åä¸ç¨®æ¸¬è©¦ Frameworkï¼$1",
- "javascripttest-pagetext-skins": "é¸æå·è¡æ¸¬è©¦çå¤è§ï¼",
"javascripttest-qunit-intro": "è«åè mediawiki.org ç [$1 測試說ææ件]ã",
"tooltip-pt-userpage": "{{GENDER:|æ¨ç使ç¨è
}}é é¢",
"tooltip-pt-anonuserpage": "æ¨æ£å¨ä½çºä»¥ä¸èº«åç·¨è¼¯æ¤ IP ä½åç使ç¨è
é é¢",
@@ -2533,8 +2530,8 @@
"tooltip-n-help": "å°æ±åå©çå°æ¹",
"tooltip-t-whatlinkshere": "ååºææé£çµæ¤é é¢çé é¢",
"tooltip-t-recentchangeslinked": "æ¤é é¢é£çµè³å
¶ä»é é¢çæè¿è®æ´",
- "tooltip-feed-rss": "æ¤é é¢ç RSS æè¦",
- "tooltip-feed-atom": "æ¤é é¢ç Atom æè¦",
+ "tooltip-feed-rss": "æ¤é é¢ç RSS ä¾æº",
+ "tooltip-feed-atom": "æ¤é é¢ç Atom ä¾æº",
"tooltip-t-contributions": "{{GENDER:$1|æ¤ä½¿ç¨è
}}çè²¢ç»æ¸
å®",
"tooltip-t-emailuser": "å³éé»åéµä»¶è¯çµ¡{{GENDER:$1|éä½ä½¿ç¨è
}}",
"tooltip-t-info": "æ´å¤éæ¼æ¤é é¢çè³è¨",
@@ -2770,8 +2767,8 @@
"exif-colorspace": "è²å½©ç©ºé",
"exif-componentsconfiguration": "æ¯åç´ å
§å«",
"exif-compressedbitsperpixel": "å½±åå£ç¸®æ¨¡å¼",
- "exif-pixelydimension": "åç寬度",
- "exif-pixelxdimension": "åçé«åº¦",
+ "exif-pixelxdimension": "åç寬度",
+ "exif-pixelydimension": "åçé«åº¦",
"exif-usercomment": "使ç¨è
è©è«",
"exif-relatedsoundfile": "ç¸éçé³ææªæ¡",
"exif-datetimeoriginal": "è³æç¢ççæ¥ææé",
@@ -3097,6 +3094,8 @@
"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": "åæ¶é»åéµä»¶ç¢ºèª",
+ "notificationemail_subject_changed": "{{SITENAME}} 註åçé»åéµä»¶ä½åå·²è®æ´",
+ "notificationemail_subject_removed": "{{SITENAME}} 註åçé»åéµä»¶ä½å已移é¤",
"scarytranscludedisabled": "[Interwiki è½æ代碼ä¸å¯ç¨]",
"scarytranscludefailed": "[æ¨¡æ¿ $1 è®å失æ]",
"scarytranscludefailed-httpstatus": "[æ¨¡æ¿ $1 è®å失æï¼HTTP $2]",
@@ -3221,7 +3220,6 @@
"version-libraries-description": "æè¿°",
"version-libraries-authors": "ä½è
",
"redirect": "ä¾æªæ¡ã使ç¨è
ãé é¢ãä¿®è¨ææ¥èª ID ä¾éæ°å°å",
- "redirect-legend": "éæ°å°åè³æªæ¡æé é¢",
"redirect-summary": "æ¤ç¹æ®é é¢å¯ç¨ä¾éæ°å°åè³æªæ¡ (æå®æªæ¡å稱)ãé é¢ (æå®ä¿®è¨ ID æé é¢ ID)ã使ç¨è
é é¢ (æå®ä½¿ç¨è
ID)ãæè
æ¥èªé
ç® (æå®æ¥èª ID)ãç¨æ³ï¼[[{{#Special:Redirect}}/file/Example.jpg]]ã[[{{#Special:Redirect}}/page/64308]]ã[[{{#Special:Redirect}}/revision/328429]]ã[[{{#Special:Redirect}}/user/101]] æ [[{{#Special:Redirect}}/logid/186]]ã",
"redirect-submit": "å·è¡",
"redirect-lookup": "æ¥è©¢ï¼",
@@ -3234,7 +3232,6 @@
"redirect-not-exists": "æ¥ç¡å¼",
"fileduplicatesearch": "æå°éè¤æªæ¡",
"fileduplicatesearch-summary": "ä¾æéæ¹å¼ (Hash) ä¾æå°éè¤çæªæ¡ã",
- "fileduplicatesearch-legend": "æå°éè¤",
"fileduplicatesearch-filename": "æªæ¡å稱ï¼",
"fileduplicatesearch-submit": "æå°",
"fileduplicatesearch-info": "$1 à $2 åç´ æªæ¡å¤§å°ï¼$3 MIME é¡åï¼$4",
@@ -3643,5 +3640,54 @@
"sessionprovider-generic": "$1 é£ç·é段",
"sessionprovider-mediawiki-session-cookiesessionprovider": "以 cookie çºåºç¤çé£ç·é段",
"sessionprovider-nocookies": "Cookie åè½å¯è½å·²è¢«ééï¼è«ç¢ºèªæ¨æ¹éå Cookie åè½ä¸¦éæ°ååã",
- "randomrootpage": "é¨æ©æ ¹é é¢"
+ "randomrootpage": "é¨æ©æ ¹é é¢",
+ "log-action-filter-block": "å°éé¡åï¼",
+ "log-action-filter-contentmodel": "å
§å®¹æ¨¡åä¿®æ¹é¡åï¼",
+ "log-action-filter-delete": "åªé¤é¡åï¼",
+ "log-action-filter-import": "å¯å
¥é¡åï¼",
+ "log-action-filter-managetags": "æ¨ç±¤ç®¡çåä½é¡åï¼",
+ "log-action-filter-move": "移åé¡åï¼",
+ "log-action-filter-newusers": "帳è建ç«é¡åï¼",
+ "log-action-filter-patrol": "å·¡æ¥é¡åï¼",
+ "log-action-filter-protect": "ä¿è·é¡åï¼",
+ "log-action-filter-rights": "æ¬éè®æ´é¡åï¼",
+ "log-action-filter-suppress": "ç¦æ¢é¡¯ç¤ºé¡åï¼",
+ "log-action-filter-upload": "ä¸å³é¡åï¼",
+ "log-action-filter-all": "å
¨é¨",
+ "log-action-filter-block-block": "å°é",
+ "log-action-filter-block-reblock": "å°éä¿®æ¹",
+ "log-action-filter-block-unblock": "解é¤å°é",
+ "log-action-filter-contentmodel-change": "è®æ´å
§å®¹æ¨¡å",
+ "log-action-filter-contentmodel-new": "使ç¨éæ¨æºå
§å®¹æ¨¡å建ç«çé é¢",
+ "log-action-filter-delete-delete": "é é¢åªé¤",
+ "log-action-filter-delete-restore": "é é¢åæ¶åªé¤",
+ "log-action-filter-delete-event": "æ¥èªåªé¤",
+ "log-action-filter-delete-revision": "ä¿®è¨åªé¤",
+ "log-action-filter-import-interwiki": "Transwiki å¯å
¥",
+ "log-action-filter-import-upload": "ä½¿ç¨ XML ä¸å³å¯å
¥",
+ "log-action-filter-managetags-create": "æ¨ç±¤å»ºç«",
+ "log-action-filter-managetags-delete": "æ¨ç±¤åªé¤",
+ "log-action-filter-managetags-activate": "æ¨ç±¤åå",
+ "log-action-filter-managetags-deactivate": "æ¨ç±¤åæ¶åå",
+ "log-action-filter-move-move": "移åä¸è¦å¯«éæ°å°å",
+ "log-action-filter-move-move_redir": "移åè¦å¯«éæ°å°å",
+ "log-action-filter-newusers-create": "ç±å¿å使ç¨è
建ç«",
+ "log-action-filter-newusers-create2": "ç±è¨»å使ç¨è
建ç«",
+ "log-action-filter-newusers-autocreate": "èªå建ç«",
+ "log-action-filter-newusers-byemail": "使ç¨é»åéµä»¶ç¼éå¯ç¢¼å»ºç«",
+ "log-action-filter-patrol-patrol": "æåå·¡æ¥",
+ "log-action-filter-patrol-autopatrol": "èªåå·¡æ¥",
+ "log-action-filter-protect-protect": "ä¿è·",
+ "log-action-filter-protect-modify": "ä¿è·ä¿®æ¹",
+ "log-action-filter-protect-unprotect": "解é¤ä¿è·",
+ "log-action-filter-protect-move_prot": "已移åä¿è·",
+ "log-action-filter-rights-rights": "æåè®æ´",
+ "log-action-filter-rights-autopromote": "èªåè®æ´",
+ "log-action-filter-suppress-event": "æ¥èªç¦æ¢é¡¯ç¤º",
+ "log-action-filter-suppress-revision": "ä¿®è¨ç¦æ¢é¡¯ç¤º",
+ "log-action-filter-suppress-delete": "é é¢ç¦æ¢é¡¯ç¤º",
+ "log-action-filter-suppress-block": "ç±å°éç¦æ¢é¡¯ç¤ºä½¿ç¨è
",
+ "log-action-filter-suppress-reblock": "ç±éæ°å°éç¦æ¢é¡¯ç¤ºä½¿ç¨è
",
+ "log-action-filter-upload-upload": "æ°ä¸å³",
+ "log-action-filter-upload-overwrite": "éæ°ä¸å³"
}
diff --git a/languages/messages/MessagesAf.php b/languages/messages/MessagesAf.php
index 181032c98d..d6dab21ac7 100644
--- a/languages/messages/MessagesAf.php
+++ b/languages/messages/MessagesAf.php
@@ -59,12 +59,12 @@ $magicWords = [
'namespace' => [ '1', 'NAAMSPASIE', 'NAMESPACE' ],
'talkspace' => [ '1', 'BESPREKINGSBLADSY', 'TALKSPACE' ],
'fullpagename' => [ '1', 'VOLBLADSYNAAM', 'FULLPAGENAME' ],
- 'img_thumbnail' => [ '1', 'duimnael', 'thumbnail', 'thumb' ],
+ 'img_thumbnail' => [ '1', 'duimnael', 'thumb', 'thumbnail' ],
'img_right' => [ '1', 'regs', 'right' ],
'img_left' => [ '1', 'links', 'left' ],
'img_none' => [ '1', 'geen', 'none' ],
'img_center' => [ '1', 'senter', 'center', 'centre' ],
- 'img_framed' => [ '1', 'omraam', 'framed', 'enframed', 'frame' ],
+ 'img_framed' => [ '1', 'omraam', 'frame', 'framed', 'enframed' ],
'img_frameless' => [ '1', 'raamloos', 'frameless' ],
'img_border' => [ '1', 'raam', 'border' ],
'img_top' => [ '1', 'bo', 'top' ],
diff --git a/languages/messages/MessagesAn.php b/languages/messages/MessagesAn.php
index 33b1107921..038566bade 100644
--- a/languages/messages/MessagesAn.php
+++ b/languages/messages/MessagesAn.php
@@ -44,7 +44,7 @@ $magicWords = [
'namespace' => [ '1', 'ESPACIODENOMBRES', 'ESPACIODENOMBRE', 'NAMESPACE' ],
'namespacee' => [ '1', 'ESPACIODENOMBRESE', 'ESPACIODENOMBREC', 'NAMESPACEE' ],
'img_right' => [ '1', 'dreita', 'derecha', 'dcha', 'der', 'right' ],
- 'img_left' => [ '1', 'cucha', 'zurda', 'izquierda', 'izda', 'izq', 'left' ],
+ 'img_left' => [ '1', 'cucha', 'izquierda', 'zurda', 'izda', 'izq', 'left' ],
'ns' => [ '0', 'EN:', 'EDN:', 'NS:' ],
'displaytitle' => [ '1', 'TÃTOL', 'MOSTRARTÃTULO', 'MOSTRARTITULO', 'DISPLAYTITLE' ],
'currentversion' => [ '1', 'BERSIÃNAUTUAL', 'BERSIONAUTUAL', 'REVISIÃNACTUAL', 'VERSIONACTUAL', 'VERSIÃNACTUAL', 'CURRENTVERSION' ],
diff --git a/languages/messages/MessagesAr.php b/languages/messages/MessagesAr.php
index e76e419277..a83b71754f 100644
--- a/languages/messages/MessagesAr.php
+++ b/languages/messages/MessagesAr.php
@@ -196,14 +196,14 @@ $magicWords = [
'subst' => [ '0', 'Ùسخ:', 'SUBST:' ],
'safesubst' => [ '0', 'Ùسخ_Ø¢Ù
Ù:', 'SAFESUBST:' ],
'msgnw' => [ '0', 'رساÙØ©_بدÙÙ_تÙÙئة:', 'MSGNW:' ],
- 'img_thumbnail' => [ '1', 'تصغÙر', 'thumbnail', 'thumb' ],
+ 'img_thumbnail' => [ '1', 'تصغÙر', 'thumb', 'thumbnail' ],
'img_manualthumb' => [ '1', 'تصغÙر=$1', 'Ù
صغر=$1', 'thumbnail=$1', 'thumb=$1' ],
'img_right' => [ '1', 'ÙÙ
ÙÙ', 'right' ],
'img_left' => [ '1', 'Ùسار', 'left' ],
'img_none' => [ '1', 'بدÙÙ', 'بÙا', 'none' ],
'img_width' => [ '1', '$1بÙ', '$1عÙ', '$1px' ],
'img_center' => [ '1', 'Ù
رÙز', 'center', 'centre' ],
- 'img_framed' => [ '1', 'إطار', 'بإطار', 'framed', 'enframed', 'frame' ],
+ 'img_framed' => [ '1', 'إطار', 'بإطار', 'frame', 'framed', 'enframed' ],
'img_frameless' => [ '1', 'Ùاإطار', 'frameless' ],
'img_lang' => [ '1', 'Ùغة=$1', 'lang=$1' ],
'img_page' => [ '1', 'صÙØØ©=$1', 'صÙØØ©_$1', 'page=$1', 'page $1' ],
diff --git a/languages/messages/MessagesArc.php b/languages/messages/MessagesArc.php
index 91dc377045..0c1b668ff4 100644
--- a/languages/messages/MessagesArc.php
+++ b/languages/messages/MessagesArc.php
@@ -108,7 +108,7 @@ $magicWords = [
'pagenamee' => [ '1', 'ÜÜÜ¢ÜÜ_ÜܦÜܬÜ', 'PAGENAMEE' ],
'namespace' => [ '1', 'ÜÜ©Ü Ü', 'NAMESPACE' ],
'msg' => [ '0', 'ÜÜܪܬÜ:', 'MSG:' ],
- 'img_thumbnail' => [ '1', 'ÜÜ¥ÜܪܬÜ', 'thumbnail', 'thumb' ],
+ 'img_thumbnail' => [ '1', 'ÜÜ¥ÜܪܬÜ', 'thumb', 'thumbnail' ],
'img_manualthumb' => [ '1', 'ÜÜ¥ÜܪܬÜ=$1', 'thumbnail=$1', 'thumb=$1' ],
'img_right' => [ '1', 'ÜÜ¡ÜÜ¢Ü', 'right' ],
'img_left' => [ '1', 'Ü£Ü¡Ü Ü', 'left' ],
diff --git a/languages/messages/MessagesArz.php b/languages/messages/MessagesArz.php
index f3377ae01e..2e69353069 100644
--- a/languages/messages/MessagesArz.php
+++ b/languages/messages/MessagesArz.php
@@ -208,15 +208,15 @@ $magicWords = [
'subst' => [ '0', 'Ùسخ:', 'Ø¥ØÙاÙ:', 'SUBST:' ],
'safesubst' => [ '0', 'Ùسخ_Ø¢Ù
Ù:', 'SAFESUBST:' ],
'msgnw' => [ '0', 'رساÙØ©_Ù
Ù_غÙر_تÙÙئÙ:', 'رساÙØ©_بدÙÙ_تÙÙئة:', 'MSGNW:' ],
- 'img_thumbnail' => [ '1', 'تصغÙر', 'Ù
صغر', 'thumbnail', 'thumb' ],
+ 'img_thumbnail' => [ '1', 'تصغÙر', 'Ù
صغر', 'thumb', 'thumbnail' ],
'img_manualthumb' => [ '1', 'تصغÙر=$1', 'Ù
صغر=$1', 'thumbnail=$1', 'thumb=$1' ],
'img_right' => [ '1', 'ÙÙ
ÙÙ', 'right' ],
'img_left' => [ '1', 'Ùسار', 'left' ],
'img_none' => [ '1', 'بدÙÙ', 'بÙا', 'none' ],
'img_width' => [ '1', '$1بÙ', '$1عÙ', '$1px' ],
'img_center' => [ '1', 'Ù
رÙز', 'center', 'centre' ],
- 'img_framed' => [ '1', 'إطار', 'بإطار', 'framed', 'enframed', 'frame' ],
- 'img_frameless' => [ '1', 'Ù
Ù_غÙر_اطار', 'Ùاإطار', 'frameless' ],
+ 'img_framed' => [ '1', 'إطار', 'بإطار', 'frame', 'framed', 'enframed' ],
+ 'img_frameless' => [ '1', 'Ùاإطار', 'Ù
Ù_غÙر_اطار', 'frameless' ],
'img_lang' => [ '1', 'ÙغÙ=$1', 'Ùغة=$1', 'lang=$1' ],
'img_page' => [ '1', 'صÙØ=$1', 'صÙØÙ_$1', 'صÙØØ©=$1', 'صÙØØ©_$1', 'page=$1', 'page $1' ],
'img_upright' => [ '1', 'Ù
عدÙÙ', 'Ù
عدÙÙ=$1', 'Ù
عدÙÙ_$1', 'upright', 'upright=$1', 'upright $1' ],
diff --git a/languages/messages/MessagesAzb.php b/languages/messages/MessagesAzb.php
index 840d17b3ed..92ca0f87fa 100644
--- a/languages/messages/MessagesAzb.php
+++ b/languages/messages/MessagesAzb.php
@@ -81,6 +81,6 @@ $magicWords = [
'img_right' => [ '1', 'ساغ', 'راست', 'right' ],
'img_left' => [ '1', 'سÙÙ', 'ÚÙ¾', 'left' ],
'img_none' => [ '1', 'ÙئÚ', 'ÙÛÚ', 'none' ],
- 'img_framed' => [ '1', 'ÙابÛÙ', 'Ùاب', 'framed', 'enframed', 'frame' ],
+ 'img_framed' => [ '1', 'ÙابÛÙ', 'Ùاب', 'frame', 'framed', 'enframed' ],
];
diff --git a/languages/messages/MessagesBcl.php b/languages/messages/MessagesBcl.php
index 475ba9be36..0b0d42eca3 100644
--- a/languages/messages/MessagesBcl.php
+++ b/languages/messages/MessagesBcl.php
@@ -67,7 +67,7 @@ $magicWords = [
'img_left' => [ '1', 'wala', 'left' ],
'img_none' => [ '1', 'mayò', 'none' ],
'img_center' => [ '1', 'sentro', 'tangâ', 'center', 'centre' ],
- 'img_framed' => [ '1', 'nakakawadro', 'kwadro', 'framed', 'enframed', 'frame' ],
+ 'img_framed' => [ '1', 'nakakawadro', 'kwadro', 'frame', 'framed', 'enframed' ],
'img_frameless' => [ '1', 'daing kwadro', 'frameless' ],
'img_page' => [ '1', 'pahina=$1', 'pahina $1', 'page=$1', 'page $1' ],
'localurl' => [ '0', 'LOKALURL', 'LOCALURL:' ],
diff --git a/languages/messages/MessagesBe.php b/languages/messages/MessagesBe.php
index c306ba4939..9822436dad 100644
--- a/languages/messages/MessagesBe.php
+++ b/languages/messages/MessagesBe.php
@@ -34,14 +34,14 @@ $namespaceAliases = [
];
$magicWords = [
- 'img_thumbnail' => [ '1', 'мÑнÑ', 'мÑнÑÑÑÑÑа', 'thumbnail', 'thumb' ],
+ 'img_thumbnail' => [ '1', 'мÑнÑ', 'мÑнÑÑÑÑÑа', 'thumb', 'thumbnail' ],
'img_manualthumb' => [ '1', 'мÑнÑ=$1', 'мÑнÑÑÑÑÑа=$1', 'thumbnail=$1', 'thumb=$1' ],
'img_right' => [ '1', 'ÑпÑава', 'right' ],
'img_left' => [ '1', 'злева', 'left' ],
'img_none' => [ '1', 'нÑма', 'none' ],
'img_width' => [ '1', '$1пкÑ', '$1px' ],
'img_center' => [ '1', 'ÑÑнÑÑ', 'center', 'centre' ],
- 'img_framed' => [ '1', 'безÑамкÑ', 'framed', 'enframed', 'frame' ],
+ 'img_framed' => [ '1', 'безÑамкÑ', 'frame', 'framed', 'enframed' ],
];
$bookstoreList = [
diff --git a/languages/messages/MessagesBg.php b/languages/messages/MessagesBg.php
index d775d25638..74b7fe00a5 100644
--- a/languages/messages/MessagesBg.php
+++ b/languages/messages/MessagesBg.php
@@ -162,14 +162,14 @@ $magicWords = [
'msg' => [ '0', 'СЪÐÐЩ:', 'MSG:' ],
'subst' => [ '0', 'ÐÐÐÐСТ:', 'SUBST:' ],
'msgnw' => [ '0', 'СЪÐÐЩÐУ:', 'MSGNW:' ],
- 'img_thumbnail' => [ '1', 'мини', 'thumbnail', 'thumb' ],
+ 'img_thumbnail' => [ '1', 'мини', 'thumb', 'thumbnail' ],
'img_manualthumb' => [ '1', 'мини=$1', 'thumbnail=$1', 'thumb=$1' ],
- 'img_right' => [ '1', 'вдÑÑно', 'дÑÑно', 'д', 'right' ],
- 'img_left' => [ '1', 'влÑво', 'лÑво', 'л', 'left' ],
+ 'img_right' => [ '1', 'дÑÑно', 'вдÑÑно', 'д', 'right' ],
+ 'img_left' => [ '1', 'лÑво', 'влÑво', 'л', 'left' ],
'img_none' => [ '1', 'н', 'none' ],
'img_width' => [ '1', '$1пкÑ', '$1п', '$1px' ],
- 'img_center' => [ '1', 'ÑенÑÑÑ', 'ÑенÑÑ', 'Ñ', 'center', 'centre' ],
- 'img_framed' => [ '1', 'Ñамка', 'вÑамка', 'framed', 'enframed', 'frame' ],
+ 'img_center' => [ '1', 'ÑенÑÑÑ', 'Ñ', 'ÑенÑÑ', 'center', 'centre' ],
+ 'img_framed' => [ '1', 'Ñамка', 'вÑамка', 'frame', 'framed', 'enframed' ],
'img_frameless' => [ '1', 'безÑамка', 'frameless' ],
'img_border' => [ '1', 'ÑÑб', 'конÑÑÑ', 'border' ],
'int' => [ '0', 'ÐЪТР:', 'INT:' ],
diff --git a/languages/messages/MessagesBs.php b/languages/messages/MessagesBs.php
index adeafda31e..6211da20a8 100644
--- a/languages/messages/MessagesBs.php
+++ b/languages/messages/MessagesBs.php
@@ -187,14 +187,14 @@ $magicWords = [
'msg' => [ '0', 'POR:', 'MSG:' ],
'subst' => [ '0', 'ZAMJENI:', 'SUBST:' ],
'msgnw' => [ '0', 'NVPOR:', 'MSGNW:' ],
- 'img_thumbnail' => [ '1', 'mini', 'thumbnail', 'thumb' ],
+ 'img_thumbnail' => [ '1', 'mini', 'thumb', 'thumbnail' ],
'img_manualthumb' => [ '1', 'mini=$1', 'thumbnail=$1', 'thumb=$1' ],
'img_right' => [ '1', 'desno', 'd', 'right' ],
'img_left' => [ '1', 'lijevo', 'l', 'left' ],
'img_none' => [ '1', 'n', 'bez', 'none' ],
'img_width' => [ '1', '$1piksel', '$1p', '$1px' ],
'img_center' => [ '1', 'centar', 'c', 'center', 'centre' ],
- 'img_framed' => [ '1', 'okvir', 'ram', 'framed', 'enframed', 'frame' ],
+ 'img_framed' => [ '1', 'okvir', 'ram', 'frame', 'framed', 'enframed' ],
'img_frameless' => [ '1', 'bez_okvira', 'frameless' ],
'img_page' => [ '1', 'stranica=$1', 'stranica $1', 'page=$1', 'page $1' ],
'img_upright' => [ '1', 'na_gore', 'na_gore=$1', 'na_gore_$1', 'upright', 'upright=$1', 'upright $1' ],
diff --git a/languages/messages/MessagesCe.php b/languages/messages/MessagesCe.php
index d83a36485a..d442f07242 100644
--- a/languages/messages/MessagesCe.php
+++ b/languages/messages/MessagesCe.php
@@ -221,20 +221,20 @@ $magicWords = [
'msg' => [ '0', 'Ð¥ÐÐÐ:', 'СÐÐÐЩÐÐÐÐ:', 'СÐÐÐЩ:', 'MSG:' ],
'subst' => [ '0', 'Ð¥ÓÐТТÐÐ :', 'Ð¥ÓÐТТ:', 'ÐÐÐСТÐÐÐÐÐÐ:', 'ÐÐÐСТ:', 'SUBST:' ],
'msgnw' => [ '0', 'ÐÐÐÐ_Ð¥ÐÐÐ_ÐÐЦÐШ:', 'СÐÐÐЩ_ÐÐÐ_ÐÐÐÐ:', 'MSGNW:' ],
- 'img_thumbnail' => [ '1', 'жима', 'жимо', 'мини', 'миниаÑÑÑа', 'thumbnail', 'thumb' ],
+ 'img_thumbnail' => [ '1', 'мини', 'жима', 'жимо', 'миниаÑÑÑа', 'thumb', 'thumbnail' ],
'img_manualthumb' => [ '1', 'жима=$1', 'жимо=$1', 'мини=$1', 'миниаÑÑÑа=$1', 'thumbnail=$1', 'thumb=$1' ],
- 'img_right' => [ '1', 'бакÑÑ
Ñа', 'ÑпÑава', 'right' ],
- 'img_left' => [ '1', 'Ñ
аÑÑÑ
Ñа', 'Ñлева', 'left' ],
+ 'img_right' => [ '1', 'ÑпÑава', 'бакÑÑ
Ñа', 'right' ],
+ 'img_left' => [ '1', 'Ñлева', 'Ñ
аÑÑÑ
Ñа', 'left' ],
'img_none' => [ '1', 'йоÑÑÑ', 'без', 'none' ],
'img_width' => [ '1', '$1пкÑ', '$1px' ],
- 'img_center' => [ '1', 'ÑккÑ', 'ÑенÑÑ', 'center', 'centre' ],
- 'img_framed' => [ '1', 'гÑÑабе', 'обÑамиÑÑ', 'framed', 'enframed', 'frame' ],
- 'img_frameless' => [ '1', 'гÑÑабоÑаÑ', 'безÑамки', 'frameless' ],
+ 'img_center' => [ '1', 'ÑенÑÑ', 'ÑккÑ', 'center', 'centre' ],
+ 'img_framed' => [ '1', 'гÑÑабе', 'обÑамиÑÑ', 'frame', 'framed', 'enframed' ],
+ 'img_frameless' => [ '1', 'безÑамки', 'гÑÑабоÑаÑ', 'frameless' ],
'img_page' => [ '1', 'агlо=$1', 'агlо_$1', 'page_$1', 'ÑÑÑаниÑа=$1', 'ÑÑÑаниÑа_$1', 'ÑÑÑаниÑа $1', 'page=$1', 'page $1' ],
'img_upright' => [ '1', 'бакÑÑ
ÑалакÑ
о', 'бакÑÑ
ÑалакÑ
о=$1', 'бакÑÑ
ÑалакÑ
о_$1', 'upright_$1', 'ÑвеÑÑ
ÑÑпÑава', 'ÑвеÑÑ
ÑÑпÑава=$1', 'ÑвеÑÑ
ÑÑпÑава_$1', 'ÑвеÑÑ
ÑÑпÑава $1', 'upright', 'upright=$1', 'upright $1' ],
'img_border' => [ '1', 'доза', 'гÑаниÑа', 'border' ],
'img_baseline' => [ '1', 'бÑÑ
', 'оÑнование', 'baseline' ],
- 'img_sub' => [ '1', 'бÑÑ
а', 'под', 'sub' ],
+ 'img_sub' => [ '1', 'под', 'бÑÑ
а', 'sub' ],
'img_super' => [ '1', 'ÑÓе', 'над', 'super', 'sup' ],
'img_top' => [ '1', 'лакÑ
аÑ
Ñ', 'ÑвеÑÑ
Ñ', 'top' ],
'img_text_top' => [ '1', 'лакÑ
Ñ
ÑаÑа-йоза', 'ÑекÑÑ-ÑвеÑÑ
Ñ', 'text-top' ],
diff --git a/languages/messages/MessagesCkb.php b/languages/messages/MessagesCkb.php
index a010c2c531..ad45b66341 100644
--- a/languages/messages/MessagesCkb.php
+++ b/languages/messages/MessagesCkb.php
@@ -109,12 +109,12 @@ $specialPageAliases = [
];
$magicWords = [
- 'img_thumbnail' => [ '1', 'ÙÛÙÛÚ©', 'thumbnail', 'thumb' ],
+ 'img_thumbnail' => [ '1', 'ÙÛÙÛÚ©', 'thumb', 'thumbnail' ],
'img_right' => [ '1', 'Úاست', 'right' ],
'img_left' => [ '1', 'ÚÛÙ¾', 'left' ],
'img_width' => [ '1', '$1Ù¾Ûکسڵ', '$1px' ],
'img_center' => [ '1', 'ÙاÙÛÚاست', 'center', 'centre' ],
- 'img_framed' => [ '1', 'ÚÙارÚÛÙÛ', 'framed', 'enframed', 'frame' ],
+ 'img_framed' => [ '1', 'ÚÙارÚÛÙÛ', 'frame', 'framed', 'enframed' ],
'img_frameless' => [ '1', 'بÛÚÙارÚÛÙÛ', 'frameless' ],
'img_border' => [ '1', 'سÙÙÙر', 'border' ],
];
diff --git a/languages/messages/MessagesCs.php b/languages/messages/MessagesCs.php
index 3cd652bd05..ee04481d37 100644
--- a/languages/messages/MessagesCs.php
+++ b/languages/messages/MessagesCs.php
@@ -72,12 +72,12 @@ $specialPageAliases = [
'Filepath' => [ 'Cesta_k_souboru' ],
'Import' => [ 'Importovat_stránky' ],
'Invalidateemail' => [ 'Zneplatnit_e-mail', 'ZruÅ¡it_potvrzenÃ_e-mailu' ],
- 'BlockList' => [ 'BlokovanÃ_uživatelé', 'Blokovani_uzivatele' ],
+ 'BlockList' => [ 'BlokovanÃ_uživatelé', 'Blokovani_uzivatele', 'ZablokovanÃ_uživatelé' ],
'LinkSearch' => [ 'HledánÃ_odkazů', 'Hledani_odkazu' ],
'Listadmins' => [ 'Seznam_správců', 'Seznam_spravcu' ],
'Listbots' => [ 'Seznam_botů', 'Seznam_botu' ],
'Listfiles' => [ 'Seznam_souborů', 'Seznam_souboru' ],
- 'Listgrouprights' => [ 'Seznam_uživatelských_práv', 'Seznam_uzivatelskych_prav' ],
+ 'Listgrouprights' => [ 'Práva_uživatelských_skupin', 'Seznam_uživatelských_práv', 'Seznam_uzivatelskych_prav' ],
'Listredirects' => [ 'Seznam_pÅesmÄrovánÃ', 'Seznam_presmerovani' ],
'Listusers' => [ 'Uživatelé', 'Uzivatele', 'Seznam_uživatelů', 'Seznam_uzivatelu' ],
'Lockdb' => [ 'Zamknout_databázi', 'Zamknout_databazi' ],
@@ -92,7 +92,7 @@ $specialPageAliases = [
'Mostlinkedcategories' => [ 'NejpoužÃvanÄjÅ¡Ã_kategorie', 'Nejpouzivanejsi_kategorie' ],
'Mostlinkedtemplates' => [ 'NejpoužÃvanÄjÅ¡Ã_Å¡ablony', 'Nejpouzivanejsi_sablony' ],
'Mostrevisions' => [ 'Stránky_s_nejvÃce_editacemi', 'Stranky_s_nejvice_editacemi', 'Stránky_s_nejvyÅ¡Å¡Ãm_poÄtem_editacÃ' ],
- 'Movepage' => [ 'PÅesunout_stránku' ],
+ 'Movepage' => [ 'PÅesunout_stránku', 'PÅejmenovat_stránku' ],
'Mycontributions' => [ 'Mé_pÅÃspÄvky', 'Me_prispevky' ],
'Mypage' => [ 'Moje_stránka', 'Moje_stranka' ],
'Mytalk' => [ 'Moje_diskuse' ],
@@ -111,6 +111,7 @@ $specialPageAliases = [
'Specialpages' => [ 'SpeciálnÃ_stránky', 'Specialni_stranky' ],
'Statistics' => [ 'Statistika', 'Statistiky' ],
'Tags' => [ 'ZnaÄky', 'Znacky' ],
+ 'TrackingCategories' => [ 'SledovacÃ_kategorie', 'Sledovaci_kategorie' ],
'Unblock' => [ 'OdblokovánÃ', 'Odblokovani' ],
'Uncategorizedcategories' => [ 'Nekategorizované_kategorie', 'Nekategorizovane_kategorie' ],
'Uncategorizedimages' => [ 'Nekategorizované_soubory', 'Nekategorizovane_soubory' ],
@@ -191,14 +192,14 @@ $magicWords = [
'subjectpagenamee' => [ '1', 'NÃZEVÄLÃNKUE', 'SUBJECTPAGENAMEE', 'ARTICLEPAGENAMEE' ],
'subst' => [ '0', 'VLOŽIT:', 'SUBST:' ],
'msgnw' => [ '0', 'VLOŽITNW:', 'MSGNW:' ],
- 'img_thumbnail' => [ '1', 'náhled', 'thumbnail', 'thumb' ],
+ 'img_thumbnail' => [ '1', 'náhled', 'thumb', 'thumbnail' ],
'img_manualthumb' => [ '1', 'náhled=$1', 'thumbnail=$1', 'thumb=$1' ],
'img_right' => [ '1', 'vpravo', 'right' ],
'img_left' => [ '1', 'vlevo', 'left' ],
'img_none' => [ '1', 'žádné', 'none' ],
'img_width' => [ '1', '$1pixelů', '$1px' ],
'img_center' => [ '1', 'stÅed', 'center', 'centre' ],
- 'img_framed' => [ '1', 'rám', 'framed', 'enframed', 'frame' ],
+ 'img_framed' => [ '1', 'rám', 'frame', 'framed', 'enframed' ],
'img_frameless' => [ '1', 'bezrámu', 'frameless' ],
'img_lang' => [ '1', 'jazyk=$1', 'lang=$1' ],
'img_page' => [ '1', 'strana=$1', 'strana_$1', 'page=$1', 'page $1' ],
diff --git a/languages/messages/MessagesCy.php b/languages/messages/MessagesCy.php
index 8306461bda..a569f16d53 100644
--- a/languages/messages/MessagesCy.php
+++ b/languages/messages/MessagesCy.php
@@ -53,7 +53,7 @@ $magicWords = [
'subpagenamee' => [ '1', 'ENWISDUDALENE', 'SUBPAGENAMEE' ],
'talkpagename' => [ '1', 'ENWTUDALENSGWRS', 'TALKPAGENAME' ],
'talkpagenamee' => [ '1', 'ENWTUDALENSGWRSE', 'TALKPAGENAMEE' ],
- 'img_thumbnail' => [ '1', 'ewin_bawd', 'bawd', 'mân-lun', 'thumbnail', 'thumb' ],
+ 'img_thumbnail' => [ '1', 'bawd', 'ewin_bawd', 'mân-lun', 'thumb', 'thumbnail' ],
'img_manualthumb' => [ '1', 'mân-lun=$1', 'bawd=$1', 'thumbnail=$1', 'thumb=$1' ],
'img_right' => [ '1', 'de', 'right' ],
'img_left' => [ '1', 'chwith', 'left' ],
diff --git a/languages/messages/MessagesDe.php b/languages/messages/MessagesDe.php
index 0a53ff5db2..5fc359ebe6 100644
--- a/languages/messages/MessagesDe.php
+++ b/languages/messages/MessagesDe.php
@@ -208,21 +208,21 @@ $magicWords = [
'subjectpagenamee' => [ '1', 'HAUPTSEITENNAME_URL', 'VORDERSEITE_URL', 'HAUPTSEITE_URL', 'SUBJECTPAGENAMEE', 'ARTICLEPAGENAMEE' ],
'subst' => [ '0', 'ERS:', 'SUBST:' ],
'safesubst' => [ '0', 'SICHER_ERS:', 'SICHERERS:', 'SAFESUBST:' ],
- 'img_thumbnail' => [ '1', 'mini', 'miniatur', 'thumbnail', 'thumb' ],
+ 'img_thumbnail' => [ '1', 'miniatur', 'mini', 'thumb', 'thumbnail' ],
'img_manualthumb' => [ '1', 'miniatur=$1', 'mini=$1', 'thumbnail=$1', 'thumb=$1' ],
'img_right' => [ '1', 'rechts', 'right' ],
'img_left' => [ '1', 'links', 'left' ],
'img_none' => [ '1', 'ohne', 'none' ],
'img_center' => [ '1', 'zentriert', 'center', 'centre' ],
- 'img_framed' => [ '1', 'gerahmt', 'framed', 'enframed', 'frame' ],
+ 'img_framed' => [ '1', 'gerahmt', 'frame', 'framed', 'enframed' ],
'img_frameless' => [ '1', 'rahmenlos', 'frameless' ],
'img_lang' => [ '1', 'sprache=$1', 'lang=$1' ],
'img_page' => [ '1', 'seite=$1', 'seite_$1', 'page=$1', 'page $1' ],
'img_upright' => [ '1', 'hochkant', 'hochkant=$1', 'hochkant_$1', 'upright', 'upright=$1', 'upright $1' ],
'img_border' => [ '1', 'rand', 'border' ],
'img_baseline' => [ '1', 'grundlinie', 'baseline' ],
- 'img_sub' => [ '1', 'tiefgestellt', 'tief', 'sub' ],
- 'img_super' => [ '1', 'hochgestellt', 'hoch', 'super', 'sup' ],
+ 'img_sub' => [ '1', 'tief', 'tiefgestellt', 'sub' ],
+ 'img_super' => [ '1', 'hoch', 'hochgestellt', 'super', 'sup' ],
'img_top' => [ '1', 'oben', 'top' ],
'img_text_top' => [ '1', 'text-oben', 'text-top' ],
'img_middle' => [ '1', 'mitte', 'middle' ],
diff --git a/languages/messages/MessagesDiq.php b/languages/messages/MessagesDiq.php
index 03cf459830..c81fd34248 100644
--- a/languages/messages/MessagesDiq.php
+++ b/languages/messages/MessagesDiq.php
@@ -224,14 +224,14 @@ $magicWords = [
'subst' => [ '0', 'KOPYAKE', 'ATEBERDE', 'SUBST:' ],
'safesubst' => [ '0', 'EMELEYATEBERDE', 'SAFESUBST:' ],
'msgnw' => [ '0', 'MSCNW:', 'MSGNW:' ],
- 'img_thumbnail' => [ '1', 'resmoqıckek', 'qıckek', 'thumbnail', 'thumb' ],
+ 'img_thumbnail' => [ '1', 'resmoqıckek', 'qıckek', 'thumb', 'thumbnail' ],
'img_manualthumb' => [ '1', 'resmoqıckek=$1', 'qıckek=$1', 'thumbnail=$1', 'thumb=$1' ],
'img_right' => [ '1', 'raÅt', 'right' ],
'img_left' => [ '1', 'çep', 'left' ],
'img_none' => [ '1', 'çıniyo', 'none' ],
'img_width' => [ '1', '$1pik', '$1piksel', '$1px' ],
'img_center' => [ '1', 'werte', 'miyan', 'center', 'centre' ],
- 'img_framed' => [ '1', 'çerçeweyın', 'çerçewekerden', 'çerçewe', 'framed', 'enframed', 'frame' ],
+ 'img_framed' => [ '1', 'çerçeweyın', 'çerçewekerden', 'çerçewe', 'frame', 'framed', 'enframed' ],
'img_frameless' => [ '1', 'béçerçewe', 'frameless' ],
'img_lang' => [ '1', 'zuwan=1$', 'lang=$1' ],
'img_page' => [ '1', 'pera=$1', 'pera_$1', 'page=$1', 'page $1' ],
@@ -239,7 +239,7 @@ $magicWords = [
'img_border' => [ '1', 'sinor', 'border' ],
'img_baseline' => [ '1', 'Sinoréerdi', 'baseline' ],
'img_sub' => [ '1', 'anvar', 'sub' ],
- 'img_super' => [ '1', 'corén', 'cor', 'super', 'sup' ],
+ 'img_super' => [ '1', 'cor', 'corén', 'super', 'sup' ],
'img_top' => [ '1', 'gedug', 'top' ],
'img_text_top' => [ '1', 'gedug-metin', 'text-top' ],
'img_middle' => [ '1', 'merkez', 'middle' ],
diff --git a/languages/messages/MessagesEl.php b/languages/messages/MessagesEl.php
index 763f9faa12..dd7cd68f4c 100644
--- a/languages/messages/MessagesEl.php
+++ b/languages/messages/MessagesEl.php
@@ -215,14 +215,14 @@ $magicWords = [
'msg' => [ '0', 'ÎÎÎÎÎÎÎ:', 'MSG:' ],
'subst' => [ '0', 'ÎÎÎÎÎÎ:', 'SUBST:' ],
'msgnw' => [ '0', 'ÎÎ ÎÎÎÎÎÎÎÎÎ:', 'MSGNW:' ],
- 'img_thumbnail' => [ '1', 'μικÏογÏαÏία', 'μινιαÏοÏÏα', 'thumbnail', 'thumb' ],
+ 'img_thumbnail' => [ '1', 'μικÏογÏαÏία', 'μινιαÏοÏÏα', 'thumb', 'thumbnail' ],
'img_manualthumb' => [ '1', 'μικÏογÏαÏία=$1', 'μινιαÏοÏÏα=$1', 'thumbnail=$1', 'thumb=$1' ],
'img_right' => [ '1', 'δεξιά', 'right' ],
'img_left' => [ '1', 'αÏιÏÏεÏά', 'left' ],
'img_none' => [ '1', 'καθÏλοÏ
', 'none' ],
'img_width' => [ '1', '$1εÏ', '$1px' ],
'img_center' => [ '1', 'κÎνÏÏο', 'center', 'centre' ],
- 'img_framed' => [ '1', 'με-ÏλαίÏιο', 'framed', 'enframed', 'frame' ],
+ 'img_framed' => [ '1', 'με-ÏλαίÏιο', 'frame', 'framed', 'enframed' ],
'img_frameless' => [ '1', 'ÏÏÏίÏ-ÏλαίÏιο', 'frameless' ],
'img_page' => [ '1', 'Ïελίδα=$1', 'Ïελίδα_$1', 'page=$1', 'page $1' ],
'img_upright' => [ '1', 'καÏακÏÏÏ
Ïα', 'καÏακÏÏÏ
Ïα=$1', 'καÏακÏÏÏ
Ïα_$1', 'upright', 'upright=$1', 'upright $1' ],
diff --git a/languages/messages/MessagesEn.php b/languages/messages/MessagesEn.php
index d6ed2356c5..674be133b2 100644
--- a/languages/messages/MessagesEn.php
+++ b/languages/messages/MessagesEn.php
@@ -197,9 +197,16 @@ $bookstoreList = [
* IDs must be valid identifiers, they cannot contain hyphens.
* CASE is 0 to match all case variants, 1 for case-sensitive
*
- * Note to translators:
- * Please include the English words as synonyms. This allows people
- * from other wikis to contribute more easily.
+ * Note to localisers:
+ * - Include the English magic words as synonyms. This allows people from
+ * other wikis that do not speak the language to contribute more easily.
+ * - The first alias listed MUST be the preferred alias in that language.
+ * Tools (like Visual Editor) are expected to use the first listed alias
+ * when editing or creating new content.
+ * - Order the other aliases so that common aliases occur before more rarely
+ * used aliases. The aliases SHOULD be sorted by the following convention:
+ * 1. Local first, English last, then
+ * 2. Most common first, least common last.
*
* This array can be modified at runtime with the LanguageGetMagic hook
*/
@@ -265,14 +272,14 @@ $magicWords = [
'subst' => [ 0, 'SUBST:' ],
'safesubst' => [ 0, 'SAFESUBST:' ],
'msgnw' => [ 0, 'MSGNW:' ],
- 'img_thumbnail' => [ 1, 'thumbnail', 'thumb' ],
+ 'img_thumbnail' => [ 1, 'thumb', 'thumbnail' ],
'img_manualthumb' => [ 1, 'thumbnail=$1', 'thumb=$1' ],
'img_right' => [ 1, 'right' ],
'img_left' => [ 1, 'left' ],
'img_none' => [ 1, 'none' ],
'img_width' => [ 1, '$1px' ],
'img_center' => [ 1, 'center', 'centre' ],
- 'img_framed' => [ 1, 'framed', 'enframed', 'frame' ],
+ 'img_framed' => [ 1, 'frame', 'framed', 'enframed' ],
'img_frameless' => [ 1, 'frameless' ],
'img_lang' => [ 1, 'lang=$1' ],
'img_page' => [ 1, 'page=$1', 'page $1' ],
diff --git a/languages/messages/MessagesEo.php b/languages/messages/MessagesEo.php
index 45ea18b92e..9c6b7be6fb 100644
--- a/languages/messages/MessagesEo.php
+++ b/languages/messages/MessagesEo.php
@@ -202,14 +202,14 @@ $magicWords = [
'subst' => [ '0', 'ANSTAT:', 'SUBST:' ],
'safesubst' => [ '0', 'SEKURANSTAT:', 'SAFESUBST:' ],
'msgnw' => [ '0', 'NVMSÄ:', 'NVMSGX:', 'MSGNW:' ],
- 'img_thumbnail' => [ '1', 'eta', 'thumbnail', 'thumb' ],
+ 'img_thumbnail' => [ '1', 'eta', 'thumb', 'thumbnail' ],
'img_manualthumb' => [ '1', 'eta=$1', 'thumbnail=$1', 'thumb=$1' ],
'img_right' => [ '1', 'dekstra', 'dekstre', 'right' ],
'img_left' => [ '1', 'maldekstra', 'maldekstre', 'left' ],
- 'img_none' => [ '1', 'nenio', 'neniu', 'none' ],
+ 'img_none' => [ '1', 'neniu', 'nenio', 'none' ],
'img_width' => [ '1', '$1ra', '$1px' ],
'img_center' => [ '1', 'centra', 'meza', 'center', 'centre' ],
- 'img_framed' => [ '1', 'kadro', 'enkadrita', 'enkadrite', 'framed', 'enframed', 'frame' ],
+ 'img_framed' => [ '1', 'kadro', 'enkadrita', 'enkadrite', 'frame', 'framed', 'enframed' ],
'img_frameless' => [ '1', 'senkadra', 'frameless' ],
'img_page' => [ '1', 'paÄo=$1', 'paÄo $1', 'pagxo=$1', 'pagxo_$1', 'page=$1', 'page $1' ],
'img_upright' => [ '1', 'altdekstre', 'altdekstre=$1', 'altdekstre_$1', 'upright', 'upright=$1', 'upright $1' ],
diff --git a/languages/messages/MessagesEs.php b/languages/messages/MessagesEs.php
index a9f1d08e65..3b7c4bc966 100644
--- a/languages/messages/MessagesEs.php
+++ b/languages/messages/MessagesEs.php
@@ -201,13 +201,13 @@ $magicWords = [
'subjectpagenamee' => [ '1', 'NOMBREDEPAGINADETEMAC', 'NOMBREDEPÃGINADETEMAC', 'NOMBREDEPÃGINADEASUNTOC', 'NOMBREDEPAGINADEASUNTOC', 'NOMBREDEPAGINADEARTICULOC', 'NOMBREDEPÃGINADEARTÃCULOC', 'SUBJECTPAGENAMEE', 'ARTICLEPAGENAMEE' ],
'msg' => [ '0', 'MSJ:', 'MSG:' ],
'subst' => [ '0', 'SUST:', 'FIJAR:', 'SUBST:' ],
- 'img_thumbnail' => [ '1', 'miniaturadeimagen', 'miniatura', 'mini', 'thumbnail', 'thumb' ],
+ 'img_thumbnail' => [ '1', 'miniaturadeimagen', 'miniatura', 'mini', 'thumb', 'thumbnail' ],
'img_manualthumb' => [ '1', 'miniaturadeimagen=$1', 'miniatura=$1', 'thumbnail=$1', 'thumb=$1' ],
- 'img_right' => [ '1', 'derecha', 'dcha', 'der', 'right' ],
+ 'img_right' => [ '1', 'derecha', 'der', 'dcha', 'right' ],
'img_left' => [ '1', 'izquierda', 'izda', 'izq', 'left' ],
- 'img_none' => [ '1', 'ninguna', 'nada', 'no', 'ninguno', 'none' ],
+ 'img_none' => [ '1', 'no', 'ninguna', 'ninguno', 'nada', 'none' ],
'img_center' => [ '1', 'centro', 'centrado', 'centrada', 'centrar', 'center', 'centre' ],
- 'img_framed' => [ '1', 'marco', 'enmarcado', 'enmarcada', 'framed', 'enframed', 'frame' ],
+ 'img_framed' => [ '1', 'marco', 'enmarcado', 'enmarcada', 'frame', 'framed', 'enframed' ],
'img_frameless' => [ '1', 'sinmarco', 'sin_enmarcar', 'sinenmarcar', 'frameless' ],
'img_lang' => [ '1', 'idioma=$1', 'lang=$1' ],
'img_page' => [ '1', 'pagina=$1', 'página=$1', 'pagina_$1', 'página_$1', 'page=$1', 'page $1' ],
diff --git a/languages/messages/MessagesEt.php b/languages/messages/MessagesEt.php
index 681d2ff4fc..8a53d9e87a 100644
--- a/languages/messages/MessagesEt.php
+++ b/languages/messages/MessagesEt.php
@@ -204,13 +204,13 @@ $magicWords = [
'talkpagename' => [ '1', 'ARUTELUNIMI', 'TALKPAGENAME' ],
'talkpagenamee' => [ '1', 'ARUTELUNIMI1', 'TALKPAGENAMEE' ],
'subst' => [ '0', 'ASENDA:', 'SUBST:' ],
- 'img_thumbnail' => [ '1', 'pisi', 'pisipilt', 'thumbnail', 'thumb' ],
+ 'img_thumbnail' => [ '1', 'pisi', 'pisipilt', 'thumb', 'thumbnail' ],
'img_manualthumb' => [ '1', 'pisi=$1', 'pisipilt=$1', 'thumbnail=$1', 'thumb=$1' ],
'img_right' => [ '1', 'paremal', 'right' ],
'img_left' => [ '1', 'vasakul', 'left' ],
'img_none' => [ '1', 'tühi', 'none' ],
'img_center' => [ '1', 'keskel', 'center', 'centre' ],
- 'img_framed' => [ '1', 'raam', 'framed', 'enframed', 'frame' ],
+ 'img_framed' => [ '1', 'raam', 'frame', 'framed', 'enframed' ],
'img_frameless' => [ '1', 'raamita', 'frameless' ],
'img_lang' => [ '1', 'keel=$1', 'lang=$1' ],
'img_page' => [ '1', 'lehekülg=$1', 'lehekülg_$1', 'page=$1', 'page $1' ],
diff --git a/languages/messages/MessagesFa.php b/languages/messages/MessagesFa.php
index 564445bba8..eee9793cfb 100644
--- a/languages/messages/MessagesFa.php
+++ b/languages/messages/MessagesFa.php
@@ -211,14 +211,14 @@ $magicWords = [
'subst' => [ '0', 'جاÛگزÛÙ:', 'جا:', 'SUBST:' ],
'safesubst' => [ '0', 'جاÛگزÛÙ_اÙ
Ù:', 'جاÙ
:', 'SAFESUBST:' ],
'msgnw' => [ '0', 'Ù¾ÛغاÙ
âبÛâبسط:', 'MSGNW:' ],
- 'img_thumbnail' => [ '1', 'بÙداÙگشتÛ', 'اÙگشتداÙ', 'اÙگشتÛ', 'thumbnail', 'thumb' ],
+ 'img_thumbnail' => [ '1', 'بÙداÙگشتÛ', 'اÙگشتÛ', 'اÙگشتداÙ', 'thumb', 'thumbnail' ],
'img_manualthumb' => [ '1', 'بÙداÙگشتÛ=$1', 'اÙگشتداÙ=$1', 'اÙگشتÛ=$1', 'thumbnail=$1', 'thumb=$1' ],
'img_right' => [ '1', 'راست', 'right' ],
'img_left' => [ '1', 'ÚÙ¾', 'left' ],
'img_none' => [ '1', 'ÙÛÚ', 'none' ],
'img_width' => [ '1', '$1Ù¾ÛکسÙ', '$1px' ],
'img_center' => [ '1', 'Ùسط', 'center', 'centre' ],
- 'img_framed' => [ '1', 'Ùاب', 'framed', 'enframed', 'frame' ],
+ 'img_framed' => [ '1', 'Ùاب', 'frame', 'framed', 'enframed' ],
'img_frameless' => [ '1', 'بÛâÙاب', 'بÛÙاب', 'بÛ_Ùاب', 'frameless' ],
'img_lang' => [ '1', 'زباÙ=$1', 'lang=$1' ],
'img_page' => [ '1', 'صÙØÙ=$1', 'صÙØÙ_$1', 'page=$1', 'page $1' ],
diff --git a/languages/messages/MessagesFi.php b/languages/messages/MessagesFi.php
index 3013ea62c0..0d1abbd91b 100644
--- a/languages/messages/MessagesFi.php
+++ b/languages/messages/MessagesFi.php
@@ -190,13 +190,13 @@ $magicWords = [
'subjectpagename' => [ '1', 'AIHESIVUNIMI', 'ARTIKKELISIVUNIMI', 'SUBJECTPAGENAME', 'ARTICLEPAGENAME' ],
'subjectpagenamee' => [ '1', 'AIHESIVUNIMIE', 'ARTIKKELISIVUNIMIE', 'SUBJECTPAGENAMEE', 'ARTICLEPAGENAMEE' ],
'subst' => [ '0', 'VASTINE:', 'SUBST:' ],
- 'img_thumbnail' => [ '1', 'pienoiskuva', 'pienois', 'thumbnail', 'thumb' ],
+ 'img_thumbnail' => [ '1', 'pienoiskuva', 'pienois', 'thumb', 'thumbnail' ],
'img_manualthumb' => [ '1', 'pienoiskuva=$1', 'pienois=$1', 'thumbnail=$1', 'thumb=$1' ],
'img_right' => [ '1', 'oikea', 'right' ],
'img_left' => [ '1', 'vasen', 'left' ],
'img_none' => [ '1', 'tyhjä', 'none' ],
- 'img_center' => [ '1', 'keskitetty', 'keski', 'center', 'centre' ],
- 'img_framed' => [ '1', 'kehys', 'kehystetty', 'framed', 'enframed', 'frame' ],
+ 'img_center' => [ '1', 'keski', 'keskitetty', 'center', 'centre' ],
+ 'img_framed' => [ '1', 'kehys', 'kehystetty', 'frame', 'framed', 'enframed' ],
'img_frameless' => [ '1', 'kehyksetön', 'frameless' ],
'img_page' => [ '1', 'sivu=$1', 'sivu_$1', 'page=$1', 'page $1' ],
'img_upright' => [ '1', 'yläoikea', 'yläoikea=$1', 'yläoikea_$1', 'upright', 'upright=$1', 'upright $1' ],
diff --git a/languages/messages/MessagesFr.php b/languages/messages/MessagesFr.php
index d69149c9f1..9bb02da1cf 100644
--- a/languages/messages/MessagesFr.php
+++ b/languages/messages/MessagesFr.php
@@ -196,18 +196,18 @@ $magicWords = [
'talkpagenamee' => [ '1', 'NOMPAGEDISCUSSIONX', 'TALKPAGENAMEE' ],
'subjectpagename' => [ '1', 'NOMPAGESUJET', 'NOMPAGEARTICLE', 'SUBJECTPAGENAME', 'ARTICLEPAGENAME' ],
'subjectpagenamee' => [ '1', 'NOMPAGESUJETX', 'NOMPAGEARTICLEX', 'SUBJECTPAGENAMEE', 'ARTICLEPAGENAMEE' ],
- 'img_thumbnail' => [ '1', 'vignette', 'thumbnail', 'thumb' ],
+ 'img_thumbnail' => [ '1', 'vignette', 'thumb', 'thumbnail' ],
'img_manualthumb' => [ '1', 'vignette=$1', 'thumbnail=$1', 'thumb=$1' ],
'img_right' => [ '1', 'droite', 'right' ],
'img_left' => [ '1', 'gauche', 'left' ],
'img_none' => [ '1', 'néant', 'neant', 'none' ],
'img_center' => [ '1', 'centré', 'center', 'centre' ],
- 'img_framed' => [ '1', 'cadre', 'encadré', 'encadre', 'framed', 'enframed', 'frame' ],
+ 'img_framed' => [ '1', 'cadre', 'encadré', 'encadre', 'frame', 'framed', 'enframed' ],
'img_frameless' => [ '1', 'sans_cadre', 'non_encadré', 'non_encadre', 'frameless' ],
'img_lang' => [ '1', 'langue=$1', 'lang=$1' ],
'img_upright' => [ '1', 'redresse', 'redresse=$1', 'redresse_$1', 'upright', 'upright=$1', 'upright $1' ],
'img_border' => [ '1', 'bordure', 'border' ],
- 'img_baseline' => [ '1', 'ligne-de-base', 'base', 'baseline' ],
+ 'img_baseline' => [ '1', 'base', 'ligne-de-base', 'baseline' ],
'img_sub' => [ '1', 'indice', 'ind', 'sub' ],
'img_super' => [ '1', 'exposant', 'exp', 'super', 'sup' ],
'img_top' => [ '1', 'haut', 'top' ],
diff --git a/languages/messages/MessagesFrp.php b/languages/messages/MessagesFrp.php
index dd6d1c8e93..106ba5e69b 100644
--- a/languages/messages/MessagesFrp.php
+++ b/languages/messages/MessagesFrp.php
@@ -196,13 +196,13 @@ $magicWords = [
'subjectpagenamee' => [ '1', 'NOM_DE_LA_PÃGE_DU_SUJÃT_URL', 'NOM_DE_LA_PÃGE_DE_L_ARTICLLO_URL', 'NOMPAGESUJETX', 'NOMPAGEARTICLEX', 'SUBJECTPAGENAMEE', 'ARTICLEPAGENAMEE' ],
'msg' => [ '0', 'MSJ:', 'MSG:' ],
'msgnw' => [ '0', 'MSJNV:', 'MSGNW:' ],
- 'img_thumbnail' => [ '1', 'figura', 'vignette', 'thumbnail', 'thumb' ],
+ 'img_thumbnail' => [ '1', 'figura', 'vignette', 'thumb', 'thumbnail' ],
'img_manualthumb' => [ '1', 'figura=$1', 'vignette=$1', 'thumbnail=$1', 'thumb=$1' ],
'img_right' => [ '1', 'drêta', 'droite', 'right' ],
'img_left' => [ '1', 'gôche', 'gauche', 'left' ],
'img_none' => [ '1', 'vouedo', 'néant', 'neant', 'none' ],
'img_center' => [ '1', 'centrâ', 'centré', 'center', 'centre' ],
- 'img_framed' => [ '1', 'encâdrâ', 'câdro', 'cadre', 'encadré', 'encadre', 'framed', 'enframed', 'frame' ],
+ 'img_framed' => [ '1', 'encâdrâ', 'câdro', 'cadre', 'encadré', 'encadre', 'frame', 'framed', 'enframed' ],
'img_frameless' => [ '1', 'sen_câdro', 'pas_encâdrâ', 'sans_cadre', 'non_encadré', 'non_encadre', 'frameless' ],
'img_page' => [ '1', 'pâge=$1', 'pâge $1', 'page=$1', 'page $1' ],
'img_upright' => [ '1', 'drêt', 'drêt=$1', 'drêt $1', 'redresse', 'redresse=$1', 'redresse $1', 'redresse_$1', 'upright', 'upright=$1', 'upright $1' ],
diff --git a/languages/messages/MessagesGa.php b/languages/messages/MessagesGa.php
index 7c00dc7a5c..a5087900cf 100644
--- a/languages/messages/MessagesGa.php
+++ b/languages/messages/MessagesGa.php
@@ -30,12 +30,12 @@ $magicWords = [
'msg' => [ '0', 'TCHT:', 'MSG:' ],
'subst' => [ '0', 'IONAD:', 'SUBST:' ],
'msgnw' => [ '0', 'TCHTFS:', 'MSGNW:' ],
- 'img_thumbnail' => [ '1', 'mionsamhail', 'mion', 'thumbnail', 'thumb' ],
+ 'img_thumbnail' => [ '1', 'mion', 'mionsamhail', 'thumb', 'thumbnail' ],
'img_right' => [ '1', 'deas', 'right' ],
'img_left' => [ '1', 'clé', 'left' ],
'img_none' => [ '1', 'faic', 'none' ],
'img_center' => [ '1', 'lár', 'center', 'centre' ],
- 'img_framed' => [ '1', 'fráma', 'frámaithe', 'framed', 'enframed', 'frame' ],
+ 'img_framed' => [ '1', 'fráma', 'frámaithe', 'frame', 'framed', 'enframed' ],
'int' => [ '0', 'INMH:', 'INT:' ],
'sitename' => [ '1', 'AINMANTSUÃMH', 'SITENAME' ],
'ns' => [ '0', 'AS:', 'NS:' ],
diff --git a/languages/messages/MessagesGl.php b/languages/messages/MessagesGl.php
index 092226cd46..8f1d4a753b 100644
--- a/languages/messages/MessagesGl.php
+++ b/languages/messages/MessagesGl.php
@@ -200,17 +200,17 @@ $magicWords = [
'basepagename' => [ '1', 'NOMEDAPÃXINABASE', 'NOMEDAPAGINABASE', 'NOMEDAPÃGINABASE', 'BASEPAGENAME' ],
'talkpagename' => [ '1', 'NOMEDAPÃXINADECONVERSA', 'NOMEDAPAGINADEDISCUSSAO', 'NOMEDAPÃGINADEDISCUSSÃO', 'TALKPAGENAME' ],
'subjectpagename' => [ '1', 'NOMEDAPÃXINADECONTIDO', 'NOMEDAPAGINADECONTEUDO', 'NOMEDAPÃGINADECONTEÃDO', 'SUBJECTPAGENAME', 'ARTICLEPAGENAME' ],
- 'img_thumbnail' => [ '1', 'miniatura', 'miniaturadaimaxe', 'miniaturadaimagem', 'thumbnail', 'thumb' ],
+ 'img_thumbnail' => [ '1', 'miniatura', 'miniaturadaimagem', 'miniaturadaimaxe', 'thumb', 'thumbnail' ],
'img_manualthumb' => [ '1', 'miniatura=$1', 'miniaturadaimaxe=$1', 'miniaturadaimagem=$1', 'thumbnail=$1', 'thumb=$1' ],
'img_right' => [ '1', 'dereita', 'direita', 'right' ],
'img_left' => [ '1', 'esquerda', 'left' ],
'img_none' => [ '1', 'ningún', 'nenhum', 'none' ],
'img_center' => [ '1', 'centro', 'center', 'centre' ],
- 'img_framed' => [ '1', 'conmarco', 'conbordo', 'marco', 'commoldura', 'comborda', 'framed', 'enframed', 'frame' ],
+ 'img_framed' => [ '1', 'conmarco', 'marco', 'conbordo', 'commoldura', 'comborda', 'frame', 'framed', 'enframed' ],
'img_frameless' => [ '1', 'senmarco', 'senbordo', 'semmoldura', 'semborda', 'frameless' ],
'img_page' => [ '1', 'páxina=$1', 'páxina_$1', 'página=$1', 'página_$1', 'página $1', 'page=$1', 'page $1' ],
'img_upright' => [ '1', 'arribaádereita', 'arribaádereita=$1', 'arribaádereita_$1', 'superiordireito', 'superiordireito=$1', 'superiordireito_$1', 'superiordireito $1', 'upright', 'upright=$1', 'upright $1' ],
- 'img_border' => [ '1', 'bordo', 'borda', 'border' ],
+ 'img_border' => [ '1', 'borda', 'bordo', 'border' ],
'img_baseline' => [ '1', 'liñadebase', 'linhadebase', 'baseline' ],
'img_top' => [ '1', 'arriba', 'acima', 'top' ],
'img_text_top' => [ '1', 'texto-arriba', 'text-top' ],
diff --git a/languages/messages/MessagesHe.php b/languages/messages/MessagesHe.php
index 217e5cbc94..9e03942ad9 100644
--- a/languages/messages/MessagesHe.php
+++ b/languages/messages/MessagesHe.php
@@ -211,18 +211,18 @@ $magicWords = [
'subst' => [ '0', 'ס:', 'SUBST:' ],
'safesubst' => [ '0', 'ס ××××:', 'SAFESUBST:' ],
'msgnw' => [ '0', '××××ת ×ק×ר', 'MSGNW:' ],
- 'img_thumbnail' => [ '1', '××××ער', 'thumbnail', 'thumb' ],
+ 'img_thumbnail' => [ '1', '××××ער', 'thumb', 'thumbnail' ],
'img_manualthumb' => [ '1', '××××ער=$1', 'thumbnail=$1', 'thumb=$1' ],
'img_right' => [ '1', '××××', 'right' ],
'img_left' => [ '1', 'ש×××', 'left' ],
'img_none' => [ '1', '×××', 'none' ],
'img_width' => [ '1', '$1 פ×קס×××', '$1px' ],
'img_center' => [ '1', '×ר××', 'center', 'centre' ],
- 'img_framed' => [ '1', '×××ס×ר', '×ס×רת', 'framed', 'enframed', 'frame' ],
+ 'img_framed' => [ '1', '×ס×רת', '×××ס×ר', 'frame', 'framed', 'enframed' ],
'img_frameless' => [ '1', '×× ×××ס×ר', '××× ×ס×רת', 'frameless' ],
'img_page' => [ '1', '××£=$1', '××£ $1', 'page=$1', 'page $1' ],
'img_upright' => [ '1', '×××× ×××¢××', '×××× ×××¢××=$1', '×××× ×××¢×× $1', 'upright', 'upright=$1', 'upright $1' ],
- 'img_border' => [ '1', '×××××ת', '××××', 'border' ],
+ 'img_border' => [ '1', '××××', '×××××ת', 'border' ],
'img_baseline' => [ '1', 'ש×רת ××ס×ס', 'baseline' ],
'img_sub' => [ '1', 'ת×ת×', 'sub' ],
'img_super' => [ '1', '×¢×××', 'super', 'sup' ],
diff --git a/languages/messages/MessagesHi.php b/languages/messages/MessagesHi.php
index 30902e3c8b..3f3b007869 100644
--- a/languages/messages/MessagesHi.php
+++ b/languages/messages/MessagesHi.php
@@ -179,19 +179,19 @@ $magicWords = [
'subst' => [ '0', 'पà¥à¤°à¤¤à¤¿:', 'SUBST:' ],
'safesubst' => [ '0', 'सà¥à¤°à¤à¥à¤·à¤¿à¤¤_पà¥à¤°à¤¤à¤¿:', 'SAFESUBST:' ],
'msgnw' => [ '0', 'सनà¥à¤¦à¥à¤¶_नà¥à¤µà¤¿à¤à¥:', 'सà¤à¤¦à¥à¤¶_नà¥à¤µà¤¿à¤à¥:', 'MSGNW:' ],
- 'img_thumbnail' => [ '1', 'à¤
à¤à¤à¥à¤ ाà¤à¤¾à¤°', 'à¤
à¤à¤à¥à¤ ा', 'thumbnail', 'thumb' ],
+ 'img_thumbnail' => [ '1', 'à¤
à¤à¤à¥à¤ ाà¤à¤¾à¤°', 'à¤
à¤à¤à¥à¤ ा', 'thumb', 'thumbnail' ],
'img_manualthumb' => [ '1', 'à¤
à¤à¤à¥à¤ ाà¤à¤¾à¤°=$1', 'à¤
à¤à¤à¥à¤ ा=$1', 'thumbnail=$1', 'thumb=$1' ],
'img_right' => [ '1', 'दाà¤à¤', 'दायà¥à¤', 'दाà¤à¤', 'right' ],
- 'img_left' => [ '1', 'बाà¤à¤', 'बायà¥à¤', 'बाà¤à¤', 'left' ],
+ 'img_left' => [ '1', 'बाà¤à¤', 'बाà¤à¤', 'बायà¥à¤', 'left' ],
'img_none' => [ '1', 'à¤à¥à¤_नहà¥à¤', 'none' ],
'img_width' => [ '1', '$1पिà¤à¥à¤¸à¥à¤²', '$1px' ],
- 'img_center' => [ '1', 'à¤à¥à¤¨à¥à¤¦à¥à¤°', 'à¤à¥à¤à¤¦à¥à¤°', 'à¤à¥à¤¨à¥à¤¦à¥à¤°à¤¿à¤¤', 'à¤à¥à¤à¤¦à¥à¤°à¤¿à¤¤', 'center', 'centre' ],
- 'img_framed' => [ '1', 'फ़à¥à¤°à¥à¤®', 'फà¥à¤°à¥à¤®', 'framed', 'enframed', 'frame' ],
+ 'img_center' => [ '1', 'à¤à¥à¤à¤¦à¥à¤°', 'à¤à¥à¤¨à¥à¤¦à¥à¤°', 'à¤à¥à¤¨à¥à¤¦à¥à¤°à¤¿à¤¤', 'à¤à¥à¤à¤¦à¥à¤°à¤¿à¤¤', 'center', 'centre' ],
+ 'img_framed' => [ '1', 'फà¥à¤°à¥à¤®', 'फ़à¥à¤°à¥à¤®', 'frame', 'framed', 'enframed' ],
'img_frameless' => [ '1', 'फ़à¥à¤°à¥à¤®à¤¹à¥à¤¨', 'फà¥à¤°à¥à¤®à¤¹à¥à¤¨', 'frameless' ],
'img_lang' => [ '1', 'à¤à¤¾à¤·à¤¾=$1', 'lang=$1' ],
'img_page' => [ '1', 'पà¥à¤·à¥à¤ =$1', 'पà¥à¤·à¥à¤ _$1', 'page=$1', 'page $1' ],
'img_upright' => [ '1', 'à¤à¤¡à¤¼à¥', 'à¤à¤¡à¤¼à¥=$1', 'à¤à¤¡à¤¼à¥_$1', 'upright', 'upright=$1', 'upright $1' ],
- 'img_border' => [ '1', 'à¤à¤¿à¤¨à¤¾à¤°à¤¾', 'बà¥à¤°à¥à¤¡à¤°', 'border' ],
+ 'img_border' => [ '1', 'बà¥à¤°à¥à¤¡à¤°', 'à¤à¤¿à¤¨à¤¾à¤°à¤¾', 'border' ],
'img_baseline' => [ '1', 'à¤à¤§à¤¾à¤°_रà¥à¤à¤¾', 'baseline' ],
'img_sub' => [ '1', 'पद', 'sub' ],
'img_super' => [ '1', 'मà¥à¤°à¥à¤§', 'super', 'sup' ],
diff --git a/languages/messages/MessagesHr.php b/languages/messages/MessagesHr.php
index ee06560705..97cac52725 100644
--- a/languages/messages/MessagesHr.php
+++ b/languages/messages/MessagesHr.php
@@ -181,20 +181,20 @@ $magicWords = [
'subjectpagename' => [ '1', 'IMEGLAVNESTRANICE', 'SUBJECTPAGENAME', 'ARTICLEPAGENAME' ],
'subjectpagenamee' => [ '1', 'IMEGLAVNESTRANICEE', 'SUBJECTPAGENAMEE', 'ARTICLEPAGENAMEE' ],
'subst' => [ '0', 'ZAMJENA:', 'SUBST:' ],
- 'img_thumbnail' => [ '1', 'minijatura', 'mini', 'thumbnail', 'thumb' ],
+ 'img_thumbnail' => [ '1', 'mini', 'minijatura', 'thumb', 'thumbnail' ],
'img_manualthumb' => [ '1', 'minijatura=$1', 'thumbnail=$1', 'thumb=$1' ],
'img_right' => [ '1', 'desno', 'right' ],
'img_left' => [ '1', 'lijevo', 'left' ],
'img_none' => [ '1', 'ništa', 'none' ],
'img_center' => [ '1', 'središte', 'center', 'centre' ],
- 'img_framed' => [ '1', 'okvir', 'framed', 'enframed', 'frame' ],
+ 'img_framed' => [ '1', 'okvir', 'frame', 'framed', 'enframed' ],
'img_frameless' => [ '1', 'bezokvira', 'frameless' ],
'img_lang' => [ '1', 'jezik=$1', 'lang=$1' ],
'img_page' => [ '1', 'stranica=$1', 'stranica $1', 'page=$1', 'page $1' ],
'img_upright' => [ '1', 'uspravno=$1', 'uspravno $1', 'upright', 'upright=$1', 'upright $1' ],
'img_border' => [ '1', 'obrub', 'border' ],
'img_baseline' => [ '1', 'osnovnacrta', 'baseline' ],
- 'img_sub' => [ '1', 'potpis', 'ind', 'sub' ],
+ 'img_sub' => [ '1', 'ind', 'potpis', 'sub' ],
'img_super' => [ '1', 'natpis', 'eks', 'super', 'sup' ],
'img_top' => [ '1', 'vrh', 'top' ],
'img_text_top' => [ '1', 'tekst-vrh', 'text-top' ],
diff --git a/languages/messages/MessagesHu.php b/languages/messages/MessagesHu.php
index 93a7f5a6aa..6ba075ad74 100644
--- a/languages/messages/MessagesHu.php
+++ b/languages/messages/MessagesHu.php
@@ -207,13 +207,13 @@ $magicWords = [
'subjectpagenamee' => [ '1', 'SZÃCIKKNEVEE', 'SUBJECTPAGENAMEE', 'ARTICLEPAGENAMEE' ],
'msg' => [ '0', 'ÃZENET:', 'ÃZ:', 'MSG:' ],
'subst' => [ '0', 'BEILLESZT:', 'BEMÃSOL:', 'SUBST:' ],
- 'img_thumbnail' => [ '1', 'bélyegkép', 'bélyeg', 'miniatűr', 'thumbnail', 'thumb' ],
+ 'img_thumbnail' => [ '1', 'bélyegkép', 'bélyeg', 'miniatűr', 'thumb', 'thumbnail' ],
'img_manualthumb' => [ '1', 'bélyegkép=$1', 'bélyeg=$1', 'miniatűr=$1', 'thumbnail=$1', 'thumb=$1' ],
- 'img_right' => [ '1', 'jobb', 'jobbra', 'right' ],
- 'img_left' => [ '1', 'bal', 'balra', 'left' ],
+ 'img_right' => [ '1', 'jobbra', 'jobb', 'right' ],
+ 'img_left' => [ '1', 'balra', 'bal', 'left' ],
'img_none' => [ '1', 'semmi', 'none' ],
- 'img_center' => [ '1', 'közép', 'középre', 'center', 'centre' ],
- 'img_framed' => [ '1', 'keretezett', 'keretes', 'keretben', 'kerettel', 'framed', 'enframed', 'frame' ],
+ 'img_center' => [ '1', 'középre', 'közép', 'center', 'centre' ],
+ 'img_framed' => [ '1', 'keretezett', 'keretben', 'keretes', 'kerettel', 'frame', 'framed', 'enframed' ],
'img_frameless' => [ '1', 'keretnélküli', 'frameless' ],
'img_page' => [ '1', 'oldal=$1', 'oldal $1', 'page=$1', 'page $1' ],
'img_upright' => [ '1', 'fennjobbra', 'fennjobbra=$1', 'fennjobbra $1', 'upright', 'upright=$1', 'upright $1' ],
@@ -224,7 +224,7 @@ $magicWords = [
'img_top' => [ '1', 'fenn', 'fent', 'top' ],
'img_text_top' => [ '1', 'szöveg-fenn', 'szöveg-fent', 'text-top' ],
'img_middle' => [ '1', 'vközépen', 'vközépre', 'middle' ],
- 'img_bottom' => [ '1', 'lenn', 'lent', 'bottom' ],
+ 'img_bottom' => [ '1', 'lent', 'lenn', 'bottom' ],
'img_text_bottom' => [ '1', 'szöveg-lenn', 'szöveg-lent', 'text-bottom' ],
'sitename' => [ '1', 'WIKINEVE', 'SITENAME' ],
'ns' => [ '0', 'NÃVTÃR:', 'NS:' ],
diff --git a/languages/messages/MessagesHy.php b/languages/messages/MessagesHy.php
index 28c3a4da90..ab1d198bf9 100644
--- a/languages/messages/MessagesHy.php
+++ b/languages/messages/MessagesHy.php
@@ -130,14 +130,14 @@ $magicWords = [
'subjectpagenamee' => [ '1', 'ÕÕÔ´ÕÔ±Ô¾Ô»_Ô·ÕÔ»_Ô±ÕÕÔ±ÕÕÕÕÔ¸_2', 'SUBJECTPAGENAMEE', 'ARTICLEPAGENAMEE' ],
'msg' => [ '0', 'ÕÕÕÕÕÔ´Õ', 'MSG:' ],
'msgnw' => [ '0', 'ÕÕÕÕÕÔ´_Ô±ÕÔ±ÕÕ_ÕÔ»ÕÔ»Ô»Õ', 'MSGNW:' ],
- 'img_thumbnail' => [ '1', 'Õ´Õ«Õ¶Õ«', 'thumbnail', 'thumb' ],
+ 'img_thumbnail' => [ '1', 'Õ´Õ«Õ¶Õ«', 'thumb', 'thumbnail' ],
'img_manualthumb' => [ '1', 'Õ´Õ«Õ¶Õ«=$1', 'thumbnail=$1', 'thumb=$1' ],
'img_right' => [ '1', 'Õ¡Õ»Õ«Ö', 'right' ],
'img_left' => [ '1', 'Õ±Õ¡ÕÕ«Ö', 'left' ],
'img_none' => [ '1', 'Õ¡Õ¼Õ¡Õ¶Ö', 'none' ],
'img_width' => [ '1', '$1ÖÖÕ½', '$1px' ],
'img_center' => [ '1', 'Õ¯Õ¥Õ¶Õ¿ÖÕ¸Õ¶', 'center', 'centre' ],
- 'img_framed' => [ '1', 'Õ·ÖÕ»Õ¡ÖÕ¡Õ¯Õ¥Õ¬', 'framed', 'enframed', 'frame' ],
+ 'img_framed' => [ '1', 'Õ·ÖÕ»Õ¡ÖÕ¡Õ¯Õ¥Õ¬', 'frame', 'framed', 'enframed' ],
'img_page' => [ '1', 'Õ§Õ»Õ¨=$1', 'Õ§Õ» $1', 'page=$1', 'page $1' ],
'int' => [ '0', 'ÕÔµÕÕÕ', 'INT:' ],
'sitename' => [ '1', 'Ô¿Ô±Õ
ÕÔ»_Ô±ÕÕÕÕÔ¸', 'SITENAME' ],
diff --git a/languages/messages/MessagesId.php b/languages/messages/MessagesId.php
index bf1d4d9088..5fee30665c 100644
--- a/languages/messages/MessagesId.php
+++ b/languages/messages/MessagesId.php
@@ -105,13 +105,13 @@ $magicWords = [
'msg' => [ '0', 'PSN:', 'PESAN:', 'MSG:' ],
'subst' => [ '0', 'GNT:', 'GANTI:', 'TUKAR:', 'SUBST:' ],
'msgnw' => [ '0', 'TPL:', 'MSGNW:' ],
- 'img_thumbnail' => [ '1', 'jmpl', 'jempol', 'mini', 'miniatur', 'thumbnail', 'thumb' ],
+ 'img_thumbnail' => [ '1', 'jmpl', 'jempol', 'mini', 'miniatur', 'thumb', 'thumbnail' ],
'img_manualthumb' => [ '1', 'jmpl=$1', 'jempol=$1', 'mini=$1', 'miniatur=$1', 'thumbnail=$1', 'thumb=$1' ],
'img_right' => [ '1', 'ka', 'kanan', 'right' ],
- 'img_left' => [ '1', 'ki', 'kiri', 'left' ],
+ 'img_left' => [ '1', 'kiri', 'ki', 'left' ],
'img_none' => [ '1', 'nir', 'tanpa', 'none' ],
'img_center' => [ '1', 'pus', 'pusat', 'center', 'centre' ],
- 'img_framed' => [ '1', 'bing', 'bingkai', 'framed', 'enframed', 'frame' ],
+ 'img_framed' => [ '1', 'bingkai', 'bing', 'frame', 'framed', 'enframed' ],
'img_frameless' => [ '1', 'nirbing', 'tanpabingkai', 'frameless' ],
'img_lang' => [ '1', 'bhs=$1', 'lang=$1' ],
'img_page' => [ '1', 'hal=$1', 'halaman=$1', 'hal_$1', 'halaman_$1', 'page=$1', 'page $1' ],
diff --git a/languages/messages/MessagesIt.php b/languages/messages/MessagesIt.php
index 19cb171154..8714c7214d 100644
--- a/languages/messages/MessagesIt.php
+++ b/languages/messages/MessagesIt.php
@@ -188,13 +188,13 @@ $magicWords = [
'subpagename' => [ '1', 'NOMESOTTOPAGINA', 'SUBPAGENAME' ],
'subpagenamee' => [ '1', 'NOMESOTTOPAGINAE', 'SUBPAGENAMEE' ],
'subst' => [ '0', 'SOST:', 'SUBST:' ],
- 'img_thumbnail' => [ '1', 'miniatura', 'min', 'thumbnail', 'thumb' ],
+ 'img_thumbnail' => [ '1', 'miniatura', 'min', 'thumb', 'thumbnail' ],
'img_manualthumb' => [ '1', 'miniatura=$1', 'min=$1', 'thumbnail=$1', 'thumb=$1' ],
'img_right' => [ '1', 'destra', 'right' ],
'img_left' => [ '1', 'sinistra', 'left' ],
'img_none' => [ '1', 'nessuno', 'none' ],
'img_center' => [ '1', 'centro', 'center', 'centre' ],
- 'img_framed' => [ '1', 'riquadrato', 'incorniciato', 'originale', 'framed', 'enframed', 'frame' ],
+ 'img_framed' => [ '1', 'riquadrato', 'originale', 'incorniciato', 'frame', 'framed', 'enframed' ],
'img_frameless' => [ '1', 'senza_cornice', 'frameless' ],
'img_page' => [ '1', 'pagina=$1', 'pagina_$1', 'page=$1', 'page $1' ],
'img_upright' => [ '1', 'verticale', 'verticale=$1', 'verticale_$1', 'upright', 'upright=$1', 'upright $1' ],
diff --git a/languages/messages/MessagesJa.php b/languages/messages/MessagesJa.php
index ef20b156a7..b905345e52 100644
--- a/languages/messages/MessagesJa.php
+++ b/languages/messages/MessagesJa.php
@@ -229,19 +229,19 @@ $magicWords = [
'subst' => [ '0', 'å±é:', 'å±éï¼', 'SUBST:' ],
'safesubst' => [ '0', 'å®å
¨å±é:', 'SAFESUBST:' ],
'msgnw' => [ '0', 'ã¦ã£ãç¡å¹ã¡ãã»ã¼ã¸:', 'MSGNW:' ],
- 'img_thumbnail' => [ '1', 'ãµã ãã¤ã«', 'thumbnail', 'thumb' ],
+ 'img_thumbnail' => [ '1', 'ãµã ãã¤ã«', 'thumb', 'thumbnail' ],
'img_manualthumb' => [ '1', '代æ¿ç»å=$1', 'ãµã ãã¤ã«=$1', 'thumbnail=$1', 'thumb=$1' ],
'img_right' => [ '1', 'å³', 'right' ],
'img_left' => [ '1', 'å·¦', 'left' ],
'img_none' => [ '1', 'ãªã', 'ç¡ã', 'none' ],
'img_width' => [ '1', '$1ãã¯ã»ã«', '$1px' ],
'img_center' => [ '1', 'ä¸å¤®', 'center', 'centre' ],
- 'img_framed' => [ '1', 'ãã¬ã¼ã ', 'framed', 'enframed', 'frame' ],
+ 'img_framed' => [ '1', 'ãã¬ã¼ã ', 'frame', 'framed', 'enframed' ],
'img_frameless' => [ '1', 'ãã¬ã¼ã ãªã', 'frameless' ],
'img_page' => [ '1', 'ãã¼ã¸=$1', 'ãã¼ã¸ $1', 'page=$1', 'page $1' ],
'img_upright' => [ '1', 'å³ä¸', 'upright', 'upright=$1', 'upright $1' ],
'img_border' => [ '1', 'å¢ç', 'ãã¼ãã¼', 'border' ],
- 'img_baseline' => [ '1', 'ä¸ç·', 'ãã¼ã¹ã©ã¤ã³', 'baseline' ],
+ 'img_baseline' => [ '1', 'ãã¼ã¹ã©ã¤ã³', 'ä¸ç·', 'baseline' ],
'img_sub' => [ '1', 'ä¸ä»ã', 'sub' ],
'img_super' => [ '1', 'ä¸ä»ã', 'super', 'sup' ],
'img_top' => [ '1', 'ä¸ç«¯', 'top' ],
diff --git a/languages/messages/MessagesKa.php b/languages/messages/MessagesKa.php
index 00b98dc048..7c55460167 100644
--- a/languages/messages/MessagesKa.php
+++ b/languages/messages/MessagesKa.php
@@ -126,7 +126,7 @@ $magicWords = [
'namespace' => [ '1', 'á¡áá®áááá_á¡ááá áªá', 'NAMESPACE' ],
'fullpagename' => [ '1', 'áááá ááá¡_á¡á á£áá_á¡áá®ááá', 'FULLPAGENAME' ],
'subst' => [ '0', 'ááááá:', 'SUBST:' ],
- 'img_thumbnail' => [ '1', 'áááááá¢áá£á á', 'áááá', 'áááááá¡áá', 'áªáá ááááá', 'thumbnail', 'thumb' ],
+ 'img_thumbnail' => [ '1', 'áááá', 'áááááá¢áá£á á', 'áááááá¡áá', 'áªáá ááááá', 'thumb', 'thumbnail' ],
'img_manualthumb' => [ '1', 'áááááá¢áá£á á=$1', 'áááá=$1', 'thumbnail=$1', 'thumb=$1' ],
'img_right' => [ '1', 'ááá á¯áááá', 'right' ],
'img_left' => [ '1', 'ááá áªá®ááá', 'left' ],
diff --git a/languages/messages/MessagesKm.php b/languages/messages/MessagesKm.php
index 6ae2e88ec3..e970b1798d 100644
--- a/languages/messages/MessagesKm.php
+++ b/languages/messages/MessagesKm.php
@@ -215,14 +215,14 @@ $magicWords = [
'talkpagename' => [ '1', 'áááááááááááá·áá¶áááá¶', 'TALKPAGENAME' ],
'msg' => [ '0', 'áá¶á:', 'MSG:' ],
'msgnw' => [ '0', 'áá¶ááá·áááááá¶áá¼ááá·áá¸:', 'MSGNW:' ],
- 'img_thumbnail' => [ '1', 'áá¼ááá¶ááá¼á
', 'áá¼ááá¼á
', 'thumbnail', 'thumb' ],
+ 'img_thumbnail' => [ '1', 'áá¼ááá¶ááá¼á
', 'áá¼ááá¼á
', 'thumb', 'thumbnail' ],
'img_manualthumb' => [ '1', 'áá¼ááá¶ááá¼á
=$1', 'áá¼ááá¼á
=$1', 'thumbnail=$1', 'thumb=$1' ],
'img_right' => [ '1', 'áááá¶á', 'áá¶ááááá¶á', 'right' ],
'img_left' => [ '1', 'ááááá', 'áá¶áááááá', 'left' ],
'img_none' => [ '1', 'ááá', 'áááá¶á', 'none' ],
'img_width' => [ '1', '$1áá¸áááá', '$1áá', '$1px' ],
'img_center' => [ '1', 'ááááá¶á', 'center', 'centre' ],
- 'img_framed' => [ '1', 'ááá»á', 'framed', 'enframed', 'frame' ],
+ 'img_framed' => [ '1', 'ááá»á', 'frame', 'framed', 'enframed' ],
'img_frameless' => [ '1', 'áááá¶áááá»á', 'frameless' ],
'img_page' => [ '1', 'ááááá=$1', 'ááááá$1', 'page=$1', 'page $1' ],
'img_top' => [ '1', 'ááááááá¾', 'ááááááá¶ááá¾', 'top' ],
diff --git a/languages/messages/MessagesKo.php b/languages/messages/MessagesKo.php
index 09acaadfb4..4a3c15e9ca 100644
--- a/languages/messages/MessagesKo.php
+++ b/languages/messages/MessagesKo.php
@@ -245,14 +245,14 @@ $magicWords = [
'subst' => [ '0', 'í기:', 'SUBST:' ],
'safesubst' => [ '0', 'ìì í기:', 'SAFESUBST:' ],
'msgnw' => [ '0', 'ìí¤ì못ë©ìì§:', 'MSGNW:' ],
- 'img_thumbnail' => [ '1', 'ì¬ë¤ì¼', 'ì¸ë¤ì¼', 'ì¶ìí', 'thumbnail', 'thumb' ],
+ 'img_thumbnail' => [ '1', 'ì¬ë¤ì¼', 'ì¸ë¤ì¼', 'ì¶ìí', 'thumb', 'thumbnail' ],
'img_manualthumb' => [ '1', 'ì¬ë¤ì¼=$1', 'ì¸ë¤ì¼=$1', 'ì¶ìí=$1', 'thumbnail=$1', 'thumb=$1' ],
'img_right' => [ '1', 'ì¤ë¥¸ìª½', 'right' ],
'img_left' => [ '1', 'ì¼ìª½', 'left' ],
'img_none' => [ '1', 'ìì', 'none' ],
'img_width' => [ '1', '$1í½ì
', '$1px' ],
'img_center' => [ '1', 'ê°ì´ë°', 'center', 'centre' ],
- 'img_framed' => [ '1', 'íë ì', 'framed', 'enframed', 'frame' ],
+ 'img_framed' => [ '1', 'íë ì', 'frame', 'framed', 'enframed' ],
'img_frameless' => [ '1', 'íë ììì', 'frameless' ],
'img_lang' => [ '1', 'ì¸ì´=$1', 'lang=$1' ],
'img_page' => [ '1', '문ì=$1', 'page=$1', 'page $1' ],
diff --git a/languages/messages/MessagesKsh.php b/languages/messages/MessagesKsh.php
index f3aea35e69..b13578ebea 100644
--- a/languages/messages/MessagesKsh.php
+++ b/languages/messages/MessagesKsh.php
@@ -202,7 +202,7 @@ $magicWords = [
'nogallery' => [ '0', '__KEIN_JALLERIE__', '__KEINE_GALERIE__', '__KEINEGALERIE__', '__NOGALLERY__' ],
'toc' => [ '0', '__ENHALLT__', '__INHALTSVERZEICHNIS__', '__TOC__' ],
'img_right' => [ '1', 'rähÃ', 'räts', 'rechts', 'right' ],
- 'img_left' => [ '1', 'lengks', 'lenks', 'links', 'left' ],
+ 'img_left' => [ '1', 'links', 'lengks', 'lenks', 'left' ],
'language' => [ '0', '#SHPROOCH:', '#SPROCH:', '#SPRACHE:', '#LANGUAGE:' ],
'hiddencat' => [ '1', '__VERSHTOCHE_SAACHJRUPP__', '__VERSTECKTE_KATEGORIE__', '__WARTUNGSKATEGORIE__', '__HIDDENCAT__' ],
];
diff --git a/languages/messages/MessagesKw.php b/languages/messages/MessagesKw.php
index 45b9bb4c5d..5a0a02b667 100644
--- a/languages/messages/MessagesKw.php
+++ b/languages/messages/MessagesKw.php
@@ -166,13 +166,13 @@ $magicWords = [
'numberofedits' => [ '1', 'NIVERAJANJYOW', 'NUMBEROFEDITS' ],
'pagename' => [ '1', 'HANOWANFOLEN', 'PAGENAME' ],
'fullpagename' => [ '1', 'HANOWLEUNANFOLEN', 'FULLPAGENAME' ],
- 'img_thumbnail' => [ '1', 'skeusennik', 'thumbnail', 'thumb' ],
+ 'img_thumbnail' => [ '1', 'skeusennik', 'thumb', 'thumbnail' ],
'img_manualthumb' => [ '1', 'skeusennik=$1', 'thumbnail=$1', 'thumb=$1' ],
'img_right' => [ '1', 'dyhow', 'right' ],
'img_left' => [ '1', 'kledh', 'left' ],
'img_none' => [ '1', 'nagonan', 'none' ],
'img_center' => [ '1', 'kresel', 'center', 'centre' ],
- 'img_framed' => [ '1', 'fremys', 'framed', 'enframed', 'frame' ],
+ 'img_framed' => [ '1', 'fremys', 'frame', 'framed', 'enframed' ],
'img_frameless' => [ '1', 'hebfram', 'frameless' ],
'img_page' => [ '1', 'folen=$1', 'folen_$1', 'page=$1', 'page $1' ],
'img_top' => [ '1', 'gwartha', 'top' ],
diff --git a/languages/messages/MessagesLb.php b/languages/messages/MessagesLb.php
index 77a5b435e4..2f52faf9cf 100644
--- a/languages/messages/MessagesLb.php
+++ b/languages/messages/MessagesLb.php
@@ -169,15 +169,15 @@ $magicWords = [
'namespace' => [ '1', 'Nummraum', 'NAMENSRAUM', 'NAMESPACE' ],
'subjectspace' => [ '1', 'Haaptnummraum', 'HAUPTNAMENSRAUM', 'SUBJECTSPACE', 'ARTICLESPACE' ],
'subjectpagename' => [ '1', 'Haaptsäit', 'HAUPTSEITE', 'HAUPTSEITENNAME', 'VORDERSEITE', 'SUBJECTPAGENAME', 'ARTICLEPAGENAME' ],
- 'img_thumbnail' => [ '1', 'Miniatur', 'miniatur', 'mini', 'thumbnail', 'thumb' ],
+ 'img_thumbnail' => [ '1', 'miniatur', 'Miniatur', 'mini', 'thumb', 'thumbnail' ],
'img_right' => [ '1', 'riets', 'rechts', 'right' ],
'img_left' => [ '1', 'lénks', 'links', 'left' ],
- 'img_none' => [ '1', 'ouni', 'ohne', 'none' ],
+ 'img_none' => [ '1', 'ohne', 'ouni', 'none' ],
'img_center' => [ '1', 'zentréiert', 'zentriert', 'center', 'centre' ],
- 'img_framed' => [ '1', 'gerummt', 'gerahmt', 'framed', 'enframed', 'frame' ],
- 'img_frameless' => [ '1', 'net_gerummt', 'rahmenlos', 'frameless' ],
+ 'img_framed' => [ '1', 'gerummt', 'gerahmt', 'frame', 'framed', 'enframed' ],
+ 'img_frameless' => [ '1', 'rahmenlos', 'net_gerummt', 'frameless' ],
'img_page' => [ '1', 'Säit=$1', 'Säit_$1', 'seite=$1', 'seite $1', 'page=$1', 'page $1' ],
- 'img_border' => [ '1', 'bord', 'rand', 'border' ],
+ 'img_border' => [ '1', 'rand', 'bord', 'border' ],
'img_top' => [ '1', 'uewen', 'oben', 'top' ],
'img_middle' => [ '1', 'mëtt', 'mitte', 'middle' ],
'img_bottom' => [ '1', 'ënnen', 'unten', 'bottom' ],
diff --git a/languages/messages/MessagesLt.php b/languages/messages/MessagesLt.php
index 289bd90c87..a8e6c77f7e 100644
--- a/languages/messages/MessagesLt.php
+++ b/languages/messages/MessagesLt.php
@@ -164,7 +164,7 @@ $magicWords = [
'numberoffiles' => [ '1', 'FAILŲSKAIÄIUS', 'NUMBEROFFILES' ],
'numberofusers' => [ '1', 'NAUDOTOJŲSKAIÄIUS', 'NUMBEROFUSERS' ],
'numberofedits' => [ '1', 'KEITIMŲSKAIÄIUS', 'NUMBEROFEDITS' ],
- 'img_thumbnail' => [ '1', 'miniatiūra', 'mini', 'thumbnail', 'thumb' ],
+ 'img_thumbnail' => [ '1', 'miniatiūra', 'mini', 'thumb', 'thumbnail' ],
'img_manualthumb' => [ '1', 'miniatiūra=$1', 'mini=$1', 'thumbnail=$1', 'thumb=$1' ],
'img_right' => [ '1', 'deÅ¡inÄje', 'right' ],
'img_left' => [ '1', 'kairÄje', 'left' ],
diff --git a/languages/messages/MessagesMg.php b/languages/messages/MessagesMg.php
index 48720ad048..653be834f6 100644
--- a/languages/messages/MessagesMg.php
+++ b/languages/messages/MessagesMg.php
@@ -67,7 +67,7 @@ $magicWords = [
'img_right' => [ '1', 'ankavanana', 'droite', 'right' ],
'img_left' => [ '1', 'ankavia', 'gauche', 'left' ],
'img_none' => [ '1', 'tsymisy', 'néant', 'neant', 'none' ],
- 'img_center' => [ '1', 'ampivoany', 'anivony', 'centré', 'center', 'centre' ],
+ 'img_center' => [ '1', 'centré', 'ampivoany', 'anivony', 'center', 'centre' ],
'img_page' => [ '1', 'pejy $1', 'page=$1', 'page $1' ],
'img_border' => [ '1', 'sisiny', 'bordure', 'border' ],
'img_top' => [ '1', 'ambony', 'haut', 'top' ],
diff --git a/languages/messages/MessagesMhr.php b/languages/messages/MessagesMhr.php
index 2d6e83aaf9..99ab0e55f3 100644
--- a/languages/messages/MessagesMhr.php
+++ b/languages/messages/MessagesMhr.php
@@ -81,7 +81,7 @@ $specialPageAliases = [
];
$magicWords = [
- 'img_right' => [ '1', 'пÑÑла', 'ÑпÑава', 'right' ],
+ 'img_right' => [ '1', 'ÑпÑава', 'пÑÑла', 'right' ],
'img_left' => [ '1', 'Ñола', 'Ñлева', 'left' ],
'img_border' => [ '1', 'Ñек', 'гÑаниÑа', 'border' ],
'img_sub' => [ '1', 'йÑмалне', 'под', 'sub' ],
diff --git a/languages/messages/MessagesMk.php b/languages/messages/MessagesMk.php
index cc76c619f0..c15b040d5e 100644
--- a/languages/messages/MessagesMk.php
+++ b/languages/messages/MessagesMk.php
@@ -252,14 +252,14 @@ $magicWords = [
'subst' => [ '0', 'ÐÐÐÐÐÐ:', 'SUBST:' ],
'safesubst' => [ '0', 'ÐÐÐÐÐÐÐÐÐÐ', 'SAFESUBST:' ],
'msgnw' => [ '0', 'ÐÐÐÐШТNW:', 'MSGNW:' ],
- 'img_thumbnail' => [ '1', 'мини', 'мини-Ñлика', 'thumbnail', 'thumb' ],
+ 'img_thumbnail' => [ '1', 'мини', 'мини-Ñлика', 'thumb', 'thumbnail' ],
'img_manualthumb' => [ '1', 'мини-Ñлика=$1', 'мини=$1', 'thumbnail=$1', 'thumb=$1' ],
'img_right' => [ '1', 'деÑно', 'д', 'right' ],
'img_left' => [ '1', 'лево', 'л', 'left' ],
'img_none' => [ '1', 'н', 'нема', 'none' ],
'img_width' => [ '1', '$1пкÑ', '$1п', '$1px' ],
'img_center' => [ '1', 'ÑенÑаÑ', 'Ñ', 'center', 'centre' ],
- 'img_framed' => [ '1', 'Ñамка', 'воÑамка', 'framed', 'enframed', 'frame' ],
+ 'img_framed' => [ '1', 'Ñамка', 'воÑамка', 'frame', 'framed', 'enframed' ],
'img_frameless' => [ '1', 'безÑамка', 'frameless' ],
'img_lang' => [ '1', 'Ñаз=$1', 'lang=$1' ],
'img_page' => [ '1', 'ÑÑÑаниÑа=$1', 'ÑÑÑаниÑа_$1', 'page=$1', 'page $1' ],
diff --git a/languages/messages/MessagesMl.php b/languages/messages/MessagesMl.php
index 0f2c1894f8..2c9542bd49 100644
--- a/languages/messages/MessagesMl.php
+++ b/languages/messages/MessagesMl.php
@@ -253,14 +253,14 @@ $magicWords = [
'subst' => [ '0', 'ബദൽ:', 'à´àµ¾à´ªàµà´ªàµà´àµà´¤àµà´¤àµ½:', 'SUBST:' ],
'safesubst' => [ '0', 'à´¸à´à´°à´àµà´·à´¿à´¤à´¬à´¦àµ½:', 'à´¸à´à´°à´àµà´·à´¿à´¤à´¯àµàµ¾à´ªàµà´ªàµà´àµà´¤àµà´¤àµ½:', 'SAFESUBST:' ],
'msgnw' => [ '0', 'à´®àµà´²à´°àµà´ªà´:', 'MSGNW:' ],
- 'img_thumbnail' => [ '1', 'à´²à´àµà´à´¿à´¤àµà´°à´', 'à´²à´àµ', 'thumbnail', 'thumb' ],
+ 'img_thumbnail' => [ '1', 'à´²à´àµà´à´¿à´¤àµà´°à´', 'à´²à´àµ', 'thumb', 'thumbnail' ],
'img_manualthumb' => [ '1', 'à´²à´àµà´à´¿à´¤àµà´°à´=$1', 'à´²à´àµ=$1', 'thumbnail=$1', 'thumb=$1' ],
'img_right' => [ '1', 'വലതàµà´¤àµâ', 'വലതàµâ', 'right' ],
'img_left' => [ '1', 'à´à´à´¤àµà´¤àµâ', 'à´à´à´¤àµâ', 'left' ],
'img_none' => [ '1', 'à´¶àµà´¨àµà´¯à´', 'none' ],
'img_width' => [ '1', '$1ബിനàµà´¦àµ', '$1px' ],
'img_center' => [ '1', 'à´¨à´àµà´µà´¿àµ½', 'à´¨à´àµà´àµà´àµâ', 'center', 'centre' ],
- 'img_framed' => [ '1', 'à´à´àµà´à´', 'à´à´àµà´à´¤àµà´¤à´¿àµ½', 'framed', 'enframed', 'frame' ],
+ 'img_framed' => [ '1', 'à´à´àµà´à´', 'à´à´àµà´à´¤àµà´¤à´¿àµ½', 'frame', 'framed', 'enframed' ],
'img_frameless' => [ '1', 'à´à´àµà´à´°à´¹à´¿à´¤à´', 'frameless' ],
'img_lang' => [ '1', 'à´à´¾à´·=$1', 'lang=$1' ],
'img_page' => [ '1', 'താൾ=$1', 'താൾ_$1', 'page=$1', 'page $1' ],
diff --git a/languages/messages/MessagesMr.php b/languages/messages/MessagesMr.php
index 0ea16f906a..61fc6138ac 100644
--- a/languages/messages/MessagesMr.php
+++ b/languages/messages/MessagesMr.php
@@ -223,14 +223,14 @@ $magicWords = [
'msg' => [ '0', 'सà¤à¤¦à¥à¤¶:', 'निरà¥à¤ª:', 'MSG:' ],
'subst' => [ '0', 'परà¥à¤¯à¤¾à¤¯:', 'समाविषà¥à¤à¥:', 'à¤
बाहà¥à¤¯:', 'निरà¤à¤à¤¸à¤¬à¤¿à¤à¤¬:', 'à¤à¤à¤¸à¤¤à¥à¤¯à¤¾à¤:', 'साà¤à¤¾à¤¹à¤¿à¤¨:', 'साà¤à¤¾à¤¨à¥à¤¤à¤°:', 'साà¤à¤¾à¤ªà¤°à¤¿à¤¸à¥à¤«à¥à¤:', 'साà¤à¥à¤¦à¥à¤à¤¾à¤à¤¨:', 'SUBST:' ],
'msgnw' => [ '0', 'सà¤à¤¦à¥à¤¶à¤¨à¤µà¤¾:', 'निरà¥à¤ªà¤¨à¤µà¤¾:', 'MSGNW:' ],
- 'img_thumbnail' => [ '1', 'à¤à¤µà¤²à¥à¤¸à¥', 'thumbnail', 'thumb' ],
+ 'img_thumbnail' => [ '1', 'à¤à¤µà¤²à¥à¤¸à¥', 'thumb', 'thumbnail' ],
'img_manualthumb' => [ '1', 'à¤à¤µà¤²à¥à¤¸à¥=$1', 'thumbnail=$1', 'thumb=$1' ],
'img_right' => [ '1', 'à¤à¤à¤µà¥', 'right' ],
'img_left' => [ '1', 'डावà¥', 'left' ],
'img_none' => [ '1', 'à¤à¥à¤£à¤¤à¥à¤à¤¨à¤¾à¤¹à¥', 'ननà¥à¤¨à¤¾', 'none' ],
'img_width' => [ '1', '$1à¤
à¤à¤¶', '$1à¤à¤£à¥', '$1पà¤à¥à¤·', '$1px' ],
'img_center' => [ '1', 'मधà¥à¤¯à¤µà¤°à¥à¤¤à¥', 'center', 'centre' ],
- 'img_framed' => [ '1', 'à¤à¥à¤à¤', 'फ़à¥à¤°à¥à¤®', 'framed', 'enframed', 'frame' ],
+ 'img_framed' => [ '1', 'à¤à¥à¤à¤', 'फ़à¥à¤°à¥à¤®', 'frame', 'framed', 'enframed' ],
'img_frameless' => [ '1', 'विनाà¤à¥à¤à¤', 'विनाफ़à¥à¤°à¥à¤®', 'frameless' ],
'img_page' => [ '1', 'पान=$1', 'पान_$1', 'page=$1', 'page $1' ],
'img_upright' => [ '1', 'à¤à¤à¤¾', 'à¤à¤à¤¾=$1', 'à¤à¤à¤¾_$1', 'upright', 'upright=$1', 'upright $1' ],
diff --git a/languages/messages/MessagesMt.php b/languages/messages/MessagesMt.php
index 50ea43ba9c..aad38b7703 100644
--- a/languages/messages/MessagesMt.php
+++ b/languages/messages/MessagesMt.php
@@ -192,13 +192,13 @@ $magicWords = [
'msg' => [ '0', 'MSÄ :', 'MSG:' ],
'subst' => [ '0', 'BIDDEL:', 'SUBST:' ],
'msgnw' => [ '0', 'MSÄ EW:', 'MSGNW:' ],
- 'img_thumbnail' => [ '1', 'daqsminuri', 'minuri', 'thumbnail', 'thumb' ],
+ 'img_thumbnail' => [ '1', 'daqsminuri', 'minuri', 'thumb', 'thumbnail' ],
'img_manualthumb' => [ '1', 'daqsminuri=$1', 'minuri=$1', 'thumbnail=$1', 'thumb=$1' ],
'img_right' => [ '1', 'lemin', 'right' ],
'img_left' => [ '1', 'xellug', 'left' ],
'img_none' => [ '1', 'xejn', 'none' ],
'img_center' => [ '1', 'nofs', 'Äentrali', 'Äentru', 'center', 'centre' ],
- 'img_framed' => [ '1', 'tilat', 'b\'tilar', 'tilar', 'framed', 'enframed', 'frame' ],
+ 'img_framed' => [ '1', 'tilat', 'b\'tilar', 'tilar', 'frame', 'framed', 'enframed' ],
'img_frameless' => [ '1', 'bla_tilar', 'frameless' ],
'img_page' => [ '1', 'paġna=$1', 'paġna $1', 'page=$1', 'page $1' ],
'img_upright' => [ '1', 'wieqaf', 'wieqaf=$1', 'wieqaf $1', 'upright', 'upright=$1', 'upright $1' ],
diff --git a/languages/messages/MessagesMyv.php b/languages/messages/MessagesMyv.php
index 53033c3dbc..20057d52b2 100644
--- a/languages/messages/MessagesMyv.php
+++ b/languages/messages/MessagesMyv.php
@@ -144,12 +144,12 @@ $magicWords = [
'fullpagename' => [ '1', 'ÐÐÐÐÐÐÐÐУÐÐÐÐСТÐ', 'ÐÐÐÐÐÐ_ÐÐÐÐÐÐÐÐ_СТРÐÐÐЦЫ', 'FULLPAGENAME' ],
'talkpagename' => [ '1', 'ÐÐРТÐÐÐÐÐÐÐÐÐÐ', 'ÐÐÐÐÐÐÐÐ_СТРÐÐÐЦЫ_ÐÐСУÐÐÐÐÐЯ', 'TALKPAGENAME' ],
'msg' => [ '0', 'ÐÐЧТЯÐÐÐ:', 'СÐÐÐЩÐÐÐÐ:', 'СÐÐÐЩ:', 'MSG:' ],
- 'img_thumbnail' => [ '1', 'кенжеÑка', 'мини', 'миниаÑÑÑа', 'thumbnail', 'thumb' ],
+ 'img_thumbnail' => [ '1', 'кенжеÑка', 'мини', 'миниаÑÑÑа', 'thumb', 'thumbnail' ],
'img_right' => [ '1', 'виÑÑ_кедÑ', 'ÑпÑава', 'right' ],
'img_left' => [ '1', 'кеÑÑ_кедÑ', 'Ñлева', 'left' ],
'img_none' => [ '1', 'вейкеÑк_аÑаÑÑ', 'без', 'none' ],
'img_center' => [ '1', 'кÑнÑкаÑо', 'ÑенÑÑ', 'center', 'centre' ],
- 'img_framed' => [ '1', 'кÑндÑо', 'обÑамиÑÑ', 'framed', 'enframed', 'frame' ],
+ 'img_framed' => [ '1', 'кÑндÑо', 'обÑамиÑÑ', 'frame', 'framed', 'enframed' ],
'img_frameless' => [ '1', 'кÑндовÑомо', 'безÑамки', 'frameless' ],
'img_page' => [ '1', 'лопа=$1', 'лопа_$1', 'ÑÑÑаниÑа=$1', 'ÑÑÑаниÑа_$1', 'ÑÑÑаниÑа $1', 'page=$1', 'page $1' ],
'img_top' => [ '1', 'веÑÑкÑ', 'ÑвеÑÑ
Ñ', 'top' ],
diff --git a/languages/messages/MessagesNds.php b/languages/messages/MessagesNds.php
index 8a18f2f3b0..b04066cca2 100644
--- a/languages/messages/MessagesNds.php
+++ b/languages/messages/MessagesNds.php
@@ -72,12 +72,12 @@ $magicWords = [
'pagename' => [ '1', 'SIETNAAM', 'SEITENNAME', 'PAGENAME' ],
'pagenamee' => [ '1', 'SIETNAAME', 'SEITENNAME_URL', 'PAGENAMEE' ],
'namespace' => [ '1', 'NAAMRUUM', 'NAMENSRAUM', 'NAMESPACE' ],
- 'img_thumbnail' => [ '1', 'duum', 'miniatur', 'mini', 'thumbnail', 'thumb' ],
+ 'img_thumbnail' => [ '1', 'duum', 'miniatur', 'mini', 'thumb', 'thumbnail' ],
'img_right' => [ '1', 'rechts', 'right' ],
'img_left' => [ '1', 'links', 'left' ],
'img_none' => [ '1', 'keen', 'ohne', 'none' ],
- 'img_center' => [ '1', 'merrn', 'zentriert', 'center', 'centre' ],
- 'img_framed' => [ '1', 'rahmt', 'gerahmt', 'framed', 'enframed', 'frame' ],
+ 'img_center' => [ '1', 'zentriert', 'merrn', 'center', 'centre' ],
+ 'img_framed' => [ '1', 'gerahmt', 'rahmt', 'frame', 'framed', 'enframed' ],
'sitename' => [ '1', 'STEEDNAAM', 'PROJEKTNAME', 'SITENAME' ],
'ns' => [ '0', 'NR:', 'NS:' ],
'localurl' => [ '0', 'STEEDURL:', 'LOKALE_URL:', 'LOCALURL:' ],
diff --git a/languages/messages/MessagesNl.php b/languages/messages/MessagesNl.php
index 9ebb79f9bc..dde2e04b7e 100644
--- a/languages/messages/MessagesNl.php
+++ b/languages/messages/MessagesNl.php
@@ -171,13 +171,13 @@ $magicWords = [
'subst' => [ '0', 'VERV:', 'SUBST:' ],
'safesubst' => [ '0', 'VEILIGVERV:', 'SAFESUBST:' ],
'msgnw' => [ '0', 'BERICHTNW', 'MSGNW:' ],
- 'img_thumbnail' => [ '1', 'miniatuur', 'thumbnail', 'thumb' ],
+ 'img_thumbnail' => [ '1', 'miniatuur', 'thumb', 'thumbnail' ],
'img_manualthumb' => [ '1', 'miniatuur=$1', 'thumbnail=$1', 'thumb=$1' ],
'img_right' => [ '1', 'rechts', 'right' ],
'img_left' => [ '1', 'links', 'left' ],
'img_none' => [ '1', 'geen', 'none' ],
'img_center' => [ '1', 'gecentreerd', 'center', 'centre' ],
- 'img_framed' => [ '1', 'omkaderd', 'framed', 'enframed', 'frame' ],
+ 'img_framed' => [ '1', 'omkaderd', 'frame', 'framed', 'enframed' ],
'img_frameless' => [ '1', 'kaderloos', 'frameless' ],
'img_lang' => [ '1', 'taal=$1', 'lang=$1' ],
'img_page' => [ '1', 'pagina=$1', 'pagina_$1', 'page=$1', 'page $1' ],
diff --git a/languages/messages/MessagesNn.php b/languages/messages/MessagesNn.php
index 49987ad458..b8ae8d7d44 100644
--- a/languages/messages/MessagesNn.php
+++ b/languages/messages/MessagesNn.php
@@ -132,14 +132,14 @@ $magicWords = [
'subst' => [ '0', 'LIMINN:', 'SUBST:' ],
'safesubst' => [ '0', 'TRYGGLIMINN:', 'SAFESUBST:' ],
'msgnw' => [ '0', 'IKWIKMELD:', 'MSGNW:' ],
- 'img_thumbnail' => [ '1', 'mini', 'miniatyr', 'thumbnail', 'thumb' ],
+ 'img_thumbnail' => [ '1', 'mini', 'miniatyr', 'thumb', 'thumbnail' ],
'img_manualthumb' => [ '1', 'mini=$1', 'miniatyr=$1', 'thumbnail=$1', 'thumb=$1' ],
'img_right' => [ '1', 'høgre', 'høyre', 'right' ],
'img_left' => [ '1', 'venstre', 'left' ],
'img_none' => [ '1', 'ingen', 'none' ],
'img_width' => [ '1', '$1pk', '$1px' ],
'img_center' => [ '1', 'sentrum', 'center', 'centre' ],
- 'img_framed' => [ '1', 'ramme', 'ramma', 'framed', 'enframed', 'frame' ],
+ 'img_framed' => [ '1', 'ramme', 'ramma', 'frame', 'framed', 'enframed' ],
'img_frameless' => [ '1', 'rammelaus', 'frameless' ],
'img_lang' => [ '1', 'språk=$1', 'lang=$1' ],
'img_page' => [ '1', 'side=$1', 'side_$1', 'page=$1', 'page $1' ],
diff --git a/languages/messages/MessagesOc.php b/languages/messages/MessagesOc.php
index 47f6b0a9c9..6c7512ba45 100644
--- a/languages/messages/MessagesOc.php
+++ b/languages/messages/MessagesOc.php
@@ -194,13 +194,13 @@ $magicWords = [
'talkpagenamee' => [ '1', 'NOMPAGINADISCUSSIONX', 'TALKPAGENAMEE' ],
'subjectpagename' => [ '1', 'NOMPAGINASUBJECTE', 'NOMPAGINASUBJÃCTE', 'NOMPAGINAARTICLE', 'SUBJECTPAGENAME', 'ARTICLEPAGENAME' ],
'subjectpagenamee' => [ '1', 'NOMPAGINASUBJECTEX', 'NOMPAGINASUBJÃCTEX', 'NOMPAGINAARTICLEX', 'SUBJECTPAGENAMEE', 'ARTICLEPAGENAMEE' ],
- 'img_thumbnail' => [ '1', 'vinheta', 'thumbnail', 'thumb' ],
+ 'img_thumbnail' => [ '1', 'vinheta', 'thumb', 'thumbnail' ],
'img_manualthumb' => [ '1', 'vinheta=$1', 'thumbnail=$1', 'thumb=$1' ],
'img_right' => [ '1', 'drecha', 'dreta', 'right' ],
'img_left' => [ '1', 'esquèrra', 'senèstra', 'gaucha', 'left' ],
'img_none' => [ '1', 'neant', 'nonrés', 'none' ],
'img_center' => [ '1', 'centrat', 'center', 'centre' ],
- 'img_framed' => [ '1', 'quadre', 'enquagrat', 'framed', 'enframed', 'frame' ],
+ 'img_framed' => [ '1', 'quadre', 'enquagrat', 'frame', 'framed', 'enframed' ],
'img_frameless' => [ '1', 'sens_quadre', 'frameless' ],
'img_upright' => [ '1', 'redreça', 'redreça$1', 'redreça $1', 'upright', 'upright=$1', 'upright $1' ],
'img_border' => [ '1', 'bordadura', 'border' ],
diff --git a/languages/messages/MessagesOr.php b/languages/messages/MessagesOr.php
index e84c4f6d3f..4f500a774e 100644
--- a/languages/messages/MessagesOr.php
+++ b/languages/messages/MessagesOr.php
@@ -216,7 +216,7 @@ $magicWords = [
'img_none' => [ '1', 'à¬à¬¿à¬à¬¿_ନàହàà¬', 'none' ],
'img_width' => [ '1', '$1_ପିà¬à¬¸àଲ', '$1px' ],
'img_center' => [ '1', 'à¬àନàଦàର', 'center', 'centre' ],
- 'img_framed' => [ '1', 'ଫàରàମà¬à¬°à¬¾', 'framed', 'enframed', 'frame' ],
+ 'img_framed' => [ '1', 'ଫàରàମà¬à¬°à¬¾', 'frame', 'framed', 'enframed' ],
'img_frameless' => [ '1', 'ଫàରàମନଥିବା', 'frameless' ],
'img_border' => [ '1', 'ବରàଡର', 'border' ],
'img_baseline' => [ '1', 'ବàସଲାà¬à¬¨', 'baseline' ],
diff --git a/languages/messages/MessagesOs.php b/languages/messages/MessagesOs.php
index 26b3832c3e..5ba4ff558e 100644
--- a/languages/messages/MessagesOs.php
+++ b/languages/messages/MessagesOs.php
@@ -169,7 +169,7 @@ $magicWords = [
'numberofpages' => [ '1', 'ФÃРСТЫÐЫÐÃЦ', 'ÐÐÐÐЧÐСТÐÐ_СТРÐÐÐЦ', 'NUMBEROFPAGES' ],
'numberofarticles' => [ '1', 'УÐЦТЫÐЫÐÃЦ', 'ÐÐÐÐЧÐСТÐÐ_СТÐТÐÐ', 'NUMBEROFARTICLES' ],
'pagename' => [ '1', 'ФÐРСЫÐÐÐ', 'ÐÐÐÐÐÐÐÐ_СТРÐÐÐЦЫ', 'PAGENAME' ],
- 'img_thumbnail' => [ '1', 'кÑаддæÑгонд', 'кÑаддæÑ', 'мини', 'миниаÑÑÑа', 'thumbnail', 'thumb' ],
+ 'img_thumbnail' => [ '1', 'мини', 'кÑаддæÑгонд', 'кÑаддæÑ', 'миниаÑÑÑа', 'thumb', 'thumbnail' ],
'img_manualthumb' => [ '1', 'кÑаддæÑгонд=$1', 'кÑаддæÑ=$1', 'мини=$1', 'миниаÑÑÑа=$1', 'thumbnail=$1', 'thumb=$1' ],
'img_right' => [ '1', 'ÑаÑ
из', 'ÑпÑава', 'right' ],
'img_left' => [ '1', 'галиÑ', 'Ñлева', 'left' ],
diff --git a/languages/messages/MessagesPl.php b/languages/messages/MessagesPl.php
index 9c7264dff0..cfe034530d 100644
--- a/languages/messages/MessagesPl.php
+++ b/languages/messages/MessagesPl.php
@@ -266,13 +266,13 @@ $magicWords = [
'basepagename' => [ '1', 'BAZOWANAZWASTRONY', 'BASEPAGENAME' ],
'talkpagename' => [ '1', 'NAZWASTRONYDYSKUSJI', 'TALKPAGENAME' ],
'subst' => [ '0', 'podst:', 'SUBST:' ],
- 'img_thumbnail' => [ '1', 'maÅy', 'thumbnail', 'thumb' ],
+ 'img_thumbnail' => [ '1', 'maÅy', 'thumb', 'thumbnail' ],
'img_manualthumb' => [ '1', 'maÅy=$1', 'thumbnail=$1', 'thumb=$1' ],
'img_right' => [ '1', 'prawo', 'right' ],
'img_left' => [ '1', 'lewo', 'left' ],
'img_none' => [ '1', 'brak', 'none' ],
'img_center' => [ '1', 'centruj', 'center', 'centre' ],
- 'img_framed' => [ '1', 'ramka', 'framed', 'enframed', 'frame' ],
+ 'img_framed' => [ '1', 'ramka', 'frame', 'framed', 'enframed' ],
'img_frameless' => [ '1', 'bezramki', 'bez_ramki', 'frameless' ],
'img_page' => [ '1', 'strona=$1', 'page=$1', 'page $1' ],
'img_border' => [ '1', 'tÅo', 'border' ],
diff --git a/languages/messages/MessagesPs.php b/languages/messages/MessagesPs.php
index 4254b7458b..18c115b84b 100644
--- a/languages/messages/MessagesPs.php
+++ b/languages/messages/MessagesPs.php
@@ -133,7 +133,7 @@ $magicWords = [
'fullpagename' => [ '1', 'دÙ
Ø®_بشپÚÙÙÙ
', 'FULLPAGENAME' ],
'fullpagenamee' => [ '1', 'دÙ
Ø®_بشپÚÙÙÙ
_ÙÚÙ', 'FULLPAGENAMEE' ],
'msg' => [ '0', 'Ù¾ÛغاÙ
:', 'Ù¾:', 'MSG:' ],
- 'img_thumbnail' => [ '1', 'بټÙÙÚ©', 'thumbnail', 'thumb' ],
+ 'img_thumbnail' => [ '1', 'بټÙÙÚ©', 'thumb', 'thumbnail' ],
'img_right' => [ '1', 'ÚÙ', 'right' ],
'img_left' => [ '1', 'Ú©ÙÚ¼', 'left' ],
'img_none' => [ '1', 'ÙÛÚ
', 'none' ],
diff --git a/languages/messages/MessagesPt.php b/languages/messages/MessagesPt.php
index dd6216e86d..5c3c191027 100644
--- a/languages/messages/MessagesPt.php
+++ b/languages/messages/MessagesPt.php
@@ -269,13 +269,13 @@ $magicWords = [
'talkpagenamee' => [ '1', 'NOMEDAPAGINADEDISCUSSAOC', 'NOMEDAPÃGINADEDISCUSSÃOC', 'TALKPAGENAMEE' ],
'subjectpagename' => [ '1', 'NOMEDAPAGINADECONTEUDO', 'NOMEDAPÃGINADECONTEÃDO', 'SUBJECTPAGENAME', 'ARTICLEPAGENAME' ],
'subjectpagenamee' => [ '1', 'NOMEDAPAGINADECONTEUDOC', 'NOMEDAPÃGINADECONTEÃDOC', 'SUBJECTPAGENAMEE', 'ARTICLEPAGENAMEE' ],
- 'img_thumbnail' => [ '1', 'miniaturadaimagem', 'miniatura', 'thumbnail', 'thumb' ],
+ 'img_thumbnail' => [ '1', 'miniaturadaimagem', 'miniatura', 'thumb', 'thumbnail' ],
'img_manualthumb' => [ '1', 'miniaturadaimagem=$1', 'miniatura=$1', 'thumbnail=$1', 'thumb=$1' ],
'img_right' => [ '1', 'direita', 'right' ],
'img_left' => [ '1', 'esquerda', 'left' ],
'img_none' => [ '1', 'nenhum', 'none' ],
'img_center' => [ '1', 'centro', 'center', 'centre' ],
- 'img_framed' => [ '1', 'commoldura', 'comborda', 'framed', 'enframed', 'frame' ],
+ 'img_framed' => [ '1', 'commoldura', 'comborda', 'frame', 'framed', 'enframed' ],
'img_frameless' => [ '1', 'semmoldura', 'semborda', 'frameless' ],
'img_page' => [ '1', 'página=$1', 'página_$1', 'página $1', 'page=$1', 'page $1' ],
'img_upright' => [ '1', 'superiordireito', 'superiordireito=$1', 'superiordireito_$1', 'superiordireito $1', 'upright', 'upright=$1', 'upright $1' ],
diff --git a/languages/messages/MessagesQu.php b/languages/messages/MessagesQu.php
index 8339ad2b69..eb1c8d9d61 100644
--- a/languages/messages/MessagesQu.php
+++ b/languages/messages/MessagesQu.php
@@ -197,13 +197,13 @@ $magicWords = [
'msg' => [ '0', 'WILLA:', 'MSJ:', 'MSG:' ],
'subst' => [ '0', 'WAKCHAY:', 'SUST:', 'FIJAR:', 'SUBST:' ],
'msgnw' => [ '0', 'WILLAMUSUQ:', 'MSGNW:' ],
- 'img_thumbnail' => [ '1', 'rikchacha', 'miniaturadeimagen', 'miniatura', 'mini', 'thumbnail', 'thumb' ],
+ 'img_thumbnail' => [ '1', 'rikchacha', 'miniaturadeimagen', 'mini', 'miniatura', 'thumb', 'thumbnail' ],
'img_manualthumb' => [ '1', 'rikchacha=$1', 'miniaturadeimagen=$1', 'miniatura=$1', 'thumbnail=$1', 'thumb=$1' ],
'img_right' => [ '1', 'paña', 'alliq', 'derecha', 'dcha', 'der', 'right' ],
'img_left' => [ '1', 'lluqi', 'ichuq', 'izquierda', 'izda', 'izq', 'left' ],
'img_none' => [ '1', 'manaima', 'mana', 'ninguna', 'nada', 'no', 'ninguno', 'none' ],
'img_center' => [ '1', 'chawpi', 'centro', 'centrado', 'centrada', 'centrar', 'center', 'centre' ],
- 'img_framed' => [ '1', 'inchuyuq', 'inchu', 'marco', 'enmarcado', 'enmarcada', 'framed', 'enframed', 'frame' ],
+ 'img_framed' => [ '1', 'inchuyuq', 'inchu', 'marco', 'enmarcado', 'enmarcada', 'frame', 'framed', 'enframed' ],
'img_frameless' => [ '1', 'inchunnaq', 'sinmarco', 'sin_embarcar', 'sinenmarcar', 'sin_enmarcar', 'frameless' ],
'img_page' => [ '1', 'panqa=$1', 'pagina=$1', 'página=$1', 'pagina_$1', 'página_$1', 'page=$1', 'page $1' ],
'img_upright' => [ '1', 'sayaq', 'sayaq=$1', 'upright', 'upright=$1', 'upright $1' ],
diff --git a/languages/messages/MessagesRm.php b/languages/messages/MessagesRm.php
index 8c04de8c0c..7304dbfb08 100644
--- a/languages/messages/MessagesRm.php
+++ b/languages/messages/MessagesRm.php
@@ -36,7 +36,7 @@ $namespaceNames = [
$magicWords = [
'redirect' => [ '0', '#RENVIAMENT', '#REDIRECT' ],
- 'img_thumbnail' => [ '1', 'miniatura', 'thumbnail', 'thumb' ],
+ 'img_thumbnail' => [ '1', 'miniatura', 'thumb', 'thumbnail' ],
'img_manualthumb' => [ '1', 'miniatura=$1', 'thumbnail=$1', 'thumb=$1' ],
'img_upright' => [ '1', 'sidretg', 'sidretg=$1', 'sidretg_$1', 'upright', 'upright=$1', 'upright $1' ],
];
diff --git a/languages/messages/MessagesRo.php b/languages/messages/MessagesRo.php
index b1860f9d03..8b921713d2 100644
--- a/languages/messages/MessagesRo.php
+++ b/languages/messages/MessagesRo.php
@@ -86,13 +86,13 @@ $magicWords = [
'subjectpagenamee' => [ '1', 'NUMEEPAGINASUBIECT', 'NUMEEPAGINAARTICOL', 'SUBJECTPAGENAMEE', 'ARTICLEPAGENAMEE' ],
'msg' => [ '0', 'MSJ:', 'MSG:' ],
'msgnw' => [ '0', 'MSJNOU:', 'MSGNW:' ],
- 'img_thumbnail' => [ '1', 'miniatura', 'mini', 'thumbnail', 'thumb' ],
+ 'img_thumbnail' => [ '1', 'miniatura', 'mini', 'thumb', 'thumbnail' ],
'img_manualthumb' => [ '1', 'miniatura=$1', 'mini=$1', 'thumbnail=$1', 'thumb=$1' ],
'img_right' => [ '1', 'dreapta', 'right' ],
'img_left' => [ '1', 'stanga', 'left' ],
'img_none' => [ '1', 'nu', 'none' ],
'img_center' => [ '1', 'centru', 'center', 'centre' ],
- 'img_framed' => [ '1', 'cadru', 'framed', 'enframed', 'frame' ],
+ 'img_framed' => [ '1', 'cadru', 'frame', 'framed', 'enframed' ],
'img_frameless' => [ '1', 'faracadru', 'frameless' ],
'img_page' => [ '1', 'pagina=$1', 'pagina $1', 'page=$1', 'page $1' ],
'img_upright' => [ '1', 'dreaptasus', 'dreaptasus=$1', 'dreaptasus $1', 'upright', 'upright=$1', 'upright $1' ],
diff --git a/languages/messages/MessagesRu.php b/languages/messages/MessagesRu.php
index c27365474d..e1af8f3326 100644
--- a/languages/messages/MessagesRu.php
+++ b/languages/messages/MessagesRu.php
@@ -291,14 +291,14 @@ $magicWords = [
'subst' => [ '0', 'ÐÐÐСТÐÐÐÐÐÐ:', 'ÐÐÐСТ:', 'SUBST:' ],
'safesubst' => [ '0', 'ÐÐЩÐÐÐСТ:', 'SAFESUBST:' ],
'msgnw' => [ '0', 'СÐÐÐЩ_ÐÐÐ_ÐÐÐÐ:', 'MSGNW:' ],
- 'img_thumbnail' => [ '1', 'мини', 'миниаÑÑÑа', 'thumbnail', 'thumb' ],
+ 'img_thumbnail' => [ '1', 'мини', 'миниаÑÑÑа', 'thumb', 'thumbnail' ],
'img_manualthumb' => [ '1', 'мини=$1', 'миниаÑÑÑа=$1', 'thumbnail=$1', 'thumb=$1' ],
'img_right' => [ '1', 'ÑпÑава', 'right' ],
'img_left' => [ '1', 'Ñлева', 'left' ],
'img_none' => [ '1', 'без', 'none' ],
'img_width' => [ '1', '$1пкÑ', '$1px' ],
'img_center' => [ '1', 'ÑенÑÑ', 'center', 'centre' ],
- 'img_framed' => [ '1', 'обÑамиÑÑ', 'framed', 'enframed', 'frame' ],
+ 'img_framed' => [ '1', 'обÑамиÑÑ', 'frame', 'framed', 'enframed' ],
'img_frameless' => [ '1', 'безÑамки', 'frameless' ],
'img_page' => [ '1', 'ÑÑÑаниÑа=$1', 'ÑÑÑаниÑа $1', 'page=$1', 'page $1' ],
'img_upright' => [ '1', 'ÑвеÑÑ
ÑÑпÑава', 'ÑвеÑÑ
ÑÑпÑава=$1', 'ÑвеÑÑ
ÑÑпÑава $1', 'upright', 'upright=$1', 'upright $1' ],
diff --git a/languages/messages/MessagesSa.php b/languages/messages/MessagesSa.php
index 21b5e6354b..4a369bdc40 100644
--- a/languages/messages/MessagesSa.php
+++ b/languages/messages/MessagesSa.php
@@ -223,14 +223,14 @@ $magicWords = [
'subjectpagename' => [ '1', 'विषयपà¥à¤·à¥à¤ नाम', 'लà¥à¤à¤ªà¥à¤·à¥à¤ नाम', 'SUBJECTPAGENAME', 'ARTICLEPAGENAME' ],
'msg' => [ '0', 'सनà¥à¤¦à¥à¤¶:', 'MSG:' ],
'msgnw' => [ '0', 'नà¥à¤¤à¤¨à¤¸à¤¨à¥à¤¦à¥à¤¶:', 'MSGNW:' ],
- 'img_thumbnail' => [ '1', 'लà¤à¥à¤¤à¥à¤¤à¤®', 'सà¤à¥à¤à¥à¤à¤¿à¤¤à¤à¤¿à¤¤à¥à¤°', 'à¤
à¤à¥à¤à¥à¤·à¥à¤ ', 'thumbnail', 'thumb' ],
+ 'img_thumbnail' => [ '1', 'लà¤à¥à¤¤à¥à¤¤à¤®', 'à¤
à¤à¥à¤à¥à¤·à¥à¤ ', 'सà¤à¥à¤à¥à¤à¤¿à¤¤à¤à¤¿à¤¤à¥à¤°', 'thumb', 'thumbnail' ],
'img_manualthumb' => [ '1', 'सà¤à¥à¤à¥à¤à¤¿à¤¤à¤à¤¿à¤¤à¥à¤°=$1', 'à¤
à¤à¥à¤à¥à¤·à¥à¤ =$1', 'लà¤à¥à¤¤à¥à¤¤à¤®à¤à¤¿à¤¤à¥à¤°=$1', 'thumbnail=$1', 'thumb=$1' ],
'img_right' => [ '1', 'दà¤à¥à¤·à¤¿à¤£à¤¤', 'right' ],
'img_left' => [ '1', 'वामतà¤', 'left' ],
'img_none' => [ '1', 'नà¥à¤µ', 'none' ],
'img_width' => [ '1', '$1पिà¤', '$1px' ],
'img_center' => [ '1', 'मधà¥à¤¯', 'center', 'centre' ],
- 'img_framed' => [ '1', 'à¤à¤¬à¤¨à¥à¤§', 'framed', 'enframed', 'frame' ],
+ 'img_framed' => [ '1', 'à¤à¤¬à¤¨à¥à¤§', 'frame', 'framed', 'enframed' ],
'img_frameless' => [ '1', 'निराबनà¥à¤§', 'frameless' ],
'img_page' => [ '1', 'पà¥à¤·à¥à¤ =$1', 'पà¥à¤·à¥à¤ $1', 'page=$1', 'page $1' ],
'img_upright' => [ '1', 'à¤à¤¨à¥à¤¨à¤¤', 'à¤à¤¨à¥à¤¨à¤¤=$1', 'à¤à¤¨à¥à¤¨à¤¤ $1', 'upright', 'upright=$1', 'upright $1' ],
diff --git a/languages/messages/MessagesSe.php b/languages/messages/MessagesSe.php
index 0208991399..e04b004db8 100644
--- a/languages/messages/MessagesSe.php
+++ b/languages/messages/MessagesSe.php
@@ -126,7 +126,7 @@ $magicWords = [
'numberofactiveusers' => [ '1', 'AKTIIVAGEAVAHEDDJIIDMEARRI', 'Â AKTIIVAGEAVAHEADDJIMEARRI', 'Â AKTIIVAGEAVAHEADDJEMEARRI', 'NUMBEROFACTIVEUSERS' ],
'numberofedits' => [ '1', 'RIEVDADUSAIDMEARRI', 'Â RIEVDADUSMEARRI', 'NUMBEROFEDITS' ],
'subst' => [ '0', 'LIIBME:', 'SUBST:' ],
- 'img_thumbnail' => [ '1', 'mini', 'thumbnail', 'thumb' ],
+ 'img_thumbnail' => [ '1', 'mini', 'thumb', 'thumbnail' ],
'img_manualthumb' => [ '1', 'mini=$1', 'thumbnail=$1', 'thumb=$1' ],
'img_right' => [ '1', 'olgeš', 'right' ],
'img_left' => [ '1', 'gurut', 'left' ],
diff --git a/languages/messages/MessagesSh.php b/languages/messages/MessagesSh.php
index 3a821e2aae..fb792379ee 100644
--- a/languages/messages/MessagesSh.php
+++ b/languages/messages/MessagesSh.php
@@ -158,14 +158,14 @@ $magicWords = [
'msg' => [ '0', 'POR:', 'MSG:' ],
'subst' => [ '0', 'ZAMJENI:', 'ZAMENI:', 'ZAMJENA:', 'SUBST:' ],
'msgnw' => [ '0', 'NVPOR:', 'MSGNW:' ],
- 'img_thumbnail' => [ '1', 'minijatura', 'mini', 'thumbnail', 'thumb' ],
+ 'img_thumbnail' => [ '1', 'mini', 'minijatura', 'thumb', 'thumbnail' ],
'img_manualthumb' => [ '1', 'minijatura=$1', 'mini=$1', 'thumbnail=$1', 'thumb=$1' ],
'img_right' => [ '1', 'desno', 'right' ],
'img_left' => [ '1', 'lijevo', 'levo', 'left' ],
- 'img_none' => [ '1', 'n', 'bez', 'ništa', 'none' ],
- 'img_center' => [ '1', 'centar', 'središte', 'c', 'center', 'centre' ],
- 'img_framed' => [ '1', 'okvir', 'ram', 'framed', 'enframed', 'frame' ],
- 'img_frameless' => [ '1', 'bez_okvira', 'bezokvira', 'frameless' ],
+ 'img_none' => [ '1', 'n', 'ništa', 'bez', 'none' ],
+ 'img_center' => [ '1', 'centar', 'c', 'središte', 'center', 'centre' ],
+ 'img_framed' => [ '1', 'okvir', 'ram', 'frame', 'framed', 'enframed' ],
+ 'img_frameless' => [ '1', 'bezokvira', 'bez_okvira', 'frameless' ],
'img_page' => [ '1', 'stranica=$1', 'stranica_$1', 'strana=$1', 'strana_$1', 'page=$1', 'page $1' ],
'img_upright' => [ '1', 'na_gore', 'na_gore=$1', 'na_gore_$1', 'uspravno', 'uspravno=$1', 'uspravno_$1', 'upright', 'upright=$1', 'upright $1' ],
'img_border' => [ '1', 'granica', 'obrub', 'border' ],
diff --git a/languages/messages/MessagesSk.php b/languages/messages/MessagesSk.php
index d1ac72f55c..299fd136dd 100644
--- a/languages/messages/MessagesSk.php
+++ b/languages/messages/MessagesSk.php
@@ -220,13 +220,13 @@ $magicWords = [
'subjectpagenamee' => [ '1', 'NÃZOVÄLÃNKUE', 'SUBJECTPAGENAMEE', 'ARTICLEPAGENAMEE' ],
'msg' => [ '0', 'SPRÃVA:', 'MSG:' ],
'subst' => [ '0', 'NAHR:', 'SUBST:' ],
- 'img_thumbnail' => [ '1', 'náhľad', 'náhľadobrázka', 'thumbnail', 'thumb' ],
+ 'img_thumbnail' => [ '1', 'náhľad', 'náhľadobrázka', 'thumb', 'thumbnail' ],
'img_right' => [ '1', 'vpravo', 'right' ],
'img_left' => [ '1', 'vľavo', 'left' ],
'img_none' => [ '1', 'žiadny', 'none' ],
'img_width' => [ '1', '$1bod', '$1px' ],
'img_center' => [ '1', 'stred', 'center', 'centre' ],
- 'img_framed' => [ '1', 'rám', 'framed', 'enframed', 'frame' ],
+ 'img_framed' => [ '1', 'rám', 'frame', 'framed', 'enframed' ],
'img_border' => [ '1', 'okraj', 'border' ],
'sitename' => [ '1', 'NÃZOVLOKALITY', 'SITENAME' ],
'ns' => [ '0', 'MP:', 'NS:' ],
diff --git a/languages/messages/MessagesSl.php b/languages/messages/MessagesSl.php
index c434309dd1..7599bc2b0a 100644
--- a/languages/messages/MessagesSl.php
+++ b/languages/messages/MessagesSl.php
@@ -119,14 +119,14 @@ $magicWords = [
'forcetoc' => [ '0', '__VSILIKAZALOVSEBINE__', '__FORCETOC__' ],
'toc' => [ '0', '__POGLAVJE__', '__TOC__' ],
'noeditsection' => [ '0', '__BREZUREJANJARAZDELKOV__', '__NOEDITSECTION__' ],
- 'img_thumbnail' => [ '1', 'sliÄica', 'thumbnail', 'thumb' ],
+ 'img_thumbnail' => [ '1', 'sliÄica', 'thumb', 'thumbnail' ],
'img_manualthumb' => [ '1', 'sliÄica=$1', 'thumbnail=$1', 'thumb=$1' ],
'img_right' => [ '1', 'desno', 'right' ],
'img_left' => [ '1', 'levo', 'left' ],
'img_none' => [ '1', 'brez', 'none' ],
'img_width' => [ '1', '$1_pik', '$1px' ],
'img_center' => [ '1', 'sredina', 'sredinsko', 'center', 'centre' ],
- 'img_framed' => [ '1', 'okvir', 'okvirjeno', 'framed', 'enframed', 'frame' ],
+ 'img_framed' => [ '1', 'okvir', 'okvirjeno', 'frame', 'framed', 'enframed' ],
'img_frameless' => [ '1', 'brezokvirja', 'frameless' ],
'img_page' => [ '1', 'stran=$1', 'm_stran $1', 'page=$1', 'page $1' ],
'img_upright' => [ '1', 'zgorajdesno', 'zgorajdesno=$1', 'zgorajdesno $1', 'upright', 'upright=$1', 'upright $1' ],
diff --git a/languages/messages/MessagesSq.php b/languages/messages/MessagesSq.php
index 20e3978116..a0d88d4610 100644
--- a/languages/messages/MessagesSq.php
+++ b/languages/messages/MessagesSq.php
@@ -166,13 +166,13 @@ $magicWords = [
'talkpagename' => [ '1', 'EMRIIFAQESSÃDISKUTIMIT', 'TALKPAGENAME' ],
'talkpagenamee' => [ '1', 'EMRIIFAQESSÃDISKUTIMITE', 'TALKPAGENAMEE' ],
'subst' => [ '0', 'ZÃVN', 'SUBST:' ],
- 'img_thumbnail' => [ '1', 'parapamje', 'pamje', 'thumbnail', 'thumb' ],
+ 'img_thumbnail' => [ '1', 'parapamje', 'pamje', 'thumb', 'thumbnail' ],
'img_manualthumb' => [ '1', 'parapamje=$1', 'pamje=$1', 'thumbnail=$1', 'thumb=$1' ],
'img_right' => [ '1', 'djathtas', 'right' ],
'img_left' => [ '1', 'majtas', 'left' ],
'img_none' => [ '1', 's\'ka', 'none' ],
'img_center' => [ '1', 'qendër', 'qendrore', 'center', 'centre' ],
- 'img_framed' => [ '1', 'i_kornizuar', 'pa_kornizë', 'kornizë', 'framed', 'enframed', 'frame' ],
+ 'img_framed' => [ '1', 'i_kornizuar', 'pa_kornizë', 'kornizë', 'frame', 'framed', 'enframed' ],
'img_page' => [ '1', 'faqja=$1', 'faqja $1', 'page=$1', 'page $1' ],
'img_upright' => [ '1', 'lartdjathtas', 'lartdjathtas=$1', 'lartdjathtas $1', 'upright', 'upright=$1', 'upright $1' ],
'img_border' => [ '1', 'kufi', 'border' ],
diff --git a/languages/messages/MessagesSv.php b/languages/messages/MessagesSv.php
index 0815c71948..8819be629a 100644
--- a/languages/messages/MessagesSv.php
+++ b/languages/messages/MessagesSv.php
@@ -249,13 +249,13 @@ $magicWords = [
'msg' => [ '0', 'MED:', 'MSG:' ],
'subst' => [ '0', 'BYT:', 'SUBST:' ],
'msgnw' => [ '0', 'MEDNW:', 'MSGNW:' ],
- 'img_thumbnail' => [ '1', 'miniatyr', 'mini', 'thumbnail', 'thumb' ],
+ 'img_thumbnail' => [ '1', 'miniatyr', 'mini', 'thumb', 'thumbnail' ],
'img_manualthumb' => [ '1', 'miniatyr=$1', 'mini=$1', 'thumbnail=$1', 'thumb=$1' ],
'img_right' => [ '1', 'höger', 'right' ],
'img_left' => [ '1', 'vänster', 'left' ],
'img_none' => [ '1', 'ingen', 'none' ],
'img_center' => [ '1', 'centrerad', 'center', 'centre' ],
- 'img_framed' => [ '1', 'inramad', 'ram', 'framed', 'enframed', 'frame' ],
+ 'img_framed' => [ '1', 'ram', 'inramad', 'frame', 'framed', 'enframed' ],
'img_frameless' => [ '1', 'ramlös', 'frameless' ],
'img_page' => [ '1', 'sida=$1', 'sida $1', 'page=$1', 'page $1' ],
'img_upright' => [ '1', 'stående', 'stående=$1', 'stående $1', 'upright', 'upright=$1', 'upright $1' ],
diff --git a/languages/messages/MessagesTr.php b/languages/messages/MessagesTr.php
index 747f1e88e1..9e07263abc 100644
--- a/languages/messages/MessagesTr.php
+++ b/languages/messages/MessagesTr.php
@@ -252,14 +252,14 @@ $magicWords = [
'subst' => [ '0', 'YK:', 'YERÄ°NEKOY:', 'KOPYALA:', 'AKTAR:', 'YAPIÅTIR:', 'SUBST:' ],
'safesubst' => [ '0', 'GÃVENLÄ°YERÄ°NEKOY:', 'GÃVENLÄ°KOPYALA:', 'GÃVENLÄ°AKTAR:', 'GÃVENLÄ°YAPIÅTIR:', 'SAFESUBST:' ],
'msgnw' => [ '0', 'MSJYN:', 'Ä°LTYN:', 'MSGNW:' ],
- 'img_thumbnail' => [ '1', 'küçükresim', 'küçük', 'thumbnail', 'thumb' ],
+ 'img_thumbnail' => [ '1', 'küçükresim', 'küçük', 'thumb', 'thumbnail' ],
'img_manualthumb' => [ '1', 'küçükresim=$1', 'küçük=$1', 'thumbnail=$1', 'thumb=$1' ],
'img_right' => [ '1', 'saÄ', 'right' ],
'img_left' => [ '1', 'sol', 'left' ],
'img_none' => [ '1', 'yok', 'none' ],
'img_width' => [ '1', '$1pik', '$1piksel', '$1px' ],
'img_center' => [ '1', 'orta', 'center', 'centre' ],
- 'img_framed' => [ '1', 'çerçeveli', 'çerçeve', 'framed', 'enframed', 'frame' ],
+ 'img_framed' => [ '1', 'çerçeveli', 'çerçeve', 'frame', 'framed', 'enframed' ],
'img_frameless' => [ '1', 'çerçevesiz', 'frameless' ],
'img_page' => [ '1', 'sayfa=$1', 'sayfa $1', 'page=$1', 'page $1' ],
'img_upright' => [ '1', 'dikey', 'dikey=$1', 'dikey $1', 'upright', 'upright=$1', 'upright $1' ],
@@ -267,7 +267,7 @@ $magicWords = [
'img_baseline' => [ '1', 'tabançizgisi', 'altçizgi', 'baseline' ],
'img_sub' => [ '1', 'alt', 'sub' ],
'img_super' => [ '1', 'üst', 'üs', 'super', 'sup' ],
- 'img_top' => [ '1', 'tavan', 'tepe', 'top' ],
+ 'img_top' => [ '1', 'tepe', 'tavan', 'top' ],
'img_text_top' => [ '1', 'metin-tavan', 'metin-tepe', 'text-top' ],
'img_middle' => [ '1', 'merkez', 'middle' ],
'img_bottom' => [ '1', 'taban', 'bottom' ],
diff --git a/languages/messages/MessagesUk.php b/languages/messages/MessagesUk.php
index d3bca667a2..369e0bed21 100644
--- a/languages/messages/MessagesUk.php
+++ b/languages/messages/MessagesUk.php
@@ -274,14 +274,14 @@ $magicWords = [
'subst' => [ '0', 'ÐÐÐСТ:', 'ÐÐÐСТÐÐÐÐÐÐ:', 'ÐÐÐСТÐÐÐÐÐÐ:', 'ÐÐÐСТ:', 'SUBST:' ],
'safesubst' => [ '0', 'ÐÐÐÐÐЧÐÐ_ÐÐÐСТÐÐÐÐÐÐ:', 'ÐÐЩÐÐÐСТ:', 'SAFESUBST:' ],
'msgnw' => [ '0', 'ÐÐÐÐÐ_ÐÐÐ_ÐÐÐÐ:', 'СÐÐÐЩ_ÐÐÐ_ÐÐÐÐ:', 'MSGNW:' ],
- 'img_thumbnail' => [ '1', 'мÑнÑ', 'мÑнÑаÑÑÑа', 'мини', 'миниаÑÑÑа', 'thumbnail', 'thumb' ],
+ 'img_thumbnail' => [ '1', 'мÑнÑ', 'мини', 'мÑнÑаÑÑÑа', 'миниаÑÑÑа', 'thumb', 'thumbnail' ],
'img_manualthumb' => [ '1', 'мÑнÑ=$1', 'мÑнÑаÑÑÑа=$1', 'мини=$1', 'миниаÑÑÑа=$1', 'thumbnail=$1', 'thumb=$1' ],
'img_right' => [ '1', 'пÑавоÑÑÑ', 'ÑпÑава', 'right' ],
'img_left' => [ '1', 'лÑвоÑÑÑ', 'Ñлева', 'left' ],
'img_none' => [ '1', 'без', 'none' ],
'img_width' => [ '1', '$1пкÑ', '$1px' ],
'img_center' => [ '1', 'ÑенÑÑ', 'center', 'centre' ],
- 'img_framed' => [ '1', 'обÑамиÑи', 'Ñамка', 'обÑамиÑÑ', 'framed', 'enframed', 'frame' ],
+ 'img_framed' => [ '1', 'обÑамиÑи', 'Ñамка', 'обÑамиÑÑ', 'frame', 'framed', 'enframed' ],
'img_frameless' => [ '1', 'безÑамки', 'frameless' ],
'img_page' => [ '1', 'ÑÑоÑÑнка=$1', 'ÑÑоÑÑнка_$1', 'ÑÑÑаниÑа=$1', 'ÑÑÑаниÑа $1', 'page=$1', 'page $1' ],
'img_upright' => [ '1', 'звеÑÑ
ÑпÑавоÑÑÑ', 'звеÑÑ
ÑпÑавоÑÑÑ=$1', 'звеÑÑ
ÑпÑавоÑÑÑ_$1', 'ÑвеÑÑ
ÑÑпÑава', 'ÑвеÑÑ
ÑÑпÑава=$1', 'ÑвеÑÑ
ÑÑпÑава $1', 'upright', 'upright=$1', 'upright $1' ],
diff --git a/languages/messages/MessagesUr.php b/languages/messages/MessagesUr.php
index f70080bb02..f9da1ed945 100644
--- a/languages/messages/MessagesUr.php
+++ b/languages/messages/MessagesUr.php
@@ -152,7 +152,7 @@ $magicWords = [
'msg' => [ '0', 'Ù¾ÛغاÙ
:', 'MSG:' ],
'subst' => [ '0', 'جا:', 'ÙÙÙ:', 'SUBST:' ],
'safesubst' => [ '0', 'Ù
ØÙÙظ_جا:', 'Ù
ØÙÙظ_ÙÙÙ:', 'SAFESUBST:' ],
- 'img_thumbnail' => [ '1', 'تصغÛر', 'thumbnail', 'thumb' ],
+ 'img_thumbnail' => [ '1', 'تصغÛر', 'thumb', 'thumbnail' ],
'img_right' => [ '1', 'دائÛÚº', 'right' ],
'img_left' => [ '1', 'بائÛÚº', 'left' ],
'img_center' => [ '1', 'درÙ
ÛاÙ', 'center', 'centre' ],
diff --git a/languages/messages/MessagesVi.php b/languages/messages/MessagesVi.php
index 593f61a4a5..201a6770c3 100644
--- a/languages/messages/MessagesVi.php
+++ b/languages/messages/MessagesVi.php
@@ -220,13 +220,13 @@ $magicWords = [
'subst' => [ '0', 'THẾ:', 'SUBST:' ],
'safesubst' => [ '0', 'THẾ_AN_TOÃN:', 'SAFESUBST:' ],
'msgnw' => [ '0', 'NHẮN_Má»I:', 'NHẮNMá»I:', 'MSGNW:' ],
- 'img_thumbnail' => [ '1', 'nhá»', 'thumbnail', 'thumb' ],
+ 'img_thumbnail' => [ '1', 'nhá»', 'thumb', 'thumbnail' ],
'img_manualthumb' => [ '1', 'nhá»=$1', 'thumbnail=$1', 'thumb=$1' ],
'img_right' => [ '1', 'phải', 'right' ],
'img_left' => [ '1', 'trái', 'left' ],
'img_none' => [ '1', 'không', 'none' ],
'img_center' => [ '1', 'giữa', 'center', 'centre' ],
- 'img_framed' => [ '1', 'khung', 'framed', 'enframed', 'frame' ],
+ 'img_framed' => [ '1', 'khung', 'frame', 'framed', 'enframed' ],
'img_frameless' => [ '1', 'không_khung', 'frameless' ],
'img_lang' => [ '1', 'tiếng=$1', 'ngôn_ngữ=$1', 'lang=$1' ],
'img_page' => [ '1', 'trang=$1', 'trang_$1', 'page=$1', 'page $1' ],
diff --git a/languages/messages/MessagesYi.php b/languages/messages/MessagesYi.php
index 074bf5480c..edc860ea5b 100644
--- a/languages/messages/MessagesYi.php
+++ b/languages/messages/MessagesYi.php
@@ -169,7 +169,7 @@ $magicWords = [
'subpagename' => [ '1', '××× ×ער××××× ×××¢×', '×©× ××£ ×××©× ×', 'SUBPAGENAME' ],
'talkpagename' => [ '1', 'רע×× ××××× ×××¢×', '×©× ××£ ×ש×××', 'TALKPAGENAME' ],
'subst' => [ '0', 'ס:', 'SUBST:' ],
- 'img_thumbnail' => [ '1', 'ק××××', '××××ער', 'thumbnail', 'thumb' ],
+ 'img_thumbnail' => [ '1', 'ק××××', '××××ער', 'thumb', 'thumbnail' ],
'img_manualthumb' => [ '1', 'ק××××=$1', '××××ער=$1', 'thumbnail=$1', 'thumb=$1' ],
'img_right' => [ '1', 'רע××ס', '××××', 'right' ],
'img_left' => [ '1', '××× ×§×¡', 'ש×××', 'left' ],
diff --git a/maintenance/benchmarks/bench_utf8_title_check.php b/maintenance/benchmarks/bench_utf8_title_check.php
index 62bb0fa114..c92a720868 100644
--- a/maintenance/benchmarks/bench_utf8_title_check.php
+++ b/maintenance/benchmarks/bench_utf8_title_check.php
@@ -24,14 +24,12 @@
require_once __DIR__ . '/Benchmarker.php';
/**
- * This little benchmark executes the regexp used in Language->checkTitleEncoding()
- * and compares its execution time against that of mb_check_encoding, if available.
+ * This little benchmark executes the regexp formerly used in Language->checkTitleEncoding()
+ * and compares its execution time against that of mb_check_encoding.
*
* @ingroup Benchmark
*/
class BenchUtf8TitleCheck extends Benchmarker {
- private $canRun;
-
private $data;
public function __construct() {
@@ -61,20 +59,11 @@ class BenchUtf8TitleCheck extends Benchmarker {
];
// @codingStandardsIgnoreEnd
- $this->canRun = function_exists( 'mb_check_encoding' );
-
- if ( $this->canRun ) {
- $this->addDescription( "Benchmark for using a regexp vs. mb_check_encoding " .
- "to check for UTF-8 encoding." );
- } else {
- $this->addDescription( 'CANNOT RUN benchmark using mb_check_encoding: function not available.' );
- }
+ $this->addDescription( "Benchmark for using a regexp vs. mb_check_encoding " .
+ "to check for UTF-8 encoding." );
}
public function execute() {
- if ( !$this->canRun ) {
- return;
- }
$benchmarks = [];
foreach ( $this->data as $val ) {
$benchmarks[] = [
diff --git a/maintenance/cleanupCaps.php b/maintenance/cleanupCaps.php
index 641250d102..693125994c 100644
--- a/maintenance/cleanupCaps.php
+++ b/maintenance/cleanupCaps.php
@@ -92,7 +92,7 @@ class CapsCleanup extends TableCleanup {
} else {
$mp = new MovePage( $current, $target );
$status = $mp->move( $this->user, 'Converting page titles to lowercase', true );
- $ok = $status->isOK() ? 'OK' : $status->getWikiText();
+ $ok = $status->isOK() ? 'OK' : $status->getWikiText( false, false, 'en' );
$this->output( "\"$display\" -> \"$targetDisplay\": $ok\n" );
}
if ( $ok === true ) {
diff --git a/maintenance/createAndPromote.php b/maintenance/createAndPromote.php
index 9abc297dc3..848c2f7eda 100644
--- a/maintenance/createAndPromote.php
+++ b/maintenance/createAndPromote.php
@@ -79,11 +79,16 @@ class CreateAndPromote extends Maintenance {
$groups = array_filter( self::$permitRoles, [ $this, 'hasOption' ] );
if ( $this->hasOption( 'custom-groups' ) ) {
+ $allGroups = array_flip( User::getAllGroups() );
$customGroupsText = $this->getOption( 'custom-groups' );
if ( $customGroupsText !== '' ) {
$customGroups = explode( ',', $customGroupsText );
foreach ( $customGroups as $customGroup ) {
- $groups[] = trim( $customGroup );
+ if ( isset( $allGroups[$customGroup] ) ) {
+ $groups[] = trim( $customGroup );
+ } else {
+ $this->output( "$customGroup is not a valid group, ignoring!\n" );
+ }
}
}
}
diff --git a/maintenance/dictionary/mediawiki.dic b/maintenance/dictionary/mediawiki.dic
index 6d5472e74f..914336f844 100644
--- a/maintenance/dictionary/mediawiki.dic
+++ b/maintenance/dictionary/mediawiki.dic
@@ -538,7 +538,6 @@ asctime
asdf
aspx
assert
-astriks
asymp
async
at
diff --git a/maintenance/edit.php b/maintenance/edit.php
index 4ef73799d4..4219ed0517 100644
--- a/maintenance/edit.php
+++ b/maintenance/edit.php
@@ -97,7 +97,7 @@ class EditCLI extends Maintenance {
$exit = 1;
}
if ( !$status->isGood() ) {
- $this->output( $status->getWikiText() . "\n" );
+ $this->output( $status->getWikiText( false, false, 'en' ) . "\n" );
}
exit( $exit );
}
diff --git a/maintenance/exportSites.php b/maintenance/exportSites.php
index 157a3234bc..b1e4fa943b 100644
--- a/maintenance/exportSites.php
+++ b/maintenance/exportSites.php
@@ -42,8 +42,8 @@ class ExportSites extends Maintenance {
$exporter = new SiteExporter( $handle );
- $sites = SiteSQLStore::newInstance()->getSites( 'recache' );
- $exporter->exportSites( $sites );
+ $siteLookup = \MediaWiki\MediaWikiServices::getInstance()->getSiteLookup();
+ $exporter->exportSites( $siteLookup->getSites() );
fclose( $handle );
diff --git a/maintenance/importImages.php b/maintenance/importImages.php
index 512c38cb32..c653a5f06d 100644
--- a/maintenance/importImages.php
+++ b/maintenance/importImages.php
@@ -257,7 +257,7 @@ if ( $count > 0 ) {
$archive = $image->publish( $file, $flags, $publishOptions );
if ( !$archive->isGood() ) {
echo "failed. (" .
- $archive->getWikiText() .
+ $archive->getWikiText( false, false, 'en' ) .
")\n";
$failed++;
continue;
diff --git a/maintenance/importSites.php b/maintenance/importSites.php
index daec7b6214..572234422f 100644
--- a/maintenance/importSites.php
+++ b/maintenance/importSites.php
@@ -30,7 +30,8 @@ class ImportSites extends Maintenance {
public function execute() {
$file = $this->getArg( 0 );
- $importer = new SiteImporter( SiteSQLStore::newInstance() );
+ $siteStore = \MediaWiki\MediaWikiServices::getInstance()->getSiteStore();
+ $importer = new SiteImporter( $siteStore );
$importer->setExceptionCallback( [ $this, 'reportException' ] );
$importer->importFromFile( $file );
diff --git a/maintenance/language/digit2html.php b/maintenance/language/digit2html.php
index eddfa261ae..46616db56b 100644
--- a/maintenance/language/digit2html.php
+++ b/maintenance/language/digit2html.php
@@ -32,12 +32,12 @@ class Digit2Html extends Maintenance {
# A list of unicode numerals is available at:
# http://www.fileformat.info/info/unicode/category/Nd/list.htm
- private $mLangs = array(
+ private $mLangs = [
'Ar', 'As', 'Bh', 'Bo', 'Dz',
'Fa', 'Gu', 'Hi', 'Km', 'Kn',
'Ks', 'Lo', 'Ml', 'Mr', 'Ne',
'New', 'Or', 'Pa', 'Pi', 'Sa'
- );
+ ];
public function __construct() {
parent::__construct();
diff --git a/maintenance/language/generateUtf8Case.php b/maintenance/language/generateUtf8Case.php
deleted file mode 100644
index 961424d46d..0000000000
--- a/maintenance/language/generateUtf8Case.php
+++ /dev/null
@@ -1,129 +0,0 @@
-
- * https://www.mediawiki.org/
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * 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 MaintenanceLanguage
- */
-
-require_once __DIR__ . '/../Maintenance.php';
-
-/**
- * Generates Utf8Case.ser from the Unicode Character Database and
- * supplementary files.
- *
- * @ingroup MaintenanceLanguage
- */
-class GenerateUtf8Case extends Maintenance {
-
- public function __construct() {
- parent::__construct();
- $this->addDescription( 'Generate Utf8Case.ser from the Unicode Character Database ' .
- 'and supplementary files' );
- $this->addOption( 'unicode-data-file', 'The local location of the data file ' .
- 'from http://unicode.org/Public/UNIDATA/UnicodeData.txt', false, true );
- }
-
- public function getDbType() {
- return Maintenance::DB_NONE;
- }
-
- public function execute() {
- if ( !$this->hasOption( 'unicode-data-file' ) ) {
- $dataFile = 'UnicodeData.txt';
- if ( !file_exists( $dataFile ) ) {
- $this->error( "Unable to find UnicodeData.txt. Please specify " .
- "its location with --unicode-data-file=" );
- exit( 1 );
- }
- } else {
- $dataFile = $this->getOption( 'unicode-data-file' );
- if ( !file_exists( $dataFile ) ) {
- $this->error( 'Unable to find the specified data file.' );
- exit( 1 );
- }
- }
-
- $file = fopen( $dataFile, 'r' );
- if ( !$file ) {
- $this->error( 'Unable to open the data file.' );
- exit( 1 );
- }
-
- // For the file format, see http://www.unicode.org/reports/tr44/
- $fieldNames = [
- 'Code',
- 'Name',
- 'General_Category',
- 'Canonical_Combining_Class',
- 'Bidi_Class',
- 'Decomposition_Type_Mapping',
- 'Numeric_Type_Value_6',
- 'Numeric_Type_Value_7',
- 'Numeric_Type_Value_8',
- 'Bidi_Mirrored',
- 'Unicode_1_Name',
- 'ISO_Comment',
- 'Simple_Uppercase_Mapping',
- 'Simple_Lowercase_Mapping',
- 'Simple_Titlecase_Mapping'
- ];
-
- $upper = [];
- $lower = [];
-
- $lineNum = 0;
- while ( false !== ( $line = fgets( $file ) ) ) {
- ++$lineNum;
-
- # Strip comments
- $line = trim( substr( $line, 0, strcspn( $line, '#' ) ) );
- if ( $line === '' ) {
- continue;
- }
-
- # Split fields
- $numberedData = explode( ';', $line );
- $data = [];
- foreach ( $fieldNames as $number => $name ) {
- $data[$name] = $numberedData[$number];
- }
-
- $source = UtfNormal\Utils::hexSequenceToUtf8( $data['Code'] );
- if ( $data['Simple_Uppercase_Mapping'] ) {
- $upper[$source] = UtfNormal\Utils::hexSequenceToUtf8( $data['Simple_Uppercase_Mapping'] );
- }
- if ( $data['Simple_Lowercase_Mapping'] ) {
- $lower[$source] = UtfNormal\Utils::hexSequenceToUtf8( $data['Simple_Lowercase_Mapping'] );
- }
- }
-
- global $IP;
- file_put_contents( "$IP/serialized/Utf8Case.ser", serialize( [
- 'wikiUpperChars' => $upper,
- 'wikiLowerChars' => $lower,
- ] ) );
- }
-}
-
-$maintClass = 'GenerateUtf8Case';
-require_once RUN_MAINTENANCE_IF_MAIN;
diff --git a/maintenance/language/zhtable/Makefile.py b/maintenance/language/zhtable/Makefile.py
index 15a1cb9d0f..abe08e4bf3 100755
--- a/maintenance/language/zhtable/Makefile.py
+++ b/maintenance/language/zhtable/Makefile.py
@@ -248,7 +248,8 @@ def translate(text, conv_table):
def manualWordsTable(path, conv_table, reconv_table):
fp = open(path, 'r', encoding='U8')
- reconv_table = {}
+ reconv_table = reconv_table.copy()
+ out_table = {}
wordlist = [line.split('#')[0].strip() for line in fp]
wordlist = list(set(wordlist))
wordlist.sort(key=lambda w: (len(w), w), reverse=True)
@@ -257,9 +258,9 @@ def manualWordsTable(path, conv_table, reconv_table):
new_word = translate(word, conv_table)
rcv_word = translate(word, reconv_table)
if word != rcv_word:
- reconv_table[word] = word
- reconv_table[new_word] = word
- return reconv_table
+ reconv_table[word] = out_table[word] = word
+ reconv_table[new_word] = out_table[new_word] = word
+ return out_table
def defaultWordsTable(src_wordlist, src_tomany, char_conv_table,
diff --git a/maintenance/mctest.php b/maintenance/mctest.php
index c4dfd8f5e6..60f94a5fa6 100644
--- a/maintenance/mctest.php
+++ b/maintenance/mctest.php
@@ -70,7 +70,7 @@ class McTest extends Maintenance {
$server # output channel
);
- $mcc = new MemCachedClientforWiki( [
+ $mcc = new MemcachedClient( [
'persistant' => true,
'timeout' => $wgMemCachedTimeout
] );
diff --git a/maintenance/moveBatch.php b/maintenance/moveBatch.php
index 3a1a72c81d..3c2968988a 100644
--- a/maintenance/moveBatch.php
+++ b/maintenance/moveBatch.php
@@ -110,7 +110,7 @@ class MoveBatch extends Maintenance {
$mp = new MovePage( $source, $dest );
$status = $mp->move( $wgUser, $reason, !$noredirects );
if ( !$status->isOK() ) {
- $this->output( "\nFAILED: " . $status->getWikiText() );
+ $this->output( "\nFAILED: " . $status->getWikiText( false, false, 'en' ) );
}
$this->commitTransaction( $dbw, __METHOD__ );
$this->output( "\n" );
diff --git a/maintenance/namespaceDupes.php b/maintenance/namespaceDupes.php
index 55f361c941..8fd25a6786 100644
--- a/maintenance/namespaceDupes.php
+++ b/maintenance/namespaceDupes.php
@@ -24,6 +24,8 @@
* @ingroup Maintenance
*/
+use MediaWiki\Linker\LinkTarget;
+
require_once __DIR__ . '/Maintenance.php';
/**
diff --git a/maintenance/rebuildLocalisationCache.php b/maintenance/rebuildLocalisationCache.php
index 68b6ea311d..b9c797d107 100644
--- a/maintenance/rebuildLocalisationCache.php
+++ b/maintenance/rebuildLocalisationCache.php
@@ -114,6 +114,7 @@ class RebuildLocalisationCache extends Maintenance {
// Child, reseed because there is no bug in PHP:
// http://bugs.php.net/bug.php?id=42465
mt_srand( getmypid() );
+
$this->doRebuild( $codes, $lc, $force );
exit( 0 );
} elseif ( $pid === -1 ) {
diff --git a/maintenance/rebuildSitesCache.php b/maintenance/rebuildSitesCache.php
index 044bafd431..230e86d48a 100644
--- a/maintenance/rebuildSitesCache.php
+++ b/maintenance/rebuildSitesCache.php
@@ -38,7 +38,7 @@ class RebuildSitesCache extends Maintenance {
public function execute() {
$sitesCacheFileBuilder = new SitesCacheFileBuilder(
- new DBSiteStore(),
+ \MediaWiki\MediaWikiServices::getInstance()->getSiteLookup(),
$this->getCacheFile()
);
diff --git a/maintenance/rebuildrecentchanges.php b/maintenance/rebuildrecentchanges.php
index b50825a973..6465bb32fa 100644
--- a/maintenance/rebuildrecentchanges.php
+++ b/maintenance/rebuildrecentchanges.php
@@ -31,18 +31,46 @@ require_once __DIR__ . '/Maintenance.php';
* @ingroup Maintenance
*/
class RebuildRecentchanges extends Maintenance {
+ /** @var integer UNIX timestamp */
+ private $cutoffFrom;
+ /** @var integer UNIX timestamp */
+ private $cutoffTo;
+
public function __construct() {
parent::__construct();
$this->addDescription( 'Rebuild recent changes' );
+
+ $this->addOption(
+ 'from',
+ "Only rebuild rows in requested time range (in YYYYMMDDHHMMSS format)",
+ false,
+ true
+ );
+ $this->addOption(
+ 'to',
+ "Only rebuild rows in requested time range (in YYYYMMDDHHMMSS format)",
+ false,
+ true
+ );
+ $this->setBatchSize( 200 );
}
public function execute() {
+ if (
+ ( $this->hasOption( 'from' ) && !$this->hasOption( 'to' ) ) ||
+ ( !$this->hasOption( 'from' ) && $this->hasOption( 'to' ) )
+ ) {
+ $this->error( "Both 'from' and 'to' must be given, or neither", 1 );
+ }
+
$this->rebuildRecentChangesTablePass1();
$this->rebuildRecentChangesTablePass2();
$this->rebuildRecentChangesTablePass3();
$this->rebuildRecentChangesTablePass4();
$this->rebuildRecentChangesTablePass5();
- $this->purgeFeeds();
+ if ( !( $this->hasOption( 'from' ) && $this->hasOption( 'to' ) ) ) {
+ $this->purgeFeeds();
+ }
$this->output( "Done.\n" );
}
@@ -52,51 +80,93 @@ class RebuildRecentchanges extends Maintenance {
private function rebuildRecentChangesTablePass1() {
$dbw = $this->getDB( DB_MASTER );
- $dbw->delete( 'recentchanges', '*' );
+ if ( $this->hasOption( 'from' ) && $this->hasOption( 'to' ) ) {
+ $this->cutoffFrom = wfTimestamp( TS_UNIX, $this->getOption( 'from' ) );
+ $this->cutoffTo = wfTimestamp( TS_UNIX, $this->getOption( 'to' ) );
- $this->output( "Loading from page and revision tables...\n" );
+ $sec = $this->cutoffTo - $this->cutoffFrom;
+ $days = $sec / 24 / 3600;
+ $this->output( "Rebuilding range of $sec seconds ($days days)\n" );
+ } else {
+ global $wgRCMaxAge;
- global $wgRCMaxAge;
+ $days = $wgRCMaxAge / 24 / 3600;
+ $this->output( "Rebuilding \$wgRCMaxAge=$wgRCMaxAge seconds ($days days)\n" );
- $this->output( '$wgRCMaxAge=' . $wgRCMaxAge );
- $days = $wgRCMaxAge / 24 / 3600;
- if ( intval( $days ) == $days ) {
- $this->output( " (" . $days . " days)\n" );
- } else {
- $this->output( " (approx. " . intval( $days ) . " days)\n" );
+ $this->cutoffFrom = time() - $wgRCMaxAge;
+ $this->cutoffTo = time();
+ }
+
+ $this->output( "Clearing recentchanges table for time range...\n" );
+ $rcids = $dbw->selectFieldValues(
+ 'recentchanges',
+ 'rc_id',
+ [
+ 'rc_timestamp > ' . $dbw->addQuotes( $dbw->timestamp( $this->cutoffFrom ) ),
+ 'rc_timestamp < ' . $dbw->addQuotes( $dbw->timestamp( $this->cutoffTo ) )
+ ]
+ );
+ foreach ( array_chunk( $rcids, $this->mBatchSize ) as $rcidBatch ) {
+ $dbw->delete( 'recentchanges', [ 'rc_id' => $rcidBatch ], __METHOD__ );
+ wfGetLBFactory()->waitForReplication();
}
- $cutoff = time() - $wgRCMaxAge;
- $dbw->insertSelect( 'recentchanges', [ 'page', 'revision' ],
+ $this->output( "Loading from page and revision tables...\n" );
+ $res = $dbw->select(
+ [ 'page', 'revision' ],
[
- 'rc_timestamp' => 'rev_timestamp',
- 'rc_user' => 'rev_user',
- 'rc_user_text' => 'rev_user_text',
- 'rc_namespace' => 'page_namespace',
- 'rc_title' => 'page_title',
- 'rc_comment' => 'rev_comment',
- 'rc_minor' => 'rev_minor_edit',
- 'rc_bot' => 0,
- 'rc_new' => 'page_is_new',
- 'rc_cur_id' => 'page_id',
- 'rc_this_oldid' => 'rev_id',
- 'rc_last_oldid' => 0, // is this ok?
- 'rc_type' => $dbw->conditional( 'page_is_new != 0', RC_NEW, RC_EDIT ),
- 'rc_source' => $dbw->conditional(
- 'page_is_new != 0',
- $dbw->addQuotes( RecentChange::SRC_NEW ),
- $dbw->addQuotes( RecentChange::SRC_EDIT )
- ),
- 'rc_deleted' => 'rev_deleted'
+ 'rev_timestamp',
+ 'rev_user',
+ 'rev_user_text',
+ 'rev_comment',
+ 'rev_minor_edit',
+ 'rev_id',
+ 'rev_deleted',
+ 'page_namespace',
+ 'page_title',
+ 'page_is_new',
+ 'page_id'
],
[
- 'rev_timestamp > ' . $dbw->addQuotes( $dbw->timestamp( $cutoff ) ),
+ 'rev_timestamp > ' . $dbw->addQuotes( $dbw->timestamp( $this->cutoffFrom ) ),
+ 'rev_timestamp < ' . $dbw->addQuotes( $dbw->timestamp( $this->cutoffTo ) ),
'rev_page=page_id'
],
__METHOD__,
- [], // INSERT options
- [ 'ORDER BY' => 'rev_timestamp DESC', 'LIMIT' => 5000 ] // SELECT options
+ [ 'ORDER BY' => 'rev_timestamp DESC' ]
);
+
+ $this->output( "Inserting from page and revision tables...\n" );
+ $inserted = 0;
+ foreach ( $res as $row ) {
+ $dbw->insert(
+ 'recentchanges',
+ [
+ 'rc_timestamp' => $row->rev_timestamp,
+ 'rc_user' => $row->rev_user,
+ 'rc_user_text' => $row->rev_user_text,
+ 'rc_namespace' => $row->page_namespace,
+ 'rc_title' => $row->page_title,
+ 'rc_comment' => $row->rev_comment,
+ 'rc_minor' => $row->rev_minor_edit,
+ 'rc_bot' => 0,
+ 'rc_new' => $row->page_is_new,
+ 'rc_cur_id' => $row->page_id,
+ 'rc_this_oldid' => $row->rev_id,
+ 'rc_last_oldid' => 0, // is this ok?
+ 'rc_type' => $row->page_is_new ? RC_NEW : RC_EDIT,
+ 'rc_source' => $row->page_is_new
+ ? $dbw->addQuotes( RecentChange::SRC_NEW )
+ : $dbw->addQuotes( RecentChange::SRC_EDIT )
+ ,
+ 'rc_deleted' => $row->rev_deleted
+ ],
+ __METHOD__
+ );
+ if ( ( ++$inserted % $this->mBatchSize ) == 0 ) {
+ wfGetLBFactory()->waitForReplication();
+ }
+ }
}
/**
@@ -105,29 +175,40 @@ class RebuildRecentchanges extends Maintenance {
*/
private function rebuildRecentChangesTablePass2() {
$dbw = $this->getDB( DB_MASTER );
- list( $recentchanges, $revision ) = $dbw->tableNamesN( 'recentchanges', 'revision' );
$this->output( "Updating links and size differences...\n" );
# Fill in the rc_last_oldid field, which points to the previous edit
- $sql = "SELECT rc_cur_id,rc_this_oldid,rc_timestamp FROM $recentchanges " .
- "ORDER BY rc_cur_id,rc_timestamp";
- $res = $dbw->query( $sql, DB_MASTER );
+ $res = $dbw->select(
+ 'recentchanges',
+ [ 'rc_cur_id', 'rc_this_oldid', 'rc_timestamp' ],
+ [
+ "rc_timestamp > " . $dbw->addQuotes( $dbw->timestamp( $this->cutoffFrom ) ),
+ "rc_timestamp < " . $dbw->addQuotes( $dbw->timestamp( $this->cutoffTo ) )
+ ],
+ __METHOD__,
+ [ 'ORDER BY' => 'rc_cur_id,rc_timestamp' ]
+ );
$lastCurId = 0;
$lastOldId = 0;
+ $lastSize = null;
+ $updated = 0;
foreach ( $res as $obj ) {
$new = 0;
+
if ( $obj->rc_cur_id != $lastCurId ) {
# Switch! Look up the previous last edit, if any
$lastCurId = intval( $obj->rc_cur_id );
$emit = $obj->rc_timestamp;
- $sql2 = "SELECT rev_id,rev_len FROM $revision " .
- "WHERE rev_page={$lastCurId} " .
- "AND rev_timestamp<'{$emit}' ORDER BY rev_timestamp DESC";
- $sql2 = $dbw->limitResult( $sql2, 1, false );
- $res2 = $dbw->query( $sql2 );
- $row = $dbw->fetchObject( $res2 );
+
+ $row = $dbw->selectRow(
+ 'revision',
+ [ 'rev_id', 'rev_len' ],
+ [ 'rev_page' => $lastCurId, "rev_timestamp < " . $dbw->addQuotes( $emit ) ],
+ __METHOD__,
+ [ 'ORDER BY' => 'rev_timestamp DESC' ]
+ );
if ( $row ) {
$lastOldId = intval( $row->rev_id );
# Grab the last text size if available
@@ -139,29 +220,44 @@ class RebuildRecentchanges extends Maintenance {
$new = 1; // probably true
}
}
+
if ( $lastCurId == 0 ) {
$this->output( "Uhhh, something wrong? No curid\n" );
} else {
# Grab the entry's text size
- $size = $dbw->selectField( 'revision', 'rev_len', [ 'rev_id' => $obj->rc_this_oldid ] );
+ $size = (int)$dbw->selectField(
+ 'revision',
+ 'rev_len',
+ [ 'rev_id' => $obj->rc_this_oldid ],
+ __METHOD__
+ );
- $dbw->update( 'recentchanges',
+ $dbw->update(
+ 'recentchanges',
[
'rc_last_oldid' => $lastOldId,
'rc_new' => $new,
- 'rc_type' => $new,
- 'rc_source' => $new === 1 ? RecentChange::SRC_NEW : RecentChange::SRC_EDIT,
+ 'rc_type' => $new ? RC_NEW : RC_EDIT,
+ 'rc_source' => $new === 1
+ ? $dbw->addQuotes( RecentChange::SRC_NEW )
+ : $dbw->addQuotes( RecentChange::SRC_EDIT ),
'rc_old_len' => $lastSize,
'rc_new_len' => $size,
- ], [
+ ],
+ [
'rc_cur_id' => $lastCurId,
'rc_this_oldid' => $obj->rc_this_oldid,
+ 'rc_timestamp' => $obj->rc_timestamp // index usage
],
__METHOD__
);
$lastOldId = intval( $obj->rc_this_oldid );
$lastSize = $size;
+
+ if ( ( ++$updated % $this->mBatchSize ) == 0 ) {
+ wfGetLBFactory()->waitForReplication();
+ }
}
}
}
@@ -170,94 +266,141 @@ class RebuildRecentchanges extends Maintenance {
* Rebuild pass 3: Insert `recentchanges` entries for action logs.
*/
private function rebuildRecentChangesTablePass3() {
+ global $wgLogTypes, $wgLogRestrictions;
+
$dbw = $this->getDB( DB_MASTER );
$this->output( "Loading from user, page, and logging tables...\n" );
- global $wgRCMaxAge, $wgLogTypes, $wgLogRestrictions;
- // Some logs don't go in RC. This should check for that
- $basicRCLogs = array_diff( $wgLogTypes, array_keys( $wgLogRestrictions ) );
-
- $cutoff = time() - $wgRCMaxAge;
- list( $logging, $page ) = $dbw->tableNamesN( 'logging', 'page' );
- $dbw->insertSelect(
- 'recentchanges',
- [
- 'user',
- "$logging LEFT JOIN $page ON (log_namespace=page_namespace AND log_title=page_title)"
- ],
+ $res = $dbw->select(
+ [ 'user', 'logging', 'page' ],
[
- 'rc_timestamp' => 'log_timestamp',
- 'rc_user' => 'log_user',
- 'rc_user_text' => 'user_name',
- 'rc_namespace' => 'log_namespace',
- 'rc_title' => 'log_title',
- 'rc_comment' => 'log_comment',
- 'rc_minor' => 0,
- 'rc_bot' => 0,
- 'rc_patrolled' => 1,
- 'rc_new' => 0,
- 'rc_this_oldid' => 0,
- 'rc_last_oldid' => 0,
- 'rc_type' => RC_LOG,
- 'rc_source' => $dbw->addQuotes( RecentChange::SRC_LOG ),
- 'rc_cur_id' => $dbw->cascadingDeletes() ? 'page_id' : 'COALESCE(page_id, 0)',
- 'rc_log_type' => 'log_type',
- 'rc_log_action' => 'log_action',
- 'rc_logid' => 'log_id',
- 'rc_params' => 'log_params',
- 'rc_deleted' => 'log_deleted'
+ 'log_timestamp',
+ 'log_user',
+ 'user_name',
+ 'log_namespace',
+ 'log_title',
+ 'log_comment',
+ 'page_id',
+ 'log_type',
+ 'log_action',
+ 'log_id',
+ 'log_params',
+ 'log_deleted'
],
[
- 'log_timestamp > ' . $dbw->addQuotes( $dbw->timestamp( $cutoff ) ),
+ 'log_timestamp > ' . $dbw->addQuotes( $dbw->timestamp( $this->cutoffFrom ) ),
+ 'log_timestamp < ' . $dbw->addQuotes( $dbw->timestamp( $this->cutoffTo ) ),
'log_user=user_id',
- 'log_type' => $basicRCLogs,
+ // Some logs don't go in RC since they are private.
+ // @FIXME: core/extensions also have spammy logs that don't go in RC.
+ 'log_type' => array_diff( $wgLogTypes, array_keys( $wgLogRestrictions ) ),
],
__METHOD__,
- [], // INSERT options
- [ 'ORDER BY' => 'log_timestamp DESC', 'LIMIT' => 5000 ] // SELECT options
+ [ 'ORDER BY' => 'log_timestamp DESC' ],
+ [
+ 'page' =>
+ [ 'LEFT JOIN', [ 'log_namespace=page_namespace', 'log_title=page_title' ] ]
+ ]
);
+
+ $inserted = 0;
+ foreach ( $res as $row ) {
+ $dbw->insert(
+ 'recentchanges',
+ [
+ 'rc_timestamp' => $row->log_timestamp,
+ 'rc_user' => $row->log_user,
+ 'rc_user_text' => $row->user_name,
+ 'rc_namespace' => $row->log_namespace,
+ 'rc_title' => $row->log_title,
+ 'rc_comment' => $row->log_comment,
+ 'rc_minor' => 0,
+ 'rc_bot' => 0,
+ 'rc_patrolled' => 1,
+ 'rc_new' => 0,
+ 'rc_this_oldid' => 0,
+ 'rc_last_oldid' => 0,
+ 'rc_type' => RC_LOG,
+ 'rc_source' => $dbw->addQuotes( RecentChange::SRC_LOG ),
+ 'rc_cur_id' => $dbw->cascadingDeletes()
+ ? $row->page_id
+ : (int)$row->page_id, // NULL => 0,
+ 'rc_log_type' => $row->log_type,
+ 'rc_log_action' => $row->log_action,
+ 'rc_logid' => $row->log_id,
+ 'rc_params' => $row->log_params,
+ 'rc_deleted' => $row->log_deleted
+ ],
+ __METHOD__
+ );
+
+ if ( ( ++$inserted % $this->mBatchSize ) == 0 ) {
+ wfGetLBFactory()->waitForReplication();
+ }
+ }
}
/**
* Rebuild pass 4: Mark bot and autopatrolled entries.
*/
private function rebuildRecentChangesTablePass4() {
- global $wgUseRCPatrol;
+ global $wgUseRCPatrol, $wgMiserMode;
$dbw = $this->getDB( DB_MASTER );
list( $recentchanges, $usergroups, $user ) =
$dbw->tableNamesN( 'recentchanges', 'user_groups', 'user' );
- $botgroups = User::getGroupsWithPermission( 'bot' );
+ # @FIXME: recognize other bot account groups (not the same as users with 'bot' rights)
+ # @NOTE: users with 'bot' rights choose when edits are bot edits or not. That information
+ # may be lost at this point (aside from joining on the patrol log table entries).
+ $botgroups = [ 'bot' ];
$autopatrolgroups = $wgUseRCPatrol ? User::getGroupsWithPermission( 'autopatrol' ) : [];
+
# Flag our recent bot edits
- if ( !empty( $botgroups ) ) {
+ if ( $botgroups ) {
$botwhere = $dbw->makeList( $botgroups );
- $botusers = [];
$this->output( "Flagging bot account edits...\n" );
# Find all users that are bots
$sql = "SELECT DISTINCT user_name FROM $usergroups, $user " .
"WHERE ug_group IN($botwhere) AND user_id = ug_user";
- $res = $dbw->query( $sql, DB_MASTER );
+ $res = $dbw->query( $sql, __METHOD__ );
+ $botusers = [];
foreach ( $res as $obj ) {
- $botusers[] = $dbw->addQuotes( $obj->user_name );
+ $botusers[] = $obj->user_name;
}
+
# Fill in the rc_bot field
- if ( !empty( $botusers ) ) {
- $botwhere = implode( ',', $botusers );
- $sql2 = "UPDATE $recentchanges SET rc_bot=1 " .
- "WHERE rc_user_text IN($botwhere)";
- $dbw->query( $sql2 );
+ if ( $botusers ) {
+ $rcids = $dbw->selectFieldValues(
+ 'recentchanges',
+ 'rc_id',
+ [
+ 'rc_user_text' => $botusers,
+ "rc_timestamp > " . $dbw->addQuotes( $dbw->timestamp( $this->cutoffFrom ) ),
+ "rc_timestamp < " . $dbw->addQuotes( $dbw->timestamp( $this->cutoffTo ) )
+ ],
+ __METHOD__
+ );
+
+ foreach ( array_chunk( $rcids, $this->mBatchSize ) as $rcidBatch ) {
+ $dbw->update(
+ 'recentchanges',
+ [ 'rc_bot' => 1 ],
+ [ 'rc_id' => $rcidBatch ],
+ __METHOD__
+ );
+ wfGetLBFactory()->waitForReplication();
+ }
}
}
- global $wgMiserMode;
+
# Flag our recent autopatrolled edits
- if ( !$wgMiserMode && !empty( $autopatrolgroups ) ) {
+ if ( !$wgMiserMode && $autopatrolgroups ) {
$patrolwhere = $dbw->makeList( $autopatrolgroups );
$patrolusers = [];
@@ -266,17 +409,19 @@ class RebuildRecentchanges extends Maintenance {
# Find all users in RC with autopatrol rights
$sql = "SELECT DISTINCT user_name FROM $usergroups, $user " .
"WHERE ug_group IN($patrolwhere) AND user_id = ug_user";
- $res = $dbw->query( $sql, DB_MASTER );
+ $res = $dbw->query( $sql, __METHOD__ );
foreach ( $res as $obj ) {
$patrolusers[] = $dbw->addQuotes( $obj->user_name );
}
# Fill in the rc_patrolled field
- if ( !empty( $patrolusers ) ) {
+ if ( $patrolusers ) {
$patrolwhere = implode( ',', $patrolusers );
$sql2 = "UPDATE $recentchanges SET rc_patrolled=1 " .
- "WHERE rc_user_text IN($patrolwhere)";
+ "WHERE rc_user_text IN($patrolwhere) " .
+ "AND rc_timestamp > " . $dbw->addQuotes( $dbw->timestamp( $this->cutoffFrom ) ) . ' ' .
+ "AND rc_timestamp < " . $dbw->addQuotes( $dbw->timestamp( $this->cutoffTo ) );
$dbw->query( $sql2 );
}
}
@@ -298,9 +443,13 @@ class RebuildRecentchanges extends Maintenance {
'ls_log_id = log_id',
'ls_field' => 'associated_rev_id',
'log_type' => 'upload',
+ 'log_timestamp > ' . $dbw->addQuotes( $dbw->timestamp( $this->cutoffFrom ) ),
+ 'log_timestamp < ' . $dbw->addQuotes( $dbw->timestamp( $this->cutoffTo ) ),
],
__METHOD__
);
+
+ $updates = 0;
foreach ( $res as $obj ) {
$rev_id = $obj->ls_value;
$log_id = $obj->ls_log_id;
@@ -319,6 +468,10 @@ class RebuildRecentchanges extends Maintenance {
/*WHERE*/ [ 'rc_this_oldid' => $rev_id, 'rc_logid' => 0 ],
__METHOD__
);
+
+ if ( ( ++$updates % $this->mBatchSize ) == 0 ) {
+ wfGetLBFactory()->waitForReplication();
+ }
}
}
diff --git a/maintenance/refreshImageMetadata.php b/maintenance/refreshImageMetadata.php
index 88767de2d1..bdbb347899 100644
--- a/maintenance/refreshImageMetadata.php
+++ b/maintenance/refreshImageMetadata.php
@@ -68,9 +68,16 @@ class RefreshImageMetadata extends Maintenance {
$this->addOption( 'start', 'Name of file to start with', false, true );
$this->addOption( 'end', 'Name of file to end with', false, true );
+ $this->addOption(
+ 'mediatype',
+ 'Only refresh files with this media type, e.g. BITMAP, UNKNOWN etc.',
+ false,
+ true
+ );
$this->addOption(
'mime',
- '(Inefficient!) Only refresh files with this MIME type. Can accept wild-card image/*',
+ "Only refresh files with this MIME type. Can accept wild-card 'image/*'. "
+ . "Potentially inefficient unless 'mediatype' is also specified",
false,
true
);
@@ -197,6 +204,7 @@ class RefreshImageMetadata extends Maintenance {
$end = $this->getOption( 'end', false );
$mime = $this->getOption( 'mime', false );
+ $mediatype = $this->getOption( 'mediatype', false );
$like = $this->getOption( 'metadata-contains', false );
if ( $end !== false ) {
@@ -209,6 +217,9 @@ class RefreshImageMetadata extends Maintenance {
$conds['img_minor_mime'] = $minor;
}
}
+ if ( $mediatype !== false ) {
+ $conds['img_media_type'] = $mediatype;
+ }
if ( $like ) {
$conds[] = 'img_metadata ' . $dbw->buildLike( $dbw->anyString(), $like, $dbw->anyString() );
}
diff --git a/maintenance/update.php b/maintenance/update.php
index 43b10c858b..775fa7bed4 100755
--- a/maintenance/update.php
+++ b/maintenance/update.php
@@ -83,6 +83,13 @@ class UpdateMediaWiki extends Maintenance {
"ABORTING (see https://bugs.php.net/bug.php?id=45996).\n",
true );
}
+
+ if ( !function_exists( 'mb_strlen' ) ) {
+ $this->error(
+ "MediaWiki now requires the mbstring PHP extension, your system doesn't have it.\n"
+ . "ABORTING.\n",
+ true );
+ }
}
function execute() {
diff --git a/maintenance/updateCollation.php b/maintenance/updateCollation.php
index 186feb222f..6d9a616077 100644
--- a/maintenance/updateCollation.php
+++ b/maintenance/updateCollation.php
@@ -51,7 +51,7 @@ TEXT
);
$this->addOption( 'force', 'Run on all rows, even if the collation is ' .
- 'supposed to be up-to-date.' );
+ 'supposed to be up-to-date.', false, false, 'f' );
$this->addOption( 'previous-collation', 'Set the previous value of ' .
'$wgCategoryCollation here to speed up this script, especially if your ' .
'categorylinks table is large. This will only update rows with that ' .
diff --git a/package.json b/package.json
index 9ea6c7b292..394f36ef18 100644
--- a/package.json
+++ b/package.json
@@ -6,9 +6,8 @@
"postdoc": "grunt copy:jsduck"
},
"devDependencies": {
- "grunt": "0.4.5",
- "grunt-cli": "0.1.13",
- "grunt-banana-checker": "0.4.0",
+ "grunt": "1.0.1",
+ "grunt-banana-checker": "0.5.0",
"grunt-contrib-copy": "1.0.0",
"grunt-contrib-jshint": "1.0.0",
"grunt-contrib-watch": "1.0.0",
diff --git a/resources/Resources.php b/resources/Resources.php
index 07cd7b5328..cb7adbe4d9 100644
--- a/resources/Resources.php
+++ b/resources/Resources.php
@@ -436,6 +436,8 @@ return [
'ca' => 'resources/lib/jquery.ui/i18n/jquery.ui.datepicker-ca.js',
'cs' => 'resources/lib/jquery.ui/i18n/jquery.ui.datepicker-cs.js',
'da' => 'resources/lib/jquery.ui/i18n/jquery.ui.datepicker-da.js',
+ 'de-at' => 'resources/lib/jquery.ui/i18n/jquery.ui.datepicker-de-AT.js',
+ 'de-ch' => 'resources/lib/jquery.ui/i18n/jquery.ui.datepicker-de-CH.js',
'de' => 'resources/lib/jquery.ui/i18n/jquery.ui.datepicker-de.js',
'el' => 'resources/lib/jquery.ui/i18n/jquery.ui.datepicker-el.js',
'en-au' => 'resources/lib/jquery.ui/i18n/jquery.ui.datepicker-en-AU.js',
@@ -482,8 +484,8 @@ return [
'sk' => 'resources/lib/jquery.ui/i18n/jquery.ui.datepicker-sk.js',
'sl' => 'resources/lib/jquery.ui/i18n/jquery.ui.datepicker-sl.js',
'sq' => 'resources/lib/jquery.ui/i18n/jquery.ui.datepicker-sq.js',
- 'sr-sr' => 'resources/lib/jquery.ui/i18n/jquery.ui.datepicker-sr-SR.js',
- 'sr' => 'resources/lib/jquery.ui/i18n/jquery.ui.datepicker-sr.js',
+ 'sr-ec' => 'resources/lib/jquery.ui/i18n/jquery.ui.datepicker-sr.js',
+ 'sr-el' => 'resources/lib/jquery.ui/i18n/jquery.ui.datepicker-sr-SR.js',
'sv' => 'resources/lib/jquery.ui/i18n/jquery.ui.datepicker-sv.js',
'ta' => 'resources/lib/jquery.ui/i18n/jquery.ui.datepicker-ta.js',
'th' => 'resources/lib/jquery.ui/i18n/jquery.ui.datepicker-th.js',
@@ -732,6 +734,7 @@ return [
'moment' => [
'scripts' => [
'resources/lib/moment/moment.js',
+ 'resources/src/moment-global.js',
'resources/src/moment-local-dmy.js',
],
'languageScripts' => [
@@ -797,8 +800,8 @@ return [
'sk' => 'resources/lib/moment/locale/sk.js',
'sl' => 'resources/lib/moment/locale/sl.js',
'sq' => 'resources/lib/moment/locale/sq.js',
- 'sr' => 'resources/lib/moment/locale/sr.js',
'sr-ec' => 'resources/lib/moment/locale/sr-cyrl.js',
+ 'sr-el' => 'resources/lib/moment/locale/sr.js',
'sv' => 'resources/lib/moment/locale/sv.js',
'ta' => 'resources/lib/moment/locale/ta.js',
'th' => 'resources/lib/moment/locale/th.js',
@@ -811,6 +814,8 @@ return [
'vi' => 'resources/lib/moment/locale/vi.js',
'zh-cn' => 'resources/lib/moment/locale/zh-cn.js',
'zh-tw' => 'resources/lib/moment/locale/zh-tw.js',
+ 'zh-hans' => 'resources/lib/moment/locale/zh-cn.js',
+ 'zh-hant' => 'resources/lib/moment/locale/zh-tw.js',
],
'targets' => [ 'desktop', 'mobile' ],
],
@@ -1196,6 +1201,7 @@ return [
'mediawiki.user',
'mediawiki.Upload',
'mediawiki.jqueryMsg',
+ 'mediawiki.widgets.StashedFileWidget'
],
'messages' => [
'upload-form-label-infoform-title',
@@ -1251,11 +1257,13 @@ return [
'api-error-unknown-error',
'api-error-uploaddisabled',
'api-error-verification-error',
+ 'api-error-was-deleted',
'fileexists',
'filepageexists',
'filename-bad-prefix',
'filename-thumb-name',
'badfilename',
+ 'protectedpagetext',
'api-error-blacklisted', // HACK
],
],
@@ -1676,7 +1684,6 @@ return [
'mediawiki.page.image.pagination' => [
'scripts' => 'resources/src/mediawiki/page/image-pagination.js',
'dependencies' => [
- 'mediawiki.Uri',
'mediawiki.util',
'jquery.spinner',
],
@@ -1847,6 +1854,7 @@ return [
'position' => 'top',
'scripts' => 'resources/src/mediawiki.special/mediawiki.special.search.js',
'styles' => 'resources/src/mediawiki.special/mediawiki.special.search.css',
+ 'dependencies' => 'mediawiki.widgets.SearchInputWidget',
'messages' => [
'powersearch-togglelabel',
'powersearch-toggleall',
@@ -2236,7 +2244,19 @@ return [
'position' => 'top',
'targets' => [ 'desktop', 'mobile' ],
],
-
+ 'mediawiki.widgets.StashedFileWidget' => [
+ 'scripts' => [
+ 'resources/src/mediawiki.widgets/mw.widgets.StashedFileWidget.js',
+ ],
+ 'skinStyles' => [
+ 'default' => [
+ 'resources/src/mediawiki.widgets/mw.widgets.StashedFileWidget.less',
+ ],
+ ],
+ 'dependencies' => [
+ 'oojs-ui-core',
+ ],
+ ],
/* es5-shim */
'es5-shim' => [
'scripts' => [
@@ -2259,6 +2279,7 @@ return [
'oojs' => [
'scripts' => [
'resources/lib/oojs/oojs.jquery.js',
+ 'resources/src/oojs-global.js',
],
'targets' => [ 'desktop', 'mobile' ],
'dependencies' => [
diff --git a/resources/lib/jquery.ui/i18n/jquery.ui.datepicker-de-AT.js b/resources/lib/jquery.ui/i18n/jquery.ui.datepicker-de-AT.js
new file mode 100644
index 0000000000..456c3a0552
--- /dev/null
+++ b/resources/lib/jquery.ui/i18n/jquery.ui.datepicker-de-AT.js
@@ -0,0 +1,22 @@
+/* Austrian German initialisation for the jQuery UI date picker plugin. */
+jQuery(function($){
+ $.datepicker.regional['de-AT'] = {
+ closeText: 'schlieÃen',
+ prevText: '<zurück',
+ nextText: 'Vor>',
+ currentText: 'heute',
+ monthNames: ['Jänner','Februar','März','April','Mai','Juni',
+ 'Juli','August','September','Oktober','November','Dezember'],
+ monthNamesShort: ['Jän','Feb','Mär','Apr','Mai','Jun',
+ 'Jul','Aug','Sep','Okt','Nov','Dez'],
+ dayNames: ['Sonntag','Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag'],
+ dayNamesShort: ['So','Mo','Di','Mi','Do','Fr','Sa'],
+ dayNamesMin: ['So','Mo','Di','Mi','Do','Fr','Sa'],
+ weekHeader: 'KW',
+ dateFormat: 'dd.mm.yy',
+ firstDay: 1,
+ isRTL: false,
+ showMonthAfterYear: false,
+ yearSuffix: ''};
+ $.datepicker.setDefaults($.datepicker.regional['de-AT']);
+});
diff --git a/resources/lib/jquery.ui/i18n/jquery.ui.datepicker-de-CH.js b/resources/lib/jquery.ui/i18n/jquery.ui.datepicker-de-CH.js
new file mode 100644
index 0000000000..60cbc29f37
--- /dev/null
+++ b/resources/lib/jquery.ui/i18n/jquery.ui.datepicker-de-CH.js
@@ -0,0 +1,22 @@
+/* Swiss Standard German initialisation for the jQuery UI date picker plugin. */
+jQuery(function($){
+ $.datepicker.regional['de-CH'] = {
+ closeText: 'schliessen',
+ prevText: '<zurück',
+ nextText: 'Vor>',
+ currentText: 'heute',
+ monthNames: ['Januar','Februar','März','April','Mai','Juni',
+ 'Juli','August','September','Oktober','November','Dezember'],
+ monthNamesShort: ['Jan','Feb','Mär','Apr','Mai','Jun',
+ 'Jul','Aug','Sep','Okt','Nov','Dez'],
+ dayNames: ['Sonntag','Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag'],
+ dayNamesShort: ['So','Mo','Di','Mi','Do','Fr','Sa'],
+ dayNamesMin: ['So','Mo','Di','Mi','Do','Fr','Sa'],
+ weekHeader: 'KW',
+ dateFormat: 'dd.mm.yy',
+ firstDay: 1,
+ isRTL: false,
+ showMonthAfterYear: false,
+ yearSuffix: ''};
+ $.datepicker.setDefaults($.datepicker.regional['de-CH']);
+});
diff --git a/resources/lib/oojs-ui/i18n/azb.json b/resources/lib/oojs-ui/i18n/azb.json
new file mode 100644
index 0000000000..313122ce89
--- /dev/null
+++ b/resources/lib/oojs-ui/i18n/azb.json
@@ -0,0 +1,11 @@
+{
+ "@metadata": {
+ "authors": [
+ "Sadiqr"
+ ]
+ },
+ "ooui-dialog-message-reject": "ÙازگئÚ",
+ "ooui-dialog-process-continue": "داÙاÙ
ائت",
+ "ooui-selectfile-button-select": "بÛر ÙاÛ٠سئÚ",
+ "ooui-selectfile-placeholder": "ÙØ¦Ú ÙاÛ٠سئÚÛÙÙ
ÙâÛÛب"
+}
diff --git a/resources/lib/oojs-ui/i18n/ka.json b/resources/lib/oojs-ui/i18n/ka.json
index ddfcac20c6..31df169249 100644
--- a/resources/lib/oojs-ui/i18n/ka.json
+++ b/resources/lib/oojs-ui/i18n/ka.json
@@ -17,7 +17,7 @@
"ooui-toolbar-more": "ááá¢á",
"ooui-toolgroup-expand": "ááá¢á",
"ooui-toolgroup-collapse": "á áááááááá",
- "ooui-dialog-message-accept": "ááá áá",
+ "ooui-dialog-message-accept": "áááá®",
"ooui-dialog-message-reject": "ááá£á¥áááá",
"ooui-dialog-process-error": "ááá®áá á áá¦á᪠á¨ááªáááá",
"ooui-dialog-process-dismiss": "ááááááá",
diff --git a/resources/lib/oojs-ui/i18n/khw.json b/resources/lib/oojs-ui/i18n/khw.json
new file mode 100644
index 0000000000..f0ce207318
--- /dev/null
+++ b/resources/lib/oojs-ui/i18n/khw.json
@@ -0,0 +1,12 @@
+{
+ "@metadata": {
+ "authors": [
+ "Rachitrali"
+ ]
+ },
+ "ooui-toolbar-more": "Ù
زÛد",
+ "ooui-toolgroup-expand": "Ù
زÛد",
+ "ooui-toolgroup-collapse": "Ø§Û Ú©Ù
ا",
+ "ooui-dialog-message-accept": "Ù¹Ú¾ÛÚ© Ø´Ûر",
+ "ooui-dialog-message-reject": "Ú©Ú¾ÛÙسÙ"
+}
diff --git a/resources/lib/oojs-ui/i18n/krc.json b/resources/lib/oojs-ui/i18n/krc.json
index d4068c87c9..6f17b34637 100644
--- a/resources/lib/oojs-ui/i18n/krc.json
+++ b/resources/lib/oojs-ui/i18n/krc.json
@@ -1,7 +1,8 @@
{
"@metadata": {
"authors": [
- "Iltever"
+ "Iltever",
+ "Ernác"
]
},
"ooui-outline-control-move-down": "ÐлеменÑни ÑÑбÑне кÑÑÑÑ",
diff --git a/resources/lib/oojs-ui/i18n/nan.json b/resources/lib/oojs-ui/i18n/nan.json
index 7fdf532cc3..d94118d7c4 100644
--- a/resources/lib/oojs-ui/i18n/nan.json
+++ b/resources/lib/oojs-ui/i18n/nan.json
@@ -4,6 +4,12 @@
"Luuva"
]
},
+ "ooui-outline-control-move-down": "HÄng-boÌk sóa Ä-té",
+ "ooui-outline-control-move-up": "HÄng-boÌk sóa téng-bÄ«n",
+ "ooui-outline-control-remove": "Sóa cháu hÄng-boÌk",
+ "ooui-toolbar-more": "Khah chÄ",
+ "ooui-toolgroup-expand": "Khah chÄ",
+ "ooui-toolgroup-collapse": "Khah kiám",
"ooui-dialog-message-accept": "Liáu-kái",
"ooui-dialog-message-reject": "Chhú-siau",
"ooui-dialog-process-error": "Ū miÌh bô hó-sè",
diff --git a/resources/lib/oojs-ui/i18n/zh-hant.json b/resources/lib/oojs-ui/i18n/zh-hant.json
index f70efe1960..027b7bee2d 100644
--- a/resources/lib/oojs-ui/i18n/zh-hant.json
+++ b/resources/lib/oojs-ui/i18n/zh-hant.json
@@ -32,6 +32,6 @@
"ooui-dialog-process-continue": "ç¹¼çº",
"ooui-selectfile-button-select": "é¸æä¸åæªæ¡",
"ooui-selectfile-not-supported": "ç¡æ³æ¯æ´æé¸æçæªæ¡",
- "ooui-selectfile-placeholder": "æªé¸ææªæ¡",
+ "ooui-selectfile-placeholder": "å°æªé¸ææªæ¡",
"ooui-selectfile-dragdrop-placeholder": "ææ³æªæ¡å°æ¤è"
}
diff --git a/resources/lib/oojs-ui/oojs-ui-apex.js b/resources/lib/oojs-ui/oojs-ui-apex.js
index 211101edcd..14508b6b93 100644
--- a/resources/lib/oojs-ui/oojs-ui-apex.js
+++ b/resources/lib/oojs-ui/oojs-ui-apex.js
@@ -1,12 +1,12 @@
/*!
- * OOjs UI v0.16.4
+ * OOjs UI v0.16.6
* https://www.mediawiki.org/wiki/OOjs_UI
*
* Copyright 2011â2016 OOjs UI Team and other contributors.
* Released under the MIT license
* http://oojs.mit-license.org
*
- * Date: 2016-03-22T22:48:21Z
+ * Date: 2016-04-19T21:57:49Z
*/
( function ( OO ) {
diff --git a/resources/lib/oojs-ui/oojs-ui-core-apex.css b/resources/lib/oojs-ui/oojs-ui-core-apex.css
index 865dda4651..1a241cb461 100644
--- a/resources/lib/oojs-ui/oojs-ui-core-apex.css
+++ b/resources/lib/oojs-ui/oojs-ui-core-apex.css
@@ -1,12 +1,12 @@
/*!
- * OOjs UI v0.16.4
+ * OOjs UI v0.16.6
* https://www.mediawiki.org/wiki/OOjs_UI
*
* Copyright 2011â2016 OOjs UI Team and other contributors.
* Released under the MIT license
* http://oojs.mit-license.org
*
- * Date: 2016-03-22T22:48:25Z
+ * Date: 2016-04-19T21:57:53Z
*/
.oo-ui-element-hidden {
display: none !important;
@@ -56,17 +56,11 @@
margin-left: 0;
}
.oo-ui-buttonElement.oo-ui-indicatorElement > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator {
- width: 0.9375em;
- height: 0.9375em;
margin: 0.46875em;
}
.oo-ui-buttonElement.oo-ui-iconElement > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator {
margin-left: 0.46875em;
}
-.oo-ui-buttonElement.oo-ui-iconElement > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon {
- width: 1.875em;
- height: 1.875em;
-}
.oo-ui-buttonElement-frameless > .oo-ui-buttonElement-button:hover,
.oo-ui-buttonElement-frameless > .oo-ui-buttonElement-button:focus {
outline: none;
@@ -244,6 +238,10 @@
background-size: contain;
background-position: center center;
background-repeat: no-repeat;
+ min-width: 24px;
+ width: 1.875em;
+ min-height: 24px;
+ height: 1.875em;
}
.oo-ui-iconElement .oo-ui-iconElement-icon,
.oo-ui-iconElement.oo-ui-iconElement-icon {
@@ -254,6 +252,10 @@
background-size: contain;
background-position: center center;
background-repeat: no-repeat;
+ min-width: 12px;
+ width: 0.9375em;
+ min-height: 12px;
+ height: 0.9375em;
}
.oo-ui-indicatorElement .oo-ui-indicatorElement-indicator,
.oo-ui-indicatorElement.oo-ui-indicatorElement-indicator {
@@ -417,8 +419,6 @@
.oo-ui-fieldsetLayout.oo-ui-iconElement > .oo-ui-iconElement-icon {
left: 0;
top: 0.25em;
- width: 1.875em;
- height: 1.875em;
}
.oo-ui-fieldsetLayout > .oo-ui-popupButtonWidget {
margin-right: 0;
@@ -516,20 +516,15 @@
height: 100%;
}
.oo-ui-decoratedOptionWidget.oo-ui-iconElement .oo-ui-iconElement-icon {
- width: 1.875em;
left: 0.5em;
}
.oo-ui-decoratedOptionWidget.oo-ui-indicatorElement .oo-ui-indicatorElement-indicator {
- width: 0.9375em;
right: 0.5em;
}
.oo-ui-decoratedOptionWidget.oo-ui-widget-disabled .oo-ui-iconElement-icon,
.oo-ui-decoratedOptionWidget.oo-ui-widget-disabled .oo-ui-indicatorElement-indicator {
opacity: 0.2;
}
-.oo-ui-radioSelectWidget {
- padding: 0.75em 0 0.5em 0;
-}
.oo-ui-radioOptionWidget {
cursor: default;
padding: 0;
@@ -559,8 +554,6 @@
display: inline-block;
vertical-align: middle;
line-height: 2.5em;
- height: 1.875em;
- width: 1.875em;
}
.oo-ui-iconWidget.oo-ui-widget-disabled {
opacity: 0.2;
@@ -569,8 +562,6 @@
display: inline-block;
vertical-align: middle;
line-height: 2.5em;
- height: 0.9375em;
- width: 0.9375em;
margin: 0.46875em;
}
.oo-ui-indicatorWidget.oo-ui-widget-disabled {
@@ -709,11 +700,11 @@
}
.oo-ui-popupButtonWidget.oo-ui-buttonElement-frameless > .oo-ui-popupWidget {
/* @noflip */
- left: 1em;
+ left: 0.9375em;
}
.oo-ui-popupButtonWidget.oo-ui-buttonElement-framed > .oo-ui-popupWidget {
/* @noflip */
- left: 1.25em;
+ left: 1.2375em;
}
.oo-ui-inputWidget {
margin-right: 0.5em;
@@ -746,7 +737,7 @@
}
.oo-ui-dropdownInputWidget select {
width: 100%;
- resize: none;
+ cursor: pointer;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
@@ -800,16 +791,16 @@
.oo-ui-textInputWidget textarea {
overflow: auto;
}
-.oo-ui-textInputWidget input[type="search"] {
- -webkit-appearance: texfield;
+.oo-ui-textInputWidget [type="search"] {
+ -webkit-appearance: textfield;
}
-.oo-ui-textInputWidget input[type="search"]::-ms-clear {
+.oo-ui-textInputWidget [type="search"]::-ms-clear {
display: none;
}
-.oo-ui-textInputWidget input[type="search"]::-webkit-search-decoration,
-.oo-ui-textInputWidget input[type="search"]::-webkit-search-cancel-button,
-.oo-ui-textInputWidget input[type="search"]::-webkit-search-results-button,
-.oo-ui-textInputWidget input[type="search"]::-webkit-search-results-decoration {
+.oo-ui-textInputWidget [type="search"]::-webkit-search-decoration,
+.oo-ui-textInputWidget [type="search"]::-webkit-search-cancel-button,
+.oo-ui-textInputWidget [type="search"]::-webkit-search-results-button,
+.oo-ui-textInputWidget [type="search"]::-webkit-search-results-decoration {
display: none;
}
.oo-ui-textInputWidget > .oo-ui-iconElement-icon,
@@ -839,22 +830,18 @@
.oo-ui-textInputWidget.oo-ui-labelElement > .oo-ui-labelElement-label {
display: block;
}
-.oo-ui-textInputWidget > .oo-ui-iconElement-icon {
+.oo-ui-textInputWidget > .oo-ui-iconElement-icon,
+.oo-ui-textInputWidget-labelPosition-before > .oo-ui-labelElement-label {
left: 0;
}
-.oo-ui-textInputWidget > .oo-ui-indicatorElement-indicator {
+.oo-ui-textInputWidget > .oo-ui-indicatorElement-indicator,
+.oo-ui-textInputWidget-labelPosition-after > .oo-ui-labelElement-label {
right: 0;
}
.oo-ui-textInputWidget > .oo-ui-labelElement-label {
position: absolute;
top: 0;
}
-.oo-ui-textInputWidget-labelPosition-after > .oo-ui-labelElement-label {
- right: 0;
-}
-.oo-ui-textInputWidget-labelPosition-before > .oo-ui-labelElement-label {
- left: 0;
-}
.oo-ui-textInputWidget input,
.oo-ui-textInputWidget textarea {
padding: 0.5em;
@@ -908,7 +895,6 @@
padding-left: 2.475em;
}
.oo-ui-textInputWidget.oo-ui-iconElement .oo-ui-iconElement-icon {
- width: 1.875em;
max-height: 2.375em;
margin-left: 0.3em;
}
@@ -917,7 +903,6 @@
padding-right: 2.4875em;
}
.oo-ui-textInputWidget.oo-ui-indicatorElement .oo-ui-indicatorElement-indicator {
- width: 0.9375em;
max-height: 2.375em;
margin-right: 0.775em;
}
@@ -1028,14 +1013,10 @@
}
.oo-ui-dropdownWidget-handle .oo-ui-indicatorElement-indicator {
top: 0;
- width: 0.9375em;
- height: 0.9375em;
margin: 0.775em;
}
.oo-ui-dropdownWidget-handle .oo-ui-iconElement-icon {
top: 0;
- width: 1.875em;
- height: 1.875em;
margin: 0.3em;
}
.oo-ui-dropdownWidget.oo-ui-widget-disabled .oo-ui-dropdownWidget-handle {
diff --git a/resources/lib/oojs-ui/oojs-ui-core-mediawiki.css b/resources/lib/oojs-ui/oojs-ui-core-mediawiki.css
index 9dd296c988..c47ce7f61f 100644
--- a/resources/lib/oojs-ui/oojs-ui-core-mediawiki.css
+++ b/resources/lib/oojs-ui/oojs-ui-core-mediawiki.css
@@ -1,12 +1,12 @@
/*!
- * OOjs UI v0.16.4
+ * OOjs UI v0.16.6
* https://www.mediawiki.org/wiki/OOjs_UI
*
* Copyright 2011â2016 OOjs UI Team and other contributors.
* Released under the MIT license
* http://oojs.mit-license.org
*
- * Date: 2016-03-22T22:48:25Z
+ * Date: 2016-04-19T21:57:53Z
*/
.oo-ui-element-hidden {
display: none !important;
@@ -56,20 +56,12 @@
.oo-ui-buttonElement.oo-ui-iconElement > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon {
margin-left: 0;
}
-.oo-ui-buttonElement.oo-ui-indicatorElement > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator {
- width: 0.9375em;
- height: 0.9375em;
-}
.oo-ui-buttonElement.oo-ui-iconElement > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator {
margin-left: 0.46875em;
}
-.oo-ui-buttonElement.oo-ui-iconElement > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon {
- width: 1.875em;
- height: 1.875em;
-}
.oo-ui-buttonElement-frameless > .oo-ui-buttonElement-button:focus {
box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.2), 0 0 0 1px rgba(0, 0, 0, 0.2);
- outline: none;
+ outline: 0;
}
.oo-ui-buttonElement-frameless > .oo-ui-buttonElement-button .oo-ui-indicatorElement-indicator {
margin-right: 0;
@@ -153,7 +145,7 @@
}
.oo-ui-buttonElement-framed > .oo-ui-buttonElement-button:hover,
.oo-ui-buttonElement-framed > .oo-ui-buttonElement-button:focus {
- outline: none;
+ outline: 0;
}
.oo-ui-buttonElement-framed > input.oo-ui-buttonElement-button,
.oo-ui-buttonElement-framed.oo-ui-labelElement > .oo-ui-buttonElement-button > .oo-ui-labelElement-label {
@@ -206,8 +198,8 @@
color: #347bff;
}
.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-progressive > .oo-ui-buttonElement-button:hover {
- background-color: rgba(52, 123, 255, 0.1);
- border-color: rgba(31, 73, 153, 0.5);
+ background-color: #ebf2ff;
+ border-color: #859dcc;
}
.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-progressive > .oo-ui-buttonElement-button:focus {
box-shadow: inset 0 0 0 1px #1f4999;
@@ -227,8 +219,8 @@
color: #347bff;
}
.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-constructive > .oo-ui-buttonElement-button:hover {
- background-color: rgba(52, 123, 255, 0.1);
- border-color: rgba(31, 73, 153, 0.5);
+ background-color: #ebf2ff;
+ border-color: #859dcc;
}
.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-constructive > .oo-ui-buttonElement-button:focus {
box-shadow: inset 0 0 0 1px #1f4999;
@@ -248,8 +240,8 @@
color: #d11d13;
}
.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-destructive > .oo-ui-buttonElement-button:hover {
- background-color: rgba(209, 29, 19, 0.1);
- border-color: rgba(115, 16, 10, 0.5);
+ background-color: #fbe8e7;
+ border-color: #b77c79;
}
.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-destructive > .oo-ui-buttonElement-button:focus {
box-shadow: inset 0 0 0 1px #73100a;
@@ -350,12 +342,20 @@
background-size: contain;
background-position: center center;
background-repeat: no-repeat;
+ min-width: 24px;
+ width: 1.875em;
+ min-height: 24px;
+ height: 1.875em;
}
.oo-ui-indicatorElement .oo-ui-indicatorElement-indicator,
.oo-ui-indicatorElement.oo-ui-indicatorElement-indicator {
background-size: contain;
background-position: center center;
background-repeat: no-repeat;
+ min-width: 12px;
+ width: 0.9375em;
+ min-height: 12px;
+ height: 0.9375em;
}
.oo-ui-labelElement .oo-ui-labelElement-label-highlight {
font-weight: bold;
@@ -513,8 +513,6 @@
.oo-ui-fieldsetLayout.oo-ui-iconElement > .oo-ui-iconElement-icon {
left: 0;
top: 0.25em;
- width: 1.875em;
- height: 1.875em;
}
.oo-ui-fieldsetLayout > .oo-ui-popupButtonWidget {
margin-right: 0;
@@ -611,11 +609,9 @@
height: 100%;
}
.oo-ui-decoratedOptionWidget.oo-ui-iconElement .oo-ui-iconElement-icon {
- width: 1.875em;
left: 0.5em;
}
.oo-ui-decoratedOptionWidget.oo-ui-indicatorElement .oo-ui-indicatorElement-indicator {
- width: 0.9375em;
right: 0.5em;
}
.oo-ui-decoratedOptionWidget.oo-ui-widget-disabled .oo-ui-iconElement-icon,
@@ -650,8 +646,6 @@
display: inline-block;
vertical-align: middle;
line-height: 2.5em;
- width: 1.875em;
- height: 1.875em;
}
.oo-ui-iconWidget.oo-ui-widget-disabled {
opacity: 0.2;
@@ -660,8 +654,6 @@
display: inline-block;
vertical-align: middle;
line-height: 2.5em;
- width: 0.9375em;
- height: 0.9375em;
margin: 0.46875em;
}
.oo-ui-indicatorWidget.oo-ui-widget-disabled {
@@ -800,11 +792,11 @@
}
.oo-ui-popupButtonWidget.oo-ui-buttonElement-frameless > .oo-ui-popupWidget {
/* @noflip */
- left: 1em;
+ left: 0.9375em;
}
.oo-ui-popupButtonWidget.oo-ui-buttonElement-framed > .oo-ui-popupWidget {
/* @noflip */
- left: 1.75em;
+ left: 1.5em;
}
.oo-ui-inputWidget {
margin-right: 0.5em;
@@ -831,7 +823,7 @@
font: inherit;
vertical-align: middle;
}
-.oo-ui-checkboxInputWidget input[type="checkbox"] {
+.oo-ui-checkboxInputWidget [type="checkbox"] {
opacity: 0;
z-index: 1;
position: relative;
@@ -841,7 +833,7 @@
height: 1.6em;
max-width: none;
}
-.oo-ui-checkboxInputWidget input[type="checkbox"] + span {
+.oo-ui-checkboxInputWidget [type="checkbox"] + span {
-webkit-transition: background-size 200ms cubic-bezier(0.175, 0.885, 0.32, 1.275);
-moz-transition: background-size 200ms cubic-bezier(0.175, 0.885, 0.32, 1.275);
transition: background-size 200ms cubic-bezier(0.175, 0.885, 0.32, 1.275);
@@ -850,11 +842,9 @@
box-sizing: border-box;
position: absolute;
left: 0;
- border-radius: 2px;
width: 1.6em;
height: 1.6em;
- background-color: white;
- border: 1px solid #777777;
+ background-color: #ffffff;
background-image: url("themes/mediawiki/images/icons/check-constructive-deprecated.png");
background-image: -webkit-linear-gradient(transparent, transparent), /* @embed */ url("themes/mediawiki/images/icons/check-constructive-deprecated.svg");
background-image: linear-gradient(transparent, transparent), /* @embed */ url("themes/mediawiki/images/icons/check-constructive-deprecated.svg");
@@ -863,29 +853,31 @@
background-position: center center;
background-origin: border-box;
background-size: 0 0;
+ border: 1px solid #777777;
+ border-radius: 2px;
}
-.oo-ui-checkboxInputWidget input[type="checkbox"]:checked + span {
+.oo-ui-checkboxInputWidget [type="checkbox"]:checked + span {
background-size: 100% 100%;
}
-.oo-ui-checkboxInputWidget input[type="checkbox"]:active + span {
+.oo-ui-checkboxInputWidget [type="checkbox"]:active + span {
background-color: #cccccc;
border-color: #cccccc;
}
-.oo-ui-checkboxInputWidget input[type="checkbox"]:focus + span {
+.oo-ui-checkboxInputWidget [type="checkbox"]:focus + span {
border-width: 2px;
}
-.oo-ui-checkboxInputWidget input[type="checkbox"]:focus:hover + span,
-.oo-ui-checkboxInputWidget input[type="checkbox"]:hover + span {
+.oo-ui-checkboxInputWidget [type="checkbox"]:focus:hover + span,
+.oo-ui-checkboxInputWidget [type="checkbox"]:hover + span {
border-bottom-width: 3px;
}
-.oo-ui-checkboxInputWidget input[type="checkbox"]:disabled {
+.oo-ui-checkboxInputWidget [type="checkbox"]:disabled {
cursor: default;
}
-.oo-ui-checkboxInputWidget input[type="checkbox"]:disabled + span {
+.oo-ui-checkboxInputWidget [type="checkbox"]:disabled + span {
background-color: #dddddd;
border-color: #dddddd;
}
-.oo-ui-checkboxInputWidget input[type="checkbox"]:disabled:checked + span {
+.oo-ui-checkboxInputWidget [type="checkbox"]:disabled:checked + span {
background-image: url("themes/mediawiki/images/icons/check-invert.png");
background-image: -webkit-linear-gradient(transparent, transparent), /* @embed */ url("themes/mediawiki/images/icons/check-invert.svg");
background-image: linear-gradient(transparent, transparent), /* @embed */ url("themes/mediawiki/images/icons/check-invert.svg");
@@ -906,7 +898,7 @@
}
.oo-ui-dropdownInputWidget select {
width: 100%;
- resize: none;
+ cursor: pointer;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
@@ -933,7 +925,7 @@
.oo-ui-dropdownInputWidget.oo-ui-widget-enabled select:hover,
.oo-ui-dropdownInputWidget.oo-ui-widget-enabled select:focus {
border-color: #aaaaaa;
- outline: none;
+ outline: 0;
}
.oo-ui-dropdownInputWidget.oo-ui-widget-disabled select {
color: #cccccc;
@@ -949,7 +941,7 @@
font: inherit;
vertical-align: middle;
}
-.oo-ui-radioInputWidget input[type="radio"] {
+.oo-ui-radioInputWidget [type="radio"] {
opacity: 0;
z-index: 1;
position: relative;
@@ -959,7 +951,7 @@
height: 1.6em;
max-width: none;
}
-.oo-ui-radioInputWidget input[type="radio"] + span {
+.oo-ui-radioInputWidget [type="radio"] + span {
-webkit-transition: background-size 200ms cubic-bezier(0.175, 0.885, 0.32, 1.275);
-moz-transition: background-size 200ms cubic-bezier(0.175, 0.885, 0.32, 1.275);
transition: background-size 200ms cubic-bezier(0.175, 0.885, 0.32, 1.275);
@@ -968,11 +960,9 @@
box-sizing: border-box;
position: absolute;
left: 0;
- border-radius: 100%;
width: 1.6em;
height: 1.6em;
- background: white;
- border: 1px solid #777777;
+ background-color: #ffffff;
background-image: url("themes/mediawiki/images/icons/circle-constructive-deprecated.png");
background-image: -webkit-linear-gradient(transparent, transparent), /* @embed */ url("themes/mediawiki/images/icons/circle-constructive-deprecated.svg");
background-image: linear-gradient(transparent, transparent), /* @embed */ url("themes/mediawiki/images/icons/circle-constructive-deprecated.svg");
@@ -981,29 +971,31 @@
background-position: center center;
background-origin: border-box;
background-size: 0 0;
+ border: 1px solid #777777;
+ border-radius: 100%;
}
-.oo-ui-radioInputWidget input[type="radio"]:checked + span {
+.oo-ui-radioInputWidget [type="radio"]:checked + span {
background-size: 100% 100%;
}
-.oo-ui-radioInputWidget input[type="radio"]:active + span {
+.oo-ui-radioInputWidget [type="radio"]:active + span {
background-color: #cccccc;
border-color: #cccccc;
}
-.oo-ui-radioInputWidget input[type="radio"]:focus + span {
+.oo-ui-radioInputWidget [type="radio"]:focus + span {
border-width: 2px;
}
-.oo-ui-radioInputWidget input[type="radio"]:focus:hover + span,
-.oo-ui-radioInputWidget input[type="radio"]:hover + span {
+.oo-ui-radioInputWidget [type="radio"]:focus:hover + span,
+.oo-ui-radioInputWidget [type="radio"]:hover + span {
border-bottom-width: 3px;
}
-.oo-ui-radioInputWidget input[type="radio"]:disabled {
+.oo-ui-radioInputWidget [type="radio"]:disabled {
cursor: default;
}
-.oo-ui-radioInputWidget input[type="radio"]:disabled + span {
+.oo-ui-radioInputWidget [type="radio"]:disabled + span {
background-color: #dddddd;
border-color: #dddddd;
}
-.oo-ui-radioInputWidget input[type="radio"]:disabled:checked + span {
+.oo-ui-radioInputWidget [type="radio"]:disabled:checked + span {
background-image: url("themes/mediawiki/images/icons/circle-invert.png");
background-image: -webkit-linear-gradient(transparent, transparent), /* @embed */ url("themes/mediawiki/images/icons/circle-invert.svg");
background-image: linear-gradient(transparent, transparent), /* @embed */ url("themes/mediawiki/images/icons/circle-invert.svg");
@@ -1012,6 +1004,12 @@
.oo-ui-radioSelectInputWidget .oo-ui-fieldLayout {
margin-bottom: 0;
}
+.oo-ui-radioSelectInputWidget .oo-ui-fieldLayout .oo-ui-fieldLayout-body {
+ padding: 0.25em 0;
+}
+.oo-ui-radioSelectInputWidget .oo-ui-fieldLayout .oo-ui-fieldLayout-body .oo-ui-labelElement-label {
+ line-height: 1.5em;
+}
.oo-ui-textInputWidget {
position: relative;
vertical-align: middle;
@@ -1033,16 +1031,16 @@
.oo-ui-textInputWidget textarea {
overflow: auto;
}
-.oo-ui-textInputWidget input[type="search"] {
- -webkit-appearance: texfield;
+.oo-ui-textInputWidget [type="search"] {
+ -webkit-appearance: textfield;
}
-.oo-ui-textInputWidget input[type="search"]::-ms-clear {
+.oo-ui-textInputWidget [type="search"]::-ms-clear {
display: none;
}
-.oo-ui-textInputWidget input[type="search"]::-webkit-search-decoration,
-.oo-ui-textInputWidget input[type="search"]::-webkit-search-cancel-button,
-.oo-ui-textInputWidget input[type="search"]::-webkit-search-results-button,
-.oo-ui-textInputWidget input[type="search"]::-webkit-search-results-decoration {
+.oo-ui-textInputWidget [type="search"]::-webkit-search-decoration,
+.oo-ui-textInputWidget [type="search"]::-webkit-search-cancel-button,
+.oo-ui-textInputWidget [type="search"]::-webkit-search-results-button,
+.oo-ui-textInputWidget [type="search"]::-webkit-search-results-decoration {
display: none;
}
.oo-ui-textInputWidget > .oo-ui-iconElement-icon,
@@ -1072,22 +1070,18 @@
.oo-ui-textInputWidget.oo-ui-labelElement > .oo-ui-labelElement-label {
display: block;
}
-.oo-ui-textInputWidget > .oo-ui-iconElement-icon {
+.oo-ui-textInputWidget > .oo-ui-iconElement-icon,
+.oo-ui-textInputWidget-labelPosition-before > .oo-ui-labelElement-label {
left: 0;
}
-.oo-ui-textInputWidget > .oo-ui-indicatorElement-indicator {
+.oo-ui-textInputWidget > .oo-ui-indicatorElement-indicator,
+.oo-ui-textInputWidget-labelPosition-after > .oo-ui-labelElement-label {
right: 0;
}
.oo-ui-textInputWidget > .oo-ui-labelElement-label {
position: absolute;
top: 0;
}
-.oo-ui-textInputWidget-labelPosition-after > .oo-ui-labelElement-label {
- right: 0;
-}
-.oo-ui-textInputWidget-labelPosition-before > .oo-ui-labelElement-label {
- left: 0;
-}
.oo-ui-textInputWidget input,
.oo-ui-textInputWidget textarea {
padding: 0.5em;
@@ -1103,8 +1097,7 @@
-moz-box-sizing: border-box;
box-sizing: border-box;
}
-.oo-ui-textInputWidget input.oo-ui-pendingElement-pending,
-.oo-ui-textInputWidget textarea.oo-ui-pendingElement-pending {
+.oo-ui-textInputWidget .oo-ui-pendingElement-pending {
background-color: transparent;
}
.oo-ui-textInputWidget.oo-ui-widget-enabled input,
@@ -1116,7 +1109,7 @@
}
.oo-ui-textInputWidget.oo-ui-widget-enabled input:focus,
.oo-ui-textInputWidget.oo-ui-widget-enabled textarea:focus {
- outline: none;
+ outline: 0;
border-color: #347bff;
box-shadow: inset 0 0 0 0.1em #347bff;
}
@@ -1151,7 +1144,7 @@
opacity: 0.2;
}
.oo-ui-textInputWidget.oo-ui-widget-disabled .oo-ui-labelElement-label {
- color: #dddddd;
+ color: #cccccc;
text-shadow: 0 1px 1px #ffffff;
}
.oo-ui-textInputWidget.oo-ui-iconElement input,
@@ -1160,10 +1153,9 @@
}
.oo-ui-textInputWidget.oo-ui-iconElement .oo-ui-iconElement-icon {
left: 0;
- width: 1.875em;
+ height: 100%;
max-height: 2.375em;
margin-left: 0.5em;
- height: 100%;
background-position: right center;
}
.oo-ui-textInputWidget.oo-ui-indicatorElement input,
@@ -1171,10 +1163,9 @@
padding-right: 2.4875em;
}
.oo-ui-textInputWidget.oo-ui-indicatorElement .oo-ui-indicatorElement-indicator {
- width: 0.9375em;
+ height: 100%;
max-height: 2.375em;
margin: 0 0.775em;
- height: 100%;
}
.oo-ui-textInputWidget > .oo-ui-labelElement-label {
padding: 0.4em;
@@ -1289,14 +1280,10 @@
}
.oo-ui-dropdownWidget-handle .oo-ui-indicatorElement-indicator {
top: 0;
- width: 0.9375em;
- height: 0.9375em;
margin: 0.775em;
}
.oo-ui-dropdownWidget-handle .oo-ui-iconElement-icon {
top: 0;
- width: 1.875em;
- height: 1.875em;
margin: 0.3em;
}
.oo-ui-dropdownWidget:hover .oo-ui-dropdownWidget-handle {
diff --git a/resources/lib/oojs-ui/oojs-ui-core.js b/resources/lib/oojs-ui/oojs-ui-core.js
index add3f0a806..64c6be68b3 100644
--- a/resources/lib/oojs-ui/oojs-ui-core.js
+++ b/resources/lib/oojs-ui/oojs-ui-core.js
@@ -1,12 +1,12 @@
/*!
- * OOjs UI v0.16.4
+ * OOjs UI v0.16.6
* https://www.mediawiki.org/wiki/OOjs_UI
*
* Copyright 2011â2016 OOjs UI Team and other contributors.
* Released under the MIT license
* http://oojs.mit-license.org
*
- * Date: 2016-03-22T22:48:21Z
+ * Date: 2016-04-19T21:57:49Z
*/
( function ( OO ) {
@@ -2052,6 +2052,16 @@ OO.ui.mixin.GroupElement = function OoUiMixinGroupElement( config ) {
this.setGroupElement( config.$group || $( '' ) );
};
+/* Events */
+
+/**
+ * @event change
+ *
+ * A change event is emitted when the set of selected items changes.
+ *
+ * @param {OO.ui.Element[]} items Items currently in the group
+ */
+
/* Methods */
/**
@@ -2243,6 +2253,7 @@ OO.ui.mixin.GroupElement.prototype.addItems = function ( items, index ) {
this.items.splice.apply( this.items, [ index, 0 ].concat( items ) );
}
+ this.emit( 'change', this.getItems() );
return this;
};
@@ -2279,6 +2290,7 @@ OO.ui.mixin.GroupElement.prototype.removeItems = function ( items ) {
}
}
+ this.emit( 'change', this.getItems() );
return this;
};
@@ -2310,6 +2322,7 @@ OO.ui.mixin.GroupElement.prototype.clearItems = function () {
item.$element.detach();
}
+ this.emit( 'change', this.getItems() );
this.items = [];
return this;
};
@@ -4066,12 +4079,16 @@ OO.ui.mixin.ClippableElement.prototype.setIdealSize = function ( width, height )
};
/**
- * Clip element to visible boundaries and allow scrolling when needed. Call this method when
- * the element's natural height changes.
+ * Clip element to visible boundaries and allow scrolling when needed. You should call this method
+ * when the element's natural height changes.
*
* Element will be clipped the bottom or right of the element is within 10px of the edge of, or
* overlapped by, the visible area of the nearest scrollable container.
*
+ * Because calling clip() when the natural height changes isn't always possible, we also set
+ * max-height when the element isn't being clipped. This means that if the element tries to grow
+ * beyond the edge, something reasonable will happen before clip() is called.
+ *
* @chainable
*/
OO.ui.mixin.ClippableElement.prototype.clip = function () {
@@ -4115,14 +4132,30 @@ OO.ui.mixin.ClippableElement.prototype.clip = function () {
clipHeight = allotedHeight < naturalHeight;
if ( clipWidth ) {
- this.$clippable.css( { overflowX: 'scroll', width: Math.max( 0, allotedWidth ) } );
+ this.$clippable.css( {
+ overflowX: 'scroll',
+ width: Math.max( 0, allotedWidth ),
+ maxWidth: ''
+ } );
} else {
- this.$clippable.css( { width: this.idealWidth ? this.idealWidth - extraWidth : '', overflowX: '' } );
+ this.$clippable.css( {
+ overflowX: '',
+ width: this.idealWidth ? this.idealWidth - extraWidth : '',
+ maxWidth: Math.max( 0, allotedWidth )
+ } );
}
if ( clipHeight ) {
- this.$clippable.css( { overflowY: 'scroll', height: Math.max( 0, allotedHeight ) } );
+ this.$clippable.css( {
+ overflowY: 'scroll',
+ height: Math.max( 0, allotedHeight ),
+ maxHeight: ''
+ } );
} else {
- this.$clippable.css( { height: this.idealHeight ? this.idealHeight - extraHeight : '', overflowY: '' } );
+ this.$clippable.css( {
+ overflowY: '',
+ height: this.idealHeight ? this.idealHeight - extraHeight : '',
+ maxHeight: Math.max( 0, allotedHeight )
+ } );
}
// If we stopped clipping in at least one of the dimensions
@@ -6909,9 +6942,11 @@ OO.ui.InputWidget.static.reusePreInfuseDOM = function ( node, config ) {
*/
OO.ui.InputWidget.static.gatherPreInfuseState = function ( node, config ) {
var state = OO.ui.InputWidget.parent.static.gatherPreInfuseState( node, config );
- state.value = config.$input.val();
- // Might be better in TabIndexedElement, but it's awkward to do there because mixins are awkward
- state.focus = config.$input.is( ':focus' );
+ if ( config.$input && config.$input.length ) {
+ state.value = config.$input.val();
+ // Might be better in TabIndexedElement, but it's awkward to do there because mixins are awkward
+ state.focus = config.$input.is( ':focus' );
+ }
return state;
};
@@ -7708,6 +7743,16 @@ OO.ui.RadioSelectInputWidget.static.gatherPreInfuseState = function ( node, conf
return state;
};
+/**
+ * @inheritdoc
+ */
+OO.ui.RadioSelectInputWidget.static.reusePreInfuseDOM = function ( node, config ) {
+ config = OO.ui.RadioSelectInputWidget.parent.static.reusePreInfuseDOM( node, config );
+ // Cannot reuse the `
` set
+ delete config.$input;
+ return config;
+};
+
/* Methods */
/**
@@ -7812,7 +7857,7 @@ OO.ui.RadioSelectInputWidget.prototype.setOptions = function ( options ) {
* @constructor
* @param {Object} [config] Configuration options
* @cfg {string} [type='text'] The value of the HTML `type` attribute: 'text', 'password', 'search',
- * 'email', 'url' or 'date'. Ignored if `multiline` is true.
+ * 'email', 'url', 'date' or 'number'. Ignored if `multiline` is true.
*
* Some values of `type` result in additional behaviors:
*
@@ -7999,7 +8044,6 @@ OO.ui.TextInputWidget.static.gatherPreInfuseState = function ( node, config ) {
*
* @private
* @param {jQuery.Event} e Mouse down event
- * @fires icon
*/
OO.ui.TextInputWidget.prototype.onIconMouseDown = function ( e ) {
if ( e.which === OO.ui.MouseButtons.LEFT ) {
@@ -8013,7 +8057,6 @@ OO.ui.TextInputWidget.prototype.onIconMouseDown = function ( e ) {
*
* @private
* @param {jQuery.Event} e Mouse down event
- * @fires indicator
*/
OO.ui.TextInputWidget.prototype.onIndicatorMouseDown = function ( e ) {
if ( e.which === OO.ui.MouseButtons.LEFT ) {
@@ -8255,9 +8298,15 @@ OO.ui.TextInputWidget.prototype.adjustSize = function () {
* @protected
*/
OO.ui.TextInputWidget.prototype.getInputElement = function ( config ) {
- return config.multiline ?
- $( '
!! end
+!! test
+Element attributes with double ! should not be broken up by
+!! wikitext
+{|
+! hi ha
ho
+|}
+!! html/php
+
+
+!! html/parsoid
+
+!! end
+
!! test
! and || in element attributes should not be parsed as /
!! wikitext
@@ -6567,6 +6588,8 @@ Table with empty line following the start tag
!! test
Table attributes with empty value
+!! options
+parsoid=wt2html,html2html
!! wikitext
{|
| style=| hello
@@ -6579,11 +6602,8 @@ Table attributes with empty value
!! html/parsoid
-
+ hello
+
!! end
!! test
@@ -10272,7 +10292,7 @@ Template with just whitespace in it, bug #68421
!! wikitext
{{echo|{{ }}}}
!! html/parsoid
-{{ }}
+{{ }}
!! end
!! article
@@ -10509,6 +10529,7 @@ Abort table cell attribute parsing on wikilink
{|
| testing [[one|two]] | three || four
| testing one two | three || four
+| testing="[[one|two]]" | three || four
|}
!! html/php
@@ -10518,12 +10539,16 @@ Abort table cell attribute parsing on wikilink
three
four
+
+ testing="two " | three
+ four
!! html/parsoid
testing two | three four
- three four
+ three four
+ testing="two " | three four
!! end
@@ -12163,7 +12188,7 @@ This template has in it.
!! test
pre-save transform: unclosed tag
!! options
-pst noxml
+pst
!! wikitext
'''not wiki'''
!! html/php
@@ -12173,7 +12198,7 @@ pst noxml
!! test
pre-save transform: mixed tag case
!! options
-pst noxml
+pst
!! wikitext
'''not wiki'''
!! html/php
@@ -12183,7 +12208,7 @@ pst noxml
!! test
pre-save transform: unclosed comment in
!! options
-pst noxml
+pst
!! wikitext
wikinowiki", "<!-- Foo --> " ),
- array( "", "<!-- Foo --> <!-- Bar --> " ),
- array( " ", "<!-- Foo --> <!-- Bar --> " ),
- array( " \n ", "<!-- Foo --> \n <!-- Bar --> " ),
- array( " \n \n", "<!-- Foo --> \n <!-- Bar -->\n " ),
- array( " \n", "<!-- Foo --> <!-- Bar --> \n " ),
- array( "Bar", "<!-->Bar " ),
- array( "\n== Baz ==\n", "== Foo == \n <!-- Bar -->\n == Baz == \n " ),
- array( " ", "gallery " ),
- array( "Foo Bar", "Foo gallery Bar " ),
- array( " ", "gallery </gallery> " ),
- array( " ", "<foo> gallery </gallery> " ),
- array( " ", "<foo> gallery <gallery> </gallery> " ),
- array( " Foo bar ", "<noinclude> Foo bar </noinclude> " ),
- array( "\n{{Foo}}\n ", "<noinclude> \nFoo \n</noinclude> " ),
- array( "\n{{Foo}}\n \n", "<noinclude> \nFoo \n</noinclude> \n " ),
- array( "foo bar", "gallery foo bar " ),
- array( "<{{foo}}>", "<foo > " ),
- array( "<{{{foo}}}>", "<foo > " ),
- array( " ", "gallery </gallery </gallery> " ),
- array( "=== Foo === ", "=== Foo === " ),
- array( "=== Foo === ", "==<!-- --> = Foo === " ),
- array( "=== Foo === ", "=== Foo ==<!-- --> = " ),
- array( "=== Foo ===\n", "=== Foo ===<!-- --> \n " ),
- array( "=== Foo === \n", "=== Foo ===<!-- --> <!-- --> \n " ),
- array( "== Foo ==\n== Bar == \n", "== Foo == \n== Bar == \n " ),
- array( "===========", "=========== " ),
- array( "Foo\n=\n==\n=\n", "Foo\n=\n==\n=\n " ),
- array( "{{Foo}}", "Foo " ),
- array( "\n{{Foo}}", "\nFoo " ),
- array( "{{Foo|bar}}", "Foo bar " ),
- array( "{{Foo|bar}}a", "Foo bar a " ),
- array( "{{Foo|bar|baz}}", "Foo bar baz " ),
- array( "{{Foo|1=bar}}", "Foo 1 =bar " ),
- array( "{{Foo|=bar}}", "Foo =bar " ),
- array( "{{Foo|bar=baz}}", "Foo bar =baz " ),
- array( "{{Foo|{{bar}}=baz}}", "Foo bar =baz " ),
- array( "{{Foo|1=bar|baz}}", "Foo 1 =bar baz " ),
- array( "{{Foo|1=bar|2=baz}}", "Foo 1 =bar 2 =baz " ),
- array( "{{Foo|bar|foo=baz}}", "Foo bar foo =baz " ),
- array( "{{{1}}}", "1 " ),
- array( "{{{1|}}}", "1 " ),
- array( "{{{Foo}}}", "Foo " ),
- array( "{{{Foo|}}}", "Foo " ),
- array( "{{{Foo|bar|baz}}}", "Foo bar baz " ),
- array( "{{Foo}}", "{<!-- --> {Foo}} " ),
- array( "{{{{Foobar}}}}", "{Foobar } " ),
- array( "{{{ {{Foo}} }}}", " Foo " ),
- array( "{{ {{{Foo}}} }}", " Foo " ),
- array( "{{{{{Foo}}}}}", "Foo " ),
- array( "{{{{{Foo}} }}}", "Foo " ),
- array( "{{{{{{Foo}}}}}}", "Foo " ),
- array( "{{{{{{Foo}}}}}", "{Foo " ),
- array( "[[[Foo]]", "[[[Foo]] " ),
- array( "{{Foo|[[[[bar]]|baz]]}}", "Foo [[[[bar]]|baz]] " ), // This test is important, since it means the difference between having the [[ rule stacked or not
- array( "{{Foo|[[[[bar]|baz]]}}", "{{Foo|[[[[bar]|baz]]}} " ),
- array( "{{Foo|Foo [[[[bar]|baz]]}}", "{{Foo|Foo [[[[bar]|baz]]}} " ),
- array( "Foo Bar Baz", "Foo display map Bar </display map > Baz " ),
- array( "Foo Bar Baz", "Foo display map foo Bar </display map > Baz " ),
- array( "Foo ", "Foo gallery bar="baz" " ),
- array( "Foo ", "Foo gallery bar="1" baz=2 " ),
- array( " Foo/foo>", "/foo Foo <//foo> " ), # Worth blacklisting IMHO
- array( "{{#ifexpr: ({{{1|1}}} = 2) | Foo | Bar }}", "#ifexpr: (1 1 = 2) Foo Bar " ),
- array( "{{#if: {{{1|}}} | Foo | {{Bar}} }}", "#if: 1 Foo Bar " ),
- array( "{{#if: {{{1|}}} | Foo | [[Bar]] }}", "#if: 1 Foo [[Bar]] " ),
- array( "{{#if: {{{1|}}} | [[Foo]] | Bar }}", "#if: 1 [[Foo]] Bar " ),
- array( "{{#if: {{{1|}}} | 1 | {{#if: {{{1|}}} | 2 | 3 }} }}", "#if: 1 1 #if: 1 2 3 " ),
- array( "{{ {{Foo}}", "{{ Foo " ),
- array( "{{Foobar {{Foo}} {{Bar}} {{Baz}} ", "{{Foobar Foo Bar Baz " ),
- array( "[[Foo]] |", "[[Foo]] | " ),
- array( "{{Foo|Bar|", "{{Foo|Bar| " ),
- array( "[[Foo]", "[[Foo] " ),
- array( "[[Foo|Bar]", "[[Foo|Bar] " ),
- array( "{{Foo| [[Bar] }}", "{{Foo| [[Bar] }} " ),
- array( "{{Foo| [[Bar|Baz] }}", "{{Foo| [[Bar|Baz] }} " ),
- array( "{{Foo|bar=[[baz]}}", "{{Foo|bar=[[baz]}} " ),
- array( "{{foo|", "{{foo| " ),
- array( "{{foo|}", "{{foo|} " ),
- array( "{{foo|} }}", "foo } " ),
- array( "{{foo|bar=|}", "{{foo|bar=|} " ),
- array( "{{Foo|} Bar=", "{{Foo|} Bar= " ),
- array( "{{Foo|} Bar=}}", "Foo } Bar = " ),
- /* array( file_get_contents( __DIR__ . '/QuoteQuran.txt' ), file_get_contents( __DIR__ . '/QuoteQuranExpanded.txt' ) ), */
- );
+ return [
+ [ "Foo", "Foo " ],
+ [ "", "<!-- Foo --> " ],
+ [ "", "<!-- Foo --> <!-- Bar --> " ],
+ [ " ", "<!-- Foo --> <!-- Bar --> " ],
+ [ " \n ", "<!-- Foo --> \n <!-- Bar --> " ],
+ [ " \n \n", "<!-- Foo --> \n <!-- Bar -->\n " ],
+ [ " \n", "<!-- Foo --> <!-- Bar --> \n " ],
+ [ "Bar", "<!-->Bar " ],
+ [ "\n== Baz ==\n", "== Foo == \n <!-- Bar -->\n == Baz == \n " ],
+ [ " ", "gallery " ],
+ [ "Foo Bar", "Foo gallery Bar " ],
+ [ " ", "gallery </gallery> " ],
+ [ " ", "<foo> gallery </gallery> " ],
+ [ " ", "<foo> gallery <gallery> </gallery> " ],
+ [ " Foo bar ", "<noinclude> Foo bar </noinclude> " ],
+ [ "\n{{Foo}}\n ", "<noinclude> \nFoo \n</noinclude> " ],
+ [ "\n{{Foo}}\n \n", "<noinclude> \nFoo \n</noinclude> \n " ],
+ [ "foo bar", "<gallery>foo bar " ],
+ [ "<{{foo}}>", "<foo > " ],
+ [ "<{{{foo}}}>", "<foo > " ],
+ [ " ", "gallery </gallery </gallery> " ],
+ [ "=== Foo === ", "=== Foo === " ],
+ [ "=== Foo === ", "==<!-- --> = Foo === " ],
+ [ "=== Foo === ", "=== Foo ==<!-- --> = " ],
+ [ "=== Foo ===\n", "=== Foo ===<!-- --> \n " ],
+ [ "=== Foo === \n", "=== Foo ===<!-- --> <!-- --> \n " ],
+ [ "== Foo ==\n== Bar == \n", "== Foo == \n== Bar == \n " ],
+ [ "===========", "=========== " ],
+ [ "Foo\n=\n==\n=\n", "Foo\n=\n==\n=\n " ],
+ [ "{{Foo}}", "Foo " ],
+ [ "\n{{Foo}}", "\nFoo " ],
+ [ "{{Foo|bar}}", "Foo bar " ],
+ [ "{{Foo|bar}}a", "Foo bar a " ],
+ [ "{{Foo|bar|baz}}", "Foo bar baz " ],
+ [ "{{Foo|1=bar}}", "Foo 1 =bar " ],
+ [ "{{Foo|=bar}}", "Foo =bar " ],
+ [ "{{Foo|bar=baz}}", "Foo bar =baz " ],
+ [ "{{Foo|{{bar}}=baz}}", "Foo bar =baz " ],
+ [ "{{Foo|1=bar|baz}}", "Foo 1 =bar baz " ],
+ [ "{{Foo|1=bar|2=baz}}", "Foo 1 =bar 2 =baz " ],
+ [ "{{Foo|bar|foo=baz}}", "Foo bar foo =baz " ],
+ [ "{{{1}}}", "1 " ],
+ [ "{{{1|}}}", "1 " ],
+ [ "{{{Foo}}}", "Foo " ],
+ [ "{{{Foo|}}}", "Foo " ],
+ [ "{{{Foo|bar|baz}}}", "Foo bar baz " ],
+ [ "{{Foo}}", "{<!-- --> {Foo}} " ],
+ [ "{{{{Foobar}}}}", "{Foobar } " ],
+ [ "{{{ {{Foo}} }}}", " Foo " ],
+ [ "{{ {{{Foo}}} }}", " Foo " ],
+ [ "{{{{{Foo}}}}}", "Foo " ],
+ [ "{{{{{Foo}} }}}", "Foo " ],
+ [ "{{{{{{Foo}}}}}}", "Foo " ],
+ [ "{{{{{{Foo}}}}}", "{Foo " ],
+ [ "[[[Foo]]", "[[[Foo]] " ],
+ [ "{{Foo|[[[[bar]]|baz]]}}", "Foo [[[[bar]]|baz]] " ], // This test is important, since it means the difference between having the [[ rule stacked or not
+ [ "{{Foo|[[[[bar]|baz]]}}", "{{Foo|[[[[bar]|baz]]}} " ],
+ [ "{{Foo|Foo [[[[bar]|baz]]}}", "{{Foo|Foo [[[[bar]|baz]]}} " ],
+ [ "Foo Bar Baz", "Foo display map Bar </display map > Baz " ],
+ [ "Foo Bar Baz", "Foo display map foo Bar </display map > Baz " ],
+ [ "Foo ", "Foo gallery bar="baz" " ],
+ [ "Foo ", "Foo gallery bar="1" baz=2 " ],
+ [ " Foo/foo>", "/foo Foo <//foo> " ], # Worth blacklisting IMHO
+ [ "{{#ifexpr: ({{{1|1}}} = 2) | Foo | Bar }}", "#ifexpr: (1 1 = 2) Foo Bar " ],
+ [ "{{#if: {{{1|}}} | Foo | {{Bar}} }}", "#if: 1 Foo Bar " ],
+ [ "{{#if: {{{1|}}} | Foo | [[Bar]] }}", "#if: 1 Foo [[Bar]] " ],
+ [ "{{#if: {{{1|}}} | [[Foo]] | Bar }}", "#if: 1 [[Foo]] Bar " ],
+ [ "{{#if: {{{1|}}} | 1 | {{#if: {{{1|}}} | 2 | 3 }} }}", "#if: 1 1 #if: 1 2 3 " ],
+ [ "{{ {{Foo}}", "{{ Foo " ],
+ [ "{{Foobar {{Foo}} {{Bar}} {{Baz}} ", "{{Foobar Foo Bar Baz " ],
+ [ "[[Foo]] |", "[[Foo]] | " ],
+ [ "{{Foo|Bar|", "{{Foo|Bar| " ],
+ [ "[[Foo]", "[[Foo] " ],
+ [ "[[Foo|Bar]", "[[Foo|Bar] " ],
+ [ "{{Foo| [[Bar] }}", "{{Foo| [[Bar] }} " ],
+ [ "{{Foo| [[Bar|Baz] }}", "{{Foo| [[Bar|Baz] }} " ],
+ [ "{{Foo|bar=[[baz]}}", "{{Foo|bar=[[baz]}} " ],
+ [ "{{foo|", "{{foo| " ],
+ [ "{{foo|}", "{{foo|} " ],
+ [ "{{foo|} }}", "foo } " ],
+ [ "{{foo|bar=|}", "{{foo|bar=|} " ],
+ [ "{{Foo|} Bar=", "{{Foo|} Bar= " ],
+ [ "{{Foo|} Bar=}}", "Foo } Bar = " ],
+ /* [ file_get_contents( __DIR__ . '/QuoteQuran.txt' ], file_get_contents( __DIR__ . '/QuoteQuranExpanded.txt' ) ], */
+ ];
// @codingStandardsIgnoreEnd
}
@@ -162,13 +162,13 @@ class PreprocessorTest extends MediaWikiTestCase {
*/
public static function provideFiles() {
// @codingStandardsIgnoreStart Ignore Generic.Files.LineLength.TooLong
- return array(
- array( "QuoteQuran" ), # http://en.wikipedia.org/w/index.php?title=Template:QuoteQuran/sandbox&oldid=237348988 GFDL + CC BY-SA by Striver
- array( "Factorial" ), # http://en.wikipedia.org/w/index.php?title=Template:Factorial&oldid=98548758 GFDL + CC BY-SA by Polonium
- array( "All_system_messages" ), # http://tl.wiktionary.org/w/index.php?title=Suleras:All_system_messages&oldid=2765 GPL text generated by MediaWiki
- array( "Fundraising" ), # http://tl.wiktionary.org/w/index.php?title=MediaWiki:Sitenotice&oldid=5716 GFDL + CC BY-SA, copied there by Sky Harbor.
- array( "NestedTemplates" ), # bug 27936
- );
+ return [
+ [ "QuoteQuran" ], # http://en.wikipedia.org/w/index.php?title=Template:QuoteQuran/sandbox&oldid=237348988 GFDL + CC BY-SA by Striver
+ [ "Factorial" ], # http://en.wikipedia.org/w/index.php?title=Template:Factorial&oldid=98548758 GFDL + CC BY-SA by Polonium
+ [ "All_system_messages" ], # http://tl.wiktionary.org/w/index.php?title=Suleras:All_system_messages&oldid=2765 GPL text generated by MediaWiki
+ [ "Fundraising" ], # http://tl.wiktionary.org/w/index.php?title=MediaWiki:Sitenotice&oldid=5716 GFDL + CC BY-SA, copied there by Sky Harbor.
+ [ "NestedTemplates" ], # bug 27936
+ ];
// @codingStandardsIgnoreEnd
}
@@ -197,43 +197,43 @@ class PreprocessorTest extends MediaWikiTestCase {
*/
public static function provideHeadings() {
// @codingStandardsIgnoreStart Ignore Generic.Files.LineLength.TooLong
- return array( /* These should become headings: */
- array( "== h ==", "== h ==<!--c1--> " ),
- array( "== h == ", "== h == <!--c1--> " ),
- array( "== h == ", "== h ==<!--c1--> " ),
- array( "== h == ", "== h == <!--c1--> " ),
- array( "== h ==", "== h ==<!--c1--> <!--c2--> " ),
- array( "== h == ", "== h == <!--c1--> <!--c2--> " ),
- array( "== h == ", "== h ==<!--c1--> <!--c2--> " ),
- array( "== h == ", "== h == <!--c1--> <!--c2--> " ),
- array( "== h == ", "== h == <!--c1--> <!--c2--> " ),
- array( "== h == ", "== h ==<!--c1--> <!--c2--> " ),
- array( "== h == ", "== h == <!--c1--> <!--c2--> " ),
- array( "== h ==", "== h ==<!--c1--> <!--c2--> <!--c3--> " ),
- array( "== h == ", "== h ==<!--c1--> <!--c2--> <!--c3--> " ),
- array( "== h == ", "== h ==<!--c1--> <!--c2--> <!--c3--> " ),
- array( "== h == ", "== h ==<!--c1--> <!--c2--> <!--c3--> " ),
- array( "== h == ", "== h == <!--c1--> <!--c2--> <!--c3--> " ),
- array( "== h == ", "== h == <!--c1--> <!--c2--> <!--c3--> " ),
- array( "== h == ", "== h == <!--c1--> <!--c2--> <!--c3--> " ),
- array( "== h == ", "== h == <!--c1--> <!--c2--> <!--c3--> " ),
- array( "== h == ", "== h ==<!--c1--> <!--c2--> <!--c3--> " ),
- array( "== h == ", "== h ==<!--c1--> <!--c2--> <!--c3--> " ),
- array( "== h == ", "== h ==<!--c1--> <!--c2--> <!--c3--> " ),
- array( "== h == ", "== h ==<!--c1--> <!--c2--> <!--c3--> " ),
- array( "== h == ", "== h == <!--c1--> <!--c2--> <!--c3--> " ),
- array( "== h == ", "== h == <!--c1--> <!--c2--> <!--c3--> " ),
- array( "== h == ", "== h == <!--c1--> <!--c2--> <!--c3--> " ),
- array( "== h == ", "== h == <!--c1--> <!--c2--> <!--c3--> " ),
- array( "== h == ", "== h ==<!--c1--> <!--c2--> " ),
- array( "== h == ", "== h == <!--c1--> <!--c2--> " ),
- array( "== h == ", "== h ==<!--c1--> <!--c2--> " ),
+ return [ /* These should become headings: */
+ [ "== h ==", "== h ==<!--c1--> " ],
+ [ "== h == ", "== h == <!--c1--> " ],
+ [ "== h == ", "== h ==<!--c1--> " ],
+ [ "== h == ", "== h == <!--c1--> " ],
+ [ "== h ==", "== h ==<!--c1--> <!--c2--> " ],
+ [ "== h == ", "== h == <!--c1--> <!--c2--> " ],
+ [ "== h == ", "== h ==<!--c1--> <!--c2--> " ],
+ [ "== h == ", "== h == <!--c1--> <!--c2--> " ],
+ [ "== h == ", "== h == <!--c1--> <!--c2--> " ],
+ [ "== h == ", "== h ==<!--c1--> <!--c2--> " ],
+ [ "== h == ", "== h == <!--c1--> <!--c2--> " ],
+ [ "== h ==", "== h ==<!--c1--> <!--c2--> <!--c3--> " ],
+ [ "== h == ", "== h ==<!--c1--> <!--c2--> <!--c3--> " ],
+ [ "== h == ", "== h ==<!--c1--> <!--c2--> <!--c3--> " ],
+ [ "== h == ", "== h ==<!--c1--> <!--c2--> <!--c3--> " ],
+ [ "== h == ", "== h == <!--c1--> <!--c2--> <!--c3--> " ],
+ [ "== h == ", "== h == <!--c1--> <!--c2--> <!--c3--> " ],
+ [ "== h == ", "== h == <!--c1--> <!--c2--> <!--c3--> " ],
+ [ "== h == ", "== h == <!--c1--> <!--c2--> <!--c3--> " ],
+ [ "== h == ", "== h ==<!--c1--> <!--c2--> <!--c3--> " ],
+ [ "== h == ", "== h ==<!--c1--> <!--c2--> <!--c3--> " ],
+ [ "== h == ", "== h ==<!--c1--> <!--c2--> <!--c3--> " ],
+ [ "== h == ", "== h ==<!--c1--> <!--c2--> <!--c3--> " ],
+ [ "== h == ", "== h == <!--c1--> <!--c2--> <!--c3--> " ],
+ [ "== h == ", "== h == <!--c1--> <!--c2--> <!--c3--> " ],
+ [ "== h == ", "== h == <!--c1--> <!--c2--> <!--c3--> " ],
+ [ "== h == ", "== h == <!--c1--> <!--c2--> <!--c3--> " ],
+ [ "== h == ", "== h ==<!--c1--> <!--c2--> " ],
+ [ "== h == ", "== h == <!--c1--> <!--c2--> " ],
+ [ "== h == ", "== h ==<!--c1--> <!--c2--> " ],
/* These are not working: */
- array( "== h == x ", "== h == x <!--c1--> <!--c2--> <!--c3--> " ),
- array( "== h == x ", "== h ==<!--c1--> x <!--c2--> <!--c3--> " ),
- array( "== h == x ", "== h ==<!--c1--> <!--c2--> <!--c3--> x " ),
- );
+ [ "== h == x ", "== h == x <!--c1--> <!--c2--> <!--c3--> " ],
+ [ "== h == x ", "== h ==<!--c1--> x <!--c2--> <!--c3--> " ],
+ [ "== h == x ", "== h ==<!--c1--> <!--c2--> <!--c3--> x " ],
+ ];
// @codingStandardsIgnoreEnd
}
diff --git a/tests/phpunit/includes/password/BcryptPasswordTest.php b/tests/phpunit/includes/password/BcryptPasswordTest.php
index d6940b58f3..8f80362470 100644
--- a/tests/phpunit/includes/password/BcryptPasswordTest.php
+++ b/tests/phpunit/includes/password/BcryptPasswordTest.php
@@ -13,28 +13,28 @@ class BcryptPasswordTest extends PasswordTestCase {
public static function providePasswordTests() {
// @codingStandardsIgnoreStart Generic.Files.LineLength
- return array(
+ return [
// Tests from glibc bcrypt implementation
- array( true, ':bcrypt:5$CCCCCCCCCCCCCCCCCCCCC.$E5YPO9kmyuRGyh0XouQYb4YMJKvyOeW', "U*U" ),
- array( true, ':bcrypt:5$CCCCCCCCCCCCCCCCCCCCC.$VGOzA784oUp/Z0DY336zx7pLYAy0lwK', "U*U*" ),
- array( true, ':bcrypt:5$XXXXXXXXXXXXXXXXXXXXXO$AcXxm9kjPGEMsLznoKqmqw7tc8WCx4a', "U*U*U" ),
- array( true, ':bcrypt:5$abcdefghijklmnopqrstuu$5s2v8.iXieOjg/.AySBTTZIIVFJeBui', "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789chars after 72 are ignored" ),
- array( true, ':bcrypt:5$/OK.fbVrR/bpIqNJ5ianF.$CE5elHaaO4EbggVDjb8P19RukzXSM3e', "\xff\xff\xa3" ),
- array( true, ':bcrypt:5$/OK.fbVrR/bpIqNJ5ianF.$Sa7shbm4.OzKpvFnX1pQLmQW96oUlCq', "\xa3" ),
- array( true, ':bcrypt:5$/OK.fbVrR/bpIqNJ5ianF.$Sa7shbm4.OzKpvFnX1pQLmQW96oUlCq', "\xa3" ),
- array( true, ':bcrypt:5$/OK.fbVrR/bpIqNJ5ianF.$o./n25XVfn6oAPaUvHe.Csk4zRfsYPi', "\xff\xa334\xff\xff\xff\xa3345" ),
- array( true, ':bcrypt:5$/OK.fbVrR/bpIqNJ5ianF.$nRht2l/HRhr6zmCp9vYUvvsqynflf9e', "\xff\xa3345" ),
- array( true, ':bcrypt:5$/OK.fbVrR/bpIqNJ5ianF.$nRht2l/HRhr6zmCp9vYUvvsqynflf9e', "\xff\xa3345" ),
- array( true, ':bcrypt:5$/OK.fbVrR/bpIqNJ5ianF.$6IflQkJytoRVc1yuaNtHfiuq.FRlSIS', "\xa3ab" ),
- array( true, ':bcrypt:5$/OK.fbVrR/bpIqNJ5ianF.$6IflQkJytoRVc1yuaNtHfiuq.FRlSIS', "\xa3ab" ),
- array( true, ':bcrypt:5$/OK.fbVrR/bpIqNJ5ianF.$swQOIzjOiJ9GHEPuhEkvqrUyvWhEMx6', "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaachars after 72 are ignored as usual" ),
- array( true, ':bcrypt:5$/OK.fbVrR/bpIqNJ5ianF.$R9xrDjiycxMbQE2bp.vgqlYpW5wx2yy', "\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55" ),
- array( true, ':bcrypt:5$/OK.fbVrR/bpIqNJ5ianF.$9tQZzcJfm3uj2NvJ/n5xkhpqLrMpWCe', "\x55\xaa\xff\x55\xaa\xff\x55\xaa\xff\x55\xaa\xff\x55\xaa\xff\x55\xaa\xff\x55\xaa\xff\x55\xaa\xff\x55\xaa\xff\x55\xaa\xff\x55\xaa\xff\x55\xaa\xff\x55\xaa\xff\x55\xaa\xff\x55\xaa\xff\x55\xaa\xff\x55\xaa\xff\x55\xaa\xff\x55\xaa\xff\x55\xaa\xff\x55\xaa\xff\x55\xaa\xff\x55\xaa\xff\x55\xaa\xff" ),
- array( true, ':bcrypt:5$CCCCCCCCCCCCCCCCCCCCC.$7uG0VCzI2bS7j6ymqJi9CdcdxiRTWNy', "" ),
+ [ true, ':bcrypt:5$CCCCCCCCCCCCCCCCCCCCC.$E5YPO9kmyuRGyh0XouQYb4YMJKvyOeW', "U*U" ],
+ [ true, ':bcrypt:5$CCCCCCCCCCCCCCCCCCCCC.$VGOzA784oUp/Z0DY336zx7pLYAy0lwK', "U*U*" ],
+ [ true, ':bcrypt:5$XXXXXXXXXXXXXXXXXXXXXO$AcXxm9kjPGEMsLznoKqmqw7tc8WCx4a', "U*U*U" ],
+ [ true, ':bcrypt:5$abcdefghijklmnopqrstuu$5s2v8.iXieOjg/.AySBTTZIIVFJeBui', "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789chars after 72 are ignored" ],
+ [ true, ':bcrypt:5$/OK.fbVrR/bpIqNJ5ianF.$CE5elHaaO4EbggVDjb8P19RukzXSM3e', "\xff\xff\xa3" ],
+ [ true, ':bcrypt:5$/OK.fbVrR/bpIqNJ5ianF.$Sa7shbm4.OzKpvFnX1pQLmQW96oUlCq', "\xa3" ],
+ [ true, ':bcrypt:5$/OK.fbVrR/bpIqNJ5ianF.$Sa7shbm4.OzKpvFnX1pQLmQW96oUlCq', "\xa3" ],
+ [ true, ':bcrypt:5$/OK.fbVrR/bpIqNJ5ianF.$o./n25XVfn6oAPaUvHe.Csk4zRfsYPi', "\xff\xa334\xff\xff\xff\xa3345" ],
+ [ true, ':bcrypt:5$/OK.fbVrR/bpIqNJ5ianF.$nRht2l/HRhr6zmCp9vYUvvsqynflf9e', "\xff\xa3345" ],
+ [ true, ':bcrypt:5$/OK.fbVrR/bpIqNJ5ianF.$nRht2l/HRhr6zmCp9vYUvvsqynflf9e', "\xff\xa3345" ],
+ [ true, ':bcrypt:5$/OK.fbVrR/bpIqNJ5ianF.$6IflQkJytoRVc1yuaNtHfiuq.FRlSIS', "\xa3ab" ],
+ [ true, ':bcrypt:5$/OK.fbVrR/bpIqNJ5ianF.$6IflQkJytoRVc1yuaNtHfiuq.FRlSIS', "\xa3ab" ],
+ [ true, ':bcrypt:5$/OK.fbVrR/bpIqNJ5ianF.$swQOIzjOiJ9GHEPuhEkvqrUyvWhEMx6', "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaachars after 72 are ignored as usual" ],
+ [ true, ':bcrypt:5$/OK.fbVrR/bpIqNJ5ianF.$R9xrDjiycxMbQE2bp.vgqlYpW5wx2yy', "\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55" ],
+ [ true, ':bcrypt:5$/OK.fbVrR/bpIqNJ5ianF.$9tQZzcJfm3uj2NvJ/n5xkhpqLrMpWCe', "\x55\xaa\xff\x55\xaa\xff\x55\xaa\xff\x55\xaa\xff\x55\xaa\xff\x55\xaa\xff\x55\xaa\xff\x55\xaa\xff\x55\xaa\xff\x55\xaa\xff\x55\xaa\xff\x55\xaa\xff\x55\xaa\xff\x55\xaa\xff\x55\xaa\xff\x55\xaa\xff\x55\xaa\xff\x55\xaa\xff\x55\xaa\xff\x55\xaa\xff\x55\xaa\xff\x55\xaa\xff\x55\xaa\xff\x55\xaa\xff" ],
+ [ true, ':bcrypt:5$CCCCCCCCCCCCCCCCCCCCC.$7uG0VCzI2bS7j6ymqJi9CdcdxiRTWNy', "" ],
// One or two false sanity tests
- array( false, ':bcrypt:5$CCCCCCCCCCCCCCCCCCCCC.$E5YPO9kmyuRGyh0XouQYb4YMJKvyOeW', "UXU" ),
- array( false, ':bcrypt:5$CCCCCCCCCCCCCCCCCCCCC.$E5YPO9kmyuRGyh0XouQYb4YMJKvyOeW', "" ),
- );
+ [ false, ':bcrypt:5$CCCCCCCCCCCCCCCCCCCCC.$E5YPO9kmyuRGyh0XouQYb4YMJKvyOeW', "UXU" ],
+ [ false, ':bcrypt:5$CCCCCCCCCCCCCCCCCCCCC.$E5YPO9kmyuRGyh0XouQYb4YMJKvyOeW', "" ],
+ ];
// @codingStandardsIgnoreEnd
}
}
diff --git a/tests/phpunit/includes/password/LayeredParameterizedPasswordTest.php b/tests/phpunit/includes/password/LayeredParameterizedPasswordTest.php
index cccec5fb5c..773f033abb 100644
--- a/tests/phpunit/includes/password/LayeredParameterizedPasswordTest.php
+++ b/tests/phpunit/includes/password/LayeredParameterizedPasswordTest.php
@@ -28,9 +28,13 @@ class LayeredParameterizedPasswordTest extends PasswordTestCase {
public static function providePasswordTests() {
// @codingStandardsIgnoreStart Generic.Files.LineLength.TooLong
- return array(
- array( true, ':testLargeLayeredTop:sha512:1024:512!sha512:1024:512!sha512:1024:512!sha512:1024:512!5!vnRy+2SrSA0fHt3dwhTP5g==!AVnwfZsAQjn+gULv7FSGjA==!xvHUX3WcpkeSn1lvjWcvBg==!It+OC/N9tu+d3ByHhuB0BQ==!Tb.gqUOiD.aWktVwHM.Q/O!7CcyMfXUPky5ptyATJsR2nq3vUqtnBC', 'testPassword123' ),
- );
+ return [
+ [
+ true,
+ ':testLargeLayeredTop:sha512:1024:512!sha512:1024:512!sha512:1024:512!sha512:1024:512!5!vnRy+2SrSA0fHt3dwhTP5g==!AVnwfZsAQjn+gULv7FSGjA==!xvHUX3WcpkeSn1lvjWcvBg==!It+OC/N9tu+d3ByHhuB0BQ==!Tb.gqUOiD.aWktVwHM.Q/O!7CcyMfXUPky5ptyATJsR2nq3vUqtnBC',
+ 'testPassword123'
+ ],
+ ];
// @codingStandardsIgnoreEnd
}
diff --git a/tests/phpunit/includes/resourceloader/ResourceLoaderTest.php b/tests/phpunit/includes/resourceloader/ResourceLoaderTest.php
index 2dfed62c18..65cd6edaf9 100644
--- a/tests/phpunit/includes/resourceloader/ResourceLoaderTest.php
+++ b/tests/phpunit/includes/resourceloader/ResourceLoaderTest.php
@@ -188,7 +188,7 @@ class ResourceLoaderTest extends ResourceLoaderTestCase {
'messages' => [ 'example' => '' ],
'templates' => [],
- 'expected' => 'mw.loader.implement( "test.example", function ( $, jQuery ) {
+ 'expected' => 'mw.loader.implement( "test.example", function ( $, jQuery, require, module ) {
mw.example();
}, {
"css": [
@@ -207,7 +207,7 @@ mw.example();
'messages' => new XmlJsCode( '{}' ),
'templates' => [],
- 'expected' => 'mw.loader.implement( "test.example", function ( $, jQuery ) {
+ 'expected' => 'mw.loader.implement( "test.example", function ( $, jQuery, require, module ) {
mw.example();
} );',
] ],
@@ -235,7 +235,7 @@ mw.example();
'messages' => [ 'example' => '' ],
'templates' => [],
- 'expected' => 'mw.loader.implement( "test.example", function ( $, jQuery ) {
+ 'expected' => 'mw.loader.implement( "test.example", function ( $, jQuery, require, module ) {
mw.example();
}, {}, {
"example": ""
@@ -250,7 +250,7 @@ mw.example();
'messages' => new XmlJsCode( '{}' ),
'templates' => [ 'example.html' => '' ],
- 'expected' => 'mw.loader.implement( "test.example", function ( $, jQuery ) {
+ 'expected' => 'mw.loader.implement( "test.example", function ( $, jQuery, require, module ) {
mw.example();
}, {}, {}, {
"example.html": ""
diff --git a/tests/phpunit/includes/search/SearchEnginePrefixTest.php b/tests/phpunit/includes/search/SearchEnginePrefixTest.php
index 6a3f95bb22..9ed52444ea 100644
--- a/tests/phpunit/includes/search/SearchEnginePrefixTest.php
+++ b/tests/phpunit/includes/search/SearchEnginePrefixTest.php
@@ -1,4 +1,6 @@
setMwGlobals( 'wgSpecialPages', [] );
- $this->search = SearchEngine::create();
+ $this->search = MediaWikiServices::getInstance()->newSearchEngine();
$this->search->setNamespaces( [] );
}
diff --git a/tests/phpunit/includes/session/BotPasswordSessionProviderTest.php b/tests/phpunit/includes/session/BotPasswordSessionProviderTest.php
index d76d9dfc8a..edab0dcf4a 100644
--- a/tests/phpunit/includes/session/BotPasswordSessionProviderTest.php
+++ b/tests/phpunit/includes/session/BotPasswordSessionProviderTest.php
@@ -33,8 +33,8 @@ class BotPasswordSessionProviderTest extends MediaWikiTestCase {
'EnableBotPasswords' => true,
'BotPasswordsDatabase' => false,
'SessionProviders' => $wgSessionProviders + [
- 'MediaWiki\\Session\\BotPasswordSessionProvider' => [
- 'class' => 'MediaWiki\\Session\\BotPasswordSessionProvider',
+ BotPasswordSessionProvider::class => [
+ 'class' => BotPasswordSessionProvider::class,
'args' => [ $params ],
]
],
@@ -46,7 +46,7 @@ class BotPasswordSessionProviderTest extends MediaWikiTestCase {
'store' => new TestBagOStuff,
] );
- return $manager->getProvider( 'MediaWiki\\Session\\BotPasswordSessionProvider' );
+ return $manager->getProvider( BotPasswordSessionProvider::class );
}
protected function setUp() {
@@ -172,7 +172,7 @@ class BotPasswordSessionProviderTest extends MediaWikiTestCase {
}
$info = $provider->provideSessionInfo( $request );
- $this->assertInstanceOf( 'MediaWiki\\Session\\SessionInfo', $info );
+ $this->assertInstanceOf( SessionInfo::class, $info );
$this->assertSame( 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', $info->getId() );
$this->config->set( 'EnableBotPasswords', false );
@@ -191,7 +191,7 @@ class BotPasswordSessionProviderTest extends MediaWikiTestCase {
$bp = \BotPassword::newFromUser( $user, 'BotPasswordSessionProvider' );
$session = $provider->newSessionForRequest( $user, $bp, $request );
- $this->assertInstanceOf( 'MediaWiki\\Session\\Session', $session );
+ $this->assertInstanceOf( Session::class, $session );
$this->assertEquals( $session->getId(), $request->getSession()->getId() );
$this->assertEquals( $user->getName(), $session->getUser()->getName() );
diff --git a/tests/phpunit/includes/session/ImmutableSessionProviderWithCookieTest.php b/tests/phpunit/includes/session/ImmutableSessionProviderWithCookieTest.php
index 2412a3b68e..d705fc0191 100644
--- a/tests/phpunit/includes/session/ImmutableSessionProviderWithCookieTest.php
+++ b/tests/phpunit/includes/session/ImmutableSessionProviderWithCookieTest.php
@@ -24,7 +24,7 @@ class ImmutableSessionProviderWithCookieTest extends MediaWikiTestCase {
$params['sessionCookieOptions']['prefix'] = $prefix;
}
- $provider = $this->getMockBuilder( 'MediaWiki\\Session\\ImmutableSessionProviderWithCookie' )
+ $provider = $this->getMockBuilder( ImmutableSessionProviderWithCookie::class )
->setConstructorArgs( [ $params ] )
->getMockForAbstractClass();
$provider->setLogger( new \TestLogger() );
@@ -35,13 +35,13 @@ class ImmutableSessionProviderWithCookieTest extends MediaWikiTestCase {
}
public function testConstructor() {
- $provider = $this->getMockBuilder( 'MediaWiki\\Session\\ImmutableSessionProviderWithCookie' )
+ $provider = $this->getMockBuilder( ImmutableSessionProviderWithCookie::class )
->getMockForAbstractClass();
$priv = \TestingAccessWrapper::newFromObject( $provider );
$this->assertNull( $priv->sessionCookieName );
$this->assertSame( [], $priv->sessionCookieOptions );
- $provider = $this->getMockBuilder( 'MediaWiki\\Session\\ImmutableSessionProviderWithCookie' )
+ $provider = $this->getMockBuilder( ImmutableSessionProviderWithCookie::class )
->setConstructorArgs( [ [
'sessionCookieName' => 'Foo',
'sessionCookieOptions' => [ 'Bar' ],
@@ -52,7 +52,7 @@ class ImmutableSessionProviderWithCookieTest extends MediaWikiTestCase {
$this->assertSame( [ 'Bar' ], $priv->sessionCookieOptions );
try {
- $provider = $this->getMockBuilder( 'MediaWiki\\Session\\ImmutableSessionProviderWithCookie' )
+ $provider = $this->getMockBuilder( ImmutableSessionProviderWithCookie::class )
->setConstructorArgs( [ [
'sessionCookieName' => false,
] ] )
@@ -66,7 +66,7 @@ class ImmutableSessionProviderWithCookieTest extends MediaWikiTestCase {
}
try {
- $provider = $this->getMockBuilder( 'MediaWiki\\Session\\ImmutableSessionProviderWithCookie' )
+ $provider = $this->getMockBuilder( ImmutableSessionProviderWithCookie::class )
->setConstructorArgs( [ [
'sessionCookieOptions' => 'x',
] ] )
diff --git a/tests/phpunit/includes/session/PHPSessionHandlerTest.php b/tests/phpunit/includes/session/PHPSessionHandlerTest.php
index 05773a9a5c..ce0f1b0611 100644
--- a/tests/phpunit/includes/session/PHPSessionHandlerTest.php
+++ b/tests/phpunit/includes/session/PHPSessionHandlerTest.php
@@ -23,7 +23,7 @@ class PHPSessionHandlerTest extends MediaWikiTestCase {
} );
$reset[] = new \ScopedCallback( 'restore_error_handler' );
- $rProp = new \ReflectionProperty( 'MediaWiki\\Session\\PHPSessionHandler', 'instance' );
+ $rProp = new \ReflectionProperty( PHPSessionHandler::class, 'instance' );
$rProp->setAccessible( true );
if ( $rProp->getValue() ) {
$old = \TestingAccessWrapper::newFromObject( $rProp->getValue() );
@@ -31,7 +31,7 @@ class PHPSessionHandlerTest extends MediaWikiTestCase {
$oldStore = $old->store;
$oldLogger = $old->logger;
$reset[] = new \ScopedCallback(
- [ 'MediaWiki\\Session\\PHPSessionHandler', 'install' ],
+ [ PHPSessionHandler::class, 'install' ],
[ $oldManager, $oldStore, $oldLogger ]
);
}
@@ -41,13 +41,13 @@ class PHPSessionHandlerTest extends MediaWikiTestCase {
public function testEnableFlags() {
$handler = \TestingAccessWrapper::newFromObject(
- $this->getMockBuilder( 'MediaWiki\\Session\\PHPSessionHandler' )
+ $this->getMockBuilder( PHPSessionHandler::class )
->setMethods( null )
->disableOriginalConstructor()
->getMock()
);
- $rProp = new \ReflectionProperty( 'MediaWiki\\Session\\PHPSessionHandler', 'instance' );
+ $rProp = new \ReflectionProperty( PHPSessionHandler::class, 'instance' );
$rProp->setAccessible( true );
$reset = new \ScopedCallback( [ $rProp, 'setValue' ], [ $rProp->getValue() ] );
$rProp->setValue( $handler );
@@ -325,9 +325,9 @@ class PHPSessionHandlerTest extends MediaWikiTestCase {
* @expectedExceptionMessage Attempt to use PHP session management
*/
public function testDisabled( $method, $args ) {
- $rProp = new \ReflectionProperty( 'MediaWiki\\Session\\PHPSessionHandler', 'instance' );
+ $rProp = new \ReflectionProperty( PHPSessionHandler::class, 'instance' );
$rProp->setAccessible( true );
- $handler = $this->getMockBuilder( 'MediaWiki\\Session\\PHPSessionHandler' )
+ $handler = $this->getMockBuilder( PHPSessionHandler::class )
->setMethods( null )
->disableOriginalConstructor()
->getMock();
@@ -354,7 +354,7 @@ class PHPSessionHandlerTest extends MediaWikiTestCase {
* @expectedExceptionMessageRegExp /: Wrong instance called!$/
*/
public function testWrongInstance( $method, $args ) {
- $handler = $this->getMockBuilder( 'MediaWiki\\Session\\PHPSessionHandler' )
+ $handler = $this->getMockBuilder( PHPSessionHandler::class )
->setMethods( null )
->disableOriginalConstructor()
->getMock();
diff --git a/tests/phpunit/includes/session/SessionBackendTest.php b/tests/phpunit/includes/session/SessionBackendTest.php
index 7459ed2528..0b5f4c2f8f 100644
--- a/tests/phpunit/includes/session/SessionBackendTest.php
+++ b/tests/phpunit/includes/session/SessionBackendTest.php
@@ -184,8 +184,8 @@ class SessionBackendTest extends MediaWikiTestCase {
$request2 = new \FauxRequest();
$session2 = $backend->getSession( $request2 );
- $this->assertInstanceOf( 'MediaWiki\\Session\\Session', $session1 );
- $this->assertInstanceOf( 'MediaWiki\\Session\\Session', $session2 );
+ $this->assertInstanceOf( Session::class, $session1 );
+ $this->assertInstanceOf( Session::class, $session2 );
$this->assertSame( 2, count( $priv->requests ) );
$index = \TestingAccessWrapper::newFromObject( $session1 )->index;
@@ -819,7 +819,7 @@ class SessionBackendTest extends MediaWikiTestCase {
PHPSessionHandler::install( SessionManager::singleton() );
}
if ( !PHPSessionHandler::isEnabled() ) {
- $rProp = new \ReflectionProperty( 'MediaWiki\\Session\\PHPSessionHandler', 'instance' );
+ $rProp = new \ReflectionProperty( PHPSessionHandler::class, 'instance' );
$rProp->setAccessible( true );
$handler = \TestingAccessWrapper::newFromObject( $rProp->getValue() );
$resetHandler = new \ScopedCallback( function () use ( $handler ) {
@@ -859,7 +859,7 @@ class SessionBackendTest extends MediaWikiTestCase {
PHPSessionHandler::install( SessionManager::singleton() );
}
if ( !PHPSessionHandler::isEnabled() ) {
- $rProp = new \ReflectionProperty( 'MediaWiki\\Session\\PHPSessionHandler', 'instance' );
+ $rProp = new \ReflectionProperty( PHPSessionHandler::class, 'instance' );
$rProp->setAccessible( true );
$handler = \TestingAccessWrapper::newFromObject( $rProp->getValue() );
$resetHandler = new \ScopedCallback( function () use ( $handler ) {
@@ -895,7 +895,7 @@ class SessionBackendTest extends MediaWikiTestCase {
PHPSessionHandler::install( SessionManager::singleton() );
}
if ( !PHPSessionHandler::isEnabled() ) {
- $rProp = new \ReflectionProperty( 'MediaWiki\\Session\\PHPSessionHandler', 'instance' );
+ $rProp = new \ReflectionProperty( PHPSessionHandler::class, 'instance' );
$rProp->setAccessible( true );
$handler = \TestingAccessWrapper::newFromObject( $rProp->getValue() );
$resetHandler = new \ScopedCallback( function () use ( $handler ) {
diff --git a/tests/phpunit/includes/session/SessionInfoTest.php b/tests/phpunit/includes/session/SessionInfoTest.php
index e7021257ba..ff22bfad42 100644
--- a/tests/phpunit/includes/session/SessionInfoTest.php
+++ b/tests/phpunit/includes/session/SessionInfoTest.php
@@ -61,7 +61,7 @@ class SessionInfoTest extends MediaWikiTestCase {
}
$manager = new SessionManager();
- $provider = $this->getMockBuilder( 'MediaWiki\\Session\\SessionProvider' )
+ $provider = $this->getMockBuilder( SessionProvider::class )
->setMethods( [ 'persistsSessionId', 'canChangeUser', '__toString' ] )
->getMockForAbstractClass();
$provider->setManager( $manager );
@@ -72,7 +72,7 @@ class SessionInfoTest extends MediaWikiTestCase {
$provider->expects( $this->any() )->method( '__toString' )
->will( $this->returnValue( 'Mock' ) );
- $provider2 = $this->getMockBuilder( 'MediaWiki\\Session\\SessionProvider' )
+ $provider2 = $this->getMockBuilder( SessionProvider::class )
->setMethods( [ 'persistsSessionId', 'canChangeUser', '__toString' ] )
->getMockForAbstractClass();
$provider2->setManager( $manager );
diff --git a/tests/phpunit/includes/session/SessionManagerTest.php b/tests/phpunit/includes/session/SessionManagerTest.php
index b0f84fcd65..d04d7ec46d 100644
--- a/tests/phpunit/includes/session/SessionManagerTest.php
+++ b/tests/phpunit/includes/session/SessionManagerTest.php
@@ -48,7 +48,7 @@ class SessionManagerTest extends MediaWikiTestCase {
$reset = TestUtils::setSessionManagerSingleton( null );
$singleton = SessionManager::singleton();
- $this->assertInstanceOf( 'MediaWiki\\Session\\SessionManager', $singleton );
+ $this->assertInstanceOf( SessionManager::class, $singleton );
$this->assertSame( $singleton, SessionManager::singleton() );
}
@@ -58,7 +58,7 @@ class SessionManagerTest extends MediaWikiTestCase {
if ( !PHPSessionHandler::isInstalled() ) {
PHPSessionHandler::install( SessionManager::singleton() );
}
- $rProp = new \ReflectionProperty( 'MediaWiki\\Session\\PHPSessionHandler', 'instance' );
+ $rProp = new \ReflectionProperty( PHPSessionHandler::class, 'instance' );
$rProp->setAccessible( true );
$handler = \TestingAccessWrapper::newFromObject( $rProp->getValue() );
$oldEnable = $handler->enable;
@@ -191,7 +191,7 @@ class SessionManagerTest extends MediaWikiTestCase {
$request->info1 = null;
$request->info2 = null;
$session = $manager->getSessionForRequest( $request );
- $this->assertInstanceOf( 'MediaWiki\\Session\\Session', $session );
+ $this->assertInstanceOf( Session::class, $session );
$this->assertSame( $idEmpty, $session->getId() );
$this->assertFalse( $request->unpersist1 );
$this->assertFalse( $request->unpersist2 );
@@ -210,7 +210,7 @@ class SessionManagerTest extends MediaWikiTestCase {
'idIsSafe' => true,
] );
$session = $manager->getSessionForRequest( $request );
- $this->assertInstanceOf( 'MediaWiki\\Session\\Session', $session );
+ $this->assertInstanceOf( Session::class, $session );
$this->assertSame( $id2, $session->getId() );
$this->assertFalse( $request->unpersist1 );
$this->assertFalse( $request->unpersist2 );
@@ -228,7 +228,7 @@ class SessionManagerTest extends MediaWikiTestCase {
'idIsSafe' => true,
] );
$session = $manager->getSessionForRequest( $request );
- $this->assertInstanceOf( 'MediaWiki\\Session\\Session', $session );
+ $this->assertInstanceOf( Session::class, $session );
$this->assertSame( $id1, $session->getId() );
$this->assertFalse( $request->unpersist1 );
$this->assertFalse( $request->unpersist2 );
@@ -299,7 +299,7 @@ class SessionManagerTest extends MediaWikiTestCase {
'idIsSafe' => true,
] );
$session = $manager->getSessionForRequest( $request );
- $this->assertInstanceOf( 'MediaWiki\\Session\\Session', $session );
+ $this->assertInstanceOf( Session::class, $session );
$this->assertSame( $id2, $session->getId() );
$this->logger->setCollect( false );
$this->assertTrue( $request->unpersist1 );
@@ -321,7 +321,7 @@ class SessionManagerTest extends MediaWikiTestCase {
'idIsSafe' => true,
] );
$session = $manager->getSessionForRequest( $request );
- $this->assertInstanceOf( 'MediaWiki\\Session\\Session', $session );
+ $this->assertInstanceOf( Session::class, $session );
$this->assertSame( $id1, $session->getId() );
$this->logger->setCollect( false );
$this->assertFalse( $request->unpersist1 );
@@ -338,7 +338,7 @@ class SessionManagerTest extends MediaWikiTestCase {
] );
$request->info2 = null;
$session = $manager->getSessionForRequest( $request );
- $this->assertInstanceOf( 'MediaWiki\\Session\\Session', $session );
+ $this->assertInstanceOf( Session::class, $session );
$this->assertSame( $id1, $session->getId() );
$this->assertTrue( $request->unpersist1 ); // The saving of the session does it
$this->assertFalse( $request->unpersist2 );
@@ -358,7 +358,7 @@ class SessionManagerTest extends MediaWikiTestCase {
// Unknown session ID
$id = $manager->generateSessionId();
$session = $manager->getSessionById( $id, true );
- $this->assertInstanceOf( 'MediaWiki\\Session\\Session', $session );
+ $this->assertInstanceOf( Session::class, $session );
$this->assertSame( $id, $session->getId() );
$id = $manager->generateSessionId();
@@ -379,7 +379,7 @@ class SessionManagerTest extends MediaWikiTestCase {
// Known session ID
$this->store->setSession( $id, [] );
$session = $manager->getSessionById( $id, false );
- $this->assertInstanceOf( 'MediaWiki\\Session\\Session', $session );
+ $this->assertInstanceOf( Session::class, $session );
$this->assertSame( $id, $session->getId() );
// Store isn't checked if the session is already loaded
@@ -388,7 +388,7 @@ class SessionManagerTest extends MediaWikiTestCase {
'userToken' => 'bad',
] ] );
$session2 = $manager->getSessionById( $id, false );
- $this->assertInstanceOf( 'MediaWiki\\Session\\Session', $session2 );
+ $this->assertInstanceOf( Session::class, $session2 );
$this->assertSame( $id, $session2->getId() );
unset( $session, $session2 );
$this->logger->setCollect( true );
@@ -484,7 +484,7 @@ class SessionManagerTest extends MediaWikiTestCase {
] );
$info2 = null;
$session = $manager->getEmptySession();
- $this->assertInstanceOf( 'MediaWiki\\Session\\Session', $session );
+ $this->assertInstanceOf( Session::class, $session );
$this->assertSame( 'empty---------------------------', $session->getId() );
// Info, explicitly
@@ -497,7 +497,7 @@ class SessionManagerTest extends MediaWikiTestCase {
] );
$info2 = null;
$session = $pmanager->getEmptySessionInternal( null, $expectId );
- $this->assertInstanceOf( 'MediaWiki\\Session\\Session', $session );
+ $this->assertInstanceOf( Session::class, $session );
$this->assertSame( $expectId, $session->getId() );
// Wrong ID
@@ -572,7 +572,7 @@ class SessionManagerTest extends MediaWikiTestCase {
'idIsSafe' => true,
] );
$session = $manager->getEmptySession();
- $this->assertInstanceOf( 'MediaWiki\\Session\\Session', $session );
+ $this->assertInstanceOf( Session::class, $session );
$this->assertSame( 'empty1--------------------------', $session->getId() );
$expectId = null;
@@ -589,7 +589,7 @@ class SessionManagerTest extends MediaWikiTestCase {
'idIsSafe' => true,
] );
$session = $manager->getEmptySession();
- $this->assertInstanceOf( 'MediaWiki\\Session\\Session', $session );
+ $this->assertInstanceOf( Session::class, $session );
$this->assertSame( 'empty2--------------------------', $session->getId() );
// Tied priorities throw an exception
@@ -751,8 +751,8 @@ class SessionManagerTest extends MediaWikiTestCase {
$manager = \TestingAccessWrapper::newFromObject( $this->getManager() );
$manager->setLogger( new \Psr\Log\NullLogger() );
- $mock = $this->getMock( 'stdClass', [ 'save' ] );
- $mock->expects( $this->once() )->method( 'save' );
+ $mock = $this->getMock( 'stdClass', [ 'shutdown' ] );
+ $mock->expects( $this->once() )->method( 'shutdown' );
$manager->allSessionBackends = [ $mock ];
$manager->shutdown();
@@ -1177,7 +1177,7 @@ class SessionManagerTest extends MediaWikiTestCase {
'provider' => 'Mock',
];
- $builder = $this->getMockBuilder( 'MediaWiki\\Session\\SessionProvider' )
+ $builder = $this->getMockBuilder( SessionProvider::class )
->setMethods( [ '__toString', 'mergeMetadata', 'refreshSessionInfo' ] );
$provider = $builder->getMockForAbstractClass();
@@ -1292,7 +1292,7 @@ class SessionManagerTest extends MediaWikiTestCase {
] );
$this->assertFalse( $info->isIdSafe(), 'sanity check' );
$this->assertTrue( $loadSessionInfoFromStore( $info ) );
- $this->assertInstanceOf( 'MediaWiki\\Session\\UserInfo', $info->getUserInfo() );
+ $this->assertInstanceOf( UserInfo::class, $info->getUserInfo() );
$this->assertTrue( $info->getUserInfo()->isVerified() );
$this->assertTrue( $info->getUserInfo()->isAnon() );
$this->assertFalse( $info->isIdSafe() );
diff --git a/tests/phpunit/includes/session/SessionProviderTest.php b/tests/phpunit/includes/session/SessionProviderTest.php
index e92eb09d1f..18b1efd460 100644
--- a/tests/phpunit/includes/session/SessionProviderTest.php
+++ b/tests/phpunit/includes/session/SessionProviderTest.php
@@ -16,7 +16,7 @@ class SessionProviderTest extends MediaWikiTestCase {
$logger = new \TestLogger();
$config = new \HashConfig();
- $provider = $this->getMockForAbstractClass( 'MediaWiki\\Session\\SessionProvider' );
+ $provider = $this->getMockForAbstractClass( SessionProvider::class );
$priv = \TestingAccessWrapper::newFromObject( $provider );
$provider->setConfig( $config );
@@ -53,7 +53,7 @@ class SessionProviderTest extends MediaWikiTestCase {
public function testNewSessionInfo( $persistId, $persistUser, $ok ) {
$manager = new SessionManager();
- $provider = $this->getMockBuilder( 'MediaWiki\\Session\\SessionProvider' )
+ $provider = $this->getMockBuilder( SessionProvider::class )
->setMethods( [ 'canChangeUser', 'persistsSessionId' ] )
->getMockForAbstractClass();
$provider->expects( $this->any() )->method( 'persistsSessionId' )
@@ -80,7 +80,7 @@ class SessionProviderTest extends MediaWikiTestCase {
}
public function testMergeMetadata() {
- $provider = $this->getMockBuilder( 'MediaWiki\\Session\\SessionProvider' )
+ $provider = $this->getMockBuilder( SessionProvider::class )
->getMockForAbstractClass();
try {
@@ -112,14 +112,14 @@ class SessionProviderTest extends MediaWikiTestCase {
}
public function testImmutableSessions() {
- $provider = $this->getMockBuilder( 'MediaWiki\\Session\\SessionProvider' )
+ $provider = $this->getMockBuilder( SessionProvider::class )
->setMethods( [ 'canChangeUser', 'persistsSessionId' ] )
->getMockForAbstractClass();
$provider->expects( $this->any() )->method( 'canChangeUser' )
->will( $this->returnValue( true ) );
$provider->preventSessionsForUser( 'Foo' );
- $provider = $this->getMockBuilder( 'MediaWiki\\Session\\SessionProvider' )
+ $provider = $this->getMockBuilder( SessionProvider::class )
->setMethods( [ 'canChangeUser', 'persistsSessionId' ] )
->getMockForAbstractClass();
$provider->expects( $this->any() )->method( 'canChangeUser' )
@@ -142,7 +142,7 @@ class SessionProviderTest extends MediaWikiTestCase {
'SecretKey' => 'Shhh!',
] );
- $provider = $this->getMockForAbstractClass( 'MediaWiki\\Session\\SessionProvider',
+ $provider = $this->getMockForAbstractClass( SessionProvider::class,
[], 'MockSessionProvider' );
$provider->setConfig( $config );
$priv = \TestingAccessWrapper::newFromObject( $provider );
@@ -172,7 +172,7 @@ class SessionProviderTest extends MediaWikiTestCase {
}
public function testDescribe() {
- $provider = $this->getMockForAbstractClass( 'MediaWiki\\Session\\SessionProvider',
+ $provider = $this->getMockForAbstractClass( SessionProvider::class,
[], 'MockSessionProvider' );
$this->assertSame(
@@ -182,7 +182,7 @@ class SessionProviderTest extends MediaWikiTestCase {
}
public function testGetAllowedUserRights() {
- $provider = $this->getMockForAbstractClass( 'MediaWiki\\Session\\SessionProvider' );
+ $provider = $this->getMockForAbstractClass( SessionProvider::class );
$backend = TestUtils::getDummySessionBackend();
try {
diff --git a/tests/phpunit/includes/session/SessionTest.php b/tests/phpunit/includes/session/SessionTest.php
index a4727c4364..e87f41d977 100644
--- a/tests/phpunit/includes/session/SessionTest.php
+++ b/tests/phpunit/includes/session/SessionTest.php
@@ -37,7 +37,7 @@ class SessionTest extends MediaWikiTestCase {
* @param bool $ret Whether the method returns a value
*/
public function testMethods( $m, $args, $index, $ret ) {
- $mock = $this->getMock( 'MediaWiki\\Session\\DummySessionBackend',
+ $mock = $this->getMock( DummySessionBackend::class,
[ $m, 'deregisterSession' ] );
$mock->expects( $this->once() )->method( 'deregisterSession' )
->with( $this->identicalTo( 42 ) );
@@ -224,7 +224,7 @@ class SessionTest extends MediaWikiTestCase {
$priv = \TestingAccessWrapper::newFromObject( $session );
$backend = $this->getMock(
- 'MediaWiki\\Session\\DummySessionBackend', [ 'canSetUser', 'setUser', 'save' ]
+ DummySessionBackend::class, [ 'canSetUser', 'setUser', 'save' ]
);
$backend->expects( $this->once() )->method( 'canSetUser' )
->will( $this->returnValue( true ) );
@@ -239,7 +239,7 @@ class SessionTest extends MediaWikiTestCase {
$this->assertTrue( $backend->dirty );
$backend = $this->getMock(
- 'MediaWiki\\Session\\DummySessionBackend', [ 'canSetUser', 'setUser', 'save' ]
+ DummySessionBackend::class, [ 'canSetUser', 'setUser', 'save' ]
);
$backend->data = [];
$backend->expects( $this->once() )->method( 'canSetUser' )
@@ -254,7 +254,7 @@ class SessionTest extends MediaWikiTestCase {
$this->assertFalse( $backend->dirty );
$backend = $this->getMock(
- 'MediaWiki\\Session\\DummySessionBackend', [ 'canSetUser', 'setUser', 'save' ]
+ DummySessionBackend::class, [ 'canSetUser', 'setUser', 'save' ]
);
$backend->expects( $this->once() )->method( 'canSetUser' )
->will( $this->returnValue( false ) );
@@ -267,7 +267,7 @@ class SessionTest extends MediaWikiTestCase {
}
public function testTokens() {
- $rc = new \ReflectionClass( 'MediaWiki\\Session\\Session' );
+ $rc = new \ReflectionClass( Session::class );
if ( !method_exists( $rc, 'newInstanceWithoutConstructor' ) ) {
$this->markTestSkipped(
'ReflectionClass::newInstanceWithoutConstructor isn\'t available'
diff --git a/tests/phpunit/includes/session/TestUtils.php b/tests/phpunit/includes/session/TestUtils.php
index 36175af26f..f1dc9e994b 100644
--- a/tests/phpunit/includes/session/TestUtils.php
+++ b/tests/phpunit/includes/session/TestUtils.php
@@ -18,15 +18,15 @@ class TestUtils {
session_write_close();
$rInstance = new \ReflectionProperty(
- 'MediaWiki\\Session\\SessionManager', 'instance'
+ SessionManager::class, 'instance'
);
$rInstance->setAccessible( true );
$rGlobalSession = new \ReflectionProperty(
- 'MediaWiki\\Session\\SessionManager', 'globalSession'
+ SessionManager::class, 'globalSession'
);
$rGlobalSession->setAccessible( true );
$rGlobalSessionRequest = new \ReflectionProperty(
- 'MediaWiki\\Session\\SessionManager', 'globalSessionRequest'
+ SessionManager::class, 'globalSessionRequest'
);
$rGlobalSessionRequest->setAccessible( true );
@@ -62,7 +62,7 @@ class TestUtils {
* fields necessary.
*/
public static function getDummySessionBackend() {
- $rc = new \ReflectionClass( 'MediaWiki\\Session\\SessionBackend' );
+ $rc = new \ReflectionClass( SessionBackend::class );
if ( !method_exists( $rc, 'newInstanceWithoutConstructor' ) ) {
\PHPUnit_Framework_Assert::markTestSkipped(
'ReflectionClass::newInstanceWithoutConstructor isn\'t available'
@@ -83,7 +83,7 @@ class TestUtils {
* @return Session
*/
public static function getDummySession( $backend = null, $index = -1, $logger = null ) {
- $rc = new \ReflectionClass( 'MediaWiki\\Session\\Session' );
+ $rc = new \ReflectionClass( Session::class );
if ( !method_exists( $rc, 'newInstanceWithoutConstructor' ) ) {
\PHPUnit_Framework_Assert::markTestSkipped(
'ReflectionClass::newInstanceWithoutConstructor isn\'t available'
diff --git a/tests/phpunit/includes/session/TokenTest.php b/tests/phpunit/includes/session/TokenTest.php
index 47b70aff3c..ca001f3654 100644
--- a/tests/phpunit/includes/session/TokenTest.php
+++ b/tests/phpunit/includes/session/TokenTest.php
@@ -11,7 +11,7 @@ use MediaWikiTestCase;
class TokenTest extends MediaWikiTestCase {
public function testBasics() {
- $token = $this->getMockBuilder( 'MediaWiki\\Session\\Token' )
+ $token = $this->getMockBuilder( Token::class )
->setMethods( [ 'toStringAtTimestamp' ] )
->setConstructorArgs( [ 'sekret', 'salty', true ] )
->getMock();
diff --git a/tests/phpunit/includes/site/DBSiteStoreTest.php b/tests/phpunit/includes/site/DBSiteStoreTest.php
index 4f4275db32..32dd7f282c 100644
--- a/tests/phpunit/includes/site/DBSiteStoreTest.php
+++ b/tests/phpunit/includes/site/DBSiteStoreTest.php
@@ -31,6 +31,15 @@
*/
class DBSiteStoreTest extends MediaWikiTestCase {
+ /**
+ * @return DBSiteStore
+ */
+ private function newDBSiteStore() {
+ // NOTE: Use the real DB load balancer for now. Eventually, the test framework should
+ // provide a LoadBalancer that is safe to use in unit tests.
+ return new DBSiteStore( wfGetLB() );
+ }
+
/**
* @covers DBSiteStore::getSites
*/
@@ -38,7 +47,7 @@ class DBSiteStoreTest extends MediaWikiTestCase {
$expectedSites = TestSites::getSites();
TestSites::insertIntoDb();
- $store = new DBSiteStore();
+ $store = $this->newDBSiteStore();
$sites = $store->getSites();
@@ -62,7 +71,7 @@ class DBSiteStoreTest extends MediaWikiTestCase {
* @covers DBSiteStore::saveSites
*/
public function testSaveSites() {
- $store = new DBSiteStore();
+ $store = $this->newDBSiteStore();
$sites = [];
@@ -95,8 +104,8 @@ class DBSiteStoreTest extends MediaWikiTestCase {
* @covers DBSiteStore::reset
*/
public function testReset() {
- $store1 = new DBSiteStore();
- $store2 = new DBSiteStore();
+ $store1 = $this->newDBSiteStore();
+ $store2 = $this->newDBSiteStore();
// initialize internal cache
$this->assertGreaterThan( 0, $store1->getSites()->count() );
@@ -121,7 +130,7 @@ class DBSiteStoreTest extends MediaWikiTestCase {
* @covers DBSiteStore::clear
*/
public function testClear() {
- $store = new DBSiteStore();
+ $store = $this->newDBSiteStore();
$this->assertTrue( $store->clear() );
$site = $store->getSite( 'enwiki' );
@@ -135,7 +144,7 @@ class DBSiteStoreTest extends MediaWikiTestCase {
* @covers DBSiteStore::getSites
*/
public function testGetSitesDefaultOrder() {
- $store = new DBSiteStore();
+ $store = $this->newDBSiteStore();
$siteB = new Site();
$siteB->setGlobalId( 'B' );
$siteA = new Site();
diff --git a/tests/phpunit/includes/site/SiteSQLStoreTest.php b/tests/phpunit/includes/site/SiteSQLStoreTest.php
deleted file mode 100644
index 6908800698..0000000000
--- a/tests/phpunit/includes/site/SiteSQLStoreTest.php
+++ /dev/null
@@ -1,40 +0,0 @@
-
- */
-class SiteSQLStoreTest extends MediaWikiTestCase {
-
- /**
- * @covers SiteSQLStore::newInstance
- */
- public function testNewInstance() {
- $siteStore = SiteSQLStore::newInstance();
- $this->assertInstanceOf( 'SiteSQLStore', $siteStore );
- }
-
-}
diff --git a/tests/phpunit/includes/site/TestSites.php b/tests/phpunit/includes/site/TestSites.php
index d7865d4849..6597906e51 100644
--- a/tests/phpunit/includes/site/TestSites.php
+++ b/tests/phpunit/includes/site/TestSites.php
@@ -107,7 +107,7 @@ class TestSites {
* @since 0.1
*/
public static function insertIntoDb() {
- $sitesTable = new DBSiteStore();
+ $sitesTable = \MediaWiki\MediaWikiServices::getInstance()->getSiteStore();
$sitesTable->clear();
$sitesTable->saveSites( TestSites::getSites() );
}
diff --git a/tests/phpunit/includes/specialpage/SpecialPageFactoryTest.php b/tests/phpunit/includes/specialpage/SpecialPageFactoryTest.php
index 534cf9baf7..3d407fbc32 100644
--- a/tests/phpunit/includes/specialpage/SpecialPageFactoryTest.php
+++ b/tests/phpunit/includes/specialpage/SpecialPageFactoryTest.php
@@ -55,19 +55,17 @@ class SpecialPageFactoryTest extends MediaWikiTestCase {
$specialPageTestHelper = new SpecialPageTestHelper();
return [
- 'class name' => [ 'SpecialAllPages', false ],
+ 'class name' => [ 'SpecialAllPages' ],
'closure' => [ function () {
return new SpecialAllPages();
- }, false ],
- 'function' => [ [ $this, 'newSpecialAllPages' ], false ],
- 'callback string' => [ 'SpecialPageTestHelper::newSpecialAllPages', false ],
+ } ],
+ 'function' => [ [ $this, 'newSpecialAllPages' ] ],
+ 'callback string' => [ 'SpecialPageTestHelper::newSpecialAllPages' ],
'callback with object' => [
- [ $specialPageTestHelper, 'newSpecialAllPages' ],
- false
+ [ $specialPageTestHelper, 'newSpecialAllPages' ]
],
'callback array' => [
- [ 'SpecialPageTestHelper', 'newSpecialAllPages' ],
- false
+ [ 'SpecialPageTestHelper', 'newSpecialAllPages' ]
]
];
}
@@ -76,7 +74,7 @@ class SpecialPageFactoryTest extends MediaWikiTestCase {
* @covers SpecialPageFactory::getPage
* @dataProvider specialPageProvider
*/
- public function testGetPage( $spec, $shouldReuseInstance ) {
+ public function testGetPage( $spec ) {
$this->mergeMwGlobalArrayValue( 'wgSpecialPages', [ 'testdummy' => $spec ] );
SpecialPageFactory::resetList();
@@ -84,7 +82,7 @@ class SpecialPageFactoryTest extends MediaWikiTestCase {
$this->assertInstanceOf( 'SpecialPage', $page );
$page2 = SpecialPageFactory::getPage( 'testdummy' );
- $this->assertEquals( $shouldReuseInstance, $page2 === $page, "Should re-use instance:" );
+ $this->assertEquals( true, $page2 === $page, "Should re-use instance:" );
}
/**
diff --git a/tests/phpunit/includes/specials/SpecialEditWatchlistTest.php b/tests/phpunit/includes/specials/SpecialEditWatchlistTest.php
new file mode 100644
index 0000000000..cd84d7990f
--- /dev/null
+++ b/tests/phpunit/includes/specials/SpecialEditWatchlistTest.php
@@ -0,0 +1,50 @@
+setExpectedException( 'UserNotLoggedIn' );
+ $this->executeSpecialPage();
+ }
+
+ public function testRootPage_displaysExplanationMessage() {
+ $user = new TestUser( __METHOD__ );
+ list( $html, ) = $this->executeSpecialPage( '', null, 'qqx', $user->getUser() );
+ $this->assertContains( '(watchlistedit-normal-explain)', $html );
+ }
+
+ public function testClearPage_hasClearButtonForm() {
+ $user = new TestUser( __METHOD__ );
+ list( $html, ) = $this->executeSpecialPage( 'clear', null, 'qqx', $user->getUser() );
+ $this->assertRegExp(
+ '//',
+ $html
+ );
+ }
+
+ public function testEditRawPage_hasTitlesBox() {
+ $user = new TestUser( __METHOD__ );
+ list( $html, ) = $this->executeSpecialPage( 'raw', null, 'qqx', $user->getUser() );
+ $this->assertContains(
+ 'newContext( $request, $language, $user );
+
+ $output = new OutputPage( $context );
+ $context->setOutput( $output );
+
+ $page->setContext( $context );
+ $output->setTitle( $page->getPageTitle() );
+
+ $html = $this->getHTMLFromSpecialPage( $page, $subPage );
+ $response = $context->getRequest()->response();
+
+ if ( $response instanceof FauxResponse ) {
+ $code = $response->getStatusCode();
+
+ if ( $code > 0 ) {
+ $response->header( 'Status: ' . $code . ' ' . HttpStatus::getMessage( $code ) );
+ }
+ }
+
+ return [ $html, $response ];
+ }
+
+ /**
+ * @param WebRequest|null $request
+ * @param Language|string|null $language
+ * @param User|null $user
+ *
+ * @return DerivativeContext
+ */
+ private function newContext(
+ WebRequest $request = null,
+ $language = null,
+ User $user = null
+ ) {
+ $context = new DerivativeContext( RequestContext::getMain() );
+
+ $context->setRequest( $request ?: new FauxRequest() );
+
+ if ( $language !== null ) {
+ $context->setLanguage( $language );
+ }
+
+ if ( $user !== null ) {
+ $context->setUser( $user );
+ }
+
+ $this->setEditTokenFromUser( $context );
+
+ return $context;
+ }
+
+ /**
+ * If we are trying to edit and no token is set, supply one.
+ *
+ * @param DerivativeContext $context
+ */
+ private function setEditTokenFromUser( DerivativeContext $context ) {
+ $request = $context->getRequest();
+
+ // Edits via GET are a security issue and should not succeed. On the other hand, not all
+ // POST requests are edits, but should ignore unused parameters.
+ if ( !$request->getCheck( 'wpEditToken' ) && $request->wasPosted() ) {
+ $request->setVal( 'wpEditToken', $context->getUser()->getEditToken() );
+ }
+ }
+
+ /**
+ * @param SpecialPage $page
+ * @param string $subPage
+ *
+ * @throws Exception
+ * @return string HTML
+ */
+ private function getHTMLFromSpecialPage( SpecialPage $page, $subPage ) {
+ ob_start();
+
+ try {
+ $page->execute( $subPage );
+
+ $output = $page->getOutput();
+
+ if ( $output->getRedirect() !== '' ) {
+ $output->output();
+ $html = ob_get_contents();
+ } elseif ( $output->isDisabled() ) {
+ $html = ob_get_contents();
+ } else {
+ $html = $output->getHTML();
+ }
+ } catch ( Exception $ex ) {
+ ob_end_clean();
+
+ // Re-throw exception after "finally" handling because PHP 5.3 doesn't have "finally".
+ throw $ex;
+ }
+
+ ob_end_clean();
+
+ return $html;
+ }
+
+}
diff --git a/tests/phpunit/includes/specials/SpecialPageTestBase.php b/tests/phpunit/includes/specials/SpecialPageTestBase.php
index 48baa8e79e..2f091d5d06 100644
--- a/tests/phpunit/includes/specials/SpecialPageTestBase.php
+++ b/tests/phpunit/includes/specials/SpecialPageTestBase.php
@@ -60,106 +60,13 @@ abstract class SpecialPageTestBase extends MediaWikiTestCase {
$language = null,
User $user = null
) {
- $context = $this->newContext( $request, $language, $user );
-
- $output = new OutputPage( $context );
- $context->setOutput( $output );
-
- $page = $this->newSpecialPage();
- $page->setContext( $context );
- $output->setTitle( $page->getPageTitle() );
-
- $html = $this->getHTMLFromSpecialPage( $page, $subPage );
- $response = $context->getRequest()->response();
-
- if ( $response instanceof FauxResponse ) {
- $code = $response->getStatusCode();
-
- if ( $code > 0 ) {
- $response->header( 'Status: ' . $code . ' ' . HttpStatus::getMessage( $code ) );
- }
- }
-
- return [ $html, $response ];
- }
-
- /**
- * @param WebRequest|null $request
- * @param Language|string|null $language
- * @param User|null $user
- *
- * @return DerivativeContext
- */
- private function newContext(
- WebRequest $request = null,
- $language = null,
- User $user = null
- ) {
- $context = new DerivativeContext( RequestContext::getMain() );
-
- $context->setRequest( $request ?: new FauxRequest() );
-
- if ( $language !== null ) {
- $context->setLanguage( $language );
- }
-
- if ( $user !== null ) {
- $context->setUser( $user );
- }
-
- $this->setEditTokenFromUser( $context );
-
- return $context;
- }
-
- /**
- * If we are trying to edit and no token is set, supply one.
- *
- * @param DerivativeContext $context
- */
- private function setEditTokenFromUser( DerivativeContext $context ) {
- $request = $context->getRequest();
-
- // Edits via GET are a security issue and should not succeed. On the other hand, not all
- // POST requests are edits, but should ignore unused parameters.
- if ( !$request->getCheck( 'wpEditToken' ) && $request->wasPosted() ) {
- $request->setVal( 'wpEditToken', $context->getUser()->getEditToken() );
- }
- }
-
- /**
- * @param SpecialPage $page
- * @param string $subPage
- *
- * @throws Exception
- * @return string HTML
- */
- private function getHTMLFromSpecialPage( SpecialPage $page, $subPage ) {
- ob_start();
-
- try {
- $page->execute( $subPage );
-
- $output = $page->getOutput();
-
- if ( $output->getRedirect() !== '' ) {
- $output->output();
- $html = ob_get_contents();
- } elseif ( $output->isDisabled() ) {
- $html = ob_get_contents();
- } else {
- $html = $output->getHTML();
- }
- } catch ( Exception $ex ) {
- ob_end_clean();
-
- // Re-throw exception after "finally" handling because PHP 5.3 doesn't have "finally".
- throw $ex;
- }
-
- ob_end_clean();
-
- return $html;
+ return ( new SpecialPageExecutor() )->executeSpecialPage(
+ $this->newSpecialPage(),
+ $subPage,
+ $request,
+ $language,
+ $user
+ );
}
}
diff --git a/tests/phpunit/includes/specials/SpecialSearchTest.php b/tests/phpunit/includes/specials/SpecialSearchTest.php
index a4e4df166f..4ea9686680 100644
--- a/tests/phpunit/includes/specials/SpecialSearchTest.php
+++ b/tests/phpunit/includes/specials/SpecialSearchTest.php
@@ -1,4 +1,6 @@
getSearchEngineConfig()->defaultNamespaces();
$EMPTY_REQUEST = [];
$NO_USER_PREF = null;
diff --git a/tests/phpunit/includes/specials/SpecialWatchlistTest.php b/tests/phpunit/includes/specials/SpecialWatchlistTest.php
new file mode 100644
index 0000000000..6e702b637c
--- /dev/null
+++ b/tests/phpunit/includes/specials/SpecialWatchlistTest.php
@@ -0,0 +1,32 @@
+setExpectedException( 'UserNotLoggedIn' );
+ $this->executeSpecialPage();
+ }
+
+ public function testUserWithNoWatchedItems_displaysNoWatchlistMessage() {
+ $user = new TestUser( __METHOD__ );
+ list( $html, ) = $this->executeSpecialPage( '', null, 'qqx', $user->getUser() );
+ $this->assertContains( '(nowatchlist)', $html );
+ }
+
+}
diff --git a/tests/phpunit/includes/title/TitleValueTest.php b/tests/phpunit/includes/title/TitleValueTest.php
index af7b758efb..913253bc1b 100644
--- a/tests/phpunit/includes/title/TitleValueTest.php
+++ b/tests/phpunit/includes/title/TitleValueTest.php
@@ -26,12 +26,23 @@
*/
class TitleValueTest extends MediaWikiTestCase {
- public function testConstruction() {
- $title = new TitleValue( NS_USER, 'TestThis', 'stuff' );
+ public function goodConstructorProvider() {
+ return [
+ [ NS_USER, 'TestThis', 'stuff', true ],
+ [ NS_USER, 'TestThis', '', false ],
+ ];
+ }
- $this->assertEquals( NS_USER, $title->getNamespace() );
- $this->assertEquals( 'TestThis', $title->getText() );
- $this->assertEquals( 'stuff', $title->getFragment() );
+ /**
+ * @dataProvider goodConstructorProvider
+ */
+ public function testConstruction( $ns, $text, $fragment, $hasFragment ) {
+ $title = new TitleValue( $ns, $text, $fragment );
+
+ $this->assertEquals( $ns, $title->getNamespace() );
+ $this->assertEquals( $text, $title->getText() );
+ $this->assertEquals( $fragment, $title->getFragment() );
+ $this->assertEquals( $hasFragment, $title->hasFragment() );
}
public function badConstructorProvider() {
@@ -74,7 +85,7 @@ class TitleValueTest extends MediaWikiTestCase {
* @dataProvider fragmentTitleProvider
*/
public function testCreateFragmentTitle( TitleValue $title, $fragment ) {
- $fragmentTitle = $title->createFragmentTitle( $fragment );
+ $fragmentTitle = $title->createFragmentTarget( $fragment );
$this->assertEquals( $title->getNamespace(), $fragmentTitle->getNamespace() );
$this->assertEquals( $title->getText(), $fragmentTitle->getText() );
diff --git a/tests/phpunit/includes/upload/UploadBaseTest.php b/tests/phpunit/includes/upload/UploadBaseTest.php
index a274b844e7..ee74957c2c 100644
--- a/tests/phpunit/includes/upload/UploadBaseTest.php
+++ b/tests/phpunit/includes/upload/UploadBaseTest.php
@@ -136,259 +136,259 @@ class UploadBaseTest extends MediaWikiTestCase {
public static function provideCheckSvgScriptCallback() {
// @codingStandardsIgnoreStart Generic.Files.LineLength
- return array(
+ return [
// html5sec SVG vectors
- array(
+ [
' ',
true,
true,
'Script tag in svg (http://html5sec.org/#47)'
- ),
- array(
+ ],
+ [
' ',
true,
true,
'SVG with onload property (http://html5sec.org/#11)'
- ),
- array(
+ ],
+ [
' ',
true,
true,
'SVG with onload property (http://html5sec.org/#65)'
- ),
- array(
+ ],
+ [
' ',
true,
true,
'SVG with javascript xlink (http://html5sec.org/#87)'
- ),
- array(
+ ],
+ [
' ',
true,
true,
'SVG with Opera image xlink (http://html5sec.org/#88 - c)'
- ),
- array(
+ ],
+ [
' ',
true,
true,
'SVG with Opera animation xlink (http://html5sec.org/#88 - a)'
- ),
- array(
+ ],
+ [
' ',
true,
true,
'SVG with Opera animation xlink (http://html5sec.org/#88 - b)'
- ),
- array(
+ ],
+ [
' ',
true,
true,
'SVG with Opera image xlink (http://html5sec.org/#88 - c)'
- ),
- array(
+ ],
+ [
' ',
true,
true,
'SVG with Opera foreignObject xlink (http://html5sec.org/#88 - d)'
- ),
- array(
+ ],
+ [
' ',
true,
true,
'SVG with Opera foreignObject xlink (http://html5sec.org/#88 - e)'
- ),
- array(
+ ],
+ [
' ',
true,
true,
'SVG with event handler set (http://html5sec.org/#89 - a)'
- ),
- array(
+ ],
+ [
' ',
true,
true,
'SVG with event handler animate (http://html5sec.org/#89 - a)'
- ),
- array(
+ ],
+ [
' alert(1) ',
true,
true,
'SVG with element handler (http://html5sec.org/#94)'
- ),
- array(
+ ],
+ [
' ',
true,
true,
'SVG with href to data: url (http://html5sec.org/#95)'
- ),
- array(
+ ],
+ [
' ',
true,
true,
'SVG with Tiny handler (http://html5sec.org/#104)'
- ),
- array(
+ ],
+ [
' ',
true,
true,
'SVG with new CSS styles properties (http://html5sec.org/#109)'
- ),
- array(
+ ],
+ [
' ',
true,
true,
'SVG with new CSS styles properties as attributes'
- ),
- array(
+ ],
+ [
' ',
true,
true,
'SVG with new CSS styles properties as attributes (2)'
- ),
- array(
+ ],
+ [
' ',
true,
true,
'SVG with path marker-start (http://html5sec.org/#110)'
- ),
- array(
+ ],
+ [
' ]> ',
true,
true,
'SVG with embedded stylesheet (http://html5sec.org/#125)'
- ),
- array(
+ ],
+ [
' alert(1) ',
true,
true,
'SVG with handler attribute (http://html5sec.org/#127)'
- ),
- array(
+ ],
+ [
// Haven't found a browser that accepts this particular example, but we
// don't want to allow embeded svgs, ever
' ',
true,
true,
'SVG with image filter via style (http://html5sec.org/#129)'
- ),
- array(
+ ],
+ [
// This doesn't seem possible without embedding the svg, but just in case
' ',
true,
true,
'SVG with animate from (http://html5sec.org/#137)'
- ),
- array(
+ ],
+ [
' Click me ',
true,
true,
'SVG with animate xlink:href (http://html5sec.org/#137)'
- ),
- array(
+ ],
+ [
' Click me ',
true,
true,
'SVG with animate y:href (http://html5sec.org/#137)'
- ),
+ ],
// Other hostile SVG's
- array(
+ [
' ',
true,
true,
'SVG with non-local image href (bug 65839)'
- ),
- array(
+ ],
+ [
' 50 100 ',
true,
true,
'SVG with remote stylesheet (bug 57550)'
- ),
- array(
+ ],
+ [
' ',
true,
true,
'SVG with rembeded iframe (bug 60771)'
- ),
- array(
+ ],
+ [
' WebPlatform.org ',
true,
true,
'SVG with @import in style element (bug 69008)'
- ),
- array(
+ ],
+ [
' WebPlatform.org ',
true,
true,
'SVG with @import in style element and child element (bug 69008#c11)'
- ),
- array(
+ ],
+ [
' WebPlatform.org ',
true,
true,
'SVG with case-insensitive @import in style element (bug T85349)'
- ),
- array(
+ ],
+ [
' ',
true,
true,
'SVG with remote background image (bug 69008)'
- ),
- array(
+ ],
+ [
' ',
true,
true,
'SVG with remote background image, encoded (bug 69008)'
- ),
- array(
+ ],
+ [
' ',
true,
true,
'SVG with remote background image, in style element (bug 69008)'
- ),
- array(
+ ],
+ [
// This currently doesn't seem to work in any browsers, but in case
// http://www.w3.org/TR/css3-images/ is implemented for SVG files
' ',
true,
true,
'SVG with remote background image using image() (bug 69008)'
- ),
- array(
+ ],
+ [
// As reported by Cure53
' ',
true,
true,
'SVG with data:text/html link target (firefox only)'
- ),
- array(
+ ],
+ [
' ]> &lol2; ',
true,
true,
'SVG with encoded script tag in internal entity (reported by Beyond Security)'
- ),
- array(
+ ],
+ [
' ]> &foo; ',
false,
false,
'SVG with external entity'
- ),
+ ],
// Test good, but strange files that we want to allow
- array(
+ [
' ',
true,
false,
'SVG with link to a remote site'
- ),
- array(
+ ],
+ [
' 12345 ',
true,
false,
'SVG with local urls, including filter: in style'
- ),
- );
+ ],
+ ];
// @codingStandardsIgnoreEnd
}
}
diff --git a/tests/phpunit/includes/user/BotPasswordTest.php b/tests/phpunit/includes/user/BotPasswordTest.php
index d3a5791194..27ce287e32 100644
--- a/tests/phpunit/includes/user/BotPasswordTest.php
+++ b/tests/phpunit/includes/user/BotPasswordTest.php
@@ -234,7 +234,7 @@ class BotPasswordTest extends MediaWikiTestCase {
] );
$reset = MediaWiki\Session\TestUtils::setSessionManagerSingleton( $manager );
$this->assertNull(
- $manager->getProvider( 'MediaWiki\\Session\\BotPasswordSessionProvider' ),
+ $manager->getProvider( MediaWiki\Session\BotPasswordSessionProvider::class ),
'sanity check'
);
$status = BotPassword::login( 'UTSysop@BotPassword', 'foobaz', new FauxRequest );
@@ -245,8 +245,8 @@ class BotPasswordTest extends MediaWikiTestCase {
$mainConfig = RequestContext::getMain()->getConfig();
$config = new HashConfig( [
'SessionProviders' => $mainConfig->get( 'SessionProviders' ) + [
- 'MediaWiki\\Session\\BotPasswordSessionProvider' => [
- 'class' => 'MediaWiki\\Session\\BotPasswordSessionProvider',
+ MediaWiki\Session\BotPasswordSessionProvider::class => [
+ 'class' => MediaWiki\Session\BotPasswordSessionProvider::class,
'args' => [ [ 'priority' => 40 ] ],
]
],
@@ -287,7 +287,7 @@ class BotPasswordTest extends MediaWikiTestCase {
// Success!
$request = new FauxRequest;
$this->assertNotInstanceOf(
- 'MediaWiki\\Session\\BotPasswordSessionProvider',
+ MediaWiki\Session\BotPasswordSessionProvider::class,
$request->getSession()->getProvider(),
'sanity check'
);
@@ -295,9 +295,9 @@ class BotPasswordTest extends MediaWikiTestCase {
$this->assertInstanceOf( 'Status', $status );
$this->assertTrue( $status->isGood() );
$session = $status->getValue();
- $this->assertInstanceOf( 'MediaWiki\\Session\\Session', $session );
+ $this->assertInstanceOf( MediaWiki\Session\Session::class, $session );
$this->assertInstanceOf(
- 'MediaWiki\\Session\\BotPasswordSessionProvider', $session->getProvider()
+ MediaWiki\Session\BotPasswordSessionProvider::class, $session->getProvider()
);
$this->assertSame( $session->getId(), $request->getSession()->getId() );
diff --git a/tests/phpunit/includes/user/UserTest.php b/tests/phpunit/includes/user/UserTest.php
index 88bb328d2f..c9b6929e7a 100644
--- a/tests/phpunit/includes/user/UserTest.php
+++ b/tests/phpunit/includes/user/UserTest.php
@@ -342,30 +342,46 @@ class UserTest extends MediaWikiTestCase {
* @covers User::getCanonicalName()
* @dataProvider provideGetCanonicalName
*/
- public function testGetCanonicalName( $name, $expectedArray, $msg ) {
+ public function testGetCanonicalName( $name, $expectedArray ) {
+ // fake interwiki map for the 'Interwiki prefix' testcase
+ $this->mergeMwGlobalArrayValue( 'wgHooks', [
+ 'InterwikiLoadPrefix' => [
+ function ( $prefix, &$iwdata ) {
+ if ( $prefix === 'interwiki' ) {
+ $iwdata = [
+ 'iw_url' => 'http://example.com/',
+ 'iw_local' => 0,
+ 'iw_trans' => 0,
+ ];
+ return false;
+ }
+ },
+ ],
+ ] );
+
foreach ( $expectedArray as $validate => $expected ) {
$this->assertEquals(
$expected,
- User::getCanonicalName( $name, $validate === 'false' ? false : $validate ),
- $msg . ' (' . $validate . ')'
- );
+ User::getCanonicalName( $name, $validate === 'false' ? false : $validate ), $validate );
}
}
public static function provideGetCanonicalName() {
return [
- [ ' Trailing space ', [ 'creatable' => 'Trailing space' ], 'Trailing spaces' ],
- // @todo FIXME: Maybe the creatable name should be 'Talk:Username' or false to reject?
- [ 'Talk:Username', [ 'creatable' => 'Username', 'usable' => 'Username',
- 'valid' => 'Username', 'false' => 'Talk:Username' ], 'Namespace prefix' ],
- [ ' name with # hash', [ 'creatable' => false, 'usable' => false ], 'With hash' ],
- [ 'Multi spaces', [ 'creatable' => 'Multi spaces',
- 'usable' => 'Multi spaces' ], 'Multi spaces' ],
- [ 'lowercase', [ 'creatable' => 'Lowercase' ], 'Lowercase' ],
- [ 'in[]valid', [ 'creatable' => false, 'usable' => false, 'valid' => false,
- 'false' => 'In[]valid' ], 'Invalid' ],
- [ 'with / slash', [ 'creatable' => false, 'usable' => false, 'valid' => false,
- 'false' => 'With / slash' ], 'With slash' ],
+ 'Leading space' => [ ' Leading space', [ 'creatable' => 'Leading space' ] ],
+ 'Trailing space ' => [ 'Trailing space ', [ 'creatable' => 'Trailing space' ] ],
+ 'Namespace prefix' => [ 'Talk:Username', [ 'creatable' => false, 'usable' => false,
+ 'valid' => false, 'false' => 'Talk:Username' ] ],
+ 'Interwiki prefix' => [ 'interwiki:Username', [ 'creatable' => false, 'usable' => false,
+ 'valid' => false, 'false' => 'Interwiki:Username' ] ],
+ 'With hash' => [ 'name with # hash', [ 'creatable' => false, 'usable' => false ] ],
+ 'Multi spaces' => [ 'Multi spaces', [ 'creatable' => 'Multi spaces',
+ 'usable' => 'Multi spaces' ] ],
+ 'Lowercase' => [ 'lowercase', [ 'creatable' => 'Lowercase' ] ],
+ 'Invalid character' => [ 'in[]valid', [ 'creatable' => false, 'usable' => false,
+ 'valid' => false, 'false' => 'In[]valid' ] ],
+ 'With slash' => [ 'with / slash', [ 'creatable' => false, 'usable' => false, 'valid' => false,
+ 'false' => 'With / slash' ] ],
];
}
diff --git a/tests/phpunit/includes/utils/MWCryptHKDFTest.php b/tests/phpunit/includes/utils/MWCryptHKDFTest.php
index 17442b8f12..fafd4fa18e 100644
--- a/tests/phpunit/includes/utils/MWCryptHKDFTest.php
+++ b/tests/phpunit/includes/utils/MWCryptHKDFTest.php
@@ -42,53 +42,58 @@ class MWCryptHKDFTest extends MediaWikiTestCase {
public static function providerRfc5869() {
// @codingStandardsIgnoreStart Generic.Files.LineLength
- return array(
+ return [
// A.1
- array( 'sha256',
+ [
+ 'sha256',
'0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b', // ikm
'000102030405060708090a0b0c', // salt
'f0f1f2f3f4f5f6f7f8f9', // context
42, // bytes
'077709362c2e32df0ddc3f0dc47bba6390b6c73bb50f9c3122ec844ad7c2b3e5', // prk
'3cb25f25faacd57a90434f64d0362f2a2d2d0a90cf1a5a4c5db02d56ecc4c5bf34007208d5b887185865' // okm
- ),
+ ],
// A.2
- array( 'sha256',
+ [
+ 'sha256',
'000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f',
'606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeaf',
'b0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff',
82,
'06a6b88c5853361a06104c9ceb35b45cef760014904671014a193f40c15fc244',
'b11e398dc80327a1c8e7f78c596a49344f012eda2d4efad8a050cc4c19afa97c59045a99cac7827271cb41c65e590e09da3275600c2f09b8367793a9aca3db71cc30c58179ec3e87c14c01d5c1f3434f1d87'
- ),
+ ],
// A.3
- array( 'sha256',
+ [
+ 'sha256',
'0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b', // ikm
'', // salt
'', // context
42, // bytes
'19ef24a32c717b167f33a91d6f648bdf96596776afdb6377ac434c1c293ccb04', // prk
'8da4e775a563c18f715f802a063c5a31b8a11f5c5ee1879ec3454e5f3c738d2d9d201395faa4b61a96c8' // okm
- ),
+ ],
// A.4
- array( 'sha1',
+ [
+ 'sha1',
'0b0b0b0b0b0b0b0b0b0b0b', // ikm
'000102030405060708090a0b0c', // salt
'f0f1f2f3f4f5f6f7f8f9', // context
42, // bytes
'9b6c18c432a7bf8f0e71c8eb88f4b30baa2ba243', // prk
'085a01ea1b10f36933068b56efa5ad81a4f14b822f5b091568a9cdd4f155fda2c22e422478d305f3f896' // okm
- ),
+ ],
// A.5
- array( 'sha1',
+ [
+ 'sha1',
'000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f', // ikm
'606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeaf', // salt
'b0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff', // context
82, // bytes
'8adae09a2a307059478d309b26c4115a224cfaf6', // prk
'0bd770a74d1160f7c9f12cd5912a06ebff6adcae899d92191fe4305673ba2ffe8fa3f1a4e5ad79f3f334b3b202b2173c486ea37ce3d397ed034c7f9dfeb15c5e927336d0441f4c4300e2cff0d0900b52d3b4' // okm
- ),
- );
+ ],
+ ];
// @codingStandardsIgnoreEnd
}
}
diff --git a/tests/phpunit/includes/utils/UIDGeneratorTest.php b/tests/phpunit/includes/utils/UIDGeneratorTest.php
index 6d7325dee1..60d4e99978 100644
--- a/tests/phpunit/includes/utils/UIDGeneratorTest.php
+++ b/tests/phpunit/includes/utils/UIDGeneratorTest.php
@@ -9,6 +9,8 @@ class UIDGeneratorTest extends PHPUnit_Framework_TestCase {
}
/**
+ * Test that generated UIDs have the expected properties
+ *
* @dataProvider provider_testTimestampedUID
* @covers UIDGenerator::newTimestampedUID128
* @covers UIDGenerator::newTimestampedUID88
@@ -31,19 +33,29 @@ class UIDGeneratorTest extends PHPUnit_Framework_TestCase {
$this->assertSame( array_unique( $ids ), $ids, "All generated IDs are unique." );
foreach ( $ids as $id ) {
- $id_bin = Wikimedia\base_convert( $id, 10, 2 );
- $lastId_bin = Wikimedia\base_convert( $lastId, 10, 2 );
+ // Convert string to binary and pad to full length so we can
+ // extract segments
+ $id_bin = Wikimedia\base_convert( $id, 10, 2, $bits );
+ $lastId_bin = Wikimedia\base_convert( $lastId, 10, 2, $bits );
+
+ $timestamp_bin = substr( $id_bin, 0, $tbits );
+ $last_timestamp_bin = substr( $lastId_bin, 0, $tbits );
$this->assertGreaterThanOrEqual(
- substr( $lastId_bin, 0, $tbits ),
- substr( $id_bin, 0, $tbits ),
- "New ID timestamp ($id_bin) >= prior one ($lastId_bin)." );
+ $last_timestamp_bin,
+ $timestamp_bin,
+ "timestamp ($timestamp_bin) of current ID ($id_bin) >= timestamp ($last_timestamp_bin) " .
+ "of prior one ($lastId_bin)" );
+
+ $hostbits_bin = substr( $id_bin, -$hostbits );
+ $last_hostbits_bin = substr( $lastId_bin, -$hostbits );
if ( $hostbits ) {
$this->assertEquals(
- substr( $id_bin, -$hostbits ),
- substr( $lastId_bin, -$hostbits ),
- "Host ID of ($id_bin) is same as prior one ($lastId_bin)." );
+ $hostbits_bin,
+ $last_hostbits_bin,
+ "Host ID ($hostbits_bin) of current ID ($id_bin) is same as host ID ($last_hostbits_bin) " .
+ "of prior one ($lastId_bin)." );
}
$lastId = $id;
diff --git a/tests/phpunit/languages/LanguageTest.php b/tests/phpunit/languages/LanguageTest.php
index 3f80b90eed..0cf2d0f546 100644
--- a/tests/phpunit/languages/LanguageTest.php
+++ b/tests/phpunit/languages/LanguageTest.php
@@ -1310,19 +1310,19 @@ class LanguageTest extends LanguageClassesTestCase {
public static function provideCheckTitleEncodingData() {
// @codingStandardsIgnoreStart Ignore Generic.Files.LineLength.TooLong
- return array(
- array( "" ),
- array( "United States of America" ), // 7bit ASCII
- array( rawurldecode( "S%C3%A9rie%20t%C3%A9l%C3%A9vis%C3%A9e" ) ),
- array(
+ return [
+ [ "" ],
+ [ "United States of America" ], // 7bit ASCII
+ [ rawurldecode( "S%C3%A9rie%20t%C3%A9l%C3%A9vis%C3%A9e" ) ],
+ [
rawurldecode(
"Acteur%7CAlbert%20Robbins%7CAnglais%7CAnn%20Donahue%7CAnthony%20E.%20Zuiker%7CCarol%20Mendelsohn"
)
- ),
+ ],
// The following two data sets come from bug 36839. They fail if checkTitleEncoding uses a regexp to test for
// valid UTF-8 encoding and the pcre.recursion_limit is low (like, say, 1024). They succeed if checkTitleEncoding
// uses mb_check_encoding for its test.
- array(
+ [
rawurldecode(
"Acteur%7CAlbert%20Robbins%7CAnglais%7CAnn%20Donahue%7CAnthony%20E.%20Zuiker%7CCarol%20Mendelsohn%7C"
. "Catherine%20Willows%7CDavid%20Hodges%7CDavid%20Phillips%7CGil%20Grissom%7CGreg%20Sanders%7CHodges%7C"
@@ -1339,8 +1339,8 @@ class LanguageTest extends LanguageClassesTestCase {
. "Sara%20Sidle%7CSofia%20Curtis%7CS%C3%A9rie%20t%C3%A9l%C3%A9vis%C3%A9e%7CWallace%20Langham%7C"
. "Warrick%20Brown%7CWendy%20Simms%7C%C3%89tats-Unis"
),
- ),
- array(
+ ],
+ [
rawurldecode(
"Mod%C3%A8le%3AArrondissements%20homonymes%7CMod%C3%A8le%3ABandeau%20standard%20pour%20page%20d'homonymie%7C"
. "Mod%C3%A8le%3ABatailles%20homonymes%7CMod%C3%A8le%3ACantons%20homonymes%7C"
@@ -1358,8 +1358,8 @@ class LanguageTest extends LanguageClassesTestCase {
. "Mod%C3%A8le%3ATitres%20homonymes%7CMod%C3%A8le%3AToponymie%7CMod%C3%A8le%3AUnit%C3%A9s%20homonymes%7C"
. "Mod%C3%A8le%3AVilles%20homonymes%7CMod%C3%A8le%3A%C3%89difices%20religieux%20homonymes"
)
- )
- );
+ ]
+ ];
// @codingStandardsIgnoreEnd
}
diff --git a/tests/phpunit/maintenance/DumpTestCase.php b/tests/phpunit/maintenance/DumpTestCase.php
index 7336618ebf..ac83d4e70a 100644
--- a/tests/phpunit/maintenance/DumpTestCase.php
+++ b/tests/phpunit/maintenance/DumpTestCase.php
@@ -53,7 +53,8 @@ abstract class DumpTestCase extends MediaWikiLangTestCase {
}
}
- throw new MWException( "Could not determine revision id (" . $status->getWikiText() . ")" );
+ throw new MWException( "Could not determine revision id ("
+ . $status->getWikiText( false, false, 'en' ) . ")" );
}
/**
diff --git a/tests/phpunit/phpunit.php b/tests/phpunit/phpunit.php
index 4d060e4f05..77690cdd29 100755
--- a/tests/phpunit/phpunit.php
+++ b/tests/phpunit/phpunit.php
@@ -116,7 +116,7 @@ class PHPUnitMaintClass extends Maintenance {
// cookies to show up in a FauxRequest somewhere.
$wgSessionProviders = [
[
- 'class' => 'MediaWiki\\Session\\CookieSessionProvider',
+ 'class' => MediaWiki\Session\CookieSessionProvider::class,
'args' => [ [
'priority' => 30,
'callUserSetCookiesHook' => true,
diff --git a/tests/qunit/QUnitTestResources.php b/tests/qunit/QUnitTestResources.php
index b7161b1cfa..a2d76e01b0 100644
--- a/tests/qunit/QUnitTestResources.php
+++ b/tests/qunit/QUnitTestResources.php
@@ -8,7 +8,15 @@ return [
'test.sinonjs' => [
'scripts' => [
+ 'tests/qunit/suites/resources/test.sinonjs/index.js',
'resources/lib/sinonjs/sinon-1.17.3.js',
+ // We want tests to work in IE, but can't include this as it
+ // will break the placeholders in Sinon because the hack it uses
+ // to hijack IE globals relies on running in the global scope
+ // and in ResourceLoader this won't be running in the global scope.
+ // Including it results (among other things) in sandboxed timers
+ // being broken due to Date inheritance being undefined.
+ // 'resources/lib/sinonjs/sinon-ie-1.15.4.js',
],
'targets' => [ 'desktop', 'mobile' ],
],
diff --git a/tests/qunit/data/defineCallMwLoaderTestCallback.js b/tests/qunit/data/defineCallMwLoaderTestCallback.js
new file mode 100644
index 0000000000..afd886c334
--- /dev/null
+++ b/tests/qunit/data/defineCallMwLoaderTestCallback.js
@@ -0,0 +1 @@
+module.exports = 'Define worked.';
diff --git a/tests/qunit/data/requireCallMwLoaderTestCallback.js b/tests/qunit/data/requireCallMwLoaderTestCallback.js
new file mode 100644
index 0000000000..8bc087b007
--- /dev/null
+++ b/tests/qunit/data/requireCallMwLoaderTestCallback.js
@@ -0,0 +1,2 @@
+var x = require( 'test.require.define' );
+module.exports = 'Require worked.' + x;
diff --git a/tests/qunit/suites/resources/mediawiki.api/mediawiki.api.test.js b/tests/qunit/suites/resources/mediawiki.api/mediawiki.api.test.js
index 520db428c0..3a959a35e8 100644
--- a/tests/qunit/suites/resources/mediawiki.api/mediawiki.api.test.js
+++ b/tests/qunit/suites/resources/mediawiki.api/mediawiki.api.test.js
@@ -102,9 +102,9 @@
var api = new mw.Api(),
test = this;
- // Get editToken for local wiki, this should not make
+ // Get csrfToken for local wiki, this should not make
// a request as it should be retrieved from mw.user.tokens.
- return api.getToken( 'edit' )
+ return api.getToken( 'csrf' )
.then( function ( token ) {
assert.ok( token.length, 'Got a token' );
}, function ( err ) {
@@ -285,7 +285,7 @@
this.server.respond( [ 200, { 'Content-Type': 'application/json' }, '{ "example": "quux" }' ] );
- return api.postWithToken( 'edit',
+ return api.postWithToken( 'csrf',
{ action: 'example' },
{
headers: {
@@ -296,7 +296,7 @@
.then( function () {
assert.equal( test.server.requests[ 0 ].requestHeaders[ 'X-Foo' ], 'Bar', 'Header sent' );
- return api.postWithToken( 'edit',
+ return api.postWithToken( 'csrf',
{ action: 'example' },
function () {
assert.ok( false, 'This parameter cannot be a callback' );
diff --git a/tests/qunit/suites/resources/mediawiki/mediawiki.Title.test.js b/tests/qunit/suites/resources/mediawiki/mediawiki.Title.test.js
index 932ba7d5db..991725b8c6 100644
--- a/tests/qunit/suites/resources/mediawiki/mediawiki.Title.test.js
+++ b/tests/qunit/suites/resources/mediawiki/mediawiki.Title.test.js
@@ -360,19 +360,20 @@
QUnit.test( 'getUrl', 4, function ( assert ) {
var title;
-
- // Config
- mw.config.set( 'wgArticlePath', '/wiki/$1' );
+ mw.config.set( {
+ wgScript: '/w/index.php',
+ wgArticlePath: '/wiki/$1'
+ } );
title = new mw.Title( 'Foobar' );
assert.equal( title.getUrl(), '/wiki/Foobar', 'Basic functionality, getUrl uses mw.util.getUrl' );
- assert.equal( title.getUrl( { action: 'edit' } ), '/wiki/Foobar?action=edit', 'Basic functionality, \'params\' parameter' );
+ assert.equal( title.getUrl( { action: 'edit' } ), '/w/index.php?title=Foobar&action=edit', 'Basic functionality, \'params\' parameter' );
title = new mw.Title( 'John Doe', 3 );
assert.equal( title.getUrl(), '/wiki/User_talk:John_Doe', 'Escaping in title and namespace for urls' );
title = new mw.Title( 'John Cena#And_His_Name_Is', 3 );
- assert.equal( title.getUrl( { meme: true } ), '/wiki/User_talk:John_Cena?meme=true#And_His_Name_Is', 'title with fragment and query parameter' );
+ assert.equal( title.getUrl( { meme: true } ), '/w/index.php?title=User_talk:John_Cena&meme=true#And_His_Name_Is', 'title with fragment and query parameter' );
} );
QUnit.test( 'newFromImg', 44, function ( assert ) {
diff --git a/tests/qunit/suites/resources/mediawiki/mediawiki.jqueryMsg.test.js b/tests/qunit/suites/resources/mediawiki/mediawiki.jqueryMsg.test.js
index 07eddbfba5..ee948bb806 100644
--- a/tests/qunit/suites/resources/mediawiki/mediawiki.jqueryMsg.test.js
+++ b/tests/qunit/suites/resources/mediawiki/mediawiki.jqueryMsg.test.js
@@ -81,8 +81,9 @@
'jquerymsg-test-version-entrypoints-index-php': '[https://www.mediawiki.org/wiki/Manual:index.php index.php]',
'external-link-replace': 'Foo [$1 bar]',
- 'external-link-plural': 'Foo {{PLURAL:$1|is [$2 one]|are [$2 some]|2=[$2 two]|3=three|4=a=b|5=}} things.',
- 'plural-only-explicit-forms': 'It is a {{PLURAL:$1|1=single|2=double}} room.'
+ 'external-link-plural': 'Foo {{PLURAL:$1|is [$2 one]|are [$2 some]|2=[$2 two]|3=three|4=a=b}} things.',
+ 'plural-only-explicit-forms': 'It is a {{PLURAL:$1|1=single|2=double}} room.',
+ 'plural-empty-explicit-form': 'There is me{{PLURAL:$1|0=| and other people}}.'
}
} ) );
@@ -144,7 +145,7 @@
next();
}
- QUnit.test( 'Replace', 16, function ( assert ) {
+ QUnit.test( 'Replace', 15, function ( assert ) {
mw.messages.set( 'simple', 'Foo $1 baz $2' );
assert.equal( formatParse( 'simple' ), 'Foo $1 baz $2', 'Replacements with no substitutes' );
@@ -212,11 +213,6 @@
'Foo a=b things.',
'Only first equal sign is used as delimiter for explicit plural form. Repeated equal signs does not create issue'
);
- assert.equal(
- formatParse( 'external-link-plural', 5, 'http://example.org' ),
- 'Foo are some things.',
- 'Invalid explicit plural form. Plural fallback to the "other" plural form'
- );
assert.equal(
formatParse( 'external-link-plural', 6, 'http://example.org' ),
'Foo are some things.',
@@ -229,13 +225,16 @@
);
} );
- QUnit.test( 'Plural', 6, function ( assert ) {
+ QUnit.test( 'Plural', 9, function ( assert ) {
assert.equal( formatParse( 'plural-msg', 0 ), 'Found 0 items', 'Plural test for english with zero as count' );
assert.equal( formatParse( 'plural-msg', 1 ), 'Found 1 item', 'Singular test for english' );
assert.equal( formatParse( 'plural-msg', 2 ), 'Found 2 items', 'Plural test for english' );
assert.equal( formatParse( 'plural-msg-explicit-forms-nested', 6 ), 'Found 6 results', 'Plural message with explicit plural forms' );
assert.equal( formatParse( 'plural-msg-explicit-forms-nested', 0 ), 'Found no results in Wiki', 'Plural message with explicit plural forms, with nested {{SITENAME}}' );
assert.equal( formatParse( 'plural-msg-explicit-forms-nested', 1 ), 'Found 1 result', 'Plural message with explicit plural forms with placeholder nested' );
+ assert.equal( formatParse( 'plural-empty-explicit-form', 0 ), 'There is me.' );
+ assert.equal( formatParse( 'plural-empty-explicit-form', 1 ), 'There is me and other people.' );
+ assert.equal( formatParse( 'plural-empty-explicit-form', 2 ), 'There is me and other people.' );
} );
QUnit.test( 'Gender', 15, function ( assert ) {
diff --git a/tests/qunit/suites/resources/mediawiki/mediawiki.test.js b/tests/qunit/suites/resources/mediawiki/mediawiki.test.js
index ce4ea8b147..dd43c553bc 100644
--- a/tests/qunit/suites/resources/mediawiki/mediawiki.test.js
+++ b/tests/qunit/suites/resources/mediawiki/mediawiki.test.js
@@ -1127,4 +1127,24 @@
}, /is not loaded/, 'Requesting non-existent modules throws error.' );
} );
+ QUnit.asyncTest( 'mw.loader require in debug mode', 1, function ( assert ) {
+ var path = mw.config.get( 'wgScriptPath' );
+ mw.loader.register( [
+ [ 'test.require.define', '0' ],
+ [ 'test.require.callback', '0', [ 'test.require.define' ] ]
+ ] );
+ mw.loader.implement( 'test.require.callback', [ QUnit.fixurl( path + '/tests/qunit/data/requireCallMwLoaderTestCallback.js' ) ] );
+ mw.loader.implement( 'test.require.define', [ QUnit.fixurl( path + '/tests/qunit/data/defineCallMwLoaderTestCallback.js' ) ] );
+
+ mw.loader.using( 'test.require.callback', function () {
+ QUnit.start();
+ var exported = mw.loader.require( 'test.require.callback' );
+ assert.strictEqual( exported, 'Require worked.Define worked.',
+ 'module.exports worked in debug mode' );
+ }, function () {
+ QUnit.start();
+ assert.ok( false, 'Error callback fired while loader.using "test.require.callback" module' );
+ } );
+ } );
+
}( mediaWiki, jQuery ) );
diff --git a/tests/qunit/suites/resources/mediawiki/mediawiki.user.test.js b/tests/qunit/suites/resources/mediawiki/mediawiki.user.test.js
index 04e002dd90..3332c08dc0 100644
--- a/tests/qunit/suites/resources/mediawiki/mediawiki.user.test.js
+++ b/tests/qunit/suites/resources/mediawiki/mediawiki.user.test.js
@@ -41,6 +41,8 @@
} );
QUnit.test( 'getUserInfos', 3, function ( assert ) {
+ mw.config.set( 'wgUserGroups', [ '*', 'user' ] );
+
mw.user.getGroups( function ( groups ) {
assert.deepEqual( groups, [ '*', 'user' ], 'Result' );
} );
@@ -55,7 +57,7 @@
this.server.respondWith( /meta=userinfo/, function ( request ) {
request.respond( 200, { 'Content-Type': 'application/json' },
- '{ "query": { "userinfo": { "groups": [ "*", "user" ], "rights": [ "read", "edit", "createtalk" ] } } }'
+ '{ "query": { "userinfo": { "groups": [ "unused" ], "rights": [ "read", "edit", "createtalk" ] } } }'
);
} );
diff --git a/tests/qunit/suites/resources/mediawiki/mediawiki.util.test.js b/tests/qunit/suites/resources/mediawiki/mediawiki.util.test.js
index 5d72179560..d697507af6 100644
--- a/tests/qunit/suites/resources/mediawiki/mediawiki.util.test.js
+++ b/tests/qunit/suites/resources/mediawiki/mediawiki.util.test.js
@@ -136,48 +136,53 @@
} );
} );
- QUnit.test( 'getUrl', 12, function ( assert ) {
+ QUnit.test( 'getUrl', 13, function ( assert ) {
+ var href;
mw.config.set( {
+ wgScript: '/w/index.php',
wgArticlePath: '/wiki/$1',
wgPageName: 'Foobar'
} );
- var href = mw.util.getUrl( 'Sandbox' );
+ href = mw.util.getUrl( 'Sandbox' );
assert.equal( href, '/wiki/Sandbox', 'simple title' );
href = mw.util.getUrl( 'Foo:Sandbox? 5+5=10! (test)/sub ' );
- assert.equal( href, '/wiki/Foo:Sandbox%3F_5%2B5%3D10!_(test)/sub_', 'advanced title' );
+ assert.equal( href, '/wiki/Foo:Sandbox%3F_5%2B5%3D10!_(test)/sub_', 'complex title' );
href = mw.util.getUrl();
assert.equal( href, '/wiki/Foobar', 'default title' );
href = mw.util.getUrl( null, { action: 'edit' } );
- assert.equal( href, '/wiki/Foobar?action=edit', 'default title with query string' );
+ assert.equal( href, '/w/index.php?title=Foobar&action=edit', 'default title with query string' );
href = mw.util.getUrl( 'Sandbox', { action: 'edit' } );
- assert.equal( href, '/wiki/Sandbox?action=edit', 'simple title with query string' );
+ assert.equal( href, '/w/index.php?title=Sandbox&action=edit', 'simple title with query string' );
// Test fragments
href = mw.util.getUrl( 'Foo:Sandbox#Fragment', { action: 'edit' } );
- assert.equal( href, '/wiki/Foo:Sandbox?action=edit#Fragment', 'advanced title with query string and fragment' );
+ assert.equal( href, '/w/index.php?title=Foo:Sandbox&action=edit#Fragment', 'namespaced title with query string and fragment' );
- href = mw.util.getUrl( 'Foo:Sandbox#', { action: 'edit' } );
- assert.equal( href, '/wiki/Foo:Sandbox?action=edit', 'title with query string and empty fragment' );
+ href = mw.util.getUrl( 'Sandbox#', { action: 'edit' } );
+ assert.equal( href, '/w/index.php?title=Sandbox&action=edit', 'title with query string and empty fragment' );
+
+ href = mw.util.getUrl( 'Sandbox', {} );
+ assert.equal( href, '/wiki/Sandbox', 'title with empty query string' );
href = mw.util.getUrl( '#Fragment' );
- assert.equal( href, '/wiki/#Fragment', 'epmty title with fragment' );
+ assert.equal( href, '/wiki/#Fragment', 'empty title with fragment' );
href = mw.util.getUrl( '#Fragment', { action: 'edit' } );
- assert.equal( href, '/wiki/?action=edit#Fragment', 'epmty title with query string and fragment' );
+ assert.equal( href, '/w/index.php?action=edit#Fragment', 'epmty title with query string and fragment' );
href = mw.util.getUrl( 'Foo:Sandbox \xC4#Fragment \xC4', { action: 'edit' } );
- assert.equal( href, '/wiki/Foo:Sandbox_%C3%84?action=edit#Fragment_.C3.84', 'title with query string, fragment, and special characters' );
+ assert.equal( href, '/w/index.php?title=Foo:Sandbox_%C3%84&action=edit#Fragment_.C3.84', 'title with query string, fragment, and special characters' );
href = mw.util.getUrl( 'Foo:%23#Fragment', { action: 'edit' } );
- assert.equal( href, '/wiki/Foo:%2523?action=edit#Fragment', 'title containing %23 (#), fragment, and a query string' );
+ assert.equal( href, '/w/index.php?title=Foo:%2523&action=edit#Fragment', 'title containing %23 (#), fragment, and a query string' );
href = mw.util.getUrl( '#+&=:;@$-_.!*/[]<>\'§', { action: 'edit' } );
- assert.equal( href, '/wiki/?action=edit#.2B.26.3D:.3B.40.24-_..21.2A.2F.5B.5D.3C.3E.27.C2.A7', 'fragment with various characters' );
+ assert.equal( href, '/w/index.php?action=edit#.2B.26.3D:.3B.40.24-_..21.2A.2F.5B.5D.3C.3E.27.C2.A7', 'fragment with various characters' );
} );
QUnit.test( 'wikiScript', 4, function ( assert ) {
diff --git a/tests/qunit/suites/resources/startup.test.js b/tests/qunit/suites/resources/startup.test.js
index d3f528c414..2934b39f3c 100644
--- a/tests/qunit/suites/resources/startup.test.js
+++ b/tests/qunit/suites/resources/startup.test.js
@@ -1,7 +1,9 @@
/*global isCompatible: true */
( function ( $ ) {
var testcases = {
- gradeA: [
+ tested: [
+ /* Grade A */
+
// Chrome
'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_7; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.205 Safari/534.16',
// Firefox 4+
@@ -43,9 +45,10 @@
'Mozilla/5.0 (ipod: U;CPU iPhone OS 2_2 like Mac OS X: es_es) AppleWebKit/525.18.1 (KHTML, like Gecko) Version/3.0 Mobile/3B48b Safari/419.3',
'Mozilla/5.0 (iPhone; U; CPU like Mac OS X; en) AppleWebKit/420.1 (KHTML, like Gecko) Version/3.0 Mobile/3B48b Safari/419.3',
// Android
- 'Mozilla/5.0 (Linux; U; Android 2.1; en-us; Nexus One Build/ERD62) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17'
- ],
- gradeC: [
+ 'Mozilla/5.0 (Linux; U; Android 2.1; en-us; Nexus One Build/ERD62) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17',
+
+ /* Grade C */
+
// Internet Explorer < 9
'Mozilla/2.0 (compatible; MSIE 3.03; Windows 3.1)',
'Mozilla/4.0 (compatible; MSIE 4.01; Windows 95)',
@@ -70,33 +73,9 @@
// BlackBerry < 6
'BlackBerry9300/5.0.0.716 Profile/MIDP-2.1 Configuration/CLDC-1.1 VendorID/133',
'BlackBerry7250/4.0.0 Profile/MIDP-2.0 Configuration/CLDC-1.1',
- // Open WebOS < 1.5 (Palm Pre, Palm Pixi)
- 'Mozilla/5.0 (webOS/1.0; U; en-US) AppleWebKit/525.27.1 (KHTML, like Gecko) Version/1.0 Safari/525.27.1 Pre/1.0',
- 'Mozilla/5.0 (webOS/1.4.0; U; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Version/1.0 Safari/532.2 Pixi/1.1 ',
- // SymbianOS
- 'NokiaN95_8GB-3;Mozilla/5.0 SymbianOS/9.2;U;Series60/3.1 NokiaN95_8GB-3/11.2.011 Profile/MIDP-2.0 Configuration/CLDC-1.1 AppleWebKit/413 (KHTML, like Gecko)',
- 'Nokia7610/2.0 (5.0509.0) SymbianOS/7.0s Series60/2.1 Profile/MIDP-2.0 Configuration/CLDC-1.0 ',
- 'Mozilla/5.0 (SymbianOS/9.1; U; [en]; SymbianOS/91 Series60/3.0) AppleWebKit/413 (KHTML, like Gecko) Safari/413',
- 'Mozilla/5.0 (SymbianOS/9.3; Series60/3.2 NokiaE52-2/091.003; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/533.4 (KHTML, like Gecko) NokiaBrowser/7.3.1.34 Mobile Safari/533.4',
- // NetFront
- 'Mozilla/4.0 (compatible; Linux 2.6.10) NetFront/3.3 Kindle/1.0 (screen 600x800)',
- 'Mozilla/4.0 (compatible; Linux 2.6.22) NetFront/3.4 Kindle/2.0 (screen 824x1200; rotate)',
- 'Mozilla/4.08 (Windows; Mobile Content Viewer/1.0) NetFront/3.2',
- // Opera Mini
- 'Opera/9.80 (J2ME/MIDP; Opera Mini/3.1.10423/22.387; U; en) Presto/2.5.25 Version/10.54',
- 'Opera/9.50 (J2ME/MIDP; Opera Mini/4.0.10031/298; U; en)',
- 'Opera/9.80 (J2ME/MIDP; Opera Mini/6.24093/26.1305; U; en) Presto/2.8.119 Version/10.54',
- 'Opera/9.80 (Android; Opera Mini/7.29530/27.1407; U; en) Presto/2.8.119 Version/11.10',
- // Ovi Browser
- 'Mozilla/5.0 (Series40; NokiaX3-02/05.60; Profile/MIDP-2.1 Configuration/CLDC-1.1) Gecko/20100401 S40OviBrowser/3.2.0.0.6',
- 'Mozilla/5.0 (Series40; Nokia305/05.92; Profile/MIDP-2.1 Configuration/CLDC-1.1) Gecko/20100401 S40OviBrowser/3.7.0.0.11',
- // Google Glass
- 'Mozilla/5.0 (Linux; U; Android 4.0.4; en-us; Glass 1 Build/IMM76L; XE11) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30',
- // MeeGo
- 'Mozilla/5.0 (MeeGo; NokiaN9) AppleWebKit/534.13 (KHTML, like Gecko) NokiaBrowser/8.5.0 Mobile Safari/534.13'
- ],
- // No explicit support for or against these browsers, they're given a shot at Grade A.
- gradeX: [
+
+ /* Grade X */
+
// Firefox 3.6
'Mozilla/5.0 (Windows; U; Windows NT 6.1; ru; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3',
// Gecko
@@ -122,30 +101,50 @@
'I\'m an unknown browser',
// Empty
''
+ ],
+ blacklisted: [
+ /* Grade C */
+
+ // Open WebOS < 1.5 (Palm Pre, Palm Pixi)
+ 'Mozilla/5.0 (webOS/1.0; U; en-US) AppleWebKit/525.27.1 (KHTML, like Gecko) Version/1.0 Safari/525.27.1 Pre/1.0',
+ 'Mozilla/5.0 (webOS/1.4.0; U; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Version/1.0 Safari/532.2 Pixi/1.1 ',
+ // SymbianOS
+ 'NokiaN95_8GB-3;Mozilla/5.0 SymbianOS/9.2;U;Series60/3.1 NokiaN95_8GB-3/11.2.011 Profile/MIDP-2.0 Configuration/CLDC-1.1 AppleWebKit/413 (KHTML, like Gecko)',
+ 'Nokia7610/2.0 (5.0509.0) SymbianOS/7.0s Series60/2.1 Profile/MIDP-2.0 Configuration/CLDC-1.0 ',
+ 'Mozilla/5.0 (SymbianOS/9.1; U; [en]; SymbianOS/91 Series60/3.0) AppleWebKit/413 (KHTML, like Gecko) Safari/413',
+ 'Mozilla/5.0 (SymbianOS/9.3; Series60/3.2 NokiaE52-2/091.003; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/533.4 (KHTML, like Gecko) NokiaBrowser/7.3.1.34 Mobile Safari/533.4',
+ // NetFront
+ 'Mozilla/4.0 (compatible; Linux 2.6.10) NetFront/3.3 Kindle/1.0 (screen 600x800)',
+ 'Mozilla/4.0 (compatible; Linux 2.6.22) NetFront/3.4 Kindle/2.0 (screen 824x1200; rotate)',
+ 'Mozilla/4.08 (Windows; Mobile Content Viewer/1.0) NetFront/3.2',
+ // Opera Mini
+ 'Opera/9.80 (J2ME/MIDP; Opera Mini/3.1.10423/22.387; U; en) Presto/2.5.25 Version/10.54',
+ 'Opera/9.50 (J2ME/MIDP; Opera Mini/4.0.10031/298; U; en)',
+ 'Opera/9.80 (J2ME/MIDP; Opera Mini/6.24093/26.1305; U; en) Presto/2.8.119 Version/10.54',
+ 'Opera/9.80 (Android; Opera Mini/7.29530/27.1407; U; en) Presto/2.8.119 Version/11.10',
+ // Ovi Browser
+ 'Mozilla/5.0 (Series40; NokiaX3-02/05.60; Profile/MIDP-2.1 Configuration/CLDC-1.1) Gecko/20100401 S40OviBrowser/3.2.0.0.6',
+ 'Mozilla/5.0 (Series40; Nokia305/05.92; Profile/MIDP-2.1 Configuration/CLDC-1.1) Gecko/20100401 S40OviBrowser/3.7.0.0.11',
+ // Google Glass
+ 'Mozilla/5.0 (Linux; U; Android 4.0.4; en-us; Glass 1 Build/IMM76L; XE11) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30',
+ // MeeGo
+ 'Mozilla/5.0 (MeeGo; NokiaN9) AppleWebKit/534.13 (KHTML, like Gecko) NokiaBrowser/8.5.0 Mobile Safari/534.13'
]
};
QUnit.module( 'startup', QUnit.newMwEnvironment() );
- QUnit.test( 'isCompatible( Grade A )', testcases.gradeA.length, function ( assert ) {
- $.each( testcases.gradeA, function ( i, ua ) {
+ QUnit.test( 'isCompatible( featureTestable )', testcases.tested.length, function ( assert ) {
+ $.each( testcases.tested, function ( i, ua ) {
assert.strictEqual( isCompatible( ua ), true, ua );
}
);
} );
- QUnit.test( 'isCompatible( Grade C )', testcases.gradeC.length, function ( assert ) {
- $.each( testcases.gradeC, function ( i, ua ) {
+ QUnit.test( 'isCompatible( blacklisted )', testcases.blacklisted.length, function ( assert ) {
+ $.each( testcases.blacklisted, function ( i, ua ) {
assert.strictEqual( isCompatible( ua ), false, ua );
}
);
} );
-
- QUnit.test( 'isCompatible( Grade X )', testcases.gradeX.length, function ( assert ) {
- $.each( testcases.gradeX, function ( i, ua ) {
- assert.strictEqual( isCompatible( ua ), true, ua );
- }
- );
- } );
-
}( jQuery ) );
diff --git a/tests/qunit/suites/resources/test.sinonjs/index.js b/tests/qunit/suites/resources/test.sinonjs/index.js
new file mode 100644
index 0000000000..b1be9d1890
--- /dev/null
+++ b/tests/qunit/suites/resources/test.sinonjs/index.js
@@ -0,0 +1,3 @@
+// Hack: Disable 'module.exports' from ResourceLoader
+// (Otherwise Sinon assumes context as Node.js instead of a browser)
+module.exports = null;
diff --git a/tests/testHelpers.inc b/tests/testHelpers.inc
index 76544a50bc..d04e0fcb54 100644
--- a/tests/testHelpers.inc
+++ b/tests/testHelpers.inc
@@ -44,9 +44,10 @@ interface ITestRecorder {
/**
* Called after each test
* @param string $test
+ * @param integer $subtest
* @param bool $result
*/
- public function record( $test, $result );
+ public function record( $test, $subtest, $result );
/**
* Called before finishing the test run
@@ -74,7 +75,7 @@ class TestRecorder implements ITestRecorder {
$this->success = 0;
}
- function record( $test, $result ) {
+ function record( $test, $subtest, $result ) {
$this->total++;
$this->success += ( $result ? 1 : 0 );
}
@@ -147,9 +148,17 @@ class DbTestPreviewer extends TestRecorder {
$this->results = [];
}
- function record( $test, $result ) {
- parent::record( $test, $result );
- $this->results[$test] = $result;
+ function getName( $test, $subtest ) {
+ if ( $subtest ) {
+ return "$test subtest #$subtest";
+ } else {
+ return $test;
+ }
+ }
+
+ function record( $test, $subtest, $result ) {
+ parent::record( $test, $subtest, $result );
+ $this->results[ $this->getName( $test, $subtest ) ] = $result;
}
function report() {
@@ -299,10 +308,9 @@ class DbTestPreviewer extends TestRecorder {
}
/**
- * Commit transaction and clean up for result recording
+ * Close the DB connection
*/
function end() {
- $this->lb->commitMasterChanges();
$this->lb->closeAll();
parent::end();
}
@@ -350,17 +358,25 @@ class DbTestRecorder extends DbTestPreviewer {
* @param string $test
* @param bool $result
*/
- function record( $test, $result ) {
- parent::record( $test, $result );
+ function record( $test, $subtest, $result ) {
+ parent::record( $test, $subtest, $result );
$this->db->insert( 'testitem',
[
'ti_run' => $this->curRun,
- 'ti_name' => $test,
+ 'ti_name' => $this->getName( $test, $subtest ),
'ti_success' => $result ? 1 : 0,
],
__METHOD__ );
}
+
+ /**
+ * Commit transaction and clean up for result recording
+ */
+ function end() {
+ $this->db->commit( __METHOD__ );
+ parent::end();
+ }
}
class TestFileIterator implements Iterator {
@@ -479,6 +495,7 @@ class TestFileIterator implements Iterator {
$this->test = [
'test' => ParserTest::chomp( $this->sectionData['test'] ),
+ 'subtest' => $this->nextSubTest,
'input' => ParserTest::chomp( $this->sectionData[$input] ),
'result' => ParserTest::chomp( $this->sectionData[$result] ),
'options' => ParserTest::chomp( $this->sectionData['options'] ),
@@ -665,6 +682,27 @@ class TestFileIterator implements Iterator {
}
}
+/**
+ * An iterator for use as a phpunit data provider. Provides the test arguments
+ * in the order expected by NewParserTest::testParserTest().
+ */
+class TestFileDataProvider extends TestFileIterator {
+ function current() {
+ $test = parent::current();
+ if ( $test ) {
+ return [
+ $test['test'],
+ $test['input'],
+ $test['result'],
+ $test['options'],
+ $test['config'],
+ ];
+ } else {
+ return $test;
+ }
+ }
+}
+
/**
* A class to delay execution of a parser test hooks.
*/
diff --git a/thumb.php b/thumb.php
index 10c2419db1..fca25c55d2 100644
--- a/thumb.php
+++ b/thumb.php
@@ -320,7 +320,7 @@ function wfStreamThumb( array $params ) {
RequestContext::getMain()->getStats()->timing( 'media.thumbnail.stream', $streamtime );
} else {
wfThumbError( 500, 'Could not stream the file', null, [ 'file' => $thumbName,
- 'path' => $thumbPath, 'error' => $status->getWikiText() ] );
+ 'path' => $thumbPath, 'error' => $status->getWikiText( false, false, 'en' ) ] );
}
return;
}
@@ -366,7 +366,8 @@ function wfStreamThumb( array $params ) {
$status = $thumb->streamFileWithStatus( $headers );
if ( !$status->isOK() ) {
wfThumbError( 500, 'Could not stream the file', null, [
- 'file' => $thumbName, 'path' => $thumbPath, 'error' => $status->getWikiText() ] );
+ 'file' => $thumbName, 'path' => $thumbPath,
+ 'error' => $status->getWikiText( false, false, 'en' ) ] );
}
}
}