Merge "Add licensing for extensions to Special:Version"
authorjenkins-bot <jenkins-bot@gerrit.wikimedia.org>
Sat, 4 Jan 2014 00:42:28 +0000 (00:42 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Sat, 4 Jan 2014 00:42:28 +0000 (00:42 +0000)
435 files changed:
.gitignore
.jshintignore
.travis.yml [new file with mode: 0644]
HISTORY
RELEASE-NOTES-1.23
api.php
docs/hooks.txt
includes/Article.php
includes/AutoLoader.php
includes/DefaultSettings.php
includes/EditPage.php
includes/Export.php
includes/GlobalFunctions.php
includes/ImagePage.php
includes/Import.php
includes/Linker.php
includes/MagicWord.php
includes/Message.php
includes/OutputPage.php
includes/Pager.php
includes/PrefixSearch.php
includes/ProxyTools.php [deleted file]
includes/QueryPage.php
includes/Revision.php
includes/Setup.php
includes/Skin.php
includes/SkinTemplate.php
includes/SpecialPageFactory.php
includes/Title.php
includes/User.php
includes/UserMailer.php
includes/WebRequest.php
includes/Wiki.php
includes/WikiFilePage.php
includes/WikiPage.php
includes/ZhConversion.php
includes/actions/HistoryAction.php
includes/actions/RevisiondeleteAction.php
includes/actions/RollbackAction.php
includes/api/ApiFeedContributions.php
includes/api/ApiFileRevert.php
includes/api/ApiPageSet.php
includes/api/ApiParse.php
includes/api/ApiQueryAllCategories.php
includes/api/ApiQueryAllImages.php
includes/api/ApiQueryAllLinks.php
includes/api/ApiQueryAllPages.php
includes/api/ApiQueryBase.php
includes/api/ApiQueryCategoryMembers.php
includes/api/ApiQueryDeletedrevs.php
includes/api/ApiQueryFilearchive.php
includes/api/ApiQueryLogEvents.php
includes/api/ApiQueryRandom.php
includes/api/ApiQuerySiteinfo.php
includes/api/ApiQueryWatchlist.php
includes/api/ApiUnblock.php
includes/api/ApiUpload.php
includes/api/ApiUserrights.php
includes/api/ApiWatch.php
includes/cache/CacheDependency.php
includes/cache/LocalisationCache.php
includes/cache/MapCacheLRU.php
includes/cache/MessageCache.php
includes/changes/ChangesList.php
includes/changes/EnhancedChangesList.php
includes/changes/RecentChange.php
includes/content/TextContent.php
includes/context/DerivativeContext.php
includes/dao/DBAccessBase.php
includes/db/Database.php
includes/db/DatabaseError.php
includes/db/DatabaseMssql.php
includes/db/DatabaseMysqlBase.php
includes/db/DatabaseMysqli.php
includes/db/DatabaseOracle.php
includes/db/DatabasePostgres.php
includes/db/DatabaseUtility.php
includes/db/LBFactory.php
includes/db/LBFactoryMulti.php [new file with mode: 0644]
includes/db/LBFactorySingle.php [new file with mode: 0644]
includes/db/LBFactory_Multi.php [deleted file]
includes/db/LBFactory_Single.php [deleted file]
includes/db/LoadBalancer.php
includes/db/LoadMonitor.php
includes/deferred/LinksUpdate.php
includes/deferred/SquidUpdate.php
includes/filebackend/MemoryFileBackend.php [new file with mode: 0644]
includes/filerepo/LocalRepo.php
includes/filerepo/file/ArchivedFile.php
includes/htmlform/HTMLForm.php
includes/installer/DatabaseInstaller.php
includes/installer/LocalSettingsGenerator.php
includes/installer/MysqlUpdater.php
includes/installer/OracleUpdater.php
includes/installer/PostgresUpdater.php
includes/installer/SqliteUpdater.php
includes/installer/WebInstallerOutput.php
includes/installer/WebInstallerPage.php
includes/job/Job.php
includes/job/JobQueueDB.php
includes/job/JobQueueFederated.php
includes/job/JobQueueGroup.php
includes/job/aggregator/JobQueueAggregatorRedis.php
includes/job/jobs/AssembleUploadChunksJob.php
includes/job/jobs/DoubleRedirectJob.php
includes/job/jobs/DuplicateJob.php
includes/job/jobs/EmaillingJob.php
includes/job/jobs/EnotifNotifyJob.php
includes/job/jobs/HTMLCacheUpdateJob.php
includes/job/jobs/NullJob.php
includes/job/jobs/PublishStashedFileJob.php
includes/job/jobs/RefreshLinksJob.php
includes/job/jobs/RefreshLinksJob2.php
includes/job/jobs/UploadFromUrlJob.php
includes/libs/CSSMin.php
includes/libs/MWMessagePack.php [new file with mode: 0644]
includes/libs/RunningStat.php [new file with mode: 0644]
includes/libs/ScopedCallback.php [new file with mode: 0644]
includes/logging/DeleteLogFormatter.php
includes/logging/LogEntry.php
includes/logging/LogEventsList.php
includes/logging/LogFormatter.php
includes/logging/LogPage.php
includes/logging/LogPager.php
includes/media/Bitmap.php
includes/media/Exif.php
includes/media/ExifBitmap.php
includes/media/SVG.php
includes/objectcache/MemcachedClient.php
includes/parser/CacheTime.php
includes/parser/CoreParserFunctions.php
includes/parser/Parser.php
includes/parser/ParserCache.php
includes/parser/ParserOutput.php
includes/profiler/ProfilerSimple.php
includes/resourceloader/ResourceLoader.php
includes/resourceloader/ResourceLoaderFileModule.php
includes/resourceloader/ResourceLoaderStartUpModule.php
includes/resourceloader/ResourceLoaderUserCSSPrefsModule.php
includes/resourceloader/ResourceLoaderUserOptionsModule.php
includes/search/SearchEngine.php
includes/specialpage/SpecialPage.php
includes/specials/SpecialAllpages.php
includes/specials/SpecialBlock.php
includes/specials/SpecialBlockList.php
includes/specials/SpecialBooksources.php
includes/specials/SpecialChangeEmail.php
includes/specials/SpecialChangePassword.php
includes/specials/SpecialConfirmemail.php
includes/specials/SpecialContributions.php
includes/specials/SpecialDeletedContributions.php
includes/specials/SpecialEditWatchlist.php
includes/specials/SpecialEmailuser.php
includes/specials/SpecialExpandTemplates.php
includes/specials/SpecialExport.php
includes/specials/SpecialFileDuplicateSearch.php
includes/specials/SpecialImport.php
includes/specials/SpecialJavaScriptTest.php
includes/specials/SpecialLinkSearch.php
includes/specials/SpecialListfiles.php
includes/specials/SpecialMIMEsearch.php
includes/specials/SpecialMergeHistory.php
includes/specials/SpecialMovepage.php
includes/specials/SpecialNewpages.php
includes/specials/SpecialPreferences.php
includes/specials/SpecialPrefixindex.php
includes/specials/SpecialProtectedpages.php
includes/specials/SpecialProtectedtitles.php
includes/specials/SpecialRandomInCategory.php
includes/specials/SpecialRandompage.php
includes/specials/SpecialRecentchanges.php
includes/specials/SpecialRecentchangeslinked.php
includes/specials/SpecialRedirect.php
includes/specials/SpecialRevisiondelete.php
includes/specials/SpecialSearch.php
includes/specials/SpecialSpecialpages.php
includes/specials/SpecialUndelete.php
includes/specials/SpecialUpload.php
includes/specials/SpecialUploadStash.php
includes/specials/SpecialUserlogin.php
includes/specials/SpecialUserrights.php
includes/specials/SpecialWatchlist.php
includes/specials/SpecialWhatlinkshere.php
includes/specials/SpecialWithoutinterwiki.php
includes/upload/UploadBase.php
includes/utils/IP.php
includes/utils/ScopedCallback.php [deleted file]
includes/utils/UIDGenerator.php
languages/Language.php
languages/LanguageConverter.php
languages/classes/LanguageBe_tarask.php
languages/classes/LanguageGv.php [deleted file]
languages/classes/LanguageHr.php [deleted file]
languages/classes/LanguageRu.php
languages/classes/LanguageSr.php
languages/classes/LanguageSr_ec.php [deleted file]
languages/classes/LanguageSr_el.php [deleted file]
languages/classes/LanguageUk.php
languages/data/plurals-mediawiki.xml
languages/data/plurals.xml [changed mode: 0644->0755]
languages/messages/MessagesAce.php
languages/messages/MessagesAf.php
languages/messages/MessagesAng.php
languages/messages/MessagesAr.php
languages/messages/MessagesArc.php
languages/messages/MessagesArz.php
languages/messages/MessagesAs.php
languages/messages/MessagesBa.php
languages/messages/MessagesBcl.php
languages/messages/MessagesBe_tarask.php
languages/messages/MessagesBg.php
languages/messages/MessagesBn.php
languages/messages/MessagesBr.php
languages/messages/MessagesBs.php
languages/messages/MessagesCa.php
languages/messages/MessagesCe.php
languages/messages/MessagesCkb.php
languages/messages/MessagesCrh_cyrl.php
languages/messages/MessagesCs.php
languages/messages/MessagesCu.php
languages/messages/MessagesCv.php
languages/messages/MessagesCy.php
languages/messages/MessagesDa.php
languages/messages/MessagesDe.php
languages/messages/MessagesDiq.php
languages/messages/MessagesDsb.php
languages/messages/MessagesEgl.php
languages/messages/MessagesEn.php
languages/messages/MessagesEo.php
languages/messages/MessagesEs.php
languages/messages/MessagesEt.php
languages/messages/MessagesEu.php
languages/messages/MessagesFa.php
languages/messages/MessagesFi.php
languages/messages/MessagesFr.php
languages/messages/MessagesFur.php
languages/messages/MessagesFy.php
languages/messages/MessagesGl.php
languages/messages/MessagesGu.php
languages/messages/MessagesHe.php
languages/messages/MessagesHr.php
languages/messages/MessagesHsb.php
languages/messages/MessagesHu.php
languages/messages/MessagesIa.php
languages/messages/MessagesIe.php
languages/messages/MessagesInh.php
languages/messages/MessagesIs.php
languages/messages/MessagesIt.php
languages/messages/MessagesJa.php
languages/messages/MessagesJam.php
languages/messages/MessagesJv.php
languages/messages/MessagesKa.php
languages/messages/MessagesKab.php
languages/messages/MessagesKk_cyrl.php
languages/messages/MessagesKo.php
languages/messages/MessagesKrc.php
languages/messages/MessagesKsh.php
languages/messages/MessagesLa.php
languages/messages/MessagesLad.php
languages/messages/MessagesLb.php
languages/messages/MessagesLez.php
languages/messages/MessagesLrc.php
languages/messages/MessagesLt.php
languages/messages/MessagesLv.php
languages/messages/MessagesMg.php
languages/messages/MessagesMhr.php
languages/messages/MessagesMk.php
languages/messages/MessagesMl.php
languages/messages/MessagesMs.php
languages/messages/MessagesMyv.php
languages/messages/MessagesNah.php
languages/messages/MessagesNap.php
languages/messages/MessagesNb.php
languages/messages/MessagesNl.php
languages/messages/MessagesNn.php
languages/messages/MessagesOc.php
languages/messages/MessagesPa.php
languages/messages/MessagesPl.php
languages/messages/MessagesPms.php
languages/messages/MessagesPs.php
languages/messages/MessagesPt.php
languages/messages/MessagesPt_br.php
languages/messages/MessagesQqq.php
languages/messages/MessagesRm.php
languages/messages/MessagesRo.php
languages/messages/MessagesRu.php
languages/messages/MessagesSdc.php
languages/messages/MessagesSgs.php
languages/messages/MessagesSi.php
languages/messages/MessagesSk.php
languages/messages/MessagesSl.php
languages/messages/MessagesSr_ec.php
languages/messages/MessagesSr_el.php
languages/messages/MessagesSv.php
languages/messages/MessagesSzl.php
languages/messages/MessagesTa.php
languages/messages/MessagesTe.php
languages/messages/MessagesTet.php
languages/messages/MessagesTh.php
languages/messages/MessagesTr.php
languages/messages/MessagesTt_cyrl.php
languages/messages/MessagesTyv.php
languages/messages/MessagesUg_arab.php
languages/messages/MessagesUk.php
languages/messages/MessagesVep.php
languages/messages/MessagesVi.php
languages/messages/MessagesVro.php
languages/messages/MessagesXal.php
languages/messages/MessagesYi.php
languages/messages/MessagesYo.php
languages/messages/MessagesZh_hans.php
languages/messages/MessagesZh_hant.php
languages/utils/CLDRPluralRuleEvaluator.php
maintenance/archives/patch-logging_user_text_time_index.sql [new file with mode: 0644]
maintenance/archives/patch-logging_user_text_type_time_index.sql [new file with mode: 0644]
maintenance/archives/patch-page_links_updated.sql [new file with mode: 0644]
maintenance/eval.php
maintenance/findHooks.php
maintenance/generateJsonI18n.php [new file with mode: 0644]
maintenance/initEditCount.php
maintenance/language/messageTypes.inc
maintenance/language/messages.inc
maintenance/language/zhtable/Makefile.py
maintenance/mergeMessageFileList.php
maintenance/mssql/tables.sql
maintenance/nextJobDB.php
maintenance/oracle/archives/patch-logging_user_text_time_index.sql [new file with mode: 0644]
maintenance/oracle/archives/patch-logging_user_text_type_time_index.sql [new file with mode: 0644]
maintenance/oracle/tables.sql
maintenance/postgres/tables.sql
maintenance/runJobs.php
maintenance/showJobs.php
maintenance/storage/fixBug20757.php
maintenance/tables.sql
maintenance/update.php
resources/Makefile [new file with mode: 0644]
resources/README.txt [new file with mode: 0644]
resources/Resources.php
resources/jquery/jquery.client.js
resources/jquery/jquery.suggestions.js
resources/mediawiki.action/mediawiki.action.edit.preview.js
resources/mediawiki.libs/CLDRPluralRuleParser.js
resources/mediawiki.libs/mediawiki.libs.jpegmeta.js
resources/mediawiki.page/mediawiki.page.watch.ajax.js
resources/mediawiki.special/mediawiki.special.changeslist.css
resources/mediawiki.special/mediawiki.special.changeslist.js [new file with mode: 0644]
resources/mediawiki.special/mediawiki.special.createAccount.css [deleted file]
resources/mediawiki.special/mediawiki.special.createAccount.js [deleted file]
resources/mediawiki.special/mediawiki.special.css
resources/mediawiki.special/mediawiki.special.userLogin.css [deleted file]
resources/mediawiki.special/mediawiki.special.userlogin.common.css [new file with mode: 0644]
resources/mediawiki.special/mediawiki.special.userlogin.common.js [new file with mode: 0644]
resources/mediawiki.special/mediawiki.special.userlogin.login.css [new file with mode: 0644]
resources/mediawiki.special/mediawiki.special.userlogin.signup.css [new file with mode: 0644]
resources/mediawiki.special/mediawiki.special.userlogin.signup.js [new file with mode: 0644]
resources/mediawiki.special/mediawiki.special.vforms.css [deleted file]
resources/mediawiki.ui/components/default/buttons.less
resources/mediawiki.ui/components/default/forms.less
resources/mediawiki.ui/components/vector/buttons.less
resources/mediawiki.ui/default.less
resources/mediawiki.ui/styleguide.md [new file with mode: 0644]
resources/mediawiki.ui/vector.less
resources/mediawiki/images/arrow-collapsed-ltr.svg [new file with mode: 0644]
resources/mediawiki/images/arrow-collapsed-rtl.svg [new file with mode: 0644]
resources/mediawiki/images/arrow-expanded.svg [new file with mode: 0644]
resources/mediawiki/mediawiki.Uri.js
resources/mediawiki/mediawiki.hlist.css
resources/mediawiki/mediawiki.hlist.js
resources/mediawiki/mediawiki.icon.css [deleted file]
resources/mediawiki/mediawiki.icon.less [new file with mode: 0644]
resources/mediawiki/mediawiki.js
resources/mediawiki/mediawiki.searchSuggest.js
resources/package.json [new file with mode: 0644]
resources/scripts/nodecheck.sh [new file with mode: 0755]
resources/styleguide-template/index.html [new file with mode: 0644]
resources/styleguide-template/public/kss.less [new file with mode: 0644]
resources/styleguide-template/public/less.js [new file with mode: 0644]
skins/.gitignore [deleted file]
skins/MonoBook.php
skins/Vector.php
skins/common/commonContent.css
skins/common/commonInterface.css
skins/common/commonPrint.css
skins/common/shared.css
skins/modern/main.css
skins/monobook/main.css
skins/vector/beta/screen.less [deleted file]
skins/vector/beta/variables.less [deleted file]
skins/vector/collapsibleTabs.js
skins/vector/externalLinks.less
skins/vector/images/audio-icon.svg [new file with mode: 0644]
skins/vector/images/document-icon.svg [new file with mode: 0644]
skins/vector/images/external-link-ltr-icon.svg [new file with mode: 0644]
skins/vector/images/external-link-rtl-icon.svg [new file with mode: 0644]
skins/vector/images/file-icon.svg [new file with mode: 0644]
skins/vector/images/lock-icon.svg [new file with mode: 0644]
skins/vector/images/mail-icon.svg [new file with mode: 0644]
skins/vector/images/news-icon.svg [new file with mode: 0644]
skins/vector/images/talk-icon.svg [new file with mode: 0644]
skins/vector/images/video-icon.svg [new file with mode: 0644]
skins/vector/screen-hd.less
skins/vector/styles-beta.less [deleted file]
skins/vector/variables.less
tests/TestsAutoLoader.php
tests/phpunit/MediaWikiTestCase.php
tests/phpunit/includes/RevisionStorageTest.php
tests/phpunit/includes/TitleTest.php
tests/phpunit/includes/api/ApiQueryAllPagesTest.php [new file with mode: 0644]
tests/phpunit/includes/api/MockApiQueryBase.php [new file with mode: 0644]
tests/phpunit/includes/api/query/ApiQueryTest.php
tests/phpunit/includes/db/LBFactoryTest.php [new file with mode: 0644]
tests/phpunit/includes/filebackend/FileBackendTest.php
tests/phpunit/includes/libs/MWMessagePackTest.php [new file with mode: 0644]
tests/phpunit/includes/libs/RunningStatTest.php [new file with mode: 0644]
tests/phpunit/includes/parser/NewParserTest.php
tests/phpunit/includes/search/SearchEngineTest.php
tests/phpunit/includes/specials/SpecialListFilesTest.php [new file with mode: 0644]
tests/phpunit/includes/utils/UIDGeneratorTest.php
tests/phpunit/languages/LanguageBe_taraskTest.php
tests/phpunit/languages/LanguageBsTest.php
tests/phpunit/languages/LanguageGvTest.php
tests/phpunit/languages/LanguageHrTest.php
tests/phpunit/languages/LanguageHyTest.php
tests/phpunit/languages/LanguageLvTest.php
tests/phpunit/languages/LanguageMkTest.php
tests/phpunit/languages/LanguageRuTest.php
tests/phpunit/languages/LanguageSgsTest.php
tests/phpunit/languages/LanguageShTest.php
tests/phpunit/languages/LanguageSrTest.php
tests/phpunit/languages/LanguageUkTest.php
tests/phpunit/languages/utils/CLDRPluralRuleEvaluatorTest.php
tests/phpunit/mocks/filebackend/MockFileBackend.php
tests/qunit/suites/resources/jquery/jquery.client.test.js
tests/qunit/suites/resources/mediawiki/mediawiki.Title.test.js
tests/qunit/suites/resources/mediawiki/mediawiki.Uri.test.js

index 76d220a..c7d6f66 100644 (file)
@@ -47,6 +47,9 @@ node_modules/
 /composer.lock
 /composer.json
 
+# MediaWiki UI documentation
+resources/mediawiki.ui/docs
+
 # Operating systems
 ## Mac OS X
 .DS_Store
index 27bb258..db4ac44 100644 (file)
@@ -1,6 +1,10 @@
 # Generated documentation
 docs/html/
 docs/js/
+resources/mediawiki.ui/docs
+
+# kss template for mediawiki ui documentation
+resources/styleguide-template
 
 # third-party libs
 extensions/
diff --git a/.travis.yml b/.travis.yml
new file mode 100644 (file)
index 0000000..84fa456
--- /dev/null
@@ -0,0 +1,46 @@
+# Travis CI build configuration for MediaWiki
+# <https://travis-ci.org/wikimedia/mediawiki-core>
+#
+# The Wikimedia Foundation uses a self-hosted Jenkins instance to run unit
+# tests, but it tests code against the version of PHP that is deployed on
+# Wikimedia's production cluster. This Travis CI configuration is designed to
+# complement that setup by testing MediaWiki against HHVM.
+#
+language: php
+
+php:
+  - hhvm
+
+services:
+  - mysql
+
+branches:
+  # Test changes in master and in Wikimedia's production branches.
+  only:
+    - master
+    - /^wmf\/.*$/
+
+before_install:
+  - sudo apt-get install -qq djvulibre-bin tidy
+
+before_script:
+  # Initialise submodules, in case we're testing a Wikimedia production branch.
+  - git submodule update --init --recursive
+  # Travis CI's HHVM environment provides PHPUnit as a phar file, but
+  # MediaWiki's test suite only works if individual PHPUnit files are
+  # actual files on disk (bug 58881).
+  - composer require 'phpunit/phpunit=3.7.*'
+  - >
+      php maintenance/install.php testwiki admin
+      --pass travis
+      --dbname traviswiki
+      --dbuser travis
+      --dbpass ""
+      --scriptpath "/w"
+
+script:
+  - >
+      hhvm --php
+      -d include_path=".$(printf ':%s' vendor/phpunit/*)"
+      -d date.timezone="Etc/UTC"
+      tests/phpunit/phpunit.php
diff --git a/HISTORY b/HISTORY
index 88cc906..a0ddfba 100644 (file)
--- a/HISTORY
+++ b/HISTORY
@@ -2781,7 +2781,7 @@ Other significant changes to MediaWiki's language support:
 * (bug 26253) $wgPostCommitUpdateList has been removed
 * The PHPUnit test suite has been removed from this release due to serious issues
   which should be resolved by the 1.18 release.
-* Oracle DB now uses the __destruct fuction to commit/close connection as it
+* Oracle DB now uses the __destruct function to commit/close connection as it
   doesn't commit on close if transation is triggered in OCI.
 
 == MediaWiki 1.16 ==
index 3e77434..d682206 100644 (file)
@@ -24,6 +24,10 @@ production.
 * Preferences 'watchcreations' and 'watchdefault' ("Add pages I create and files
   I upload to my watchlist", "Add pages and files I edit to my watchlist") are
   now enabled by default.
+* $wgLBFactoryConf: Class names have had underscores removed. The configuration
+  should be updated if LBFactory_Simple or LBFactory_Multi is configured.
+* $wgPasswordSenderName has been deprecated. To set a custom mailer name,
+  the system message 'emailsender' should be modified (default: "{{SITENAME}}").
 
 === New features in 1.23 ===
 * ResourceLoader can utilize the Web Storage API to cache modules client-side.
@@ -57,6 +61,10 @@ production.
 * Added ApiBeforeMain hook, roughly equivalent to the BeforeInitialize hook:
   it's called after everything is set up but before any major processing
   happens.
+* The jquery.client module now performs a component-wise version comparison in
+  its #test method when strings are used in the browser map: version '1.10' is
+  now correctly considered larger than '1.2'. Using numbers in the version map
+  is not affected.
 
 === Bug fixes in 1.23 ===
 * (bug 41759) The "updated since last visit" markers (on history pages, recent
@@ -73,23 +81,37 @@ production.
 * (bug 57098) SpecialPasswordReset now obeys returnto parameter
 * (bug 37812) ResourceLoader will notice when a module's definition changes and
   recompile it accordingly.
-
-=== API changes in 1.23 ===
+* (bug 57201) SpecialRecentChangesFilters hook is now executed for feeds.
+* (bug 58640) Fixed a compatibility issue with PCRE 8.34 that caused pages
+  to appear blank or with missing text.
+* (bug 56931) Updated the plural rules to CLDR 24. They are in new format
+  which is detailed in UTS 35 Rev 33. The PHP parser and evaluator as well as
+  the JavaScript evaluator were updated to support the new format. Plural rules
+  for some languages have changed, most notably Russian. Affected software
+  messages have been updated and marked for review at translatewiki.net.
+
+=== Web API changes in 1.23 ===
 * (bug 54884) action=parse&prop=categories now indicates hidden and missing
   categories.
 * action=query&meta=filerepoinfo now returns additional information for each
   repo.
-* EditPage::spamPage() was deprecated since 1.17 and has been removed.
 * action=parse&prop=languageshtml was deprecated in 1.18 and will be removed in
   MediaWiki 1.24.
+* action=parse now has disabletoc flag to disable table of contents in output.
+* (bug 25702) list=allcategories, list=allimages, list=alllinks, list=allpages,
+  list=deletedrevs and list=filearchive did not handle case-sensitivity
+  properly for all parameters.
+* ApiQueryBase::titlePartToKey allows an extra parameter that indicates the
+  namespace in order to properly capitalize the title part.
+* (bug 57874) action=feedcontributions no longer has one item more than limit.
 
-=== Languages updated in 1.23===
+=== Languages updated in 1.23 ===
 
 MediaWiki supports over 350 languages. Many localisations are updated
 regularly. Below only new and removed languages are listed, as well as
 changes to languages because of Bugzilla reports.
 
-* Support was added for Northern Luri (lrc)
+* Support was added for Northern Luri (lrc).
 
 === Other changes in 1.23 ===
 * The rc_type field in the recentchanges table has been superseded by a new
@@ -104,10 +126,74 @@ changes to languages because of Bugzilla reports.
 * The global variable $wgArticle has been removed after a lengthy deprecation.
 * The global functions addButton and insertTags (for mw.toolbar.addButton and
   mw.toolbar.insertTags) now emits mw.log.warn when accessed.
-* User::getPageRenderingHash() was deprecated since 1.17 and has been removed.
 * The ExpandTemplates extension has been moved into MediaWiki core.
 * (bug 52812) Removed "Disable search suggestions" from Preference.
 * (bug 52809) Removed "Disable browser page caching" from Preference.
+* Three new modules intended for use by custom skins were added:
+  'skins.common.elements', 'skins.common.content', and 'skins.common.interface',
+  representing three levels of standard MediaWiki styling. Previously skin
+  creators wishing to use them had to refer to the file names of appropriate
+  files directly, which is now discouraged.
+* The modules 'skins.vector' and 'skins.monobook' have been renamed to
+  'skins.vector.styles' and 'skins.monobook.styles', respectively,
+  and their definition was changed not to include the common*.css files;
+  the two skins now load the 'skins.common.interface' module instead.
+* A page_links_updated field has been added to the page table.
+* SpecialPage::getTitle has been deprecated in favor of
+  SpecialPage::getPageTitle.
+
+==== Removed classes ====
+* TitleDependency
+* TitleListDependency
+
+==== Renamed classes ====
+* CdbReader_DBA to CdbReaderDBA
+* CdbReader_PHP to CdbReaderPHP
+* CdbWriter_DBA to CdbWriterDBA
+* CdbWriter_PHP to CdbWriterPHP
+* DiffOp_Add to DiffOpAdd
+* DiffOp_Change to DiffOpChange
+* DiffOp_Copy to DiffOpCopy
+* DiffOp_Delete to DiffOpDelete
+* HWLDF_WordAccumulator to HWLDFWordAccumulator
+* LBFactory_Fake to LBFactoryFake
+* LBFactory_Multi to LBFactoryMulti
+* LBFactory_Simple to LBFactorySimple
+* LBFactory_Single to LBFactorySingle
+* LCStore_Accel to LCStoreAccel
+* LCStore_CDB to LCStoreCDB
+* LCStore_DB to LCStoreDB
+* LCStore_Null to LCStoreNull
+* LoadBalancer_Single to LoadBalancerSingle
+* LoadMonitor_MySQL to LoadMonitorMySQL
+* LoadMonitor_Null to LoadMonitorNull
+* LocalisationCache_BulkLoad to LocalisationCacheBulkLoad
+* csvStatsOutput to CsvStatsOutput
+* extensionLanguages to ExtensionLanguages
+* languages to Languages
+* statsOutput to StatsOutput
+* textStatsOutput to TextStatsOutput
+* wikiStatsOutput to WikiStatsOutput
+
+==== Removed methods ====
+* EditPage::spamPage() (deprecated since 1.17)
+* Exif::getFormattedData() (deprecated in 1.18)
+* Exif::makeFormattedData() (deprecated in 1.18)
+* Language::convertLinkToAllVariants() (deprecated in 1.17)
+* LanguageConverter::convertLinkToAllVariants() (deprecated in 1.17)
+* Linker::makeBrokenLink() (deprecated in 1.16)
+* Linker::makeBrokenLinkObj() (deprecated in 1.16)
+* Linker::makeColouredLinkObj() (deprecated in 1.16)
+* Linker::makeSizeLinkObj() (deprecated in 1.17)
+* ProfilerSimple::getCpuTime (deprecated in 1.20)
+* Revision::revText() (deprecated in 1.17)
+* SkinTemplate::jstext() (deprecated in 1.21)
+* SpecialRecentChanges::feedSetup()
+* SpecialRevisionDelete::extractBitField() (deprecated in 1.22)
+* User::getPageRenderingHash() (deprecated in 1.17)
+* WikiPage::quickEdit() (deprecated in 1.18)
+* WikiPage::useParserCache() (deprecated in 1.18)
+* WikiPage::viewUpdates() (deprecated in 1.18)
 
 == Compatibility ==
 
diff --git a/api.php b/api.php
index 51bb2ad..0d2312a 100644 (file)
--- a/api.php
+++ b/api.php
@@ -75,12 +75,17 @@ wfRunHooks( 'ApiBeforeMain', array( &$processor ) );
 // Process data & print results
 $processor->execute();
 
+if ( function_exists( 'fastcgi_finish_request' ) ) {
+       fastcgi_finish_request();
+}
+
 // Execute any deferred updates
 DeferredUpdates::doUpdates();
 
 // Log what the user did, for book-keeping purposes.
 $endtime = microtime( true );
 wfProfileOut( 'api.php' );
+
 wfLogProfilingData();
 
 // Log the request
index de87963..fc4d40e 100644 (file)
@@ -1546,6 +1546,7 @@ cache.
 $cache: The LocalisationCache object
 $code: language code
 &$alldata: The localisation data from core and extensions
+&purgeBlobs: whether to purge/update the message blobs via MessageBlobStore::clear()
 
 'LocalisationChecksBlacklist': When fetching the blacklist of
 localisation checks.
@@ -2203,8 +2204,14 @@ software.
 $software: The array of software in format 'name' => 'version'. See
   SpecialVersion::softwareInformation().
 
+'SpecialBlockModifyFormFields': Add more fields to Special:Block
+$sp: SpecialPage object, for context
+&$fields: Current HTMLForm fields
+
 'SpecialContributionsBeforeMainOutput': Before the form on Special:Contributions
-$id: User identifier
+$id: User id number, only provided for backwards-compatability
+$user: User object representing user contributions are being fetched for
+$sp: SpecialPage instance, providing context
 
 'SpecialListusersDefaultQuery': Called right before the end of
 UsersPager::getDefaultQuery().
index 821c32e..c82b39f 100644 (file)
@@ -1439,7 +1439,7 @@ class Article implements Page {
 
                if ( $appendSubtitle ) {
                        $out = $this->getContext()->getOutput();
-                       $out->addSubtitle( wfMessage( 'redirectpagesub' )->escaped() );
+                       $out->addSubtitle( wfMessage( 'redirectpagesub' )->parse() );
                }
 
                // the loop prepends the arrow image before the link, so the first case needs to be outside
@@ -1611,6 +1611,10 @@ class Article implements Page {
                $outputPage->setPageTitle( wfMessage( 'delete-confirm', $this->getTitle()->getPrefixedText() ) );
                $outputPage->addBacklinkSubtitle( $this->getTitle() );
                $outputPage->setRobotPolicy( 'noindex,nofollow' );
+               if ( $this->getTitle()->getBacklinkCache()->hasLinks( 'pagelinks' ) ) {
+                       $outputPage->wrapWikiMsg( "<div class='mw-warning plainlinks'>\n$1\n</div>\n",
+                               'deleting-backlinks-warning' );
+               }
                $outputPage->addWikiMsg( 'confirmdeletetext' );
 
                wfRunHooks( 'ArticleConfirmDelete', array( $this, $outputPage, &$reason ) );
index 58c8461..a9b0376 100644 (file)
@@ -461,16 +461,16 @@ $wgAutoloadLocalClasses = array(
        'FakeResultWrapper' => 'includes/db/DatabaseUtility.php',
        'Field' => 'includes/db/DatabaseUtility.php',
        'LBFactory' => 'includes/db/LBFactory.php',
-       'LBFactory_Fake' => 'includes/db/LBFactory.php',
-       'LBFactory_Multi' => 'includes/db/LBFactory_Multi.php',
-       'LBFactory_Simple' => 'includes/db/LBFactory.php',
-       'LBFactory_Single' => 'includes/db/LBFactory_Single.php',
+       'LBFactoryFake' => 'includes/db/LBFactory.php',
+       'LBFactoryMulti' => 'includes/db/LBFactoryMulti.php',
+       'LBFactorySimple' => 'includes/db/LBFactory.php',
+       'LBFactorySingle' => 'includes/db/LBFactorySingle.php',
        'LikeMatch' => 'includes/db/DatabaseUtility.php',
        'LoadBalancer' => 'includes/db/LoadBalancer.php',
-       'LoadBalancer_Single' => 'includes/db/LBFactory_Single.php',
+       'LoadBalancerSingle' => 'includes/db/LBFactorySingle.php',
        'LoadMonitor' => 'includes/db/LoadMonitor.php',
-       'LoadMonitor_MySQL' => 'includes/db/LoadMonitor.php',
-       'LoadMonitor_Null' => 'includes/db/LoadMonitor.php',
+       'LoadMonitorMySQL' => 'includes/db/LoadMonitor.php',
+       'LoadMonitorNull' => 'includes/db/LoadMonitor.php',
        'MssqlField' => 'includes/db/DatabaseMssql.php',
        'MssqlResult' => 'includes/db/DatabaseMssql.php',
        'MySQLField' => 'includes/db/DatabaseMysqlBase.php',
@@ -547,6 +547,7 @@ $wgAutoloadLocalClasses = array(
        'FSFileBackendDirList' => 'includes/filebackend/FSFileBackend.php',
        'FSFileBackendFileList' => 'includes/filebackend/FSFileBackend.php',
        'FSFileOpHandle' => 'includes/filebackend/FSFileBackend.php',
+       'MemoryFileBackend' => 'includes/filebackend/MemoryFileBackend.php',
        'SwiftFileBackend' => 'includes/filebackend/SwiftFileBackend.php',
        'SwiftFileBackendList' => 'includes/filebackend/SwiftFileBackend.php',
        'SwiftFileBackendDirList' => 'includes/filebackend/SwiftFileBackend.php',
@@ -686,6 +687,9 @@ $wgAutoloadLocalClasses = array(
        'JSParser' => 'includes/libs/jsminplus.php',
        'JSToken' => 'includes/libs/jsminplus.php',
        'JSTokenizer' => 'includes/libs/jsminplus.php',
+       'MWMessagePack' => 'includes/libs/MWMessagePack.php',
+       'RunningStat' => 'includes/libs/RunningStat.php',
+       'ScopedCallback' => 'includes/libs/ScopedCallback.php',
        'ScopedPHPTimeout' => 'includes/libs/ScopedPHPTimeout.php',
        'XmlTypeCheck' => 'includes/libs/XmlTypeCheck.php',
 
@@ -987,7 +991,7 @@ $wgAutoloadLocalClasses = array(
        'SpecialRandomInCategory' => 'includes/specials/SpecialRandomInCategory.php',
        'SpecialRandomredirect' => 'includes/specials/SpecialRandomredirect.php',
        'SpecialRecentChanges' => 'includes/specials/SpecialRecentchanges.php',
-       'SpecialRecentchangeslinked' => 'includes/specials/SpecialRecentchangeslinked.php',
+       'SpecialRecentChangesLinked' => 'includes/specials/SpecialRecentchangeslinked.php',
        'SpecialRedirect' => 'includes/specials/SpecialRedirect.php',
        'SpecialResetTokens' => 'includes/specials/SpecialResetTokens.php',
        'SpecialRevisionDelete' => 'includes/specials/SpecialRevisiondelete.php',
@@ -1073,7 +1077,6 @@ $wgAutoloadLocalClasses = array(
        'RegexlikeReplacer' => 'includes/utils/StringUtils.php',
        'ReplacementArray' => 'includes/utils/StringUtils.php',
        'Replacer' => 'includes/utils/StringUtils.php',
-       'ScopedCallback' => 'includes/utils/ScopedCallback.php',
        'StringUtils' => 'includes/utils/StringUtils.php',
        'UIDGenerator' => 'includes/utils/UIDGenerator.php',
        'ZipDirectoryReader' => 'includes/utils/ZipDirectoryReader.php',
index b1265c1..9b2b676 100644 (file)
@@ -1319,6 +1319,8 @@ unset( $serverName ); # Don't leak local variables to global scope
 
 /**
  * Password reminder name
+ *
+ * @deprecated since 1.23; use the system message 'emailsender' instead.
  */
 $wgPasswordSenderName = 'MediaWiki Mail';
 
@@ -1676,10 +1678,10 @@ $wgDBservers = false;
  * The class identified here is responsible for reading $wgDBservers,
  * $wgDBserver, etc., so overriding it may cause those globals to be ignored.
  *
- * The LBFactory_Multi class is provided for this purpose, please see
- * includes/db/LBFactory_Multi.php for configuration information.
+ * The LBFactoryMulti class is provided for this purpose, please see
+ * includes/db/LBFactoryMulti.php for configuration information.
  */
-$wgLBFactoryConf = array( 'class' => 'LBFactory_Simple' );
+$wgLBFactoryConf = array( 'class' => 'LBFactorySimple' );
 
 /**
  * How long to wait for a slave to catch up to the master
@@ -1828,7 +1830,7 @@ $wgExternalStores = array();
  * );
  * @endcode
  *
- * Used by LBFactory_Simple, may be ignored if $wgLBFactoryConf is set to
+ * Used by LBFactorySimple, may be ignored if $wgLBFactoryConf is set to
  * another class.
  */
 $wgExternalServers = array();
@@ -3344,6 +3346,7 @@ $wgResourceLoaderLESSFunctions = array(
  */
 $wgResourceLoaderLESSImportPaths = array(
        "$IP/resources/mediawiki.less/",
+       "$IP/skins/vector/",
 );
 
 /**
@@ -5933,6 +5936,16 @@ $wgExtensionFunctions = array();
  * Variables defined in extensions will override conflicting variables defined
  * in the core.
  *
+ * Since MediaWiki 1.23, use of this variable to define messages is discouraged; instead, store
+ * messages in JSON format and use $wgMessagesDirs. For setting other variables than
+ * $messages, $wgExtensionMessagesFiles should still be used.
+ *
+ * If there is an entry in $wgMessagesDirs with the same key as one in
+ * $wgExtensionMessagesFiles, then any $messages variables set in the $wgExtensionMessagesFiles file
+ * will be ignored. This means an extension that only provides messages can be backwards compatible
+ * by using both $wgExtensionMessagesFiles and $wgMessagesDirs, and only one of the two
+ * will be used depending on what the version of MediaWiki supports.
+ *
  * @par Example:
  * @code
  *    $wgExtensionMessagesFiles['ConfirmEdit'] = __DIR__.'/ConfirmEdit.i18n.php';
@@ -5940,6 +5953,32 @@ $wgExtensionFunctions = array();
  */
 $wgExtensionMessagesFiles = array();
 
+/**
+ * Extension messages directories.
+ *
+ * Associative array mapping extension name to the path of the directory where message files can
+ * be found. The message files are expected to be JSON files named for their language code, e.g.
+ * en.json, de.json, etc. Extensions with messages in multiple places may specify an array of
+ * message directories.
+ *
+ * @par Simple example:
+ * @code
+ *    $wgMessagesDirs['ConfirmEdit'] = __DIR__ . '/i18n';
+ * @endcode
+ *
+ * @par Complex example:
+ * @code
+ *    $wgMessagesDirs['VisualEditor'] = array(
+ *        __DIR__ . '/i18n',
+ *        __DIR__ . '/modules/ve-core/i18n',
+ *        __DIR__ . '/modules/qunit/localisation',
+ *        __DIR__ . '/modules/oojs-ui/messages',
+ *    )
+ * @endcode
+ * @since 1.23
+ */
+$wgMessagesDirs = array();
+
 /**
  * Array of files with list(s) of extension entry points to be used in
  * maintenance/mergeMessageFileList.php
@@ -6093,9 +6132,19 @@ $wgJobClasses = array(
  * - Jobs that you would never want to run as part of a page rendering request.
  * - Jobs that you want to run on specialized machines ( like transcoding, or a particular
  *   machine on your cluster has 'outside' web access you could restrict uploadFromUrl )
+ * These settings should be global to all wikis.
  */
 $wgJobTypesExcludedFromDefaultQueue = array( 'AssembleUploadChunks', 'PublishStashedFile' );
 
+/**
+ * Map of job types to how many job "work items" should be run per second
+ * on each job runner process. The meaning of "work items" varies per job,
+ * but typically would be something like "pages to update". A single job
+ * may have a variable number of work items, as is the case with batch jobs.
+ * These settings should be global to all wikis.
+ */
+$wgJobBackoffThrottling = array();
+
 /**
  * Map of job types to configuration arrays.
  * This determines which queue class and storage system is used for each job type.
index f86cae4..ba49378 100644 (file)
@@ -1913,12 +1913,10 @@ class EditPage {
        function getBaseRevision() {
                if ( !$this->mBaseRevision ) {
                        $db = wfGetDB( DB_MASTER );
-                       $baseRevision = Revision::loadFromTimestamp(
+                       $this->mBaseRevision = Revision::loadFromTimestamp(
                                $db, $this->mTitle, $this->edittime );
-                       return $this->mBaseRevision = $baseRevision;
-               } else {
-                       return $this->mBaseRevision;
                }
+               return $this->mBaseRevision;
        }
 
        /**
index b4a507d..639ba28 100644 (file)
@@ -866,7 +866,7 @@ class XmlDumpWriter {
         * @since 1.18
         */
        public static function canonicalTitle( Title $title ) {
-               if ( $title->getInterwiki() ) {
+               if ( $title->isExternal() ) {
                        return $title->getPrefixedText();
                }
 
index 5a1ef6c..3250ec8 100644 (file)
@@ -1622,18 +1622,19 @@ function wfMsgWikiHtml( $key ) {
  * @deprecated since 1.18
  *
  * @param string $key key of the message
- * @param array $options processing rules. Can take the following options:
- *   <i>parse</i>: parses wikitext to HTML
- *   <i>parseinline</i>: parses wikitext to HTML and removes the surrounding
+ * @param array $options processing rules.
+ *   Can take the following options:
+ *     parse: parses wikitext to HTML
+ *     parseinline: parses wikitext to HTML and removes the surrounding
  *       p's added by parser or tidy
- *   <i>escape</i>: filters message through htmlspecialchars
- *   <i>escapenoentities</i>: same, but allows entity references like &#160; through
- *   <i>replaceafter</i>: parameters are substituted after parsing or escaping
- *   <i>parsemag</i>: transform the message using magic phrases
- *   <i>content</i>: fetch message for content language instead of interface
- * Also can accept a single associative argument, of the form 'language' => 'xx':
- *   <i>language</i>: Language object or language code to fetch message for
- *       (overridden by <i>content</i>).
+ *     escape: filters message through htmlspecialchars
+ *     escapenoentities: same, but allows entity references like &#160; through
+ *     replaceafter: parameters are substituted after parsing or escaping
+ *     parsemag: transform the message using magic phrases
+ *     content: fetch message for content language instead of interface
+ *   Also can accept a single associative argument, of the form 'language' => 'xx':
+ *     language: Language object or language code to fetch message for
+ *       (overridden by content).
  * Behavior for conflicting options (e.g., parse+parseinline) is undefined.
  *
  * @return String
@@ -3240,7 +3241,7 @@ function wfUsePHP( $req_ver ) {
  * with releases
  *
  * Note: Due to the behavior of PHP's version_compare() which is used in this
- * fuction, if you want to allow the 'wmf' development versions add a 'c' (or
+ * function, if you want to allow the 'wmf' development versions add a 'c' (or
  * any single letter other than 'a', 'b' or 'p') as a post-fix to your
  * targeted version number. For example if you wanted to allow any variation
  * of 1.22 use `wfUseMW( '1.22c' )`. Using an 'a' or 'b' instead of 'c' will
@@ -4160,3 +4161,56 @@ function wfCanIPUseHTTPS( $ip ) {
        wfRunHooks( 'CanIPUseHTTPS', array( $ip, &$canDo ) );
        return !!$canDo;
 }
+
+/**
+ * Work out the IP address based on various globals
+ * For trusted proxies, use the XFF client IP (first of the chain)
+ *
+ * @deprecated in 1.19; call $wgRequest->getIP() directly.
+ * @return string
+ */
+function wfGetIP() {
+       wfDeprecated( __METHOD__, '1.19' );
+       global $wgRequest;
+       return $wgRequest->getIP();
+}
+
+/**
+ * Checks if an IP is a trusted proxy provider.
+ * Useful to tell if X-Forwarded-For data is possibly bogus.
+ * Squid cache servers for the site are whitelisted.
+ *
+ * @param $ip String
+ * @return bool
+ */
+function wfIsTrustedProxy( $ip ) {
+       $trusted = wfIsConfiguredProxy( $ip );
+       wfRunHooks( 'IsTrustedProxy', array( &$ip, &$trusted ) );
+       return $trusted;
+}
+
+/**
+ * Checks if an IP matches a proxy we've configured.
+ * @param $ip String
+ * @return bool
+ * @since 1.23 Supports CIDR ranges in $wgSquidServersNoPurge
+ */
+function wfIsConfiguredProxy( $ip ) {
+       global $wgSquidServers, $wgSquidServersNoPurge;
+
+       // quick check of known proxy servers
+       $trusted = in_array( $ip, $wgSquidServers )
+               || in_array( $ip, $wgSquidServersNoPurge );
+
+       if ( !$trusted ) {
+               // slightly slower check to see if the ip is listed directly or in a CIDR
+               // block in $wgSquidServersNoPurge
+               foreach ( $wgSquidServersNoPurge as $block ) {
+                       if ( strpos( $block, '/' ) !== false && IP::isInRange( $ip, $block ) ) {
+                               $trusted = true;
+                               break;
+                       }
+               }
+       }
+       return $trusted;
+}
index c73d72c..997a948 100644 (file)
@@ -316,7 +316,12 @@ class ImagePage extends Article {
 
                        $renderLang = $request->getVal( 'lang' );
                        if ( !is_null( $renderLang ) ) {
-                               $params['lang'] = $renderLang;
+                               $handler = $this->displayImg->getHandler();
+                               if ( $handler && $handler->validateParam( 'lang', $renderLang ) ) {
+                                       $params['lang'] = $renderLang;
+                               } else {
+                                       $renderLang = null;
+                               }
                        }
 
                        $width_orig = $this->displayImg->getWidth( $page );
@@ -1002,7 +1007,7 @@ EOT
                if ( !$haveDefaultLang ) {
                        // Its hard to know if the content is really in the default language, or
                        // if its just unmarked content that could be in any language.
-                       $opts = Xml::option( wfMessage( 'img-lang-default' )->text(), '', $defaultLang === $curLang ) . $opts;
+                       $opts = Xml::option( wfMessage( 'img-lang-default' )->text(), $defaultLang, $defaultLang === $curLang ) . $opts;
                }
                if ( !$haveCurrentLang && $defaultLang !== $curLang ) {
                        $name = Language::fetchLanguageName( $curLang, $this->getContext()->getLanguage()->getCode() );
index 8b7af02..721b94b 100644 (file)
@@ -1717,7 +1717,7 @@ class ImportStreamSource {
                        return Status::newFatal( 'import-noarticle' );
                }
                $link = Title::newFromText( "$interwiki:Special:Export/$page" );
-               if ( is_null( $link ) || $link->getInterwiki() == '' ) {
+               if ( is_null( $link ) || !$link->isExternal() ) {
                        return Status::newFatal( 'importbadinterwiki' );
                } else {
                        $params = array();
index f303a17..867b88b 100644 (file)
@@ -393,29 +393,6 @@ class Linker {
                return htmlspecialchars( $target->getPrefixedText() );
        }
 
-       /**
-        * Generate either a normal exists-style link or a stub link, depending
-        * on the given page size.
-        *
-        * @param $size Integer
-        * @param $nt Title object.
-        * @param $text String
-        * @param $query String
-        * @param $trail String
-        * @param $prefix String
-        * @return string HTML of link
-        * @deprecated since 1.17
-        */
-       static function makeSizeLinkObj( $size, $nt, $text = '', $query = '', $trail = '', $prefix = '' ) {
-               global $wgUser;
-               wfDeprecated( __METHOD__, '1.17' );
-
-               $threshold = $wgUser->getStubThreshold();
-               $colour = ( $size < $threshold ) ? 'stub' : '';
-               // @todo FIXME: Replace deprecated makeColouredLinkObj by link()
-               return self::makeColouredLinkObj( $nt, $colour, $text, $query, $trail, $prefix );
-       }
-
        /**
         * Make appropriate markup for a link to the current article. This is currently rendered
         * as the bold link text. The calling sequence is the same as the other make*LinkObj static functions,
@@ -1469,7 +1446,7 @@ class Linker {
 
                        $target = Title::newFromText( $linkTarget );
                        if ( $target ) {
-                               if ( $target->getText() == '' && $target->getInterwiki() === ''
+                               if ( $target->getText() == '' && !$target->isExternal()
                                        && !self::$commentLocal && self::$commentContextTitle
                                ) {
                                        $newTarget = clone ( self::$commentContextTitle );
@@ -2160,7 +2137,8 @@ class Linker {
                }
 
                wfProfileOut( __METHOD__ );
-               return self::$accesskeycache[$name] = $accesskey;
+               self::$accesskeycache[$name] = $accesskey;
+               return self::$accesskeycache[$name];
        }
 
        /**
@@ -2243,32 +2221,6 @@ class Linker {
 
        /* Deprecated methods */
 
-       /**
-        * @deprecated since 1.16 Use link()
-        *
-        * This function is a shortcut to makeBrokenLinkObj(Title::newFromText($title),...). Do not call
-        * it if you already have a title object handy. See makeBrokenLinkObj for further documentation.
-        *
-        * @param string $title The text of the title
-        * @param string $text Link text
-        * @param string $query Optional query part
-        * @param string $trail Optional trail. Alphabetic characters at the start of this string will
-        *               be included in the link text. Other characters will be appended after
-        *               the end of the link.
-        * @return string
-        */
-       static function makeBrokenLink( $title, $text = '', $query = '', $trail = '' ) {
-               wfDeprecated( __METHOD__, '1.16' );
-
-               $nt = Title::newFromText( $title );
-               if ( $nt instanceof Title ) {
-                       return self::makeBrokenLinkObj( $nt, $text, $query, $trail );
-               } else {
-                       wfDebug( 'Invalid title passed to self::makeBrokenLink(): "' . $title . "\"\n" );
-                       return $text == '' ? $title : $text;
-               }
-       }
-
        /**
         * @deprecated since 1.16 Use link(); warnings since 1.21
         *
@@ -2342,63 +2294,6 @@ class Linker {
                return $ret;
        }
 
-       /**
-        * @deprecated since 1.16 Use link()
-        *
-        * Make a red link to the edit page of a given title.
-        *
-        * @param $title Title object of the target page
-        * @param $text  String: Link text
-        * @param string $query Optional query part
-        * @param string $trail Optional trail. Alphabetic characters at the start of this string will
-        *                      be included in the link text. Other characters will be appended after
-        *                      the end of the link.
-        * @param string $prefix Optional prefix
-        * @return string
-        */
-       static function makeBrokenLinkObj( $title, $text = '', $query = '', $trail = '', $prefix = '' ) {
-               wfDeprecated( __METHOD__, '1.16' );
-
-               wfProfileIn( __METHOD__ );
-
-               list( $inside, $trail ) = self::splitTrail( $trail );
-               if ( $text === '' ) {
-                       $text = self::linkText( $title );
-               }
-
-               $ret = self::link( $title, "$prefix$text$inside", array(),
-                       wfCgiToArray( $query ), 'broken' ) . $trail;
-
-               wfProfileOut( __METHOD__ );
-               return $ret;
-       }
-
-       /**
-        * @deprecated since 1.16 Use link()
-        *
-        * Make a coloured link.
-        *
-        * @param $nt Title object of the target page
-        * @param $colour Integer: colour of the link
-        * @param $text   String:  link text
-        * @param $query  String:  optional query part
-        * @param $trail  String:  optional trail. Alphabetic characters at the start of this string will
-        *                      be included in the link text. Other characters will be appended after
-        *                      the end of the link.
-        * @param string $prefix Optional prefix
-        * @return string
-        */
-       static function makeColouredLinkObj( $nt, $colour, $text = '', $query = '', $trail = '', $prefix = '' ) {
-               wfDeprecated( __METHOD__, '1.16' );
-
-               if ( $colour != '' ) {
-                       $style = self::getInternalLinkAttributesObj( $nt, $text, $colour );
-               } else {
-                       $style = '';
-               }
-               return self::makeKnownLinkObj( $nt, $text, $query, $trail, $prefix, '', $style );
-       }
-
        /**
         * Returns the attributes for the tooltip and access key.
         * @return array
index 427a1ad..232f43e 100644 (file)
@@ -709,7 +709,9 @@ class MagicWordArray {
                                $magic = MagicWord::get( $name );
                                $case = intval( $magic->isCaseSensitive() );
                                foreach ( $magic->getSynonyms() as $i => $syn ) {
-                                       $group = "(?P<{$i}_{$name}>" . preg_quote( $syn, '/' ) . ')';
+                                       // Group name must start with a non-digit in PCRE 8.34+
+                                       $it = strtr( $i, '0123456789', 'abcdefghij' );
+                                       $group = "(?P<{$it}_{$name}>" . preg_quote( $syn, '/' ) . ')';
                                        if ( $this->baseRegex[$case] === '' ) {
                                                $this->baseRegex[$case] = $group;
                                        } else {
index 6ac87b3..dd22844 100644 (file)
@@ -817,11 +817,12 @@ class Message {
                        } elseif ( isset( $param['bitrate'] ) ) {
                                return array( 'before', $this->language->formatBitrate( $param['bitrate'] ) );
                        } else {
-                               trigger_error(
-                                       'Invalid parameter for message "' . $this->getKey() . '": ' .
-                                       htmlspecialchars( serialize( $param ) ),
-                                       E_USER_WARNING
-                               );
+                               $warning = 'Invalid parameter for message "' . $this->getKey() . '": ' .
+                                       htmlspecialchars( serialize( $param ) );
+                               trigger_error( $warning, E_USER_WARNING );
+                               $e = new Exception;
+                               wfDebugLog( 'Bug58676', $warning . "\n" . $e->getTraceAsString() );
+
                                return array( 'before', '[INVALID]' );
                        }
                } elseif ( $param instanceof Message ) {
index eac70a3..b6a8d24 100644 (file)
@@ -2484,7 +2484,7 @@ $templates
                $userdir = $this->getLanguage()->getDir();
                $sitedir = $wgContLang->getDir();
 
-               $ret = Html::htmlHeader( array( 'lang' => $this->getLanguage()->getHtmlCode(), 'dir' => $userdir, 'class' => 'client-nojs' ) );
+               $ret = Html::htmlHeader( $sk->getHtmlElementAttributes() );
 
                if ( $this->getHTMLTitle() == '' ) {
                        $this->setHTMLTitle( $this->msg( 'pagetitle', $this->getPageTitle() )->inContentLanguage() );
index 19c3c43..6a10e88 100644 (file)
@@ -659,7 +659,7 @@ abstract class IndexPager extends ContextSource implements Pager {
         * representing the result row $row. Rows will be concatenated and
         * returned by getBody()
         *
-        * @param array $row Database row
+        * @param array|stdClass $row Database row
         * @return string
         */
        abstract function formatRow( $row );
index 3c464c5..780cae5 100644 (file)
@@ -44,7 +44,7 @@ class PrefixSearch {
 
                // Find a Title which is not an interwiki and is in NS_MAIN
                $title = Title::newFromText( $search );
-               if ( $title && $title->getInterwiki() == '' ) {
+               if ( $title && !$title->isExternal() ) {
                        $ns = array( $title->getNamespace() );
                        if ( $ns[0] == NS_MAIN ) {
                                $ns = $namespaces; // no explicit prefix, use default namespaces
@@ -57,7 +57,7 @@ class PrefixSearch {
                $title = Title::newFromText( $search . 'Dummy' );
                if ( $title && $title->getText() == 'Dummy'
                        && $title->getNamespace() != NS_MAIN
-                       && $title->getInterwiki() == '' ) {
+                       && !$title->isExternal() ) {
                        return self::searchBackend(
                                array( $title->getNamespace() ), '', $limit );
                }
diff --git a/includes/ProxyTools.php b/includes/ProxyTools.php
deleted file mode 100644 (file)
index a0f9e5f..0000000
+++ /dev/null
@@ -1,100 +0,0 @@
-<?php
-/**
- * Functions for dealing with proxies.
- *
- * 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
- */
-
-/**
- * Extracts the XFF string from the request header
- * Note: headers are spoofable
- *
- * @deprecated in 1.19; use $wgRequest->getHeader( 'X-Forwarded-For' ) instead.
- * @return string
- */
-function wfGetForwardedFor() {
-       wfDeprecated( __METHOD__, '1.19' );
-       global $wgRequest;
-       return $wgRequest->getHeader( 'X-Forwarded-For' );
-}
-
-/**
- * Returns the browser/OS data from the request header
- * Note: headers are spoofable
- *
- * @deprecated in 1.18; use $wgRequest->getHeader( 'User-Agent' ) instead.
- * @return string
- */
-function wfGetAgent() {
-       wfDeprecated( __METHOD__, '1.18' );
-       global $wgRequest;
-       return $wgRequest->getHeader( 'User-Agent' );
-}
-
-/**
- * Work out the IP address based on various globals
- * For trusted proxies, use the XFF client IP (first of the chain)
- *
- * @deprecated in 1.19; call $wgRequest->getIP() directly.
- * @return string
- */
-function wfGetIP() {
-       wfDeprecated( __METHOD__, '1.19' );
-       global $wgRequest;
-       return $wgRequest->getIP();
-}
-
-/**
- * Checks if an IP is a trusted proxy provider.
- * Useful to tell if X-Forwarded-For data is possibly bogus.
- * Squid cache servers for the site are whitelisted.
- *
- * @param $ip String
- * @return bool
- */
-function wfIsTrustedProxy( $ip ) {
-       $trusted = wfIsConfiguredProxy( $ip );
-       wfRunHooks( 'IsTrustedProxy', array( &$ip, &$trusted ) );
-       return $trusted;
-}
-
-/**
- * Checks if an IP matches a proxy we've configured.
- * @param $ip String
- * @return bool
- * @since 1.23 Supports CIDR ranges in $wgSquidServersNoPurge
- */
-function wfIsConfiguredProxy( $ip ) {
-       global $wgSquidServers, $wgSquidServersNoPurge;
-
-       // quick check of known proxy servers
-       $trusted = in_array( $ip, $wgSquidServers )
-               || in_array( $ip, $wgSquidServersNoPurge );
-
-       if ( !$trusted ) {
-               // slightly slower check to see if the ip is listed directly or in a CIDR
-               // block in $wgSquidServersNoPurge
-               foreach ( $wgSquidServersNoPurge as $block ) {
-                       if ( strpos( $block, '/' ) !== false && IP::isInRange( $ip, $block ) ) {
-                               $trusted = true;
-                               break;
-                       }
-               }
-       }
-       return $trusted;
-}
index a904c24..654b616 100644 (file)
@@ -466,7 +466,7 @@ abstract class QueryPage extends SpecialPage {
        /**
         * This is the actual workhorse. It does everything needed to make a
         * real, honest-to-gosh query page.
-        * @para $par
+        * @param string $par
         * @return int
         */
        function execute( $par ) {
@@ -547,7 +547,7 @@ abstract class QueryPage extends SpecialPage {
                                        min( $this->numRows, $this->limit ), # do not show the one extra row, if exist
                                        $this->offset + 1 )->parseAsBlock() );
                                # Disable the "next" link when we reach the end
-                               $paging = $this->getLanguage()->viewPrevNext( $this->getTitle( $par ), $this->offset,
+                               $paging = $this->getLanguage()->viewPrevNext( $this->getPageTitle( $par ), $this->offset,
                                        $this->limit, $this->linkParameters(), ( $this->numRows <= $this->limit ) );
                                $out->addHTML( '<p>' . $paging . '</p>' );
                        } else {
@@ -749,7 +749,7 @@ abstract class QueryPage extends SpecialPage {
        }
 
        function feedUrl() {
-               return $this->getTitle()->getFullURL();
+               return $this->getPageTitle()->getFullURL();
        }
 }
 
index f066110..1ad0b4a 100644 (file)
@@ -1010,17 +1010,6 @@ class Revision implements IDBAccessObject {
                }
        }
 
-       /**
-        * Alias for getText(Revision::FOR_THIS_USER)
-        *
-        * @deprecated since 1.17
-        * @return String
-        */
-       public function revText() {
-               wfDeprecated( __METHOD__, '1.17' );
-               return $this->getText( self::FOR_THIS_USER );
-       }
-
        /**
         * Fetch revision text without regard for view restrictions
         *
@@ -1214,15 +1203,15 @@ class Revision implements IDBAccessObject {
        /**
          * Get revision text associated with an old or archive row
          * $row is usually an object from wfFetchRow(), both the flags and the text
-         * field must be included
+         * field must be included.
          *
-         * @param $row Object: the text data
-         * @param string $prefix table prefix (default 'old_')
-         * @param string|false $wiki the name of the wiki to load the revision text from
-         *         (same as the the wiki $row was loaded from) or false to indicate the local
-         *         wiki (this is the default). Otherwise, it must be a symbolic wiki database
-         *         identifier as understood by the LoadBalancer class.
-         * @return String: text the text requested or false on failure
+         * @param stdClass $row The text data
+         * @param string $prefix Table prefix (default 'old_')
+         * @param string|bool $wiki The name of the wiki to load the revision text from
+         *   (same as the the wiki $row was loaded from) or false to indicate the local
+         *   wiki (this is the default). Otherwise, it must be a symbolic wiki database
+         *   identifier as understood by the LoadBalancer class.
+         * @return string Text the text requested or false on failure
          */
        public static function getRevisionText( $row, $prefix = 'old_', $wiki = false ) {
                wfProfileIn( __METHOD__ );
index f75ee29..531d1a4 100644 (file)
@@ -36,6 +36,7 @@ if ( !defined( 'MEDIAWIKI' ) ) {
 
 $fname = 'Setup.php';
 wfProfileIn( $fname );
+wfProfileIn( $fname  . '-defaults' );
 
 // Check to see if we are at the file scope
 if ( !isset( $wgVersion ) ) {
@@ -247,11 +248,6 @@ foreach ( $wgForeignFileRepos as &$repo ) {
 }
 unset( $repo ); // no global pollution; destroy reference
 
-if ( is_null( $wgEnableAutoRotation ) ) {
-       // Only enable auto-rotation when the bitmap handler can rotate
-       $wgEnableAutoRotation = BitmapHandler::canRotate();
-}
-
 if ( $wgRCFilterByAge ) {
        # # Trim down $wgRCLinkDays so that it only lists links which are valid
        # # as determined by $wgRCMaxAge.
@@ -401,11 +397,15 @@ if ( $wgRC2UDPAddress ) {
        );
 }
 
+wfProfileOut( $fname  . '-defaults' );
+
 // Disable MWDebug for command line mode, this prevents MWDebug from eating up
 // all the memory from logging SQL queries on maintenance scripts
 global $wgCommandLineMode;
 if ( $wgDebugToolbar && !$wgCommandLineMode ) {
+       wfProfileIn( $fname . '-debugtoolbar' );
        MWDebug::init();
+       wfProfileOut( $fname . '-debugtoolbar' );
 }
 
 if ( !class_exists( 'AutoLoader' ) ) {
@@ -419,10 +419,10 @@ wfProfileOut( $fname . '-exception' );
 wfProfileIn( $fname . '-includes' );
 require_once "$IP/includes/normal/UtfNormalUtil.php";
 require_once "$IP/includes/GlobalFunctions.php";
-require_once "$IP/includes/ProxyTools.php";
 require_once "$IP/includes/normal/UtfNormalDefines.php";
 wfProfileOut( $fname . '-includes' );
 
+wfProfileIn( $fname . '-defaults2' );
 if ( $wgSecureLogin && substr( $wgServer, 0, 2 ) !== '//' ) {
        $wgSecureLogin = false;
        wfWarn( 'Secure login was enabled on a server that only supports HTTP or HTTPS. Disabling secure login.' );
@@ -431,7 +431,9 @@ if ( $wgSecureLogin && substr( $wgServer, 0, 2 ) !== '//' ) {
 # Now that GlobalFunctions is loaded, set defaults that depend
 # on it.
 if ( $wgTmpDirectory === false ) {
+       wfProfileIn( $fname . '-tempDir' );
        $wgTmpDirectory = wfTempDir();
+       wfProfileOut( $fname . '-tempDir' );
 }
 
 if ( $wgCanonicalServer === false ) {
@@ -455,6 +457,7 @@ if ( !$wgHTCPRouting && $wgHTCPMulticastAddress ) {
        );
 }
 
+wfProfileOut( $fname . '-defaults2' );
 wfProfileIn( $fname . '-misc1' );
 
 # Raise the memory limit if it's too low
index 946e698..6722cca 100644 (file)
@@ -453,6 +453,19 @@ abstract class Skin extends ContextSource {
                return "$numeric $type $name";
        }
 
+       /*
+        * Return values for <html> element
+        * @return array of associative name-to-value elements for <html> element
+        */
+       public function getHtmlElementAttributes() {
+               $lang = $this->getLanguage();
+               return array(
+                       'lang' => $lang->getHtmlCode(),
+                       'dir' => $lang->getDir(),
+                       'class' => 'client-nojs',
+               );
+       }
+
        /**
         * This will be called by OutputPage::headElement when it is creating the
         * "<body>" tag, skins can override it if they have a need to add in any
index 7da3de9..18e36ba 100644 (file)
@@ -271,10 +271,9 @@ class SkinTemplate extends Skin {
         * initialize various variables and generate the template
         *
         * @since 1.23
-        * @param $out OutputPage
         * @return QuickTemplate the template to be executed by outputPage
         */
-       protected function prepareQuickTemplate( OutputPage $out = null ) {
+       protected function prepareQuickTemplate() {
                global $wgContLang, $wgScript, $wgStylePath,
                        $wgMimeType, $wgJsMimeType, $wgXhtmlNamespaces, $wgHtml5Version,
                        $wgDisableCounters, $wgSitename, $wgLogo, $wgMaxCredits,
@@ -285,6 +284,7 @@ class SkinTemplate extends Skin {
 
                $title = $this->getTitle();
                $request = $this->getRequest();
+               $out = $this->getOutput();
                $tpl = $this->setupTemplateForOutput();
 
                wfProfileIn( __METHOD__ . '-stuff-head' );
@@ -1403,15 +1403,6 @@ abstract class QuickTemplate {
                echo htmlspecialchars( $this->data[$str] );
        }
 
-       /**
-        * @private
-        * @deprecated since 1.21; use Xml::encodeJsVar() or Xml::encodeJsCall() instead
-        */
-       function jstext( $str ) {
-               wfDeprecated( __METHOD__, '1.21' );
-               echo Xml::escapeJsString( $this->data[$str] );
-       }
-
        /**
         * @private
         */
index 30eb129..18b8f0b 100644 (file)
@@ -44,7 +44,6 @@
  * @since 1.17
  */
 class SpecialPageFactory {
-
        /**
         * List of special page names to the subclass of SpecialPage which handles them.
         */
@@ -109,7 +108,7 @@ class SpecialPageFactory {
                'Watchlist'                 => 'SpecialWatchlist',
                'Newpages'                  => 'SpecialNewpages',
                'Recentchanges'             => 'SpecialRecentChanges',
-               'Recentchangeslinked'       => 'SpecialRecentchangeslinked',
+               'Recentchangeslinked'       => 'SpecialRecentChangesLinked',
                'Tags'                      => 'SpecialTags',
 
                // Media reports and uploads
@@ -259,8 +258,8 @@ class SpecialPageFactory {
         * where the first element is the special page name and the second is the
         * subpage.
         *
-        * @param $alias String
-        * @return Array( String, String|null ), or array( null, null ) if the page is invalid
+        * @param string $alias
+        * @return array Array( String, String|null ), or array( null, null ) if the page is invalid
         */
        public static function resolveAlias( $alias ) {
                global $wgContLang;
@@ -286,8 +285,8 @@ class SpecialPageFactory {
        /**
         * Add a page to a certain display group for Special:SpecialPages
         *
-        * @param $page Mixed: SpecialPage or string
-        * @param $group String
+        * @param SpecialPage|string $page
+        * @param string $group
         * @deprecated since 1.21 Override SpecialPage::getGroupName
         */
        public static function setGroup( $page, $group ) {
@@ -301,8 +300,8 @@ class SpecialPageFactory {
        /**
         * Get the group that the special page belongs in on Special:SpecialPage
         *
-        * @param $page SpecialPage
-        * @return String
+        * @param SpecialPage $page
+        * @return string
         * @deprecated since 1.21 Use SpecialPage::getFinalGroupName
         */
        public static function getGroup( &$page ) {
@@ -314,8 +313,8 @@ class SpecialPageFactory {
        /**
         * Check if a given name exist as a special page or as a special page alias
         *
-        * @param string $name name of a special page
-        * @return Boolean: true if a special page exists with this name
+        * @param string $name Name of a special page
+        * @return bool True if a special page exists with this name
         */
        public static function exists( $name ) {
                list( $title, /*...*/ ) = self::resolveAlias( $name );
@@ -351,9 +350,9 @@ class SpecialPageFactory {
         * Return categorised listable special pages which are available
         * for the current user, and everyone.
         *
-        * @param $user User object to check permissions, $wgUser will be used
-        *              if not provided
-        * @return Array( String => Specialpage )
+        * @param $user User object to check permissions, $wgUser will be used if
+        *   if not provided
+        * @return array ( string => Specialpage )
         */
        public static function getUsablePages( User $user = null ) {
                $pages = array();
@@ -378,7 +377,7 @@ class SpecialPageFactory {
        /**
         * Return categorised listable special pages for all users
         *
-        * @return Array( String => Specialpage )
+        * @return array ( string => Specialpage )
         */
        public static function getRegularPages() {
                $pages = array();
@@ -395,7 +394,7 @@ class SpecialPageFactory {
         * Return categorised listable special pages which are available
         * for the current user, but not for everyone
         *
-        * @return Array( String => Specialpage )
+        * @return array ( string => Specialpage )
         */
        public static function getRestrictedPages() {
                global $wgUser;
@@ -421,9 +420,9 @@ class SpecialPageFactory {
         * Returns a title object if the page is redirected, false if there was no such special
         * page, and true if it was successful.
         *
-        * @param $title          Title object
-        * @param $context        IContextSource
-        * @param $including      Bool output is being captured for use in {{special:whatever}}
+        * @param Title $title
+        * @param IContextSource $context
+        * @param bool $including Bool output is being captured for use in {{special:whatever}}
         *
         * @return bool
         */
@@ -466,13 +465,13 @@ class SpecialPageFactory {
                        if ( $name != $page->getLocalName() && !$context->getRequest()->wasPosted() ) {
                                $query = $context->getRequest()->getQueryValues();
                                unset( $query['title'] );
-                               $title = $page->getTitle( $par );
+                               $title = $page->getPageTitle( $par );
                                $url = $title->getFullURL( $query );
                                $context->getOutput()->redirect( $url );
                                wfProfileOut( __METHOD__ );
                                return $title;
                        } else {
-                               $context->setTitle( $page->getTitle( $par ) );
+                               $context->setTitle( $page->getPageTitle( $par ) );
                        }
 
                } elseif ( !$page->isIncludable() ) {
@@ -501,10 +500,9 @@ class SpecialPageFactory {
         * variables so that the special page will get the context it'd expect on a
         * normal request, and then restores them to their previous values after.
         *
-        * @param $title Title
-        * @param $context IContextSource
-        *
-        * @return String: HTML fragment
+        * @param Title $title
+        * @param IContextSource $context
+        * @return string HTML fragment
         */
        static function capturePath( Title $title, IContextSource $context ) {
                global $wgOut, $wgTitle, $wgRequest, $wgUser, $wgLang;
@@ -539,10 +537,9 @@ class SpecialPageFactory {
        /**
         * Get the local name for a specified canonical name
         *
-        * @param $name String
-        * @param $subpage String|Bool
-        *
-        * @return String
+        * @param string $name
+        * @param string|bool $subpage
+        * @return string
         */
        static function getLocalNameFor( $name, $subpage = false ) {
                global $wgContLang;
@@ -576,9 +573,8 @@ class SpecialPageFactory {
        /**
         * Get a title for a given alias
         *
-        * @param $alias String
-        *
-        * @return Title or null if there is no such alias
+        * @param string $alias
+        * @return Title|null Title or null if there is no such alias
         */
        static function getTitleForAlias( $alias ) {
                $name = self::resolveAlias( $alias );
index 1d13f4b..88268bb 100644 (file)
  * @internal documentation reviewed 15 Mar 2010
  */
 class Title {
-       /** @name Static cache variables */
-       // @{
-       static private $titleCache = array();
-       // @}
+       /** @var MapCacheLRU */
+       static private $titleCache = null;
 
        /**
         * Title::newFromText maintains a cache to avoid expensive re-normalization of
@@ -61,7 +59,7 @@ class Title {
        var $mDbkeyform = '';             // /< Main part with underscores
        var $mUserCaseDBKey;              // /< DB key with the initial letter in the case specified by the user
        var $mNamespace = NS_MAIN;        // /< Namespace index, i.e. one of the NS_xxxx constants
-       var $mInterwiki = '';             // /< Interwiki prefix (or null string)
+       var $mInterwiki = '';             // /< Interwiki prefix
        var $mFragment;                   // /< Title fragment (i.e. the bit after the #)
        var $mArticleID = -1;             // /< Article ID, fetched from the link cache on demand
        var $mLatestID = false;           // /< ID of most recent revision
@@ -75,7 +73,7 @@ class Title {
        var $mHasCascadingRestrictions;   ///< Are cascading restrictions in effect on this page?
        var $mCascadeSources;             ///< Where are the cascading restrictions coming from on this page?
        var $mRestrictionsLoaded = false; ///< Boolean for initialisation on demand
-       var $mPrefixedText;               ///< Text form including namespace/interwiki, initialised on demand
+       var $mPrefixedText = null;        ///< Text form including namespace/interwiki, initialised on demand
        var $mTitleProtection;            ///< Cached value for getTitleProtection (create protection)
        # Don't change the following default, NS_MAIN is hardcoded in several
        # places.  See bug 696.
@@ -130,6 +128,8 @@ class Title {
                        throw new MWException( 'Title::newFromText given an object' );
                }
 
+               $cache = self::getTitleCache();
+
                /**
                 * Wiki pages often contain multiple links to the same page.
                 * Title normalization and parsing can become expensive on
@@ -138,8 +138,8 @@ class Title {
                 *
                 * In theory these are value objects and won't get changed...
                 */
-               if ( $defaultNamespace == NS_MAIN && isset( Title::$titleCache[$text] ) ) {
-                       return Title::$titleCache[$text];
+               if ( $defaultNamespace == NS_MAIN && $cache->has( $text ) ) {
+                       return $cache->get( $text );
                }
 
                # Convert things like &eacute; &#257; or &#x3017; into normalized (bug 14952) text
@@ -149,16 +149,9 @@ class Title {
                $t->mDbkeyform = str_replace( ' ', '_', $filteredText );
                $t->mDefaultNamespace = $defaultNamespace;
 
-               static $cachedcount = 0;
                if ( $t->secureAndSplit() ) {
                        if ( $defaultNamespace == NS_MAIN ) {
-                               if ( $cachedcount >= self::CACHE_MAX ) {
-                                       # Avoid memory leaks on mass operations...
-                                       Title::$titleCache = array();
-                                       $cachedcount = 0;
-                               }
-                               $cachedcount++;
-                               Title::$titleCache[$text] =& $t;
+                               $cache->set( $text, $t );
                        }
                        return $t;
                } else {
@@ -200,6 +193,16 @@ class Title {
                }
        }
 
+       /**
+        * @return MapCacheLRU
+        */
+       private static function getTitleCache() {
+               if ( self::$titleCache == null ) {
+                       self::$titleCache = new MapCacheLRU( self::CACHE_MAX );
+               }
+               return self::$titleCache;
+       }
+
        /**
         * Returns a list of fields that are to be selected for initializing Title objects or LinkCache entries.
         * Uses $wgContentHandlerUseDB to determine whether to include page_content_model.
@@ -682,7 +685,7 @@ class Title {
         * @return Bool TRUE if this is an in-project interwiki link or a wikilink, FALSE otherwise
         */
        public function isLocal() {
-               if ( $this->mInterwiki != '' ) {
+               if ( $this->isExternal() ) {
                        $iw = Interwiki::fetch( $this->mInterwiki );
                        if ( $iw ) {
                                return $iw->isLocal();
@@ -697,11 +700,11 @@ class Title {
         * @return Bool
         */
        public function isExternal() {
-               return ( $this->mInterwiki != '' );
+               return $this->mInterwiki !== '';
        }
 
        /**
-        * Get the interwiki prefix (or null string)
+        * Get the interwiki prefix
         *
         * @return String Interwiki prefix
         */
@@ -716,7 +719,7 @@ class Title {
         * @return Bool TRUE if this is transcludable
         */
        public function isTrans() {
-               if ( $this->mInterwiki == '' ) {
+               if ( !$this->isExternal() ) {
                        return false;
                }
 
@@ -729,7 +732,7 @@ class Title {
         * @return String the DB name
         */
        public function getTransWikiID() {
-               if ( $this->mInterwiki == '' ) {
+               if ( !$this->isExternal() ) {
                        return false;
                }
 
@@ -827,7 +830,7 @@ class Title {
        public function getNsText() {
                global $wgContLang;
 
-               if ( $this->mInterwiki != '' ) {
+               if ( $this->isExternal() ) {
                        // This probably shouldn't even happen. ohh man, oh yuck.
                        // But for interwiki transclusion it sometimes does.
                        // Shit. Shit shit shit.
@@ -1011,7 +1014,7 @@ class Title {
         * @return Bool TRUE or FALSE
         */
        public function isMovable() {
-               if ( !MWNamespace::isMovable( $this->getNamespace() ) || $this->getInterwiki() != '' ) {
+               if ( !MWNamespace::isMovable( $this->getNamespace() ) || $this->isExternal() ) {
                        // Interwiki title or immovable namespace. Hooks don't get to override here
                        return false;
                }
@@ -1233,7 +1236,7 @@ class Title {
         */
        private function prefix( $name ) {
                $p = '';
-               if ( $this->mInterwiki != '' ) {
+               if ( $this->isExternal() ) {
                        $p = $this->mInterwiki . ':';
                }
 
@@ -1262,8 +1265,7 @@ class Title {
         * @return String the prefixed title, with spaces
         */
        public function getPrefixedText() {
-               // @todo FIXME: Bad usage of empty() ?
-               if ( empty( $this->mPrefixedText ) ) {
+               if ( $this->mPrefixedText === null ) {
                        $s = $this->prefix( $this->mTextform );
                        $s = str_replace( '_', ' ', $s );
                        $this->mPrefixedText = $s;
@@ -1732,7 +1734,7 @@ class Title {
         *  interwiki link
         */
        public function getEditURL() {
-               if ( $this->mInterwiki != '' ) {
+               if ( $this->isExternal() ) {
                        return '';
                }
                $s = $this->getLocalURL( 'action=edit' );
@@ -2889,15 +2891,15 @@ class Title {
                # alone to cache the result.  There's no point in having it hanging
                # around uninitialized in every Title object; therefore we only add it
                # if needed and don't declare it statically.
-               if ( isset( $this->mHasSubpages ) ) {
-                       return $this->mHasSubpages;
+               if ( !isset( $this->mHasSubpages ) ) {
+                       $this->mHasSubpages = false;
+                       $subpages = $this->getSubpages( 1 );
+                       if ( $subpages instanceof TitleArray ) {
+                               $this->mHasSubpages = (bool)$subpages->count();
+                       }
                }
 
-               $subpages = $this->getSubpages( 1 );
-               if ( $subpages instanceof TitleArray ) {
-                       return $this->mHasSubpages = (bool)$subpages->count();
-               }
-               return $this->mHasSubpages = false;
+               return $this->mHasSubpages;
        }
 
        /**
@@ -2919,7 +2921,7 @@ class Title {
                if ( $limit > -1 ) {
                        $options['LIMIT'] = $limit;
                }
-               return $this->mSubpages = TitleArray::newFromResult(
+               $this->mSubpages = TitleArray::newFromResult(
                        $dbr->select( 'page',
                                array( 'page_id', 'page_namespace', 'page_title', 'page_is_redirect' ),
                                $conds,
@@ -2927,6 +2929,7 @@ class Title {
                                $options
                        )
                );
+               return $this->mSubpages;
        }
 
        /**
@@ -2987,7 +2990,8 @@ class Title {
         */
        public function getArticleID( $flags = 0 ) {
                if ( $this->getNamespace() < 0 ) {
-                       return $this->mArticleID = 0;
+                       $this->mArticleID = 0;
+                       return $this->mArticleID;
                }
                $linkCache = LinkCache::singleton();
                if ( $flags & self::GAID_FOR_UPDATE ) {
@@ -3016,7 +3020,8 @@ class Title {
                }
                # Calling getArticleID() loads the field from cache as needed
                if ( !$this->getArticleID( $flags ) ) {
-                       return $this->mRedirect = false;
+                       $this->mRedirect = false;
+                       return $this->mRedirect;
                }
 
                $linkCache = LinkCache::singleton();
@@ -3028,7 +3033,8 @@ class Title {
                        # LinkCache as appropriate, or use $flags = Title::GAID_FOR_UPDATE. If that flag is
                        # set, then LinkCache will definitely be up to date here, since getArticleID() forces
                        # LinkCache to refresh its data from the master.
-                       return $this->mRedirect = false;
+                       $this->mRedirect = false;
+                       return $this->mRedirect;
                }
 
                $this->mRedirect = (bool)$cached;
@@ -3049,13 +3055,15 @@ class Title {
                }
                # Calling getArticleID() loads the field from cache as needed
                if ( !$this->getArticleID( $flags ) ) {
-                       return $this->mLength = 0;
+                       $this->mLength = 0;
+                       return $this->mLength;
                }
                $linkCache = LinkCache::singleton();
                $cached = $linkCache->getGoodLinkFieldObj( $this, 'length' );
                if ( $cached === null ) {
                        # Trust LinkCache's state over our own, as for isRedirect()
-                       return $this->mLength = 0;
+                       $this->mLength = 0;
+                       return $this->mLength;
                }
 
                $this->mLength = intval( $cached );
@@ -3075,14 +3083,16 @@ class Title {
                }
                # Calling getArticleID() loads the field from cache as needed
                if ( !$this->getArticleID( $flags ) ) {
-                       return $this->mLatestID = 0;
+                       $this->mLatestID = 0;
+                       return $this->mLatestID;
                }
                $linkCache = LinkCache::singleton();
                $linkCache->addLinkObj( $this );
                $cached = $linkCache->getGoodLinkFieldObj( $this, 'revision' );
                if ( $cached === null ) {
                        # Trust LinkCache's state over our own, as for isRedirect()
-                       return $this->mLatestID = 0;
+                       $this->mLatestID = 0;
+                       return $this->mLatestID;
                }
 
                $this->mLatestID = intval( $cached );
@@ -3247,7 +3257,7 @@ class Title {
                } while ( true );
 
                # We already know that some pages won't be in the database!
-               if ( $this->mInterwiki != '' || NS_SPECIAL == $this->mNamespace ) {
+               if ( $this->isExternal() || NS_SPECIAL == $this->mNamespace ) {
                        $this->mArticleID = 0;
                }
                $fragment = strstr( $dbkey, '#' );
@@ -3303,14 +3313,13 @@ class Title {
                # and [[Foo]] point to the same place.  Don't force it for interwikis, since the
                # other site might be case-sensitive.
                $this->mUserCaseDBKey = $dbkey;
-               if ( $this->mInterwiki == '' ) {
+               if ( !$this->isExternal() ) {
                        $dbkey = self::capitalize( $dbkey, $this->mNamespace );
                }
 
                # Can't make a link to a namespace alone... "empty" local links can only be
                # self-links with a fragment identifier.
-               # TODO: Why do we exclude NS_MAIN (bug 54044)
-               if ( $dbkey == '' && $this->mInterwiki == '' && $this->mNamespace != NS_MAIN ) {
+               if ( $dbkey == '' && !$this->isExternal() && $this->mNamespace != NS_MAIN ) {
                        return false;
                }
 
@@ -3580,7 +3589,7 @@ class Title {
                if ( !$this->isMovable() ) {
                        $errors[] = array( 'immobile-source-namespace', $this->getNsText() );
                }
-               if ( $nt->getInterwiki() != '' ) {
+               if ( $nt->isExternal() ) {
                        $errors[] = array( 'immobile-target-namespace-iw' );
                }
                if ( !$nt->isMovable() ) {
@@ -4492,7 +4501,7 @@ class Title {
                        return $isKnown;
                }
 
-               if ( $this->mInterwiki != '' ) {
+               if ( $this->isExternal() ) {
                        return true;  // any interwiki link might be viewable, for all we know
                }
 
@@ -4647,7 +4656,8 @@ class Title {
                        return $this->mNotificationTimestamp[$uid];
                }
                if ( !$uid || !$wgShowUpdatedMarker || !$user->isAllowed( 'viewmywatchlist' ) ) {
-                       return $this->mNotificationTimestamp[$uid] = false;
+                       $this->mNotificationTimestamp[$uid] = false;
+                       return $this->mNotificationTimestamp[$uid];
                }
                // Don't cache too much!
                if ( count( $this->mNotificationTimestamp ) >= self::CACHE_MAX ) {
index a2e7023..ca3f79b 100644 (file)
@@ -465,7 +465,7 @@ class User {
         * user_name and user_real_name are not provided because the whole row
         * will be loaded once more from the database when accessing them.
         *
-        * @param array $row A row from the user table
+        * @param stdClass $row A row from the user table
         * @param array $data Further data to load into the object (see User::loadFromRow for valid keys)
         * @return User
         */
@@ -1041,7 +1041,7 @@ class User {
        /**
         * Initialize this object from a row from the user table.
         *
-        * @param array $row Row from the user table to load.
+        * @param stdClass $row Row from the user table to load.
         * @param array $data Further user data to load into the object
         *
         *      user_groups             Array with groups out of the user_groups table
@@ -3777,8 +3777,9 @@ class User {
         */
        public function sendMail( $subject, $body, $from = null, $replyto = null ) {
                if ( is_null( $from ) ) {
-                       global $wgPasswordSender, $wgPasswordSenderName;
-                       $sender = new MailAddress( $wgPasswordSender, $wgPasswordSenderName );
+                       global $wgPasswordSender;
+                       $sender = new MailAddress( $wgPasswordSender,
+                               wfMessage( 'emailsender' )->inContentLanguage()->text() );
                } else {
                        $sender = new MailAddress( $from );
                }
index 39c3e18..e1d00d3 100644 (file)
@@ -120,6 +120,8 @@ class UserMailer {
        static function arrayToHeaderString( $headers, $endl = "\n" ) {
                $strings = array();
                foreach ( $headers as $name => $value ) {
+                       // Prevent header injection by stripping newlines from value
+                       $value = self::sanitizeHeaderValue( $value );
                        $strings[] = "$name: $value";
                }
                return implode( $endl, $strings );
@@ -393,13 +395,25 @@ class UserMailer {
                self::$mErrorString = preg_replace( '/^mail\(\)(\s*\[.*?\])?: /', '', $string );
        }
 
+       /**
+        * Strips bad characters from a header value to prevent PHP mail header injection attacks
+        * @param string $val String to be santizied
+        * @return string
+        */
+       public static function sanitizeHeaderValue( $val ) {
+               return strtr( $val, array( "\r" => '', "\n" => '' ) );
+       }
+
        /**
         * Converts a string into a valid RFC 822 "phrase", such as is used for the sender name
         * @param $phrase string
         * @return string
         */
        public static function rfc822Phrase( $phrase ) {
-               $phrase = strtr( $phrase, array( "\r" => '', "\n" => '', '"' => '' ) );
+               // Remove line breaks
+               $phrase = self::sanitizeHeaderValue( $phrase );
+               // Remove quotes
+               $phrase = str_replace( '"', '', $phrase );
                return '"' . $phrase . '"';
        }
 
@@ -694,7 +708,7 @@ class EmailNotification {
         * Generate the generic "this page has been changed" e-mail text.
         */
        private function composeCommonMailtext() {
-               global $wgPasswordSender, $wgPasswordSenderName, $wgNoReplyAddress;
+               global $wgPasswordSender, $wgNoReplyAddress;
                global $wgEnotifFromEditor, $wgEnotifRevealEditorAddress;
                global $wgEnotifImpersonal, $wgEnotifUseRealName;
 
@@ -779,7 +793,8 @@ class EmailNotification {
                # Reveal the page editor's address as REPLY-TO address only if
                # the user has not opted-out and the option is enabled at the
                # global configuration level.
-               $adminAddress = new MailAddress( $wgPasswordSender, $wgPasswordSenderName );
+               $adminAddress = new MailAddress( $wgPasswordSender,
+                       wfMessage( 'emailsender' )->inContentLanguage()->text() );
                if ( $wgEnotifRevealEditorAddress
                        && ( $this->editor->getEmail() != '' )
                        && $this->editor->getOption( 'enotifrevealaddr' )
index dfa8cf6..2a7c032 100644 (file)
@@ -210,7 +210,6 @@ class WebRequest {
                } else {
                        return 'http';
                }
-               return $arr;
        }
 
        /**
index 5ebf5a0..5fab9dc 100644 (file)
@@ -117,11 +117,11 @@ class MediaWiki {
                }
 
                // Use the main page as default title if nothing else has been provided
-               if ( $ret === null && strval( $title ) === '' && $action !== 'delete' ) {
+               if ( $ret === null && strval( $title ) === '' && !$request->getCheck( 'curid' ) && $action !== 'delete' ) {
                        $ret = Title::newMainPage();
                }
 
-               if ( $ret === null || ( $ret->getDBkey() == '' && $ret->getInterwiki() == '' ) ) {
+               if ( $ret === null || ( $ret->getDBkey() == '' && !$ret->isExternal() ) ) {
                        $ret = SpecialPage::getTitleFor( 'Badtitle' );
                }
 
@@ -197,7 +197,7 @@ class MediaWiki {
                wfRunHooks( 'BeforeInitialize', array( &$title, &$unused, &$output, &$user, $request, $this ) );
 
                // Invalid titles. Bug 21776: The interwikis must redirect even if the page name is empty.
-               if ( is_null( $title ) || ( $title->getDBkey() == '' && $title->getInterwiki() == '' )
+               if ( is_null( $title ) || ( $title->getDBkey() == '' && !$title->isExternal() )
                        || $title->isSpecial( 'Badtitle' )
                ) {
                        $this->context->setTitle( SpecialPage::getTitleFor( 'Badtitle' ) );
@@ -231,7 +231,7 @@ class MediaWiki {
                $pageView = false; // was an article or special page viewed?
 
                // Interwiki redirects
-               if ( $title->getInterwiki() != '' ) {
+               if ( $title->isExternal() ) {
                        $rdfrom = $request->getVal( 'rdfrom' );
                        if ( $rdfrom ) {
                                $url = $title->getFullURL( array( 'rdfrom' => $rdfrom ) );
@@ -458,6 +458,9 @@ class MediaWiki {
                try {
                        $this->checkMaxLag();
                        $this->main();
+                       if ( function_exists( 'fastcgi_finish_request' ) ) {
+                               fastcgi_finish_request();
+                       }
                        $this->restInPeace();
                } catch ( Exception $e ) {
                        MWExceptionHandler::handle( $e );
index 2b192b0..817f0fa 100644 (file)
@@ -85,7 +85,8 @@ class WikiFilePage extends WikiPage {
                if ( $from == $to ) {
                        return null;
                }
-               return $this->mRedirectTarget = Title::makeTitle( NS_FILE, $to );
+               $this->mRedirectTarget = Title::makeTitle( NS_FILE, $to );
+               return $this->mRedirectTarget;
        }
 
        /**
@@ -142,7 +143,8 @@ class WikiFilePage extends WikiPage {
                }
                $hash = $this->mFile->getSha1();
                if ( !( $hash ) ) {
-                       return $this->mDupes = array();
+                       $this->mDupes = array();
+                       return $this->mDupes;
                }
                $dupes = RepoGroup::singleton()->findBySha1( $hash );
                // Remove duplicates with self and non matching file sizes
index 0d987aa..f0a58d3 100644 (file)
@@ -83,6 +83,11 @@ class WikiPage implements Page, IDBAccessObject {
         */
        protected $mTouched = '19700101000000';
 
+       /**
+        * @var string
+        */
+       protected $mLinksUpdated = '19700101000000';
+
        /**
         * @var int|null
         */
@@ -241,6 +246,7 @@ class WikiPage implements Page, IDBAccessObject {
                $this->mRedirectTarget = null; // Title object if set
                $this->mLastRevision = null; // Latest revision
                $this->mTouched = '19700101000000';
+               $this->mLinksUpdated = '19700101000000';
                $this->mTimestamp = '';
                $this->mIsRedirect = false;
                $this->mLatest = false;
@@ -278,6 +284,7 @@ class WikiPage implements Page, IDBAccessObject {
                        'page_is_new',
                        'page_random',
                        'page_touched',
+                       'page_links_updated',
                        'page_latest',
                        'page_len',
                );
@@ -405,6 +412,7 @@ class WikiPage implements Page, IDBAccessObject {
                        $this->mId = intval( $data->page_id );
                        $this->mCounter = intval( $data->page_counter );
                        $this->mTouched = wfTimestamp( TS_MW, $data->page_touched );
+                       $this->mLinksUpdated = wfTimestampOrNull( TS_MW, $data->page_links_updated );
                        $this->mIsRedirect = intval( $data->page_is_redirect );
                        $this->mLatest = intval( $data->page_latest );
                        // Bug 37225: $latest may no longer match the cached latest Revision object.
@@ -533,6 +541,17 @@ class WikiPage implements Page, IDBAccessObject {
                return $this->mTouched;
        }
 
+       /**
+        * Get the page_links_updated field
+        * @return string|null containing GMT timestamp
+        */
+       public function getLinksTimestamp() {
+               if ( !$this->mDataLoaded ) {
+                       $this->loadPageData();
+               }
+               return $this->mLinksUpdated;
+       }
+
        /**
         * Get the page_latest field
         * @return integer rev_id of current revision
@@ -889,13 +908,15 @@ class WikiPage implements Page, IDBAccessObject {
 
                // rd_fragment and rd_interwiki were added later, populate them if empty
                if ( $row && !is_null( $row->rd_fragment ) && !is_null( $row->rd_interwiki ) ) {
-                       return $this->mRedirectTarget = Title::makeTitle(
+                       $this->mRedirectTarget = Title::makeTitle(
                                $row->rd_namespace, $row->rd_title,
                                $row->rd_fragment, $row->rd_interwiki );
+                       return $this->mRedirectTarget;
                }
 
                // This page doesn't have an entry in the redirect table
-               return $this->mRedirectTarget = $this->insertRedirect();
+               $this->mRedirectTarget = $this->insertRedirect();
+               return $this->mRedirectTarget;
        }
 
        /**
@@ -3379,35 +3400,6 @@ class WikiPage implements Page, IDBAccessObject {
                return $this->doUpdateRestrictions( $limit, $expiry, $cascade, $reason, $user )->isOK();
        }
 
-       /**
-        * @deprecated since 1.18
-        */
-       public function quickEdit( $text, $comment = '', $minor = 0 ) {
-               wfDeprecated( __METHOD__, '1.18' );
-               global $wgUser;
-               $this->doQuickEdit( $text, $wgUser, $comment, $minor );
-       }
-
-       /**
-        * @deprecated since 1.18
-        */
-       public function viewUpdates() {
-               wfDeprecated( __METHOD__, '1.18' );
-               global $wgUser;
-               $this->doViewUpdates( $wgUser );
-       }
-
-       /**
-        * @deprecated since 1.18
-        * @param $oldid int
-        * @return bool
-        */
-       public function useParserCache( $oldid ) {
-               wfDeprecated( __METHOD__, '1.18' );
-               global $wgUser;
-               return $this->isParserCacheUsed( ParserOptions::newFromUser( $wgUser ), $oldid );
-       }
-
        /**
         * Returns a list of updates to be performed when this page is deleted. The updates should remove any information
         * about this page from secondary data stores such as links tables.
index df98836..a62df6c 100644 (file)
@@ -2,7 +2,7 @@
 /**
  * Simplified / Traditional Chinese conversion tables
  *
- * Automatically generated using code and data in includes/zhtable/
+ * Automatically generated using code and data in maintenance/language/zhtable/
  * Do not modify directly!
  *
  * @file
index 34db1d2..8e800f9 100644 (file)
@@ -260,6 +260,7 @@ class HistoryAction extends FormlessAction {
                }
                $request = $this->getRequest();
 
+               /** @var RSSFeed|AtomFeed $feed */
                $feed = new $wgFeedClasses[$type](
                        $this->getTitle()->getPrefixedText() . ' - ' .
                        $this->msg( 'history-feed-title' )->inContentLanguage()->text(),
index 1803629..b6eeb7b 100644 (file)
@@ -49,7 +49,7 @@ class RevisiondeleteAction extends FormlessAction {
        public function show() {
                $special = SpecialPageFactory::getPage( 'Revisiondelete' );
                $special->setContext( $this->getContext() );
-               $special->getContext()->setTitle( $special->getTitle() );
+               $special->getContext()->setTitle( $special->getPageTitle() );
                $special->run( '' );
        }
 }
index d48a0ea..617f1c9 100644 (file)
@@ -62,6 +62,7 @@ class RollbackAction extends FormlessAction {
                        $this->getOutput()->addWikiMsgArray( $errMsg, $errArray );
 
                        if ( isset( $details['current'] ) ) {
+                               /** @var Revision $current */
                                $current = $details['current'];
 
                                if ( $current->getComment() != '' ) {
@@ -85,6 +86,7 @@ class RollbackAction extends FormlessAction {
                        throw new ErrorPageError( 'rollbackfailed', $error[0], array_slice( $error, 1 ) );
                }
 
+               /** @var Revision $current */
                $current = $details['current'];
                $target = $details['target'];
                $newId = $details['newid'];
index bf69410..f90ba98 100644 (file)
@@ -87,7 +87,13 @@ class ApiFeedContributions extends ApiBase {
 
                $feedItems = array();
                if ( $pager->getNumRows() > 0 ) {
+                       $count = 0;
+                       $limit = $pager->getLimit();
                        foreach ( $pager->mResult as $row ) {
+                               // ContribsPager selects one more row for navigation, skip that row
+                               if ( ++$count > $limit ) {
+                                       break;
+                               }
                                $feedItems[] = $this->feedItem( $row );
                        }
                }
index dc5e24e..a3fa5f9 100644 (file)
  * @ingroup API
  */
 class ApiFileRevert extends ApiBase {
-
-       /**
-        * @var File
-        */
+       /** @var LocalFile */
        protected $file;
+
+       /** @var string */
        protected $archiveName;
 
+       /** @var array */
        protected $params;
 
        public function execute() {
index e95e680..0d733a2 100644 (file)
@@ -308,7 +308,7 @@ class ApiPageSet extends ApiBase {
 
        /**
         * All Title objects provided.
-        * @return array of Title objects
+        * @return Title[]
         */
        public function getTitles() {
                return $this->mTitles;
@@ -324,7 +324,7 @@ class ApiPageSet extends ApiBase {
 
        /**
         * Title objects that were found in the database.
-        * @return array page_id (int) => Title (obj)
+        * @return Title[] Array page_id (int) => Title (obj)
         */
        public function getGoodTitles() {
                return $this->mGoodTitles;
@@ -341,7 +341,7 @@ class ApiPageSet extends ApiBase {
        /**
         * Title objects that were NOT found in the database.
         * The array's index will be negative for each item
-        * @return array of Title objects
+        * @return Title[]
         */
        public function getMissingTitles() {
                return $this->mMissingTitles;
@@ -350,7 +350,7 @@ class ApiPageSet extends ApiBase {
        /**
         * Titles that were deemed invalid by Title::newFromText()
         * The array's index will be unique and negative for each item
-        * @return array of strings (not Title objects)
+        * @return string[] Array of strings (not Title objects)
         */
        public function getInvalidTitles() {
                return $this->mInvalidTitles;
index 88904c0..a323aad 100644 (file)
@@ -249,6 +249,10 @@ class ApiParse extends ApiBase {
                        $result_array['redirects'] = $redirValues;
                }
 
+               if ( $params['disabletoc'] ) {
+                       $p_result->setTOCEnabled( false );
+               }
+
                if ( isset( $prop['text'] ) ) {
                        $result_array['text'] = array();
                        ApiResult::setContent( $result_array['text'], $p_result->getText() );
@@ -691,6 +695,7 @@ class ApiParse extends ApiBase {
                        'generatexml' => false,
                        'preview' => false,
                        'sectionpreview' => false,
+                       'disabletoc' => false,
                        'contentformat' => array(
                                ApiBase::PARAM_TYPE => ContentHandler::getAllContentFormats(),
                        ),
@@ -753,6 +758,7 @@ class ApiParse extends ApiBase {
                        'generatexml' => "Generate XML parse tree (requires contentmodel=$wikitext)",
                        'preview' => 'Parse in preview mode',
                        'sectionpreview' => 'Parse in section preview mode (enables preview mode too)',
+                       'disabletoc' => 'Disable table of contents in output',
                        'contentformat' => array(
                                'Content serialization format used for the input text',
                                "Only valid when used with {$p}text",
index d0ab59e..6bf8075 100644 (file)
@@ -67,8 +67,8 @@ class ApiQueryAllCategories extends ApiQueryGeneratorBase {
                }
 
                $dir = ( $params['dir'] == 'descending' ? 'older' : 'newer' );
-               $from = ( is_null( $params['from'] ) ? null : $this->titlePartToKey( $params['from'] ) );
-               $to = ( is_null( $params['to'] ) ? null : $this->titlePartToKey( $params['to'] ) );
+               $from = ( $params['from'] === null ? null : $this->titlePartToKey( $params['from'], NS_CATEGORY ) );
+               $to = ( $params['to'] === null ? null : $this->titlePartToKey( $params['to'], NS_CATEGORY ) );
                $this->addWhereRange( 'cat_title', $dir, $from, $to );
 
                $min = $params['min'];
@@ -80,8 +80,9 @@ class ApiQueryAllCategories extends ApiQueryGeneratorBase {
                }
 
                if ( isset( $params['prefix'] ) ) {
-                       $this->addWhere( 'cat_title' .
-                               $db->buildLike( $this->titlePartToKey( $params['prefix'] ), $db->anyString() ) );
+                       $this->addWhere( 'cat_title' . $db->buildLike(
+                               $this->titlePartToKey( $params['prefix'], NS_CATEGORY ),
+                               $db->anyString() ) );
                }
 
                $this->addOption( 'LIMIT', $params['limit'] + 1 );
index 9f97cac..4095bd8 100644 (file)
@@ -132,13 +132,14 @@ class ApiQueryAllImages extends ApiQueryGeneratorBase {
                        }
 
                        // Image filters
-                       $from = ( is_null( $params['from'] ) ? null : $this->titlePartToKey( $params['from'] ) );
-                       $to = ( is_null( $params['to'] ) ? null : $this->titlePartToKey( $params['to'] ) );
+                       $from = ( $params['from'] === null ? null : $this->titlePartToKey( $params['from'], NS_FILE ) );
+                       $to = ( $params['to'] === null ? null : $this->titlePartToKey( $params['to'], NS_FILE ) );
                        $this->addWhereRange( 'img_name', ( $ascendingOrder ? 'newer' : 'older' ), $from, $to );
 
                        if ( isset( $params['prefix'] ) ) {
-                               $this->addWhere( 'img_name' .
-                                       $db->buildLike( $this->titlePartToKey( $params['prefix'] ), $db->anyString() ) );
+                               $this->addWhere( 'img_name' . $db->buildLike(
+                                       $this->titlePartToKey( $params['prefix'], NS_FILE ),
+                                       $db->anyString() ) );
                        }
                } else {
                        // Check mutually exclusive params
index ff53d0f..5be304d 100644 (file)
@@ -148,15 +148,16 @@ class ApiQueryAllLinks extends ApiQueryGeneratorBase {
                }
 
                // 'continue' always overrides 'from'
-               $from = $continue || is_null( $params['from'] )
-                       ? null
-                       : $this->titlePartToKey( $params['from'] );
-               $to = ( is_null( $params['to'] ) ? null : $this->titlePartToKey( $params['to'] ) );
+               $from = ( $continue || $params['from'] === null ? null :
+                       $this->titlePartToKey( $params['from'], $params['namespace'] ) );
+               $to = ( $params['to'] === null ? null :
+                       $this->titlePartToKey( $params['to'], $params['namespace'] ) );
                $this->addWhereRange( $pfx . $fieldTitle, 'newer', $from, $to );
 
+
                if ( isset( $params['prefix'] ) ) {
-                       $this->addWhere( $pfx . $fieldTitle .
-                               $db->buildLike( $this->titlePartToKey( $params['prefix'] ), $db->anyString() ) );
+                       $this->addWhere( $pfx . $fieldTitle . $db->buildLike( $this->titlePartToKey(
+                               $params['prefix'], $params['namespace'] ), $db->anyString() ) );
                }
 
                $this->addFields( array( 'pl_title' => $pfx . $fieldTitle ) );
index 363d657..430dd51 100644 (file)
@@ -87,13 +87,14 @@ class ApiQueryAllPages extends ApiQueryGeneratorBase {
 
                $this->addWhereFld( 'page_namespace', $params['namespace'] );
                $dir = ( $params['dir'] == 'descending' ? 'older' : 'newer' );
-               $from = ( is_null( $params['from'] ) ? null : $this->titlePartToKey( $params['from'] ) );
-               $to = ( is_null( $params['to'] ) ? null : $this->titlePartToKey( $params['to'] ) );
+               $from = ( $params['from'] === null ? null : $this->titlePartToKey( $params['from'], $params['namespace'] ) );
+               $to = ( $params['to'] === null ? null : $this->titlePartToKey( $params['to'], $params['namespace'] ) );
                $this->addWhereRange( 'page_title', $dir, $from, $to );
 
                if ( isset( $params['prefix'] ) ) {
-                       $this->addWhere( 'page_title' .
-                               $db->buildLike( $this->titlePartToKey( $params['prefix'] ), $db->anyString() ) );
+                       $this->addWhere( 'page_title' . $db->buildLike(
+                               $this->titlePartToKey( $params['prefix'], $params['namespace'] ),
+                               $db->anyString() ) );
                }
 
                if ( is_null( $resultPageSet ) ) {
index fcd3180..32a03f1 100644 (file)
@@ -480,12 +480,28 @@ abstract class ApiQueryBase extends ApiBase {
        }
 
        /**
-        * An alternative to titleToKey() that doesn't trim trailing spaces
+        * An alternative to titleToKey() that doesn't trim trailing spaces, and
+        * does not mangle the input if starts with something that looks like a
+        * namespace. It is advisable to pass the namespace parameter in order to
+        * handle per-namespace capitalization settings.
         * @param string $titlePart Title part with spaces
+        * @param $defaultNamespace int Namespace to assume
         * @return string Title part with underscores
         */
-       public function titlePartToKey( $titlePart ) {
-               return substr( $this->titleToKey( $titlePart . 'x' ), 0, -1 );
+       public function titlePartToKey( $titlePart, $defaultNamespace = NS_MAIN ) {
+               $t = Title::makeTitleSafe( $defaultNamespace, $titlePart . 'x' );
+               if ( !$t ) {
+                       $this->dieUsageMsg( array( 'invalidtitle', $titlePart ) );
+               }
+               if ( $defaultNamespace != $t->getNamespace() || $t->isExternal() ) {
+                       // This can happen in two cases. First, if you call titlePartToKey with a title part
+                       // that looks like a namespace, but with $defaultNamespace = NS_MAIN. It would be very
+                       // difficult to handle such a case. Such cases cannot exist and are therefore treated
+                       // as invalid user input. The second case is when somebody specifies a title interwiki
+                       // prefix.
+                       $this->dieUsageMsg( array( 'invalidtitle', $titlePart ) );
+               }
+               return substr( $t->getDbKey(), 0, -1 );
        }
 
        /**
index 271558b..f7bd59a 100644 (file)
@@ -326,8 +326,8 @@ class ApiQueryCategoryMembers extends ApiQueryGeneratorBase {
                global $wgMiserMode;
                $p = $this->getModulePrefix();
                $desc = array(
-                       'title' => "Which category to enumerate (required). Must include ' .
-                               'Category: prefix. Cannot be used together with {$p}pageid",
+                       'title' => "Which category to enumerate (required). Must include " .
+                               "'Category:' prefix. Cannot be used together with {$p}pageid",
                        'pageid' => "Page ID of the category to enumerate. Cannot be used together with {$p}title",
                        'prop' => array(
                                'What pieces of information to include',
@@ -345,15 +345,15 @@ class ApiQueryCategoryMembers extends ApiQueryGeneratorBase {
                        'dir' => 'In which direction to sort',
                        'start' => "Timestamp to start listing from. Can only be used with {$p}sort=timestamp",
                        'end' => "Timestamp to end listing at. Can only be used with {$p}sort=timestamp",
-                       'startsortkey' => "Sortkey to start listing from. Must be given in ' .
-                               'binary format. Can only be used with {$p}sort=sortkey",
-                       'endsortkey' => "Sortkey to end listing at. Must be given in binary ' .
-                               'format. Can only be used with {$p}sort=sortkey",
-                       'startsortkeyprefix' => "Sortkey prefix to start listing from. Can ' .
-                               'only be used with {$p}sort=sortkey. Overrides {$p}startsortkey",
-                       'endsortkeyprefix' => "Sortkey prefix to end listing BEFORE (not at, ' .
-                               'if this value occurs it will not be included!). Can only be used with ' .
-                               '{$p}sort=sortkey. Overrides {$p}endsortkey",
+                       'startsortkey' => "Sortkey to start listing from. Must be given in " .
+                               "binary format. Can only be used with {$p}sort=sortkey",
+                       'endsortkey' => "Sortkey to end listing at. Must be given in binary " .
+                               "format. Can only be used with {$p}sort=sortkey",
+                       'startsortkeyprefix' => "Sortkey prefix to start listing from. Can " .
+                               "only be used with {$p}sort=sortkey. Overrides {$p}startsortkey",
+                       'endsortkeyprefix' => "Sortkey prefix to end listing BEFORE (not at, " .
+                               "if this value occurs it will not be included!). Can only be used with " .
+                               "{$p}sort=sortkey. Overrides {$p}endsortkey",
                        'continue' => 'For large categories, give the value returned from previous query',
                        'limit' => 'The maximum number of pages to return.',
                );
index f63e033..4e4b2cc 100644 (file)
@@ -170,13 +170,14 @@ class ApiQueryDeletedrevs extends ApiQueryBase {
                } elseif ( $mode == 'all' ) {
                        $this->addWhereFld( 'ar_namespace', $params['namespace'] );
 
-                       $from = is_null( $params['from'] ) ? null : $this->titleToKey( $params['from'] );
-                       $to = is_null( $params['to'] ) ? null : $this->titleToKey( $params['to'] );
+                       $from = $params['from'] === null ? null : $this->titlePartToKey( $params['from'], $params['namespace'] );
+                       $to = $params['to'] === null ? null : $this->titlePartToKey( $params['to'], $params['namespace'] );
                        $this->addWhereRange( 'ar_title', $dir, $from, $to );
 
                        if ( isset( $params['prefix'] ) ) {
-                               $this->addWhere( 'ar_title' .
-                                       $db->buildLike( $this->titlePartToKey( $params['prefix'] ), $db->anyString() ) );
+                               $this->addWhere( 'ar_title' . $db->buildLike(
+                                       $this->titlePartToKey( $params['prefix'], $params['namespace'] ),
+                                       $db->anyString() ) );
                        }
                }
 
index f8f4558..e2c9964 100644 (file)
@@ -88,15 +88,16 @@ class ApiQueryFilearchive extends ApiQueryBase {
 
                // Image filters
                $dir = ( $params['dir'] == 'descending' ? 'older' : 'newer' );
-               $from = ( is_null( $params['from'] ) ? null : $this->titlePartToKey( $params['from'] ) );
+               $from = ( $params['from'] === null ? null : $this->titlePartToKey( $params['from'], NS_FILE ) );
                if ( !is_null( $params['continue'] ) ) {
                        $from = $params['continue'];
                }
-               $to = ( is_null( $params['to'] ) ? null : $this->titlePartToKey( $params['to'] ) );
+               $to = ( $params['to'] === null ? null : $this->titlePartToKey( $params['to'], NS_FILE ) );
                $this->addWhereRange( 'fa_name', $dir, $from, $to );
                if ( isset( $params['prefix'] ) ) {
-                       $this->addWhere( 'fa_name' .
-                               $db->buildLike( $this->titlePartToKey( $params['prefix'] ), $db->anyString() ) );
+                       $this->addWhere( 'fa_name' . $db->buildLike(
+                               $this->titlePartToKey( $params['prefix'], NS_FILE ),
+                               $db->anyString() ) );
                }
 
                $sha1Set = isset( $params['sha1'] );
index 14364cb..356fa3e 100644 (file)
@@ -72,7 +72,6 @@ class ApiQueryLogEvents extends ApiQueryBase {
                        'page' => array( 'LEFT JOIN',
                                array( 'log_namespace=page_namespace',
                                        'log_title=page_title' ) ) ) );
-               $index = array( 'logging' => 'times' ); // default, may change
 
                $this->addFields( array(
                        'log_type',
@@ -110,7 +109,6 @@ class ApiQueryLogEvents extends ApiQueryBase {
                        $this->addWhereFld( 'log_action', $action );
                } elseif ( !is_null( $params['type'] ) ) {
                        $this->addWhereFld( 'log_type', $params['type'] );
-                       $index['logging'] = 'type_time';
                }
 
                $this->addTimestampWhereRange(
@@ -126,11 +124,11 @@ class ApiQueryLogEvents extends ApiQueryBase {
                $user = $params['user'];
                if ( !is_null( $user ) ) {
                        $userid = User::idFromName( $user );
-                       if ( !$userid ) {
-                               $this->dieUsage( "User name $user not found", 'param_user' );
+                       if ( $userid ) {
+                               $this->addWhereFld( 'log_user', $userid );
+                       } else {
+                               $this->addWhereFld( 'log_user_text', IP::sanitizeIP( $user ) );
                        }
-                       $this->addWhereFld( 'log_user', $userid );
-                       $index['logging'] = 'user_time';
                }
 
                $title = $params['title'];
@@ -141,9 +139,6 @@ class ApiQueryLogEvents extends ApiQueryBase {
                        }
                        $this->addWhereFld( 'log_namespace', $titleObj->getNamespace() );
                        $this->addWhereFld( 'log_title', $titleObj->getDBkey() );
-
-                       // Use the title index in preference to the user index if there is a conflict
-                       $index['logging'] = is_null( $user ) ? 'page_time' : array( 'page_time', 'user_time' );
                }
 
                $prefix = $params['prefix'];
@@ -162,8 +157,6 @@ class ApiQueryLogEvents extends ApiQueryBase {
                        $this->addWhere( 'log_title ' . $db->buildLike( $title->getDBkey(), $db->anyString() ) );
                }
 
-               $this->addOption( 'USE INDEX', $index );
-
                // Paranoia: avoid brute force searches (bug 17342)
                if ( !is_null( $title ) ) {
                        $this->addWhere( $db->bitAnd( 'log_deleted', LogPage::DELETED_ACTION ) . ' = 0' );
index e990386..0d54ffe 100644 (file)
@@ -60,7 +60,6 @@ class ApiQueryRandom extends ApiQueryGeneratorBase {
                $this->addWhereFld( 'page_namespace', $namespace );
                $this->addWhereRange( 'page_random', 'newer', $randstr, null );
                $this->addWhereFld( 'page_is_redirect', $redirect );
-               $this->addOption( 'USE INDEX', 'page_random' );
                if ( is_null( $resultPageSet ) ) {
                        $this->addFields( array( 'page_id', 'page_title', 'page_namespace' ) );
                } else {
index 5e9cd08..0a74d98 100644 (file)
@@ -199,7 +199,10 @@ class ApiQuerySiteinfo extends ApiQueryBase {
                if ( $wgContLang->hasVariants() ) {
                        $variants = array();
                        foreach ( $wgContLang->getVariants() as $code ) {
-                               $variants[] = array( 'code' => $code );
+                               $variants[] = array(
+                                       'code' => $code,
+                                       'name' => $wgContLang->getVariantname( $code ),
+                               );
                        }
                        $data['variants'] = $variants;
                        $this->getResult()->setIndexedTagName( $data['variants'], 'lang' );
index f9af75a..f8e521f 100644 (file)
@@ -360,7 +360,11 @@ class ApiQueryWatchlist extends ApiQueryGeneratorBase {
                return $vals;
        }
 
-       /* Copied from ApiQueryRecentChanges. */
+       /** Copied from ApiQueryRecentChanges.
+        *
+        * @param string $type
+        * @return string
+        */
        private function parseRCType( $type ) {
                if ( is_array( $type ) ) {
                        $retval = array();
index dabb8da..46e2f6e 100644 (file)
@@ -98,10 +98,10 @@ class ApiUnblock extends ApiBase {
                $p = $this->getModulePrefix();
 
                return array(
-                       'id' => "ID of the block you want to unblock (obtained through list=blocks). ' .
-                               'Cannot be used together with {$p}user",
-                       'user' => "Username, IP address or IP range you want to unblock. ' .
-                               'Cannot be used together with {$p}id",
+                       'id' => "ID of the block you want to unblock (obtained through list=blocks). " .
+                               "Cannot be used together with {$p}user",
+                       'user' => "Username, IP address or IP range you want to unblock. " .
+                               "Cannot be used together with {$p}id",
                        'token' => "An unblock token previously obtained through prop=info",
                        'reason' => 'Reason for unblock',
                );
index 1a642b9..7d0d78e 100644 (file)
  * @ingroup API
  */
 class ApiUpload extends ApiBase {
-
-       /**
-        * @var UploadBase
-        */
+       /** @var UploadBase */
        protected $mUpload = null;
 
        protected $mParams;
index be98a21..2bd7321 100644 (file)
@@ -61,10 +61,13 @@ class ApiUserrights extends ApiBase {
                }
 
                $params = $this->extractRequestParams();
+               $this->requireOnlyOneParameter( $params, 'user', 'userid' );
+
+               $user = isset( $params['user'] ) ? $params['user'] : '#' . $params['userid'];
 
                $form = new UserrightsPage;
                $form->setContext( $this->getContext() );
-               $status = $form->fetchUser( $params['user'] );
+               $status = $form->fetchUser( $user );
                if ( !$status->isOK() ) {
                        $this->dieStatus( $status );
                }
@@ -86,7 +89,9 @@ class ApiUserrights extends ApiBase {
                return array(
                        'user' => array(
                                ApiBase::PARAM_TYPE => 'string',
-                               ApiBase::PARAM_REQUIRED => true
+                       ),
+                       'userid' => array(
+                               ApiBase::PARAM_TYPE => 'integer',
                        ),
                        'add' => array(
                                ApiBase::PARAM_TYPE => User::getAllGroups(),
@@ -109,6 +114,7 @@ class ApiUserrights extends ApiBase {
        public function getParamDescription() {
                return array(
                        'user' => 'User name',
+                       'userid' => 'User id',
                        'add' => 'Add the user to these groups',
                        'remove' => 'Remove the user from these groups',
                        'token' => 'A userrights token previously retrieved through list=users',
@@ -130,7 +136,8 @@ class ApiUserrights extends ApiBase {
 
        public function getExamples() {
                return array(
-                       'api.php?action=userrights&user=FooBot&add=bot&remove=sysop|bureaucrat&token=123ABC'
+                       'api.php?action=userrights&user=FooBot&add=bot&remove=sysop|bureaucrat&token=123ABC',
+                       'api.php?action=userrights&userid=123&add=bot&remove=sysop|bureaucrat&token=123ABC'
                );
        }
 
index 7ad286f..759afd7 100644 (file)
@@ -43,7 +43,7 @@ class ApiWatch extends ApiBase {
                $params = $this->extractRequestParams();
                $title = Title::newFromText( $params['title'] );
 
-               if ( !$title || $title->isExternal() || !$title->canExist() ) {
+               if ( !$title || !$title->isWatchable() ) {
                        $this->dieUsageMsg( array( 'invalidtitle', $params['title'] ) );
                }
 
index b7d0a7c..28889b5 100644 (file)
  */
 class DependencyWrapper {
        private $value;
+       /** @var CacheDependency[] */
        private $deps;
 
        /**
         * Create an instance.
         * @param $value Mixed: the user-supplied value
-        * @param $deps Mixed: a dependency or dependency array. All dependencies
-        *        must be objects implementing CacheDependency.
+        * @param CacheDependency|CacheDependency[] $deps A dependency or dependency
+        *   array. All dependencies must be objects implementing CacheDependency.
         */
        function __construct( $value = false, $deps = array() ) {
                $this->value = $value;
index ccb94a2..cba2ba7 100644 (file)
@@ -527,6 +527,36 @@ class LocalisationCache {
                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 with a 'messages' key, or empty array if the file doesn't exist
+        */
+       protected function readJSONFile( $fileName ) {
+               wfProfileIn( __METHOD__ );
+               if ( !is_readable( $fileName ) ) {
+                       return array();
+               }
+
+               $json = file_get_contents( $fileName );
+               if ( $json === false ) {
+                       return array();
+               }
+               $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 array( 'messages' => $data );
+       }
+
        /**
         * Get the compiled plural rules for a given language from the XML files.
         * @since 1.20
@@ -609,6 +639,10 @@ class LocalisationCache {
                        $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;
                        }
@@ -736,7 +770,7 @@ class LocalisationCache {
         * @throws MWException
         */
        public function recache( $code ) {
-               global $wgExtensionMessagesFiles;
+               global $wgExtensionMessagesFiles, $wgMessagesDirs;
                wfProfileIn( __METHOD__ );
 
                if ( !$code ) {
@@ -810,11 +844,33 @@ class LocalisationCache {
                # like site-specific message overrides.
                wfProfileIn( __METHOD__ . '-extensions' );
                $allData = $initialData;
-               foreach ( $wgExtensionMessagesFiles as $fileName ) {
+               foreach ( $wgMessagesDirs as $dirs ) {
+                       foreach ( (array)$dirs as $dir ) {
+                               foreach ( $codeSequence as $csCode ) {
+                                       $fileName = "$dir/$csCode.json";
+                                       $data = $this->readJSONFile( $fileName );
+
+                                       foreach ( $data as $key => $item ) {
+                                               $this->mergeItem( $key, $allData[$key], $item );
+                                       }
+
+                                       $deps[] = new FileDependency( $fileName );
+                               }
+                       }
+               }
+
+               foreach ( $wgExtensionMessagesFiles as $extension => $fileName ) {
                        $data = $this->readPHPFile( $fileName, 'extension' );
                        $used = false;
 
                        foreach ( $data as $key => $item ) {
+                               if ( $key === 'messages' && isset( $wgMessagesDirs[$extension] ) ) {
+                                       # For backwards compatibility, ignore messages from extensions in
+                                       # $wgExtensionMessagesFiles that are also present in $wgMessagesDirs.
+                                       # This allows extensions to use both and be backwards compatible.
+                                       # Variables other than $messages still need to be supported though.
+                                       continue;
+                               }
                                if ( $this->mergeExtensionItem( $codeSequence, $key, $allData[$key], $item ) ) {
                                        $used = true;
                                }
@@ -833,6 +889,7 @@ class LocalisationCache {
 
                # Add cache dependencies for any referenced globals
                $deps['wgExtensionMessagesFiles'] = new GlobalDependency( 'wgExtensionMessagesFiles' );
+               $deps['wgMessagesDirs'] = new GlobalDependency( 'wgMessagesDirs' );
                $deps['version'] = new ConstantDependency( 'MW_LC_VERSION' );
 
                # Add dependencies to the cache entry
@@ -866,7 +923,8 @@ class LocalisationCache {
                        $allData['list'][$key] = array_keys( $allData[$key] );
                }
                # Run hooks
-               wfRunHooks( 'LocalisationCacheRecache', array( $this, $code, &$allData ) );
+               $purgeBlobs = true;
+               wfRunHooks( 'LocalisationCacheRecache', array( $this, $code, &$allData, &$purgeBlobs ) );
 
                if ( is_null( $allData['namespaceNames'] ) ) {
                        wfProfileOut( __METHOD__ );
@@ -901,7 +959,7 @@ class LocalisationCache {
                # Clear out the MessageBlobStore
                # HACK: If using a null (i.e. disabled) storage backend, we
                # can't write to the MessageBlobStore either
-               if ( !$this->store instanceof LCStoreNull ) {
+               if ( $purgeBlobs && !$this->store instanceof LCStoreNull ) {
                        MessageBlobStore::clear();
                }
 
@@ -1174,9 +1232,16 @@ class LCStoreDB implements LCStore {
  * 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 = array() ) {
index 26d3ec4..8349f88 100644 (file)
@@ -67,13 +67,22 @@ class MapCacheLRU {
                $this->cache[$key] = $value;
        }
 
+       /**
+        * Check if a key exists
+        *
+        * @param $key string
+        * @return bool
+        */
+       public function has( $key ) {
+               return isset( $this->cache[$key] );
+       }
+
        /**
         * Get the value for a key.
         * This returns null if the key is not set.
         * If the item is already set, it will be pushed to the top of the cache.
         *
         * @param $key string
-        * @param $prop string
         * @return mixed
         */
        public function get( $key ) {
index 8b52728..3dee806 100644 (file)
@@ -124,7 +124,7 @@ class MessageCache {
        }
 
        /**
-        * @param ObjectCache $memCached A cache instance. If none, fall back to CACHE_NONE.
+        * @param BagOStuff $memCached A cache instance. If none, fall back to CACHE_NONE.
         * @param bool $useDB
         * @param int $expiry Lifetime for cache. @see $mExpiry.
         */
index 470b150..107e2c4 100644 (file)
@@ -161,6 +161,7 @@ class ChangesList extends ContextSource {
                $this->lastdate = '';
                $this->rclistOpen = false;
                $this->getOutput()->addModuleStyles( 'mediawiki.special.changeslist' );
+               $this->getOutput()->addModules( 'mediawiki.special.changeslist.js' );
 
                return '<div class="mw-changeslist">';
        }
index 1c3a0fb..99cf0de 100644 (file)
@@ -41,6 +41,7 @@ class EnhancedChangesList extends ChangesList {
                $this->getOutput()->addModules( array(
                        'jquery.makeCollapsible',
                        'mediawiki.icon',
+                       'mediawiki.special.changeslist.js',
                ) );
 
                return '<div class="mw-changeslist">';
index 0ef71c4..f1f2578 100644 (file)
@@ -84,7 +84,7 @@ class RecentChange {
         */
        private $mPerformer = false;
 
-       public $numberofWatchingusers = 0; # Dummy to prevent error message in SpecialRecentchangeslinked
+       public $numberofWatchingusers = 0; # Dummy to prevent error message in SpecialRecentChangesLinked
        public $notificationtimestamp;
 
        /**
index ffb5cf2..068b150 100644 (file)
@@ -38,7 +38,7 @@ class TextContent extends AbstractContent {
 
                if ( $text === null || $text === false ) {
                        wfWarn( "TextContent constructed with \$text = " . var_export( $text, true ) . "! "
-                               . "This may indicate an error in the caller's scope." );
+                               . "This may indicate an error in the caller's scope.", 2 );
 
                        $text = '';
                }
index 1e3fbf2..2137757 100644 (file)
@@ -81,7 +81,7 @@ class DerivativeContext extends ContextSource {
        /**
         * Set the SiteConfiguration object
         *
-        * @param SiteConfiguration $c
+        * @param SiteConfiguration $s
         */
        public function setConfig( SiteConfiguration $s ) {
                $this->config = $s;
index a9f7b7f..2a0fde3 100644 (file)
@@ -2,7 +2,7 @@
 
 /**
  * Base class for objects that allow access to other wiki's databases using
- * the foreign database access mechanism implemented by LBFactory_multi.
+ * the foreign database access mechanism implemented by LBFactoryMulti.
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
index 3388297..2e19f6a 100644 (file)
@@ -2681,7 +2681,6 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
         *                to set that field to. The data will be quoted by
         *                DatabaseBase::addQuotes().
         * @param string $fname Calling function name (use __METHOD__) for logs/profiling
-        * @param array $options of options
         *
         * @return bool
         * @since 1.22
@@ -2875,10 +2874,12 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
        ) {
                $destTable = $this->tableName( $destTable );
 
-               if ( is_array( $insertOptions ) ) {
-                       $insertOptions = implode( ' ', $insertOptions );
+               if ( !is_array( $insertOptions ) ) {
+                       $insertOptions = array( $insertOptions );
                }
 
+               $insertOptions = $this->makeInsertOptions( $insertOptions );
+
                if ( !is_array( $selectOptions ) ) {
                        $selectOptions = array( $selectOptions );
                }
index 8be8530..a314605 100644 (file)
@@ -270,21 +270,21 @@ EOT;
         * @return string
         */
        private function fileCachedPage() {
-               global $wgTitle, $wgOut, $wgRequest;
+               $context = RequestContext::getMain();
 
-               if ( $wgOut->isDisabled() ) {
+               if ( $context->getOutput()->isDisabled() ) {
                        // Done already?
                        return '';
                }
 
-               if ( $wgTitle ) {
-                       // use $wgTitle if we managed to set it
-                       $t = $wgTitle->getPrefixedDBkey();
+               if ( $context->getTitle() ) {
+                       // Use the main context's title if we managed to set it
+                       $t = $context->getTitle()->getPrefixedDBkey();
                } else {
                        // Fallback to the raw title URL param. We can't use the Title
                        // class is it may hit the interwiki table and give a DB error.
                        // We may get a cache miss due to not sanitizing the title though.
-                       $t = str_replace( ' ', '_', $wgRequest->getVal( 'title' ) );
+                       $t = str_replace( ' ', '_', $context->getRequest()->getVal( 'title' ) );
                        if ( $t == '' ) { // fallback to main page
                                $t = Title::newFromText(
                                        $this->msg( 'mainpage', 'Main Page' ) )->getPrefixedDBkey();
index 5a5eab1..3a89cd5 100644 (file)
  * @ingroup Database
  */
 class DatabaseMssql extends DatabaseBase {
-       var $mInsertId = null;
-       var $mLastResult = null;
-       var $mAffectedRows = null;
+       /** @var resource */
+       protected $mLastResult = null;
 
-       var $mPort;
+       /** @var int The number of rows affected as an integer */
+       protected $mAffectedRows = null;
+
+       /**
+        * @var int Post number for database
+        * @todo Unused and can be removed?
+        */
+       protected $mPort;
+
+       /** @var int */
+       private $mInsertId = null;
 
        function cascadingDeletes() {
                return true;
@@ -88,7 +97,7 @@ class DatabaseMssql extends DatabaseBase {
 
                # e.g. the class is being loaded
                if ( !strlen( $user ) ) {
-                       return;
+                       return null;
                }
 
                $this->close();
@@ -271,7 +280,7 @@ class DatabaseMssql extends DatabaseBase {
 
        /**
         * This must be called after nextSequenceVal
-        * @return null
+        * @return int|null
         */
        function insertId() {
                return $this->mInsertId;
index 3125325..12fee94 100644 (file)
@@ -49,7 +49,7 @@ abstract class DatabaseMysqlBase extends DatabaseBase {
         * @throws DBConnectionError
         */
        function open( $server, $user, $password, $dbName ) {
-               global $wgAllDBsAreLocalhost, $wgDBmysql5, $wgSQLMode;
+               global $wgAllDBsAreLocalhost, $wgSQLMode;
                wfProfileIn( __METHOD__ );
 
                # Debugging hack -- fake cluster
@@ -95,7 +95,7 @@ abstract class DatabaseMysqlBase extends DatabaseBase {
 
                        wfProfileOut( __METHOD__ );
 
-                       return $this->reportConnectionError( $error );
+                       $this->reportConnectionError( $error );
                }
 
                if ( $dbName != '' ) {
@@ -109,17 +109,15 @@ abstract class DatabaseMysqlBase extends DatabaseBase {
 
                                wfProfileOut( __METHOD__ );
 
-                               return $this->reportConnectionError( "Error selecting database $dbName" );
+                               $this->reportConnectionError( "Error selecting database $dbName" );
                        }
                }
 
-               // Tell the server we're communicating with it in UTF-8.
-               // This may engage various charset conversions.
-               if ( $wgDBmysql5 ) {
-                       $this->mysqlSetCharset( 'utf8' );
-               } else {
-                       $this->mysqlSetCharset( 'binary' );
+               // Tell the server what we're communicating with
+               if ( !$this->connectInitCharset() ) {
+                       $this->reportConnectionError( "Error setting character set" );
                }
+
                // Set SQL mode, default is turning them all off, can be overridden or skipped with null
                if ( is_string( $wgSQLMode ) ) {
                        $mode = $this->addQuotes( $wgSQLMode );
@@ -128,7 +126,7 @@ abstract class DatabaseMysqlBase extends DatabaseBase {
                        if ( !$success ) {
                                wfLogDBError( "Error setting sql_mode to $mode on server {$this->mServer}" );
                                wfProfileOut( __METHOD__ );
-                               return $this->reportConnectionError( "Error setting sql_mode to $mode" );
+                               $this->reportConnectionError( "Error setting sql_mode to $mode" );
                        }
                }
 
@@ -138,6 +136,22 @@ abstract class DatabaseMysqlBase extends DatabaseBase {
                return true;
        }
 
+       /**
+        * Set the character set information right after connection
+        * @return bool
+        */
+       protected function connectInitCharset() {
+               global $wgDBmysql5;
+
+               if ( $wgDBmysql5 ) {
+                       // Tell the server we're communicating with it in UTF-8.
+                       // This may engage various charset conversions.
+                       return $this->mysqlSetCharset( 'utf8' );
+               } else {
+                       return $this->mysqlSetCharset( 'binary' );
+               }
+       }
+
        /**
         * Open a connection to a MySQL server
         *
@@ -921,7 +935,6 @@ abstract class DatabaseMysqlBase extends DatabaseBase {
         * @param array $uniqueIndexes
         * @param array $set
         * @param string $fname
-        * @param array $options
         * @return bool
         */
        public function upsert(
index 6c83adb..d0c19fa 100644 (file)
@@ -44,6 +44,7 @@ class DatabaseMysqli extends DatabaseMysqlBase {
        }
 
        protected function mysqlConnect( $realServer ) {
+               global $wgDBmysql5;
                # Fail now
                # Otherwise we get a suppressed fatal error, which is very hard to track down
                if ( !function_exists( 'mysqli_init' ) ) {
@@ -63,8 +64,15 @@ class DatabaseMysqli extends DatabaseMysqlBase {
                }
 
                $mysqli = mysqli_init();
-               $numAttempts = 2;
+               if ( $wgDBmysql5 ) {
+                       // Tell the server we're communicating with it in UTF-8.
+                       // This may engage various charset conversions.
+                       $mysqli->options( MYSQLI_SET_CHARSET_NAME, 'utf8' );
+               } else {
+                       $mysqli->options( MYSQLI_SET_CHARSET_NAME, 'binary' );
+               }
 
+               $numAttempts = 2;
                for ( $i = 0; $i < $numAttempts; $i++ ) {
                        if ( $i > 1 ) {
                                usleep( 1000 );
@@ -79,6 +87,11 @@ class DatabaseMysqli extends DatabaseMysqlBase {
                return false;
        }
 
+       protected function connectInitCharset() {
+               // already done in mysqlConnect()
+               return true;
+       }
+
        /**
         * @return bool
         */
index 10715e4..3336d1e 100644 (file)
@@ -186,18 +186,26 @@ class ORAField implements Field {
  * @ingroup Database
  */
 class DatabaseOracle extends DatabaseBase {
-       var $mInsertId = null;
-       var $mLastResult = null;
-       var $lastResult = null;
-       var $cursor = 0;
-       var $mAffectedRows;
+       /** @var resource */
+       protected $mLastResult = null;
 
-       var $ignore_DUP_VAL_ON_INDEX = false;
-       var $sequenceData = null;
+       /** @var int The number of rows affected as an integer */
+       protected $mAffectedRows;
 
-       var $defaultCharset = 'AL32UTF8';
+       /** @var int */
+       private $mInsertId = null;
 
-       var $mFieldInfoCache = array();
+       /** @var bool */
+       private $ignoreDupValOnIndex = false;
+
+       /** @var bool|array */
+       private $sequenceData = null;
+
+       /** @var string Character set for Oracle database */
+       private $defaultCharset = 'AL32UTF8';
+
+       /** @var array */
+       private $mFieldInfoCache = array();
 
        function __construct( $p = null ) {
                global $wgDBprefix;
@@ -302,7 +310,7 @@ class DatabaseOracle extends DatabaseBase {
                }
 
                if ( !strlen( $user ) ) { # e.g. the class is being loaded
-                       return;
+                       return null;
                }
 
                if ( $wgDBOracleDRCP ) {
@@ -409,7 +417,7 @@ class DatabaseOracle extends DatabaseBase {
 
                if ( !oci_execute( $stmt, $this->execFlags() ) ) {
                        $e = oci_error( $stmt );
-                       if ( !$this->ignore_DUP_VAL_ON_INDEX || $e['code'] != '1' ) {
+                       if ( !$this->ignoreDupValOnIndex || $e['code'] != '1' ) {
                                $this->reportQueryError( $e['message'], $e['code'], $sql, __METHOD__ );
 
                                return false;
@@ -480,7 +488,7 @@ class DatabaseOracle extends DatabaseBase {
 
        /**
         * This must be called after nextSequenceVal
-        * @return null
+        * @return null|int
         */
        function insertId() {
                return $this->mInsertId;
@@ -541,7 +549,7 @@ class DatabaseOracle extends DatabaseBase {
                }
 
                if ( in_array( 'IGNORE', $options ) ) {
-                       $this->ignore_DUP_VAL_ON_INDEX = true;
+                       $this->ignoreDupValOnIndex = true;
                }
 
                if ( !is_array( reset( $a ) ) ) {
@@ -554,7 +562,7 @@ class DatabaseOracle extends DatabaseBase {
                $retVal = true;
 
                if ( in_array( 'IGNORE', $options ) ) {
-                       $this->ignore_DUP_VAL_ON_INDEX = false;
+                       $this->ignoreDupValOnIndex = false;
                }
 
                return $retVal;
@@ -669,7 +677,7 @@ class DatabaseOracle extends DatabaseBase {
 
                if ( oci_execute( $stmt, $this->execFlags() ) === false ) {
                        $e = oci_error( $stmt );
-                       if ( !$this->ignore_DUP_VAL_ON_INDEX || $e['code'] != '1' ) {
+                       if ( !$this->ignoreDupValOnIndex || $e['code'] != '1' ) {
                                $this->reportQueryError( $e['message'], $e['code'], $sql, __METHOD__ );
 
                                return false;
@@ -730,13 +738,13 @@ class DatabaseOracle extends DatabaseBase {
                $sql .= " $tailOpts";
 
                if ( in_array( 'IGNORE', $insertOptions ) ) {
-                       $this->ignore_DUP_VAL_ON_INDEX = true;
+                       $this->ignoreDupValOnIndex = true;
                }
 
                $retval = $this->query( $sql, $fname );
 
                if ( in_array( 'IGNORE', $insertOptions ) ) {
-                       $this->ignore_DUP_VAL_ON_INDEX = false;
+                       $this->ignoreDupValOnIndex = false;
                }
 
                return $retval;
@@ -768,7 +776,9 @@ class DatabaseOracle extends DatabaseBase {
 
        /**
         * Return the next in a sequence, save the value for retrieval via insertId()
-        * @return null
+        *
+        * @param string $seqName
+        * @return null|int
         */
        function nextSequenceValue( $seqName ) {
                $res = $this->query( "SELECT $seqName.nextval FROM dual" );
@@ -780,6 +790,8 @@ class DatabaseOracle extends DatabaseBase {
 
        /**
         * Return sequence_name if table has a sequence
+        *
+        * @param string $table
         * @return bool
         */
        private function getSequenceData( $table ) {
@@ -1388,6 +1400,7 @@ class DatabaseOracle extends DatabaseBase {
                                        return false;
                                }
                        } else {
+                               /** @var OCI_Lob[] $lob */
                                if ( ( $lob[$col] = oci_new_descriptor( $this->mConn, OCI_D_LOB ) ) === false ) {
                                        $e = oci_error( $stmt );
                                        throw new DBUnexpectedError( $this, "Cannot create LOB descriptor: " . $e['message'] );
@@ -1407,7 +1420,7 @@ class DatabaseOracle extends DatabaseBase {
 
                if ( oci_execute( $stmt, $this->execFlags() ) === false ) {
                        $e = oci_error( $stmt );
-                       if ( !$this->ignore_DUP_VAL_ON_INDEX || $e['code'] != '1' ) {
+                       if ( !$this->ignoreDupValOnIndex || $e['code'] != '1' ) {
                                $this->reportQueryError( $e['message'], $e['code'], $sql, __METHOD__ );
 
                                return false;
index cfa2074..21a7bcf 100644 (file)
@@ -135,8 +135,7 @@ SQL;
  * @ingroup Database
  */
 class PostgresTransactionState {
-
-       static $WATCHED = array(
+       private static $WATCHED = array(
                array(
                        "desc" => "%s: Connection state changed from %s -> %s\n",
                        "states" => array(
@@ -156,6 +155,12 @@ class PostgresTransactionState {
                )
        );
 
+       /** @var array */
+       private $mNewState;
+
+       /** @var array */
+       private $mCurrentState;
+
        public function __construct( $conn ) {
                $this->mConn = $conn;
                $this->update();
@@ -284,10 +289,26 @@ class SavepointPostgres {
  * @ingroup Database
  */
 class DatabasePostgres extends DatabaseBase {
-       var $mInsertId = null;
-       var $mLastResult = null;
-       var $numeric_version = null;
-       var $mAffectedRows = null;
+       /** @var resource */
+       protected $mLastResult = null;
+
+       /** @var int The number of rows affected as an integer */
+       protected $mAffectedRows = null;
+
+       /** @var int */
+       private $mInsertId = null;
+
+       /** @var float|string */
+       private $numericVersion = null;
+
+       /** @var string Connect string to open a PostgreSQL connection */
+       private $connectString;
+
+       /** @var PostgresTransactionState */
+       private $mTransactionState;
+
+       /** @var string */
+       private $mCoreSchema;
 
        function getType() {
                return 'postgres';
@@ -602,7 +623,7 @@ class DatabasePostgres extends DatabaseBase {
         * Return the result of the last call to nextSequenceValue();
         * This must be called after nextSequenceValue().
         *
-        * @return integer|null
+        * @return int|null
         */
        function insertId() {
                return $this->mInsertId;
@@ -765,11 +786,8 @@ __INDEXATTR__;
                if ( !$res ) {
                        return null;
                }
-               foreach ( $res as $row ) {
-                       return true;
-               }
 
-               return false;
+               return $res->numRows() > 0;
        }
 
        /**
@@ -791,7 +809,7 @@ __INDEXATTR__;
                }
 
                $table = $this->tableName( $table );
-               if ( !isset( $this->numeric_version ) ) {
+               if ( !isset( $this->numericVersion ) ) {
                        $this->getServerVersion();
                }
 
@@ -820,7 +838,7 @@ __INDEXATTR__;
                $sql = "INSERT INTO $table (" . implode( ',', $keys ) . ') VALUES ';
 
                if ( $multi ) {
-                       if ( $this->numeric_version >= 8.2 && !$savepoint ) {
+                       if ( $this->numericVersion >= 8.2 && !$savepoint ) {
                                $first = true;
                                foreach ( $args as $row ) {
                                        if ( $first ) {
@@ -880,7 +898,7 @@ __INDEXATTR__;
                        }
                }
                if ( $savepoint ) {
-                       $olde = error_reporting( $olde );
+                       error_reporting( $olde );
                        $savepoint->commit();
 
                        // Set the affected row count for the whole operation
@@ -952,7 +970,7 @@ __INDEXATTR__;
                                $savepoint->release();
                                $numrowsinserted++;
                        }
-                       $olde = error_reporting( $olde );
+                       error_reporting( $olde );
                        $savepoint->commit();
 
                        // Set the affected row count for the whole operation
@@ -984,7 +1002,9 @@ __INDEXATTR__;
 
        /**
         * Return the next in a sequence, save the value for retrieval via insertId()
-        * @return null
+        * 
+        * @param string $seqName
+        * @return int|null
         */
        function nextSequenceValue( $seqName ) {
                $safeseq = str_replace( "'", "''", $seqName );
@@ -997,6 +1017,8 @@ __INDEXATTR__;
 
        /**
         * Return the current value of a sequence. Assumes it has been nextval'ed in this session.
+        *
+        * @param string $seqName
         * @return
         */
        function currentSequenceValue( $seqName ) {
@@ -1126,7 +1148,7 @@ __INDEXATTR__;
         * Needs transaction
         *
         * @since 1.19
-        * @return string return default schema for the current session
+        * @return string Default schema for the current session
         */
        function getCurrentSchema() {
                $res = $this->query( "SELECT current_schema()", __METHOD__ );
@@ -1239,21 +1261,21 @@ __INDEXATTR__;
         * @return string Version information from the database
         */
        function getServerVersion() {
-               if ( !isset( $this->numeric_version ) ) {
+               if ( !isset( $this->numericVersion ) ) {
                        $versionInfo = pg_version( $this->mConn );
                        if ( version_compare( $versionInfo['client'], '7.4.0', 'lt' ) ) {
                                // Old client, abort install
-                               $this->numeric_version = '7.3 or earlier';
+                               $this->numericVersion = '7.3 or earlier';
                        } elseif ( isset( $versionInfo['server'] ) ) {
                                // Normal client
-                               $this->numeric_version = $versionInfo['server'];
+                               $this->numericVersion = $versionInfo['server'];
                        } else {
                                // Bug 16937: broken pgsql extension from PHP<5.3
-                               $this->numeric_version = pg_parameter_status( $this->mConn, 'server_version' );
+                               $this->numericVersion = pg_parameter_status( $this->mConn, 'server_version' );
                        }
                }
 
-               return $this->numeric_version;
+               return $this->numericVersion;
        }
 
        /**
@@ -1431,12 +1453,12 @@ SQL;
        protected function replaceVars( $ins ) {
                $ins = parent::replaceVars( $ins );
 
-               if ( $this->numeric_version >= 8.3 ) {
+               if ( $this->numericVersion >= 8.3 ) {
                        // Thanks for not providing backwards-compatibility, 8.3
                        $ins = preg_replace( "/to_tsvector\s*\(\s*'default'\s*,/", 'to_tsvector(', $ins );
                }
 
-               if ( $this->numeric_version <= 8.1 ) { // Our minimum version
+               if ( $this->numericVersion <= 8.1 ) { // Our minimum version
                        $ins = str_replace( 'USING gin', 'USING gist', $ins );
                }
 
index de5be08..5451e98 100644 (file)
@@ -51,6 +51,7 @@ class DBObject {
  * This allows us to distinguish a blob from a normal string and an array of strings
  */
 class Blob {
+       /** @var string */
        private $mData;
 
        function __construct( $data ) {
@@ -97,13 +98,23 @@ interface Field {
  * @ingroup Database
  */
 class ResultWrapper implements Iterator {
-       var $db, $result, $pos = 0, $currentRow = null;
+       /** @var resource */
+       public $result;
+
+       /** @var DatabaseBase */
+       protected $db;
+
+       /** @var int */
+       protected $pos = 0;
+
+       /** @var */
+       protected $currentRow = null;
 
        /**
         * Create a new result object from a result resource and a Database object
         *
         * @param DatabaseBase $database
-        * @param resource $result
+        * @param resource|ResultWrapper $result
         */
        function __construct( $database, $result ) {
                $this->db = $database;
@@ -221,10 +232,17 @@ class ResultWrapper implements Iterator {
  * doesn't go anywhere near an actual database.
  */
 class FakeResultWrapper extends ResultWrapper {
-       var $result = array();
-       var $db = null; // And it's going to stay that way :D
-       var $pos = 0;
-       var $currentRow = null;
+       /** @var array */
+       public $result = array();
+
+       /** @var null And it's going to stay that way :D */
+       protected $db = null;
+
+       /** @var int */
+       protected $pos = 0;
+
+       /** @var array|stdClass|bool */
+       protected $currentRow = null;
 
        function __construct( $array ) {
                $this->result = $array;
index 6e377ff..847e173 100644 (file)
  * @ingroup Database
  */
 abstract class LBFactory {
-       /**
-        * @var LBFactory
-        */
-       static $instance;
+       /** @var LBFactory */
+       protected static $instance;
 
        /**
         * Disables all access to the load balancer, will cause all database access
@@ -37,7 +35,7 @@ abstract class LBFactory {
         */
        public static function disableBackend() {
                global $wgLBFactoryConf;
-               self::$instance = new LBFactory_Fake( $wgLBFactoryConf );
+               self::$instance = new LBFactoryFake( $wgLBFactoryConf );
        }
 
        /**
@@ -46,15 +44,47 @@ abstract class LBFactory {
         * @return LBFactory
         */
        static function &singleton() {
+               global $wgLBFactoryConf;
+
                if ( is_null( self::$instance ) ) {
-                       global $wgLBFactoryConf;
-                       $class = $wgLBFactoryConf['class'];
+                       $class = self::getLBFactoryClass( $wgLBFactoryConf );
+
                        self::$instance = new $class( $wgLBFactoryConf );
                }
 
                return self::$instance;
        }
 
+       /**
+        * Returns the LBFactory class to use and the load balancer configuration.
+        *
+        * @param array $config (e.g. $wgLBFactoryConf)
+        *
+        * @return string class name
+        */
+       public static function getLBFactoryClass( array $config ) {
+               // For configuration backward compatibility after removing
+               // underscores from class names in MediaWiki 1.23.
+               $bcClasses = array(
+                       'LBFactory_Simple' => 'LBFactorySimple',
+                       'LBFactory_Single' => 'LBFactorySingle',
+                       'LBFactory_Multi' => 'LBFactoryMulti',
+                       'LBFactory_Fake' => 'LBFactoryFake',
+               );
+
+               $class = $config['class'];
+
+               if ( isset( $bcClasses[$class] ) ) {
+                       $class = $bcClasses[$class];
+                       wfDeprecated(
+                               '$wgLBFactoryConf must be updated. See RELEASE-NOTES for details',
+                               '1.23'
+                       );
+               }
+
+               return $class;
+       }
+
        /**
         * Shut down, close connections and destroy the cached instance.
         */
@@ -167,16 +197,15 @@ abstract class LBFactory {
 /**
  * A simple single-master LBFactory that gets its configuration from the b/c globals
  */
-class LBFactory_Simple extends LBFactory {
+class LBFactorySimple extends LBFactory {
+       /** @var LoadBalancer */
+       protected $mainLB;
 
-       /**
-        * @var LoadBalancer
-        */
-       var $mainLB;
-       var $extLBs = array();
+       /** @var LoadBalancer[] */
+       protected $extLBs = array();
 
-       # Chronology protector
-       var $chronProt;
+       /** @var ChronologyProtector */
+       protected $chronProt;
 
        function __construct( $conf ) {
                $this->chronProt = new ChronologyProtector;
@@ -299,7 +328,7 @@ class LBFactory_Simple extends LBFactory {
  * Call LBFactory::disableBackend() to start using this, and
  * LBFactory::enableBackend() to return to normal behavior
  */
-class LBFactory_Fake extends LBFactory {
+class LBFactoryFake extends LBFactory {
        function __construct( $conf ) {
        }
 
diff --git a/includes/db/LBFactoryMulti.php b/includes/db/LBFactoryMulti.php
new file mode 100644 (file)
index 0000000..2ab0554
--- /dev/null
@@ -0,0 +1,401 @@
+<?php
+/**
+ * Advanced generator of database load balancing objects for wiki farms.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @ingroup Database
+ */
+
+/**
+ * A multi-wiki, multi-master factory for Wikimedia and similar installations.
+ * Ignores the old configuration globals
+ *
+ * Configuration:
+ *     sectionsByDB                A map of database names to section names.
+ *
+ *     sectionLoads                A 2-d map. For each section, gives a map of server names to
+ *                                 load ratios. For example:
+ *                                 array(
+ *                                     'section1' => array(
+ *                                         'db1' => 100,
+ *                                         'db2' => 100
+ *                                     )
+ *                                 )
+ *
+ *     serverTemplate              A server info associative array as documented for $wgDBservers.
+ *                                 The host, hostName and load entries will be overridden.
+ *
+ *     groupLoadsBySection         A 3-d map giving server load ratios for each section and group.
+ *                                 For example:
+ *                                 array(
+ *                                     'section1' => array(
+ *                                         'group1' => array(
+ *                                             'db1' => 100,
+ *                                             'db2' => 100
+ *                                         )
+ *                                     )
+ *                                 )
+ *
+ *     groupLoadsByDB              A 3-d map giving server load ratios by DB name.
+ *
+ *     hostsByName                 A map of hostname to IP address.
+ *
+ *     externalLoads               A map of external storage cluster name to server load map.
+ *
+ *     externalTemplateOverrides   A set of server info keys overriding serverTemplate for external
+ *                                 storage.
+ *
+ *     templateOverridesByServer   A 2-d map overriding serverTemplate and
+ *                                 externalTemplateOverrides on a server-by-server basis. Applies
+ *                                 to both core and external storage.
+ *
+ *     templateOverridesByCluster  A 2-d map overriding the server info by external storage cluster.
+ *
+ *     masterTemplateOverrides     An override array for all master servers.
+ *
+ *     readOnlyBySection           A map of section name to read-only message.
+ *                                 Missing or false for read/write.
+ *
+ * @ingroup Database
+ */
+class LBFactoryMulti extends LBFactory {
+       // Required settings
+
+       /** @var array A map of database names to section names */
+       protected $sectionsByDB;
+
+       /**
+        * @var array A 2-d map. For each section, gives a map of server names to
+        * load ratios
+        */
+       protected $sectionLoads;
+
+       /**
+        * @var array A server info associative array as documented for
+        * $wgDBservers. The host, hostName and load entries will be
+        * overridden
+        */
+       protected $serverTemplate;
+
+       // Optional settings
+
+       /** @var array A 3-d map giving server load ratios for each section and group */
+       protected $groupLoadsBySection = array();
+
+       /** @var array A 3-d map giving server load ratios by DB name */
+       protected $groupLoadsByDB = array();
+
+       /** @var array A map of hostname to IP address */
+       protected $hostsByName = array();
+
+       /** @var array A map of external storage cluster name to server load map */
+       protected $externalLoads = array();
+
+       /**
+        * @var array A set of server info keys overriding serverTemplate for
+        * external storage
+        */
+       protected $externalTemplateOverrides;
+
+       /**
+        * @var array A 2-d map overriding serverTemplate and
+        * externalTemplateOverrides on a server-by-server basis. Applies to both
+        * core and external storage
+        */
+       protected $templateOverridesByServer;
+
+       /** @var array A 2-d map overriding the server info by external storage cluster */
+       protected $templateOverridesByCluster;
+
+       /** @var array An override array for all master servers */
+       protected $masterTemplateOverrides;
+
+       /**
+        * @var array|bool A map of section name to read-only message. Missing or
+        * false for read/write
+        */
+       protected $readOnlyBySection = array();
+
+       // Other stuff
+
+       /** @var array Load balancer factory configuration */
+       protected $conf;
+
+       /** @var LoadBalancer[] */
+       protected $mainLBs = array();
+
+       /** @var LoadBalancer[] */
+       protected $extLBs = array();
+
+       /** @var string */
+       protected $lastWiki;
+
+       /** @var string */
+       protected $lastSection;
+
+       /**
+        * @param $conf array
+        * @throws MWException
+        */
+       function __construct( $conf ) {
+               $this->chronProt = new ChronologyProtector;
+               $this->conf = $conf;
+               $required = array( 'sectionsByDB', 'sectionLoads', 'serverTemplate' );
+               $optional = array( 'groupLoadsBySection', 'groupLoadsByDB', 'hostsByName',
+                       'externalLoads', 'externalTemplateOverrides', 'templateOverridesByServer',
+                       'templateOverridesByCluster', 'masterTemplateOverrides',
+                       'readOnlyBySection' );
+
+               foreach ( $required as $key ) {
+                       if ( !isset( $conf[$key] ) ) {
+                               throw new MWException( __CLASS__ . ": $key is required in configuration" );
+                       }
+                       $this->$key = $conf[$key];
+               }
+
+               foreach ( $optional as $key ) {
+                       if ( isset( $conf[$key] ) ) {
+                               $this->$key = $conf[$key];
+                       }
+               }
+
+               // Check for read-only mode
+               $section = $this->getSectionForWiki();
+               if ( !empty( $this->readOnlyBySection[$section] ) ) {
+                       global $wgReadOnly;
+                       $wgReadOnly = $this->readOnlyBySection[$section];
+               }
+       }
+
+       /**
+        * @param $wiki bool|string
+        * @return string
+        */
+       function getSectionForWiki( $wiki = false ) {
+               if ( $this->lastWiki === $wiki ) {
+                       return $this->lastSection;
+               }
+               list( $dbName, ) = $this->getDBNameAndPrefix( $wiki );
+               if ( isset( $this->sectionsByDB[$dbName] ) ) {
+                       $section = $this->sectionsByDB[$dbName];
+               } else {
+                       $section = 'DEFAULT';
+               }
+               $this->lastSection = $section;
+               $this->lastWiki = $wiki;
+
+               return $section;
+       }
+
+       /**
+        * @param $wiki bool|string
+        * @return LoadBalancer
+        */
+       function newMainLB( $wiki = false ) {
+               list( $dbName, ) = $this->getDBNameAndPrefix( $wiki );
+               $section = $this->getSectionForWiki( $wiki );
+               $groupLoads = array();
+               if ( isset( $this->groupLoadsByDB[$dbName] ) ) {
+                       $groupLoads = $this->groupLoadsByDB[$dbName];
+               }
+
+               if ( isset( $this->groupLoadsBySection[$section] ) ) {
+                       $groupLoads = array_merge_recursive( $groupLoads, $this->groupLoadsBySection[$section] );
+               }
+
+               return $this->newLoadBalancer(
+                       $this->serverTemplate,
+                       $this->sectionLoads[$section],
+                       $groupLoads
+               );
+       }
+
+       /**
+        * @param $wiki bool|string
+        * @return LoadBalancer
+        */
+       function getMainLB( $wiki = false ) {
+               $section = $this->getSectionForWiki( $wiki );
+               if ( !isset( $this->mainLBs[$section] ) ) {
+                       $lb = $this->newMainLB( $wiki, $section );
+                       $lb->parentInfo( array( 'id' => "main-$section" ) );
+                       $this->chronProt->initLB( $lb );
+                       $this->mainLBs[$section] = $lb;
+               }
+
+               return $this->mainLBs[$section];
+       }
+
+       /**
+        * @param string $cluster
+        * @param bool $wiki
+        * @throws MWException
+        * @return LoadBalancer
+        */
+       function newExternalLB( $cluster, $wiki = false ) {
+               if ( !isset( $this->externalLoads[$cluster] ) ) {
+                       throw new MWException( __METHOD__ . ": Unknown cluster \"$cluster\"" );
+               }
+               $template = $this->serverTemplate;
+               if ( isset( $this->externalTemplateOverrides ) ) {
+                       $template = $this->externalTemplateOverrides + $template;
+               }
+               if ( isset( $this->templateOverridesByCluster[$cluster] ) ) {
+                       $template = $this->templateOverridesByCluster[$cluster] + $template;
+               }
+
+               return $this->newLoadBalancer( $template, $this->externalLoads[$cluster], array() );
+       }
+
+       /**
+        * @param $cluster
+        * @param $wiki
+        * @return LoadBalancer
+        */
+       function &getExternalLB( $cluster, $wiki = false ) {
+               if ( !isset( $this->extLBs[$cluster] ) ) {
+                       $this->extLBs[$cluster] = $this->newExternalLB( $cluster, $wiki );
+                       $this->extLBs[$cluster]->parentInfo( array( 'id' => "ext-$cluster" ) );
+                       $this->chronProt->initLB( $this->extLBs[$cluster] );
+               }
+
+               return $this->extLBs[$cluster];
+       }
+
+       /**
+        * Make a new load balancer object based on template and load array
+        *
+        * @param $template
+        * @param $loads array
+        * @param $groupLoads
+        * @return LoadBalancer
+        */
+       function newLoadBalancer( $template, $loads, $groupLoads ) {
+               global $wgMasterWaitTimeout;
+               $servers = $this->makeServerArray( $template, $loads, $groupLoads );
+               $lb = new LoadBalancer( array(
+                       'servers' => $servers,
+                       'masterWaitTimeout' => $wgMasterWaitTimeout
+               ) );
+
+               return $lb;
+       }
+
+       /**
+        * Make a server array as expected by LoadBalancer::__construct, using a template and load array
+        *
+        * @param $template
+        * @param $loads array
+        * @param $groupLoads
+        * @return array
+        */
+       function makeServerArray( $template, $loads, $groupLoads ) {
+               $servers = array();
+               $master = true;
+               $groupLoadsByServer = $this->reindexGroupLoads( $groupLoads );
+               foreach ( $groupLoadsByServer as $server => $stuff ) {
+                       if ( !isset( $loads[$server] ) ) {
+                               $loads[$server] = 0;
+                       }
+               }
+               foreach ( $loads as $serverName => $load ) {
+                       $serverInfo = $template;
+                       if ( $master ) {
+                               $serverInfo['master'] = true;
+                               if ( isset( $this->masterTemplateOverrides ) ) {
+                                       $serverInfo = $this->masterTemplateOverrides + $serverInfo;
+                               }
+                               $master = false;
+                       }
+                       if ( isset( $this->templateOverridesByServer[$serverName] ) ) {
+                               $serverInfo = $this->templateOverridesByServer[$serverName] + $serverInfo;
+                       }
+                       if ( isset( $groupLoadsByServer[$serverName] ) ) {
+                               $serverInfo['groupLoads'] = $groupLoadsByServer[$serverName];
+                       }
+                       if ( isset( $this->hostsByName[$serverName] ) ) {
+                               $serverInfo['host'] = $this->hostsByName[$serverName];
+                       } else {
+                               $serverInfo['host'] = $serverName;
+                       }
+                       $serverInfo['hostName'] = $serverName;
+                       $serverInfo['load'] = $load;
+                       $servers[] = $serverInfo;
+               }
+
+               return $servers;
+       }
+
+       /**
+        * Take a group load array indexed by group then server, and reindex it by server then group
+        * @param $groupLoads
+        * @return array
+        */
+       function reindexGroupLoads( $groupLoads ) {
+               $reindexed = array();
+               foreach ( $groupLoads as $group => $loads ) {
+                       foreach ( $loads as $server => $load ) {
+                               $reindexed[$server][$group] = $load;
+                       }
+               }
+
+               return $reindexed;
+       }
+
+       /**
+        * Get the database name and prefix based on the wiki ID
+        * @param $wiki bool
+        * @return array
+        */
+       function getDBNameAndPrefix( $wiki = false ) {
+               if ( $wiki === false ) {
+                       global $wgDBname, $wgDBprefix;
+
+                       return array( $wgDBname, $wgDBprefix );
+               } else {
+                       return wfSplitWikiID( $wiki );
+               }
+       }
+
+       /**
+        * Execute a function for each tracked load balancer
+        * The callback is called with the load balancer as the first parameter,
+        * and $params passed as the subsequent parameters.
+        * @param $callback
+        * @param $params array
+        */
+       function forEachLB( $callback, $params = array() ) {
+               foreach ( $this->mainLBs as $lb ) {
+                       call_user_func_array( $callback, array_merge( array( $lb ), $params ) );
+               }
+               foreach ( $this->extLBs as $lb ) {
+                       call_user_func_array( $callback, array_merge( array( $lb ), $params ) );
+               }
+       }
+
+       function shutdown() {
+               foreach ( $this->mainLBs as $lb ) {
+                       $this->chronProt->shutdownLB( $lb );
+               }
+               foreach ( $this->extLBs as $extLB ) {
+                       $this->chronProt->shutdownLB( $extLB );
+               }
+               $this->chronProt->shutdown();
+               $this->commitMasterChanges();
+       }
+}
diff --git a/includes/db/LBFactorySingle.php b/includes/db/LBFactorySingle.php
new file mode 100644 (file)
index 0000000..83271ec
--- /dev/null
@@ -0,0 +1,115 @@
+<?php
+/**
+ * Simple generator of database connections that always returns the same object.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @ingroup Database
+ */
+
+/**
+ * An LBFactory class that always returns a single database object.
+ */
+class LBFactorySingle extends LBFactory {
+       protected $lb;
+
+       /**
+        * @param array $conf An associative array with one member:
+        *  - connection: The DatabaseBase connection object
+        */
+       function __construct( $conf ) {
+               $this->lb = new LoadBalancerSingle( $conf );
+       }
+
+       /**
+        * @param $wiki bool|string
+        *
+        * @return LoadBalancerSingle
+        */
+       function newMainLB( $wiki = false ) {
+               return $this->lb;
+       }
+
+       /**
+        * @param $wiki bool|string
+        *
+        * @return LoadBalancerSingle
+        */
+       function getMainLB( $wiki = false ) {
+               return $this->lb;
+       }
+
+       /**
+        * @param $cluster
+        * @param $wiki bool|string
+        *
+        * @return LoadBalancerSingle
+        */
+       function newExternalLB( $cluster, $wiki = false ) {
+               return $this->lb;
+       }
+
+       /**
+        * @param $cluster
+        * @param $wiki bool|string
+        *
+        * @return LoadBalancerSingle
+        */
+       function &getExternalLB( $cluster, $wiki = false ) {
+               return $this->lb;
+       }
+
+       /**
+        * @param $callback string|array
+        * @param $params array
+        */
+       function forEachLB( $callback, $params = array() ) {
+               call_user_func_array( $callback, array_merge( array( $this->lb ), $params ) );
+       }
+}
+
+/**
+ * Helper class for LBFactorySingle.
+ */
+class LoadBalancerSingle extends LoadBalancer {
+       /** @var DatabaseBase */
+       protected $db;
+
+       /**
+        * @param $params array
+        */
+       function __construct( $params ) {
+               $this->db = $params['connection'];
+               parent::__construct( array( 'servers' => array( array(
+                       'type' => $this->db->getType(),
+                       'host' => $this->db->getServer(),
+                       'dbname' => $this->db->getDBname(),
+                       'load' => 1,
+               ) ) ) );
+       }
+
+       /**
+        *
+        * @param $server string
+        * @param $dbNameOverride bool
+        *
+        * @return DatabaseBase
+        */
+       function reallyOpenConnection( $server, $dbNameOverride = false ) {
+               return $this->db;
+       }
+}
diff --git a/includes/db/LBFactory_Multi.php b/includes/db/LBFactory_Multi.php
deleted file mode 100644 (file)
index a37a560..0000000
+++ /dev/null
@@ -1,337 +0,0 @@
-<?php
-/**
- * Advanced generator of database load balancing objects for wiki farms.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- * http://www.gnu.org/copyleft/gpl.html
- *
- * @file
- * @ingroup Database
- */
-
-/**
- * A multi-wiki, multi-master factory for Wikimedia and similar installations.
- * Ignores the old configuration globals
- *
- * Configuration:
- *     sectionsByDB                A map of database names to section names
- *
- *     sectionLoads                A 2-d map. For each section, gives a map of server names to
- *                                 load ratios. For example:
- *                                 array(
- *                                     'section1' => array(
- *                                         'db1' => 100,
- *                                         'db2' => 100
- *                                     )
- *                                 )
- *
- *     serverTemplate              A server info associative array as documented for $wgDBservers.
- *                                 The host, hostName and load entries will be overridden.
- *
- *     groupLoadsBySection         A 3-d map giving server load ratios for each section and group.
- *                                 For example:
- *                                 array(
- *                                     'section1' => array(
- *                                         'group1' => array(
- *                                             'db1' => 100,
- *                                             'db2' => 100
- *                                         )
- *                                     )
- *                                 )
- *
- *     groupLoadsByDB              A 3-d map giving server load ratios by DB name.
- *
- *     hostsByName                 A map of hostname to IP address.
- *
- *     externalLoads               A map of external storage cluster name to server load map
- *
- *     externalTemplateOverrides   A set of server info keys overriding serverTemplate for external
- *                                 storage
- *
- *     templateOverridesByServer   A 2-d map overriding serverTemplate and
- *                                 externalTemplateOverrides on a server-by-server basis. Applies
- *                                 to both core and external storage.
- *
- *     templateOverridesByCluster  A 2-d map overriding the server info by external storage cluster
- *
- *     masterTemplateOverrides     An override array for all master servers.
- *
- *     readOnlyBySection           A map of section name to read-only message.
- *                                 Missing or false for read/write.
- *
- * @ingroup Database
- */
-class LBFactory_Multi extends LBFactory {
-       // Required settings
-       var $sectionsByDB, $sectionLoads, $serverTemplate;
-       // Optional settings
-       var $groupLoadsBySection = array(), $groupLoadsByDB = array(), $hostsByName = array();
-       var $externalLoads = array(), $externalTemplateOverrides, $templateOverridesByServer;
-       var $templateOverridesByCluster, $masterTemplateOverrides, $readOnlyBySection = array();
-       // Other stuff
-       var $conf, $mainLBs = array(), $extLBs = array();
-       var $lastWiki, $lastSection;
-
-       /**
-        * @param $conf array
-        * @throws MWException
-        */
-       function __construct( $conf ) {
-               $this->chronProt = new ChronologyProtector;
-               $this->conf = $conf;
-               $required = array( 'sectionsByDB', 'sectionLoads', 'serverTemplate' );
-               $optional = array( 'groupLoadsBySection', 'groupLoadsByDB', 'hostsByName',
-                       'externalLoads', 'externalTemplateOverrides', 'templateOverridesByServer',
-                       'templateOverridesByCluster', 'masterTemplateOverrides',
-                       'readOnlyBySection' );
-
-               foreach ( $required as $key ) {
-                       if ( !isset( $conf[$key] ) ) {
-                               throw new MWException( __CLASS__ . ": $key is required in configuration" );
-                       }
-                       $this->$key = $conf[$key];
-               }
-
-               foreach ( $optional as $key ) {
-                       if ( isset( $conf[$key] ) ) {
-                               $this->$key = $conf[$key];
-                       }
-               }
-
-               // Check for read-only mode
-               $section = $this->getSectionForWiki();
-               if ( !empty( $this->readOnlyBySection[$section] ) ) {
-                       global $wgReadOnly;
-                       $wgReadOnly = $this->readOnlyBySection[$section];
-               }
-       }
-
-       /**
-        * @param $wiki bool|string
-        * @return string
-        */
-       function getSectionForWiki( $wiki = false ) {
-               if ( $this->lastWiki === $wiki ) {
-                       return $this->lastSection;
-               }
-               list( $dbName, ) = $this->getDBNameAndPrefix( $wiki );
-               if ( isset( $this->sectionsByDB[$dbName] ) ) {
-                       $section = $this->sectionsByDB[$dbName];
-               } else {
-                       $section = 'DEFAULT';
-               }
-               $this->lastSection = $section;
-               $this->lastWiki = $wiki;
-
-               return $section;
-       }
-
-       /**
-        * @param $wiki bool|string
-        * @return LoadBalancer
-        */
-       function newMainLB( $wiki = false ) {
-               list( $dbName, ) = $this->getDBNameAndPrefix( $wiki );
-               $section = $this->getSectionForWiki( $wiki );
-               $groupLoads = array();
-               if ( isset( $this->groupLoadsByDB[$dbName] ) ) {
-                       $groupLoads = $this->groupLoadsByDB[$dbName];
-               }
-
-               if ( isset( $this->groupLoadsBySection[$section] ) ) {
-                       $groupLoads = array_merge_recursive( $groupLoads, $this->groupLoadsBySection[$section] );
-               }
-
-               return $this->newLoadBalancer(
-                       $this->serverTemplate,
-                       $this->sectionLoads[$section],
-                       $groupLoads
-               );
-       }
-
-       /**
-        * @param $wiki bool|string
-        * @return LoadBalancer
-        */
-       function getMainLB( $wiki = false ) {
-               $section = $this->getSectionForWiki( $wiki );
-               if ( !isset( $this->mainLBs[$section] ) ) {
-                       $lb = $this->newMainLB( $wiki, $section );
-                       $lb->parentInfo( array( 'id' => "main-$section" ) );
-                       $this->chronProt->initLB( $lb );
-                       $this->mainLBs[$section] = $lb;
-               }
-
-               return $this->mainLBs[$section];
-       }
-
-       /**
-        * @param string $cluster
-        * @param bool $wiki
-        * @throws MWException
-        * @return LoadBalancer
-        */
-       function newExternalLB( $cluster, $wiki = false ) {
-               if ( !isset( $this->externalLoads[$cluster] ) ) {
-                       throw new MWException( __METHOD__ . ": Unknown cluster \"$cluster\"" );
-               }
-               $template = $this->serverTemplate;
-               if ( isset( $this->externalTemplateOverrides ) ) {
-                       $template = $this->externalTemplateOverrides + $template;
-               }
-               if ( isset( $this->templateOverridesByCluster[$cluster] ) ) {
-                       $template = $this->templateOverridesByCluster[$cluster] + $template;
-               }
-
-               return $this->newLoadBalancer( $template, $this->externalLoads[$cluster], array() );
-       }
-
-       /**
-        * @param $cluster
-        * @param $wiki
-        * @return LoadBalancer
-        */
-       function &getExternalLB( $cluster, $wiki = false ) {
-               if ( !isset( $this->extLBs[$cluster] ) ) {
-                       $this->extLBs[$cluster] = $this->newExternalLB( $cluster, $wiki );
-                       $this->extLBs[$cluster]->parentInfo( array( 'id' => "ext-$cluster" ) );
-                       $this->chronProt->initLB( $this->extLBs[$cluster] );
-               }
-
-               return $this->extLBs[$cluster];
-       }
-
-       /**
-        * Make a new load balancer object based on template and load array
-        *
-        * @param $template
-        * @param $loads array
-        * @param $groupLoads
-        * @return LoadBalancer
-        */
-       function newLoadBalancer( $template, $loads, $groupLoads ) {
-               global $wgMasterWaitTimeout;
-               $servers = $this->makeServerArray( $template, $loads, $groupLoads );
-               $lb = new LoadBalancer( array(
-                       'servers' => $servers,
-                       'masterWaitTimeout' => $wgMasterWaitTimeout
-               ) );
-
-               return $lb;
-       }
-
-       /**
-        * Make a server array as expected by LoadBalancer::__construct, using a template and load array
-        *
-        * @param $template
-        * @param $loads array
-        * @param $groupLoads
-        * @return array
-        */
-       function makeServerArray( $template, $loads, $groupLoads ) {
-               $servers = array();
-               $master = true;
-               $groupLoadsByServer = $this->reindexGroupLoads( $groupLoads );
-               foreach ( $groupLoadsByServer as $server => $stuff ) {
-                       if ( !isset( $loads[$server] ) ) {
-                               $loads[$server] = 0;
-                       }
-               }
-               foreach ( $loads as $serverName => $load ) {
-                       $serverInfo = $template;
-                       if ( $master ) {
-                               $serverInfo['master'] = true;
-                               if ( isset( $this->masterTemplateOverrides ) ) {
-                                       $serverInfo = $this->masterTemplateOverrides + $serverInfo;
-                               }
-                               $master = false;
-                       }
-                       if ( isset( $this->templateOverridesByServer[$serverName] ) ) {
-                               $serverInfo = $this->templateOverridesByServer[$serverName] + $serverInfo;
-                       }
-                       if ( isset( $groupLoadsByServer[$serverName] ) ) {
-                               $serverInfo['groupLoads'] = $groupLoadsByServer[$serverName];
-                       }
-                       if ( isset( $this->hostsByName[$serverName] ) ) {
-                               $serverInfo['host'] = $this->hostsByName[$serverName];
-                       } else {
-                               $serverInfo['host'] = $serverName;
-                       }
-                       $serverInfo['hostName'] = $serverName;
-                       $serverInfo['load'] = $load;
-                       $servers[] = $serverInfo;
-               }
-
-               return $servers;
-       }
-
-       /**
-        * Take a group load array indexed by group then server, and reindex it by server then group
-        * @param $groupLoads
-        * @return array
-        */
-       function reindexGroupLoads( $groupLoads ) {
-               $reindexed = array();
-               foreach ( $groupLoads as $group => $loads ) {
-                       foreach ( $loads as $server => $load ) {
-                               $reindexed[$server][$group] = $load;
-                       }
-               }
-
-               return $reindexed;
-       }
-
-       /**
-        * Get the database name and prefix based on the wiki ID
-        * @param $wiki bool
-        * @return array
-        */
-       function getDBNameAndPrefix( $wiki = false ) {
-               if ( $wiki === false ) {
-                       global $wgDBname, $wgDBprefix;
-
-                       return array( $wgDBname, $wgDBprefix );
-               } else {
-                       return wfSplitWikiID( $wiki );
-               }
-       }
-
-       /**
-        * Execute a function for each tracked load balancer
-        * The callback is called with the load balancer as the first parameter,
-        * and $params passed as the subsequent parameters.
-        * @param $callback
-        * @param $params array
-        */
-       function forEachLB( $callback, $params = array() ) {
-               foreach ( $this->mainLBs as $lb ) {
-                       call_user_func_array( $callback, array_merge( array( $lb ), $params ) );
-               }
-               foreach ( $this->extLBs as $lb ) {
-                       call_user_func_array( $callback, array_merge( array( $lb ), $params ) );
-               }
-       }
-
-       function shutdown() {
-               foreach ( $this->mainLBs as $lb ) {
-                       $this->chronProt->shutdownLB( $lb );
-               }
-               foreach ( $this->extLBs as $extLB ) {
-                       $this->chronProt->shutdownLB( $extLB );
-               }
-               $this->chronProt->shutdown();
-               $this->commitMasterChanges();
-       }
-}
diff --git a/includes/db/LBFactory_Single.php b/includes/db/LBFactory_Single.php
deleted file mode 100644 (file)
index 7dca06d..0000000
+++ /dev/null
@@ -1,118 +0,0 @@
-<?php
-/**
- * Simple generator of database connections that always returns the same object.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- * http://www.gnu.org/copyleft/gpl.html
- *
- * @file
- * @ingroup Database
- */
-
-/**
- * An LBFactory class that always returns a single database object.
- */
-class LBFactory_Single extends LBFactory {
-       protected $lb;
-
-       /**
-        * @param array $conf An associative array with one member:
-        *  - connection: The DatabaseBase connection object
-        */
-       function __construct( $conf ) {
-               $this->lb = new LoadBalancer_Single( $conf );
-       }
-
-       /**
-        * @param $wiki bool|string
-        *
-        * @return LoadBalancer_Single
-        */
-       function newMainLB( $wiki = false ) {
-               return $this->lb;
-       }
-
-       /**
-        * @param $wiki bool|string
-        *
-        * @return LoadBalancer_Single
-        */
-       function getMainLB( $wiki = false ) {
-               return $this->lb;
-       }
-
-       /**
-        * @param $cluster
-        * @param $wiki bool|string
-        *
-        * @return LoadBalancer_Single
-        */
-       function newExternalLB( $cluster, $wiki = false ) {
-               return $this->lb;
-       }
-
-       /**
-        * @param $cluster
-        * @param $wiki bool|string
-        *
-        * @return LoadBalancer_Single
-        */
-       function &getExternalLB( $cluster, $wiki = false ) {
-               return $this->lb;
-       }
-
-       /**
-        * @param $callback string|array
-        * @param $params array
-        */
-       function forEachLB( $callback, $params = array() ) {
-               call_user_func_array( $callback, array_merge( array( $this->lb ), $params ) );
-       }
-}
-
-/**
- * Helper class for LBFactory_Single.
- */
-class LoadBalancer_Single extends LoadBalancer {
-
-       /**
-        * @var DatabaseBase
-        */
-       var $db;
-
-       /**
-        * @param $params array
-        */
-       function __construct( $params ) {
-               $this->db = $params['connection'];
-               parent::__construct( array( 'servers' => array( array(
-                       'type' => $this->db->getType(),
-                       'host' => $this->db->getServer(),
-                       'dbname' => $this->db->getDBname(),
-                       'load' => 1,
-               ) ) ) );
-       }
-
-       /**
-        *
-        * @param $server string
-        * @param $dbNameOverride bool
-        *
-        * @return DatabaseBase
-        */
-       function reallyOpenConnection( $server, $dbNameOverride = false ) {
-               return $this->db;
-       }
-}
index 9967cc0..7dcb88f 100644 (file)
@@ -72,9 +72,9 @@ class LoadBalancer {
                } else {
                        $master = reset( $params['servers'] );
                        if ( isset( $master['type'] ) && $master['type'] === 'mysql' ) {
-                               $this->mLoadMonitorClass = 'LoadMonitor_MySQL';
+                               $this->mLoadMonitorClass = 'LoadMonitorMySQL';
                        } else {
-                               $this->mLoadMonitorClass = 'LoadMonitor_Null';
+                               $this->mLoadMonitorClass = 'LoadMonitorNull';
                        }
                }
 
index b293531..5854456 100644 (file)
@@ -71,11 +71,7 @@ interface LoadMonitor {
        function getLagTimes( $serverIndexes, $wiki );
 }
 
-/**
- * @todo FIXME: Should be  LoadMonitorNull per naming conventions.
- * PHP CodeSniffer Squiz.Classes.ValidClassName.NotCamelCaps
- */
-class LoadMonitor_Null implements LoadMonitor {
+class LoadMonitorNull implements LoadMonitor {
        function __construct( $parent ) {
        }
 
@@ -100,10 +96,8 @@ class LoadMonitor_Null implements LoadMonitor {
  * Uses memcached to cache the replication lag for a short time
  *
  * @ingroup Database
- * @todo FIXME: Should be  LoadMonitorMySQL per naming conventions.
- * PHP CodeSniffer Squiz.Classes.ValidClassName.NotCamelCaps
  */
-class LoadMonitor_MySQL implements LoadMonitor {
+class LoadMonitorMySQL implements LoadMonitor {
        /**
         * @var LoadBalancer
         */
index 9cd7708..d5ed250 100644 (file)
@@ -218,6 +218,9 @@ class LinksUpdate extends SqlDataUpdate {
                $changed = $propertiesDeletes + array_diff_assoc( $this->mProperties, $existing );
                $this->invalidateProperties( $changed );
 
+               # Update the links table freshness for this title
+               $this->updateLinksTimestamp();
+
                # Refresh links of all pages including this page
                # This will be in a separate transaction
                if ( $this->mRecursive ) {
@@ -855,6 +858,19 @@ class LinksUpdate extends SqlDataUpdate {
 
                return $result;
        }
+
+       /**
+        * Update links table freshness
+        */
+       protected function updateLinksTimestamp() {
+               if ( $this->mId ) {
+                       $this->mDb->update( 'page',
+                               array( 'page_links_updated' => $this->mDb->timestamp() ),
+                               array( 'page_id' => $this->mId ),
+                               __METHOD__
+                       );
+               }
+       }
 }
 
 /**
index bac9f10..85592e8 100644 (file)
@@ -216,6 +216,11 @@ class SquidUpdate {
 
                // Remove duplicate URLs from collection
                $urlArr = array_unique( $urlArr );
+               // Get sequential trx IDs for packet loss counting
+               $ids = UIDGenerator::newSequentialPerNodeIDs(
+                       'squidhtcppurge', 32, count( $urlArr ), UIDGenerator::QUICK_VOLATILE
+               );
+
                foreach ( $urlArr as $url ) {
                        if ( !is_string( $url ) ) {
                                wfProfileOut( __METHOD__ );
@@ -243,7 +248,8 @@ class SquidUpdate {
                        // Construct a minimal HTCP request diagram
                        // as per RFC 2756
                        // Opcode 'CLR', no response desired, no auth
-                       $htcpTransID = rand();
+                       $htcpTransID = current( $ids );
+                       next( $ids );
 
                        $htcpSpecifier = pack( 'na4na*na8n',
                                4, 'HEAD', strlen( $url ), $url,
diff --git a/includes/filebackend/MemoryFileBackend.php b/includes/filebackend/MemoryFileBackend.php
new file mode 100644 (file)
index 0000000..3924c12
--- /dev/null
@@ -0,0 +1,258 @@
+<?php
+/**
+ * Simulation of a backend storage in memory.
+ *
+ * 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 FileBackend
+ * @author Aaron Schulz
+ */
+
+/**
+ * Simulation of a backend storage in memory.
+ *
+ * All data in the backend is automatically deleted at the end of PHP execution.
+ * Since the data stored here is volatile, this is only useful for staging or testing.
+ *
+ * @ingroup FileBackend
+ * @since 1.23
+ */
+class MemoryFileBackend extends FileBackendStore {
+       /** @var array Map of (file path => (data,mtime) */
+       protected $files = array();
+
+       public function isPathUsableInternal( $storagePath ) {
+               return true;
+       }
+
+       protected function doCreateInternal( array $params ) {
+               $status = Status::newGood();
+
+               $dst = $this->resolveHashKey( $params['dst'] );
+               if ( $dst === null ) {
+                       $status->fatal( 'backend-fail-invalidpath', $params['dst'] );
+                       return $status;
+               }
+
+               $this->files[$dst] = array(
+                       'data'  => $params['content'],
+                       'mtime' => wfTimestamp( TS_MW, time() )
+               );
+
+               return $status;
+       }
+
+       protected function doStoreInternal( array $params ) {
+               $status = Status::newGood();
+
+               $dst = $this->resolveHashKey( $params['dst'] );
+               if ( $dst === null ) {
+                       $status->fatal( 'backend-fail-invalidpath', $params['dst'] );
+                       return $status;
+               }
+
+               wfSuppressWarnings();
+               $data = file_get_contents( $params['src'] );
+               wfRestoreWarnings();
+               if ( $data === false ) { // source doesn't exist?
+                       $status->fatal( 'backend-fail-store', $params['src'], $params['dst'] );
+                       return $status;
+               }
+
+               $this->files[$dst] = array(
+                       'data'  => $data,
+                       'mtime' => wfTimestamp( TS_MW, time() )
+               );
+
+               return $status;
+       }
+
+       protected function doCopyInternal( array $params ) {
+               $status = Status::newGood();
+
+               $src = $this->resolveHashKey( $params['src'] );
+               if ( $src === null ) {
+                       $status->fatal( 'backend-fail-invalidpath', $params['src'] );
+                       return $status;
+               }
+
+               $dst = $this->resolveHashKey( $params['dst'] );
+               if ( $dst === null ) {
+                       $status->fatal( 'backend-fail-invalidpath', $params['dst'] );
+                       return $status;
+               }
+
+               if ( !isset( $this->files[$src] ) ) {
+                       if ( empty( $params['ignoreMissingSource'] ) ) {
+                               $status->fatal( 'backend-fail-copy', $params['src'], $params['dst'] );
+                       }
+                       return $status;
+               }
+
+               $this->files[$dst] = array(
+                       'data'  => $this->files[$src]['data'],
+                       'mtime' => wfTimestamp( TS_MW, time() )
+               );
+
+               return $status;
+       }
+
+       protected function doDeleteInternal( array $params ) {
+               $status = Status::newGood();
+
+               $src = $this->resolveHashKey( $params['src'] );
+               if ( $src === null ) {
+                       $status->fatal( 'backend-fail-invalidpath', $params['src'] );
+                       return $status;
+               }
+
+               if ( !isset( $this->files[$src] ) ) {
+                       if ( empty( $params['ignoreMissingSource'] ) ) {
+                               $status->fatal( 'backend-fail-delete', $params['src'] );
+                       }
+                       return $status;
+               }
+
+               unset( $this->files[$src] );
+
+               return $status;
+       }
+
+       protected function doGetFileStat( array $params ) {
+               $src = $this->resolveHashKey( $params['src'] );
+               if ( $src === null ) {
+                       return null;
+               }
+
+               if ( isset( $this->files[$src] ) ) {
+                       return array(
+                               'mtime' => $this->files[$src]['mtime'],
+                               'size'  => strlen( $this->files[$src]['data'] ),
+                       );
+               }
+
+               return false;
+       }
+
+       protected function doGetLocalCopyMulti( array $params ) {
+               $tmpFiles = array(); // (path => TempFSFile)
+               foreach ( $params['srcs'] as $srcPath ) {
+                       $src = $this->resolveHashKey( $srcPath );
+                       if ( $src === null || !isset( $this->files[$src] ) ) {
+                               $fsFile = null;
+                       } else {
+                               $fsFile = TempFSFile::factory( 'localcopy_' );
+                               if ( $fsFile ) {
+                                       $bytes = file_put_contents( $fsFile->getPath(), $this->files[$src]['data'] );
+                                       if ( $bytes !== strlen( $this->files[$src]['data'] ) ) {
+                                               $fsFile = null;
+                                       }
+                               }
+                       }
+                       $tmpFiles[$srcPath] = $fsFile;
+               }
+               return $tmpFiles;
+       }
+
+       protected function doStreamFile( array $params ) {
+               $status = Status::newGood();
+
+               $src = $this->resolveHashKey( $params['src'] );
+               if ( $src === null || !isset( $this->files[$src] ) ) {
+                       $status->fatal( 'backend-fail-stream', $params['src'] );
+                       return $status;
+               }
+
+               print $this->files[$src]['data'];
+
+               return $status;
+       }
+
+       protected function doDirectoryExists( $container, $dir, array $params ) {
+               $prefix = rtrim( "$container/$dir", '/' ) . '/';
+               foreach ( $this->files as $path => $data ) {
+                       if ( strpos( $path, $prefix ) === 0 ) {
+                               return true;
+                       }
+               }
+               return false;
+       }
+
+       public function getDirectoryListInternal( $container, $dir, array $params ) {
+               $dirs = array();
+               $prefix = rtrim( "$container/$dir", '/' ) . '/';
+               $prefixLen = strlen( $prefix );
+               foreach ( $this->files as $path => $data ) {
+                       if ( strpos( $path, $prefix ) === 0 ) {
+                               $relPath = substr( $path, $prefixLen );
+                               if ( $relPath === false ) {
+                                       continue;
+                               } elseif ( strpos( $relPath, '/' ) === false ) {
+                                       continue; // just a file
+                               }
+                               $parts = array_slice( explode( '/', $relPath ), 0, -1 ); // last part is file name
+                               if ( !empty( $params['topOnly'] ) ) {
+                                       $dirs[$parts[0]] = 1; // top directory
+                               } else {
+                                       $current = '';
+                                       foreach ( $parts as $part ) { // all directories
+                                               $dir = ( $current === '' ) ? $part : "$current/$part";
+                                               $dirs[$dir] = 1;
+                                               $current = $dir;
+                                       }
+                               }
+                       }
+               }
+               return array_keys( $dirs );
+       }
+
+       public function getFileListInternal( $container, $dir, array $params ) {
+               $files = array();
+               $prefix = rtrim( "$container/$dir", '/' ) . '/';
+               $prefixLen = strlen( $prefix );
+               foreach ( $this->files as $path => $data ) {
+                       if ( strpos( $path, $prefix ) === 0 ) {
+                               $relPath = substr( $path, $prefixLen );
+                               if ( $relPath === false ) {
+                                       continue;
+                               } elseif ( !empty( $params['topOnly'] ) && strpos( $relPath, '/' ) !== false ) {
+                                       continue;
+                               }
+                               $files[] = $relPath;
+                       }
+               }
+               return $files;
+       }
+
+       protected function directoriesAreVirtual() {
+               return true;
+       }
+
+       /**
+        * Get the absolute file system path for a storage path
+        *
+        * @param string $storagePath Storage path
+        * @return string|null
+        */
+       protected function resolveHashKey( $storagePath ) {
+               list( $fullCont, $relPath ) = $this->resolveStoragePathReal( $storagePath );
+               if ( $relPath === null ) {
+                       return null; // invalid
+               }
+               return ( $relPath !== '' ) ? "$fullCont/$relPath" : $fullCont;
+       }
+}
index 2df28bc..c5346aa 100644 (file)
@@ -275,15 +275,26 @@ class LocalRepo extends FileRepo {
                $applyMatchingFiles = function( ResultWrapper $res, &$searchSet, &$finalFiles )
                        use ( $repo, $fileMatchesSearch, $flags )
                {
+                       global $wgContLang;
+                       $info = $repo->getInfo();
                        foreach ( $res as $row ) {
                                $file = $repo->newFileFromRow( $row );
-                               $dbKey = $file->getTitle()->getDBkey();
-                               // There must have been a search for this exact DB Key
-                               if ( $fileMatchesSearch( $file, $searchSet[$dbKey] ) ) {
-                                       $finalFiles[$dbKey] = ( $flags & FileRepo::NAME_AND_TIME_ONLY )
-                                               ? array( 'title' => $dbKey, 'timestamp' => $file->getTimestamp() )
-                                               : $file;
-                                       unset( $searchSet[$dbKey] );
+                               // There must have been a search for this DB key, but this has to handle the
+                               // cases were title capitalization is different on the client and repo wikis.
+                               $dbKeysLook = array( str_replace( ' ', '_', $file->getName() ) );
+                               if ( !empty( $info['initialCapital'] ) ) {
+                                       // Search keys for "hi.png" and "Hi.png" should use the "Hi.png file"
+                                       $dbKeysLook[] = $wgContLang->lcfirst( $file->getName() );
+                               }
+                               foreach ( $dbKeysLook as $dbKey ) {
+                                       if ( isset( $searchSet[$dbKey])
+                                               && $fileMatchesSearch( $file, $searchSet[$dbKey] )
+                                       ) {
+                                               $finalFiles[$dbKey] = ( $flags & FileRepo::NAME_AND_TIME_ONLY )
+                                                       ? array( 'title' => $dbKey, 'timestamp' => $file->getTimestamp() )
+                                                       : $file;
+                                               unset( $searchSet[$dbKey] );
+                                       }
                                }
                        }
                };
index 0d86c70..26699c4 100644 (file)
@@ -451,25 +451,36 @@ class ArchivedFile {
        }
 
        /**
-        * Return the user ID of the uploader.
+        * Returns ID or name of user who uploaded the file
         *
-        * @return int
+        * @note Prior to MediaWiki 1.23, this method always
+        *   returned the user id, and was inconsistent with
+        *   the rest of the file classes.
+        * @param string $type 'text' or 'id'
+        * @return int|string
+        * @throws MWException
         */
-       public function getUser() {
+       public function getUser( $type = 'text' ) {
                $this->load();
-               if ( $this->isDeleted( File::DELETED_USER ) ) {
-                       return 0;
-               } else {
+
+               if ( $type == 'text' ) {
+                       return $this->user_text;
+               } elseif ( $type == 'id' ) {
                        return $this->user;
                }
+
+               throw new MWException( "Unknown type '$type'." );
+
        }
 
        /**
         * Return the user name of the uploader.
         *
+        * @deprecated 1.23 Use getUser( 'text' ) instead.
         * @return string
         */
        public function getUserText() {
+               wfDeprecated( __METHOD__, '1.23' );
                $this->load();
                if ( $this->isDeleted( File::DELETED_USER ) ) {
                        return 0;
index 5621b01..0aea070 100644 (file)
@@ -700,7 +700,10 @@ class HTMLForm extends ContextSource {
                $this->getOutput()->preventClickjacking();
                $this->getOutput()->addModules( 'mediawiki.htmlform' );
                if ( $this->isVForm() ) {
-                       $this->getOutput()->addModuleStyles( 'mediawiki.ui' );
+                       $this->getOutput()->addModuleStyles( array(
+                               'mediawiki.ui',
+                               'mediawiki.ui.button',
+                       ) );
                        // @todo Should vertical form set setWrapperLegend( false )
                        // to hide ugly fieldsets?
                }
index b4f2194..321884b 100644 (file)
@@ -260,7 +260,7 @@ abstract class DatabaseInstaller {
                if ( !$status->isOK() ) {
                        throw new MWException( __METHOD__ . ': unexpected DB connection error' );
                }
-               LBFactory::setInstance( new LBFactory_Single( array(
+               LBFactory::setInstance( new LBFactorySingle( array(
                        'connection' => $status->value ) ) );
        }
 
index 515cedb..68664c9 100644 (file)
@@ -288,7 +288,7 @@ ${serverSetting}
 
 ## The relative URL path to the logo.  Make sure you change this from the default,
 ## or else you'll overwrite your logo when you upgrade!
-\$wgLogo             = \"{$this->values['wgLogo']}\";
+\$wgLogo = \"{$this->values['wgLogo']}\";
 
 ## UPO means: this is also a user preference option
 
index 01ee060..9dfbff8 100644 (file)
@@ -246,6 +246,9 @@ class MysqlUpdater extends DatabaseUpdater {
 
                        // 1.23
                        array( 'addField', 'recentchanges', 'rc_source', 'patch-rc_source.sql' ),
+                       array( 'addIndex', 'logging', 'log_user_text_type_time',  'patch-logging_user_text_type_time_index.sql' ),
+                       array( 'addIndex', 'logging', 'log_user_text_time',  'patch-logging_user_text_time_index.sql' ),
+                       array( 'addField', 'page', 'page_links_updated', 'patch-page_links_updated.sql' ),
                );
        }
 
@@ -391,6 +394,16 @@ class MysqlUpdater extends DatabaseUpdater {
                                'wl_notificationtimestamp' => 'wl_notificationtimestamp'
                        ), array( 'NOT (wl_namespace & 1)' ), __METHOD__, 'IGNORE' );
                $this->output( "done.\n" );
+
+               $this->output( "Adding missing watchlist subject page rows... " );
+               $this->db->insertSelect( 'watchlist', 'watchlist',
+                       array(
+                               'wl_user' => 'wl_user',
+                               'wl_namespace' => 'wl_namespace & ~1',
+                               'wl_title' => 'wl_title',
+                               'wl_notificationtimestamp' => 'wl_notificationtimestamp'
+                       ), array( 'wl_namespace & 1' ), __METHOD__, 'IGNORE' );
+               $this->output( "done.\n" );
        }
 
        function doSchemaRestructuring() {
index 7b6f49c..88e5fbd 100644 (file)
@@ -93,6 +93,10 @@ class OracleUpdater extends DatabaseUpdater {
                        array( 'modifyField', 'user_former_groups', 'ufg_group',
                                'patch-ufg_group-length-increase-255.sql' ),
 
+                       //1.23
+                       array( 'addIndex', 'logging', 'i06',  'patch-logging_user_text_type_time_index.sql' ),
+                       array( 'addIndex', 'logging', 'i07',  'patch-logging_user_text_time_index.sql' ),
+
                        // KEEP THIS AT THE BOTTOM!!
                        array( 'doRebuildDuplicateFunction' ),
 
index 3ecb79b..fa58a62 100644 (file)
@@ -259,6 +259,8 @@ class PostgresUpdater extends DatabaseUpdater {
                        array( 'addPgIndex', 'job', 'job_cmd_token', '(job_cmd, job_token, job_random)' ),
                        array( 'addPgIndex', 'job', 'job_cmd_token_id', '(job_cmd, job_token, job_id)' ),
                        array( 'addPgIndex', 'filearchive', 'fa_sha1', '(fa_sha1)' ),
+                       array( 'addPgIndex', 'logging', 'logging_user_text_type_time', '(log_user_text, log_type, log_timestamp)' ),
+                       array( 'addPgIndex', 'logging', 'logging_user_text_time', '(log_user_text, log_timestamp)' ),
 
                        array( 'checkIndex', 'pagelink_unique', array(
                                array( 'pl_from', 'int4_ops', 'btree', 0 ),
@@ -400,6 +402,7 @@ class PostgresUpdater extends DatabaseUpdater {
 
                        // 1.23
                        array( 'addPgField', 'recentchanges', 'rc_source', "TEXT NOT NULL DEFAULT ''" ),
+                       array( 'addPgField', 'page', 'page_links_updated', "TIMESTAMPTZ NULL" ),
                );
        }
 
index e0ed1ec..3db3758 100644 (file)
@@ -123,6 +123,9 @@ class SqliteUpdater extends DatabaseUpdater {
 
                        // 1.23
                        array( 'addField', 'recentchanges', 'rc_source', 'patch-rc_source.sql' ),
+                       array( 'addIndex', 'logging', 'log_user_text_type_time',  'patch-logging_user_text_type_time_index.sql' ),
+                       array( 'addIndex', 'logging', 'log_user_text_time',  'patch-logging_user_text_time_index.sql' ),
+                       array( 'addField', 'page', 'page_links_updated', 'patch-page_links_updated.sql' ),
                );
        }
 
index 00a4ff8..25634ba 100644 (file)
@@ -117,7 +117,8 @@ class WebInstallerOutput {
                // and loaded as one file.
                $moduleNames = array(
                        'mediawiki.legacy.shared',
-                       'skins.vector',
+                       'skins.common.interface',
+                       'skins.vector.styles',
                        'mediawiki.legacy.config',
                );
 
index 1c95d9a..aa324de 100644 (file)
@@ -454,7 +454,9 @@ class WebInstaller_Welcome extends WebInstallerPage {
 }
 
 class WebInstaller_DBConnect extends WebInstallerPage {
-
+       /**
+        * @return string|void When string, "skip" or "continue"
+        */
        public function execute() {
                if ( $this->getVar( '_ExistingDBSettings' ) ) {
                        return 'skip';
index e33baf5..067ede1 100644 (file)
@@ -28,9 +28,6 @@
  * @ingroup JobQueue
  */
 abstract class Job {
-       /** @var int Job identifier */
-       public $id;
-
        /** @var string */
        public $command;
 
@@ -69,16 +66,15 @@ abstract class Job {
         * @param string $command Job command
         * @param Title $title Associated title
         * @param array|bool $params Job parameters
-        * @param int $id Job identifier
         * @throws MWException
         * @return Job
         */
-       public static function factory( $command, Title $title, $params = false, $id = 0 ) {
+       public static function factory( $command, Title $title, $params = false ) {
                global $wgJobClasses;
                if ( isset( $wgJobClasses[$command] ) ) {
                        $class = $wgJobClasses[$command];
 
-                       return new $class( $title, $params, $id );
+                       return new $class( $title, $params );
                }
                throw new MWException( "Invalid job command `{$command}`" );
        }
@@ -145,26 +141,16 @@ abstract class Job {
         * @param $command
         * @param $title
         * @param $params array|bool
-        * @param $id int
         */
-       public function __construct( $command, $title, $params = false, $id = 0 ) {
+       public function __construct( $command, $title, $params = false ) {
                $this->command = $command;
                $this->title = $title;
                $this->params = $params;
-               $this->id = $id;
 
                // expensive jobs may set this to true
                $this->removeDuplicates = false;
        }
 
-       /**
-        * @return int May be 0 for jobs stored outside the DB
-        * @deprecated since 1.22
-        */
-       public function getId() {
-               return $this->id;
-       }
-
        /**
         * @return string
         */
@@ -211,6 +197,15 @@ abstract class Job {
                return true;
        }
 
+       /**
+        * @return integer Number of actually "work items" handled in this job
+        * @see $wgJobBackoffThrottling
+        * @since 1.23
+        */
+       public function workItemCount() {
+               return 1;
+       }
+
        /**
         * Subclasses may need to override this to make duplication detection work.
         * The resulting map conveys everything that makes the job unique. This is
index b795695..e7a269a 100644 (file)
@@ -324,7 +324,6 @@ class JobQueueDB extends JobQueue {
                                $job = Job::factory( $row->job_cmd, $title,
                                        self::extractBlob( $row->job_params ), $row->job_id );
                                $job->metadata['id'] = $row->job_id;
-                               $job->id = $row->job_id; // XXX: work around broken subclasses
                                break; // done
                        } while ( true );
                } catch ( DBError $e ) {
@@ -359,7 +358,7 @@ class JobQueueDB extends JobQueue {
                                // Instead, this uses job_random to pick a row (possibly checking both directions).
                                $ineq = $gte ? '>=' : '<=';
                                $dir = $gte ? 'ASC' : 'DESC';
-                               $row = $dbw->selectRow( 'job', '*', // find a random job
+                               $row = $dbw->selectRow( 'job', self::selectFields(), // find a random job
                                        array(
                                                'job_cmd' => $this->type,
                                                'job_token' => '', // unclaimed
@@ -376,7 +375,7 @@ class JobQueueDB extends JobQueue {
                                // Bug 42614: "ORDER BY job_random" with a job_random inequality causes high CPU
                                // in MySQL if there are many rows for some reason. This uses a small OFFSET
                                // instead of job_random for reducing excess claim retries.
-                               $row = $dbw->selectRow( 'job', '*', // find a random job
+                               $row = $dbw->selectRow( 'job', self::selectFields(), // find a random job
                                        array(
                                                'job_cmd' => $this->type,
                                                'job_token' => '', // unclaimed
@@ -460,7 +459,7 @@ class JobQueueDB extends JobQueue {
                        }
                        // Fetch any row that we just reserved...
                        if ( $dbw->affectedRows() ) {
-                               $row = $dbw->selectRow( 'job', '*',
+                               $row = $dbw->selectRow( 'job', self::selectFields(),
                                        array( 'job_cmd' => $this->type, 'job_token' => $uuid ), __METHOD__
                                );
                                if ( !$row ) { // raced out by duplicate job removal
@@ -590,17 +589,15 @@ class JobQueueDB extends JobQueue {
                $dbr = $this->getSlaveDB();
                try {
                        return new MappedIterator(
-                               $dbr->select( 'job', '*',
+                               $dbr->select( 'job', self::selectFields(),
                                        array( 'job_cmd' => $this->getType(), 'job_token' => '' ) ),
                                function ( $row ) use ( $dbr ) {
                                        $job = Job::factory(
                                                $row->job_cmd,
                                                Title::makeTitle( $row->job_namespace, $row->job_title ),
-                                               strlen( $row->job_params ) ? unserialize( $row->job_params ) : false,
-                                               $row->job_id
+                                               strlen( $row->job_params ) ? unserialize( $row->job_params ) : false
                                        );
                                        $job->metadata['id'] = $row->job_id;
-                                       $job->id = $row->job_id; // XXX: work around broken subclasses
                                        return $job;
                                }
                        );
@@ -827,4 +824,25 @@ class JobQueueDB extends JobQueue {
        protected function throwDBException( DBError $e ) {
                throw new JobQueueError( get_class( $e ) . ": " . $e->getMessage() );
        }
+
+       /**
+        * Return the list of job fields that should be selected.
+        * @since 1.23
+        * @return array
+        */
+       public static function selectFields() {
+               return array(
+                       'job_id',
+                       'job_cmd',
+                       'job_namespace',
+                       'job_title',
+                       'job_timestamp',
+                       'job_params',
+                       'job_random',
+                       'job_attempts',
+                       'job_token',
+                       'job_token_timestamp',
+                       'job_sha1',
+               );
+       }
 }
index 589bed6..9502148 100644 (file)
@@ -150,21 +150,20 @@ class JobQueueFederated extends JobQueue {
                        return false;
                }
 
+               $empty = true;
+               $failed = 0;
                foreach ( $this->partitionQueues as $queue ) {
                        try {
-                               if ( !$queue->doIsEmpty() ) {
-                                       $this->cache->add( $key, 'false', self::CACHE_TTL_LONG );
-
-                                       return false;
-                               }
+                               $empty = $empty && $queue->doIsEmpty();
                        } catch ( JobQueueError $e ) {
+                               ++$failed;
                                MWExceptionHandler::logException( $e );
                        }
                }
+               $this->throwErrorIfAllPartitionsDown( $failed );
 
-               $this->cache->add( $key, 'true', self::CACHE_TTL_LONG );
-
-               return true;
+               $this->cache->add( $key, $empty ? 'true' : 'false', self::CACHE_TTL_LONG );
+               return $empty;
        }
 
        protected function doGetSize() {
@@ -196,14 +195,16 @@ class JobQueueFederated extends JobQueue {
                        return $count;
                }
 
-               $count = 0;
+               $failed = 0;
                foreach ( $this->partitionQueues as $queue ) {
                        try {
                                $count += $queue->$method();
                        } catch ( JobQueueError $e ) {
+                               ++$failed;
                                MWExceptionHandler::logException( $e );
                        }
                }
+               $this->throwErrorIfAllPartitionsDown( $failed );
 
                $this->cache->set( $key, $count, self::CACHE_TTL_SHORT );
 
@@ -275,7 +276,7 @@ class JobQueueFederated extends JobQueue {
                        } else {
                                $partitionRing = $partitionRing->newWithoutLocation( $partition ); // blacklist
                                if ( !$partitionRing ) {
-                                       throw new JobQueueError( "Could not insert job(s), all partitions are down." );
+                                       throw new JobQueueError( "Could not insert job(s), no partitions available." );
                                }
                                $jobsLeft = array_merge( $jobsLeft, $jobBatch ); // not inserted
                        }
@@ -297,7 +298,7 @@ class JobQueueFederated extends JobQueue {
                        } else {
                                $partitionRing = $partitionRing->newWithoutLocation( $partition ); // blacklist
                                if ( !$partitionRing ) {
-                                       throw new JobQueueError( "Could not insert job(s), all partitions are down." );
+                                       throw new JobQueueError( "Could not insert job(s), no partitions available." );
                                }
                                $jobsLeft = array_merge( $jobsLeft, $jobBatch ); // not inserted
                        }
@@ -316,6 +317,7 @@ class JobQueueFederated extends JobQueue {
 
                $partitionsTry = $this->partitionMap; // (partition => weight)
 
+               $failed = 0;
                while ( count( $partitionsTry ) ) {
                        $partition = ArrayUtils::pickRandom( $partitionsTry );
                        if ( $partition === false ) {
@@ -327,8 +329,9 @@ class JobQueueFederated extends JobQueue {
                        try {
                                $job = $queue->pop();
                        } catch ( JobQueueError $e ) {
-                               $job = false;
+                               ++$failed;
                                MWExceptionHandler::logException( $e );
+                               $job = false;
                        }
                        if ( $job ) {
                                $job->metadata['QueuePartition'] = $partition;
@@ -338,6 +341,7 @@ class JobQueueFederated extends JobQueue {
                                unset( $partitionsTry[$partition] ); // blacklist partition
                        }
                }
+               $this->throwErrorIfAllPartitionsDown( $failed );
 
                $this->cache->set( $key, 'true', JobQueueDB::CACHE_TTL_LONG );
 
@@ -381,25 +385,32 @@ class JobQueueFederated extends JobQueue {
        }
 
        protected function doDelete() {
+               $failed = 0;
                /** @var JobQueue $queue */
                foreach ( $this->partitionQueues as $queue ) {
                        try {
                                $queue->doDelete();
                        } catch ( JobQueueError $e ) {
+                               ++$failed;
                                MWExceptionHandler::logException( $e );
                        }
                }
+               $this->throwErrorIfAllPartitionsDown( $failed );
+               return true;
        }
 
        protected function doWaitForBackups() {
+               $failed = 0;
                /** @var JobQueue $queue */
                foreach ( $this->partitionQueues as $queue ) {
                        try {
                                $queue->waitForBackups();
                        } catch ( JobQueueError $e ) {
+                               ++$failed;
                                MWExceptionHandler::logException( $e );
                        }
                }
+               $this->throwErrorIfAllPartitionsDown( $failed );
        }
 
        protected function doGetPeriodicTasks() {
@@ -463,6 +474,7 @@ class JobQueueFederated extends JobQueue {
        protected function doGetSiblingQueuesWithJobs( array $types ) {
                $result = array();
 
+               $failed = 0;
                /** @var JobQueue $queue */
                foreach ( $this->partitionQueues as $queue ) {
                        try {
@@ -476,16 +488,18 @@ class JobQueueFederated extends JobQueue {
                                        break; // short-circuit
                                }
                        } catch ( JobQueueError $e ) {
+                               ++$failed;
                                MWExceptionHandler::logException( $e );
                        }
                }
+               $this->throwErrorIfAllPartitionsDown( $failed );
 
                return array_values( $result );
        }
 
        protected function doGetSiblingQueueSizes( array $types ) {
                $result = array();
-
+               $failed = 0;
                /** @var JobQueue $queue */
                foreach ( $this->partitionQueues as $queue ) {
                        try {
@@ -498,13 +512,28 @@ class JobQueueFederated extends JobQueue {
                                        return null; // not supported on all partitions; bail
                                }
                        } catch ( JobQueueError $e ) {
+                               ++$failed;
                                MWExceptionHandler::logException( $e );
                        }
                }
+               $this->throwErrorIfAllPartitionsDown( $failed );
 
                return $result;
        }
 
+       /**
+        * Throw an error if no partitions available
+        *
+        * @param int $down The number of up partitions down
+        * @return void
+        * @throws JobQueueError
+        */
+       protected function throwErrorIfAllPartitionsDown( $down ) {
+               if ( $down >= count( $this->partitionQueues ) ) {
+                       throw new JobQueueError( 'No queue partitions available.' );
+               }
+       }
+
        public function setTestingPrefix( $key ) {
                /** @var JobQueue $queue */
                foreach ( $this->partitionQueues as $queue ) {
index 4f11bbf..d71df15 100644 (file)
@@ -44,7 +44,6 @@ class JobQueueGroup {
        const TYPE_ANY = 2; // integer; any job
 
        const USE_CACHE = 1; // integer; use process or persistent cache
-       const USE_PRIORITY = 2; // integer; respect deprioritization
 
        const PROC_CACHE_TTL = 15; // integer; seconds
 
@@ -149,21 +148,21 @@ class JobQueueGroup {
         * This pops a job off a queue as specified by $wgJobTypeConf and
         * updates the aggregate job queue information cache as needed.
         *
-        * @param int|string $qtype JobQueueGroup::TYPE_DEFAULT or type string
+        * @param int|string $qtype JobQueueGroup::TYPE_* constant or job type string
         * @param int $flags Bitfield of JobQueueGroup::USE_* constants
+        * @param array $blacklist List of job types to ignore
         * @return Job|bool Returns false on failure
         */
-       public function pop( $qtype = self::TYPE_DEFAULT, $flags = 0 ) {
+       public function pop( $qtype = self::TYPE_DEFAULT, $flags = 0, array $blacklist = array() ) {
+               $job = false;
+
                if ( is_string( $qtype ) ) { // specific job type
-                       if ( ( $flags & self::USE_PRIORITY ) && $this->isQueueDeprioritized( $qtype ) ) {
-                               return false; // back off
-                       }
-                       $job = $this->get( $qtype )->pop();
-                       if ( !$job ) {
-                               JobQueueAggregator::singleton()->notifyQueueEmpty( $this->wiki, $qtype );
+                       if ( !in_array( $qtype, $blacklist ) ) {
+                               $job = $this->get( $qtype )->pop();
+                               if ( !$job ) {
+                                       JobQueueAggregator::singleton()->notifyQueueEmpty( $this->wiki, $qtype );
+                               }
                        }
-
-                       return $job;
                } else { // any job in the "default" jobs types
                        if ( $flags & self::USE_CACHE ) {
                                if ( !$this->cache->has( 'queues-ready', 'list', self::PROC_CACHE_TTL ) ) {
@@ -177,23 +176,22 @@ class JobQueueGroup {
                        if ( $qtype == self::TYPE_DEFAULT ) {
                                $types = array_intersect( $types, $this->getDefaultQueueTypes() );
                        }
+
+                       $types = array_diff( $types, $blacklist ); // avoid selected types
                        shuffle( $types ); // avoid starvation
 
                        foreach ( $types as $type ) { // for each queue...
-                               if ( ( $flags & self::USE_PRIORITY ) && $this->isQueueDeprioritized( $type ) ) {
-                                       continue; // back off
-                               }
                                $job = $this->get( $type )->pop();
                                if ( $job ) { // found
-                                       return $job;
+                                       break;
                                } else { // not found
                                        JobQueueAggregator::singleton()->notifyQueueEmpty( $this->wiki, $type );
                                        $this->cache->clear( 'queues-ready' );
                                }
                        }
-
-                       return false; // no jobs found
                }
+
+               return $job;
        }
 
        /**
@@ -330,32 +328,6 @@ class JobQueueGroup {
                return $this->coalescedQueues;
        }
 
-       /**
-        * Check if jobs should not be popped of a queue right now.
-        * This is only used for performance, such as to avoid spamming
-        * the queue with many sub-jobs before they actually get run.
-        *
-        * @param string $type
-        * @return bool
-        */
-       public function isQueueDeprioritized( $type ) {
-               if ( $this->cache->has( 'isDeprioritized', $type, 5 ) ) {
-                       return $this->cache->get( 'isDeprioritized', $type );
-               }
-               if ( $type === 'refreshLinks2' ) {
-                       // Don't keep converting refreshLinksPartition => refreshLinks jobs if the
-                       // later jobs have not been done yet. This helps throttle queue spam.
-                       // @TODO: this is mostly a WMF-specific hack and should be removed when
-                       // refreshLinks2 jobs are drained.
-                       $deprioritized = $this->get( 'refreshLinks' )->getSize() > 10000;
-                       $this->cache->set( 'isDeprioritized', $type, $deprioritized );
-
-                       return $deprioritized;
-               }
-
-               return false;
-       }
-
        /**
         * Execute any due periodic queue maintenance tasks for all queues.
         *
@@ -392,6 +364,10 @@ class JobQueueGroup {
                                        }
                                }
                        }
+                       // The tasks may have recycled jobs or release delayed jobs into the queue
+                       if ( isset( $tasksRun[$type] ) && !$queue->isEmpty() ) {
+                               JobQueueAggregator::singleton()->notifyQueueNonEmpty( $this->wiki, $type );
+                       }
                }
 
                $wgMemc->merge( $key, function ( $cache, $key, $lastRuns ) use ( $tasksRun ) {
index 057a587..c654933 100644 (file)
@@ -104,10 +104,12 @@ class JobQueueAggregatorRedis extends JobQueueAggregator {
                                }
                        } else { // cache miss
                                // Avoid duplicated effort
+                               $rand = wfRandomString( 32 );
                                $conn->multi( Redis::MULTI );
-                               $conn->setnx( $this->getReadyQueueKey() . ":lock", 1 );
-                               $conn->expire( $this->getReadyQueueKey() . ":lock", 3600 );
+                               $conn->setex( "{$rand}:lock", 3600, 1 );
+                               $conn->renamenx( "{$rand}:lock", $this->getReadyQueueKey() . ":lock" );
                                if ( $conn->exec() !== array( true, true ) ) { // lock
+                                       $conn->delete( "{$rand}:lock" );
                                        return array(); // already in progress
                                }
 
index eff16b9..19b0558 100644 (file)
@@ -27,8 +27,8 @@
  * @ingroup Upload
  */
 class AssembleUploadChunksJob extends Job {
-       public function __construct( $title, $params, $id = 0 ) {
-               parent::__construct( 'AssembleUploadChunks', $title, $params, $id );
+       public function __construct( $title, $params ) {
+               parent::__construct( 'AssembleUploadChunks', $title, $params );
                $this->removeDuplicates = true;
        }
 
index f5f0d63..94b56ef 100644 (file)
@@ -86,8 +86,8 @@ class DoubleRedirectJob extends Job {
         * @param array|bool $params
         * @param int $id
         */
-       function __construct( $title, $params = false, $id = 0 ) {
-               parent::__construct( 'fixDoubleRedirect', $title, $params, $id );
+       function __construct( $title, $params = false ) {
+               parent::__construct( 'fixDoubleRedirect', $title, $params );
                $this->reason = $params['reason'];
                $this->redirTitle = Title::newFromText( $params['redirTitle'] );
        }
@@ -197,7 +197,7 @@ class DoubleRedirectJob extends Job {
                        }
                        $seenTitles[$titleText] = true;
 
-                       if ( $title->getInterwiki() ) {
+                       if ( $title->isExternal() ) {
                                // If the target is interwiki, we have to break early (bug 40352).
                                // Otherwise it will look up a row in the local page table
                                // with the namespace/page of the interwiki target which can cause
index 7e5bd3c..b0a6ef7 100644 (file)
@@ -32,10 +32,9 @@ final class DuplicateJob extends Job {
         *
         * @param Title $title
         * @param array $params job parameters
-        * @param $id Integer: job id
         */
-       function __construct( $title, $params, $id = 0 ) {
-               parent::__construct( 'duplicate', $title, $params, $id );
+       function __construct( $title, $params ) {
+               parent::__construct( 'duplicate', $title, $params );
        }
 
        /**
@@ -45,7 +44,7 @@ final class DuplicateJob extends Job {
         * @return Job
         */
        public static function newFromJob( Job $job ) {
-               $djob = new self( $job->getTitle(), $job->getParams(), $job->id );
+               $djob = new self( $job->getTitle(), $job->getParams() );
                $djob->command = $job->getType();
                $djob->params = is_array( $djob->params ) ? $djob->params : array();
                $djob->params = array( 'isDuplicate' => true ) + $djob->params;
index f24cebb..df8ae63 100644 (file)
@@ -28,8 +28,8 @@
  * @ingroup JobQueue
  */
 class EmaillingJob extends Job {
-       function __construct( $title, $params, $id = 0 ) {
-               parent::__construct( 'sendMail', Title::newMainPage(), $params, $id );
+       function __construct( $title, $params ) {
+               parent::__construct( 'sendMail', Title::newMainPage(), $params );
        }
 
        function run() {
index 97a7af6..1ed99a5 100644 (file)
@@ -27,8 +27,8 @@
  * @ingroup JobQueue
  */
 class EnotifNotifyJob extends Job {
-       function __construct( $title, $params, $id = 0 ) {
-               parent::__construct( 'enotifNotify', $title, $params, $id );
+       function __construct( $title, $params ) {
+               parent::__construct( 'enotifNotify', $title, $params );
        }
 
        function run() {
index 0415906..61d100c 100644 (file)
@@ -33,8 +33,8 @@
  * @ingroup JobQueue
  */
 class HTMLCacheUpdateJob extends Job {
-       function __construct( $title, $params = '', $id = 0 ) {
-               parent::__construct( 'htmlCacheUpdate', $title, $params, $id );
+       function __construct( $title, $params = '' ) {
+               parent::__construct( 'htmlCacheUpdate', $title, $params );
                // Base backlink purge jobs can be de-duplicated
                $this->removeDuplicates = ( !isset( $params['range'] ) && !isset( $params['pages'] ) );
        }
@@ -154,4 +154,8 @@ class HTMLCacheUpdateJob extends Job {
                        }
                }
        }
+
+       public function workItemCount() {
+               return isset( $this->params['pages'] ) ? count( $this->params['pages'] ) : 1;
+       }
 }
index f62419c..b2d6a9a 100644 (file)
@@ -48,10 +48,9 @@ class NullJob extends Job {
        /**
         * @param Title $title
         * @param array $params job parameters (lives, usleep)
-        * @param int $id Job id
         */
-       function __construct( $title, $params, $id = 0 ) {
-               parent::__construct( 'null', $title, $params, $id );
+       function __construct( $title, $params ) {
+               parent::__construct( 'null', $title, $params );
                if ( !isset( $this->params['lives'] ) ) {
                        $this->params['lives'] = 1;
                }
index 88ac9cf..d7667f3 100644 (file)
@@ -27,8 +27,8 @@
  * @ingroup Upload
  */
 class PublishStashedFileJob extends Job {
-       public function __construct( $title, $params, $id = 0 ) {
-               parent::__construct( 'PublishStashedFile', $title, $params, $id );
+       public function __construct( $title, $params ) {
+               parent::__construct( 'PublishStashedFile', $title, $params );
                $this->removeDuplicates = true;
        }
 
index c94db75..78ac84d 100644 (file)
@@ -35,8 +35,8 @@
  * @ingroup JobQueue
  */
 class RefreshLinksJob extends Job {
-       function __construct( $title, $params = '', $id = 0 ) {
-               parent::__construct( 'refreshLinks', $title, $params, $id );
+       function __construct( $title, $params = '' ) {
+               parent::__construct( 'refreshLinks', $title, $params );
                // Base backlink update jobs and per-title update jobs can be de-duplicated.
                // If template A changes twice before any jobs run, a clean queue will have:
                //              (A base, A base)
@@ -133,6 +133,10 @@ class RefreshLinksJob extends Job {
                if ( isset( $this->params['rootJobTimestamp'] ) ) {
                        $page = WikiPage::factory( $title );
                        $skewedTimestamp = wfTimestamp( TS_UNIX, $this->params['rootJobTimestamp'] ) + 5;
+                       if ( $page->getLinksTimestamp() > wfTimestamp( TS_MW, $skewedTimestamp ) ) {
+                               // Something already updated the backlinks since this job was made
+                               return true;
+                       }
                        if ( $page->getTouched() > wfTimestamp( TS_MW, $skewedTimestamp ) ) {
                                $parserOptions = $page->makeParserOptions( 'canonical' );
                                $parserOutput = ParserCache::singleton()->getDirty( $page, $parserOptions );
@@ -170,4 +174,8 @@ class RefreshLinksJob extends Job {
 
                return $info;
        }
+
+       public function workItemCount() {
+               return isset( $this->params['pages'] ) ? count( $this->params['pages'] ) : 1;
+       }
 }
index 332f625..77e3b3f 100644 (file)
@@ -29,8 +29,8 @@
  * @deprecated 1.23
  */
 class RefreshLinksJob2 extends Job {
-       function __construct( $title, $params, $id = 0 ) {
-               parent::__construct( 'refreshLinks2', $title, $params, $id );
+       function __construct( $title, $params ) {
+               parent::__construct( 'refreshLinks2', $title, $params );
                // Base jobs for large templates can easily be de-duplicated
                $this->removeDuplicates = !isset( $params['start'] ) && !isset( $params['end'] );
        }
index 15d523f..2cdac57 100644 (file)
@@ -39,8 +39,8 @@ class UploadFromUrlJob extends Job {
        /** @var User */
        protected $user;
 
-       public function __construct( $title, $params, $id = 0 ) {
-               parent::__construct( 'uploadFromUrl', $title, $params, $id );
+       public function __construct( $title, $params ) {
+               parent::__construct( 'uploadFromUrl', $title, $params );
        }
 
        public function run() {
index 3c84472..318448a 100644 (file)
@@ -53,6 +53,7 @@ class CSSMin {
                'tif' => 'image/tiff',
                'tiff' => 'image/tiff',
                'xbm' => 'image/x-xbitmap',
+               'svg' => 'image/svg+xml',
        );
 
        /* Static Methods */
diff --git a/includes/libs/MWMessagePack.php b/includes/libs/MWMessagePack.php
new file mode 100644 (file)
index 0000000..c61e8f8
--- /dev/null
@@ -0,0 +1,188 @@
+<?php
+/**
+ * MessagePack serializer
+ *
+ * MessagePack is a space-efficient binary data interchange format. This
+ * class provides a pack() method that encodes native PHP values as MessagePack
+ * binary strings. The implementation is derived from msgpack-php.
+ *
+ * Copyright (c) 2013 Ori Livneh <ori@wikimedia.org>
+ * Copyright (c) 2011 OnlineCity <https://github.com/onlinecity/msgpack-php>.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to
+ * deal in the Software without restriction, including without limitation the
+ * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+ * sell copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+ * IN THE SOFTWARE.
+ *
+ * @see <http://msgpack.org/>
+ * @see <http://wiki.msgpack.org/display/MSGPACK/Format+specification>
+ *
+ * @since 1.23
+ * @file
+ */
+class MWMessagePack {
+
+       /** @var boolean|null Whether current system is bigendian. **/
+       public static $bigendian = null;
+
+       /**
+        * Encode a value using MessagePack
+        *
+        * This method supports null, boolean, integer, float, string and array
+        * (both indexed and associative) types. Object serialization is not
+        * supported.
+        *
+        * @param mixed $value
+        * @return string
+        * @throws InvalidArgumentException if $value is an unsupported type or too long a string
+        */
+       public static function pack( $value ) {
+               if ( self::$bigendian === null ) {
+                       self::$bigendian = pack( 'S', 1 ) === pack( 'n', 1 );
+               }
+
+               switch ( gettype( $value ) ) {
+               case 'NULL':
+                       return "\xC0";
+
+               case 'boolean':
+                       return $value ? "\xC3" : "\xC2";
+
+               case 'double':
+               case 'float':
+                       return self::$bigendian
+                               ? "\xCB" . pack( 'd', $value )
+                               : "\xCB" . strrev( pack( 'd', $value ) );
+
+               case 'string':
+                       $length = strlen( $value );
+                       if ( $length < 32 ) {
+                               return pack( 'Ca*', 0xA0 | $length, $value );
+                       } elseif ( $length <= 0xFFFF ) {
+                               return pack( 'Cna*', 0xDA, $length, $value );
+                       } elseif ( $length <= 0xFFFFFFFF ) {
+                               return pack( 'CNa*', 0xDB, $length, $value );
+                       }
+                       throw new InvalidArgumentException( __METHOD__ . ": string too long (length: $length; max: 4294967295)" );
+
+               case 'integer':
+                       if ( $value >= 0 ) {
+                               if ( $value <= 0x7F ) {
+                                       // positive fixnum
+                                       return chr( $value );
+                               }
+                               if ( $value <= 0xFF ) {
+                                       // uint8
+                                       return pack( 'CC', 0xCC, $value );
+                               }
+                               if ( $value <= 0xFFFF ) {
+                                       // uint16
+                                       return pack( 'Cn', 0xCD, $value );
+                               }
+                               if ( $value <= 0xFFFFFFFF ) {
+                                       // uint32
+                                       return pack( 'CN', 0xCE, $value );
+                               }
+                               if ( $value <= 0xFFFFFFFFFFFFFFFF ) {
+                                       // uint64
+                                       $hi = ( $value & 0xFFFFFFFF00000000 ) >> 32;
+                                       $lo = $value & 0xFFFFFFFF;
+                                       return self::$bigendian
+                                               ? pack( 'CNN', 0xCF, $lo, $hi )
+                                               : pack( 'CNN', 0xCF, $hi, $lo );
+                               }
+                       } else {
+                               if ( $value >= -32 ) {
+                                       // negative fixnum
+                                       return pack( 'c', $value );
+                               }
+                               if ( $value >= -0x80 ) {
+                                       // int8
+                                       return pack( 'Cc', 0xD0, $value );
+                               }
+                               if ( $value >= -0x8000 ) {
+                                       // int16
+                                       $p = pack( 's', $value );
+                                       return self::$bigendian
+                                               ? pack( 'Ca2', 0xD1, $p )
+                                               : pack( 'Ca2', 0xD1, strrev( $p ) );
+                               }
+                               if ( $value >= -0x80000000 ) {
+                                       // int32
+                                       $p = pack( 'l', $value );
+                                       return self::$bigendian
+                                               ? pack( 'Ca4', 0xD2, $p )
+                                               : pack( 'Ca4', 0xD2, strrev( $p ) );
+                               }
+                               if ( $value >= -0x8000000000000000 ) {
+                                       // int64
+                                       // pack() does not support 64-bit ints either so pack into two 32-bits
+                                       $p1 = pack( 'l', $value & 0xFFFFFFFF );
+                                       $p2 = pack( 'l', ( $value >> 32 ) & 0xFFFFFFFF );
+                                       return self::$bigendian
+                                               ? pack( 'Ca4a4', 0xD3, $p1, $p2 )
+                                               : pack( 'Ca4a4', 0xD3, strrev( $p2 ), strrev( $p1 ) );
+                               }
+                       }
+                       throw new InvalidArgumentException( __METHOD__ . ": invalid integer '$value'" );
+
+               case 'array':
+                       $buffer = '';
+                       $length = count( $value );
+                       if ( $length > 0xFFFFFFFF ) {
+                               throw new InvalidArgumentException( __METHOD__ . ": array too long (length: $length, max: 4294967295)" );
+                       }
+
+                       $index = 0;
+                       foreach ( $value as $k => $v ) {
+                               if ( $index !== $k || $index === $length ) {
+                                       break;
+                               } else {
+                                       $index++;
+                               }
+                       }
+                       $associative = $index !== $length;
+
+                       if ( $associative ) {
+                               if ( $length < 16 ) {
+                                       $buffer .= pack( 'C', 0x80 | $length );
+                               } elseif ( $length <= 0xFFFF ) {
+                                       $buffer .= pack( 'Cn', 0xDE, $length );
+                               } else {
+                                       $buffer .= pack( 'CN', 0xDF, $length );
+                               }
+                               foreach ( $value as $k => $v ) {
+                                       $buffer .= self::pack( $k );
+                                       $buffer .= self::pack( $v );
+                               }
+                       } else {
+                               if ( $length < 16 ) {
+                                       $buffer .= pack( 'C', 0x90 | $length );
+                               } elseif ( $length <= 0xFFFF ) {
+                                       $buffer .= pack( 'Cn', 0xDC, $length );
+                               } else {
+                                       $buffer .= pack( 'CN', 0xDD, $length );
+                               }
+                               foreach ( $value as $v ) {
+                                       $buffer .= self::pack( $v );
+                               }
+                       }
+                       return $buffer;
+
+               default:
+                       throw new InvalidArgumentException( __METHOD__ . ': unsupported type ' . gettype( $value ) );
+               }
+       }
+}
diff --git a/includes/libs/RunningStat.php b/includes/libs/RunningStat.php
new file mode 100644 (file)
index 0000000..dda5254
--- /dev/null
@@ -0,0 +1,176 @@
+<?php
+/**
+ * Compute running mean, variance, and extrema of a stream of numbers.
+ *
+ * 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 Profiler
+ */
+
+// Needed due to PHP non-bug <https://bugs.php.net/bug.php?id=49828>.
+define( 'NEGATIVE_INF', -INF );
+
+/**
+ * Represents a running summary of a stream of numbers.
+ *
+ * RunningStat instances are accumulator-like objects that provide a set of
+ * continuously-updated summary statistics for a stream of numbers, without
+ * requiring that each value be stored. The measures it provides are the
+ * arithmetic mean, variance, standard deviation, and extrema (min and max);
+ * together they describe the central tendency and statistical dispersion of a
+ * set of values.
+ *
+ * One RunningStat instance can be merged into another; the resultant
+ * RunningStat has the state it would have had if it had accumulated each
+ * individual point. This allows data to be summarized in parallel and in
+ * stages without loss of fidelity.
+ *
+ * Based on a C++ implementation by John D. Cook:
+ *  <http://www.johndcook.com/standard_deviation.html>
+ *  <http://www.johndcook.com/skewness_kurtosis.html>
+ *
+ * The in-line documentation for this class incorporates content from the
+ * English Wikipedia articles "Variance", "Algorithms for calculating
+ * variance", and "Standard deviation".
+ *
+ * @since 1.23
+ */
+class RunningStat implements Countable {
+
+       /** @var int Number of samples. **/
+       public $n = 0;
+
+       /** @var float The first moment (or mean, or expected value). **/
+       public $m1 = 0.0;
+
+       /** @var float The second central moment (or variance). **/
+       public $m2 = 0.0;
+
+       /** @var float The least value in the the set. **/
+       public $min = INF;
+
+       /** @var float The most value in the set. **/
+       public $max = NEGATIVE_INF;
+
+       /**
+        * Count the number of accumulated values.
+        * @return int Number of values
+        */
+       public function count() {
+               return $this->n;
+       }
+
+       /**
+        * Add a number to the data set.
+        * @param int|float $x Value to add
+        */
+       public function push( $x ) {
+               $x = (float) $x;
+
+               $this->min = min( $this->min, $x );
+               $this->max = max( $this->max, $x );
+
+               $n1 = $this->n;
+               $this->n += 1;
+               $delta = $x - $this->m1;
+               $delta_n = $delta / $this->n;
+               $this->m1 += $delta_n;
+               $this->m2 += $delta * $delta_n * $n1;
+       }
+
+       /**
+        * Get the mean, or expected value.
+        *
+        * The arithmetic mean is the sum of all measurements divided by the number
+        * of observations in the data set.
+        *
+        * @return float Mean
+        */
+       public function getMean() {
+               return $this->m1;
+       }
+
+       /**
+        * Get the estimated variance.
+        *
+        * Variance measures how far a set of numbers is spread out. A small
+        * variance indicates that the data points tend to be very close to the
+        * mean (and hence to each other), while a high variance indicates that the
+        * data points are very spread out from the mean and from each other.
+        *
+        * @return float Estimated variance
+        */
+       public function getVariance() {
+               if ( $this->n === 0 ) {
+                       // The variance of the empty set is undefined.
+                       return NAN;
+               } elseif ( $this->n === 1 ) {
+                       return 0.0;
+               } else {
+                       return $this->m2 / ( $this->n - 1.0 );
+               }
+       }
+
+       /**
+        * Get the estimated stanard deviation.
+        *
+        * The standard deviation of a statistical population is the square root of
+        * its variance. It shows shows how much variation from the mean exists. In
+        * addition to expressing the variability of a population, the standard
+        * deviation is commonly used to measure confidence in statistical conclusions.
+        *
+        * @return float Estimated standard deviation
+        */
+       public function getStdDev() {
+               return sqrt( $this->getVariance() );
+       }
+
+       /**
+        * Merge another RunningStat instance into this instance.
+        *
+        * This instance then has the state it would have had if all the data had
+        * been accumulated by it alone.
+        *
+        * @param RunningStat RunningStat instance to merge into this one
+        */
+       public function merge( RunningStat $other ) {
+               // If the other RunningStat is empty, there's nothing to do.
+               if ( $other->n === 0 ) {
+                       return;
+               }
+
+               // If this RunningStat is empty, copy values from other RunningStat.
+               if ( $this->n === 0 ) {
+                       $this->n = $other->n;
+                       $this->m1 = $other->m1;
+                       $this->m2 = $other->m2;
+                       $this->min = $other->min;
+                       $this->max = $other->max;
+                       return;
+               }
+
+               $n = $this->n + $other->n;
+               $delta = $other->m1 - $this->m1;
+               $delta2 = $delta * $delta;
+
+               $this->m1 = ( ( $this->n * $this->m1 ) + ( $other->n * $other->m1 ) ) / $n;
+               $this->m2 = $this->m2 + $other->m2 + ( $delta2 * $this->n * $other->n / $n );
+               $this->min = min( $this->min, $other->min );
+               $this->max = max( $this->max, $other->max );
+               $this->n = $n;
+       }
+}
diff --git a/includes/libs/ScopedCallback.php b/includes/libs/ScopedCallback.php
new file mode 100644 (file)
index 0000000..631b651
--- /dev/null
@@ -0,0 +1,73 @@
+<?php
+/**
+ * This file deals with RAII style scoped callbacks.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ */
+
+/**
+ * Class for asserting that a callback happens when an dummy object leaves scope
+ *
+ * @since 1.21
+ */
+class ScopedCallback {
+       /** @var callable */
+       protected $callback;
+
+       /**
+        * @param callable $callback
+        * @throws Exception
+        */
+       public function __construct( $callback ) {
+               if ( !is_callable( $callback ) ) {
+                       throw new InvalidArgumentException( "Provided callback is not valid." );
+               }
+               $this->callback = $callback;
+       }
+
+       /**
+        * Trigger a scoped callback and destroy it.
+        * This is the same is just setting it to null.
+        *
+        * @param ScopedCallback $sc
+        */
+       public static function consume( ScopedCallback &$sc = null ) {
+               $sc = null;
+       }
+
+       /**
+        * Destroy a scoped callback without triggering it
+        *
+        * @param ScopedCallback $sc
+        */
+       public static function cancel( ScopedCallback &$sc = null ) {
+               if ( $sc ) {
+                       $sc->callback = null;
+               }
+               $sc = null;
+       }
+
+       /**
+        * Trigger the callback when this leaves scope
+        */
+       function __destruct() {
+               if ( $this->callback !== null ) {
+                       call_user_func( $this->callback );
+               }
+       }
+}
index d761a87..b658ac1 100644 (file)
@@ -79,13 +79,16 @@ class DeleteLogFormatter extends LogFormatter {
                                $count = count( explode( ',', $params[$paramStart] ) );
                                $newParams[4] = $this->context->getLanguage()->formatNum( $count );
 
-                               return $this->parsedParametersDeleteLog = $newParams;
+                               $this->parsedParametersDeleteLog = $newParams;
+                               return $this->parsedParametersDeleteLog;
                        } else {
-                               return $this->parsedParametersDeleteLog = array_slice( $params, 0, 3 );
+                               $this->parsedParametersDeleteLog = array_slice( $params, 0, 3 );
+                               return $this->parsedParametersDeleteLog;
                        }
                }
 
-               return $this->parsedParametersDeleteLog = $params;
+               $this->parsedParametersDeleteLog = $params;
+               return $this->parsedParametersDeleteLog;
        }
 
        protected function parseBitField( $string ) {
index 7803bca..71b4fc2 100644 (file)
@@ -157,12 +157,13 @@ class DatabaseLogEntry extends LogEntryBase {
        /**
         * Constructs new LogEntry from database result row.
         * Supports rows from both logging and recentchanges table.
-        * @param $row
+        * @param stdClass|array $row
         * @return DatabaseLogEntry
         */
        public static function newFromRow( $row ) {
-               if ( is_array( $row ) && isset( $row['rc_logid'] ) ) {
-                       return new RCDatabaseLogEntry( (object)$row );
+               $row = (object)$row;
+               if ( isset( $row->rc_logid ) ) {
+                       return new RCDatabaseLogEntry( $row );
                } else {
                        return new self( $row );
                }
@@ -176,6 +177,11 @@ class DatabaseLogEntry extends LogEntryBase {
        /** @var User */
        protected $performer;
 
+       /** @var bool Whether the parameters for this log entry are stored in new
+        *    or old format.
+        */
+       protected $legacy;
+
        protected function __construct( $row ) {
                $this->row = $row;
        }
@@ -361,6 +367,9 @@ class ManualLogEntry extends LogEntryBase {
        /** @var int Deletion state of the log entry */
        protected $deleted;
 
+       /** @var int ID of the log entry */
+       protected $id;
+
        /**
         * Constructor.
         *
index c069fdb..ead418d 100644 (file)
@@ -561,7 +561,14 @@ class LogEventsList extends ContextSource {
 
                if ( $logBody ) {
                        if ( $msgKey[0] ) {
-                               $s = '<div class="mw-warning-with-logexcerpt">';
+                               $dir = $context->getLanguage()->getDir();
+                               $lang = $context->getLanguage()->getCode();
+
+                               $s = Xml::openElement( 'div', array(
+                                       'class' => "mw-warning-with-logexcerpt mw-content-$dir",
+                                       'dir' => $dir,
+                                       'lang' => $lang,
+                               ) );
 
                                if ( count( $msgKey ) == 1 ) {
                                        $s .= $context->msg( $msgKey[0] )->parseAsBlock();
index 084a4b2..9e7f056 100644 (file)
@@ -455,7 +455,8 @@ class LogFormatter {
                // Bad things happens if the numbers are not in correct order
                ksort( $params );
 
-               return $this->parsedParameters = $params;
+               $this->parsedParameters = $params;
+               return $this->parsedParameters;
        }
 
        /**
@@ -737,7 +738,8 @@ class LegacyLogFormatter extends LogFormatter {
                }
 
                if ( $this->entry->isDeleted( LogPage::DELETED_ACTION ) ) {
-                       return $this->revert = '';
+                       $this->revert = '';
+                       return $this->revert;
                }
 
                $title = $this->entry->getTarget();
index ae8938e..f5798e2 100644 (file)
@@ -40,31 +40,37 @@ class LogPage {
        const SUPPRESSED_ACTION = 9;
 
        /** @var bool */
-       var $updateRecentChanges;
+       public $updateRecentChanges;
 
        /** @var bool */
-       var $sendToUDP;
+       public $sendToUDP;
+
+       /** @var string Plaintext version of the message for IRC */
+       private $ircActionText;
+
+       /** @var string Plaintext version of the message */
+       private $actionText;
 
        /** @var string One of '', 'block', 'protect', 'rights', 'delete',
         *    'upload', 'move'
         */
-       var $type;
+       private $type;
 
        /** @var string One of '', 'block', 'protect', 'rights', 'delete',
         *   'upload', 'move', 'move_redir' */
-       var $action;
+       private $action;
 
        /** @var string Comment associated with action */
-       var $comment;
+       private $comment;
 
        /** @var string Blob made of a parameters array */
-       var $params;
+       private $params;
 
        /** @var User The user doing the action */
-       var $doer;
+       private $doer;
 
        /** @var Title */
-       var $target;
+       private $target;
 
        /**
         * Constructor
@@ -89,6 +95,7 @@ class LogPage {
                $dbw = wfGetDB( DB_MASTER );
                $log_id = $dbw->nextSequenceValue( 'logging_log_id_seq' );
 
+               // @todo FIXME private/protected/public property?
                $this->timestamp = $now = wfTimestampNow();
                $data = array(
                        'log_id' => $log_id,
index b399732..900ece9 100644 (file)
@@ -154,34 +154,33 @@ class LogPager extends ReverseChronologicalPager {
         * Set the log reader to return only entries by the given user.
         *
         * @param string $name (In)valid user name
-        * @return bool
+        * @return void
         */
        private function limitPerformer( $name ) {
                if ( $name == '' ) {
-                       return false;
+                       return;
                }
                $usertitle = Title::makeTitleSafe( NS_USER, $name );
                if ( is_null( $usertitle ) ) {
-                       return false;
+                       return;
                }
                /* Fetch userid at first, if known, provides awesome query plan afterwards */
                $userid = User::idFromName( $name );
                if ( !$userid ) {
-                       /* It should be nicer to abort query at all,
-                          but for now it won't pass anywhere behind the optimizer */
-                       $this->mConds[] = "NULL";
+                       $this->mConds['log_user_text'] = IP::sanitizeIP( $name );
                } else {
                        $this->mConds['log_user'] = $userid;
-                       // Paranoia: avoid brute force searches (bug 17342)
-                       $user = $this->getUser();
-                       if ( !$user->isAllowed( 'deletedhistory' ) ) {
-                               $this->mConds[] = $this->mDb->bitAnd( 'log_deleted', LogPage::DELETED_USER ) . ' = 0';
-                       } elseif ( !$user->isAllowed( 'suppressrevision' ) ) {
-                               $this->mConds[] = $this->mDb->bitAnd( 'log_deleted', LogPage::SUPPRESSED_USER ) .
-                                       ' != ' . LogPage::SUPPRESSED_USER;
-                       }
-                       $this->performer = $usertitle->getText();
                }
+               // Paranoia: avoid brute force searches (bug 17342)
+               $user = $this->getUser();
+               if ( !$user->isAllowed( 'deletedhistory' ) ) {
+                       $this->mConds[] = $this->mDb->bitAnd( 'log_deleted', LogPage::DELETED_USER ) . ' = 0';
+               } elseif ( !$user->isAllowed( 'suppressrevision' ) ) {
+                       $this->mConds[] = $this->mDb->bitAnd( 'log_deleted', LogPage::SUPPRESSED_USER ) .
+                               ' != ' . LogPage::SUPPRESSED_USER;
+               }
+
+               $this->performer = $usertitle->getText();
        }
 
        /**
@@ -190,7 +189,7 @@ class LogPager extends ReverseChronologicalPager {
         *
         * @param string|Title $page Title name
         * @param string $pattern
-        * @return bool
+        * @return void
         */
        private function limitTitle( $page, $pattern ) {
                global $wgMiserMode;
@@ -200,7 +199,7 @@ class LogPager extends ReverseChronologicalPager {
                } else {
                        $title = Title::newFromText( $page );
                        if ( strlen( $page ) == 0 || !$title instanceof Title ) {
-                               return false;
+                               return;
                        }
                }
 
index eeb8078..1be04a7 100644 (file)
@@ -753,6 +753,21 @@ class BitmapHandler extends ImageHandler {
                }
        }
 
+       /**
+        * @see $wgEnableAutoRotation
+        * @return bool Whether auto rotation is enabled
+        */
+       public static function autoRotateEnabled() {
+               global $wgEnableAutoRotation;
+
+               if ( $wgEnableAutoRotation === null ) {
+                       // Only enable auto-rotation when the bitmap handler can rotate
+                       $wgEnableAutoRotation = BitmapHandler::canRotate();
+               }
+
+               return $wgEnableAutoRotation;
+       }
+
        /**
         * @param File $file
         * @param array $params Rotate parameters.
index bb5e344..844aef2 100644 (file)
@@ -81,9 +81,6 @@ class Exif {
         */
        private $mFilteredExifData;
 
-       /** @var array Filtered and formatted Exif data, see FormatMetadata::getFormattedData() */
-       private $mFormattedExifData;
-
        /** @var string The file being processed */
        private $file;
 
@@ -553,18 +550,6 @@ class Exif {
                }
        }
 
-       /**
-        * Use FormatMetadata to create formatted values for display to user
-        * (is this ever used?)
-        *
-        * @deprecated since 1.18
-        */
-       function makeFormattedData() {
-               wfDeprecated( __METHOD__, '1.18' );
-               $this->mFormattedExifData = FormatMetadata::getFormattedData(
-                       $this->mFilteredExifData );
-       }
-
        /**#@-*/
 
        /**#@+
@@ -585,23 +570,6 @@ class Exif {
                return $this->mFilteredExifData;
        }
 
-       /**
-        * Get $this->mFormattedExifData
-        *
-        * This returns the data for display to user.
-        * Its unclear if this is ever used.
-        *
-        * @deprecated since 1.18
-        */
-       function getFormattedData() {
-               wfDeprecated( __METHOD__, '1.18' );
-               if ( !$this->mFormattedExifData ) {
-                       $this->makeFormattedData();
-               }
-
-               return $this->mFormattedExifData;
-       }
-
        /**#@-*/
 
        /**
index fe037b7..4bbafc1 100644 (file)
@@ -169,12 +169,11 @@ class ExifBitmapHandler extends BitmapHandler {
         * @return array
         */
        function getImageSize( $image, $path ) {
-               global $wgEnableAutoRotation;
                $gis = parent::getImageSize( $image, $path );
 
                // Don't just call $image->getMetadata(); FSFile::getPropsFromPath() calls us with a bogus object.
                // This may mean we read EXIF data twice on initial upload.
-               if ( $wgEnableAutoRotation ) {
+               if ( BitmapHandler::autoRotateEnabled() ) {
                        $meta = $this->getMetadata( $image, $path );
                        $rotation = $this->getRotationForExif( $meta );
                } else {
@@ -203,8 +202,7 @@ class ExifBitmapHandler extends BitmapHandler {
         * @return int 0, 90, 180 or 270
         */
        public function getRotation( $file ) {
-               global $wgEnableAutoRotation;
-               if ( !$wgEnableAutoRotation ) {
+               if ( !BitmapHandler::autoRotateEnabled() ) {
                        return 0;
                }
 
index ecc4ef8..ce7fcbb 100644 (file)
@@ -432,7 +432,7 @@ class SvgHandler extends ImageHandler {
                        return ( $value > 0 );
                } elseif ( $name == 'lang' ) {
                        // Validate $code
-                       if ( !Language::isValidBuiltinCode( $value ) ) {
+                       if ( $value === '' || !Language::isValidBuiltinCode( $value ) ) {
                                wfDebug( "Invalid user language code\n" );
 
                                return false;
index f0a9128..79c5187 100644 (file)
@@ -729,7 +729,7 @@ class MWMemcached {
         * @access  private
         */
        function _connect_sock( &$sock, $host ) {
-               list( $ip, $port ) = explode( ':', $host );
+               list( $ip, $port ) = preg_split('/:(?=\d)/' , $host );
                $sock = false;
                $timeout = $this->_connect_timeout;
                $errno = $errstr = null;
index 7b8935a..e1b3f28 100644 (file)
@@ -40,10 +40,24 @@ class CacheTime {
        /**
         * @return string TS_MW timestamp
         */
-       function getCacheTime()              { return wfTimestamp( TS_MW, $this->mCacheTime ); }
+       function getCacheTime() {
+               return wfTimestamp( TS_MW, $this->mCacheTime );
+       }
 
-       function containsOldMagic()          { return $this->mContainsOldMagic; }
-       function setContainsOldMagic( $com ) { return wfSetVar( $this->mContainsOldMagic, $com ); }
+       /**
+        * @return bool
+        */
+       function containsOldMagic() {
+               return $this->mContainsOldMagic;
+       }
+
+       /**
+        * @param $com bool
+        * @return bool
+        */
+       function setContainsOldMagic( $com ) {
+               return wfSetVar( $this->mContainsOldMagic, $com );
+       }
 
        /**
         * setCacheTime() sets the timestamp expressing when the page has been rendered.
@@ -51,7 +65,9 @@ class CacheTime {
         * @param $t string
         * @return string
         */
-       function setCacheTime( $t )          { return wfSetVar( $this->mCacheTime, $t ); }
+       function setCacheTime( $t ) {
+               return wfSetVar( $this->mCacheTime, $t );
+       }
 
        /**
         * Sets the number of seconds after which this object should expire.
index f57d412..ca27112 100644 (file)
@@ -38,77 +38,34 @@ class CoreParserFunctions {
                #  function callback,
                #  optional SFH_NO_HASH to omit the hash from calls (e.g. {{int:...}}
                #    instead of {{#int:...}})
+               $noHashFunctions = array(
+                       'ns', 'nse', 'urlencode', 'lcfirst', 'ucfirst', 'lc', 'uc',
+                       'localurl', 'localurle', 'fullurl', 'fullurle', 'canonicalurl',
+                       'canonicalurle', 'formatnum', 'grammar', 'gender', 'plural',
+                       'numberofpages', 'numberofusers', 'numberofactiveusers',
+                       'numberofarticles', 'numberoffiles', 'numberofadmins',
+                       'numberingroup', 'numberofedits', 'numberofviews', 'language',
+                       'padleft', 'padright', 'anchorencode', 'defaultsort', 'filepath',
+                       'pagesincategory', 'pagesize', 'protectionlevel',
+                       'namespacee', 'namespacenumber', 'talkspace', 'talkspacee',
+                       'subjectspace', 'subjectspacee', 'pagename', 'pagenamee',
+                       'fullpagename', 'fullpagenamee', 'rootpagename', 'rootpagenamee',
+                       'basepagename', 'basepagenamee', 'subpagename', 'subpagenamee',
+                       'talkpagename', 'talkpagenamee', 'subjectpagename',
+                       'subjectpagenamee', 'pageid', 'revisionid', 'revisionday',
+                       'revisionday2', 'revisionmonth', 'revisionmonth1', 'revisionyear',
+                       'revisiontimestamp', 'revisionuser',
+               );
+               foreach ( $noHashFunctions as $func ) {
+                       $parser->setFunctionHook( $func, array( __CLASS__, $func ), SFH_NO_HASH );
+               }
 
-               $parser->setFunctionHook( 'int',              array( __CLASS__, 'intFunction'      ), SFH_NO_HASH );
-               $parser->setFunctionHook( 'ns',               array( __CLASS__, 'ns'               ), SFH_NO_HASH );
-               $parser->setFunctionHook( 'nse',              array( __CLASS__, 'nse'              ), SFH_NO_HASH );
-               $parser->setFunctionHook( 'urlencode',        array( __CLASS__, 'urlencode'        ), SFH_NO_HASH );
-               $parser->setFunctionHook( 'lcfirst',          array( __CLASS__, 'lcfirst'          ), SFH_NO_HASH );
-               $parser->setFunctionHook( 'ucfirst',          array( __CLASS__, 'ucfirst'          ), SFH_NO_HASH );
-               $parser->setFunctionHook( 'lc',               array( __CLASS__, 'lc'               ), SFH_NO_HASH );
-               $parser->setFunctionHook( 'uc',               array( __CLASS__, 'uc'               ), SFH_NO_HASH );
-               $parser->setFunctionHook( 'localurl',         array( __CLASS__, 'localurl'         ), SFH_NO_HASH );
-               $parser->setFunctionHook( 'localurle',        array( __CLASS__, 'localurle'        ), SFH_NO_HASH );
-               $parser->setFunctionHook( 'fullurl',          array( __CLASS__, 'fullurl'          ), SFH_NO_HASH );
-               $parser->setFunctionHook( 'fullurle',         array( __CLASS__, 'fullurle'         ), SFH_NO_HASH );
-               $parser->setFunctionHook( 'canonicalurl',     array( __CLASS__, 'canonicalurl'     ), SFH_NO_HASH );
-               $parser->setFunctionHook( 'canonicalurle',    array( __CLASS__, 'canonicalurle'    ), SFH_NO_HASH );
-               $parser->setFunctionHook( 'formatnum',        array( __CLASS__, 'formatnum'        ), SFH_NO_HASH );
-               $parser->setFunctionHook( 'grammar',          array( __CLASS__, 'grammar'          ), SFH_NO_HASH );
-               $parser->setFunctionHook( 'gender',           array( __CLASS__, 'gender'           ), SFH_NO_HASH );
-               $parser->setFunctionHook( 'plural',           array( __CLASS__, 'plural'           ), SFH_NO_HASH );
-               $parser->setFunctionHook( 'numberofpages',    array( __CLASS__, 'numberofpages'    ), SFH_NO_HASH );
-               $parser->setFunctionHook( 'numberofusers',    array( __CLASS__, 'numberofusers'    ), SFH_NO_HASH );
-               $parser->setFunctionHook( 'numberofactiveusers', array( __CLASS__, 'numberofactiveusers' ), SFH_NO_HASH );
-               $parser->setFunctionHook( 'numberofarticles', array( __CLASS__, 'numberofarticles' ), SFH_NO_HASH );
-               $parser->setFunctionHook( 'numberoffiles',    array( __CLASS__, 'numberoffiles'    ), SFH_NO_HASH );
-               $parser->setFunctionHook( 'numberofadmins',   array( __CLASS__, 'numberofadmins'   ), SFH_NO_HASH );
-               $parser->setFunctionHook( 'numberingroup',    array( __CLASS__, 'numberingroup'    ), SFH_NO_HASH );
-               $parser->setFunctionHook( 'numberofedits',    array( __CLASS__, 'numberofedits'    ), SFH_NO_HASH );
-               $parser->setFunctionHook( 'numberofviews',    array( __CLASS__, 'numberofviews'    ), SFH_NO_HASH );
-               $parser->setFunctionHook( 'language',         array( __CLASS__, 'language'         ), SFH_NO_HASH );
-               $parser->setFunctionHook( 'padleft',          array( __CLASS__, 'padleft'          ), SFH_NO_HASH );
-               $parser->setFunctionHook( 'padright',         array( __CLASS__, 'padright'         ), SFH_NO_HASH );
-               $parser->setFunctionHook( 'anchorencode',     array( __CLASS__, 'anchorencode'     ), SFH_NO_HASH );
-               $parser->setFunctionHook( 'special',          array( __CLASS__, 'special'          ) );
-               $parser->setFunctionHook( 'speciale',         array( __CLASS__, 'speciale'         ) );
-               $parser->setFunctionHook( 'defaultsort',      array( __CLASS__, 'defaultsort'      ), SFH_NO_HASH );
-               $parser->setFunctionHook( 'filepath',         array( __CLASS__, 'filepath'         ), SFH_NO_HASH );
-               $parser->setFunctionHook( 'pagesincategory',  array( __CLASS__, 'pagesincategory'  ), SFH_NO_HASH );
-               $parser->setFunctionHook( 'pagesize',         array( __CLASS__, 'pagesize'         ), SFH_NO_HASH );
-               $parser->setFunctionHook( 'protectionlevel',  array( __CLASS__, 'protectionlevel'  ), SFH_NO_HASH );
-               $parser->setFunctionHook( 'namespace',        array( __CLASS__, 'mwnamespace'      ), SFH_NO_HASH );
-               $parser->setFunctionHook( 'namespacee',       array( __CLASS__, 'namespacee'       ), SFH_NO_HASH );
-               $parser->setFunctionHook( 'namespacenumber',  array( __CLASS__, 'namespacenumber'  ), SFH_NO_HASH );
-               $parser->setFunctionHook( 'talkspace',        array( __CLASS__, 'talkspace'        ), SFH_NO_HASH );
-               $parser->setFunctionHook( 'talkspacee',       array( __CLASS__, 'talkspacee'       ), SFH_NO_HASH );
-               $parser->setFunctionHook( 'subjectspace',     array( __CLASS__, 'subjectspace'     ), SFH_NO_HASH );
-               $parser->setFunctionHook( 'subjectspacee',    array( __CLASS__, 'subjectspacee'    ), SFH_NO_HASH );
-               $parser->setFunctionHook( 'pagename',         array( __CLASS__, 'pagename'         ), SFH_NO_HASH );
-               $parser->setFunctionHook( 'pagenamee',        array( __CLASS__, 'pagenamee'        ), SFH_NO_HASH );
-               $parser->setFunctionHook( 'fullpagename',     array( __CLASS__, 'fullpagename'     ), SFH_NO_HASH );
-               $parser->setFunctionHook( 'fullpagenamee',    array( __CLASS__, 'fullpagenamee'    ), SFH_NO_HASH );
-               $parser->setFunctionHook( 'rootpagename',     array( __CLASS__, 'rootpagename'     ), SFH_NO_HASH );
-               $parser->setFunctionHook( 'rootpagenamee',    array( __CLASS__, 'rootpagenamee'    ), SFH_NO_HASH );
-               $parser->setFunctionHook( 'basepagename',     array( __CLASS__, 'basepagename'     ), SFH_NO_HASH );
-               $parser->setFunctionHook( 'basepagenamee',    array( __CLASS__, 'basepagenamee'    ), SFH_NO_HASH );
-               $parser->setFunctionHook( 'subpagename',      array( __CLASS__, 'subpagename'      ), SFH_NO_HASH );
-               $parser->setFunctionHook( 'subpagenamee',     array( __CLASS__, 'subpagenamee'     ), SFH_NO_HASH );
-               $parser->setFunctionHook( 'talkpagename',     array( __CLASS__, 'talkpagename'     ), SFH_NO_HASH );
-               $parser->setFunctionHook( 'talkpagenamee',    array( __CLASS__, 'talkpagenamee'    ), SFH_NO_HASH );
-               $parser->setFunctionHook( 'subjectpagename',  array( __CLASS__, 'subjectpagename'  ), SFH_NO_HASH );
-               $parser->setFunctionHook( 'subjectpagenamee', array( __CLASS__, 'subjectpagenamee' ), SFH_NO_HASH );
-               $parser->setFunctionHook( 'tag',              array( __CLASS__, 'tagObj'           ), SFH_OBJECT_ARGS );
-               $parser->setFunctionHook( 'formatdate',       array( __CLASS__, 'formatDate'       ) );
-               $parser->setFunctionHook( 'pageid',           array( __CLASS__, 'pageid'           ), SFH_NO_HASH );
-               $parser->setFunctionHook( 'revisionid',       array( __CLASS__, 'revisionid'       ), SFH_NO_HASH );
-               $parser->setFunctionHook( 'revisionday',      array( __CLASS__, 'revisionday'      ), SFH_NO_HASH );
-               $parser->setFunctionHook( 'revisionday2',     array( __CLASS__, 'revisionday2'     ), SFH_NO_HASH );
-               $parser->setFunctionHook( 'revisionmonth',    array( __CLASS__, 'revisionmonth'    ), SFH_NO_HASH );
-               $parser->setFunctionHook( 'revisionmonth1',   array( __CLASS__, 'revisionmonth1'   ), SFH_NO_HASH );
-               $parser->setFunctionHook( 'revisionyear',     array( __CLASS__, 'revisionyear'     ), SFH_NO_HASH );
-               $parser->setFunctionHook( 'revisiontimestamp', array( __CLASS__, 'revisiontimestamp' ), SFH_NO_HASH );
-               $parser->setFunctionHook( 'revisionuser',     array( __CLASS__, 'revisionuser'     ), SFH_NO_HASH );
+               $parser->setFunctionHook( 'namespace',  array( __CLASS__, 'mwnamespace' ), SFH_NO_HASH );
+               $parser->setFunctionHook( 'int',        array( __CLASS__, 'intFunction' ), SFH_NO_HASH );
+               $parser->setFunctionHook( 'special',    array( __CLASS__, 'special'     ) );
+               $parser->setFunctionHook( 'speciale',   array( __CLASS__, 'speciale'    ) );
+               $parser->setFunctionHook( 'tag',        array( __CLASS__, 'tagObj'      ), SFH_OBJECT_ARGS );
+               $parser->setFunctionHook( 'formatdate', array( __CLASS__, 'formatDate'  ) );
 
                if ( $wgAllowDisplayTitle ) {
                        $parser->setFunctionHook( 'displaytitle', array( __CLASS__, 'displaytitle' ), SFH_NO_HASH );
@@ -247,12 +204,29 @@ class CoreParserFunctions {
                return $parser->markerSkipCallback( $s, array( $wgContLang, 'uc' ) );
        }
 
-       static function localurl( $parser, $s = '', $arg = null ) { return self::urlFunction( 'getLocalURL', $s, $arg ); }
-       static function localurle( $parser, $s = '', $arg = null ) { return self::urlFunction( 'escapeLocalURL', $s, $arg ); }
-       static function fullurl( $parser, $s = '', $arg = null ) { return self::urlFunction( 'getFullURL', $s, $arg ); }
-       static function fullurle( $parser, $s = '', $arg = null ) { return self::urlFunction( 'escapeFullURL', $s, $arg ); }
-       static function canonicalurl( $parser, $s = '', $arg = null ) { return self::urlFunction( 'getCanonicalURL', $s, $arg ); }
-       static function canonicalurle( $parser, $s = '', $arg = null ) { return self::urlFunction( 'escapeCanonicalURL', $s, $arg ); }
+       static function localurl( $parser, $s = '', $arg = null ) {
+               return self::urlFunction( 'getLocalURL', $s, $arg );
+       }
+
+       static function localurle( $parser, $s = '', $arg = null ) {
+               return htmlspecialchars( self::urlFunction( 'getLocalURL', $s, $arg ) );
+       }
+
+       static function fullurl( $parser, $s = '', $arg = null ) {
+               return self::urlFunction( 'getFullURL', $s, $arg );
+       }
+
+       static function fullurle( $parser, $s = '', $arg = null ) {
+               return htmlspecialchars( self::urlFunction( 'getFullURL', $s, $arg ) );
+       }
+
+       static function canonicalurl( $parser, $s = '', $arg = null ) {
+               return self::urlFunction( 'getCanonicalURL', $s, $arg );
+       }
+
+       static function canonicalurle( $parser, $s = '', $arg = null ) {
+               return self::urlFunction( 'escapeCanonicalURL', $s, $arg );
+       }
 
        static function urlFunction( $func, $s = '', $arg = null ) {
                $title = Title::newFromText( $s );
index 9be75ae..d81ad98 100644 (file)
@@ -2109,7 +2109,6 @@ class Parser {
 
                                        /**
                                         * Strip the whitespace Category links produce, see bug 87
-                                        * @todo We might want to use trim($tmp, "\n") here.
                                         */
                                        $s .= trim( $prefix . $trail, "\n" ) == '' ? '' : $prefix . $trail;
 
@@ -2941,7 +2940,7 @@ class Parser {
                                $value = ( wfUrlencode( $this->mTitle->getSubjectNsText() ) );
                                break;
                        case 'currentdayname':
-                               $value = $pageLang->getWeekdayName( MWTimestamp::getInstance( $ts )->format( 'w' ) + 1 );
+                               $value = $pageLang->getWeekdayName( (int)MWTimestamp::getInstance( $ts )->format( 'w' ) + 1 );
                                break;
                        case 'currentyear':
                                $value = $pageLang->formatNum( MWTimestamp::getInstance( $ts )->format( 'Y' ), true );
@@ -2961,7 +2960,7 @@ class Parser {
                                $value = $pageLang->formatNum( MWTimestamp::getInstance( $ts )->format( 'w' ) );
                                break;
                        case 'localdayname':
-                               $value = $pageLang->getWeekdayName( MWTimestamp::getLocalInstance( $ts )->format( 'w' ) + 1 );
+                               $value = $pageLang->getWeekdayName( (int)MWTimestamp::getLocalInstance( $ts )->format( 'w' ) + 1 );
                                break;
                        case 'localyear':
                                $value = $pageLang->formatNum( MWTimestamp::getLocalInstance( $ts )->format( 'Y' ), true );
@@ -3034,11 +3033,8 @@ class Parser {
                                return $wgLanguageCode;
                        default:
                                $ret = null;
-                               if ( wfRunHooks( 'ParserGetVariableValueSwitch', array( &$this, &$this->mVarCache, &$index, &$ret, &$frame ) ) ) {
-                                       return $ret;
-                               } else {
-                                       return null;
-                               }
+                               wfRunHooks( 'ParserGetVariableValueSwitch', array( &$this, &$this->mVarCache, &$index, &$ret, &$frame ) );
+                               return $ret;
                }
 
                if ( $index ) {
@@ -3083,8 +3079,6 @@ class Parser {
         * cache may be implemented at a later date which takes further advantage of these strict
         * dependency requirements.
         *
-        * @private
-        *
         * @return PPNode
         */
        function preprocessToDom( $text, $flags = 0 ) {
index 7043b4a..9eaa3e2 100644 (file)
@@ -27,8 +27,6 @@
  */
 class ParserCache {
        private $mMemc;
-       const try116cache = false; /* Only useful $wgParserCacheExpireTime after updating to 1.17 */
-
        /**
         * Get an instance of this object
         *
@@ -146,7 +144,7 @@ class ParserCache {
                        $usedOptions = $optionsKey->mUsedOptions;
                        wfDebug( "Parser cache options found.\n" );
                } else {
-                       if ( !$useOutdated && !self::try116cache ) {
+                       if ( !$useOutdated ) {
                                return false;
                        }
                        $usedOptions = ParserOptions::legacyOptions();
@@ -186,12 +184,6 @@ class ParserCache {
                }
 
                $value = $this->mMemc->get( $parserOutputKey );
-               if ( self::try116cache && !$value && strpos( $value, '*' ) !== -1 ) {
-                       wfDebug( "New format parser cache miss.\n" );
-                       $parserOutputKey = $this->getParserOutputKey( $article,
-                               $popts->optionsHash( ParserOptions::legacyOptions(), $article->getTitle() ) );
-                       $value = $this->mMemc->get( $parserOutputKey );
-               }
                if ( !$value ) {
                        wfDebug( "ParserOutput cache miss.\n" );
                        wfIncrStats( "pcache_miss_absent" );
@@ -221,11 +213,11 @@ class ParserCache {
 
        /**
         * @param ParserOutput $parserOutput
-        * @param Article $article
+        * @param WikiPage $page
         * @param ParserOptions $popts
         * @param string $cacheTime Time when the cache was generated
         */
-       public function save( $parserOutput, $article, $popts, $cacheTime = null ) {
+       public function save( $parserOutput, $page, $popts, $cacheTime = null ) {
                $expire = $parserOutput->getCacheExpiry();
                if ( $expire > 0 ) {
                        $cacheTime = $cacheTime ?: wfTimestampNow();
@@ -239,11 +231,11 @@ class ParserCache {
 
                        $optionsKey->setContainsOldMagic( $parserOutput->containsOldMagic() );
 
-                       $parserOutputKey = $this->getParserOutputKey( $article,
-                               $popts->optionsHash( $optionsKey->mUsedOptions, $article->getTitle() ) );
+                       $parserOutputKey = $this->getParserOutputKey( $page,
+                               $popts->optionsHash( $optionsKey->mUsedOptions, $page->getTitle() ) );
 
                        // Save the timestamp so that we don't have to load the revision row on view
-                       $parserOutput->setTimestamp( $article->getTimestamp() );
+                       $parserOutput->setTimestamp( $page->getTimestamp() );
 
                        $parserOutput->mText .= "\n<!-- Saved in parser cache with key $parserOutputKey and timestamp $cacheTime\n -->\n";
                        wfDebug( "Saved in parser cache with key $parserOutputKey and timestamp $cacheTime\n" );
@@ -252,7 +244,7 @@ class ParserCache {
                        $this->mMemc->set( $parserOutputKey, $parserOutput, $expire );
 
                        // ...and its pointer
-                       $this->mMemc->set( $this->getOptionsKey( $article ), $optionsKey, $expire );
+                       $this->mMemc->set( $this->getOptionsKey( $page ), $optionsKey, $expire );
                } else {
                        wfDebug( "Parser output was marked as uncacheable and has not been saved.\n" );
                }
index 76d14cf..8cd978b 100644 (file)
@@ -279,10 +279,10 @@ class ParserOutput extends CacheTime {
         * @throws MWException if given invalid input
         */
        function addInterwikiLink( $title ) {
-               $prefix = $title->getInterwiki();
-               if ( $prefix == '' ) {
+               if ( !$title->isExternal() ) {
                        throw new MWException( 'Non-interwiki link passed, internal parser error.' );
                }
+               $prefix = $title->getInterwiki();
                if ( !isset( $this->mInterwikiLinks[$prefix] ) ) {
                        $this->mInterwikiLinks[$prefix] = array();
                }
index 805c60f..ee92c17 100644 (file)
 class ProfilerSimple extends Profiler {
        var $mMinimumTime = 0;
 
-       var $zeroEntry = array( 'cpu' => 0.0, 'cpu_sq' => 0.0, 'real' => 0.0, 'real_sq' => 0.0, 'count' => 0 );
        var $errorEntry;
 
+       public function getZeroEntry() {
+               return array(
+                       'cpu'     => 0.0,
+                       'cpu_sq'  => 0.0,
+                       'real'    => 0.0,
+                       'real_sq' => 0.0,
+                       'count'   => 0
+               );
+       }
+
+       public function getErrorEntry() {
+               $entry = $this->getZeroEntry();
+               $entry['count'] = 1;
+               return $entry;
+       }
+
+       public function updateEntry( $name, $elapsedCpu, $elapsedReal ) {
+               $entry =& $this->mCollated[$name];
+               if ( !is_array( $entry ) ) {
+                       $entry = $this->getZeroEntry();
+                       $this->mCollated[$name] =& $entry;
+               }
+               $entry['cpu'] += $elapsedCpu;
+               $entry['cpu_sq'] += $elapsedCpu * $elapsedCpu;
+               $entry['real'] += $elapsedReal;
+               $entry['real_sq'] += $elapsedReal * $elapsedReal;
+               $entry['count']++;
+       }
+
        public function isPersistent() {
                /* Implement in output subclasses */
                return false;
        }
 
        protected function addInitialStack() {
-               $this->errorEntry = $this->zeroEntry;
-               $this->errorEntry['count'] = 1;
+               $this->errorEntry = $this->getErrorEntry();
 
                $initialTime = $this->getInitialTime();
                $initialCpu = $this->getInitialTime( 'cpu' );
@@ -88,19 +115,9 @@ class ProfilerSimple extends Profiler {
                                $this->debug( "$message\n" );
                                $this->mCollated[$message] = $this->errorEntry;
                        }
-                       $entry =& $this->mCollated[$functionname];
                        $elapsedcpu = $this->getTime( 'cpu' ) - $octime;
                        $elapsedreal = $this->getTime() - $ortime;
-                       if ( !is_array( $entry ) ) {
-                               $entry = $this->zeroEntry;
-                               $this->mCollated[$functionname] =& $entry;
-                       }
-                       $entry['cpu'] += $elapsedcpu;
-                       $entry['cpu_sq'] += $elapsedcpu * $elapsedcpu;
-                       $entry['real'] += $elapsedreal;
-                       $entry['real_sq'] += $elapsedreal * $elapsedreal;
-                       $entry['count']++;
-
+                       $this->updateEntry( $functionname, $elapsedcpu, $elapsedreal );
                        $this->updateTrxProfiling( $functionname, $elapsedreal );
                }
        }
@@ -113,21 +130,4 @@ class ProfilerSimple extends Profiler {
        public function logData() {
                /* Implement in subclasses */
        }
-
-       /**
-        * Get the actual CPU time or the initial one if $ru is set.
-        *
-        * @deprecated in 1.20
-        * @return float|null
-        */
-       function getCpuTime( $ru = null ) {
-               wfDeprecated( __METHOD__, '1.20' );
-
-               if ( $ru === null ) {
-                       return $this->getTime( 'cpu' );
-               } else {
-                       # It theory we should use $ru here, but it always $wgRUstart that is passed here
-                       return $this->getInitialTime( 'cpu' );
-               }
-       }
 }
index 3b072f9..08b1ac1 100644 (file)
@@ -1130,11 +1130,11 @@ class ResourceLoader {
        public static function inDebugMode() {
                global $wgRequest, $wgResourceLoaderDebug;
                static $retval = null;
-               if ( !is_null( $retval ) ) {
-                       return $retval;
+               if ( is_null( $retval ) ) {
+                       $retval = $wgRequest->getFuzzyBool( 'debug',
+                               $wgRequest->getCookie( 'resourceLoaderDebug', '', $wgResourceLoaderDebug ) );
                }
-               return $retval = $wgRequest->getFuzzyBool( 'debug',
-                       $wgRequest->getCookie( 'resourceLoaderDebug', '', $wgResourceLoaderDebug ) );
+               return $retval;
        }
 
        /**
index 43330da..eaff86f 100644 (file)
@@ -454,8 +454,9 @@ class ResourceLoaderFileModule extends ResourceLoaderModule {
                // If a module is nothing but a list of dependencies, we need to avoid
                // giving max() an empty array
                if ( count( $files ) === 0 ) {
+                       $this->modifiedTime[$context->getHash()] = 1;
                        wfProfileOut( __METHOD__ );
-                       return $this->modifiedTime[$context->getHash()] = 1;
+                       return $this->modifiedTime[$context->getHash()];
                }
 
                wfProfileIn( __METHOD__ . '-filemtime' );
index 93c5d1b..d0c3068 100644 (file)
@@ -273,7 +273,8 @@ class ResourceLoaderStartUpModule extends ResourceLoaderModule {
                        $module = $loader->getModule( $name );
                        $time = max( $time, $module->getModifiedTime( $context ) );
                }
-               return $this->modifiedTime[$hash] = $time;
+               $this->modifiedTime[$hash] = $time;
+               return $this->modifiedTime[$hash];
        }
 
        /* Methods */
index aafe432..a9d1076 100644 (file)
@@ -41,12 +41,12 @@ class ResourceLoaderUserCSSPrefsModule extends ResourceLoaderModule {
         */
        public function getModifiedTime( ResourceLoaderContext $context ) {
                $hash = $context->getHash();
-               if ( isset( $this->modifiedTime[$hash] ) ) {
-                       return $this->modifiedTime[$hash];
+               if ( !isset( $this->modifiedTime[$hash] ) ) {
+                       global $wgUser;
+                       $this->modifiedTime[$hash] = wfTimestamp( TS_UNIX, $wgUser->getTouched() );
                }
 
-               global $wgUser;
-               return $this->modifiedTime[$hash] = wfTimestamp( TS_UNIX, $wgUser->getTouched() );
+               return $this->modifiedTime[$hash];
        }
 
        /**
index 1df8c56..3686bea 100644 (file)
@@ -43,12 +43,12 @@ class ResourceLoaderUserOptionsModule extends ResourceLoaderModule {
         */
        public function getModifiedTime( ResourceLoaderContext $context ) {
                $hash = $context->getHash();
-               if ( isset( $this->modifiedTime[$hash] ) ) {
-                       return $this->modifiedTime[$hash];
+               if ( !isset( $this->modifiedTime[$hash] ) ) {
+                       global $wgUser;
+                       $this->modifiedTime[$hash] = wfTimestamp( TS_UNIX, $wgUser->getTouched() );
                }
 
-               global $wgUser;
-               return $this->modifiedTime[$hash] = wfTimestamp( TS_UNIX, $wgUser->getTouched() );
+               return $this->modifiedTime[$hash];
        }
 
        /**
index 71c05d8..1556961 100644 (file)
@@ -485,11 +485,10 @@ class SearchEngine {
         */
        public static function getSearchTypes() {
                global $wgSearchType, $wgSearchTypeAlternatives;
-               static $alternatives = null;
-               if ( $alternatives === null ) {
-                       $alternatives = $wgSearchTypeAlternatives ?: array();
-                       array_unshift( $alternatives, $wgSearchType );
-               }
+
+               $alternatives = $wgSearchTypeAlternatives ?: array();
+               array_unshift( $alternatives, $wgSearchType );
+
                return $alternatives;
        }
 
index e874b3e..1df52f2 100644 (file)
@@ -27,6 +27,7 @@
  * Includes some static functions for handling the special page list deprecated
  * in favor of SpecialPageFactory.
  *
+ * @todo Turn this into a real ContextSource
  * @ingroup SpecialPage
  */
 class SpecialPage {
@@ -128,7 +129,7 @@ class SpecialPage {
         */
        static function getGroup( &$page ) {
                wfDeprecated( __METHOD__, '1.18' );
-               return SpecialPageFactory::getGroup( $page );
+               return $page->getFinalGroupName();
        }
 
        /**
@@ -254,11 +255,11 @@ class SpecialPage {
        /**
         * Get a localised Title object for a specified special page name
         *
-        * @param $name String
-        * @param string|Bool $subpage subpage string, or false to not use a subpage
-        * @param string $fragment the link fragment (after the "#")
+        * @param string $name
+        * @param string|bool $subpage Subpage string, or false to not use a subpage
+        * @param string $fragment The link fragment (after the "#")
+        * @return Title
         * @throws MWException
-        * @return Title object
         */
        public static function getTitleFor( $name, $subpage = false, $fragment = '' ) {
                $name = SpecialPageFactory::getLocalNameFor( $name, $subpage );
@@ -268,9 +269,9 @@ class SpecialPage {
        /**
         * Get a localised Title object for a page name with a possibly unvalidated subpage
         *
-        * @param $name String
-        * @param string|Bool $subpage subpage string, or false to not use a subpage
-        * @return Title object or null if the page doesn't exist
+        * @param string $name
+        * @param string|bool $subpage Subpage string, or false to not use a subpage
+        * @return Title|null Title object or null if the page doesn't exist
         */
        public static function getSafeTitleFor( $name, $subpage = false ) {
                $name = SpecialPageFactory::getLocalNameFor( $name, $subpage );
@@ -306,10 +307,10 @@ class SpecialPage {
         * @param string $name Name of the special page, as seen in links and URLs
         * @param string $restriction User right required, e.g. "block" or "delete"
         * @param bool $listed Whether the page is listed in Special:Specialpages
-        * @param Callback|Bool $function Function called by execute(). By default
-        * it is constructed from $name
+        * @param callable|bool $function Function called by execute(). By default
+        *   it is constructed from $name
         * @param string $file File which is included by execute(). It is also
-        * constructed from $name by default
+        *   constructed from $name by default
         * @param bool $includable Whether the page can be included in normal pages
         */
        public function __construct(
@@ -325,10 +326,10 @@ class SpecialPage {
         * @param string $name Name of the special page, as seen in links and URLs
         * @param string $restriction User right required, e.g. "block" or "delete"
         * @param bool $listed Whether the page is listed in Special:Specialpages
-        * @param Callback|Bool $function Function called by execute(). By default
-        * it is constructed from $name
+        * @param callable|bool $function Function called by execute(). By default
+        *   it is constructed from $name
         * @param string $file File which is included by execute(). It is also
-        * constructed from $name by default
+        *   constructed from $name by default
         * @param bool $includable Whether the page can be included in normal pages
         */
        private function init( $name, $restriction, $listed, $function, $file, $includable ) {
@@ -378,7 +379,7 @@ class SpecialPage {
 
        /**
         * Get the name of this Special Page.
-        * @return String
+        * @return string
         */
        function getName() {
                return $this->mName;
@@ -386,7 +387,7 @@ class SpecialPage {
 
        /**
         * Get the permission that a user must have to execute this page
-        * @return String
+        * @return string
         */
        function getRestriction() {
                return $this->mRestriction;
@@ -396,7 +397,7 @@ class SpecialPage {
         * Get the file which will be included by SpecialPage::execute() if your extension is
         * still stuck in the past and hasn't overridden the execute() method.  No modern code
         * should want or need to know this.
-        * @return String
+        * @return string
         * @deprecated since 1.18
         */
        function getFile() {
@@ -408,25 +409,25 @@ class SpecialPage {
        /**
         * Whether this special page is listed in Special:SpecialPages
         * @since r3583 (v1.3)
-        * @return Bool
+        * @return bool
         */
        function isListed() {
                return $this->mListed;
        }
        /**
         * Set whether this page is listed in Special:Specialpages, at run-time
-        * @since r3583 (v1.3)
-        * @param $listed Bool
-        * @return Bool
+        * @since 1.3
+        * @param bool $listed
+        * @return bool
         */
        function setListed( $listed ) {
                return wfSetVar( $this->mListed, $listed );
        }
        /**
         * Get or set whether this special page is listed in Special:SpecialPages
-        * @since r11308 (v1.6)
-        * @param $x Bool
-        * @return Bool
+        * @since 1.6
+        * @param bool $x
+        * @return bool
         */
        function listed( $x = null ) {
                return wfSetVar( $this->mListed, $x );
@@ -434,7 +435,7 @@ class SpecialPage {
 
        /**
         * Whether it's allowed to transclude the special page via {{Special:Foo/params}}
-        * @return Bool
+        * @return bool
         */
        public function isIncludable() {
                return $this->mIncludable;
@@ -502,8 +503,8 @@ class SpecialPage {
 
        /**
         * Whether the special page is being evaluated via transclusion
-        * @param $x Bool
-        * @return Bool
+        * @param bool $x
+        * @return bool
         */
        function including( $x = null ) {
                return wfSetVar( $this->mIncluding, $x );
@@ -511,6 +512,7 @@ class SpecialPage {
 
        /**
         * Get the localised name of the special page
+        * @return string
         */
        function getLocalName() {
                if ( !isset( $this->mLocalName ) ) {
@@ -525,7 +527,7 @@ class SpecialPage {
         * (and still overridden) by QueryPage and subclasses, moved here so that
         * Special:SpecialPages can safely call it for all special pages.
         *
-        * @return Boolean
+        * @return bool
         */
        public function isExpensive() {
                return false;
@@ -537,7 +539,7 @@ class SpecialPage {
         * Used by QueryPage and subclasses, moved here so that
         * Special:SpecialPages can safely call it for all special pages.
         *
-        * @return Boolean
+        * @return bool
         * @since 1.21
         */
        public function isCached() {
@@ -548,7 +550,7 @@ class SpecialPage {
         * Can be overridden by subclasses with more complicated permissions
         * schemes.
         *
-        * @return Boolean: should the page be displayed with the restricted-access
+        * @return bool Should the page be displayed with the restricted-access
         *   pages?
         */
        public function isRestricted() {
@@ -561,8 +563,8 @@ class SpecialPage {
         * special page (as defined by $mRestriction).  Can be overridden by sub-
         * classes with more complicated permissions schemes.
         *
-        * @param $user User: the user to check
-        * @return Boolean: does the user have permission to view the page?
+        * @param User $user The user to check
+        * @return bool Does the user have permission to view the page?
         */
        public function userCanExecute( User $user ) {
                return $user->isAllowed( $this->mRestriction );
@@ -570,6 +572,7 @@ class SpecialPage {
 
        /**
         * Output an error message telling the user what access level they have to have
+        * @throws PermissionsError
         */
        function displayRestrictionError() {
                throw new PermissionsError( $this->mRestriction );
@@ -579,6 +582,8 @@ class SpecialPage {
         * Checks if userCanExecute, and if not throws a PermissionsError
         *
         * @since 1.19
+        * @return void
+        * @throws PermissionsError
         */
        public function checkPermissions() {
                if ( !$this->userCanExecute( $this->getUser() ) ) {
@@ -590,6 +595,7 @@ class SpecialPage {
         * If the wiki is currently in readonly mode, throws a ReadOnlyError
         *
         * @since 1.19
+        * @return void
         * @throws ReadOnlyError
         */
        public function checkReadOnly() {
@@ -629,7 +635,7 @@ class SpecialPage {
                                        SpecialPage::getTitleFor( 'Userlogin' ),
                                        $this->msg( 'loginreqlink' )->escaped(),
                                        array(),
-                                       array( 'returnto' => $this->getTitle()->getPrefixedText() )
+                                       array( 'returnto' => $this->getPageTitle()->getPrefixedText() )
                                );
                                $reasonMsg = $this->msg( $reasonMsg )->rawParams( $loginreqlink );
                        }
@@ -656,7 +662,7 @@ class SpecialPage {
         *
         * @since 1.20
         *
-        * @param $subPage string|null
+        * @param string|null $subPage
         */
        final public function run( $subPage ) {
                /**
@@ -664,8 +670,8 @@ class SpecialPage {
                 *
                 * @since 1.20
                 *
-                * @param $special SpecialPage
-                * @param $subPage string|null
+                * @param SpecialPage $this
+                * @param string|null $subPage
                 */
                wfRunHooks( 'SpecialPageBeforeExecute', array( $this, $subPage ) );
 
@@ -678,8 +684,8 @@ class SpecialPage {
                 *
                 * @since 1.20
                 *
-                * @param $special SpecialPage
-                * @param $subPage string|null
+                * @param SpecialPage $this
+                * @param string|null $subPage
                 */
                wfRunHooks( 'SpecialPageAfterExecute', array( $this, $subPage ) );
        }
@@ -689,7 +695,7 @@ class SpecialPage {
         *
         * @since 1.20
         *
-        * @param $subPage string|null
+        * @param string|null $subPage
         */
        protected function beforeExecute( $subPage ) {
                // No-op
@@ -700,7 +706,7 @@ class SpecialPage {
         *
         * @since 1.20
         *
-        * @param $subPage string|null
+        * @param string|null $subPage
         */
        protected function afterExecute( $subPage ) {
                // No-op
@@ -712,7 +718,7 @@ class SpecialPage {
         *
         * This must be overridden by subclasses; it will be made abstract in a future version
         *
-        * @param $subPage string|null
+        * @param string|null $subPage
         */
        public function execute( $subPage ) {
                $this->setHeaders();
@@ -733,7 +739,7 @@ class SpecialPage {
         * May be overridden, i.e. by extensions to stick with the naming conventions
         * for message keys: 'extensionname-xxx'
         *
-        * @param string $summaryMessageKey message key of the summary
+        * @param string $summaryMessageKey Message key of the summary
         */
        function outputHeader( $summaryMessageKey = '' ) {
                global $wgContLang;
@@ -755,10 +761,9 @@ class SpecialPage {
         * also the name that will be listed in Special:Specialpages
         *
         * Derived classes can override this, but usually it is easier to keep the
-        * default behavior. Messages can be added at run-time, see
-        * MessageCache.php.
+        * default behavior.
         *
-        * @return String
+        * @return string
         */
        function getDescription() {
                return $this->msg( strtolower( $this->mName ) )->text();
@@ -767,17 +772,30 @@ class SpecialPage {
        /**
         * Get a self-referential title object
         *
-        * @param $subpage String|Bool
-        * @return Title object
+        * @param string|bool $subpage
+        * @return Title
+        * @deprecated in 1.23, use SpecialPage::getPageTitle
         */
        function getTitle( $subpage = false ) {
+               wfDeprecated( __METHOD__, '1.23' );
+               return $this->getPageTitle( $subpage );
+       }
+
+       /**
+        * Get a self-referential title object
+        *
+        * @param string|bool $subpage
+        * @return Title
+        * @since 1.23
+        */
+       function getPageTitle( $subpage = false ) {
                return self::getTitleFor( $this->mName, $subpage );
        }
 
        /**
         * Sets the context this SpecialPage is executed in
         *
-        * @param $context IContextSource
+        * @param IContextSource $context
         * @since 1.18
         */
        public function setContext( $context ) {
@@ -896,7 +914,7 @@ class SpecialPage {
        /**
         * Adds RSS/atom links
         *
-        * @param $params array
+        * @param array $params
         */
        protected function addFeedLinks( $params ) {
                global $wgFeedClasses;
index 388705d..1e2d557 100644 (file)
@@ -123,7 +123,7 @@ class SpecialAllpages extends IncludableSpecialPage {
         */
        function namespaceForm( $namespace = NS_MAIN, $from = '', $to = '', $hideredirects = false ) {
                global $wgScript;
-               $t = $this->getTitle();
+               $t = $this->getPageTitle();
 
                $out = Xml::openElement( 'div', array( 'class' => 'namespaceoptions' ) );
                $out .= Xml::openElement( 'form', array( 'method' => 'get', 'action' => $wgScript ) );
@@ -302,7 +302,7 @@ class SpecialAllpages extends IncludableSpecialPage {
                                        $nsForm .
                                        '</td>
                                                        <td class="mw-allpages-nav">' .
-                                       Linker::link( $this->getTitle(), $this->msg( 'allpages' )->escaped(),
+                                       Linker::link( $this->getPageTitle(), $this->msg( 'allpages' )->escaped(),
                                                array(), array(), 'known' ) .
                                        "</td>
                                                </tr>" .
@@ -346,7 +346,7 @@ class SpecialAllpages extends IncludableSpecialPage {
                        $queryParams['hideredirects'] = 1;
                }
 
-               $url = $this->getTitle()->getLocalURL( $queryParams );
+               $url = $this->getPageTitle()->getLocalURL( $queryParams );
                $inlink = Html::element( 'a', array( 'href' => $url ), $inpointf );
                $outlink = Html::element( 'a', array( 'href' => $url ), $outpointf );
 
@@ -480,7 +480,7 @@ class SpecialAllpages extends IncludableSpecialPage {
                                }
                        }
 
-                       $self = $this->getTitle();
+                       $self = $this->getPageTitle();
 
                        $nsForm = $this->namespaceForm( $namespace, $from, $to, $hideredirects );
                        $out2 = Xml::openElement( 'table', array( 'class' => 'mw-allpages-table-form' ) ) .
index 3b73a37..fa5ec29 100644 (file)
@@ -221,6 +221,9 @@ class SpecialBlock extends FormSpecialPage {
 
                $this->maybeAlterFormDefaults( $a );
 
+               // Allow extensions to add more fields
+               wfRunHooks( 'SpecialBlockModifyFormFields', array( $this, &$a ) );
+
                return $a;
        }
 
index f1992c0..4e7043d 100644 (file)
@@ -97,7 +97,7 @@ class SpecialBlockList extends SpecialPage {
                        ),
                );
                $context = new DerivativeContext( $this->getContext() );
-               $context->setTitle( $this->getTitle() ); // Remove subpage
+               $context->setTitle( $this->getPageTitle() ); // Remove subpage
                $form = new HTMLForm( $fields, $context );
                $form->setMethod( 'get' );
                $form->setWrapperLegendMsg( 'ipblocklist-legend' );
@@ -230,7 +230,7 @@ class BlockListPager extends TablePager {
        function getFieldNames() {
                static $headers = null;
 
-               if ( $headers == array() ) {
+               if ( $headers === null ) {
                        $headers = array(
                                'ipb_timestamp' => 'blocklist-timestamp',
                                'ipb_target' => 'blocklist-target',
@@ -455,8 +455,6 @@ class BlockListPager extends TablePager {
 
 /**
  * Items per page dropdown. Essentially a crap workaround for bug 32603.
- *
- * @todo Do not release 1.19 with this.
  */
 class HTMLBlockedUsersItemSelect extends HTMLSelectField {
        /**
index 5ad961c..7b6cca0 100644 (file)
@@ -120,7 +120,7 @@ class SpecialBookSources extends SpecialPage {
                $form = Html::openElement( 'fieldset' ) . "\n";
                $form .= Html::element( 'legend', array(), $this->msg( 'booksources-search-legend' )->text() ) . "\n";
                $form .= Html::openElement( 'form', array( 'method' => 'get', 'action' => $wgScript ) ) . "\n";
-               $form .= Html::hidden( 'title', $this->getTitle()->getPrefixedText() ) . "\n";
+               $form .= Html::hidden( 'title', $this->getPageTitle()->getPrefixedText() ) . "\n";
                $form .= '<p>' . Xml::inputLabel( $this->msg( 'booksources-isbn' )->text(), 'isbn', 'isbn', 20, $this->isbn, array( 'autofocus' => true ) );
                $form .= '&#160;' . Xml::submitButton( $this->msg( 'booksources-go' )->text() ) . "</p>\n";
                $form .= Html::closeElement( 'form' ) . "\n";
index e1531cc..d9ef5d7 100644 (file)
@@ -148,7 +148,7 @@ class SpecialChangeEmail extends UnlistedSpecialPage {
                                Xml::openElement( 'form',
                                        array(
                                                'method' => 'post',
-                                               'action' => $this->getTitle()->getLocalURL(),
+                                               'action' => $this->getPageTitle()->getLocalURL(),
                                                'id' => 'mw-changeemail-form' ) ) . "\n" .
                                Html::hidden( 'token', $user->getEditToken() ) . "\n" .
                                Html::hidden( 'returnto', $this->getRequest()->getVal( 'returnto' ) ) . "\n" .
index 43a4d2c..d54828a 100644 (file)
  *
  * @ingroup SpecialPage
  */
-class SpecialChangePassword extends UnlistedSpecialPage {
+class SpecialChangePassword extends FormSpecialPage {
 
-       protected $mUserName, $mOldpass, $mNewpass, $mRetype, $mDomain;
+       protected $mUserName, $mDomain;
 
        public function __construct() {
                parent::__construct( 'ChangePassword', 'editmyprivateinfo' );
+               $this->listed( false );
        }
 
        /**
         * Main execution point
         */
        function execute( $par ) {
-               global $wgAuth;
-
-               $this->setHeaders();
-               $this->outputHeader();
                $this->getOutput()->disallowUserJs();
 
-               $request = $this->getRequest();
+               parent::execute( $par );
+       }
 
-               if ( !$request->wasPosted() ) {
+       protected function checkExecutePermissions( User $user ) {
+               parent::checkExecutePermissions( $user );
+
+               if ( !$this->getRequest()->wasPosted() ) {
                        $this->requireLogin( 'resetpass-no-info' );
                }
+       }
 
-               $this->mUserName = trim( $request->getVal( 'wpName' ) );
-               $this->mOldpass = $request->getVal( 'wpPassword' );
-               $this->mNewpass = $request->getVal( 'wpNewPassword' );
-               $this->mRetype = $request->getVal( 'wpRetype' );
-               $this->mDomain = $request->getVal( 'wpDomain' );
+       protected function getFormFields() {
+               global $wgCookieExpiration;
 
                $user = $this->getUser();
+               $request = $this->getRequest();
 
-               if ( $request->wasPosted() && $request->getBool( 'wpCancel' ) ) {
-                       $titleObj = Title::newFromText( $request->getVal( 'returnto' ) );
-                       if ( !$titleObj instanceof Title ) {
-                               $titleObj = Title::newMainPage();
-                       }
-                       $query = $request->getVal( 'returntoquery' );
-                       $this->getOutput()->redirect( $titleObj->getFullURL( $query ) );
+               $oldpassMsg = $user->isLoggedIn() ? 'oldpassword' : 'resetpass-temp-password';
+
+               $fields = array(
+                       'Name' => array(
+                               'type' => 'info',
+                               'label-message' => 'username',
+                               'default' => $request->getVal( 'wpName', $user->getName() ),
+                       ),
+                       'Password' => array(
+                               'type' => 'password',
+                               'label-message' => $oldpassMsg,
+                       ),
+                       'NewPassword' => array(
+                               'type' => 'password',
+                               'label-message' => 'newpassword',
+                       ),
+                       'Retype' => array(
+                               'type' => 'password',
+                               'label-message' => 'retypenew',
+                       ),
+               );
 
-                       return;
+               $extraFields = array();
+               wfRunHooks( 'ChangePasswordForm', array( &$extraFields ) );
+               foreach ( $extraFields as $extra ) {
+                       list( $name, $label, $type, $default ) = $extra;
+                       $fields[$name] = array(
+                               'type' => $type,
+                               'name' => $name,
+                               'label-message' => $label,
+                               'default' => $default,
+                       );
                }
 
-               $this->checkReadOnly();
-               $this->checkPermissions();
-
-               if ( $request->wasPosted() && $user->matchEditToken( $request->getVal( 'token' ) ) ) {
-                       try {
-                               $this->mDomain = $wgAuth->getDomain();
-                               if ( !$wgAuth->allowPasswordChange() ) {
-                                       $this->error( $this->msg( 'resetpass_forbidden' )->text() );
-
-                                       return;
-                               }
-
-                               $this->attemptReset( $this->mNewpass, $this->mRetype );
-
-                               if ( $user->isLoggedIn() ) {
-                                       $this->getOutput()->wrapWikiMsg(
-                                                       "<div class=\"successbox\">\n$1\n</div>",
-                                                       'changepassword-success'
-                                       );
-                                       $this->getOutput()->returnToMain();
-                               } else {
-                                       LoginForm::setLoginToken();
-                                       $token = LoginForm::getLoginToken();
-                                       $data = array(
-                                               'action' => 'submitlogin',
-                                               'wpName' => $this->mUserName,
-                                               'wpDomain' => $this->mDomain,
-                                               'wpLoginToken' => $token,
-                                               'wpPassword' => $request->getVal( 'wpNewPassword' ),
-                                       ) + $request->getValues( 'wpRemember', 'returnto', 'returntoquery' );
-                                       $login = new LoginForm( new DerivativeRequest( $request, $data, true ) );
-                                       $login->setContext( $this->getContext() );
-                                       $login->execute( null );
-                               }
-
-                               return;
-                       } catch ( PasswordError $e ) {
-                               $this->error( $e->getMessage() );
-                       }
+               if ( !$user->isLoggedIn() ) {
+                       $fields['Remember'] = array(
+                               'type' => 'check',
+                               'label' => $this->msg( 'remembermypassword' )
+                                               ->numParams( ceil( $wgCookieExpiration / ( 3600 * 24 ) ) )
+                                               ->text(),
+                               'default' => $request->getVal( 'wpRemember' ),
+                       );
                }
-               $this->showForm();
+
+               return $fields;
        }
 
-       /**
-        * @param $msg string
-        */
-       function error( $msg ) {
-               $this->getOutput()->addHTML( Xml::element( 'p', array( 'class' => 'error' ), $msg ) );
+       protected function alterForm( HTMLForm $form ) {
+               $form->setId( 'mw-resetpass-form' );
+               $form->setTableId( 'mw-resetpass-table' );
+               $form->setWrapperLegendMsg( 'resetpass_header' );
+               $form->setSubmitTextMsg(
+                       $this->getUser()->isLoggedIn()
+                               ? 'resetpass-submit-loggedin'
+                               : 'resetpass_submit'
+               );
+               $form->addButton( 'wpCancel',  $this->msg( 'resetpass-submit-cancel' )->text() );
+               $form->setHeaderText( $this->msg( 'resetpass_text' )->parseAsBlock() );
+               $form->addHiddenFields(
+                       $this->getRequest()->getValues( 'wpName', 'wpDomain', 'returnto', 'returntoquery' ) );
        }
 
-       function showForm() {
-               global $wgCookieExpiration;
+       public function onSubmit( array $data ) {
+               global $wgAuth;
 
-               $user = $this->getUser();
-               if ( !$this->mUserName ) {
-                       $this->mUserName = $user->getName();
-               }
-               $rememberMe = '';
-               if ( !$user->isLoggedIn() ) {
-                       $rememberMe = '<tr>' .
-                               '<td></td>' .
-                               '<td class="mw-input">' .
-                               Xml::checkLabel(
-                                       $this->msg( 'remembermypassword' )->numParams( ceil( $wgCookieExpiration / ( 3600 * 24 ) ) )->text(),
-                                       'wpRemember', 'wpRemember',
-                                       $this->getRequest()->getCheck( 'wpRemember' ) ) .
-                               '</td>' .
-                               '</tr>';
-                       $submitMsg = 'resetpass_submit';
-                       $oldpassMsg = 'resetpass-temp-password';
-               } else {
-                       $oldpassMsg = 'oldpassword';
-                       $submitMsg = 'resetpass-submit-loggedin';
-               }
-               $extraFields = array();
-               wfRunHooks( 'ChangePasswordForm', array( &$extraFields ) );
-               $prettyFields = array(
-                       array( 'wpName', 'username', 'text', $this->mUserName ),
-                       array( 'wpPassword', $oldpassMsg, 'password', $this->mOldpass ),
-                       array( 'wpNewPassword', 'newpassword', 'password', null ),
-                       array( 'wpRetype', 'retypenew', 'password', null ),
-               );
-               $prettyFields = array_merge( $prettyFields, $extraFields );
-               $hiddenFields = array(
-                       'token' => $user->getEditToken(),
-                       'wpName' => $this->mUserName,
-                       'wpDomain' => $this->mDomain,
-               ) + $this->getRequest()->getValues( 'returnto', 'returntoquery' );
-               $hiddenFieldsStr = '';
-               foreach ( $hiddenFields as $fieldname => $fieldvalue ) {
-                       $hiddenFieldsStr .= Html::hidden( $fieldname, $fieldvalue ) . "\n";
+               $request = $this->getRequest();
+
+               if ( $request->getCheck( 'wpLoginToken' ) ) {
+                       // This comes from Special:Userlogin when logging in with a temporary password
+                       return false;
                }
-               $this->getOutput()->addHTML(
-                       Xml::fieldset( $this->msg( 'resetpass_header' )->text() ) .
-                               Xml::openElement( 'form',
-                                       array(
-                                               'method' => 'post',
-                                               'action' => $this->getTitle()->getLocalURL(),
-                                               'id' => 'mw-resetpass-form' ) ) . "\n" .
-                               $hiddenFieldsStr .
-                               $this->msg( 'resetpass_text' )->parseAsBlock() . "\n" .
-                               Xml::openElement( 'table', array( 'id' => 'mw-resetpass-table' ) ) . "\n" .
-                               $this->pretty( $prettyFields ) . "\n" .
-                               $rememberMe .
-                               "<tr>\n" .
-                               "<td></td>\n" .
-                               '<td class="mw-input">' .
-                               Xml::submitButton( $this->msg( $submitMsg )->text() ) .
-                               Xml::submitButton( $this->msg( 'resetpass-submit-cancel' )->text(), array( 'name' => 'wpCancel' ) ) .
-                               "</td>\n" .
-                               "</tr>\n" .
-                               Xml::closeElement( 'table' ) .
-                               Xml::closeElement( 'form' ) .
-                               Xml::closeElement( 'fieldset' ) . "\n"
-               );
-       }
 
-       /**
-        * @param $fields array
-        * @return string
-        */
-       function pretty( $fields ) {
-               $out = '';
-               foreach ( $fields as $list ) {
-                       list( $name, $label, $type, $value ) = $list;
-                       if ( $type == 'text' ) {
-                               $field = htmlspecialchars( $value );
-                       } else {
-                               $attribs = array( 'id' => $name );
-                               if ( $name == 'wpNewPassword' || $name == 'wpRetype' ) {
-                                       $attribs = array_merge( $attribs,
-                                               User::passwordChangeInputAttribs() );
-                               }
-                               if ( $name == 'wpPassword' ) {
-                                       $attribs[] = 'autofocus';
-                               }
-                               $field = Html::input( $name, $value, $type, $attribs );
+               if ( $request->getCheck( 'wpCancel' ) ) {
+                       $titleObj = Title::newFromText( $request->getVal( 'returnto' ) );
+                       if ( !$titleObj instanceof Title ) {
+                               $titleObj = Title::newMainPage();
                        }
-                       $out .= "<tr>\n";
-                       $out .= "\t<td class='mw-label'>";
+                       $query = $request->getVal( 'returntoquery' );
+                       $this->getOutput()->redirect( $titleObj->getFullURL( $query ) );
+                       return true;
+               }
 
-                       if ( $type != 'text' ) {
-                               $out .= Xml::label( $this->msg( $label )->text(), $name );
-                       } else {
-                               $out .= $this->msg( $label )->escaped();
+               try {
+                       $this->mUserName = $request->getVal( 'wpName', $this->getUser()->getName() );
+                       $this->mDomain = $wgAuth->getDomain();
+
+                       if ( !$wgAuth->allowPasswordChange() ) {
+                               throw new ErrorPageError( 'changepassword', 'resetpass_forbidden' );
                        }
 
-                       $out .= "</td>\n";
-                       $out .= "\t<td class='mw-input'>";
-                       $out .= $field;
-                       $out .= "</td>\n";
-                       $out .= "</tr>";
+                       $this->attemptReset( $data['Password'], $data['NewPassword'], $data['Retype'] );
+
+                       return true;
+               } catch ( PasswordError $e ) {
+                       return $e->getMessage();
                }
+       }
 
-               return $out;
+       public function onSuccess() {
+               if ( $this->getUser()->isLoggedIn() ) {
+                       $this->getOutput()->wrapWikiMsg(
+                               "<div class=\"successbox\">\n$1\n</div>",
+                               'changepassword-success'
+                       );
+                       $this->getOutput()->returnToMain();
+               } else {
+                       $request = $this->getRequest();
+                       LoginForm::setLoginToken();
+                       $token = LoginForm::getLoginToken();
+                       $data = array(
+                               'action' => 'submitlogin',
+                               'wpName' => $this->mUserName,
+                               'wpDomain' => $this->mDomain,
+                               'wpLoginToken' => $token,
+                               'wpPassword' => $request->getVal( 'wpNewPassword' ),
+                       ) + $request->getValues( 'wpRemember', 'returnto', 'returntoquery' );
+                       $login = new LoginForm( new DerivativeRequest( $request, $data, true ) );
+                       $login->setContext( $this->getContext() );
+                       $login->execute( null );
+               }
        }
 
        /**
         * @throws PasswordError when cannot set the new password because requirements not met.
         */
-       protected function attemptReset( $newpass, $retype ) {
+       protected function attemptReset( $oldpass, $newpass, $retype ) {
                global $wgPasswordAttemptThrottle;
 
                $isSelf = ( $this->mUserName === $this->getUser()->getName() );
@@ -258,12 +212,12 @@ class SpecialChangePassword extends UnlistedSpecialPage {
                }
 
                $abortMsg = 'resetpass-abort-generic';
-               if ( !wfRunHooks( 'AbortChangePassword', array( $user, $this->mOldpass, $newpass, &$abortMsg ) ) ) {
+               if ( !wfRunHooks( 'AbortChangePassword', array( $user, $oldpass, $newpass, &$abortMsg ) ) ) {
                        wfRunHooks( 'PrefsPasswordAudit', array( $user, $newpass, 'abortreset' ) );
                        throw new PasswordError( $this->msg( $abortMsg )->text() );
                }
 
-               if ( !$user->checkTemporaryPassword( $this->mOldpass ) && !$user->checkPassword( $this->mOldpass ) ) {
+               if ( !$user->checkTemporaryPassword( $oldpass ) && !$user->checkPassword( $oldpass ) ) {
                        wfRunHooks( 'PrefsPasswordAudit', array( $user, $newpass, 'wrongpassword' ) );
                        throw new PasswordError( $this->msg( 'resetpass-wrong-oldpass' )->text() );
                }
@@ -274,9 +228,8 @@ class SpecialChangePassword extends UnlistedSpecialPage {
                }
 
                try {
-                       $user->setPassword( $this->mNewpass );
+                       $user->setPassword( $newpass );
                        wfRunHooks( 'PrefsPasswordAudit', array( $user, $newpass, 'success' ) );
-                       $this->mNewpass = $this->mOldpass = $this->mRetype = '';
                } catch ( PasswordError $e ) {
                        wfRunHooks( 'PrefsPasswordAudit', array( $user, $newpass, 'error' ) );
                        throw new PasswordError( $e->getMessage() );
@@ -291,6 +244,10 @@ class SpecialChangePassword extends UnlistedSpecialPage {
                $user->saveSettings();
        }
 
+       public function requiresUnblock() {
+               return false;
+       }
+
        protected function getGroupName() {
                return 'users';
        }
index bef155c..d771589 100644 (file)
@@ -101,7 +101,7 @@ class EmailConfirmation extends UnlistedSpecialPage {
                        $out->addWikiMsg( 'confirmemail_text' );
                        $form = Html::openElement(
                                'form',
-                               array( 'method' => 'post', 'action' => $this->getTitle()->getLocalURL() )
+                               array( 'method' => 'post', 'action' => $this->getPageTitle()->getLocalURL() )
                        ) . "\n";
                        $form .= Html::hidden( 'token', $user->getEditToken() ) . "\n";
                        $form .= Xml::submitButton( $this->msg( 'confirmemail_send' )->text() ) . "\n";
index af6a35b..6b56c2f 100644 (file)
@@ -98,10 +98,10 @@ class SpecialContributions extends SpecialPage {
                        $this->getSkin()->setRelevantUser( $userObj );
                } else {
                        $out->addSubtitle( $this->msg( 'sp-contributions-newbies-sub' ) );
-                       $out->setHTMLTitle(
-                               $this->msg( 'pagetitle', $this->msg( 'sp-contributions-newbies-title' ) )
-                                       ->inContentLanguage()->plain()
-                       );
+                       $out->setHTMLTitle( $this->msg(
+                               'pagetitle',
+                               $this->msg( 'sp-contributions-newbies-title' )->plain()
+                       )->inContentLanguage() );
                }
 
                if ( ( $ns = $request->getVal( 'namespace', null ) ) !== null && $ns !== '' ) {
@@ -168,7 +168,7 @@ class SpecialContributions extends SpecialPage {
                // Add RSS/atom links
                $this->addFeedLinks( array( 'action' => 'feedcontributions', 'user' => $target ) );
 
-               if ( wfRunHooks( 'SpecialContributionsBeforeMainOutput', array( $id ) ) ) {
+               if ( wfRunHooks( 'SpecialContributionsBeforeMainOutput', array( $id, $userObj, $this ) ) ) {
                        $out->addHTML( $this->getForm() );
 
                        $pager = new ContribsPager( $this->getContext(), array(
@@ -354,7 +354,7 @@ class SpecialContributions extends SpecialPage {
        protected function getForm() {
                global $wgScript;
 
-               $this->opts['title'] = $this->getTitle()->getPrefixedText();
+               $this->opts['title'] = $this->getPageTitle()->getPrefixedText();
                if ( !isset( $this->opts['target'] ) ) {
                        $this->opts['target'] = '';
                } else {
index 9b9888a..d148a50 100644 (file)
@@ -495,7 +495,7 @@ class DeletedContributionsPage extends SpecialPage {
        function getForm( $options ) {
                global $wgScript;
 
-               $options['title'] = $this->getTitle()->getPrefixedText();
+               $options['title'] = $this->getPageTitle()->getPrefixedText();
                if ( !isset( $options['target'] ) ) {
                        $options['target'] = '';
                } else {
index daa56b3..98d5fea 100644 (file)
@@ -534,7 +534,7 @@ class SpecialEditWatchlist extends UnlistedSpecialPage {
                }
 
                $context = new DerivativeContext( $this->getContext() );
-               $context->setTitle( $this->getTitle() ); // Remove subpage
+               $context->setTitle( $this->getPageTitle() ); // Remove subpage
                $form = new EditWatchlistNormalHTMLForm( $fields, $context );
                $form->setSubmitTextMsg( 'watchlistedit-normal-submit' );
                # Used message keys: 'accesskey-watchlistedit-normal-submit', 'tooltip-watchlistedit-normal-submit'
@@ -598,7 +598,7 @@ class SpecialEditWatchlist extends UnlistedSpecialPage {
                        ),
                );
                $context = new DerivativeContext( $this->getContext() );
-               $context->setTitle( $this->getTitle( 'raw' ) ); // Reset subpage
+               $context->setTitle( $this->getPageTitle( 'raw' ) ); // Reset subpage
                $form = new HTMLForm( $fields, $context );
                $form->setSubmitTextMsg( 'watchlistedit-raw-submit' );
                # Used message keys: 'accesskey-watchlistedit-raw-submit', 'tooltip-watchlistedit-raw-submit'
index 2e90d99..6695c82 100644 (file)
@@ -149,7 +149,7 @@ class SpecialEmailUser extends UnlistedSpecialPage {
                $this->mTargetObj = $ret;
 
                $context = new DerivativeContext( $this->getContext() );
-               $context->setTitle( $this->getTitle() ); // Remove subpage
+               $context->setTitle( $this->getPageTitle() ); // Remove subpage
                $form = new HTMLForm( $this->getFormFields(), $context );
                // By now we are supposed to be sure that $this->mTarget is a user name
                $form->addPreText( $this->msg( 'emailpagetext', $this->mTarget )->parse() );
@@ -260,7 +260,7 @@ class SpecialEmailUser extends UnlistedSpecialPage {
                        'form',
                        array( 'method' => 'get', 'action' => $wgScript, 'id' => 'askusername' )
                ) .
-                       Html::hidden( 'title', $this->getTitle()->getPrefixedText() ) .
+                       Html::hidden( 'title', $this->getPageTitle()->getPrefixedText() ) .
                        Xml::openElement( 'fieldset' ) .
                        Html::rawElement( 'legend', null, $this->msg( 'emailtarget' )->parse() ) .
                        Xml::inputLabel(
@@ -330,9 +330,10 @@ class SpecialEmailUser extends UnlistedSpecialPage {
                        // This is a bit ugly, but will serve to differentiate
                        // wiki-borne mails from direct mails and protects against
                        // SPF and bounce problems with some mailers (see below).
-                       global $wgPasswordSender, $wgPasswordSenderName;
+                       global $wgPasswordSender;
 
-                       $mailFrom = new MailAddress( $wgPasswordSender, $wgPasswordSenderName );
+                       $mailFrom = new MailAddress( $wgPasswordSender,
+                               wfMessage( 'emailsender' )->inContentLanguage()->text() );
                        $replyTo = $from;
                } else {
                        // Put the sending user's e-mail address in the From: header.
index a78133c..7241105 100644 (file)
@@ -32,6 +32,9 @@ class SpecialExpandTemplates extends SpecialPage {
        /** @var boolean whether or not to show the XML parse tree */
        protected $generateXML;
 
+       /** @var boolean whether or not to show the raw HTML code */
+       protected $generateRawHtml;
+
        /** @var boolean whether or not to remove comments in the expanded wikitext */
        protected $removeComments;
 
@@ -58,10 +61,11 @@ class SpecialExpandTemplates extends SpecialPage {
                $title = Title::newFromText( $titleStr );
 
                if ( !$title ) {
-                       $title = $this->getTitle();
+                       $title = $this->getPageTitle();
                }
                $input = $request->getText( 'wpInput' );
                $this->generateXML = $request->getBool( 'wpGenerateXml' );
+               $this->generateRawHtml = $request->getBool( 'wpGenerateRawHtml' );
 
                if ( strlen( $input ) ) {
                        $this->removeComments = $request->getBool( 'wpRemoveComments', false );
@@ -113,7 +117,15 @@ class SpecialExpandTemplates extends SpecialPage {
                        }
 
                        $out->addHTML( $tmp );
-                       $this->showHtmlPreview( $title, $output, $out );
+
+                       $rawhtml = $this->generateHtml( $title, $output );
+
+                       if ( $this->generateRawHtml && strlen( $rawhtml ) > 0 ) {
+                               $out->addHTML( $this->makeOutput( $rawhtml, 'expand_templates_html_output' ) );
+                       }
+
+                       $this->showHtmlPreview( $title, $rawhtml, $out );
+
                }
 
        }
@@ -126,7 +138,7 @@ class SpecialExpandTemplates extends SpecialPage {
         * @return string
         */
        private function makeForm( $title, $input ) {
-               $self = $this->getTitle();
+               $self = $this->getPageTitle();
                $form = Xml::openElement(
                        'form',
                        array( 'method' => 'post', 'action' => $self->getLocalUrl() )
@@ -171,6 +183,12 @@ class SpecialExpandTemplates extends SpecialPage {
                        'generate_xml',
                        $this->generateXML
                ) . '</p>';
+               $form .= '<p>' . Xml::checkLabel(
+                       $this->msg( 'expand_templates_generate_rawhtml' )->text(),
+                       'wpGenerateRawHtml',
+                       'generate_rawhtml',
+                       $this->generateRawHtml
+               ) . '</p>';
                $form .= '<p>' . Xml::submitButton(
                        $this->msg( 'expand_templates_ok' )->text(),
                        array( 'accesskey' => 's' )
@@ -202,28 +220,42 @@ class SpecialExpandTemplates extends SpecialPage {
        }
 
        /**
-        * Render the supplied wiki text and append to the page as a preview
+        * Renders the supplied wikitext as html
         *
         * @param Title $title
         * @param string $text
-        * @param OutputPage $out
+        * @return string
         */
-       private function showHtmlPreview( Title $title, $text, OutputPage $out ) {
+       private function generateHtml( Title $title, $text ) {
                global $wgParser;
 
                $popts = ParserOptions::newFromContext( $this->getContext() );
                $popts->setTargetLanguage( $title->getPageLanguage() );
                $pout = $wgParser->parse( $text, $title, $popts );
-               $lang = $title->getPageViewLanguage();
 
+               return $pout->getText();
+       }
+
+       /**
+        * Wraps the provided html code in a div and outputs it to the page
+        *
+        * @param Title $title
+        * @param string $html
+        * @param OutputPage $out
+        */
+       private function showHtmlPreview( Title $title, $html, OutputPage $out ) {
+               $lang = $title->getPageViewLanguage();
                $out->addHTML( "<h2>" . $this->msg( 'expand_templates_preview' )->escaped() . "</h2>\n" );
                $out->addHTML( Html::openElement( 'div', array(
                        'class' => 'mw-content-' . $lang->getDir(),
                        'dir' => $lang->getDir(),
                        'lang' => $lang->getHtmlCode(),
                ) ) );
-
-               $out->addHTML( $pout->getText() );
+               $out->addHTML( $html );
                $out->addHTML( Html::closeElement( 'div' ) );
        }
+
+       protected function getGroupName() {
+               return 'wiki';
+       }
 }
index 61ed34d..6fb5e8c 100644 (file)
@@ -185,7 +185,7 @@ class SpecialExport extends SpecialPage {
                $out->addWikiMsg( 'exporttext' );
 
                $form = Xml::openElement( 'form', array( 'method' => 'post',
-                       'action' => $this->getTitle()->getLocalURL( 'action=submit' ) ) );
+                       'action' => $this->getPageTitle()->getLocalURL( 'action=submit' ) ) );
                $form .= Xml::inputLabel(
                        $this->msg( 'export-addcattext' )->text(),
                        'catname',
@@ -315,7 +315,7 @@ class SpecialExport extends SpecialPage {
                        foreach ( explode( "\n", $page ) as $pageName ) {
                                $pageName = trim( $pageName );
                                $title = Title::newFromText( $pageName );
-                               if ( $title && $title->getInterwiki() == '' && $title->getText() !== '' ) {
+                               if ( $title && !$title->isExternal() && $title->getText() !== '' ) {
                                        // Only record each page once!
                                        $pageSet[$title->getPrefixedText()] = true;
                                }
index 4c6593b..9cf5a73 100644 (file)
@@ -117,7 +117,7 @@ class FileDuplicateSearchPage extends QueryPage {
                                'form',
                                array( 'id' => 'fileduplicatesearch', 'method' => 'get', 'action' => $wgScript )
                        ) . "\n" .
-                               Html::hidden( 'title', $this->getTitle()->getPrefixedDBkey() ) . "\n" .
+                               Html::hidden( 'title', $this->getPageTitle()->getPrefixedDBkey() ) . "\n" .
                                Html::openElement( 'fieldset' ) . "\n" .
                                Html::element( 'legend', null, $this->msg( 'fileduplicatesearch-legend' )->text() ) . "\n" .
                                Xml::inputLabel(
index 1bc6c92..2ac34eb 100644 (file)
@@ -64,11 +64,11 @@ class SpecialImport extends SpecialPage {
                # @todo FIXME: Title::checkSpecialsAndNSPermissions() has a very wierd expectation of what
                # getUserPermissionsErrors() might actually be used for, hence the 'ns-specialprotected'
                $errors = wfMergeErrorArrays(
-                       $this->getTitle()->getUserPermissionsErrors(
+                       $this->getPageTitle()->getUserPermissionsErrors(
                                'import', $user, true,
                                array( 'ns-specialprotected', 'badaccess-group0', 'badaccess-groups' )
                        ),
-                       $this->getTitle()->getUserPermissionsErrors(
+                       $this->getPageTitle()->getUserPermissionsErrors(
                                'importupload', $user, true,
                                array( 'ns-specialprotected', 'badaccess-group0', 'badaccess-groups' )
                        )
@@ -203,7 +203,7 @@ class SpecialImport extends SpecialPage {
        private function showForm() {
                global $wgImportSources, $wgExportMaxLinkDepth;
 
-               $action = $this->getTitle()->getLocalURL( array( 'action' => 'submit' ) );
+               $action = $this->getPageTitle()->getLocalURL( array( 'action' => 'submit' ) );
                $user = $this->getUser();
                $out = $this->getOutput();
 
index 7069d52..57d314f 100644 (file)
@@ -68,7 +68,7 @@ class SpecialJavaScriptTest extends SpecialPage {
                                $this->msg( "javascripttest-$framework-name" )->plain()
                        ) );
                        $out->setSubtitle( $this->msg( 'javascripttest-backlink' )
-                               ->rawParams( Linker::linkKnown( $this->getTitle() ) ) );
+                               ->rawParams( Linker::linkKnown( $this->getPageTitle() ) ) );
                        $this->{self::$frameworks[$framework]}();
                } else {
                        // Framework not found, display error
@@ -97,7 +97,7 @@ class SpecialJavaScriptTest extends SpecialPage {
                                'li',
                                array(),
                                Linker::link(
-                                       $this->getTitle( $framework ),
+                                       $this->getPageTitle( $framework ),
                                        // Message: javascripttest-qunit-name
                                        $this->msg( "javascripttest-$framework-name" )->escaped()
                                )
index 5c121ba..0b5b825 100644 (file)
@@ -86,7 +86,7 @@ class LinkSearchPage extends QueryPage {
                        'form',
                        array( 'id' => 'mw-linksearch-form', 'method' => 'get', 'action' => $wgScript )
                ) . "\n" .
-                       Html::hidden( 'title', $this->getTitle()->getPrefixedDBkey() ) . "\n" .
+                       Html::hidden( 'title', $this->getPageTitle()->getPrefixedDBkey() ) . "\n" .
                        Html::openElement( 'fieldset' ) . "\n" .
                        Html::element( 'legend', array(), $this->msg( 'linksearch' )->text() ) . "\n" .
                        Xml::inputLabel(
index 7484995..ba3e73f 100644 (file)
@@ -33,6 +33,7 @@ class SpecialListFiles extends IncludableSpecialPage {
                if ( $this->including() ) {
                        $userName = $par;
                        $search = '';
+                       $showAll = false;
                } else {
                        $userName = $this->getRequest()->getText( 'user', $par );
                        $search = $this->getRequest()->getText( 'ilsearch', '' );
@@ -386,6 +387,20 @@ class ImageListPager extends TablePager {
                UserCache::singleton()->doQuery( $userIds, array( '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':
@@ -445,6 +460,8 @@ class ImageListPager extends TablePager {
                        case 'top':
                                // Messages: listfiles-latestversion-yes, listfiles-latestversion-no
                                return $this->msg( 'listfiles-latestversion-' . $value );
+                       default:
+                               throw new MWException( "Unknown field '$field'" );
                }
        }
 
index 3eeae31..dd78c4c 100644 (file)
@@ -112,7 +112,7 @@ class MIMEsearchPage extends QueryPage {
                                array( 'id' => 'specialmimesearch', 'method' => 'get', 'action' => $wgScript )
                        ) .
                                Xml::openElement( 'fieldset' ) .
-                               Html::hidden( 'title', $this->getTitle()->getPrefixedText() ) .
+                               Html::hidden( 'title', $this->getPageTitle()->getPrefixedText() ) .
                                Xml::element( 'legend', null, $this->msg( 'mimesearch' )->text() ) .
                                Xml::inputLabel( $this->msg( 'mimetype' )->text(), 'mime', 'mime', 20, $mime ) .
                                ' ' .
index fb5ea65..f799fc5 100644 (file)
@@ -142,7 +142,7 @@ class SpecialMergeHistory extends SpecialPage {
                                '<fieldset>' .
                                Xml::element( 'legend', array(),
                                        $this->msg( 'mergehistory-box' )->text() ) .
-                               Html::hidden( 'title', $this->getTitle()->getPrefixedDBkey() ) .
+                               Html::hidden( 'title', $this->getPageTitle()->getPrefixedDBkey() ) .
                                Html::hidden( 'submitted', '1' ) .
                                Html::hidden( 'mergepoint', $this->mTimestamp ) .
                                Xml::openElement( 'table' ) .
@@ -171,7 +171,7 @@ class SpecialMergeHistory extends SpecialPage {
                $haveRevisions = $revisions && $revisions->getNumRows() > 0;
 
                $out = $this->getOutput();
-               $titleObj = $this->getTitle();
+               $titleObj = $this->getPageTitle();
                $action = $titleObj->getLocalURL( array( 'action' => 'submit' ) );
                # Start the form here
                $top = Xml::openElement(
index 253e6cc..b29b3f9 100644 (file)
@@ -281,7 +281,7 @@ class MovePageForm extends UnlistedSpecialPage {
                                'form',
                                array(
                                        'method' => 'post',
-                                       'action' => $this->getTitle()->getLocalURL( 'action=submit' ),
+                                       'action' => $this->getPageTitle()->getLocalURL( 'action=submit' ),
                                        'id' => 'movepage'
                                )
                        ) .
@@ -351,7 +351,16 @@ class MovePageForm extends UnlistedSpecialPage {
                        );
                }
 
-               if ( $user->isAllowed( 'suppressredirect' ) && $handler->supportsRedirects() ) {
+               if ( $user->isAllowed( 'suppressredirect' ) ) {
+                       if ( $handler->supportsRedirects() ) {
+                               $isChecked = $this->leaveRedirect;
+                               $options = array();
+                       } else {
+                               $isChecked = false;
+                               $options = array(
+                                       'disabled' => 'disabled'
+                               );
+                       }
                        $out->addHTML( "
                                <tr>
                                        <td></td>
@@ -360,7 +369,8 @@ class MovePageForm extends UnlistedSpecialPage {
                                                $this->msg( 'move-leave-redirect' )->text(),
                                                'wpLeaveRedirect',
                                                'wpLeaveRedirect',
-                                               $this->leaveRedirect
+                                               $isChecked,
+                                               $options
                                        ) .
                                        "</td>
                                </tr>"
index 006510d..1e631f9 100644 (file)
@@ -194,7 +194,7 @@ class SpecialNewpages extends IncludableSpecialPage {
                $changed = $this->opts->getChangedValues();
                unset( $changed['offset'] ); // Reset offset if query type changes
 
-               $self = $this->getTitle();
+               $self = $this->getPageTitle();
                foreach ( $filters as $key => $msg ) {
                        $onoff = 1 - $this->opts->getValue( $key );
                        $link = Linker::link( $self, $showhide[$onoff], array(),
@@ -233,7 +233,7 @@ class SpecialNewpages extends IncludableSpecialPage {
                }
 
                $form = Xml::openElement( 'form', array( 'action' => $wgScript ) ) .
-                       Html::hidden( 'title', $this->getTitle()->getPrefixedDBkey() ) .
+                       Html::hidden( 'title', $this->getPageTitle()->getPrefixedDBkey() ) .
                        Xml::fieldset( $this->msg( 'newpages' )->text() ) .
                        Xml::openElement( 'table', array( 'id' => 'mw-newpages-table' ) ) .
                        '<tr>
@@ -430,7 +430,7 @@ class SpecialNewpages extends IncludableSpecialPage {
                $feed = new $wgFeedClasses[$type](
                        $this->feedTitle(),
                        $this->msg( 'tagline' )->text(),
-                       $this->getTitle()->getFullURL()
+                       $this->getPageTitle()->getFullURL()
                );
 
                $pager = new NewPagesPager( $this, $this->opts );
index 51454f6..4cfd445 100644 (file)
@@ -69,7 +69,7 @@ class SpecialPreferences extends SpecialPage {
                $this->getOutput()->addWikiMsg( 'prefs-reset-intro' );
 
                $context = new DerivativeContext( $this->getContext() );
-               $context->setTitle( $this->getTitle( 'reset' ) ); // Reset subpage
+               $context->setTitle( $this->getPageTitle( 'reset' ) ); // Reset subpage
                $htmlForm = new HTMLForm( array(), $context, 'prefs-restore' );
 
                $htmlForm->setSubmitTextMsg( 'restoreprefs' );
@@ -88,7 +88,7 @@ class SpecialPreferences extends SpecialPage {
                $user->resetOptions( 'all', $this->getContext() );
                $user->saveSettings();
 
-               $url = $this->getTitle()->getFullURL( 'success' );
+               $url = $this->getPageTitle()->getFullURL( 'success' );
 
                $this->getOutput()->redirect( $url );
 
index 28d07ff..c6307f0 100644 (file)
@@ -101,7 +101,7 @@ class SpecialPrefixindex extends SpecialAllpages {
 
                $out = Xml::openElement( 'div', array( 'class' => 'namespaceoptions' ) );
                $out .= Xml::openElement( 'form', array( 'method' => 'get', 'action' => $wgScript ) );
-               $out .= Html::hidden( 'title', $this->getTitle()->getPrefixedText() );
+               $out .= Html::hidden( 'title', $this->getPageTitle()->getPrefixedText() );
                $out .= Xml::openElement( 'fieldset' );
                $out .= Xml::element( 'legend', null, $this->msg( 'allpages' )->text() );
                $out .= Xml::openElement( 'table', array( 'id' => 'nsselect', 'class' => 'allpages' ) );
@@ -249,7 +249,7 @@ class SpecialPrefixindex extends SpecialAllpages {
                        $out2 = '';
                } else {
                        $nsForm = $this->namespacePrefixForm( $namespace, $prefix );
-                       $self = $this->getTitle();
+                       $self = $this->getPageTitle();
                        $out2 = Xml::openElement( 'table', array( 'id' => 'mw-prefixindex-nav-table' ) ) .
                                '<tr>
                                        <td>' .
index 3de6ea2..214fbd9 100644 (file)
@@ -52,6 +52,7 @@ class SpecialProtectedpages extends SpecialPage {
                $ns = $request->getIntOrNull( 'namespace' );
                $indefOnly = $request->getBool( 'indefonly' ) ? 1 : 0;
                $cascadeOnly = $request->getBool( 'cascadeonly' ) ? 1 : 0;
+               $noRedirect = $request->getBool( 'noredirect' ) ? 1 : 0;
 
                $pager = new ProtectedPagesPager(
                        $this,
@@ -62,7 +63,8 @@ class SpecialProtectedpages extends SpecialPage {
                        $sizetype,
                        $size,
                        $indefOnly,
-                       $cascadeOnly
+                       $cascadeOnly,
+                       $noRedirect
                );
 
                $this->getOutput()->addHTML( $this->showOptions(
@@ -72,7 +74,8 @@ class SpecialProtectedpages extends SpecialPage {
                        $sizetype,
                        $size,
                        $indefOnly,
-                       $cascadeOnly
+                       $cascadeOnly,
+                       $noRedirect
                ) );
 
                if ( $pager->getNumRows() ) {
@@ -186,21 +189,22 @@ class SpecialProtectedpages extends SpecialPage {
        }
 
        /**
-        * @param $namespace Integer
-        * @param string $type restriction type
-        * @param string $level restriction level
+        * @param int $namespace
+        * @param string $type Restriction type
+        * @param string $level Restriction level
         * @param string $sizetype "min" or "max"
-        * @param $size Integer
-        * @param $indefOnly Boolean: only indefinie protection
-        * @param $cascadeOnly Boolean: only cascading protection
+        * @param int $size
+        * @param bool $indefOnly Only indefinite protection
+        * @param bool $cascadeOnly Only cascading protection
+        * @param bool $noRedirect Don't show redirects
         * @return String: input form
         */
        protected function showOptions( $namespace, $type = 'edit', $level, $sizetype,
-               $size, $indefOnly, $cascadeOnly
+               $size, $indefOnly, $cascadeOnly, $noRedirect
        ) {
                global $wgScript;
 
-               $title = $this->getTitle();
+               $title = $this->getPageTitle();
 
                return Xml::openElement( 'form', array( 'method' => 'get', 'action' => $wgScript ) ) .
                        Xml::openElement( 'fieldset' ) .
@@ -212,6 +216,7 @@ class SpecialProtectedpages extends SpecialPage {
                        "<br /><span style='white-space: nowrap'>" .
                        $this->getExpiryCheck( $indefOnly ) . "&#160;\n" .
                        $this->getCascadeCheck( $cascadeOnly ) . "&#160;\n" .
+                       $this->getRedirectCheck( $noRedirect ) . "&#160;\n" .
                        "</span><br /><span style='white-space: nowrap'>" .
                        $this->getSizeLimit( $sizetype, $size ) . "&#160;\n" .
                        "</span>" .
@@ -269,6 +274,19 @@ class SpecialProtectedpages extends SpecialPage {
                ) . "\n";
        }
 
+       /**
+        * @param bool $noRedirect
+        * @return string Formatted HTML
+        */
+       protected function getRedirectCheck( $noRedirect ) {
+               return Xml::checkLabel(
+                       $this->msg( 'protectedpages-noredirect' )->text(),
+                       'noredirect',
+                       'noredirect',
+                       $noRedirect
+               ) . "\n";
+       }
+
        /**
         * @param string $sizetype "min" or "max"
         * @param mixed $size
@@ -372,10 +390,10 @@ class SpecialProtectedpages extends SpecialPage {
  */
 class ProtectedPagesPager extends AlphabeticPager {
        public $mForm, $mConds;
-       private $type, $level, $namespace, $sizetype, $size, $indefonly;
+       private $type, $level, $namespace, $sizetype, $size, $indefonly, $cascadeonly, $noredirect;
 
        function __construct( $form, $conds = array(), $type, $level, $namespace,
-               $sizetype = '', $size = 0, $indefonly = false, $cascadeonly = false
+               $sizetype = '', $size = 0, $indefonly = false, $cascadeonly = false, $noredirect = false
        ) {
                $this->mForm = $form;
                $this->mConds = $conds;
@@ -386,6 +404,7 @@ class ProtectedPagesPager extends AlphabeticPager {
                $this->size = intval( $size );
                $this->indefonly = (bool)$indefonly;
                $this->cascadeonly = (bool)$cascadeonly;
+               $this->noredirect = (bool)$noredirect;
                parent::__construct( $form->getContext() );
        }
 
@@ -424,6 +443,9 @@ class ProtectedPagesPager extends AlphabeticPager {
                if ( $this->cascadeonly ) {
                        $conds[] = 'pr_cascade = 1';
                }
+               if ( $this->noredirect ) {
+                       $conds[] = 'page_is_redirect = 0';
+               }
 
                if ( $this->level ) {
                        $conds[] = 'pr_level=' . $this->mDb->addQuotes( $this->level );
index 078e7b1..c3ebd80 100644 (file)
@@ -135,7 +135,7 @@ class SpecialProtectedtitles extends SpecialPage {
        function showOptions( $namespace, $type = 'edit', $level ) {
                global $wgScript;
                $action = htmlspecialchars( $wgScript );
-               $title = $this->getTitle();
+               $title = $this->getPageTitle();
                $special = htmlspecialchars( $title->getPrefixedDBkey() );
 
                return "<form action=\"$action\" method=\"get\">\n" .
index 14123a8..4e2f0e7 100644 (file)
@@ -101,7 +101,7 @@ class SpecialRandomInCategory extends SpecialPage {
 
                        $msg = $this->msg( 'randomincategory-selectcategory' );
                        $form = Html::rawElement( 'form', array( 'action' => $wgScript ),
-                               Html::hidden( 'title', $this->getTitle()->getPrefixedText() ) .
+                               Html::hidden( 'title', $this->getPageTitle()->getPrefixedText() ) .
                                $msg->rawParams( $input, $submit )->parse()
                        );
                        $this->getOutput()->addHtml( $form );
index c94d2b3..086193e 100644 (file)
@@ -144,7 +144,6 @@ class RandomPage extends SpecialPage {
                        ), $this->extra ),
                        'options' => array(
                                'ORDER BY' => 'page_random',
-                               'USE INDEX' => 'page_random',
                                'LIMIT' => 1,
                        ),
                        'join_conds' => array()
index 66cd2ff..8a119f5 100644 (file)
  *
  * @ingroup SpecialPage
  */
-class SpecialRecentChanges extends IncludableSpecialPage {
+class SpecialRecentChanges extends SpecialPage {
        var $rcOptions, $rcSubpage;
        protected $customFilters;
 
-       public function __construct( $name = 'Recentchanges' ) {
-               parent::__construct( $name );
+       /**
+        * The feed format to output as (either 'rss' or 'atom'), or null if no
+        * feed output was requested
+        *
+        * @var string $feedFormat
+        */
+       protected $feedFormat;
+
+       public function __construct( $name = 'Recentchanges', $restriction = '' ) {
+               parent::__construct( $name, $restriction );
+       }
+
+       public function isIncludable() {
+               return true;
        }
 
        /**
@@ -69,10 +81,11 @@ class SpecialRecentChanges extends IncludableSpecialPage {
         * Create a FormOptions object with options as specified by the user
         *
         * @param array $parameters
-        *
         * @return FormOptions
         */
        public function setup( $parameters ) {
+               global $wgFeedLimit;
+
                $opts = $this->getDefaultOptions();
 
                foreach ( $this->getCustomFilters() as $key => $params ) {
@@ -86,7 +99,7 @@ class SpecialRecentChanges extends IncludableSpecialPage {
                        $this->parseParameters( $parameters, $opts );
                }
 
-               $opts->validateIntBounds( 'limit', 0, 5000 );
+               $opts->validateIntBounds( 'limit', 0, $this->feedFormat ? $wgFeedLimit : 5000 );
 
                return $opts;
        }
@@ -105,31 +118,12 @@ class SpecialRecentChanges extends IncludableSpecialPage {
                return $this->customFilters;
        }
 
-       /**
-        * Create a FormOptions object specific for feed requests and return it
-        *
-        * @return FormOptions
-        */
-       public function feedSetup() {
-               global $wgFeedLimit;
-               $opts = $this->getDefaultOptions();
-               $opts->fetchValuesFromRequest( $this->getRequest() );
-               $opts->validateIntBounds( 'limit', 0, $wgFeedLimit );
-
-               return $opts;
-       }
-
        /**
         * Get the current FormOptions for this request
         */
        public function getOptions() {
                if ( $this->rcOptions === null ) {
-                       if ( $this->including() ) {
-                               $isFeed = false;
-                       } else {
-                               $isFeed = (bool)$this->getRequest()->getVal( 'feed' );
-                       }
-                       $this->rcOptions = $isFeed ? $this->feedSetup() : $this->setup( $this->rcSubpage );
+                       $this->rcOptions = $this->setup( $this->rcSubpage );
                }
 
                return $this->rcOptions;
@@ -142,12 +136,12 @@ class SpecialRecentChanges extends IncludableSpecialPage {
         */
        public function execute( $subpage ) {
                $this->rcSubpage = $subpage;
-               $feedFormat = $this->including() ? null : $this->getRequest()->getVal( 'feed' );
+               $this->feedFormat = $this->including() ? null : $this->getRequest()->getVal( 'feed' );
 
                # 10 seconds server-side caching max
                $this->getOutput()->setSquidMaxage( 10 );
                # Check if the client has a cached version
-               $lastmod = $this->checkLastModified( $feedFormat );
+               $lastmod = $this->checkLastModified( $this->feedFormat );
                if ( $lastmod === false ) {
                        return;
                }
@@ -168,7 +162,7 @@ class SpecialRecentChanges extends IncludableSpecialPage {
                        return;
                }
 
-               if ( !$feedFormat ) {
+               if ( !$this->feedFormat ) {
                        $batch = new LinkBatch;
                        foreach ( $rows as $row ) {
                                $batch->add( NS_USER, $row->rc_user_text );
@@ -177,8 +171,8 @@ class SpecialRecentChanges extends IncludableSpecialPage {
                        }
                        $batch->execute();
                }
-               if ( $feedFormat ) {
-                       list( $changesFeed, $formatter ) = $this->getFeedObject( $feedFormat );
+               if ( $this->feedFormat ) {
+                       list( $changesFeed, $formatter ) = $this->getFeedObject( $this->feedFormat );
                        /** @var ChangesFeed $changesFeed */
                        $changesFeed->execute( $formatter, $rows, $lastmod, $opts );
                } else {
@@ -199,7 +193,7 @@ class SpecialRecentChanges extends IncludableSpecialPage {
                $formatter = $changesFeed->getFeedObject(
                        $this->msg( 'recentchanges' )->inContentLanguage()->text(),
                        $this->msg( 'recentchanges-feed-description' )->inContentLanguage()->text(),
-                       $this->getTitle()->getFullURL()
+                       $this->getPageTitle()->getFullURL()
                );
 
                return array( $changesFeed, $formatter );
@@ -603,7 +597,7 @@ class SpecialRecentChanges extends IncludableSpecialPage {
                        $out .= Html::hidden( $key, $value );
                }
 
-               $t = $this->getTitle();
+               $t = $this->getPageTitle();
                $out .= Html::hidden( 'title', $t->getPrefixedText() );
                $form = Xml::tags( 'form', array( 'action' => $wgScript ), $out );
                $panel[] = $form;
@@ -653,7 +647,9 @@ class SpecialRecentChanges extends IncludableSpecialPage {
        }
 
        /**
-        * Return the legend displayed within the fieldset
+        * Return the legend displayed within the fieldset.
+        *
+        * This method is also called from SpecialWatchlist.
         *
         * @param $context the object available as $this in non-static functions
         * @return string
@@ -662,7 +658,7 @@ class SpecialRecentChanges extends IncludableSpecialPage {
                global $wgRecentChangesFlags;
                $user = $context->getUser();
                # The legend showing what the letters and stuff mean
-               $legend = Xml::openElement( 'dl', array( 'class' => 'mw-changeslist-legend' ) ) . "\n";
+               $legend = Xml::openElement( 'dl' ) . "\n";
                # Iterates through them and gets the messages for both letter and tooltip
                $legendItems = $wgRecentChangesFlags;
                if ( !$user->useRCPatrol() ) {
@@ -698,6 +694,14 @@ class SpecialRecentChanges extends IncludableSpecialPage {
                        $context->msg( 'recentchanges-label-plusminus' )->text()
                ) . "\n";
                $legend .= Xml::closeElement( 'dl' ) . "\n";
+
+               # Collapsibility
+               $legend =
+                       '<div class="mw-changeslist-legend">' .
+                               $context->msg( 'recentchanges-legend-heading' )->parse() .
+                               '<div class="mw-collapsible-content">' . $legend . '</div>' .
+                       '</div>';
+
                return $legend;
        }
 
@@ -862,7 +866,7 @@ class SpecialRecentChanges extends IncludableSpecialPage {
                        $text = '<strong>' . $text . '</strong>';
                }
 
-               return Linker::linkKnown( $this->getTitle(), $text, array(), $params );
+               return Linker::linkKnown( $this->getPageTitle(), $text, array(), $params );
        }
 
        /**
index f37ea20..9a9cd13 100644 (file)
@@ -26,7 +26,7 @@
  *
  * @ingroup SpecialPage
  */
-class SpecialRecentchangeslinked extends SpecialRecentChanges {
+class SpecialRecentChangesLinked extends SpecialRecentChanges {
        var $rclTargetTitle;
 
        function __construct() {
@@ -44,19 +44,13 @@ class SpecialRecentchangeslinked extends SpecialRecentChanges {
                $opts['target'] = $par;
        }
 
-       public function feedSetup() {
-               $opts = parent::feedSetup();
-               $opts['target'] = $this->getRequest()->getVal( 'target' );
-               return $opts;
-       }
-
        public function getFeedObject( $feedFormat ) {
                $feed = new ChangesFeed( $feedFormat, false );
                $feedObj = $feed->getFeedObject(
                        $this->msg( 'recentchangeslinked-title', $this->getTargetTitle()->getPrefixedText() )
                                ->inContentLanguage()->text(),
                        $this->msg( 'recentchangeslinked-feed' )->inContentLanguage()->text(),
-                       $this->getTitle()->getFullURL()
+                       $this->getPageTitle()->getFullURL()
                );
                return array( $feed, $feedObj );
        }
@@ -71,7 +65,7 @@ class SpecialRecentchangeslinked extends SpecialRecentChanges {
                }
                $outputPage = $this->getOutput();
                $title = Title::newFromURL( $target );
-               if ( !$title || $title->getInterwiki() != '' ) {
+               if ( !$title || $title->isExternal() ) {
                        $outputPage->addHtml( '<div class="errorbox">' . $this->msg( 'allpagesbadtitle' )->parse() . '</div>' );
                        return false;
                }
index f05dacb..8ec6f85 100644 (file)
@@ -135,6 +135,25 @@ class SpecialRedirect extends FormSpecialPage {
                ) );
        }
 
+       /**
+        * Handle Special:Redirect/page/xxx (by redirecting to index.php?curid=xxx)
+        *
+        * @return string|null url to redirect to, or null if $mValue is invalid.
+        */
+       function dispatchPage() {
+               $curid = $this->mValue;
+               if ( !ctype_digit( $curid ) ) {
+                       return null;
+               }
+               $curid = (int)$curid;
+               if ( $curid === 0 ) {
+                       return null;
+               }
+               return wfAppendQuery( wfScript( 'index' ), array(
+                       'curid' => $curid
+               ) );
+       }
+
        /**
         * Use appropriate dispatch* method to obtain a redirection URL,
         * and either: redirect, set a 404 error code and error message,
@@ -155,6 +174,9 @@ class SpecialRedirect extends FormSpecialPage {
                case 'revision':
                        $url = $this->dispatchRevision();
                        break;
+               case 'page':
+                       $url = $this->dispatchPage();
+                       break;
                default:
                        $this->getOutput()->setStatusCode( 404 );
                        $url = null;
@@ -177,8 +199,10 @@ class SpecialRedirect extends FormSpecialPage {
                $mp = $this->getMessagePrefix();
                $ns = array(
                        // subpage => message
-                       // Messages: redirect-user, redirect-revision, redirect-file
+                       // Messages: redirect-user, redirect-page, redirect-revision,
+                       // redirect-file
                        'user' => $mp . '-user',
+                       'page' => $mp . '-page',
                        'revision' => $mp . '-revision',
                        'file' => $mp . '-file',
                );
index 87705a8..804f7a9 100644 (file)
@@ -272,7 +272,7 @@ class SpecialRevisionDelete extends UnlistedSpecialPage {
                        $this->getOutput()->addHTML(
                                Xml::openElement( 'form', array(
                                        'method' => 'POST',
-                                       'action' => $this->getTitle()->getLocalURL( array(
+                                       'action' => $this->getPageTitle()->getLocalURL( array(
                                                        'target' => $this->targetObj->getPrefixedDBkey(),
                                                        'file' => $archiveName,
                                                        'token' => $user->getEditToken( $archiveName ),
@@ -357,7 +357,7 @@ class SpecialRevisionDelete extends UnlistedSpecialPage {
                // Show form if the user can submit
                if ( $this->mIsAllowed ) {
                        $out = Xml::openElement( 'form', array( 'method' => 'post',
-                                       'action' => $this->getTitle()->getLocalURL( array( 'action' => 'submit' ) ),
+                                       'action' => $this->getPageTitle()->getLocalURL( array( 'action' => 'submit' ) ),
                                        'id' => 'mw-revdel-form-revisions' ) ) .
                                Xml::fieldset( $this->msg( 'revdelete-legend' )->text() ) .
                                $this->buildCheckBoxes() .
@@ -438,7 +438,7 @@ class SpecialRevisionDelete extends UnlistedSpecialPage {
                        $list->reset();
                        $bitfield = $list->current()->getBits(); // existing field
                        if ( $this->submitClicked ) {
-                               $bitfield = $this->extractBitfield( $this->extractBitParams(), $bitfield );
+                               $bitfield = RevisionDeleter::extractBitfield( $this->extractBitParams(), $bitfield );
                        }
                        foreach ( $this->checks as $item ) {
                                list( $message, $name, $field ) = $item;
@@ -557,17 +557,6 @@ class SpecialRevisionDelete extends UnlistedSpecialPage {
                return $bitfield;
        }
 
-       /**
-        * Put together a rev_deleted bitfield
-        * @deprecated since 1.22, use RevisionDeleter::extractBitfield instead
-        * @param array $bitPars extractBitParams() params
-        * @param int $oldfield current bitfield
-        * @return array
-        */
-       public static function extractBitfield( $bitPars, $oldfield ) {
-               return RevisionDeleter::extractBitfield( $bitPars, $oldfield );
-       }
-
        /**
         * Do the write operations. Simple wrapper for RevDel_*List::setVisibility().
         * @param $bitfield
index b6b219f..62eeb40 100644 (file)
@@ -87,7 +87,7 @@ class SpecialSearch extends SpecialPage {
                $out = $this->getOutput();
                $out->allowClickjacking();
                $out->addModuleStyles( array(
-                       'mediawiki.special', 'mediawiki.special.search', 'mediawiki.ui'
+                       'mediawiki.special', 'mediawiki.special.search', 'mediawiki.ui', 'mediawiki.ui.button'
                ) );
 
                // Strip underscores from title parameter; most of the time we'll want
@@ -375,7 +375,7 @@ class SpecialSearch extends SpecialPage {
                if ( $num || $this->offset ) {
                        // Show the create link ahead
                        $this->showCreateLink( $t, $num );
-                       $prevnext = $this->getLanguage()->viewPrevNext( $this->getTitle(), $this->offset, $this->limit,
+                       $prevnext = $this->getLanguage()->viewPrevNext( $this->getPageTitle(), $this->offset, $this->limit,
                                $this->powerSearchOptions() + array( 'search' => $term ),
                                max( $titleMatchesNum, $textMatchesNum ) < $this->limit
                        );
@@ -476,7 +476,7 @@ class SpecialSearch extends SpecialPage {
                if ( strval( $term ) !== '' ) {
                        $out->setPageTitle( $this->msg( 'searchresults' ) );
                        $out->setHTMLTitle( $this->msg( 'pagetitle' )
-                               ->rawParams( $this->msg( 'searchresults-title' )->rawParams( $term ) )
+                               ->rawParams( $this->msg( 'searchresults-title' )->rawParams( $term )->text() )
                                ->inContentLanguage()->text()
                        );
                }
@@ -1089,7 +1089,7 @@ class SpecialSearch extends SpecialPage {
         * @return string
         */
        protected function shortDialog( $term ) {
-               $out = Html::hidden( 'title', $this->getTitle()->getPrefixedText() );
+               $out = Html::hidden( 'title', $this->getPageTitle()->getPrefixedText() );
                $out .= Html::hidden( 'profile', $this->profile ) . "\n";
                // Term box
                $out .= Html::input( 'search', $term, 'search', array(
@@ -1134,7 +1134,7 @@ class SpecialSearch extends SpecialPage {
                return Xml::element(
                        'a',
                        array(
-                               'href' => $this->getTitle()->getLocalURL( $stParams ),
+                               'href' => $this->getPageTitle()->getLocalURL( $stParams ),
                                'title' => $tooltip
                        ),
                        $label
index 0042b43..3ed3ac3 100644 (file)
@@ -68,7 +68,7 @@ class SpecialSpecialpages extends UnlistedSpecialPage {
                                        $groups[$group] = array();
                                }
                                $groups[$group][$page->getDescription()] = array(
-                                       $page->getTitle(),
+                                       $page->getPageTitle(),
                                        $page->isRestricted(),
                                        $page->isCached()
                                );
index 264eb46..0dd5a0c 100644 (file)
@@ -809,7 +809,7 @@ class SpecialUndelete extends SpecialPage {
                $out->addHTML(
                        Xml::openElement( 'form', array( 'method' => 'get', 'action' => $wgScript ) ) .
                                Xml::fieldset( $this->msg( 'undelete-search-box' )->text() ) .
-                               Html::hidden( 'title', $this->getTitle()->getPrefixedDBkey() ) .
+                               Html::hidden( 'title', $this->getPageTitle()->getPrefixedDBkey() ) .
                                Html::rawElement(
                                        'label',
                                        array( 'for' => 'prefix' ),
@@ -849,7 +849,7 @@ class SpecialUndelete extends SpecialPage {
 
                $out->addWikiMsg( 'undeletepagetext', $this->getLanguage()->formatNum( $result->numRows() ) );
 
-               $undelete = $this->getTitle();
+               $undelete = $this->getPageTitle();
                $out->addHTML( "<ul>\n" );
                foreach ( $result as $row ) {
                        $title = Title::makeTitleSafe( $row->ar_namespace, $row->ar_title );
@@ -932,7 +932,7 @@ class SpecialUndelete extends SpecialPage {
                }
 
                $link = Linker::linkKnown(
-                       $this->getTitle( $this->mTargetObj->getPrefixedDBkey() ),
+                       $this->getPageTitle( $this->mTargetObj->getPrefixedDBkey() ),
                        htmlspecialchars( $this->mTargetObj->getPrefixedText() )
                );
 
@@ -1015,7 +1015,7 @@ class SpecialUndelete extends SpecialPage {
                                        'style' => 'clear: both' ) ) .
                                Xml::openElement( 'form', array(
                                        'method' => 'post',
-                                       'action' => $this->getTitle()->getLocalURL( array( 'action' => 'submit' ) ) ) ) .
+                                       'action' => $this->getPageTitle()->getLocalURL( array( 'action' => 'submit' ) ) ) ) .
                                Xml::element( 'input', array(
                                        'type' => 'hidden',
                                        'name' => 'target',
@@ -1074,7 +1074,7 @@ class SpecialUndelete extends SpecialPage {
                $isDeleted = !( $rev->getId() && $rev->getTitle() );
                if ( $isDeleted ) {
                        /// @todo FIXME: $rev->getTitle() is null for deleted revs...?
-                       $targetPage = $this->getTitle();
+                       $targetPage = $this->getPageTitle();
                        $targetQuery = array(
                                'target' => $this->mTargetObj->getPrefixedText(),
                                'timestamp' => wfTimestamp( TS_MW, $rev->getTimestamp() )
@@ -1145,7 +1145,7 @@ class SpecialUndelete extends SpecialPage {
                $out->addHTML(
                        Xml::openElement( 'form', array(
                                        'method' => 'POST',
-                                       'action' => $this->getTitle()->getLocalURL( array(
+                                       'action' => $this->getPageTitle()->getLocalURL( array(
                                                'target' => $this->mTarget,
                                                'file' => $key,
                                                'token' => $user->getEditToken( $key ),
@@ -1233,7 +1233,7 @@ class SpecialUndelete extends SpecialPage {
                }
 
                if ( $this->mAllowed ) {
-                       $action = $this->getTitle()->getLocalURL( array( 'action' => 'submit' ) );
+                       $action = $this->getPageTitle()->getLocalURL( array( 'action' => 'submit' ) );
                        # Start the form here
                        $top = Xml::openElement(
                                'form',
@@ -1364,7 +1364,7 @@ class SpecialUndelete extends SpecialPage {
                // Build page & diff links...
                $user = $this->getUser();
                if ( $this->mCanView ) {
-                       $titleObj = $this->getTitle();
+                       $titleObj = $this->getPageTitle();
                        # Last link
                        if ( !$rev->userCan( Revision::DELETED_TEXT, $this->getUser() ) ) {
                                $pageLink = htmlspecialchars( $this->getLanguage()->userTimeAndDate( $ts, $user ) );
@@ -1430,7 +1430,7 @@ class SpecialUndelete extends SpecialPage {
                if ( $this->mAllowed && $row->fa_storage_key ) {
                        $checkBox = Xml::check( 'fileid' . $row->fa_id );
                        $key = urlencode( $row->fa_storage_key );
-                       $pageLink = $this->getFileLink( $file, $this->getTitle(), $ts, $key );
+                       $pageLink = $this->getFileLink( $file, $this->getPageTitle(), $ts, $key );
                } else {
                        $checkBox = '';
                        $pageLink = $this->getLanguage()->userTimeAndDate( $ts, $user );
index 7c05001..27ba78e 100644 (file)
@@ -220,7 +220,7 @@ class SpecialUpload extends SpecialPage {
        protected function getUploadForm( $message = '', $sessionKey = '', $hideIgnoreWarning = false ) {
                # Initialize form
                $context = new DerivativeContext( $this->getContext() );
-               $context->setTitle( $this->getTitle() ); // Remove subpage
+               $context->setTitle( $this->getPageTitle() ); // Remove subpage
                $form = new UploadForm( array(
                        'watch' => $this->getWatchCheck(),
                        'forreupload' => $this->mForReUpload,
@@ -348,9 +348,14 @@ class SpecialUpload extends SpecialPage {
                        } elseif ( $warning == 'duplicate' ) {
                                $msg = $this->getDupeWarning( $args );
                        } elseif ( $warning == 'duplicate-archive' ) {
-                               $msg = "\t<li>" . $this->msg( 'file-deleted-duplicate',
-                                               Title::makeTitle( NS_FILE, $args )->getPrefixedText() )->parse()
-                                       . "</li>\n";
+                               if ( $args === '' ) {
+                                       $msg = "\t<li>" . $this->msg( 'file-deleted-duplicate-notitle' )->parse()
+                                               . "</li>\n";
+                               } else {
+                                       $msg = "\t<li>" . $this->msg( 'file-deleted-duplicate',
+                                                       Title::makeTitle( NS_FILE, $args )->getPrefixedText() )->parse()
+                                               . "</li>\n";
+                               }
                        } else {
                                if ( $args === true ) {
                                        $args = array();
index 1373df1..37bfa39 100644 (file)
@@ -346,7 +346,7 @@ class SpecialUploadStash extends UnlistedSpecialPage {
                // this design is extremely dubious, but supposedly HTMLForm is our standard now?
 
                $context = new DerivativeContext( $this->getContext() );
-               $context->setTitle( $this->getTitle() ); // Remove subpage
+               $context->setTitle( $this->getPageTitle() ); // Remove subpage
                $form = new HTMLForm( array(
                        'Clear' => array(
                                'type' => 'hidden',
@@ -362,7 +362,7 @@ class SpecialUploadStash extends UnlistedSpecialPage {
 
                // show the files + form, if there are any, or just say there are none
                $refreshHtml = Html::element( 'a',
-                       array( 'href' => $this->getTitle()->getLocalURL() ),
+                       array( 'href' => $this->getPageTitle()->getLocalURL() ),
                        $this->msg( 'uploadstash-refresh' )->text() );
                $files = $this->stash->listFiles();
                if ( $files && count( $files ) ) {
@@ -372,7 +372,7 @@ class SpecialUploadStash extends UnlistedSpecialPage {
                                // TODO: Use Linker::link or even construct the list in plain wikitext
                                $fileListItemsHtml .= Html::rawElement( 'li', array(),
                                        Html::element( 'a', array( 'href' =>
-                                               $this->getTitle( "file/$file" )->getLocalURL() ), $file )
+                                               $this->getPageTitle( "file/$file" )->getLocalURL() ), $file )
                                );
                        }
                        $this->getOutput()->addHtml( Html::rawElement( 'ul', array(), $fileListItemsHtml ) );
index e701e0f..3e67d56 100644 (file)
@@ -318,7 +318,7 @@ class LoginForm extends SpecialPage {
                        # Confirm that the account was created
                        $out->setPageTitle( $this->msg( 'accountcreated' ) );
                        $out->addWikiMsg( 'accountcreatedtext', $u->getName() );
-                       $out->addReturnTo( $this->getTitle() );
+                       $out->addReturnTo( $this->getPageTitle() );
                        wfRunHooks( 'AddNewAccount', array( $u, false ) );
                        $u->addNewUserLogEntry( 'create2', $this->mReason );
                }
@@ -390,7 +390,7 @@ class LoginForm extends SpecialPage {
                }
 
                # Include checks that will include GlobalBlocking (Bug 38333)
-               $permErrors = $this->getTitle()->getUserPermissionsErrors( 'createaccount', $currentUser, true );
+               $permErrors = $this->getPageTitle()->getUserPermissionsErrors( 'createaccount', $currentUser, true );
                if ( count( $permErrors ) ) {
                                throw new PermissionsError( 'createaccount', $permErrors );
                }
@@ -507,9 +507,12 @@ class LoginForm extends SpecialPage {
                $u->setOption( 'rememberpassword', $this->mRemember ? 1 : 0 );
                $u->saveSettings();
 
-               # Update user count
+               // Update user count
                DeferredUpdates::addUpdate( new SiteStatsUpdate( 0, 0, 0, 0, 1 ) );
 
+               // Watch user's userpage and talk page
+               $u->addWatch( $u->getUserPage(), WatchedItem::IGNORE_USER_RIGHTS );
+
                return Status::newGood( $u );
        }
 
@@ -853,7 +856,9 @@ class LoginForm extends SpecialPage {
        function resetLoginForm( $error ) {
                $this->getOutput()->addHTML( Xml::element( 'p', array( 'class' => 'error' ), $error ) );
                $reset = new SpecialChangePassword();
-               $reset->setContext( $this->getContext() );
+               $derivative = new DerivativeContext( $this->getContext() );
+               $derivative->setTitle( $reset->getPageTitle() );
+               $reset->setContext( $derivative );
                $reset->execute( null );
        }
 
@@ -977,14 +982,23 @@ class LoginForm extends SpecialPage {
                # haven't bothered to log out before trying to create an account to
                # evade it, but we'll leave that to their guilty conscience to figure
                # out.
+               $errorParams = array(
+                       $block->getTarget(),
+                       $block->mReason ? $block->mReason : $this->msg( 'blockednoreason' )->text(),
+                       $block->getByName()
+               );
+
+               if ( $block->getType() === Block::TYPE_RANGE ) {
+                       $errorMessage = 'cantcreateaccount-range-text';
+                       $errorParams[] = $this->getRequest()->getIP();
+               } else {
+                       $errorMessage = 'cantcreateaccount-text';
+               }
+
                throw new ErrorPageError(
                        'cantcreateaccounttitle',
-                       'cantcreateaccount-text',
-                       array(
-                               $block->getTarget(),
-                               $block->mReason ? $block->mReason : $this->msg( 'blockednoreason' )->text(),
-                               $block->getByName()
-                       )
+                       $errorMessage,
+                       $errorParams
                );
        }
 
@@ -1063,7 +1077,7 @@ class LoginForm extends SpecialPage {
                global $wgAuth, $wgEmailConfirmToEdit, $wgCookieExpiration;
                global $wgSecureLogin, $wgPasswordResetRoutes;
 
-               $titleObj = $this->getTitle();
+               $titleObj = $this->getPageTitle();
                $user = $this->getUser();
                $out = $this->getOutput();
 
@@ -1091,36 +1105,44 @@ class LoginForm extends SpecialPage {
                        }
                }
 
-               if ( $this->mType == 'signup' ) {
-                       $template = new UsercreateTemplate();
+               // Generic styles and scripts for both login and signup form
+               $out->addModuleStyles( array(
+                       'mediawiki.ui',
+                       'mediawiki.ui.button',
+                       'mediawiki.special.userlogin.common.styles'
+               ) );
+               $out->addModules( array(
+                       'mediawiki.special.userlogin.common.js'
+               ) );
 
-                       $out->addModuleStyles( array(
-                               'mediawiki.ui',
-                               'mediawiki.special.createaccount'
-                       ) );
+               if ( $this->mType == 'signup' ) {
                        // XXX hack pending RL or JS parse() support for complex content messages
                        // https://bugzilla.wikimedia.org/show_bug.cgi?id=25349
                        $out->addJsConfigVars( 'wgCreateacctImgcaptchaHelp',
                                $this->msg( 'createacct-imgcaptcha-help' )->parse() );
+
+                       // Additional styles and scripts for signup form
                        $out->addModules( array(
-                               'mediawiki.special.createaccount.js'
+                               'mediawiki.special.userlogin.signup.js'
+                       ) );
+                       $out->addModuleStyles( array(
+                               'mediawiki.special.userlogin.signup.styles'
                        ) );
+
+                       $template = new UsercreateTemplate();
+
                        // Must match number of benefits defined in messages
                        $template->set( 'benefitCount', 3 );
 
                        $q = 'action=submitlogin&type=signup';
                        $linkq = 'type=login';
                } else {
-                       $template = new UserloginTemplate();
-
+                       // Additional styles for login form
                        $out->addModuleStyles( array(
-                               'mediawiki.ui',
-                               'mediawiki.special.userlogin'
+                               'mediawiki.special.userlogin.login.styles'
                        ) );
 
-                       $out->addModules( array(
-                               'mediawiki.special.createaccount.js'
-                       ) );
+                       $template = new UserloginTemplate();
 
                        $q = 'action=submitlogin&type=login';
                        $linkq = 'type=signup';
@@ -1411,7 +1433,7 @@ class LoginForm extends SpecialPage {
                $attr['lang'] = $attr['hreflang'] = $targetLanguage->getHtmlCode();
 
                return Linker::linkKnown(
-                       $this->getTitle(),
+                       $this->getPageTitle(),
                        htmlspecialchars( $text ),
                        $attr,
                        $query
index 4501736..014408e 100644 (file)
@@ -174,7 +174,7 @@ class UserrightsPage extends SpecialPage {
        }
 
        function getSuccessURL() {
-               return $this->getTitle( $this->mTarget )->getFullURL( array( 'success' => 1 ) );
+               return $this->getPageTitle( $this->mTarget )->getFullURL( array( 'success' => 1 ) );
        }
 
        /**
@@ -405,7 +405,7 @@ class UserrightsPage extends SpecialPage {
                global $wgScript;
                $this->getOutput()->addHTML(
                        Html::openElement( 'form', array( 'method' => 'get', 'action' => $wgScript, 'name' => 'uluser', 'id' => 'mw-userrights-form1' ) ) .
-                       Html::hidden( 'title', $this->getTitle()->getPrefixedText() ) .
+                       Html::hidden( 'title', $this->getPageTitle()->getPrefixedText() ) .
                        Xml::fieldset( $this->msg( 'userrights-lookup-user' )->text() ) .
                        Xml::inputLabel( $this->msg( 'userrights-user-editname' )->text(), 'user', 'username', 30, str_replace( '_', ' ', $this->mTarget ), array( 'autofocus' => true ) ) . ' ' .
                        Xml::submitButton( $this->msg( 'editusergroup' )->text() ) .
@@ -490,7 +490,7 @@ class UserrightsPage extends SpecialPage {
                );
 
                $this->getOutput()->addHTML(
-                       Xml::openElement( 'form', array( 'method' => 'post', 'action' => $this->getTitle()->getLocalURL(), 'name' => 'editGroup', 'id' => 'mw-userrights-form2' ) ) .
+                       Xml::openElement( 'form', array( 'method' => 'post', 'action' => $this->getPageTitle()->getLocalURL(), 'name' => 'editGroup', 'id' => 'mw-userrights-form2' ) ) .
                        Html::hidden( 'user', $this->mTarget ) .
                        Html::hidden( 'wpEditToken', $this->getUser()->getEditToken( $this->mTarget ) ) .
                        Html::hidden( 'conflictcheck-originalgroups', implode( ',', $user->getGroups() ) ) . // Conflict detection
index 9e93881..a680bac 100644 (file)
@@ -20,7 +20,7 @@
  * @file
  * @ingroup SpecialPage Watchlist
  */
-class SpecialWatchlist extends SpecialPage {
+class SpecialWatchlist extends SpecialRecentChanges {
        protected $customFilters;
 
        /**
@@ -30,6 +30,10 @@ class SpecialWatchlist extends SpecialPage {
                parent::__construct( $page, $restriction );
        }
 
+       public function isIncludable() {
+               return false;
+       }
+
        /**
         * Execute
         * @param $par Parameter passed to the page
@@ -40,6 +44,7 @@ class SpecialWatchlist extends SpecialPage {
                $user = $this->getUser();
                $output = $this->getOutput();
                $output->addModuleStyles( 'mediawiki.special.changeslist' );
+               $output->addModules( 'mediawiki.special.changeslist.js' );
 
                # Anons don't get a watchlist
                $this->requireLogin( 'watchlistanontext' );
@@ -158,7 +163,7 @@ class SpecialWatchlist extends SpecialPage {
                        && $request->wasPosted()
                ) {
                        $user->clearAllNotifications();
-                       $output->redirect( $this->getTitle()->getFullURL( $nondefaults ) );
+                       $output->redirect( $this->getPageTitle()->getFullURL( $nondefaults ) );
                        return;
                }
 
@@ -235,7 +240,7 @@ class SpecialWatchlist extends SpecialPage {
 
                if ( $wgShowUpdatedMarker ) {
                        $form .= Xml::openElement( 'form', array( 'method' => 'post',
-                               'action' => $this->getTitle()->getLocalURL(),
+                               'action' => $this->getPageTitle()->getLocalURL(),
                                'id' => 'mw-watchlist-resetbutton' ) ) . "\n" .
                        Xml::submitButton( $this->msg( 'enotif_reset' )->text(), array( 'name' => 'dummy' ) ) . "\n" .
                        Html::hidden( 'reset', 'all' ) . "\n";
@@ -247,7 +252,7 @@ class SpecialWatchlist extends SpecialPage {
 
                $form .= Xml::openElement( 'form', array(
                        'method' => 'post',
-                       'action' => $this->getTitle()->getLocalURL(),
+                       'action' => $this->getPageTitle()->getLocalURL(),
                        'id' => 'mw-watchlist-form'
                ) );
                $form .= Xml::fieldset(
@@ -436,14 +441,14 @@ class SpecialWatchlist extends SpecialPage {
                $label = $this->msg( $value ? 'show' : 'hide' )->escaped();
                $options[$name] = 1 - (int)$value;
 
-               return $this->msg( $message )->rawParams( Linker::linkKnown( $this->getTitle(), $label, array(), $options ) )->escaped();
+               return $this->msg( $message )->rawParams( Linker::linkKnown( $this->getPageTitle(), $label, array(), $options ) )->escaped();
        }
 
        protected function hoursLink( $h, $options = array() ) {
                $options['days'] = ( $h / 24.0 );
 
                return Linker::linkKnown(
-                       $this->getTitle(),
+                       $this->getPageTitle(),
                        $this->getLanguage()->formatNum( $h ),
                        array(),
                        $options
@@ -455,7 +460,7 @@ class SpecialWatchlist extends SpecialPage {
                $message = ( $d ? $this->getLanguage()->formatNum( $d ) : $this->msg( 'watchlistall2' )->escaped() );
 
                return Linker::linkKnown(
-                       $this->getTitle(),
+                       $this->getPageTitle(),
                        $message,
                        array(),
                        $options
@@ -501,8 +506,4 @@ class SpecialWatchlist extends SpecialPage {
 
                return floor( $count / 2 );
        }
-
-       protected function getGroupName() {
-               return 'changes';
-       }
 }
index 05c7dd5..3f9b98d 100644 (file)
@@ -84,7 +84,7 @@ class SpecialWhatLinksHere extends SpecialPage {
 
                $this->getSkin()->setRelevantTitle( $this->target );
 
-               $this->selfTitle = $this->getTitle( $this->target->getPrefixedDBkey() );
+               $this->selfTitle = $this->getPageTitle( $this->target->getPrefixedDBkey() );
 
                $out->setPageTitle( $this->msg( 'whatlinkshere-title', $this->target->getPrefixedText() ) );
                $out->addBacklinkSubtitle( $this->target );
@@ -342,7 +342,7 @@ class SpecialWhatLinksHere extends SpecialPage {
        protected function wlhLink( Title $target, $text ) {
                static $title = null;
                if ( $title === null ) {
-                       $title = $this->getTitle();
+                       $title = $this->getPageTitle();
                }
 
                return Linker::linkKnown(
@@ -407,7 +407,7 @@ class SpecialWhatLinksHere extends SpecialPage {
                $f = Xml::openElement( 'form', array( 'action' => $wgScript ) );
 
                # Values that should not be forgotten
-               $f .= Html::hidden( 'title', $this->getTitle()->getPrefixedText() );
+               $f .= Html::hidden( 'title', $this->getPageTitle()->getPrefixedText() );
                foreach ( $this->opts->getUnconsumedValues() as $name => $value ) {
                        $f .= Html::hidden( $name, $value );
                }
index 9d23499..2ddde43 100644 (file)
@@ -49,7 +49,7 @@ class WithoutInterwikiPage extends PageQueryPage {
                }
 
                $prefix = $this->prefix;
-               $t = $this->getTitle();
+               $t = $this->getPageTitle();
 
                return Html::openElement( 'form', array( 'method' => 'get', 'action' => $wgScript ) ) . "\n" .
                        Html::openElement( 'fieldset' ) . "\n" .
index a6c3421..4c8148a 100644 (file)
@@ -31,8 +31,6 @@
  * UploadBase and subclasses are the backend of MediaWiki's file uploads.
  * The frontends are formed by ApiUpload and SpecialUpload.
  *
- * See also includes/docs/upload.txt
- *
  * @author Brion Vibber
  * @author Bryan Tong Minh
  * @author Michael Dale
@@ -657,7 +655,11 @@ abstract class UploadBase {
                // Check dupes against archives
                $archivedImage = new ArchivedFile( null, 0, "{$hash}.{$this->mFinalExtension}" );
                if ( $archivedImage->getID() > 0 ) {
-                       $warnings['duplicate-archive'] = $archivedImage->getName();
+                       if ( $archivedImage->userCan( File::DELETED_FILE ) ) {
+                               $warnings['duplicate-archive'] = $archivedImage->getName();
+                       } else {
+                               $warnings['duplicate-archive'] = '';
+                       }
                }
 
                wfProfileOut( __METHOD__ );
@@ -723,7 +725,8 @@ abstract class UploadBase {
                # exclamation mark, so restrict file name to 240 bytes.
                if ( strlen( $this->mFilteredName ) > 240 ) {
                        $this->mTitleError = self::FILENAME_TOO_LONG;
-                       return $this->mTitle = null;
+                       $this->mTitle = null;
+                       return $this->mTitle;
                }
 
                /**
@@ -736,7 +739,8 @@ abstract class UploadBase {
                $nt = Title::makeTitleSafe( NS_FILE, $this->mFilteredName );
                if ( is_null( $nt ) ) {
                        $this->mTitleError = self::ILLEGAL_FILENAME;
-                       return $this->mTitle = null;
+                       $this->mTitle = null;
+                       return $this->mTitle;
                }
                $this->mFilteredName = $nt->getDBkey();
 
@@ -777,19 +781,22 @@ abstract class UploadBase {
 
                if ( $this->mFinalExtension == '' ) {
                        $this->mTitleError = self::FILETYPE_MISSING;
-                       return $this->mTitle = null;
+                       $this->mTitle = null;
+                       return $this->mTitle;
                } elseif ( $blackListedExtensions ||
                                ( $wgCheckFileExtensions && $wgStrictFileExtensions &&
                                        !$this->checkFileExtensionList( $ext, $wgFileExtensions ) ) ) {
                        $this->mBlackListedExtensions = $blackListedExtensions;
                        $this->mTitleError = self::FILETYPE_BADTYPE;
-                       return $this->mTitle = null;
+                       $this->mTitle = null;
+                       return $this->mTitle;
                }
 
                // Windows may be broken with special characters, see bug XXX
                if ( wfIsWindows() && !preg_match( '/^[\x0-\x7f]*$/', $nt->getText() ) ) {
                        $this->mTitleError = self::WINDOWS_NONASCII_FILENAME;
-                       return $this->mTitle = null;
+                       $this->mTitle = null;
+                       return $this->mTitle;
                }
 
                # If there was more than one "extension", reassemble the base
@@ -802,10 +809,12 @@ abstract class UploadBase {
 
                if ( strlen( $partname ) < 1 ) {
                        $this->mTitleError = self::MIN_LENGTH_PARTNAME;
-                       return $this->mTitle = null;
+                       $this->mTitle = null;
+                       return $this->mTitle;
                }
 
-               return $this->mTitle = $nt;
+               $this->mTitle = $nt;
+               return $this->mTitle;
        }
 
        /**
index 002dcd9..2686e11 100644 (file)
@@ -367,7 +367,6 @@ class IP {
        /**
         * Determine if an IP address really is an IP address, and if it is public,
         * i.e. not RFC 1918 or similar
-        * Comes from ProxyTools.php
         *
         * @param $ip String
         * @return Boolean
@@ -482,7 +481,6 @@ class IP {
        /**
         * Given an IP address in dotted-quad/octet notation, returns an unsigned integer.
         * Like ip2long() except that it actually works and has a consistent error return value.
-        * Comes from ProxyTools.php
         *
         * @param string $ip quad dotted IP address.
         * @return Mixed: string/int/false
diff --git a/includes/utils/ScopedCallback.php b/includes/utils/ScopedCallback.php
deleted file mode 100644 (file)
index ef22e0a..0000000
+++ /dev/null
@@ -1,73 +0,0 @@
-<?php
-/**
- * This file deals with RAII style scoped callbacks.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- * http://www.gnu.org/copyleft/gpl.html
- *
- * @file
- */
-
-/**
- * Class for asserting that a callback happens when an dummy object leaves scope
- *
- * @since 1.21
- */
-class ScopedCallback {
-       /** @var callable */
-       protected $callback;
-
-       /**
-        * @param callable $callback
-        * @throws MWException
-        */
-       public function __construct( $callback ) {
-               if ( !is_callable( $callback ) ) {
-                       throw new MWException( "Provided callback is not valid." );
-               }
-               $this->callback = $callback;
-       }
-
-       /**
-        * Trigger a scoped callback and destroy it.
-        * This is the same is just setting it to null.
-        *
-        * @param ScopedCallback $sc
-        */
-       public static function consume( ScopedCallback &$sc = null ) {
-               $sc = null;
-       }
-
-       /**
-        * Destroy a scoped callback without triggering it
-        *
-        * @param ScopedCallback $sc
-        */
-       public static function cancel( ScopedCallback &$sc = null ) {
-               if ( $sc ) {
-                       $sc->callback = null;
-               }
-               $sc = null;
-       }
-
-       /**
-        * Trigger the callback when this leaves scope
-        */
-       function __destruct() {
-               if ( $this->callback !== null ) {
-                       call_user_func( $this->callback );
-               }
-       }
-}
index 10ff957..47cef8b 100644 (file)
@@ -40,6 +40,7 @@ class UIDGenerator {
        protected $fileHandles = array(); // cache file handles
 
        const QUICK_RAND = 1; // get randomness from fast and insecure sources
+       const QUICK_VOLATILE = 2; // use an APC like in-memory counter if available
 
        protected function __construct() {
                $idFile = wfTempDir() . '/mw-' . __CLASS__ . '-UID-nodeid';
@@ -214,6 +215,95 @@ class UIDGenerator {
                return str_replace( '-', '', self::newUUIDv4( $flags ) );
        }
 
+       /**
+        * Return an ID that is sequential *only* for this node and bucket
+        *
+        * These IDs are suitable for per-host sequence numbers, e.g. for some packet protocols.
+        * If UIDGenerator::QUICK_VOLATILE is used the counter might reset on server restart.
+        *
+        * @param string $bucket Arbitrary bucket name (should be ASCII)
+        * @param integer $bits Bit size (<=48) of resulting numbers before wrap-around
+        * @param integer $flags (supports UIDGenerator::QUICK_VOLATILE)
+        * @return float Integer value as float
+        * @since 1.23
+        */
+       public static function newSequentialPerNodeID( $bucket, $bits = 48, $flags = 0 ) {
+               return current( self::newSequentialPerNodeIDs( $bucket, $bits, 1, $flags ) );
+       }
+
+       /**
+        * Return IDs that are sequential *only* for this node and bucket
+        *
+        * @see UIDGenerator::newSequentialPerNodeID()
+        * @param string $bucket Arbitrary bucket name (should be ASCII)
+        * @param integer $bits Bit size (16 to 48) of resulting numbers before wrap-around
+        * @param integer $count Number of IDs to return (1 to 10000)
+        * @param integer $flags (supports UIDGenerator::QUICK_VOLATILE)
+        * @return array Ordered list of float integer values
+        * @since 1.23
+        */
+       public static function newSequentialPerNodeIDs( $bucket, $bits, $count, $flags = 0 ) {
+               if ( $count <= 0 ) {
+                       return array(); // nothing to do
+               } elseif ( $count > 10000 ) {
+                       throw new MWException( "Number of requested IDs ($count) is too high." );
+               } elseif ( $bits < 16 || $bits > 48 ) {
+                       throw new MWException( "Requested bit size ($bits) is out of range." );
+               }
+
+               $counter = null; // post-increment persistent counter value
+
+               // Use APC/eAccelerator/xcache if requested, available, and not in CLI mode;
+               // Counter values would not survive accross script instances in CLI mode.
+               $cache = null;
+               if ( ( $flags & self::QUICK_VOLATILE ) && PHP_SAPI !== 'cli' ) {
+                       try {
+                               $cache = ObjectCache::newAccelerator( array() );
+                       } catch ( MWException $e ) {} // not supported
+               }
+               if ( $cache ) {
+                       $counter = $cache->incr( $bucket, $count );
+                       if ( $counter === false ) {
+                               if ( !$cache->add( $bucket, $count ) ) {
+                                       throw new MWException( 'Unable to set value to ' . get_class( $cache ) );
+                               }
+                               $counter = $count;
+                       }
+               }
+
+               // Note: use of fmod() avoids "division by zero" on 32 bit machines
+               if ( $counter === null ) {
+                       $path = wfTempDir() . '/mw-' . __CLASS__ . '-' . rawurlencode( $bucket ) . '-48';
+                       $handle = fopen( $path, 'cb+' );
+                       // Acquire the UID lock file
+                       if ( $handle === false ) {
+                               throw new MWException( "Could not open '{$path}'." );
+                       } elseif ( !flock( $handle, LOCK_EX ) ) {
+                               fclose( $handle );
+                               throw new MWException( "Could not acquire '{$path}'." );
+                       }
+                       // Fetch the counter value and increment it...
+                       rewind( $handle );
+                       $counter = floor( trim( fgets( $handle ) ) ) + $count; // fetch as float
+                       // Write back the new counter value
+                       ftruncate( $handle, 0 );
+                       rewind( $handle );
+                       fwrite( $handle, fmod( $counter, pow( 2, 48 ) ) ); // warp-around as needed
+                       fflush( $handle );
+                       // Release the UID lock file
+                       flock( $handle, LOCK_UN );
+                       fclose( $handle );
+               }
+               $ids = array();
+               $divisor = pow( 2, $bits );
+               $currentId = floor( $counter - $count ); // pre-increment counter value
+               for ( $i = 0; $i < $count; ++$i ) {
+                       $ids[] = fmod( ++$currentId, $divisor );
+               }
+
+               return $ids;
+       }
+
        /**
         * Get a (time,counter,clock sequence) where (time,counter) is higher
         * than any previous (time,counter) value for the given clock sequence.
@@ -237,6 +327,7 @@ class UIDGenerator {
                if ( $handle === false ) {
                        throw new MWException( "Could not open '{$this->$lockFile}'." );
                } elseif ( !flock( $handle, LOCK_EX ) ) {
+                       fclose( $handle );
                        throw new MWException( "Could not acquire '{$this->$lockFile}'." );
                }
                // Get the current timestamp, clock sequence number, last time, and counter
index 0026fdf..320688a 100644 (file)
@@ -62,7 +62,6 @@ class FakeConverter {
        function getParsedTitle() { return ''; }
        function markNoConversion( $text, $noParse = false ) { return $text; }
        function convertCategoryKey( $key ) { return $key; }
-       function convertLinkToAllVariants( $text ) { return $this->autoConvertToAllVariants( $text ); }
        /** @deprecated since 1.22 is no longer used */
        function armourMath( $text ) { return $text; }
        function validateVariant( $variant = null ) { return $variant === $this->mLang->getCode() ? $variant : null; }
@@ -929,6 +928,7 @@ class Language {
         * @since 1.20
         */
        public static function fetchLanguageName( $code, $inLanguage = null, $include = 'all' ) {
+               $code = strtolower( $code );
                $array = self::fetchLanguageNames( $inLanguage, $include );
                return !array_key_exists( $code, $array ) ? '' : $array[$code];
        }
@@ -3904,21 +3904,6 @@ class Language {
                $this->mConverter->findVariantLink( $link, $nt, $ignoreOtherCond );
        }
 
-       /**
-        * If a language supports multiple variants, converts text
-        * into an array of all possible variants of the text:
-        *  'variant' => text in that variant
-        *
-        * @deprecated since 1.17 Use autoConvertToAllVariants()
-        *
-        * @param $text string
-        *
-        * @return string
-        */
-       public function convertLinkToAllVariants( $text ) {
-               return $this->mConverter->convertLinkToAllVariants( $text );
-       }
-
        /**
         * returns language specific options used by User::getPageRenderHash()
         * for example, the preferred language variant
index cdaab2c..bb5b49f 100644 (file)
@@ -236,7 +236,8 @@ class LanguageConverter {
                        $ret = $wgRequest->getVal( 'uselang' );
                }
 
-               return $this->mURLVariant = $this->validateVariant( $ret );
+               $this->mURLVariant = $this->validateVariant( $ret );
+               return $this->mURLVariant;
        }
 
        /**
@@ -269,7 +270,8 @@ class LanguageConverter {
                        $ret = $wgUser->getOption( 'language' );
                }
 
-               return $this->mUserVariant = $this->validateVariant( $ret );
+               $this->mUserVariant = $this->validateVariant( $ret );
+               return $this->mUserVariant;
        }
 
        /**
@@ -489,21 +491,6 @@ class LanguageConverter {
                return $ret;
        }
 
-       /**
-        * Convert link text to all valid variants.
-        * In the first, this function only convert text outside the
-        * "-{" "}-" markups. Since the "{" and "}" are not allowed in
-        * titles, the text will get all converted always.
-        * So I removed this feature and deprecated the function.
-        *
-        * @param $text String: the text to be converted
-        * @return Array: variant => converted text
-        * @deprecated since 1.17 Use autoConvertToAllVariants() instead
-        */
-       public function convertLinkToAllVariants( $text ) {
-               return $this->autoConvertToAllVariants( $text );
-       }
-
        /**
         * Apply manual conversion rules.
         *
index d3e78fe..05b9550 100644 (file)
  * @see http://be-x-old.wikipedia.org/wiki/Project_talk:LanguageBe_tarask.php
  */
 class LanguageBe_tarask extends Language {
-       /**
-        * Plural form transformations
-        *
-        * $wordform1 - singular form (for 1, 21, 31, 41...)
-        * $wordform2 - plural form (for 2, 3, 4, 22, 23, 24, 32, 33, 34...)
-        * $wordform3 - plural form (for 0, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 25, 26...)
-        */
-
-       /**
-        * @param $count int
-        * @param $forms array
-        *
-        * @return string
-        */
-       function convertPlural( $count, $forms ) {
-               $forms = $this->handleExplicitPluralForms( $count, $forms );
-               if ( is_string( $forms ) ) {
-                       return $forms;
-               }
-               if ( !count( $forms ) ) {
-                       return '';
-               }
-
-               // If the actual number is not mentioned in the expression, then just two forms are enough:
-               // singular for $count == 1
-               // plural   for $count != 1
-               // For example, "This user belongs to {{PLURAL:$1|one group|several groups}}."
-               if ( count( $forms ) === 2 ) {
-                       return $count == 1 ? $forms[0] : $forms[1];
-               }
-
-               // @todo FIXME: CLDR defines 4 plural forms instead of 3
-               //        http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/language_plural_rules.html
-               $forms = $this->preConvertPlural( $forms, 3 );
-
-               if ( $count > 10 && floor( ( $count % 100 ) / 10 ) == 1 ) {
-                       return $forms[2];
-               } else {
-                       switch ( $count % 10 ) {
-                               case 1: return $forms[0];
-                               case 2:
-                               case 3:
-                               case 4: return $forms[1];
-                               default: return $forms[2];
-                       }
-               }
-       }
-
        /**
         * The Belarusian language uses apostrophe sign,
         * but the characters used for this could be both U+0027 and U+2019.
diff --git a/languages/classes/LanguageGv.php b/languages/classes/LanguageGv.php
deleted file mode 100644 (file)
index 23a2916..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-<?php
-/**
- * Manx (Gaelg) specific code.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- * http://www.gnu.org/copyleft/gpl.html
- *
- * @file
- * @author Niklas Laxström
- * @ingroup Language
- */
-
-/**
- * Manx (Gaelg)
- *
- * @ingroup Language
- */
-class LanguageGv extends Language {
-
-       /**
-        * @param $count int
-        * @param $forms array
-        * @return string
-        */
-       function convertPlural( $count, $forms ) {
-               $forms = $this->handleExplicitPluralForms( $count, $forms );
-               if ( is_string( $forms ) ) {
-                       return $forms;
-               }
-               if ( !count( $forms ) ) {
-                       return '';
-               }
-
-               $forms = $this->preConvertPlural( $forms, 4 );
-
-               if ( $count > 0 && ( $count % 20 ) === 0 ) {
-                       return $forms[0];
-               } else {
-                       switch ( $count % 10 ) {
-                               case 1: return $forms[1];
-                               case 2: return $forms[2];
-                               default: return $forms[3];
-                       }
-               }
-       }
-
-}
diff --git a/languages/classes/LanguageHr.php b/languages/classes/LanguageHr.php
deleted file mode 100644 (file)
index 0c65ec7..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-<?php
-/**
- * Croatian (hrvatski) specific code.
- *
- * 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 Language
- */
-
-/**
- * Croatian (hrvatski)
- *
- * @ingroup Language
- */
-class LanguageHr extends Language {
-
-       /**
-        * @param $count int
-        * @param $forms array
-        * @return string
-        */
-       function convertPlural( $count, $forms ) {
-               $forms = $this->handleExplicitPluralForms( $count, $forms );
-               if ( is_string( $forms ) ) {
-                       return $forms;
-               }
-               if ( !count( $forms ) ) {
-                       return '';
-               }
-               // @todo FIXME: CLDR defines 4 plural forms instead of 3. Plural for for decimals is missing.
-               //        http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/language_plural_rules.html
-               $forms = $this->preConvertPlural( $forms, 3 );
-
-               if ( $count > 10 && floor( ( $count % 100 ) / 10 ) == 1 ) {
-                       return $forms[2];
-               } else {
-                       switch ( $count % 10 ) {
-                               case 1: return $forms[0];
-                               case 2:
-                               case 3:
-                               case 4: return $forms[1];
-                               default: return $forms[2];
-                       }
-               }
-       }
-}
index 243a876..d3ac1d2 100644 (file)
@@ -44,8 +44,9 @@ class LanguageRu extends Language {
                        return $wgGrammarForms['ru'][$case][$word];
                }
 
-               # These rules are not perfect, but they are currently only used for Wikimedia site names so it doesn't
-               # matter if they are wrong sometimes. Just add a special case for your site name if necessary.
+               # These rules are not perfect, but they are currently only used for Wikimedia
+               # site names so it doesn't matter if they are wrong sometimes.
+               # Just add a special case for your site name if necessary.
 
                # substr doesn't support Unicode and mb_substr has issues,
                # so break it to characters using preg_match_all and then use array_slice and join
@@ -102,62 +103,6 @@ class LanguageRu extends Language {
                return $word;
        }
 
-       /**
-        * Plural form transformations
-        *
-        * $forms[0] - singular form (for 1, 21, 31, 41...)
-        * $forms[1] - paucal form (for 2, 3, 4, 22, 23, 24, 32, 33, 34...)
-        * $forms[2] - plural form (for 0, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 25, 26...)
-        *
-        * Examples:
-        *   message with number
-        *     "Сделано $1 {{PLURAL:$1|изменение|изменения|изменений}}"
-        *     ("$1 change[s] were made)
-        *   message without number
-        *     "Действие не может быть выполнено по {{PLURAL:$1|следующей причине|следующим причинам}}:"
-        *     ("The action cannot be performed for the following reason[s]")
-        * @param $count int
-        * @param $forms array
-        *
-        * @return string
-        */
-       function convertPlural( $count, $forms ) {
-               $forms = $this->handleExplicitPluralForms( $count, $forms );
-               if ( is_string( $forms ) ) {
-                       return $forms;
-               }
-               if ( !count( $forms ) ) {
-                       return '';
-               }
-
-               // If the actual number is not mentioned in the expression, then just two forms are enough:
-               // singular for $count === 1
-               // plural   for $count !== 1
-               // For example, "This user belongs to {{PLURAL:$1|one group|several groups}}."
-               if ( count( $forms ) === 2 ) {
-                       return $count === 1 ? $forms[0] : $forms[1];
-               }
-
-               // @todo FIXME: CLDR defines 4 plural forms. Form with decimals missing.
-               // See http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/language_plural_rules.html#ru
-               $forms = $this->preConvertPlural( $forms, 3 );
-
-               if ( $count > 10 && (int)floor( ( $count % 100 ) / 10 ) === 1 ) {
-                       return $forms[2];
-               }
-
-               switch ( $count % 10 ) {
-                       case 1:
-                               return $forms[0];
-                       case 2:
-                       case 3:
-                       case 4:
-                               return $forms[1];
-                       default:
-                               return $forms[2];
-               }
-       }
-
        /**
         * Four-digit number should be without group commas (spaces)
         * See manual of style at http://ru.wikipedia.org/wiki/Википедия:Оформление_статей
index 283ef22..a728c9d 100644 (file)
@@ -22,8 +22,6 @@
  */
 
 require_once __DIR__ . '/../LanguageConverter.php';
-require_once __DIR__ . '/LanguageSr_ec.php';
-require_once __DIR__ . '/LanguageSr_el.php';
 
 /**
  * There are two levels of conversion for Serbian: the script level
@@ -166,14 +164,16 @@ class SrConverter extends LanguageConverter {
                // regexp for roman numbers
                $roman = 'M{0,4}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})';
 
-               $reg = '/^' . $roman . '$|^' . $roman . $breaks . '|' . $breaks . $roman . '$|' . $breaks . $roman . $breaks . '/';
+               $reg = '/^' . $roman . '$|^' . $roman . $breaks . '|' . $breaks
+                       . $roman . '$|' . $breaks . $roman . $breaks . '/';
 
                $matches = preg_split( $reg, $text, -1, PREG_SPLIT_OFFSET_CAPTURE );
 
                $m = array_shift( $matches );
                $this->loadTables();
                if ( !isset( $this->mTables[$toVariant] ) ) {
-                       throw new MWException( "Broken variant table: " . implode( ',', array_keys( $this->mTables ) ) );
+                       throw new MWException( "Broken variant table: "
+                               . implode( ',', array_keys( $this->mTables ) ) );
                }
                $ret = $this->mTables[$toVariant]->replace( $m[0] );
                $mstart = $m[1] + strlen( $m[0] );
@@ -218,7 +218,7 @@ class SrConverter extends LanguageConverter {
  *
  * @ingroup Language
  */
-class LanguageSr extends LanguageSr_ec {
+class LanguageSr extends Language {
        function __construct() {
                global $wgHooks;
 
@@ -238,44 +238,4 @@ class LanguageSr extends LanguageSr_ec {
                $this->mConverter = new SrConverter( $this, 'sr', $variants, $variantfallbacks, $flags );
                $wgHooks['PageContentSaveComplete'][] = $this->mConverter;
        }
-
-       /**
-        * @param $count int
-        * @param $forms array
-        *
-        * @return string
-        */
-       function convertPlural( $count, $forms ) {
-               $forms = $this->handleExplicitPluralForms( $count, $forms );
-               if ( is_string( $forms ) ) {
-                       return $forms;
-               }
-               if ( !count( $forms ) ) {
-                       return '';
-               }
-
-               // If the actual number is not mentioned in the expression, then just two forms are enough:
-               // singular for $count == 1
-               // plural   for $count != 1
-               // For example, "This user belongs to {{PLURAL:$1|one group|several groups}}."
-               if ( count( $forms ) === 2 ) {
-                       return $count == 1 ? $forms[0] : $forms[1];
-               }
-
-               // @todo FIXME: CLDR defines 4 plural forms. Form with decimals missing.
-               // See http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/language_plural_rules.html#ru
-               $forms = $this->preConvertPlural( $forms, 3 );
-
-               if ( $count > 10 && floor( ( $count % 100 ) / 10 ) == 1 ) {
-                       return $forms[2];
-               } else {
-                       switch ( $count % 10 ) {
-                               case 1: return $forms[0];
-                               case 2:
-                               case 3:
-                               case 4: return $forms[1];
-                               default: return $forms[2];
-                       }
-               }
-       }
 }
diff --git a/languages/classes/LanguageSr_ec.php b/languages/classes/LanguageSr_ec.php
deleted file mode 100644 (file)
index 4787856..0000000
+++ /dev/null
@@ -1,58 +0,0 @@
-<?php
-/**
- * Serbian (cyrillic script) specific code.
- *
- * 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 Language
- */
-
-/**
- * Serbian (cyrillic script)
- *
- * @ingroup Language
- */
-class LanguageSr_ec extends Language {
-
-       /**
-        * @param $count int
-        * @param $forms array
-        * @return string
-        */
-       function convertPlural( $count, $forms ) {
-               $forms = $this->handleExplicitPluralForms( $count, $forms );
-               if ( is_string( $forms ) ) {
-                       return $forms;
-               }
-               if ( !count( $forms ) ) {
-                       return '';
-               }
-               $forms = $this->preConvertPlural( $forms, 3 );
-
-               if ( $count > 10 && floor( ( $count % 100 ) / 10 ) == 1 ) {
-                       return $forms[2];
-               } else {
-                       switch ( $count % 10 ) {
-                               case 1: return $forms[0];
-                               case 2:
-                               case 3:
-                               case 4: return $forms[1];
-                               default: return $forms[2];
-                       }
-               }
-       }
-}
diff --git a/languages/classes/LanguageSr_el.php b/languages/classes/LanguageSr_el.php
deleted file mode 100644 (file)
index 3f086df..0000000
+++ /dev/null
@@ -1,58 +0,0 @@
-<?php
-/**
- * Serbian (latin script) specific code.
- *
- * 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 Language
- */
-
-/**
- * Serbian (latin script)
- *
- * @ingroup Language
- */
-class LanguageSr_el extends Language {
-
-       /**
-        * @param $count int
-        * @param $forms array
-        * @return string
-        */
-       function convertPlural( $count, $forms ) {
-               $forms = $this->handleExplicitPluralForms( $count, $forms );
-               if ( is_string( $forms ) ) {
-                       return $forms;
-               }
-               if ( !count( $forms ) ) {
-                       return '';
-               }
-               $forms = $this->preConvertPlural( $forms, 3 );
-
-               if ( $count > 10 && floor( ( $count % 100 ) / 10 ) == 1 ) {
-                       return $forms[2];
-               } else {
-                       switch ( $count % 10 ) {
-                               case 1: return $forms[0];
-                               case 2:
-                               case 3:
-                               case 4: return $forms[1];
-                               default: return $forms[2];
-                       }
-               }
-       }
-}
index aabe390..08041a9 100644 (file)
@@ -86,45 +86,6 @@ class LanguageUk extends Language {
                return $word;
        }
 
-       /**
-        * @param $count int
-        * @param $forms array
-        * @return string
-        */
-       function convertPlural( $count, $forms ) {
-               $forms = $this->handleExplicitPluralForms( $count, $forms );
-               if ( is_string( $forms ) ) {
-                       return $forms;
-               }
-               if ( !count( $forms ) ) {
-                       return '';
-               }
-
-               // If the actual number is not mentioned in the expression, then just two forms are enough:
-               // singular for $count == 1
-               // plural   for $count != 1
-               // For example, "This user belongs to {{PLURAL:$1|one group|several groups}}."
-               if ( count( $forms ) === 2 ) {
-                       return $count == 1 ? $forms[0] : $forms[1];
-               }
-
-               // @todo FIXME: CLDR defines 4 plural forms. Form for decimals is missing/
-               // See http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/language_plural_rules.html#uk
-               $forms = $this->preConvertPlural( $forms, 3 );
-
-               if ( $count > 10 && floor( ( $count % 100 ) / 10 ) == 1 ) {
-                       return $forms[2];
-               } else {
-                       switch ( $count % 10 ) {
-                               case 1: return $forms[0];
-                               case 2:
-                               case 3:
-                               case 4: return $forms[1];
-                               default: return $forms[2];
-                       }
-               }
-       }
-
        /**
         * Ukrainian numeric format is "12 345,67" but "1234,56"
         *
index 70d45a3..aafc393 100644 (file)
@@ -2,42 +2,44 @@
 <!DOCTYPE supplementalData SYSTEM "../../common/dtd/ldmlSupplemental.dtd">
 <supplementalData>
        <plurals>
-               <!--
-               The "one" and "two" rules are copied directly from CLDR.
-               The "many" rule overrides CLDR, because CLDR seems to have a mistake:
-               it's sometimes needed for multiples of 10, but not for 10 itself.
-               When the CLDR is fixed, this should be removed.
-               -->
-               <pluralRules locales="he">
-                       <pluralRule count="one">n is 1</pluralRule>
-                       <pluralRule count="two">n is 2</pluralRule>
-                       <pluralRule count="many">n is not 0 AND n is not 10 AND n mod 10 is 0</pluralRule>
-               </pluralRules>
+               <!-- Lower Sorbian (Dolnoserbski) and  Upper Sorbian (Hornjoserbsce). Not present in CLDR -->
                <pluralRules locales="dsb hsb">
-                       <pluralRule count="one">n mod 100 is 1</pluralRule>
-                       <pluralRule count="two">n mod 100 is 2</pluralRule>
-                       <pluralRule count="few">n mod 100 in 3..4</pluralRule>
+                       <pluralRule count="one">n % 100 = 1 @integer 1, 101, 201, 301, …</pluralRule>
+                       <pluralRule count="two">n % 100 = 2 @integer 2, 102, 202, 302, …</pluralRule>
+                       <pluralRule count="few">n % 100 = 3..4 @integer 3~4, 103~104, …</pluralRule>
+                       <pluralRule count="other"> @integer 5, 6, 7, 8, 9, 10, 105, 206, 307, …</pluralRule>
                </pluralRules>
-               <!-- Copied from "be" -->
+
+               <!-- Belarusian in Taraškievica orthography (Беларуская тарашкевіца). Copied from "be" -->
                <pluralRules locales="be-tarask">
-                       <pluralRule count="one">n mod 10 is 1 and n mod 100 is not 11</pluralRule>
-                       <pluralRule count="few">n mod 10 in 2..4 and n mod 100 not in 12..14</pluralRule>
-                       <pluralRule count="many">n mod 10 is 0 or n mod 10 in 5..9 or n mod 100 in 11..14</pluralRule>
-                       <!-- others are fractions -->
+                       <pluralRule count="one">n % 10 = 1 and n % 100 != 11 @integer 1, 21, 31, 41, 51, 61, 71, 81, 101, 1001, … @decimal 1.0, 21.0, 31.0, 41.0, 51.0, 61.0, 71.0, 81.0, 101.0, 1001.0, …</pluralRule>
+                       <pluralRule count="few">n % 10 = 2..4 and n % 100 != 12..14 @integer 2~4, 22~24, 32~34, 42~44, 52~54, 62, 102, 1002, … @decimal 2.0, 3.0, 4.0, 22.0, 23.0, 24.0, 32.0, 33.0, 102.0, 1002.0, …</pluralRule>
+                       <pluralRule count="many">n % 10 = 0 or n % 10 = 5..9 or n % 100 = 11..14 @integer 0, 5~19, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
+                       <pluralRule count="other">   @decimal 0.1~0.9, 1.1~1.7, 10.1, 100.1, 1000.1, …</pluralRule>
                </pluralRules>
+               <!--  Old Church Slavonic (Ѩзыкъ словѣньскъ). Not present in CLDR -->
                <pluralRules locales="cu">
-                       <pluralRule count="one">n mod 10 is 1</pluralRule>
-                       <pluralRule count="two">n mod 10 is 2</pluralRule>
-                       <pluralRule count="few">n mod 10 in 3..4</pluralRule>
+                       <pluralRule count="one">n % 10 = 1 @integer 1, 11, 21, 31, …</pluralRule>
+                       <pluralRule count="two">n % 10 = 2 @integer 2, 12, 22, 32, …</pluralRule>
+                       <pluralRule count="few">n % 10 = 3..4 @integer 3~4, 13~14, 23~24, …</pluralRule>
+                       <pluralRule count="other"> @integer 5, 6, 7, 8, 9, 10, 15, 105, 206, 307, …</pluralRule>
                </pluralRules>
                <!-- Copied from "bh" -->
                <pluralRules locales="bho">
-                       <pluralRule count="one">n in 0..1</pluralRule>
+                       <pluralRule count="one">n = 0..1 @integer 0, 1 @decimal 0.0, 1.0, 0.00, 1.00, 0.000, 1.000, 0.0000, 1.0000</pluralRule>
+                       <pluralRule count="other"> @integer 2~17, 100, 1000, 10000, 100000, 1000000, … @decimal 0.1~0.9, 1.1~1.7, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
                </pluralRules>
+               <!-- Samogitian. Not present in CLDR -->
                <pluralRules locales="sgs">
-                       <pluralRule count="one">n mod 10 is 1 and n mod 100 is not 11</pluralRule>
-                       <pluralRule count="two">n mod 10 is 2 and n mod 100 is not 12</pluralRule>
-                       <pluralRule count="few">n is 0 or n mod 100 is 0 or n mod 100 in 10..19</pluralRule>
+                       <pluralRule count="one">n % 10 = 1 and n % 100 != 11 @integer 1, 21, 31, 41, 51, 61, 71, 81, 91, 101, 121, …</pluralRule>
+                       <pluralRule count="two">n % 10 = 2 and n % 100 != 12 @integer 2, 22, 32, 42, 52, 62, 72, 82, 92, 102, 122, …</pluralRule>
+                       <pluralRule count="few">n = 0 or n % 100 = 0 or n % 100 = 10..19 @integer 0, 11, 12, 13, 14, 15, 16, 17, 18, 19, 100, 111,112, …</pluralRule>
+                       <pluralRule count="other"> @integer 3, 4, 5, 6, 7, 8, 9, 20, 103, 104, …</pluralRule>
+               </pluralRules>
+               <pluralRules locales="sr-el sr-ec">
+                       <pluralRule count="one">v = 0 and i % 10 = 1 and i % 100 != 11 or f % 10 = 1 and f % 100 != 11 @integer 1, 21, 31, 41, 51, 61, 71, 81, 101, 1001, … @decimal 0.1, 1.1, 2.1, 3.1, 4.1, 5.1, 6.1, 7.1, 10.1, 100.1, 1000.1, …</pluralRule>
+                       <pluralRule count="few">v = 0 and i % 10 = 2..4 and i % 100 != 12..14 or f % 10 = 2..4 and f % 100 != 12..14 @integer 2~4, 22~24, 32~34, 42~44, 52~54, 62, 102, 1002, … @decimal 0.2~0.4, 1.2~1.4, 2.2~2.4, 3.2~3.4, 4.2~4.4, 5.2, 10.2, 100.2, 1000.2, …</pluralRule>
+                       <pluralRule count="other"> @integer 0, 5~19, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0, 0.5~1.0, 1.5~2.0, 2.5~2.7, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
                </pluralRules>
        </plurals>
 </supplementalData>
old mode 100644 (file)
new mode 100755 (executable)
index d5a1cfe..fd4eaf6
 <?xml version="1.0" encoding="UTF-8" ?>
 <!DOCTYPE supplementalData SYSTEM "../../common/dtd/ldmlSupplemental.dtd">
+<!--
+Copyright © 1991-2013 Unicode, Inc.
+CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
+For terms of use, see http://www.unicode.org/copyright.html
+-->
 <supplementalData>
-    <version number="$Revision: 8007 $"/>
-    <generation date="$Date: 2013-01-03 07:17:41 +0530 (Thu, 03 Jan 2013) $"/>
-    <plurals>
+    <version number="$Revision: 9369 $"/>
+    <generation date="$Date: 2013-09-14 01:26:08 +0530 (ശ, 14 സെപ് 2013) $"/>
+    <plurals type="cardinal">
+        <!-- For a canonicalized list, use GeneratedPluralSamples -->
         <!-- if locale is known to have no plurals, there are no rules -->
-        <pluralRules locales="az bm bo dz fa id ig ii hu ja jv ka kde kea km kn ko lo ms my sah ses sg th to tr vi wo yo zh"/>
         <pluralRules locales="ar">
-            <pluralRule count="zero">n is 0</pluralRule>
-            <pluralRule count="one">n is 1</pluralRule>
-            <pluralRule count="two">n is 2</pluralRule>
-            <pluralRule count="few">n mod 100 in 3..10</pluralRule>
-            <pluralRule count="many">n mod 100 in 11..99</pluralRule>
-        </pluralRules>
-        <pluralRules locales="he">
-            <pluralRule count="one">n is 1</pluralRule>
-            <pluralRule count="two">n is 2</pluralRule>
-            <pluralRule count="many">n is not 0 AND n mod 10 is 0</pluralRule>
-        </pluralRules>
-        <pluralRules locales="asa ast af bem bez bg bn brx ca cgg chr ckb da de dv ee el en eo es et eu fi fo fur fy gl gsw gu ha haw hy is it jgo jmc kaj kcg kk kkj kl ks ksb ku ky lb lg mas mgo ml mn mr nah nb nd ne nl nn nnh no nr ny nyn om or os pa pap ps pt rof rm rwk saq seh sn so sq ss ssy st sv sw syr ta te teo tig tk tn ts ur vo wae ve vun xh xog zu">
-            <pluralRule count="one">n is 1</pluralRule>
-        </pluralRules>
-        <pluralRules locales="ak am bh fil tl guw hi ln mg nso ti wa">
-            <pluralRule count="one">n in 0..1</pluralRule>
-        </pluralRules>
-        <pluralRules locales="ff fr kab">
-            <pluralRule count="one">n within 0..2 and n is not 2</pluralRule>
+            <pluralRule count="zero">n = 0 @integer 0 @decimal 0.0, 0.00, 0.000, 0.0000</pluralRule>
+            <pluralRule count="one">n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000</pluralRule>
+            <pluralRule count="two">n = 2 @integer 2 @decimal 2.0, 2.00, 2.000, 2.0000</pluralRule>
+            <pluralRule count="few">n % 100 = 3..10 @integer 3~10, 103~110, 1003, … @decimal 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 103.0, 1003.0, …</pluralRule>
+            <pluralRule count="many">n % 100 = 11..99 @integer 11~26, 111, 1011, … @decimal 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 111.0, 1011.0, …</pluralRule>
+            <pluralRule count="other"> @integer 100~102, 200~202, 300~302, 400~402, 500~502, 600, 1000, 10000, 100000, 1000000, … @decimal 0.1~0.9, 1.1~1.7, 10.1, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
+        </pluralRules>
+        <pluralRules locales="he iw">
+            <pluralRule count="one">i = 1 and v = 0 @integer 1</pluralRule>
+            <pluralRule count="two">i = 2 and v = 0 @integer 2</pluralRule>
+            <pluralRule count="many">v = 0 and n != 0..10 and n % 10 = 0 @integer 20, 30, 40, 50, 60, 70, 80, 90, 100, 1000, 10000, 100000, 1000000, …</pluralRule>
+            <pluralRule count="other"> @integer 0, 3~17, 101, 1001, … @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
+        </pluralRules>
+        <pluralRules locales="af asa ast az bem bez bg brx cgg chr ckb dv ee el eo es eu fo fur fy gsw ha haw hu jgo jmc ka kaj kcg kk kkj kl ks ksb ku ky lb lg mas mgo ml mn nah nb nd ne nn nnh no nr ny nyn om or os pap ps rm rof rwk saq seh sn so sq ss ssy st syr ta te teo tig tk tn tr ts uz ve vo vun wae xh xog">
+            <pluralRule count="one">n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000</pluralRule>
+            <pluralRule count="other"> @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~0.9, 1.1~1.6, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
+        </pluralRules>
+        <pluralRules locales="ak bh guw ln mg nso pa ti wa">
+            <pluralRule count="one">n = 0..1 @integer 0, 1 @decimal 0.0, 1.0, 0.00, 1.00, 0.000, 1.000, 0.0000, 1.0000</pluralRule>
+            <pluralRule count="other"> @integer 2~17, 100, 1000, 10000, 100000, 1000000, … @decimal 0.1~0.9, 1.1~1.7, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
+        </pluralRules>
+        <pluralRules locales="ff fr hy kab">
+            <pluralRule count="one">i = 0,1 @integer 0, 1 @decimal 0.0~1.5</pluralRule>
+            <pluralRule count="other"> @integer 2~17, 100, 1000, 10000, 100000, 1000000, … @decimal 2.0~3.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
         </pluralRules>
         <pluralRules locales="lv">
-            <pluralRule count="zero">n is 0</pluralRule>
-            <pluralRule count="one">n mod 10 is 1 and n mod 100 is not 11</pluralRule>
+            <pluralRule count="zero">n % 10 = 0 or n % 100 = 11..19 or v = 2 and f % 100 = 11..19 @integer 0, 10~20, 30, 40, 50, 60, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
+            <pluralRule count="one">n % 10 = 1 and n % 100 != 11 or v = 2 and f % 10 = 1 and f % 100 != 11 or v != 2 and f % 10 = 1 @integer 1, 21, 31, 41, 51, 61, 71, 81, 101, 1001, … @decimal 0.1, 1.0, 1.1, 2.1, 3.1, 4.1, 5.1, 6.1, 7.1, 10.1, 100.1, 1000.1, …</pluralRule>
+            <pluralRule count="other"> @integer 2~9, 22~29, 102, 1002, … @decimal 0.2~0.9, 1.2~1.9, 10.2, 100.2, 1000.2, …</pluralRule>
         </pluralRules>
         <pluralRules locales="iu kw naq se sma smi smj smn sms">
-            <pluralRule count="one">n is 1</pluralRule>
-            <pluralRule count="two">n is 2</pluralRule>
-        </pluralRules>
-        <pluralRules locales="ga"> <!-- http://unicode.org/cldr/trac/ticket/3915 -->
-            <pluralRule count="one">n is 1</pluralRule>
-            <pluralRule count="two">n is 2</pluralRule>
-            <pluralRule count="few">n in 3..6</pluralRule>
-            <pluralRule count="many">n in 7..10</pluralRule>
-        </pluralRules>
-        <pluralRules locales="ro mo">
-            <pluralRule count="one">n is 1</pluralRule>
-            <pluralRule count="few">n is 0 OR n is not 1 AND n mod 100 in 1..19</pluralRule>
+            <pluralRule count="one">n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000</pluralRule>
+            <pluralRule count="two">n = 2 @integer 2 @decimal 2.0, 2.00, 2.000, 2.0000</pluralRule>
+            <pluralRule count="other"> @integer 0, 3~17, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~0.9, 1.1~1.6, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
+        </pluralRules>
+        <pluralRules locales="ga">
+            <pluralRule count="one">n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000</pluralRule>
+            <pluralRule count="two">n = 2 @integer 2 @decimal 2.0, 2.00, 2.000, 2.0000</pluralRule>
+            <pluralRule count="few">n = 3..6 @integer 3~6 @decimal 3.0, 4.0, 5.0, 6.0, 3.00, 4.00, 5.00, 6.00, 3.000, 4.000, 5.000, 6.000, 3.0000, 4.0000, 5.0000, 6.0000</pluralRule>
+            <pluralRule count="many">n = 7..10 @integer 7~10 @decimal 7.0, 8.0, 9.0, 10.0, 7.00, 8.00, 9.00, 10.00, 7.000, 8.000, 9.000, 10.000, 7.0000, 8.0000, 9.0000, 10.0000</pluralRule>
+            <pluralRule count="other"> @integer 0, 11~25, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~0.9, 1.1~1.6, 10.1, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
+        </pluralRules>
+        <pluralRules locales="mo ro">
+            <pluralRule count="one">i = 1 and v = 0 @integer 1</pluralRule>
+            <pluralRule count="few">v != 0 or n = 0 or n != 1 and n % 100 = 1..19 @integer 0, 2~16, 101, 1001, … @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
+            <pluralRule count="other"> @integer 20~35, 100, 1000, 10000, 100000, 1000000, …</pluralRule>
         </pluralRules>
         <pluralRules locales="lt">
-            <pluralRule count="one">n mod 10 is 1 and n mod 100 not in 11..19</pluralRule>
-            <pluralRule count="few">n mod 10 in 2..9 and n mod 100 not in 11..19</pluralRule>
+            <pluralRule count="one">n % 10 = 1 and n % 100 != 11..19 @integer 1, 21, 31, 41, 51, 61, 71, 81, 101, 1001, … @decimal 1.0, 21.0, 31.0, 41.0, 51.0, 61.0, 71.0, 81.0, 101.0, 1001.0, …</pluralRule>
+            <pluralRule count="few">n % 10 = 2..9 and n % 100 != 11..19 @integer 2~9, 22~29, 102, 1002, … @decimal 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 22.0, 102.0, 1002.0, …</pluralRule>
+            <pluralRule count="many">f != 0   @decimal 0.1~0.9, 1.1~1.7, 10.1, 100.1, 1000.1, …</pluralRule>
+            <pluralRule count="other"> @integer 0, 10~20, 30, 40, 50, 60, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
         </pluralRules>
-        <pluralRules locales="be bs hr ru sh sr uk">
-            <pluralRule count="one">n mod 10 is 1 and n mod 100 is not 11</pluralRule>
-            <pluralRule count="few">n mod 10 in 2..4 and n mod 100 not in 12..14</pluralRule>
-            <pluralRule count="many">n mod 10 is 0 or n mod 10 in 5..9 or n mod 100 in 11..14</pluralRule>
-            <!-- others are fractions -->
+        <pluralRules locales="be">
+            <pluralRule count="one">n % 10 = 1 and n % 100 != 11 @integer 1, 21, 31, 41, 51, 61, 71, 81, 101, 1001, … @decimal 1.0, 21.0, 31.0, 41.0, 51.0, 61.0, 71.0, 81.0, 101.0, 1001.0, …</pluralRule>
+            <pluralRule count="few">n % 10 = 2..4 and n % 100 != 12..14 @integer 2~4, 22~24, 32~34, 42~44, 52~54, 62, 102, 1002, … @decimal 2.0, 3.0, 4.0, 22.0, 23.0, 24.0, 32.0, 33.0, 102.0, 1002.0, …</pluralRule>
+            <pluralRule count="many">n % 10 = 0 or n % 10 = 5..9 or n % 100 = 11..14 @integer 0, 5~19, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
+            <pluralRule count="other">   @decimal 0.1~0.9, 1.1~1.7, 10.1, 100.1, 1000.1, …</pluralRule>
         </pluralRules>
         <pluralRules locales="cs sk">
-            <pluralRule count="one">n is 1</pluralRule>
-            <pluralRule count="few">n in 2..4</pluralRule>
+            <pluralRule count="one">i = 1 and v = 0 @integer 1</pluralRule>
+            <pluralRule count="few">i = 2..4 and v = 0 @integer 2~4</pluralRule>
+            <pluralRule count="many">v != 0   @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
+            <pluralRule count="other"> @integer 0, 5~19, 100, 1000, 10000, 100000, 1000000, …</pluralRule>
         </pluralRules>
         <pluralRules locales="pl">
-            <pluralRule count="one">n is 1</pluralRule>
-            <pluralRule count="few">n mod 10 in 2..4 and n mod 100 not in 12..14</pluralRule>
-            <pluralRule count="many">n is not 1 and n mod 10 in 0..1 or n mod 10 in 5..9 or n mod 100 in 12..14</pluralRule>
-            <!-- others are fractions -->
-            <!-- and n mod 100 not in 22..24 from Tamplin -->
+            <pluralRule count="one">i = 1 and v = 0 @integer 1</pluralRule>
+            <pluralRule count="few">v = 0 and i % 10 = 2..4 and i % 100 != 12..14 @integer 2~4, 22~24, 32~34, 42~44, 52~54, 62, 102, 1002, …</pluralRule>
+            <pluralRule count="many">v = 0 and i != 1 and i % 10 = 0..1 or v = 0 and i % 10 = 5..9 or v = 0 and i % 100 = 12..14 @integer 0, 5~19, 100, 1000, 10000, 100000, 1000000, …</pluralRule>
+            <pluralRule count="other">   @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
         </pluralRules>
         <pluralRules locales="sl">
-            <pluralRule count="one">n mod 100 is 1</pluralRule>
-            <pluralRule count="two">n mod 100 is 2</pluralRule>
-            <pluralRule count="few">n mod 100 in 3..4</pluralRule>
-        </pluralRules>
-        <pluralRules locales="mt"> <!-- from Tamplin's data -->
-            <pluralRule count="one">n is 1</pluralRule>
-            <pluralRule count="few">n is 0 or n mod 100 in 2..10</pluralRule>
-            <pluralRule count="many">n mod 100 in 11..19</pluralRule>
-        </pluralRules>
-        <pluralRules locales="mk"> <!-- from Tamplin's data -->
-            <pluralRule count="one">n mod 10 is 1 and n is not 11</pluralRule>
-        </pluralRules>
-        <pluralRules locales="cy"> <!-- from http://www.saltcymru.org/wordpress/?p=99&lang=en -->
-            <pluralRule count="zero">n is 0</pluralRule>
-            <pluralRule count="one">n is 1</pluralRule>
-            <pluralRule count="two">n is 2</pluralRule>
-            <pluralRule count="few">n is 3</pluralRule>
-            <pluralRule count="many">n is 6</pluralRule>
+            <pluralRule count="one">v = 0 and i % 100 = 1 @integer 1, 101, 201, 301, 401, 501, 601, 701, 1001, …</pluralRule>
+            <pluralRule count="two">v = 0 and i % 100 = 2 @integer 2, 102, 202, 302, 402, 502, 602, 702, 1002, …</pluralRule>
+            <pluralRule count="few">v = 0 and i % 100 = 3..4 or v != 0 @integer 3, 4, 103, 104, 203, 204, 303, 304, 403, 404, 503, 504, 603, 604, 703, 704, 1003, … @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
+            <pluralRule count="other"> @integer 0, 5~19, 100, 1000, 10000, 100000, 1000000, …</pluralRule>
+        </pluralRules>
+        <pluralRules locales="mt">
+            <pluralRule count="one">n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000</pluralRule>
+            <pluralRule count="few">n = 0 or n % 100 = 2..10 @integer 0, 2~10, 102~107, 1002, … @decimal 0.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 10.0, 102.0, 1002.0, …</pluralRule>
+            <pluralRule count="many">n % 100 = 11..19 @integer 11~19, 111~117, 1011, … @decimal 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 111.0, 1011.0, …</pluralRule>
+            <pluralRule count="other"> @integer 20~35, 100, 1000, 10000, 100000, 1000000, … @decimal 0.1~0.9, 1.1~1.7, 10.1, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
+        </pluralRules>
+        <pluralRules locales="mk">
+            <pluralRule count="one">v = 0 and i % 10 = 1 or f % 10 = 1 @integer 1, 11, 21, 31, 41, 51, 61, 71, 101, 1001, … @decimal 0.1, 1.1, 2.1, 3.1, 4.1, 5.1, 6.1, 7.1, 10.1, 100.1, 1000.1, …</pluralRule>
+            <pluralRule count="other"> @integer 0, 2~10, 12~17, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0, 0.2~1.0, 1.2~1.7, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
+        </pluralRules>
+        <pluralRules locales="cy">
+            <pluralRule count="zero">n = 0 @integer 0 @decimal 0.0, 0.00, 0.000, 0.0000</pluralRule>
+            <pluralRule count="one">n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000</pluralRule>
+            <pluralRule count="two">n = 2 @integer 2 @decimal 2.0, 2.00, 2.000, 2.0000</pluralRule>
+            <pluralRule count="few">n = 3 @integer 3 @decimal 3.0, 3.00, 3.000, 3.0000</pluralRule>
+            <pluralRule count="many">n = 6 @integer 6 @decimal 6.0, 6.00, 6.000, 6.0000</pluralRule>
+            <pluralRule count="other"> @integer 4, 5, 7~20, 100, 1000, 10000, 100000, 1000000, … @decimal 0.1~0.9, 1.1~1.7, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
         </pluralRules>
         <pluralRules locales="lag">
-            <pluralRule count="zero">n is 0</pluralRule>
-            <pluralRule count="one">n within 0..2 and n is not 0 and n is not 2</pluralRule>
+            <pluralRule count="zero">n = 0 @integer 0 @decimal 0.0, 0.00, 0.000, 0.0000</pluralRule>
+            <pluralRule count="one">i = 0,1 and n != 0 @integer 1 @decimal 0.1~1.6</pluralRule>
+            <pluralRule count="other"> @integer 2~17, 100, 1000, 10000, 100000, 1000000, … @decimal 2.0~3.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
         </pluralRules>
         <pluralRules locales="shi">
-            <pluralRule count="one">n within 0..1</pluralRule>
-            <pluralRule count="few">n in 2..10</pluralRule>
+            <pluralRule count="one">i = 0 or n = 1 @integer 0, 1 @decimal 0.0~1.0, 0.00~0.04</pluralRule>
+            <pluralRule count="few">n = 2..10 @integer 2~10 @decimal 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 2.00, 3.00, 4.00, 5.00, 6.00, 7.00, 8.00</pluralRule>
+            <pluralRule count="other"> @integer 11~26, 100, 1000, 10000, 100000, 1000000, … @decimal 1.1~1.9, 2.1~2.7, 10.1, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
         </pluralRules>
-        <pluralRules locales="br"> <!-- from http://unicode.org/cldr/trac/ticket/2886 -->
-            <pluralRule count="one">n mod 10 is 1 and n mod 100 not in 11,71,91</pluralRule>
-            <pluralRule count="two">n mod 10 is 2 and n mod 100 not in 12,72,92</pluralRule>
-            <pluralRule count="few">n mod 10 in 3..4,9 and n mod 100 not in 10..19,70..79,90..99</pluralRule>
-            <pluralRule count="many">n is not 0 and n mod 1000000 is 0</pluralRule>
+        <pluralRules locales="br">
+            <pluralRule count="one">n % 10 = 1 and n % 100 != 11,71,91 @integer 1, 21, 31, 41, 51, 61, 81, 101, 1001, … @decimal 1.0, 21.0, 31.0, 41.0, 51.0, 61.0, 81.0, 101.0, 1001.0, …</pluralRule>
+            <pluralRule count="two">n % 10 = 2 and n % 100 != 12,72,92 @integer 2, 22, 32, 42, 52, 62, 82, 102, 1002, … @decimal 2.0, 22.0, 32.0, 42.0, 52.0, 62.0, 82.0, 102.0, 1002.0, …</pluralRule>
+            <pluralRule count="few">n % 10 = 3..4,9 and n % 100 != 10..19,70..79,90..99 @integer 3, 4, 9, 23, 24, 29, 33, 34, 39, 43, 44, 49, 103, 1003, … @decimal 3.0, 4.0, 9.0, 23.0, 24.0, 29.0, 33.0, 34.0, 103.0, 1003.0, …</pluralRule>
+            <pluralRule count="many">n != 0 and n % 1000000 = 0 @integer 1000000, … @decimal 1000000.0, 1000000.00, 1000000.000, …</pluralRule>
+            <pluralRule count="other"> @integer 0, 5~8, 10~20, 100, 1000, 10000, 100000, … @decimal 0.0~0.9, 1.1~1.6, 10.0, 100.0, 1000.0, 10000.0, 100000.0, …</pluralRule>
         </pluralRules>
         <pluralRules locales="ksh">
-            <pluralRule count="zero">n is 0</pluralRule>
-            <pluralRule count="one">n is 1</pluralRule>
+            <pluralRule count="zero">n = 0 @integer 0 @decimal 0.0, 0.00, 0.000, 0.0000</pluralRule>
+            <pluralRule count="one">n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000</pluralRule>
+            <pluralRule count="other"> @integer 2~17, 100, 1000, 10000, 100000, 1000000, … @decimal 0.1~0.9, 1.1~1.7, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
         </pluralRules>
         <pluralRules locales="tzm">
-            <pluralRule count="one">n in 0..1 or n in 11..99</pluralRule>
+            <pluralRule count="one">n = 0..1 or n = 11..99 @integer 0, 1, 11~24 @decimal 0.0, 1.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0, 20.0, 21.0, 22.0, 23.0, 24.0</pluralRule>
+            <pluralRule count="other"> @integer 2~10, 100~106, 1000, 10000, 100000, 1000000, … @decimal 0.1~0.9, 1.1~1.7, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
         </pluralRules>
         <pluralRules locales="gv">
-            <pluralRule count="one">n mod 10 in 1..2 or n mod 20 is 0</pluralRule>
+            <pluralRule count="one">n % 10 = 1 @integer 1, 11, 21, 31, 41, 51, 61, 71, 101, 1001, … @decimal 1.0, 11.0, 21.0, 31.0, 41.0, 51.0, 61.0, 71.0, 101.0, 1001.0, …</pluralRule>
+            <pluralRule count="two">n % 10 = 2 @integer 2, 12, 22, 32, 42, 52, 62, 72, 102, 1002, … @decimal 2.0, 12.0, 22.0, 32.0, 42.0, 52.0, 62.0, 72.0, 102.0, 1002.0, …</pluralRule>
+            <pluralRule count="few">n % 100 = 0,20,40,60 @integer 0, 20, 40, 60, 100, 120, 140, 160, 1000, 10000, 100000, 1000000, … @decimal 0.0, 20.0, 40.0, 60.0, 100.0, 120.0, 140.0, 160.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
+            <pluralRule count="other"> @integer 3~10, 13~19, 23, 103, 1003, … @decimal 0.1~0.9, 1.1~1.7, 10.0, 100.1, 1000.1, …</pluralRule>
         </pluralRules>
         <pluralRules locales="gd">
-            <pluralRule count="one">n in 1,11</pluralRule>
-            <pluralRule count="two">n in 2,12</pluralRule>
-            <pluralRule count="few">n in 3..10,13..19</pluralRule>
+            <pluralRule count="one">n = 1,11 @integer 1, 11 @decimal 1.0, 11.0, 1.00, 11.00, 1.000, 11.000, 1.0000</pluralRule>
+            <pluralRule count="two">n = 2,12 @integer 2, 12 @decimal 2.0, 12.0, 2.00, 12.00, 2.000, 12.000, 2.0000</pluralRule>
+            <pluralRule count="few">n = 3..10,13..19 @integer 3~10, 13~19 @decimal 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0, 3.00</pluralRule>
+            <pluralRule count="other"> @integer 0, 20~34, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~0.9, 1.1~1.6, 10.1, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
+        </pluralRules>
+        <pluralRules locales="bm bo dz id ig ii in ja jbo jv jw kde kea km ko lkt lo ms my nqo sah ses sg th to vi wo yo zh">
+            <pluralRule count="other"> @integer 0~15, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
+        </pluralRules>
+        <pluralRules locales="fil tl">
+            <pluralRule count="one">i = 0..1 and v = 0 @integer 0, 1</pluralRule>
+            <pluralRule count="other"> @integer 2~17, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
+        </pluralRules>
+        <pluralRules locales="ca de en et fi gl it ji nl sv sw ur yi">
+            <pluralRule count="one">i = 1 and v = 0 @integer 1</pluralRule>
+            <pluralRule count="other"> @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
+        </pluralRules>
+        <pluralRules locales="pt">
+            <pluralRule count="one">i = 1 and v = 0 or i = 0 and t = 1 @integer 1 @decimal 0.1, 0.01, 0.10, 0.001, 0.010, 0.100, 0.0001, 0.0010, 0.0100, 0.1000</pluralRule>
+            <pluralRule count="other"> @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0, 0.2~1.6, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
+        </pluralRules>
+        <pluralRules locales="da">
+            <pluralRule count="one">n = 1 or t != 0 and i = 0,1 @integer 1 @decimal 0.1~1.6</pluralRule>
+            <pluralRule count="other"> @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0, 2.0~3.4, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
+        </pluralRules>
+        <pluralRules locales="pt_PT">
+            <pluralRule count="one">n = 1 and v = 0 @integer 1</pluralRule>
+            <pluralRule count="other"> @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
+        </pluralRules>
+        <pluralRules locales="am bn fa gu hi kn mr zu">
+            <pluralRule count="one">i = 0 or n = 1 @integer 0, 1 @decimal 0.0~1.0, 0.00~0.04</pluralRule>
+            <pluralRule count="other"> @integer 2~17, 100, 1000, 10000, 100000, 1000000, … @decimal 1.1~2.6, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
+        </pluralRules>
+        <pluralRules locales="is">
+            <pluralRule count="one">t = 0 and i % 10 = 1 and i % 100 != 11 or t != 0 @integer 1, 21, 31, 41, 51, 61, 71, 81, 101, 1001, … @decimal 0.1~1.6, 10.1, 100.1, 1000.1, …</pluralRule>
+            <pluralRule count="other"> @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
+        </pluralRules>
+        <pluralRules locales="si">
+            <pluralRule count="one">n = 0,1 or i = 0 and f = 1 @integer 0, 1 @decimal 0.0, 0.1, 1.0, 0.00, 0.01, 1.00, 0.000, 0.001, 1.000, 0.0000, 0.0001, 1.0000</pluralRule>
+            <pluralRule count="other"> @integer 2~17, 100, 1000, 10000, 100000, 1000000, … @decimal 0.2~0.9, 1.1~1.8, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
+        </pluralRules>
+        <pluralRules locales="bs hr sh sr">
+            <pluralRule count="one">v = 0 and i % 10 = 1 and i % 100 != 11 or f % 10 = 1 and f % 100 != 11 @integer 1, 21, 31, 41, 51, 61, 71, 81, 101, 1001, … @decimal 0.1, 1.1, 2.1, 3.1, 4.1, 5.1, 6.1, 7.1, 10.1, 100.1, 1000.1, …</pluralRule>
+            <pluralRule count="few">v = 0 and i % 10 = 2..4 and i % 100 != 12..14 or f % 10 = 2..4 and f % 100 != 12..14 @integer 2~4, 22~24, 32~34, 42~44, 52~54, 62, 102, 1002, … @decimal 0.2~0.4, 1.2~1.4, 2.2~2.4, 3.2~3.4, 4.2~4.4, 5.2, 10.2, 100.2, 1000.2, …</pluralRule>
+            <pluralRule count="other"> @integer 0, 5~19, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0, 0.5~1.0, 1.5~2.0, 2.5~2.7, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
+        </pluralRules>
+        <pluralRules locales="ru">
+            <pluralRule count="one">v = 0 and i % 10 = 1 and i % 100 != 11 @integer 1, 21, 31, 41, 51, 61, 71, 81, 101, 1001, …</pluralRule>
+            <pluralRule count="many">v = 0 and i % 10 = 0 or v = 0 and i % 10 = 5..9 or v = 0 and i % 100 = 11..14 @integer 0, 5~19, 100, 1000, 10000, 100000, 1000000, …</pluralRule>
+            <pluralRule count="other"> @integer 2~4, 22~24, 32~34, 42~44, 52~54, 62, 102, 1002, … @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
+        </pluralRules>
+        <pluralRules locales="uk">
+            <pluralRule count="one">v = 0 and i % 10 = 1 and i % 100 != 11 @integer 1, 21, 31, 41, 51, 61, 71, 81, 101, 1001, …</pluralRule>
+            <pluralRule count="few">v = 0 and i % 10 = 2..4 and i % 100 != 12..14 @integer 2~4, 22~24, 32~34, 42~44, 52~54, 62, 102, 1002, …</pluralRule>
+            <pluralRule count="many">v = 0 and i % 10 = 0 or v = 0 and i % 10 = 5..9 or v = 0 and i % 100 = 11..14 @integer 0, 5~19, 100, 1000, 10000, 100000, 1000000, …</pluralRule>
+            <pluralRule count="other">   @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
         </pluralRules>
     </plurals>
 </supplementalData>
index cdbb9ca..0338da0 100644 (file)
@@ -643,7 +643,7 @@ Préksa keulayi neu’ija Droëneuh.',
 'passwordtooshort' => "Lageuëm paléng h'an harôh na {{PLURAL:$1|1 karakter|$1 karakter}}.",
 'password-name-match' => 'Lageuëm Droeuneuh beubida nibak nan Ureuëng ngui.',
 'password-login-forbidden' => 'Ngui nan ureuëng ngui ngön lageuëm nyoë ka jitham.',
-'mailmypassword' => 'Atô ulang lageuëm rahsia',
+'mailmypassword' => 'Atô keulayi lageuëm rahsia',
 'passwordremindertitle' => 'Lageuëm seumeuntara barô keu {{SITENAME}}',
 'passwordremindertext' => 'Salah sidroë (kadang Droëneuh, ngön alamat IP $1) geulakèë lageuëm barô keu {{SITENAME}} ($4). Lageuëm si\'at keu ureuëng ngui "$2" ka geupeuna ngön ka geuatô jeuet keu "$3". Meunyö nyoe nakeuh meukeusud droeneuh, droeneuh peureulèë neutamöng ngön neupiléh lageuëm barô jinoe. Lageuem siat droeneuh meung abéh lam {{PLURAL:$5|siuroe|$5 uroe}}.
 
@@ -660,15 +660,19 @@ Meunyö ureuëng la\'én nyang peugöt neulakèë nyoe, atawa meunyö droeneuh k
 'usernamehasherror' => 'Nan ureueng ngui han jeut na tanda pageue',
 'login-throttled' => 'Droeneuh ka lé that neuujoe tamöng.
 Neuprèh $1 sigohlom neuujoe lom.',
+'login-abort-generic' => 'Log tamöng droëneuh han meuhasé- Ngon ka geupeubateuë.',
 'loginlanguagelabel' => 'Bahsa: $1',
 'createacct-another-realname-tip' => 'Nan aseuli hana meucéh neupasoe.
 Meunyö neupasoe, euntreuk nan droëneuh nyan geupeuleumah mangat jitupeue soe nyang tuléh.',
 
 # Email sending
+'php-mail-error-unknown' => 'Ralat hana geuteupeuë lam guna surat() PHP',
 'user-mail-no-addy' => 'Ujoe kirém surat-e ngön hana alamat surat-e.',
+'user-mail-no-body' => 'Droëneuh ka neucuba kirém e-surat soh ngon that paneuk',
 
 # Change password dialog
 'changepassword' => 'Gantoe lageuem rahsia',
+'resetpass_announce' => 'Droëneuh kaneutamöng ngon kode siat nyang geukirém rot e-surat. Keu neusambông nyan droëneuh jeuët neupeutamöng narit rahsia barô',
 'resetpass_header' => 'Gantoë lageuëm rahsia nan ureuëng ngui',
 'oldpassword' => 'Lageuëm rahsia awai:',
 'newpassword' => 'Lageuëm rahsia barô:',
@@ -679,11 +683,20 @@ Meunyö neupasoe, euntreuk nan droëneuh nyan geupeuleumah mangat jitupeue soe n
 'resetpass-no-info' => "Droëneuh suwah neutamöng mangat jeuët neu'eu laman nyoë",
 'resetpass-submit-loggedin' => 'Gantoë lageuëm rahsia',
 'resetpass-submit-cancel' => 'Pubateuë',
+'resetpass-wrong-oldpass' => 'Narit rahsia salah.
+Droëneuh kadang ka meuhasé neuubah narit rahsia atawa neulakè narit rahsia barô',
 'resetpass-temp-password' => 'Lageuem rahsia keu siat:',
+'resetpass-abort-generic' => 'Meuubah narit rahsia ka geupeubateuë lé ekstensi',
 
 # Special:PasswordReset
+'passwordreset-text-one' => 'Neupeuleungkap formulir nyoë keu meuatô keulayi narit rahsia',
+'passwordreset-text-many' => '{{PLURAL:$1|Neupasoë saboh kutak dimeuyub nyoë keu neuteumèe narit rahsia siat rot e-surat}}',
+'passwordreset-disabled' => 'Meuatô narit rahsia keulayi ka geupeumaté lam wiki nyoë',
+'passwordreset-emaildisabled' => 'Tanda e-surat ka geupeumaté lam wiki nyoë',
 'passwordreset-username' => 'Ureueng ngui:',
+'passwordreset-domain' => 'Domain',
 'passwordreset-capture' => 'Eu hasé surat-e?',
+'passwordreset-capture-help' => 'Meunyoë droëneuh neuceuë kutak nyoë, e-surat (ngon narit rahsia siat) ka geupeuleumah keudroëneuh ngon geukirém cit keu ureuëng ngui',
 'passwordreset-email' => 'Alamat surat-e:',
 'passwordreset-emailtitle' => 'Teuneurang nan ureueng ngui bak {{SITENAME}}',
 
@@ -974,7 +987,7 @@ Dalèh $3 nyoe nakeuh ''$2''",
 'yournick' => 'Tanda jaroe barô:',
 'prefs-help-signature' => 'Komèntar bak ôn marit suwah neubôh "<nowiki>~~~~</nowiki>", nyang eunteuk meugantoe keu tanda jaroe droeneuh ngön watèe jinoe.',
 'badsiglength' => 'Tanda jaroë droëneuh panyang that.
-Panyangjih bèk leubèh nibak $1 {{PLURAL:$1|haraih|haraih}}.',
+Bèk neupeuleubèh nibak $1 {{PLURAL:$1|haraih|haraih}}.',
 'gender-unknown' => 'Hana geupeunyata',
 'gender-male' => 'Ureueng agam',
 'gender-female' => 'Ureueng inöng',
index 7f28c22..0fed4c4 100644 (file)
@@ -481,8 +481,8 @@ $1",
 'youhavenewmessages' => 'U het $1 (sien $2).',
 'youhavenewmessagesfromusers' => "U het $1 van {{PLURAL:$3|'n ander gebruiker|$3 gebruikers}} ($2).",
 'youhavenewmessagesmanyusers' => 'U het $1 van baie gebruikers ($2).',
-'newmessageslinkplural' => "{{PLURAL:$1|'n nuwe boodskap|nuwe boodskappe}}",
-'newmessagesdifflinkplural' => 'laaste {{PLURAL:$1|wysiging|wysigings}}',
+'newmessageslinkplural' => "{{PLURAL:$1|'n nuwe boodskap|999=nuwe boodskappe}}",
+'newmessagesdifflinkplural' => 'laaste {{PLURAL:$1|wysiging|999=wysigings}}',
 'youhavenewmessagesmulti' => 'U het nuwe boodskappe op $1',
 'editsection' => 'wysig',
 'editold' => 'wysig',
@@ -534,6 +534,7 @@ Dit kan ook dui op 'n fout in die sagteware van {{SITENAME}}.",
 # General errors
 'error' => 'Fout',
 'databaseerror' => 'Databasisfout',
+'databaseerror-text' => "'n Databasisfout het voorgekom. Dit kan op 'n fout in die sagteware dui.",
 'databaseerror-textcl' => "'n Databasis-versoek het gefaal.",
 'databaseerror-query' => 'SQL: $1',
 'databaseerror-function' => 'Funksie: $1',
@@ -572,6 +573,7 @@ Iemand anders het dit moontlik reeds geskrap.',
 'cannotdelete-title' => 'Bladsy "$1" kan nie verwyder word nie',
 'delete-hook-aborted' => "Die wysiging is deur 'n hoek gekanselleer.
 Geen verduideliking is verskaf nie.",
+'no-null-revision' => 'Dit was nie moontlik om \'n nuwe leë weergawe vir bladsy "$1" maak nie',
 'badtitle' => 'Ongeldige titel',
 'badtitletext' => "Die bladsytitel waarvoor gevra is, is ongeldig, leeg, of
 'n verkeerd geskakelde tussen-taal of tussen-wiki titel.",
@@ -606,7 +608,8 @@ Die rede hiervoor is "\'\'$3\'\'".',
 'invalidtitle-knownnamespace' => 'Ongeldige titel met naamruimte "$2" en teks "$3"',
 'invalidtitle-unknownnamespace' => 'Ongeldige titel met onbekende naamruimtenummer $1 en teks "$2"',
 'exception-nologin' => 'Nie aangeteken nie',
-'exception-nologin-text' => 'U moet eers op hierdie wiki aanmeld alvorens u hierdie bladsy kan sien of die handeling kan uitvoer.',
+'exception-nologin-text' => '[[Special:Userlogin|Meld aan]] om hierdie bladsy te wys of om die handeling uit te voer.',
+'exception-nologin-text-manual' => 'U moet $1 om hierdie bladsy te wys of die handeling uit te voer.',
 
 # Virus scanner
 'virus-badscanner' => "Slegte konfigurasie: onbekende virusskandeerder: ''$1''",
@@ -614,10 +617,9 @@ Die rede hiervoor is "\'\'$3\'\'".',
 'virus-unknownscanner' => 'onbekende antivirus:',
 
 # Login and logout pages
-'logouttext' => "'''U is nou uitgeteken'''
+'logouttext' => "'''U is nou afgemeld'''
 
-U kan aanhou om {{SITENAME}} anoniem te gebruik; of u kan weer as dieselfde of 'n ander gebruiker <span class='plainlinks'>[$1 aanmeld]</span>.
-Dit is moontlik dat sommige bladsye nog sal aandui dat u steeds aangemeld is totdat u u webblaaier se kas skoonmaak.",
+Sommige bladsye kan moontlik nog aandui dat u steeds aangemeld is, totdat u u webblaaier se kas skoonmaak.",
 'welcomeuser' => 'Welkom, $1!',
 'welcomecreation-msg' => 'U gebruiker is geskep.
 Moenie vergeet om u [[Special:Preferences|voorkeure vir {{SITENAME}}]] te stel nie.',
@@ -654,9 +656,11 @@ Moenie vergeet om u [[Special:Preferences|voorkeure vir {{SITENAME}}]] te stel n
 'gotaccount' => "Het u reeds 'n rekening? $1.",
 'gotaccountlink' => 'Meld aan',
 'userlogin-resetlink' => 'U besonderhede vergeet?',
-'userlogin-resetpassword-link' => 'Herstel u wagwoord',
+'userlogin-resetpassword-link' => 'Wagwoord vergeet?',
 'helplogin-url' => 'Help:Aanmelding',
 'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|Hulp met aanmelding]]',
+'userlogin-loggedin' => "U is reeds aangemeld as {{GENDER:$1|$1}}.
+Gebruik die onderstaande vorm om as 'n ander gebruiker aan te meld.",
 'userlogin-createanother' => "Skep nog 'n rekening",
 'createacct-join' => 'Verskaf u gegewens hieronder.',
 'createacct-another-join' => 'Sleutel die nuwe rekening se inligting hier onder in:',
@@ -746,6 +750,8 @@ Wag asseblief alvorens u weer probeer.",
 'login-abort-generic' => 'U is nie aangemeld nie. Die prosedure is gestaak.',
 'loginlanguagelabel' => 'Taal: $1',
 'suspicious-userlogout' => "U versoek om af te teken is geïgnoreer omdat dit lyk asof dit deur 'n gebreekte webleser of instaanbediener gestuur is.",
+'createacct-another-realname-tip' => 'Regte naam is opsioneel.
+As u dit verskaf, sal dit gebruik word om u erkenning vir u werk te gee.',
 
 # Email sending
 'php-mail-error-unknown' => 'Onbekende fout in PHP se mail()-funksie',
@@ -762,8 +768,7 @@ Om voort te gaan moet u 'n nuwe wagwoord hier kies:",
 'newpassword' => 'Nuwe wagwoord',
 'retypenew' => 'Tik nuwe wagwoord weer in',
 'resetpass_submit' => 'Stel wagwoord en meld aan',
-'changepassword-success' => 'U wagwoord is suksesvol gewysig!
-Besig om u aan te meld...',
+'changepassword-success' => 'U wagwoord is suksesvol gewysig!',
 'resetpass_forbidden' => 'Wagwoorde kannie gewysig word nie.',
 'resetpass-no-info' => 'U moet ingeteken wees om hierdie bladsy direk te kan gebruik.',
 'resetpass-submit-loggedin' => 'Verander wagwoord',
@@ -776,7 +781,7 @@ U het moontlik reeds u wagwoord gewysig of 'n nuwe tydelike wagwoord aangevra.",
 # Special:PasswordReset
 'passwordreset' => 'Wagwoord herstel',
 'passwordreset-text-one' => 'Voltooi hierdie vorm om u wagwoord te herstel.',
-'passwordreset-text-many' => '{{PLURAL:$1|Vul een van die velde in om u wagwoord te herstel.}}',
+'passwordreset-text-many' => "{{PLURAL:$1|Vul een van die velde in om 'n tydelike wagwoord per e-pos te ontvang.}}",
 'passwordreset-legend' => 'Kry nuwe wagwoord',
 'passwordreset-disabled' => 'Die herskik van U wagwoord is gedeaktiveer op hierdie wiki.',
 'passwordreset-emaildisabled' => 'E-posfunksies is afgeskakel op hierdie wiki.',
@@ -1589,16 +1594,18 @@ As u dit verskaf, sal dit gebruik word om erkenning vir u werk te gee.',
 'recentchanges-summary' => 'Volg die mees onlangse wysigings aan die wiki op die bladsy.',
 'recentchanges-noresult' => 'Geen wysigings gedurende die tydperk pas die kriteria nie.',
 'recentchanges-feed-description' => 'Hierdie voer laat u toe om die mees onlangse wysigings aan die wiki te volg.',
-'recentchanges-label-newpage' => "Met die wysiging is 'n nuwe bladsy geskep",
+'recentchanges-label-newpage' => "Met die wysiging is 'n nuwe bladsy geskep.",
 'recentchanges-label-minor' => "Hierdie is 'n klein wysiging",
-'recentchanges-label-bot' => "Hierdie wysiging was deur 'n bot uitgevoer",
+'recentchanges-label-bot' => "Hierdie wysiging is deur 'n bot uitgevoer",
 'recentchanges-label-unpatrolled' => 'Die wysiging is nog nie gekontroleer nie',
+'recentchanges-label-plusminus' => 'Bladsy is met die aantal grepe gewysig',
+'recentchanges-legend-heading' => "'''Sleutel:'''",
 'recentchanges-legend-newpage' => '$1 - nuwe bladsy',
 'rcnotefrom' => "Hier volg wysigings sedert '''$2''' (maksimum van '''$1''' word gewys).",
 'rclistfrom' => 'Vertoon wysigings vanaf $1',
 'rcshowhideminor' => '$1 klein wysigings',
 'rcshowhidebots' => '$1 robotte',
-'rcshowhideliu' => '$1 aangetekende gebruikers',
+'rcshowhideliu' => '$1 geregistreerde gebruikers',
 'rcshowhideanons' => '$1 anonieme gebruikers',
 'rcshowhidepatr' => '$1 gekontroleerde wysigings',
 'rcshowhidemine' => '$1 my wysigings',
@@ -2056,6 +2063,7 @@ Elke ry bevat skakels na die eerste en die tweede aanstuur, asook die eerste re
 'ninterwikis' => '$1 {{PLURAL:$1|interwikiskakel|interwikiskakels}}',
 'nlinks' => '$1 {{PLURAL:$1|skakel|skakels}}',
 'nmembers' => '$1 {{PLURAL:$1|lid|lede}}',
+'nmemberschanged' => '$1 → $2 {{PLURAL:$2|lid|lede}}',
 'nrevisions' => '$1 {{PLURAL:$1|weergawe|weergawes}}',
 'nviews' => '$1 {{PLURAL:$1|keer|kere}} aangevra',
 'nimagelinks' => 'Gebruik op {{PLURAL:$1|een bladsy|$1 bladsye}}',
@@ -3122,7 +3130,7 @@ $1',
 'svg-long-desc' => 'SVG-lêer, normaalweg $1 × $2 piksels, lêergrootte: $3',
 'svg-long-desc-animated' => 'Geanimeerde SVG-lêer, normaalweg $1 × $2 piksels, lêergrootte: $3',
 'svg-long-error' => 'Ongeldige SVG-lêer: $1',
-'show-big-image' => 'Volle resolusie',
+'show-big-image' => 'Oorspronklike lêer',
 'show-big-image-preview' => 'Grootte van hierdie voorskou: $1.',
 'show-big-image-other' => 'Ander {{PLURAL:$2|resolusie|resolusies}}: $1.',
 'show-big-image-size' => '$1 × $2 piksels',
@@ -3684,6 +3692,10 @@ Bevestig dat u die bladsy wil herskep.',
 'imgmultigo' => 'Laat waai!',
 'imgmultigoto' => 'Gaan na bladsy $1',
 
+# Language selector for translatable SVGs
+'img-lang-default' => '(standaard taal)',
+'img-lang-go' => 'OK',
+
 # Table pager
 'ascending_abbrev' => 'op',
 'descending_abbrev' => 'af',
@@ -3812,6 +3824,7 @@ Saam met die program moes u \'n [{{SERVER}}{{SCRIPTPATH}}/COPYING kopie van van
 
 # Special:SpecialPages
 'specialpages' => 'Spesiale bladsye',
+'specialpages-note-top' => 'Sleutel',
 'specialpages-note' => '* Normale spesiale bladsye.
 * <span class="mw-specialpagerestricted">Spesiale bladsye met beperkte toegang.</span>
 * <span class="mw-specialpagecached">Spesiale bladsye met gegewens uit die kas (kan verouderd wees).</span>',
@@ -4035,10 +4048,12 @@ Dit word gedoen deur die relevante funksies in die MediaWiki-ontleder te roep.',
 'expand_templates_input' => 'Invoerteks:',
 'expand_templates_output' => 'Resultaat',
 'expand_templates_xml_output' => 'XML-afvoer',
+'expand_templates_html_output' => 'Rou HTML-afvoer',
 'expand_templates_ok' => 'OK',
 'expand_templates_remove_comments' => 'Verwyder kommentaar',
 'expand_templates_remove_nowiki' => 'Onderdruk <nowiki> etikette in die resultaat',
 'expand_templates_generate_xml' => 'Wys XML-ontledingsboom',
+'expand_templates_generate_rawhtml' => 'Wys rou HTML',
 'expand_templates_preview' => 'Voorskou',
 
 );
index 6bd42cb..b1a1b1f 100644 (file)
@@ -33,11 +33,13 @@ $namespaceNames = array(
 );
 
 $namespaceAliases = array(
-       'Gesprec'      => NS_TALK,
-       'Biliþgesprec' => NS_FILE_TALK,
-       'Bysengesprec' => NS_TEMPLATE_TALK,
-       'Helpgesprec'  => NS_HELP_TALK,
-       'Floccgesprec' => NS_CATEGORY_TALK,
+       'Gesprec'       => NS_TALK,
+       'Brucend'       => NS_USER,
+       'Brucendmotung' => NS_USER_TALK,
+       'Biliþgesprec'  => NS_FILE_TALK,
+       'Bysengesprec'  => NS_TEMPLATE_TALK,
+       'Helpgesprec'   => NS_HELP_TALK,
+       'Floccgesprec'  => NS_CATEGORY_TALK,
 );
 
 $messages = array(
index 1adbced..5915d6a 100644 (file)
@@ -68,6 +68,7 @@
  * @author زكريا
  * @author عصام بايزيدي
  * @author عمرو
+ * @author محمد أحمد عبد الفتاح
  * @author محمد الجداوي
  * @author مشعل الحربي
  * @author نصوح
@@ -755,8 +756,8 @@ $1',
 
 'ok' => 'موافق',
 'retrievedfrom' => 'مجلوبة من "$1"',
-'youhavenewmessages' => 'لك $1 ($2).',
-'youhavenewmessagesfromusers' => 'لديك $1 من {{PLURAL:$3|مستخدم واحد|مستخدم واحد|مستخدمين اثنين|$3 مستخدمين|$3 مستخدما|$3 مستخدم}} ($2).',
+'youhavenewmessages' => '{{PLURAL:$3|لك}} $1 ($2).',
+'youhavenewmessagesfromusers' => '{{PLURAL:$4|لديك}} $1 من {{PLURAL:$3|مستخدم واحد|مستخدم واحد|مستخدمين اثنين|$3 مستخدمين|$3 مستخدما|$3 مستخدم}} ($2).',
 'youhavenewmessagesmanyusers' => 'لديك $1 من مستخدمين كثر ($2).',
 'newmessageslinkplural' => '{{PLURAL:$1|رسالة جديدة|999=رسائل جديدة}}',
 'newmessagesdifflinkplural' => 'أحدث {{PLURAL:$1|تغيير|999=تغييرات}}',
@@ -994,7 +995,7 @@ $2',
 'passwordtooshort' => 'يجب أن تتكون كلمة السر على الأقل من {{PLURAL:$1|حرف واحد|حرفين|$1 حروف|$1 حرفا|$1 حرف}}.',
 'password-name-match' => 'يجب أن تكون كلمة المرور مختلفة عن اسم المستخدم.',
 'password-login-forbidden' => 'تم منع استخدام اسم المستخدم هذا وكلمة السر.',
-'mailmypassword' => 'أرسÙ\84 Ù\84Ù\8a Ù\83Ù\84Ù\85Ø© Ø³Ø± Ø¬Ø¯Ù\8aدة',
+'mailmypassword' => 'أعد ØªØ¹Ù\8aÙ\8aÙ\86 Ù\83Ù\84Ù\85Ø© Ø§Ù\84سر',
 'passwordremindertitle' => 'كلمة سر مؤقتة جديدة ل{{SITENAME}}',
 'passwordremindertext' => 'لقد طلب شخص ما (غالبا أنت، من عنوان الآيبي $1) كلمة سر جديدة ل{{SITENAME}} ($4).
 أنشئت كلمة سر مؤقتة للمستخدم "$2" وجعلت "$3".
@@ -1566,8 +1567,8 @@ $1",
 'nextn-title' => '$1 {{PLURAL:$1|نتيجة|نتيجة}} تالية',
 'shown-title' => 'عرض $1 {{PLURAL:$1|نتيجة|نتيجة}} لكل صفحة',
 'viewprevnext' => 'عرض ($1 {{int:pipe-separator}} $2) ($3).',
-'searchmenu-exists' => "*الصفحة '''[[$1]]'''",
-'searchmenu-new' => "'''أنشئ الصفحة \"[[:\$1]]\" في هذا الويكي!'''",
+'searchmenu-exists' => "'''توجد صفحة اسمها \"[[:\$1]]\" على هذه الويكي.''' {{PLURAL:\$2|0=|انظر ايضا نتائج البحث الأخرى.}}",
+'searchmenu-new' => "'''أنشئ الصفحة \"[[:\$1]]\" على هذه الويكي!''' {{PLURAL:\$2|0=|انظر أيضا الصفحة التي تم العثور عليها من بحثك.|انظر ايضا نتائج البحث.}}",
 'searchprofile-articles' => 'صفحات المحتوى',
 'searchprofile-project' => 'صفحات المساعدة والمشروع',
 'searchprofile-images' => 'الوسائط المتعددة',
@@ -1615,7 +1616,7 @@ $1",
 'prefs-skin' => 'واجهة',
 'skin-preview' => 'عرض مسبق',
 'datedefault' => 'لا تفضيل',
-'prefs-beta' => 'Ù\85زاÙ\8aا Ø¨Ù\8aتا',
+'prefs-beta' => 'Ù\85زاÙ\8aا ØªØ¬Ø±Ù\8aبÙ\8aØ©',
 'prefs-datetime' => 'وقت وتاريخ',
 'prefs-labs' => 'مزايا مختبرية',
 'prefs-user-pages' => 'صفحات المستخدمين',
@@ -1634,7 +1635,7 @@ $1",
 'prefs-email' => 'خيارات البريد الإلكتروني',
 'prefs-rendering' => 'المظهر',
 'saveprefs' => 'احفظ',
-'restoreprefs' => 'Ø¥سترجع كل الإعدادات الافتراضية',
+'restoreprefs' => 'استرجع كل الإعدادات الافتراضية',
 'prefs-editing' => 'التحرير',
 'rows' => 'صفوف:',
 'columns' => 'أعمدة:',
@@ -1722,6 +1723,7 @@ $1",
 'prefs-tokenwatchlist' => 'مفتاح',
 'prefs-diffs' => 'فروقات',
 'prefs-help-prefershttps' => 'سيتم تفعيل هذا التفضيل عند ولوجوك في المرة القادمة.',
+'prefs-tabs-navigation-hint' => 'تلميح: يمكنك استخدام مفتاحي السهمين الأيمن والأيسر للتنقل بين الألسنة في قائمة الألسنة.',
 
 # User preference: email validation using jQuery
 'email-address-validity-valid' => 'يبدو أن عنوان البريد الإلكتروني صالح',
@@ -1907,6 +1909,7 @@ $1",
 'recentchanges-label-bot' => 'أُجْرِيَ هذا التعديل بواسطة بوت',
 'recentchanges-label-unpatrolled' => 'لم يراجع هذا التعديل إلى الآن',
 'recentchanges-label-plusminus' => 'حجم الصفحة تغير بهذا العدد من وحدات البايت',
+'recentchanges-legend-heading' => 'شرح',
 'recentchanges-legend-newpage' => '(راجع أيضا [[Special:NewPages|قائمة الصفحات الجديدة]])',
 'rcnotefrom' => "بالأسفل التغييرات منذ '''$2''' (إلى '''$1''' معروضة).",
 'rclistfrom' => 'أظهر التغييرات بدءا من $1',
@@ -4089,6 +4092,9 @@ $5
 'imgmultigo' => 'اذهب!',
 'imgmultigoto' => 'اذهب إلى صفحة $1',
 
+# Language selector for translatable SVGs
+'img-lang-go' => 'اذهب',
+
 # Table pager
 'ascending_abbrev' => 'تصاعدي',
 'descending_abbrev' => 'تنازلي',
@@ -4499,8 +4505,8 @@ $5
 'limitreport-cputime-value' => '{{PLURAL:$1|أقل من ثانية|ثانية واحدة|ثانيتان|$1 ثوان|$1 ثانية}}',
 'limitreport-walltime' => 'الزمن الحقيقي المستغرق',
 'limitreport-walltime-value' => '{{PLURAL:$1|أقل من ثانية|ثانية واحدة|ثانيتان|$1 ثوان|$1 ثانية}}',
-'limitreport-postexpandincludesize-value' => '$1/$2 بايت',
-'limitreport-templateargumentsize-value' => '$1/$2 بايت',
+'limitreport-postexpandincludesize-value' => '$1/$2 {{PLURAL:$2|بايت|بايت}}',
+'limitreport-templateargumentsize-value' => '$1/$2 {{PLURAL:$2|بايت|بايت}}',
 
 # Special:ExpandTemplates
 'expandtemplates' => 'فرد القوالب',
index 02871bb..7a64eda 100644 (file)
@@ -457,7 +457,7 @@ $1',
 'gotaccount' => "ܐܝܬ ܠܟ ܚܘܫܒܢܐ؟ '''$1'''.",
 'gotaccountlink' => 'ܥܘܠ',
 'userlogin-resetlink' => 'ܐܬܢܫܝܬ ܝܕ̈ܥܬܐ ܕܥܠܠܐ؟',
-'userlogin-resetpassword-link' => 'Ü«Ü\9aܠܦ Ü¡Ü Ü¬Ü\90 Ü\95ܥܠܠÜ\90',
+'userlogin-resetpassword-link' => 'ܢܫܬ Ü¡Ü Ü¬Ü\90 Ü\95ܥܠܠÜ\90Ø\9f',
 'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|ܥܘܕܪܢܐ ܒܥܠܠܐ ܠܚܘܫܒܢܐ]]',
 'createacct-join' => 'ܐܥܠ ܝܕ̈ܥܬܐ ܕܝܠܟ ܠܬܚܬ',
 'createacct-emailrequired' => 'ܒܝܠܕܪܐ ܐܠܩܛܪܘܢܝܐ',
@@ -482,7 +482,7 @@ $1',
 'wrongpasswordempty' => 'ܡܠܬܐ ܕܥܠܠܐ ܕܐܥܠܬ ܣܦܝܩܬܐ ܐܝܬܝܗ.
 ܒܒܥܘ ܡܢܟ ܕܬܢܣܐ ܙܒܢ ܐܚܪܝܢ.',
 'passwordtooshort' => 'ܡܠܬܐ ܕܥܠܠܐ ܘܠܐ ܕܬܗܘܐ ܕܠܐ ܒܨܪ ܡܢ{{PLURAL:$1|ܐܬܘܬܐ ܚܕ|$1 ܐܬܘ̈ܬܐ}}.',
-'mailmypassword' => 'Ü«Ü\95ܪ Ü Ü\9d Ü¡Ü Ü¬Ü\90 Ü\9aÜ\95ܬÜ\90 Ü\95ܥܠܠÜ\90',
+'mailmypassword' => 'Ü£Ü\98Ü¡ Ü¡Ü Ü¬Ü\90 Ü\95ܥܠܠÜ\90 Ü\99Ü\92Ü¢ Ü\90Ü\9aܪÜ\9dÜ¢',
 'passwordremindertitle' => 'ܡܠܬܐ ܕܥܠܠܐ ܙܒܢܢܝܬܐ ܚܕܬܐ ܠ{{SITENAME}}',
 'noemail' => 'ܠܝܬ ܒܝܠܕܪܐ ܐܠܩܛܪܘܢܝܐ ܠܡܦܠܚܢܐ "$1".',
 'mailerror' => 'ܦܘܕܐ ܒܫܘܕܪܐ ܕܒܝܠܕܪܐ: $1',
@@ -619,7 +619,7 @@ $1',
 'revisiondelete' => 'ܫܘܦ/ܠܐ ܫܘܦ ܬܢܝܬ̈ܐ',
 'revdelete-show-file-submit' => 'ܐܝܢ',
 'revdelete-selected' => "'''{{PLURAL:$2|ܬܢܝܬܐ ܓܒܝܬܐ|ܬܢܝܬ̈ܐ ܓܒܝܬܐ}} ܕ [[:$1]]:'''",
-'revdelete-hide-text' => 'Ü\9bÜ«Ü\9d Ü\9fܬÜ\92ܬÜ\90 Ü\95ܬܢÜ\9dܬÜ\90',
+'revdelete-hide-text' => 'ܟܬܒܬܐ ܕܬܢܝܬܐ',
 'revdelete-hide-image' => 'ܛܫܝ ܚܒܝܫܬ̈ܐ ܕܠܦܦܐ',
 'revdelete-hide-name' => 'ܛܫܝ ܥܒܕܐ ܘܢܘܦܐ',
 'revdelete-hide-comment' => 'ܫܚܠܦ ܟܪܝܘܬܐ ܕܫܘܚܠܦܐ',
@@ -875,13 +875,14 @@ $1',
 'recentchanges-label-minor' => 'ܗܢܘ ܫܘܚܠܦܐ ܙܥܘܪܐ',
 'recentchanges-label-bot' => 'ܒܘܬ (bot) ܥܒܕ ܗܢܐ ܫܘܚܠܦܐ',
 'recentchanges-label-unpatrolled' => 'ܫܘܚܠܦܐ ܗܢܐ ܠܐ ܗܘ ܟܪܝܟܐ ܠܗܫܐ',
-'recentchanges-label-plusminus' => 'ܥܪܓܐ ܕܦܐܬܐ ܐܫܬܚܠܦ ܒܗܢܐ ܡܢܝܢܐ ܡܢ ܒܝܛ̈',
-'recentchanges-legend-newpage' => '$1 - ܦܐܬܐ ܚܕܬܐ',
+'recentchanges-label-plusminus' => 'ܥܓܪܐ ܕܦܐܬܐ ܐܫܬܚܠܦ ܒܗܢܐ ܡܢܝܢܐ ܡܢ ܒܝܛ̈',
+'recentchanges-legend-heading' => "'''ܦܘܫܩܐ:'''",
+'recentchanges-legend-newpage' => '(ܐܦ ܚܙܝ [[Special:NewPages|ܡܟܬܒܘܬܐ ܕܦܐܬܬ̈ܐ ܚܕ̈ܬܬܐ]])',
 'rcnotefrom' => "ܠܬܚܬ ܫܘܚܠܦ̈ܐ ܕܡܢ '''$2''' (ܥܕ '''$1''' ܡܬܚܙܝܢ̈ܐ).",
 'rclistfrom' => 'ܚܘܝ ܫܘܚܠܦ̈ܐ ܚܕ̈ܬܐ ܡܢ $1',
 'rcshowhideminor' => '$1 ܫܘܚܠܦ̈ܐ ܙܥܘܪ̈ܐ',
 'rcshowhidebots' => '$1 ܒܘܬ̈ܐ (Bots)',
-'rcshowhideliu' => '$1 Ü¡Ü¦Ü Ü\9aÜ¢Ì\88Ü\90 Ü¥Ü Ü\9dܠ̈ܐ',
+'rcshowhideliu' => '$1 Ü¡Ü¦Ü Ü\9aÜ¢Ì\88Ü\90 Ü¡Ü£Ü\93ܠ̈ܐ',
 'rcshowhideanons' => '$1 ܡܦܠܚܢܐ ܠܐ ܝܕܝܥܐ',
 'rcshowhidepatr' => '$1 ܫܘܚܠܦ̈ܐ ܬܢܝ̈ܐ',
 'rcshowhidemine' => '$1 ܫܘܚܠܦ̈ܝ',
@@ -958,8 +959,7 @@ $1',
 'upload_source_file' => ' (ܠܦܦܐ ܥܠ ܚܫܘܒܬܐ ܕܝܠܟ)',
 
 # Special:ListFiles
-'listfiles-summary' => 'ܦܐܬܐ ܕܝܠܢܝܬܐ ܗܕܐ ܬܓܠܚ ܟܠ ܠܦܦ̈ܐ ܡܣܩ̈ܐ.
-ܐܡܬܝ ܕܬܨܦܐ ܒܝܕ ܡܦܠܚܢܐ ܬܓܠܚ ܨܚܚܐ ܐܚܪܝܐ ܒܠܚܘܕ ܕܠܦܦ̈ܐ ܡܣܩ̈ܐ ܒܝܕ ܗܢܐ ܡܦܠܚܢܐ.',
+'listfiles-summary' => 'ܦܐܬܐ ܕܝܠܢܝܬܐ ܗܕܐ ܬܓܠܚ ܟܠ ܠܦܦ̈ܐ ܡܣܩ̈ܐ.',
 'listfiles_search_for' => 'ܒܨܝ ܥܠ ܫܡܐ ܕܡܝܕܝܐ:',
 'imgfile' => 'ܠܦܦܐ',
 'listfiles' => 'ܡܟܬܒܘܬܐ ܕܠܦܦ̈ܐ',
@@ -1353,7 +1353,7 @@ $1',
 'contributions' => 'ܫܘܬܦܘ̈ܬܐ {{GENDER:$1|ܕܡܦܠܚܢܐ|ܕܡܦܠܚܢܬܐ}}',
 'contributions-title' => 'ܫܘܬܦܘ̈ܬܐ ܕܡܦܠܚܢܐ ܠ$1',
 'mycontris' => 'ܫܘܬܦܘ̈ܬܐ',
-'contribsub2' => 'Ü\95 $1 ($2)',
+'contribsub2' => 'Ü {{GENDER:$3|$1}} ($2)',
 'uctop' => '(ܗܫܝܐ)',
 'month' => 'ܡܢ ܝܪܚܐ ܕ (ܘܡܢ ܩܕܡ ܗܝܕܝܢ):',
 'year' => 'ܡܢ ܫܢܬ (ܘܡܢ ܩܕܡ ܗܝܕܝܢ):',
@@ -1769,7 +1769,7 @@ $1',
 # Special:SpecialPages
 'specialpages' => 'ܦܐܬܬ̈ܐ ܕ̈ܝܠܢܝܬܐ',
 'specialpages-note' => '* ܦܐܬܬ̈ܐ ܕ̈ܝܠܢܝܬܐ ܥܝܕ̈ܝܬܐ.
-* <span class="mw-specialpagerestricted">ܦܐܬܬ̈ܐ ܕ̈ܝܠܢܝܬܐ ܕܩܝܘܡ̈ܐ ܒܠܚܘܕ.</span>',
+* <span class="mw-specialpagerestricted">ܦܐܬܬ̈ܐ ܕ̈ܝܠܢܝܬܐ ܕܩܝܘܡ̈ܐ.</span>',
 'specialpages-group-maintenance' => 'ܬܫܪܪ̈ܐ ܕܚܕܬܘܬܐ',
 'specialpages-group-other' => 'ܦܐܬܬ̈ܐ ܕ̈ܝܠܢܝܬܐ ܐܚܪ̈ܢܝܬܐ',
 'specialpages-group-login' => 'ܥܘܠ / ܒܪܝ ܚܘܫܒܢܐ',
index e2ee537..e65767f 100644 (file)
@@ -574,8 +574,8 @@ $1',
 
 'ok' => 'موافئ',
 'retrievedfrom' => 'اتجابت من "$1"',
-'youhavenewmessages' => 'عندك $1 ($2).',
-'youhavenewmessagesfromusers' => 'عندك $1 من {{PLURAL:${{PLURAL:$3|}}3|يوزر واحد|يوزر واحد|اتنين يوزر |$3 مستخدمين|$3 يوزر}} ($2).',
+'youhavenewmessages' => '{{PLURAL:$3|عندك}} $1 ($2).',
+'youhavenewmessagesfromusers' => '{{PLURAL:$4|عندك}} $1 من {{PLURAL:${{PLURAL:$3|}}3|يوزر واحد|يوزر واحد|اتنين يوزر |$3 مستخدمين|$3 يوزر}} ($2).',
 'youhavenewmessagesmanyusers' => 'عندك $1 من يوزرات كتير  ($2).',
 'newmessageslinkplural' => '{{PLURAL:$1|رساله جديده|999=رسايل جديده}}',
 'newmessagesdifflinkplural' => '{{PLURAL:$1|تعديل|تعديلين|$1 تعديلات|$1 تعديل|$1 تعديل}}',
@@ -1215,8 +1215,8 @@ $1",
 'nextn-title' => '{{PLURAL:$1|النتيجه|النتايج}}  $1 اللى بعد كدا.',
 'shown-title' => 'اعرض $1 {{PLURAL:$1|نتيجه|نتايج}} فى كل صفحه',
 'viewprevnext' => 'شوف ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-exists' => "*الصفحة '''[[$1]]'''",
-'searchmenu-new' => "'''ابتدى الصفحه \"[[:\$1]]\" ع الويكى دا!'''",
+'searchmenu-exists' => "'''فيه صفحه اسمها \"[[:\$1]]\" على الويكى ده.''' {{PLURAL:\$2|0=|بص كمان على نتايج البحث التانيه.}}",
+'searchmenu-new' => "'''ابتدى الصفحه \"[[:\$1]]\" ع الويكى دا!''' {{PLURAL:\$2|0=|بص كمان على الصفحه اللى لقيناها من بحثك.|بص كمان على نتايج البحث اللى لقيناها.}}",
 'searchprofile-articles' => 'صفحات محتوى',
 'searchprofile-project' => 'صفحات  المساعده و المشروع',
 'searchprofile-images' => 'مالتيميديا',
@@ -1293,7 +1293,7 @@ $1",
 'savedprefs' => 'التفضيلات بتاعتك اتحفظت.',
 'timezonelegend' => 'منطقة التوقيت',
 'localtime' => 'التوقيت المحلى',
-'timezoneuseserverdefault' => 'استخدÙ\85 Ø§Ù\81تراض Ø§Ù\84سرÙ\81ر',
+'timezoneuseserverdefault' => 'استخدÙ\85 Ø§Ù\84Ù\88Ù\8aÙ\83Ù\89 Ø§Ù\84اÙ\81تراضÙ\89 ($1)',
 'timezoneuseoffset' => 'تانى (حدد الفرق)',
 'servertime' => 'وقت السيرفر',
 'guesstimezone' => 'دخل التوقيت من البراوزر',
@@ -1319,9 +1319,9 @@ $1",
 ماينفعش الرجوع فى التعديل دا.',
 'prefs-emailconfirm-label' => 'التأكد من الايميل:',
 'youremail' => 'الايميل:',
-'username' => 'اسم اليوزر:',
-'uid' => 'رقم اليوزر:',
-'prefs-memberingroups' => 'عضو فى {{PLURAL:$1|مجموعة|مجموعة}}:',
+'username' => '{{GENDER:$1|اسم اليوزر}}:',
+'uid' => 'رقم {{GENDER:$1|اليوزر}}:',
+'prefs-memberingroups' => '{{GENDER:$2|عضو}} فى {{PLURAL:$1|مجموعه|مجموعات}}:',
 'prefs-registration' => 'وقت التسجيل:',
 'yourrealname' => 'الاسم الحقيقى:',
 'yourlanguage' => 'اللغة:',
@@ -1367,7 +1367,7 @@ $1",
 'userrights-lookup-user' => 'إدارة مجموعات اليوزر',
 'userrights-user-editname' => 'دخل اسم يوزر:',
 'editusergroup' => 'تعديل مجموعات اليوزر',
-'editinguser' => "تغيير حقوق االيوزر بتاعة اليوزر'''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])",
+'editinguser' => "تغيير حقوق اليوزر بتاعه اليوزر '''[[User:$1|$1]]''' $2",
 'userrights-editusergroup' => 'تعديل مجموعات اليوزر',
 'saveusergroups' => 'حفظ مجموعات اليوزر',
 'userrights-groupsmember' => 'عضو في:',
@@ -1522,7 +1522,7 @@ $1",
 'recentchanges-label-minor' => 'ده تعديل صغير',
 'recentchanges-label-bot' => 'التعديل ده عمله بوت',
 'recentchanges-label-unpatrolled' => 'التعديل ده مإتراجعش لسه',
-'recentchanges-legend-newpage' => '$1 - صفحه جديده',
+'recentchanges-legend-newpage' => '(بص كمان على [[Special:NewPages|قايمه الصفحات الجديده]])',
 'rcnotefrom' => "دى التعديلات من '''$2''' (ل '''$1''' معروضه).",
 'rclistfrom' => 'اظهر التعديلات بدايه من $1',
 'rcshowhideminor' => '$1 تعديلات صغيره',
@@ -1597,8 +1597,8 @@ $1",
 'filetype-bad-ie-mime' => ' المف دا ماتحملش لأن الإنترنت إكسبلورر ح يكتشفه ك"$1", وهوه نوع ملف ممنوع ومن المحتمل انه يكون خطر.',
 'filetype-unwanted-type' => "'''\".\$1\"''' هو مش نوع ملف مرغوب فيه.
 {{PLURAL:\$3|نوع الملف المفضل هو|أنواع الملفات المفضلة هي}} \$2.",
-'filetype-banned-type' => "'''\".\$1\"''' مش نوع ملف مسموح بيه.
-{{PLURAL:\$3|نوع الملف المسموح بيه هو|أنواع الملفات المسموح بيها هي}} \$2.",
+'filetype-banned-type' => '\'\'\'".$1"\'\'\' {{PLURAL:$4|مش نوع ملف مسموح بيه|مش انواع ملفات مسموح بيها}}.
+{{PLURAL:$3|نوع الملف المسموح بيه هو|أنواع الملفات المسموح بيها هي}} $2.',
 'filetype-missing' => 'الملف مالوش امتدا(مثلا ".jpg").',
 'file-too-large' => 'الملف كان كبير جدا.',
 'filetype-banned' => 'نوع الملف ده ممنوع.',
@@ -1984,8 +1984,9 @@ PICT # misc.
 'linksearch-pat' => 'نظام التدوير:',
 'linksearch-ns' => 'النطاق:',
 'linksearch-ok' => 'تدوير',
-'linksearch-text' => 'الكروت الخاصة زى "*.wikipedia.org" ممكن تستعمل.<br />
-البروتوكولات المدعومة: <code>$1</code>',
+'linksearch-text' => 'الكروت الخاصه زى "*.wikipedia.org" ممكن تستخدم.
+محتاجه على الاقل لدومين مستوى أعلى، زى "*.org".<br />
+{{PLURAL:$2|البروتوكول المدعوم|البروتوكولات المدعومه}}: <code>$1</code> (الافتراضى http:// لو ما اتحددش بروتوكول).',
 'linksearch-line' => '$1 موصوله من $2',
 'linksearch-error' => 'الكروت الخاصة ممكن تبان بس  فى بداية اسم المضيف',
 
@@ -2028,10 +2029,10 @@ PICT # misc.
 'mailnologintext' => 'لازم تعمل [[Special:UserLogin|تسجيل الدخول]] و تدخل ايميل صحيح فى صفحة [[Special:Preferences|التفضيلات]] علشان تقدر تبعت ايميلات لليوزرز التانيين.',
 'emailuser' => 'ابعت ايميل لليوزر دا',
 'emailpage' => 'ابعت ايميل لليوزر ده',
-'emailpagetext' => 'ممكن تستعمل الاستمارة اللى تحت دى عشان تيعت ايميل لليوزر دا.
-عنوان الايميل اللى كتبته فى [[Special:Preferences|التفضيلات بتاعتك]] ح يظهر على انه عنوان الاستمارة و بكدة اللى حيستقبله ح يقدر يرد على الايميل.',
+'emailpagetext' => 'ممكن تستعمل الاستمارة اللى تحت دى عشان تيعت ايميل {{GENDER:$1|لليوزر}} دا.
+عنوان الايميل اللى كتبته فى [[Special:Preferences|التفضيلات بتاعتك]] ح يظهر على انه عنوان الاستمارة، و بكدة اللى حيستقبله ح يقدر يرد على الايميل.',
 'usermailererror' => 'البريد رجع غلط:',
-'defemailsubject' => 'Ø¥Ù\8aÙ\85Ù\8aÙ\84 Ù\85Ù\86 {{SITENAME}}',
+'defemailsubject' => 'اÙ\8aÙ\85Ù\8aÙ\84 {{SITENAME}} Ù\85Ù\86 Ø§Ù\84Ù\8aÙ\88زر "$1"',
 'noemailtitle' => 'مافيش  عنوان ايميل',
 'noemailtext' => 'اليوزر دا ما كتبش االايميل بتاعه صح .',
 'nowikiemailtitle' => 'الايميلات مش مسموح بيها',
@@ -2072,7 +2073,7 @@ PICT # misc.
 'watchmethod-list' => 'التشييك فى الصفحات المتراقبة على التعديلات الاخيرة',
 'watchlistcontains' => 'لستة المراقبة بتاعتك فيها $1 {{PLURAL:$1|صفحة|صفحات}}.',
 'iteminvalidname' => "مشكلة فى '$1'، اسم مش صحيح...",
-'wlnote' => "تحت فى {{PLURAL:$1|آخر تغيير|آخر '''$1''' تغيير}} فى آخر {{PLURAL:$2|ساعة|'''$2''' ساعة}}.",
+'wlnote' => "تحت فى {{PLURAL:$1|آخر تغيير|آخر '''$1''' تغيير}} فى آخر {{PLURAL:$2|ساعه|'''$2''' ساعه}}، من الوقت $3، $4.",
 'wlshowlast' => 'عرض اخر $1 ساعات $2 ايام $3',
 'watchlist-options' => 'اختيارات قايمة المراقبة',
 
@@ -2268,7 +2269,8 @@ $UNWATCHURL
 'undeletedrevisions' => 'رجع تانى {{PLURAL:$1|تعديل واحد|تعديلين|$1 تعديلات|$1 تعديل|$1 تعديل}}',
 'undeletedrevisions-files' => '{{PLURAL:$1|1 نسخة|$1 نسخة}} و {{PLURAL:$2|1 ملف|$2 ملف}} رجعو تاني',
 'undeletedfiles' => '{{PLURAL:$1|ملف|ملفات}} $1 رجعو تاني',
-'cannotundelete' => 'الترجيع ما نفعش :ممكن يكون فى حد تانى رجع الصفحة قبل كدا.',
+'cannotundelete' => 'الترجيع مانفعش:
+$1',
 'undeletedpage' => "'''اترجع $1'''
 
 بص على [[Special:Log/delete|سجل المسح]] علشان تشوف عمليات المسح و الترجيع الاخيرة.",
@@ -2514,7 +2516,7 @@ $1',
 الصفحة الهدف "[[:$1]]" موجودة فعلا.
 انت عايز تمسحها علشان تقدر تنقلها؟',
 'delete_and_move_confirm' => 'ايوة، امسح الصفحة',
-'delete_and_move_reason' => 'اتمسحت علشان تسمح للنقل',
+'delete_and_move_reason' => 'اتمسحت علشان تسمح بالنقل من "[[$1]]"',
 'selfmove' => 'عنوان المصدر والهدف هو نفسه؛
 مش ممكن نقل الصفحة على نفسها.',
 'immobile-source-namespace' => 'غير قادر على نقل الصفحات فى النطاق "$1"',
index 22db34d..c3d9552 100644 (file)
@@ -191,8 +191,8 @@ $messages = array(
 'tog-usenewrc' => 'পৃষ্ঠাৰ পৰিৱৰ্তনসমূহ শেহতীয়া সালসলনি আৰু লক্ষ্যতালিকাত ভাগ কৰক',
 'tog-numberheadings' => 'শীৰ্ষকত স্বয়ংক্ৰিয়ভাৱে ক্ৰমিক নং দিয়ক',
 'tog-showtoolbar' => 'সম্পাদনা দণ্ডিকা দেখুৱাওক',
-'tog-editondblclick' => 'দুবাৰ ক্লিক কৰিলে পৃষ্ঠা সম্পাদনা কৰক',
-'tog-editsection' => '[সমà§\8dপাদনা] à¦¸à¦\82যà§\8bà¦\97ৰ à¦¦à§\8dবাৰা অনুচ্ছেদ সম্পাদনা কৰা সক্ৰিয় কৰক',
+'tog-editondblclick' => 'দুবাৰ ক্লিক কৰি পৃষ্ঠা সম্পাদনা কৰিব পাৰি',
+'tog-editsection' => '[সমà§\8dপাদনা] à¦¸à¦\82যà§\8bà¦\97ৰ à¦\9cৰিয়তà§\87 অনুচ্ছেদ সম্পাদনা কৰা সক্ৰিয় কৰক',
 'tog-editsectiononrightclick' => 'অনুচ্ছেদৰ শিৰোনামাত ৰাইট্‌ ক্লিক টিপি সম্পাদনা কৰাটো সক্ৰিয় কৰক',
 'tog-showtoc' => 'শিৰোনামাৰ সূচী দেখুৱাওক (যিবোৰ পৃষ্ঠাত তিনিটাতকৈ বেছি শিৰোনামা আছে)',
 'tog-rememberpassword' => 'মোৰ প্ৰৱেশ এই কম্পিউটাৰত মনত ৰাখক (সৰ্বাধিক $1 {{PLURAL:$1|দিনলৈ|দিনলৈ}})',
@@ -220,7 +220,7 @@ $messages = array(
 'tog-watchlisthidepatrolled' => 'পৰীক্ষিত সম্পাদনাসমূহ লক্ষ্য-তালিকাৰ পৰা লুকুৱাই ৰাখক',
 'tog-ccmeonemails' => 'মই অন্য সদস্যলৈ পঠোৱা ই-মেইলৰ প্ৰতিলিপি এটা মোলৈও পঠাব',
 'tog-diffonly' => 'পার্থক্যৰ তলত পৃষ্ঠাৰ বিষয়বস্তু নেদেখুৱাব',
-'tog-showhiddencats' => 'নিহিত শ্ৰেণী সমূহ দেখুৱাওক',
+'tog-showhiddencats' => 'নিহিত শ্ৰেণীসমূহ দেখুৱাওক',
 'tog-norollbackdiff' => 'পূৰ্বৱত কৰা পাছত পাৰ্থক্য নেদেখুৱাব',
 'tog-useeditwarning' => 'সালসলনি সংৰক্ষণ নকৰাকৈ সম্পাদনা পৃষ্ঠা ত্যাগৰ সময়ত মোক সাৱধান কৰক',
 'tog-prefershttps' => 'প্ৰৱেশ কৰোঁতে সদায় সুৰক্ষিত সংযোগ ব্যৱহাৰ কৰক',
@@ -230,11 +230,11 @@ $messages = array(
 'underline-default' => 'ব্ৰাউজাৰ ডিফল্ট',
 
 # Font style option in Special:Preferences
-'editfont-style' => 'সম্পাদনাৰ ফন্ট ষ্টাইল',
+'editfont-style' => "সম্পাদনা ক্ষেত্ৰৰ ফ'ণ্ট শৈলী:",
 'editfont-default' => "ব্ৰাউজাৰ ডিফ'ল্ট",
-'editfont-monospace' => 'মনোস্পেচ ফন্ট',
-'editfont-sansserif' => 'চেন্স-চেৰিফ ফন্ট',
-'editfont-serif' => 'চেৰিফ ফন্ট',
+'editfont-monospace' => "ম'ন'স্পেছ ফ'ণ্ট",
+'editfont-sansserif' => "ছেন্স-ছেৰিফ ফ'ণ্ট",
+'editfont-serif' => "ছেৰিফ ফ'ণ্ট",
 
 # Dates
 'sunday' => 'দেওবাৰ',
@@ -243,7 +243,7 @@ $messages = array(
 'wednesday' => 'বুধবাৰ',
 'thursday' => 'বৃহস্পতিবাৰ',
 'friday' => 'শুক্ৰবাৰ',
-'saturday' => 'শণিবাৰ',
+'saturday' => 'শনিবাৰ',
 'sun' => 'দেও',
 'mon' => 'সোম',
 'tue' => 'মংগল',
@@ -310,7 +310,7 @@ $messages = array(
 '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 খন পৃষ্ঠা আছে}}।}}',
+'category-article-count' => '{{PLURAL:$2|এই শ্ৰেণীটোত কেৱল তলত দিয়া পৃষ্ঠাহে আছে। মুঠ $2 খনৰ ভিতৰত এই শ্ৰেণীটোত তলৰ {{PLURAL:$1|এটা পৃষ্ঠা আছে|$1 টা পৃষ্ঠা আছে}}।}}',
 'category-article-count-limited' => 'এই {{PLURAL:$1|পৃষ্ঠা|$1 পৃষ্ঠাসমূহ}} সাম্প্ৰতিক শ্ৰেণীত আছে ।',
 'category-file-count' => '{{PLURAL:$2|এই শ্ৰেণীটোত কেবল তলত দিয়া ফাইলটোহে আছে। মুঠ $2টাৰ ভিতৰত এই শ্ৰেণীটোত তলৰ {{PLURAL:$1|এটা ফাইল|$1 টা ফাইল}} আছে।}}',
 'category-file-count-limited' => 'তলৰ {{PLURAL:$1|ফাইলটো|$1 ফাইলসমূহ}} সাম্প্ৰতিক শ্ৰেণীত আছে।',
@@ -325,7 +325,7 @@ $messages = array(
 'cancel' => 'বাতিল কৰক',
 'moredotdotdot' => 'অধিক...',
 'morenotlisted' => 'এই তালিকা সম্পূৰ্ণ নহয়।',
-'mypage' => 'মà§\8bৰ à¦ªà§\83ষà§\8dঠা',
+'mypage' => 'পৃষ্ঠা',
 'mytalk' => 'কথা-বতৰা',
 'anontalk' => 'এই IP-ত যোগাযোগ কৰক',
 'navigation' => 'দিকদৰ্শন',
@@ -362,7 +362,7 @@ $messages = array(
 'returnto' => '$1লৈ ঘূৰি যাওক ।',
 'tagline' => '{{SITENAME}}ৰ পৰা',
 'help' => 'সহায়',
-'search' => 'সন্ধান',
+'search' => 'সন্ধান কৰক',
 'searchbutton' => 'সন্ধান কৰক',
 'go' => 'যাওক',
 'searcharticle' => 'যাওক',
@@ -375,11 +375,11 @@ $messages = array(
 'view' => 'দেখুৱাওক',
 'edit' => 'সম্পাদনা',
 'create' => 'সৃষ্টি কৰক',
-'editthispage' => 'বৰà§\8dতমান à¦ªà§\83ষà§\8dঠাà¦\9fà§\8b à¦¸à¦®à§\8dপাদনা à¦\95ৰিবলà§\88',
-'create-this-page' => 'নতà§\81ন পৃষ্ঠা সৃষ্টি কৰক',
-'delete' => 'বিলোপ',
-'deletethispage' => 'à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠাà¦\96ন বিলোপ কৰক',
-'undeletethispage' => 'এই পৃষ্ঠা পুনৰুদ্ধাৰ কৰক',
+'editthispage' => 'à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠা à¦¸à¦®à§\8dপাদনা à¦\95ৰà¦\95',
+'create-this-page' => 'à¦\8fà¦\87 পৃষ্ঠা সৃষ্টি কৰক',
+'delete' => 'বিলোপ কৰক',
+'deletethispage' => 'à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠাà¦\9fà§\8b বিলোপ কৰক',
+'undeletethispage' => 'এই পৃষ্ঠাটো পুনৰুদ্ধাৰ কৰক',
 'undelete_short' => '{{PLURAL:$1|বিলোপিত পৃষ্ঠাৰ|$1 সংখ্যক বিলোপিত পৃষ্ঠাৰ}} পূৰ্ববৎকৰণ',
 'viewdeleted_short' => '{{PLURAL:$1| এটা বিলুপ্ত সম্পাদনা|$1 টা বিলুপ্ত সম্পাদনা}} দেখুৱাওক',
 'protect' => 'সুৰক্ষিত কৰক',
@@ -388,7 +388,7 @@ $messages = array(
 'unprotect' => 'সুৰক্ষা সলনি কৰক',
 'unprotectthispage' => 'এই পৃষ্ঠাৰ সুৰক্ষা সলনি কৰক',
 'newpage' => 'নতুন পৃষ্ঠা',
-'talkpage' => 'à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠা à¦¸à¦®à§\8dপৰà§\8dà¦\95à§\87 à¦\95থা-বতৰা',
+'talkpage' => 'à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠা à¦¸à¦®à§\8dপৰà§\8dà¦\95à§\80য় à¦\86লà§\8bà¦\9aনা',
 'talkpagelinktext' => 'কথা-বতৰা',
 'specialpage' => 'বিশেষ পৃষ্ঠা',
 'personaltools' => 'ব্যক্তিগত সৰঞ্জাম',
@@ -408,8 +408,8 @@ $messages = array(
 'otherlanguages' => 'আন ভাষাসমূহত',
 'redirectedfrom' => '($1ৰ পৰা পুনঃনিৰ্দেশিত)',
 'redirectpagesub' => 'পুনঃনিৰ্দেশিত পৃষ্ঠা',
-'lastmodifiedat' => 'à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠাà¦\96ন শেষবাৰৰ কাৰণে $1 তাৰিখে $2 বজাত সলনি কৰা হৈছিল।',
-'viewcount' => 'এই পৃষ্ঠাটো {{PLURAL:$1|এবাৰ|$1 বাৰ}} চোৱা হৈছে',
+'lastmodifiedat' => 'à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠাà¦\9fà§\8b শেষবাৰৰ কাৰণে $1 তাৰিখে $2 বজাত সলনি কৰা হৈছিল।',
+'viewcount' => 'এই পৃষ্ঠাটো {{PLURAL:$1|এবাৰ|$1 বাৰ}} চোৱা হৈছে',
 'protectedpage' => 'সুৰক্ষিত পৃষ্ঠা',
 'jumpto' => 'গম্যাৰ্থে',
 'jumptonavigation' => 'দিকদৰ্শন',
@@ -420,7 +420,7 @@ $messages = array(
 
 $1',
 'pool-timeout' => 'বন্ধ কৰাৰ বাবে অপেক্ষা কৰাৰ সময় উকলি গৈছে',
-'pool-queuefull' => 'পà§\8bল à¦\95িà¦\89 (pool queue) à¦¸à¦®à§\82ল',
+'pool-queuefull' => 'পà§\81ল à¦\95িà¦\89 (pool queue) à¦ªà§\82ৰà§\8dণ',
 'pool-errorunknown' => 'অপৰিচিত ত্ৰুটি',
 
 # All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage).
@@ -454,8 +454,8 @@ $1',
 'youhavenewmessages' => 'আপোনাৰ কাৰণে $1 আছে। ($2)',
 'youhavenewmessagesfromusers' => '{{PLURAL:$3|আন এজন সদস্য|$3 জন সদস্য}}ৰ পৰা আপোনালৈ $1 আহিছে ($2)।',
 'youhavenewmessagesmanyusers' => 'কেইবাজনো সদস্যৰ পৰা আপোনালৈ $1 আহিছে ($2)।',
-'newmessageslinkplural' => '{{PLURAL:$1|এটা নতুন বাৰ্তা|নতুন বাৰ্তা}}',
-'newmessagesdifflinkplural' => 'à¦\85নà§\8dতিম {{PLURAL:$1|সà¦\82শà§\8bধন}}',
+'newmessageslinkplural' => '{{PLURAL:$1|এটা নতুন বাৰ্তা|999=নতুন বাৰ্তা}}',
+'newmessagesdifflinkplural' => 'à¦\85নà§\8dতিম {{PLURAL:$1|সালসলনি|999=সালসলনিসমà§\82হ}}',
 'youhavenewmessagesmulti' => '$1ত আপোনাৰ কাৰণে নতুন সংবাদ আছে',
 'editsection' => 'সম্পাদনা কৰক',
 'editold' => 'সম্পাদনা',
@@ -499,7 +499,7 @@ $1',
 'nosuchactiontext' => "এই ইউআৰএলে নিৰ্ধাৰিত কৰা কাৰ্য অবৈধ।
 আপুনি বোধহয়  ইউআৰএল ভুলকৈ লিখিছে বা এটা ভুল লিঙ্ক অনুকৰণ কৰিছে ।
 {{SITENAME}}ত ব্যৱহাৰ হোৱা চফ্টৱেৰত ত্ৰুটি হ'বও পাৰে ।",
-'nosuchspecialpage' => 'à¦\8fনà§\87 à¦§à§°à¦¨ৰ কোনো বিশেষ পৃষ্ঠা নাই',
+'nosuchspecialpage' => 'à¦\8fনà§\87 à¦§à§°à¦£ৰ কোনো বিশেষ পৃষ্ঠা নাই',
 'nospecialpagetext' => '<strong>আপুনি অবৈধ বিশেষ পৃষ্ঠা এটা অনুৰোধ কৰিছে ।</strong>
 
 বৈধ বিশেষ পৃষ্ঠাসমূহৰ তালিকা ইয়াত পাব [[Special:SpecialPages|{{int:specialpages}}]] ।',
@@ -516,7 +516,7 @@ $1',
 'laggedslavemode' => 'সাৱধানবাণী: ইয়াত সাম্প্ৰতিক সাল-সলনি নাথাকিব পাৰে',
 'readonly' => 'তথ্যকোষ বন্ধ কৰা আছে',
 'enterlockreason' => 'বন্ধ কৰাৰ কাৰণ দিয়ক, লগতে কেতিয়ামানে খোলা হব তাকো জনাব।',
-'readonlytext' => 'নতà§\81ন à¦¸à¦®à§\8dপাদন à¦\86ৰà§\81 à¦\86ন à¦¸à¦¾à¦²-সলনিৰ à¦\95াৰণà§\87 à¦¤à¦¥à§\8dযà¦\95à§\8bষ à¦¬à§°à§\8dতমানà§\87 à¦¬à¦¨à§\8dধ à¦\86à¦\9bà§\87, à¦¹à¦¯à¦¼à¦¤à§\8b à¦¨à¦¿à¦¯à¦¼à¦®à§\80য়া à¦\9aà§\8bৱা-à¦\9aিতা à¦\95ৰিবলà§\88, কিছু সময় পিছত এয়া সাধাৰণ অৱস্থালৈ আহিব।
+'readonlytext' => 'হয়তà§\8b à¦¨à¦¿à¦¯à¦¼à¦®à§\80য়া à¦ªà§°à¦¿à¦\9aৰà§\8dযাৰ à¦¬à¦¾à¦¬à§\87 à¦¤à¦¥à§\8dযà¦\95à§\8bষত à¦¨à¦¤à§\81ন à¦¸à¦®à§\8dপাদনা à¦\86ৰà§\81 à¦\86ন à¦¸à¦¾à¦²-সলনি à¦¬à¦¨à§\8dধ à¦\95ৰা à¦¹à§\88à¦\9bà§\87। কিছু সময় পিছত এয়া সাধাৰণ অৱস্থালৈ আহিব।
 
 যিজন প্ৰশাসকে বন্ধ কৰিছে তেওঁ এই কাৰণ দিছে: $1',
 'missing-article' => '"$1" $2 লেখাটো তথ্যকোষত পোৱা নগ’ল ।
@@ -545,7 +545,7 @@ $1',
 সম্ভৱ আনে আগতেই বিলোপ কৰিছে ।',
 'cannotdelete-title' => '"$1" পৃষ্ঠা বিলোপ কৰিব নোৱাৰি',
 'delete-hook-aborted' => 'হুকৰ দ্বাৰা সম্পাদনা প্ৰত্যাখ্যান কৰা হৈছে ।
-ইয়াৰ কোনো ব্যাখ্যা নাই ।',
+ইয়াৰ কোনো ব্যাখ্যা নাই।',
 'no-null-revision' => '"$1" পৃষ্ঠাৰ বাবে নতুন শূন্য সংশোধন সৃষ্টি কৰিব পৰা নগ\'ল',
 'badtitle' => 'অগ্ৰহণীয় শিৰোনামা',
 'badtitletext' => 'আপুনি বিচৰা পৃষ্ঠাটোৰ শিৰোনামা অযোগ্য, খালী বা ভুলকৈ জড়িত আন্তৰ্ভাষিক বা আন্তৰ্ৱিকি শিৰোনামা। ইয়াত এক বা ততোধিক বৰ্ণ আছে যাক শিৰোনামাত ব্যৱহাৰ কৰিব নোৱাৰি।',
@@ -565,7 +565,7 @@ $1',
 'editinginterface' => "'''সাৱধানবাণী:''' আপুনি যিখন পৃষ্ঠা সম্পাদনা কৰিছে সেইখন এই ছফ্টৱেৰৰ ইণ্টাৰফে’চ বাৰ্তা দিবলৈ ব্যৱহাৰ হয়।
 এই পৃষ্ঠাৰ সাল-সলনিয়ে আন ব্যৱহাৰকাৰীৰ বাবে ইণ্টাৰফে’চত প্ৰভাৱ পেলাব।
 সকলো ৱিকিৰ বাবে অনুবাদৰ বাবে অনুগ্ৰহ কৰি মিডিয়াৱিকি স্থানীয়কৰণ প্ৰকল্প [//translatewiki.net/ translatewiki.net] ব্যৱহাৰ কৰক ।",
-'cascadeprotected' => 'à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠাà¦\96ন à¦¸à¦®à§\8dপাদনাৰ à¦ªà§°à¦¾ à¦¸à§\81ৰà¦\95à§\8dষিত à¦\95াৰণ à¦\8fà¦\87 {{PLURAL:$1|পà§\83ষà§\8dঠা, à¦¯à¦¿à¦\96ন|পৃষ্ঠা, যিবোৰ}} "প্ৰপাতাকাৰ" (cascading) বিকল্পৰ সহযোগত সুৰক্ষিত কৰা হৈছে: 
+'cascadeprotected' => 'à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠাà¦\96ন à¦¸à¦®à§\8dপাদনাৰ à¦ªà§°à¦¾ à¦¸à§\81ৰà¦\95à§\8dষিত à¦\95াৰণ à¦\8fà¦\87 {{PLURAL:$1|পà§\83ষà§\8dঠা, à¦¯à¦¿à¦\9fà§\8b|পৃষ্ঠা, যিবোৰ}} "প্ৰপাতাকাৰ" (cascading) বিকল্পৰ সহযোগত সুৰক্ষিত কৰা হৈছে: 
 $2',
 'namespaceprotected' => "আপোনাৰ '''$1''' নামস্থানৰ পৃষ্ঠাসমূহ সম্পাদনা কৰাৰ অধিকাৰ নাই।",
 'customcssprotected' => 'এই CSS পৃষ্ঠা সম্পাদনা কৰাৰ অধিকাৰ আপোনাৰ নাই, কাৰণ ইয়াত আন সদস্যৰ ব্যক্তিগত পছন্দসমূহত আছে ।',
@@ -582,7 +582,8 @@ $2',
 'invalidtitle-knownnamespace' => 'নামস্থান "$2" আৰু পাঠ্য "$3" থকা অবৈধ শিৰোনাম',
 'invalidtitle-unknownnamespace' => 'অজ্ঞাত নামস্থান সংখ্যা $1 আৰু পাঠ্য "$2" থকা অবৈধ শিৰোনাম',
 'exception-nologin' => 'প্ৰৱেশ কৰা নাই',
-'exception-nologin-text' => 'এই পৃষ্ঠা অথবা কামৰ বাবে আপুনি প্ৰৱেশ কৰা বাধ্যতামূলক',
+'exception-nologin-text' => 'এই কামৰ বাবে আপুনি [[Special:Userlogin|লগ্‌ ইন]] কৰাটো বাধ্যতামূলক।',
+'exception-nologin-text-manual' => 'এই কামৰ বাবে অনুগ্ৰহ কৰি $1 কৰক।',
 
 # Virus scanner
 'virus-badscanner' => "ভুল কনফিগাৰেচন: অজ্ঞাত ভাইৰাছ স্কেনাৰ: ''$1''",
@@ -684,7 +685,7 @@ $2',
 'passwordtooshort' => "গুপ্তশব্দ কমেও {{PLURAL:$1|১ টা|$1 টা}} আখৰৰ হ'ব লাগিব ।",
 'password-name-match' => "আপোনাৰ গুপ্তশব্দ আৰু আপোনাৰ সদস্যনাম বেলেগ হ'ব লাগিব",
 'password-login-forbidden' => 'এই সদস্যনাম আৰু গুপ্তশব্দৰ ব্যৱহাৰ নিষিদ্ধ কৰা হৈছে ।',
-'mailmypassword' => 'à¦\87-মà§\87à¦\87লত à¦\97à§\81পà§\8dতশবà§\8dদ à¦ªà¦ à¦¿à¦¯à¦¼াওক',
+'mailmypassword' => 'à¦\97à§\81পà§\8dতশবà§\8dদ à¦¨-à¦\95à§\88 à¦¬à¦¹à§\81ৱাওক',
 'passwordremindertitle' => '{{SITENAME}}ৰ কাৰণে নতুন অস্থায়ী গুপ্তশব্দ',
 'passwordremindertext' => 'কোনোবাই (হয়তো আপুনি, $1 আই-পি ঠিকনাৰ পৰা)
 {{SITENAME}}ত ব্যৱহাৰ কৰিবলৈ নতুন গুপ্তশব্দৰ বাবে অনুৰোধ কৰিছে ($4) ।
@@ -708,7 +709,7 @@ $2',
 'emailnotauthenticated' => 'আপোনাৰ ই-মেইল ঠিকনাতো এতিয়ালৈ নিশ্চিত হোৱা নাই।
 আপুনি তলৰ বিষয়বোৰৰ কাৰণে মেইল পঠিয়াব নোৱাৰে।',
 'noemailprefs' => 'এই সুবিধাবোৰ ব্যৱহাৰ কৰিবলৈ এটা ই-মেইল ঠিকনা দিয়ক।',
-'emailconfirmlink' => 'à¦\86পà§\8bনাৰ à¦\87-মà§\87à¦\87ল à¦ à¦¿à¦\95নাà¦\9fà§\8b à¦ªà§\8dৰমাণিত কৰক',
+'emailconfirmlink' => 'à¦\86পà§\8bনাৰ à¦\87-মà§\87à¦\87ল à¦ à¦¿à¦\95নাà¦\9fà§\8b à¦¨à¦¿à¦¶à§\8dà¦\9aিত কৰক',
 'invalidemailaddress' => 'এই ই-মেইল ঠিকনাতো গ্ৰহনযোগ্য নহয়, কাৰণ ই অবৈধ প্ৰকাৰৰ যেন লাগিছে।
 অনুগ্ৰহ কৰি এটা বৈধ ই-মেইল ঠিকনা লিখক অথবা একো নিলিখিব।',
 'cannotchangeemail' => 'এই ৱিকিত একাউন্ট ই-মেইল ঠিকনা সলনি কৰিব পৰা নাযায়',
@@ -730,7 +731,7 @@ $2',
 
 # Email sending
 'php-mail-error-unknown' => 'পি.এইছ.পি মেইল () কাৰ্যত অজ্ঞাত ত্ৰুটি ।',
-'user-mail-no-addy' => 'à¦\87-মà§\87à¦\87ল à¦ à¦¿à¦\95না à¦¨à§\8bহà§\8bৱাà¦\95à§\88য়à§\87 à¦\87-মà§\87à¦\87ল à¦ªà¦ à§\8bৱাৰ চেষ্টা কৰা হৈছে ।',
+'user-mail-no-addy' => 'à¦\87-মà§\87à¦\87ল à¦ à¦¿à¦\95না à¦¨à§\8bহà§\8bৱাà¦\95à§\88য়à§\87 à¦\87-মà§\87à¦\87ল à¦ªà¦ à¦¿à¦\93ৱাৰ চেষ্টা কৰা হৈছে ।',
 'user-mail-no-body' => 'কোনো সমল নোহোৱাকৈ বা অতি সংক্ষিপ্ত কথাৰে ইমেইল পঠিয়াবলৈ চেষ্টা কৰিছিল।',
 
 # Change password dialog
@@ -744,7 +745,7 @@ $2',
 'resetpass_submit' => 'গুপ্তশব্দ বহুৱাওক আৰু প্ৰৱেশ কৰক',
 'changepassword-success' => 'আপোনাৰ গুপ্তশব্দ সফলতাৰে সলনি কৰা হৈছে!',
 'resetpass_forbidden' => 'গুপ্তশব্দ সলনি কৰিব নোৱাৰি',
-'resetpass-no-info' => 'এই পৃষ্ঠা প্ৰত্যক্ষ ভাৱে ঢুকি পাবলৈ আপুনি প্ৰৱেশ কৰিব লাগিব ।',
+'resetpass-no-info' => 'এই পৃষ্ঠাটোত প্ৰৱেশাধিকাৰ পাবলৈ আপুনি লগ্‌ ইন কৰিব লাগিব ।',
 'resetpass-submit-loggedin' => 'গুপ্তশব্দ সলনি কৰক',
 'resetpass-submit-cancel' => 'বাতিল কৰক',
 'resetpass-wrong-oldpass' => 'অস্থায়ী বা সাম্প্ৰতিক গুপ্তশব্দ গ্ৰহণযোগ্য নহয় ।
@@ -755,7 +756,7 @@ $2',
 # Special:PasswordReset
 'passwordreset' => 'গুপ্তশব্দ ন-কৈ বহুৱাওক',
 'passwordreset-text-one' => 'আপোনাৰ গুপ্তশব্দ ন-কৈ বহুৱাবলৈ এই প্ৰপত্ৰ পূৰণ কৰক।',
-'passwordreset-text-many' => '{{PLURAL:$1|à¦\86পà§\8bনাৰ à¦\97à§\81পà§\8dতশবà§\8dদ à¦¨-à¦\95à§\88 à¦¬à¦¹à§\81ৱাবলৈ এই তথ্যসমূহৰ যিকোনো এটা দিয়ক।}}',
+'passwordreset-text-many' => '{{PLURAL:$1|à¦\87মà§\87à¦\87লত à¦\8fà¦\9fা à¦\85সà§\8dথায়à§\80 à¦\97à§\81পà§\8dতশবà§\8dদ à¦ªাবলৈ এই তথ্যসমূহৰ যিকোনো এটা দিয়ক।}}',
 'passwordreset-legend' => 'গুপ্তশব্দ ন-কৈ বহাওক',
 'passwordreset-disabled' => 'এই ৱিকিত গুপ্তশব্দ নবীকৰণ নিষ্ক্ৰিয় কৰা হৈছে ।',
 'passwordreset-emaildisabled' => 'এই ৱিকিত ই-মেইল বৈশিষ্টসমূহ নিষ্ক্ৰিয় কৰা হৈছে।',
@@ -785,7 +786,7 @@ $2
 'changeemail' => 'ই-মেইল ঠিকনা সলনি কৰক',
 'changeemail-header' => 'একাউণ্টৰ ই-মেইল ঠিকনা সলনি কৰক',
 'changeemail-text' => 'আপোনাৰ ই-মেইল ঠিকনা সলাবলৈ এই প্ৰপত্ৰখন পূৰাওক । এই সালসলনি নিশ্চিত কৰিবলৈ আপোনাৰ গুপ্তশব্দ দিব লাগিব ।',
-'changeemail-no-info' => 'এই পৃষ্ঠা প্ৰত্যক্ষ্ ভাৱে ঢুকি পাবলৈ আপুনি প্ৰৱেশ কৰিব লাগিব ।',
+'changeemail-no-info' => 'এই পৃষ্ঠাটোত প্ৰৱেশাধিকাৰ পাবলৈ আপুনি লগ্‌ ইন কৰিব লাগিব।',
 'changeemail-oldemail' => 'বৰ্তমানৰ ই-মেইল ঠিকনা:',
 'changeemail-newemail' => 'নতুন ই-মেইল ঠিকনা:',
 'changeemail-none' => '(নাই)',
@@ -802,6 +803,7 @@ $2
 'resettokens-legend' => "ট'কেন ৰিছে'ট কৰক",
 'resettokens-tokens' => "ট'কেনসমূহ:",
 'resettokens-token-label' => '$1 (বর্তমান: $2)',
+'resettokens-watchlist-token' => "[[Special:Watchlist|আপোনাৰ লক্ষ্যতালিকাৰ পৃষ্ঠাৰ সালসলনিৰ]] ৱেব ফীডৰ বাবে ট'কেন (Atom/RSS)",
 'resettokens-done' => "ট'কেন ৰিছে'ট কৰা হ'ল।",
 'resettokens-resetbutton' => "নিৰ্বাচিত ট'কেনসমূহ ৰিছে'ট কৰক",
 
@@ -827,11 +829,11 @@ $2
 'summary' => 'সাৰাংশ:',
 'subject' => 'বিষয় / শীৰ্ষক:',
 'minoredit' => 'এইটো এটা অগুৰুত্বপূৰ্ণ সম্পাদনা',
-'watchthis' => 'à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠাà¦\96ন লক্ষ্য কৰক',
+'watchthis' => 'à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠাà¦\9fà§\8b লক্ষ্য কৰক',
 'savearticle' => 'পৃষ্ঠা সাঁচক',
 'preview' => 'খচৰা',
 'showpreview' => 'খচৰা চাওক',
-'showlivepreview' => 'পà§\8bনপà¦\9fà§\80য়া খচৰা',
+'showlivepreview' => 'পà§\8bনপà¦\9fিয়া খচৰা',
 'showdiff' => 'সালসলনিবোৰ দেখুৱাওক',
 'anoneditwarning' => "<span style=\"color:red;\">'''সাৱধান:''' আপুনি প্ৰৱেশ কৰা নাই ।</span> 
 এই পৃষ্ঠাৰ ইতিহাসত আপোনাৰ আই পি ঠিকনা সংৰক্ষিত কৰা হ'ব।",
@@ -880,7 +882,7 @@ $1ৰ দ্বাৰা এই অৱৰোধ কৰা হৈছে ।
 'loginreqtitle' => 'প্ৰৱেশ আৱশ্যক',
 'loginreqlink' => 'প্ৰৱেশ',
 'loginreqpagetext' => 'অন্যান্য পৃষ্ঠা চাবলৈ আপুনি $1 কৰিব লাগিব।',
-'accmailtitle' => "à¦\97à§\81পà§\8dতশবà§\8dদ à¦ªà¦ à§\8bৱা হ'ল।",
+'accmailtitle' => "à¦\97à§\81পà§\8dতশবà§\8dদ à¦ªà¦ à¦¿à¦\93ৱা হ'ল।",
 'accmailtext' => "[[User talk:$1|$1]]-ৰ কাৰণে যাদৃচ্ছিকভাৱে উৎপন্ন কৰা গুপ্তশব্দ $2লৈ পঠোৱা হ'ল । 
 এই নতুন একাউন্টত প্ৰৱেশ কৰি ''[[Special:ChangePassword|গুপ্তশব্দ সলনি কৰক]]'' পৃষ্ঠাখনত শব্দতো সলনি কৰি ল’ব পাৰিব ।",
 'newarticle' => '(নতুন)',
@@ -1006,15 +1008,15 @@ $1ৰ দ্বাৰা এই অৱৰোধ কৰা হৈছে ।
 'moveddeleted-notice' => "এই পৃষ্ঠা বাতিল কৰা হৈছে ।
 পৃষ্ঠাটিৰ বাতিল আৰু স্থানান্তৰ কৰা অভিলেখ তলত দিয়া হ'ল ।",
 'log-fulllog' => 'সম্পূৰ্ণ অভিলেখ চাওক',
-'edit-hook-aborted' => 'হুকৰ দ্বাৰা সম্পাদনা প্ৰত্যাখ্যান কৰা হৈছে 
-ইয়াৰ কোনো ব্যাখ্যা নাই ।',
-'edit-gone-missing' => 'পà§\83ষà§\8dঠাà¦\96ন à¦¨à¦¬à§\80à¦\95ৰণ à¦\95ৰিব à¦ªà§°à¦¾ à¦¨à¦\97â\80\99ল 
-সম্ভৱতঃ পৃষ্ঠাখন বিলোপ কৰা হৈছে ।',
-'edit-conflict' => 'সম্পাদনা দ্বন্দ্ব ।',
-'edit-no-change' => 'আপোনাৰ সম্পাদনা আওকাণ কৰা হৈছে, কাৰণ লেখাত কোনো তফাৎ নাই',
-'postedit-confirmation' => "à¦\86পà§\8bনাৰ à¦¸à¦®à§\8dপাদনা à¦¸à¦\82ৰà¦\95à§\8dষিত à¦\95ৰা à¦¹'ল ।",
-'edit-already-exists' => "নতুন পৃষ্ঠা সৃষ্টি কৰা নহ'ল 
-পà§\83ষà§\8dঠাà¦\96ন à¦\87তিমধà§\8dযà§\87 à¦\86à¦\9bà§\87à¦\87 ।",
+'edit-hook-aborted' => 'হুকৰ দ্বাৰা সম্পাদনা প্ৰত্যাখ্যান কৰা হৈছে।
+ইয়াৰ কোনো ব্যাখ্যা নাই।',
+'edit-gone-missing' => 'পà§\83ষà§\8dঠাà¦\9fà§\8b à¦¨à¦¬à§\80à¦\95ৰণ à¦\95ৰিব à¦ªà§°à¦¾ à¦¨à¦\97â\80\99ল
+সম্ভৱতঃ পৃষ্ঠাখন বিলোপ কৰা হৈছে।',
+'edit-conflict' => 'সম্পাদনা দ্বন্দ্ব।',
+'edit-no-change' => 'আপোনাৰ সম্পাদনা আওকাণ কৰা হৈছে, কাৰণ লেখাত কোনো তফাৎ নাই',
+'postedit-confirmation' => "à¦\86পà§\8bনাৰ à¦¸à¦®à§\8dপাদনা à¦¸à¦¾à¦\81à¦\9aি à¦¥à§\8bৱা à¦¹'ল।",
+'edit-already-exists' => "নতুন পৃষ্ঠা সৃষ্টি কৰা নহ'ল।
+পà§\83ষà§\8dঠাà¦\9fà§\8b à¦\87তিমধà§\8dযà§\87 à¦\86à¦\9bà§\87à¦\87।",
 'defaultmessagetext' => 'সাধাৰণ বাৰ্তা পাঠ্য',
 'content-failed-to-parse' => '$1 মডেলৰ বাবে $2ৰ তথ্য নিকা কৰিব পৰা নগ’ল: $3',
 'invalid-content-data' => 'অবৈধ সমল তথ্য',
@@ -1044,7 +1046,7 @@ $1ৰ দ্বাৰা এই অৱৰোধ কৰা হৈছে ।
 'node-count-exceeded-category' => "ন'ড-গণনা বেছি হোৱা পৃষ্ঠাসমূহ",
 'node-count-exceeded-warning' => "পৃষ্ঠাৰ ন'ড-গণনা বেছি হৈছে",
 'expansion-depth-exceeded-category' => 'বিস্তৃতি গভীৰতা বেছি হোৱা পৃষ্ঠা',
-'expansion-depth-exceeded-warning' => 'পà§\83ষà§\8dঠাà¦\96নৰ বিস্তৃতি গভীৰতা বেছি হৈছে',
+'expansion-depth-exceeded-warning' => 'পà§\83ষà§\8dঠাà¦\9fà§\8bৰ বিস্তৃতি গভীৰতা বেছি হৈছে',
 'parser-unstrip-loop-warning' => 'আন্‌ষ্ট্ৰীপ লুপ চিনাক্ত কৰা হৈছে',
 'parser-unstrip-recursion-limit' => 'আন্‌ষ্ট্ৰিপ ৰিকাৰ্ছন সীমা অতিক্ৰম হৈছে ($1)',
 'converter-manual-rule-error' => 'মেনুৱেল ভাষা পৰিৱৰ্তন নিয়মত ত্ৰুটি পোৱা গৈছে',
@@ -1058,10 +1060,11 @@ $1ৰ দ্বাৰা এই অৱৰোধ কৰা হৈছে ।
 'undo-summary-username-hidden' => 'এজন গোপন ব্যৱহাৰকাৰীয়ে কৰা $1 সংশোধন বাতিল কৰক',
 
 # Account creation failure
-'cantcreateaccounttitle' => "একাউন্ট সৃষ্টি কৰা নহ'ব",
+'cantcreateaccounttitle' => 'একাউণ্ট সৃষ্টি কৰিব নোৱাৰি',
 'cantcreateaccount-text' => "আই পি ঠিকনা ('''$1''')ৰ পৰা একাউণ্ট সৃষ্টিত [[User:$3|$3]]’য়ে বাধা প্ৰদান কৰিছে ।
 
 $3 য়ে আগবঢ়োৱা ইয়াৰ কাৰণ হৈছে ''$2''",
+'cantcreateaccount-range-text' => " $3 য়ে ''$2'' বুলি কাৰণ দিছে",
 
 # History pages
 'viewpagelogs' => 'এই পৃষ্ঠাৰ অভিলেখ চাওক ।',
@@ -1071,8 +1074,8 @@ $3 য়ে আগবঢ়োৱা ইয়াৰ কাৰণ হৈছে
 'revisionasof' => '$1ৰ সংস্কৰণ',
 'revision-info' => '$1-লৈ $2ই কৰা সংশোধন',
 'previousrevision' => '← আগৰ সংশোধন',
-'nextrevision' => 'সদà§\8dযসà¦\82শà§\8bধিত',
-'currentrevisionlink' => 'শà§\87হতà§\80য়া à¦­à¦¾à¦·à§\8dয',
+'nextrevision' => 'নতà§\81ন à¦¸à¦\82শà§\8bধনâ\86\92',
+'currentrevisionlink' => 'শà§\87হতà§\80য়া à¦¸à¦\82শà§\8bধন',
 'cur' => 'বৰ্তমান',
 'next' => 'পৰৱৰ্তী',
 'last' => 'পূৰ্বৱৰ্তী',
@@ -1086,11 +1089,11 @@ $3 য়ে আগবঢ়োৱা ইয়াৰ কাৰণ হৈছে
 'histfirst' => 'আটাইতকৈ পুৰণি',
 'histlast' => 'শেহতীয়া',
 'historysize' => '({{PLURAL:$1|১ বাইট|$1 বাইট}})',
-'historyempty' => '(à¦\96ালà§\80)',
+'historyempty' => '(à¦\96ালি)',
 
 # Revision feed
-'history-feed-title' => 'সà¦\82à¦\95লন ইতিহাস',
-'history-feed-description' => 'ৱিà¦\95িত à¦\89পলবà§\8dধ à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠাৰ à¦¸à¦\82à¦\95লন ইতিহাস',
+'history-feed-title' => 'সà¦\82শà§\8bধনৰ ইতিহাস',
+'history-feed-description' => 'ৱিà¦\95িত à¦\89পলবà§\8dধ à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠাৰ à¦¸à¦\82শà§\8bধন ইতিহাস',
 'history-feed-item-nocomment' => '$1-য়ে $2',
 'history-feed-empty' => 'অনুৰোধ কৰা পৃষ্ঠাৰ কোনো অস্বিত্ব নাই।
 হয়তো ইয়াক বিলোপ কৰা হৈছে অথবা ইয়াৰ নাম সলনি কৰা হৈছে।
@@ -1131,7 +1134,7 @@ $3 য়ে আগবঢ়োৱা ইয়াৰ কাৰণ হৈছে
 'revisiondelete' => 'সংকলন বিলোপ কৰক / পুনৰ স্থাপন কৰক',
 'revdelete-nooldid-title' => 'লক্ষ্য সংশোধন যুক্তিসংগত নহয়',
 'revdelete-nooldid-text' => 'কামটো কৰাৰ বাবে আপুনি লক্ষ্য সংশোধন নিৰ্বাচন কৰা নাই, নিৰ্বাচিত সংশোধন নাই, অথবা আপুনি বৰ্তমানৰ সংশোধন লুকুৱাব বিচাৰিছে ।',
-'revdelete-no-file' => 'নিৰà§\8dধাৰিত à¦«à¦¾à¦\87লà¦\9fি à¦¨à¦¾à¦\87 ।',
+'revdelete-no-file' => 'নিৰà§\8dধাৰিত à¦«à¦¾à¦\87লà¦\9fà§\8b à¦¨à¦¾à¦\87।',
 'revdelete-show-file-confirm' => 'আপুনি "<nowiki>$1</nowiki>"  ফাইলৰ বিলোপ কৰা কৰা সংশোধন $2 তাৰিখৰ পৰা $3 সময়ত চাব বিচাৰিছে নেকি?',
 'revdelete-show-file-submit' => 'হয়',
 'revdelete-selected' => "'''[[:$1]]-ৰ {{PLURAL:$2|নিৰ্বাচিত সংশোধন|নিৰ্বাচিত সংশোধনসমূহ}}:'''",
@@ -1254,7 +1257,8 @@ $1",
 'nextn-title' => 'পিছৰ $1 {{PLURAL:$1|ফলাফল|ফলাফলবোৰ}}',
 'shown-title' => 'পৃষ্ঠাই প্ৰতি $1 {{PLURAL:$1|টা ফলাফল|টা ফলাফল}} দেখুৱাওক',
 'viewprevnext' => '($1 {{int:pipe-separator}} $2) ($3) চাওক।',
-'searchmenu-exists' => 'এই ৱিকিত "[[:$1]]" নামৰ পৃষ্ঠা এখন আছে ।',
+'searchmenu-exists' => "'''এই ৱিকিত \"[[:\$1]]\" নামৰ এটা পৃষ্ঠা আছে।'''
+{{PLURAL:\$2|0=|আন সন্ধান ফলাফলবোৰ চাওক।}}",
 'searchmenu-new' => "'''এই ৱিকিত \"[[:\$1]]\" পৃষ্ঠাখন সৃষ্টি কৰক!'''",
 'searchprofile-articles' => 'বিষয়বস্তুৰ পৃষ্ঠা',
 'searchprofile-project' => 'সহায় আৰু প্ৰকল্প পৃষ্ঠাসমূহ',
@@ -1299,6 +1303,7 @@ $1",
 'preferences' => 'পছন্দসমূহ',
 'mypreferences' => 'পছন্দসমূহ',
 'prefs-edits' => 'সম্পাদনাৰ সংখ্যা:',
+'prefsnologintext2' => 'আপোনাৰ পছন্দসমূহৰ সালসলনি কৰিবলৈ অনুগ্ৰহ কৰি $1 কৰক।',
 'prefs-skin' => 'আৱৰণ',
 'skin-preview' => 'খচৰা',
 'datedefault' => 'কোনো পছন্দ নাই',
@@ -1374,7 +1379,7 @@ $1",
 'yourvariant' => 'বিষয়-বস্তুৰ ভাষা বিকল্প',
 'prefs-help-variant' => 'এই ৱিকিৰ সমল পৃষ্ঠাসমূহ প্ৰদৰ্শন কৰিবলে আপোনাৰ পছন্দৰ অপৰ অথবা বৰ্ণবিন্যাস।',
 'yournick' => 'নতুন স্বাক্ষৰ:',
-'prefs-help-signature' => 'কথা-বতৰা পৃষ্ঠাত মন্তব্যসমূহৰ তলত "<nowiki>~~~~</nowiki>" লিখিলে ই স্বয়ংক্ৰিয়ভাৱে আপোনাৰ নাম আৰু সময় সংযুক্ত কৰিব ।',
+'prefs-help-signature' => 'কথা-বতৰা পৃষ্ঠাত মন্তব্যসমূহৰ তলত "<nowiki>~~~~</nowiki>" লিখিলে ই স্বয়ংক্ৰিয়ভাৱে আপোনাৰ নাম আৰু সময় সংযুক্ত কৰিব।',
 'badsig' => 'অনুপযোগী স্বাক্ষ্যৰ, HTML টেগ পৰীক্ষা কৰি লওক।',
 'badsiglength' => 'আপোনাৰ স্বাক্ষৰ অত্যাধিক দীঘলীয়া ।
 আপোনাৰ স্বাক্ষৰ {{PLURAL:$1|এটা আখৰৰ|টা আখৰৰ}} বেছি হ’ব নালাগে ।',
@@ -1409,6 +1414,7 @@ $1",
 'prefs-tokenwatchlist' => "ট'কেন",
 'prefs-diffs' => 'পাৰ্থক্য',
 'prefs-help-prefershttps' => "আপোনাৰ পৰৱৰ্তী প্ৰৱেশত এই পছন্দ কাৰ্যকৰী হ'ব।",
+'prefs-tabs-navigation-hint' => 'কিটিপ: টেব্‌ তালিকাত থকা টেবসমূহৰ মাজত বিচৰণ কৰিবলৈ সোঁ আৰু বাঁও কাঁড়চিনৰ কী টিপিব পাৰে।',
 
 # User preference: email validation using jQuery
 'email-address-validity-valid' => 'ই-মেইল ঠিকনাটো সঠিক',
@@ -1502,7 +1508,8 @@ $1",
 'right-proxyunbannable' => 'প্ৰক্সীৰ স্বয়ংক্ৰিয় প্ৰতিবন্ধক এৰাই চলক',
 'right-unblockself' => 'আপোনা-আপুনি খোলা',
 'right-protect' => 'সুৰক্ষাৰ স্তৰ পৰিৱৰ্তন কৰক আৰু প্ৰপাতাকাৰ-সুৰক্ষিত পৃষ্ঠাসমূহ সম্পাদনা কৰক',
-'right-editprotected' => 'সুৰক্ষিত পৃষ্ঠা (কেশ্বকেডিঙ সুৰক্ষাৰ অবিহনে) সম্পাদনা কৰক',
+'right-editprotected' => '"{{int:protect-level-sysop}}" হিচাপে সুৰক্ষিত পৃষ্ঠা সম্পাদনা কৰক',
+'right-editsemiprotected' => '"{{int:protect-level-autoconfirmed}}" হিচাপে সুৰক্ষিত পৃষ্ঠা সম্পাদনা কৰক',
 'right-editinterface' => 'সদস্যৰ ইণ্টাৰফে’চ সম্পাদনা কৰক',
 'right-editusercssjs' => 'আন সদস্যৰ CSS আৰু JavaScript  সম্পাদনা কৰক',
 'right-editusercss' => 'আন সদস্যৰ CSS ফাইল সম্পাদনা কৰক',
@@ -1510,6 +1517,10 @@ $1",
 'right-editmyusercss' => 'আপোনাৰ নিজৰ সদস্য CSS ফাইলসমূহ সম্পাদনা কৰক।',
 'right-editmyuserjs' => 'আপোনাৰ নিজৰ সদস্য JavaScript ফাইলসমূহ সম্পাদনা কৰক',
 'right-viewmywatchlist' => 'আপোনাৰ নিজৰ লক্ষ্য-তালিকা চাওক',
+'right-editmywatchlist' => 'আপোনাৰ নিজৰ লক্ষ্যতালিকাখন সম্পাদনা কৰক। মন কৰিব যে কিছুমান কামে এই অধিকাৰ অবিহনেও পৃষ্ঠা যোগ দিয়াব।',
+'right-viewmyprivateinfo' => 'আপোনাৰ ব্যক্তিগত তথ্য চাওক (যেনে- ইমেইল ঠিকনা, প্ৰকৃত নাম)',
+'right-editmyprivateinfo' => 'আপোনাৰ ব্যক্তিগত তথ্য সম্পাদনা কৰক (যেনে- ইমেইল ঠিকনা, প্ৰকৃত নাম)',
+'right-editmyoptions' => 'আপোনাৰ নিজৰ পছন্দসমূহ সম্পাদনা কৰক',
 'right-rollback' => 'শেষৰজন সদস্যই এখন নিৰ্দিষ্ট পৃষ্টাত কৰা সম্পাদনা পূৰ্বৰ অৱস্থালৈ ঘূৰাই আনক',
 'right-markbotedits' => 'ৰ’ল্ড-বেক সম্পাদনাসমূহ বট সম্পাদনা বুলি চিহ্নিত কৰক',
 'right-noratelimit' => 'গতি সীমাৰ দ্বাৰা প্ৰভাৱিত নহ’ব',
@@ -1561,8 +1572,8 @@ $1",
 'action-block' => 'এই সদস্যক সম্পাদনা কৰাৰ পৰা বাৰণ কৰক',
 'action-protect' => 'এই পৃষ্ঠাৰ সুৰক্ষাৰ মাত্ৰা পৰিৱৰ্তন কৰক',
 'action-rollback' => 'শেষৰজন সদস্যই এখন নিৰ্দিষ্ট পৃষ্টাত কৰা সম্পাদনা পূৰ্বৰ অৱস্থালৈ ঘূৰাই আনক',
-'action-import' => 'à¦\85নà§\8dয à§±à¦¿à¦\95িৰ à¦ªà§°à¦¾ à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠাà¦\96ন à¦\86মদানà§\80 কৰক',
-'action-importupload' => 'ফাà¦\87ল à¦\86পলâ\80\99ডৰ à¦ªà§°à¦¾ à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠা à¦\86মদানà§\80 কৰক',
+'action-import' => 'à¦\85নà§\8dয à§±à¦¿à¦\95িৰ à¦ªà§°à¦¾ à¦ªà§\83ষà§\8dঠা à¦\86মদানি কৰক',
+'action-importupload' => 'ফাà¦\87ল à¦\86পলâ\80\99ডৰ à¦ªà§°à¦¾ à¦ªà§\83ষà§\8dঠা à¦\86মদানি কৰক',
 'action-patrol' => 'আনৰ সম্পাদনা পৰীক্ষিত বুলি চিহ্নিত কৰক',
 'action-autopatrol' => 'আপোনাৰ সম্পাদনা পৰীক্ষিত বুলি চিহ্নিত কৰক',
 'action-unwatchedpages' => 'নিৰীক্ষণ নকৰা পৃষ্ঠাসমূহৰ তালিকা চাওক',
@@ -1571,22 +1582,33 @@ $1",
 'action-userrights-interwiki' => 'আন ৱিকিৰ সদস্যৰ অধিকাৰসমূহ সম্পাদনা কৰক',
 'action-siteadmin' => 'তথ্যকোষ বন্ধ কৰক বা খোলক',
 'action-sendemail' => 'ই-মেইল পঠিয়াওক',
+'action-editmywatchlist' => 'আপোনাৰ লক্ষ্যতালিকা সম্পাদনা কৰক',
+'action-viewmywatchlist' => 'আপোনাৰ লক্ষ্যতালিকা চাওক',
+'action-viewmyprivateinfo' => 'আপোনাৰ ব্যক্তিগত তথ্য চাওক',
+'action-editmyprivateinfo' => 'আপোনাৰ ব্যক্তিগত তথ্য সম্পাদনা কৰক',
 
 # Recent changes
 'nchanges' => '$1 {{PLURAL:$1|সাল-সলনি|সাল-সলনি}}',
+'enhancedrc-since-last-visit' => '$1 {{PLURAL:$1|শেষ দৰ্শনৰ পৰা}}',
+'enhancedrc-history' => 'ইতিহাস',
 'recentchanges' => 'শেহতীয়া সাল-সলনি',
 'recentchanges-legend' => 'সাম্প্ৰতিক সালসলনিৰ পছন্দসমূহ',
 'recentchanges-summary' => 'ৱিকিত হোৱা শেহতীয়া সাল-সলনি এই পৃষ্ঠাত অনুসৰণ কৰক।',
+'recentchanges-noresult' => 'নিৰ্ধাৰিত সময়ছোৱাত এই মাপকাঠিৰ লগত মিলা কোনো সালসলনি হোৱা নাই।',
 'recentchanges-feed-description' => 'ৱিকিত হোৱা শেহতীয়া সাল-সলনি এই ফীডত অনুসৰণ কৰক।',
-'recentchanges-label-newpage' => 'à¦\8fà¦\87 à¦¸à¦®à§\8dপাদনাà¦\87 à¦\8fà¦\96ন à¦¨à¦¤à§\81ন à¦ªà§\83ষà§\8dঠা à¦¤à§\88য়াৰ কৰিছে',
+'recentchanges-label-newpage' => 'à¦\8fà¦\87 à¦¸à¦®à§\8dপাদনাà¦\87 à¦\8fà¦\9fা à¦¨à¦¤à§\81ন à¦ªà§\83ষà§\8dঠাৰ à¦¸à§\83ষà§\8dà¦\9fি কৰিছে',
 'recentchanges-label-minor' => 'এইটো অগুৰুত্বপূৰ্ণ সম্পাদনা',
-'recentchanges-label-bot' => "এই সম্পাদনা ব'টৰ দ্বাৰা কৰা হৈছে",
+'recentchanges-label-bot' => "এই সম্পাদনাটো ব'টে কৰিছে",
 'recentchanges-label-unpatrolled' => 'এই সম্পাদনাটো এতিয়াও পৰীক্ষা কৰা হোৱা নাই',
+'recentchanges-label-plusminus' => 'পৃষ্ঠাৰ আকাৰ এই পৰিমাণৰ বাইট পৰিৱৰ্তন হৈছে',
+'recentchanges-legend-heading' => "'''ব্যাখ্যা:'''",
+'recentchanges-legend-newpage' => '(লগতে [[Special:NewPages|নতুন পৃষ্ঠাসমূহৰ তালিকা]] চাওক)',
+'recentchanges-legend-plusminus' => "(''±১২৩'')",
 'rcnotefrom' => "তলত '''$2''' ৰ পৰা হোৱা ('''$1''' লৈকে) পৰিৱৰ্তন দেখুৱা হৈছে ।",
 'rclistfrom' => '$1ৰ পৰা নতুন সালসলনি দেখুৱাওক',
 'rcshowhideminor' => '$1 -সংখ্যক নগণ্য সম্পাদনা',
 'rcshowhidebots' => "ব'ট $1",
-'rcshowhideliu' => 'প্ৰবিষ্ট সভ্যৰ সাল-সলনি $1',
+'rcshowhideliu' => '$1 পঞ্জীভুক্ত সদস্য',
 'rcshowhideanons' => 'বেনামী সদস্য $1',
 'rcshowhidepatr' => '$1 নিৰীক্ষিত সম্পাদনা',
 'rcshowhidemine' => 'মোৰ সম্পাদনা $1',
@@ -1615,7 +1637,7 @@ $1",
 'recentchangeslinked-summary' => "এখন নিৰ্দিষ্ট পৃষ্ঠাৰ লগত সংযুক্ত পৃষ্ঠাসমূহৰ( বা এটা নিৰ্দিষ্ট শ্ৰেণীৰ সদস্যসমূহৰ) শেহতীয়া সালসলনিৰ তালিকা তলত দিয়া হৈছে ।
 [[Special:Watchlist|আপুনি চকু ৰখা পৃষ্ঠাসমূহৰ তালিকা]] ত থকা পৃষ্ঠাসমূহ '''গাঢ়''' দেখা পাব ।",
 'recentchangeslinked-page' => 'পৃষ্ঠাৰ নাম:',
-'recentchangeslinked-to' => 'à¦\85নà§\8dযথা à¦¨à¦¿à§°à§\8dদিষà§\8dà¦\9f à¦ªà§\83ষà§\8dঠাৰ à¦²à¦\97ত à¦¸à¦\82যà§\81à¦\95à§\8dত à¦ªà§\83ষà§\8dঠাসমà§\82হৰ à¦¸à¦¾à¦²à¦¸à¦²à¦¨à¦¿ à¦¦à§\87à¦\96à§\8bৱাওক',
+'recentchangeslinked-to' => 'à¦\85নà§\8dযথা à¦¨à¦¿à§°à§\8dদিষà§\8dà¦\9f à¦ªà§\83ষà§\8dঠাৰ à¦²à¦\97ত à¦¸à¦\82যà§\81à¦\95à§\8dত à¦ªà§\83ষà§\8dঠাসমà§\82হৰ à¦¸à¦¾à¦²à¦¸à¦²à¦¨à¦¿ à¦¦à§\87à¦\96à§\81ৱাওক',
 
 # Upload
 'upload' => 'ফাইল আপল’ড',
@@ -1623,7 +1645,7 @@ $1",
 'reuploaddesc' => 'আপল’ড বাতিল কৰি আপল’ড প্ৰপত্ৰলৈ ঘূৰি যাওক',
 'upload-tryagain' => 'পৰিৱৰ্তিত ফাইলৰ বিৱৰণ দাখিল কৰক',
 'uploadnologin' => 'প্ৰৱেশ কৰা নাই',
-'uploadnologintext' => 'ফাà¦\87ল à¦\86পলâ\80\99ড à¦\95ৰিবলà§\88 à¦\86পà§\81নি à¦\86à¦\97তà§\87 [[Special:UserLogin|লà¦\97-à¦\87ন]] à¦\95ৰিব à¦²à¦¾à¦\97িব ।',
+'uploadnologintext' => 'ফাà¦\87ল à¦\86পলâ\80\99ড à¦\95ৰিবলà§\88 à¦\85নà§\81à¦\97à§\8dৰহ à¦\95ৰি $1 à¦\95ৰà¦\95।',
 'upload_directory_missing' => 'আপলোড ডিৰেক্টৰি ($1)  বিচাৰি পোৱা নগ’ল আৰু ৱেবচাৰ্ভাৰৰ দ্বাৰা তৈয়াৰ কৰিব পৰা নগ’ল ।',
 'upload_directory_read_only' => 'আপল’ড ডিৰেক্টৰি ($1) ৱেবচাৰ্ভাৰৰ দ্বাৰা লিখনযোগ্য নহয় ।',
 'uploaderror' => 'আপল’ডত সমস্যা হৈছে',
@@ -1675,7 +1697,7 @@ $1",
 'overwrite' => 'এতিয়া থকা ফাইলৰ ওপৰত লিখা নিষেধ ।',
 'unknown-error' => 'এক অজ্ঞাত সমস্যাই দেখা দিছে ।',
 'tmp-create-error' => 'অস্থায়ী ফাইল তৈয়াৰ কৰিব পৰা নহ’ল ।',
-'tmp-write-error' => 'অস্থায়ী ফাইল লিখাত সমস্যা হৈছে ।',
+'tmp-write-error' => 'অস্থায়ী ফাইল লিখাত সমস্যা হৈছে।',
 'large-file' => 'পৰামৰ্শ অনুযায়ী ফাইলৰ আকাৰ $1 তকৈ ডাঙৰ হ’ব নালাগে ।
 এই ফাইলৰ আকাৰ $2 ।',
 'largefileserver' => 'চাৰ্ভাৰে অনুমোদন কৰাতকৈ এই ফাইলৰ আকাৰ ডাঙৰ ।',
@@ -1751,7 +1773,7 @@ $1',
 'upload-file-error' => 'আভ্যন্তৰীণ ত্ৰুটি',
 'upload-file-error-text' => 'চাৰ্ভাৰত অস্থায়ী ফাইল সৃষ্টি কৰোঁতে এটা আভ্যন্তৰীণ ত্ৰুটিয়ে দেখা দিছে ।
 অনুগ্ৰহ কৰি [[Special:ListUsers/sysop|প্ৰশাসকৰ]] লগত যোগাযোগ কৰক ।',
-'upload-misc-error' => 'à¦\85à¦\9cà§\8dà¦\9eাত à¦\86পলâ\80\99ড à¦¸à¦®à¦¸à§\8dযা',
+'upload-misc-error' => 'à¦\85à¦\9cà§\8dà¦\9eাত à¦\86পলâ\80\99ড à¦¤à§\8dৰà§\81à¦\9fি',
 'upload-misc-error-text' => 'আপল’ডৰ সময়ত কোনো অজ্ঞাত সমস্যাই দেখা দিছে ।
 URL টোৰ বৈধতা বিচাৰ কৰি পুনৰ চেষ্টা কৰক ।
 যদি তাৰ পিছতো সমস্যা হয়, তেন্তে এজন [[Special:ListUsers/sysop|প্ৰশাসকৰ]] লগত যোগাযোগ কৰক ।',
@@ -1866,8 +1888,7 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization চাওক।",
 'upload_source_file' => '(আপোনাৰ কম্পিউটাৰৰ এটা ফাইল)',
 
 # Special:ListFiles
-'listfiles-summary' => 'এই বিশেষ পৃষ্ঠাত সকলো আপল’ড হোৱা ফাইল দেখা পাব ।
-সদস্যৰ দ্বাৰা চেকিলে কেৱল শেহতীয়াকৈ আপল’ড কৰা ফাইলৰ সংস্কৰণ দেখা পোৱা যাব ।',
+'listfiles-summary' => 'এই বিশেষ পৃষ্ঠাত সকলো আপল’ড হোৱা ফাইল দেখা পাব।',
 'listfiles_search_for' => 'মিডিয়াৰ নাম অনুসন্ধান:',
 'imgfile' => 'ফাইল',
 'listfiles' => 'ফাইলৰ তালিকা',
@@ -1878,6 +1899,8 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization চাওক।",
 'listfiles_size' => 'আকাৰ',
 'listfiles_description' => 'বিৱৰণ',
 'listfiles_count' => 'সংস্কৰণ',
+'listfiles-show-all' => 'ছবিসমূহৰ পুৰণা সংস্কৰণ অন্তৰ্ভুক্ত কৰক',
+'listfiles-latestversion' => 'শেহতীয়া সংস্কৰণ',
 'listfiles-latestversion-yes' => 'হয়',
 'listfiles-latestversion-no' => 'নহয়',
 
@@ -1899,7 +1922,7 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization চাওক।",
 'filehist-comment' => 'মন্তব্য',
 'filehist-missing' => 'ফাইল সন্ধানহীন',
 'imagelinks' => 'ফাইল ব্যৱহাৰ',
-'linkstoimage' => 'তলত দিয়া পৃষ্ঠাবোৰ এই চিত্ৰ খনৰ লগত জৰিত :{{PLURAL:$1|page links|$1 pages link}}',
+'linkstoimage' => 'তলত দিয়া {{PLURAL:$1|পৃষ্ঠাটো|$1 পৃষ্ঠাবোৰ}} এই ফাইলৰ লগত জড়িত:',
 'linkstoimage-more' => 'এই ফাইলৰ লগত $1ৰো বেছি {{PLURAL:$1|পৃষ্ঠা সংযোগ|পৃষ্ঠা সংযোগ}} হৈ আছে ।
 তলৰ তালিকাত {{PLURAL:$1|প্ৰথম পৃষ্ঠা সংযোগ|প্ৰথম $1 পৃষ্ঠা সংযোগ}} দেখুওৱা হৈছে ।
 এখন [[Special:WhatLinksHere/$2|সম্পূৰ্ণ তালিকা]]ও পাব ।',
@@ -1979,6 +2002,10 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization চাওক।",
 
 # Random page in category
 'randomincategory' => 'শ্ৰেণীৰ যিকোনো পৃষ্ঠা',
+'randomincategory-invalidcategory' => '"$1" বৈধ শ্ৰেণী নাম নহয়।',
+'randomincategory-nopages' => '[[:Category:$1|$1]] শ্ৰেণীত কোনো পৃষ্ঠা নাই।',
+'randomincategory-selectcategory' => 'এই শ্ৰেণীৰ পৰা যিকোনো পৃষ্ঠা চাওক: $1 $2।',
+'randomincategory-selectcategory-submit' => 'যাওক',
 
 # Random redirect
 'randomredirect' => 'অনিৰ্ধাৰিত পুননিৰ্দেশ',
@@ -1993,7 +2020,7 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization চাওক।",
 'statistics-header-hooks' => 'অন্য পৰিসংখ্যা',
 'statistics-articles' => 'বিষয়বস্তুৰ পৃষ্ঠা',
 'statistics-pages' => 'পৃষ্ঠাসমূহ',
-'statistics-pages-desc' => 'à¦\95থা-বতৰা à¦ªà§\83ষà§\8dঠা, à¦ªà§\81ন:নিৰ্দেশিত পৃষ্ঠা আদি সহ এই ৱিকিৰ সকলো পৃষ্ঠা',
+'statistics-pages-desc' => 'à¦\86লà§\8bà¦\9aনা à¦ªà§\83ষà§\8dঠা, à¦ªà§\81নà¦\83নিৰ্দেশিত পৃষ্ঠা আদি সহ এই ৱিকিৰ সকলো পৃষ্ঠা',
 'statistics-files' => 'আপল’ড কৰা ফাইলসমূহ',
 'statistics-edits' => '{{SITENAME}} স্থাপন কৰাৰেপৰা পৃষ্ঠা সম্পাদনাসমূহ',
 'statistics-edits-average' => 'প্ৰতি পৃষ্ঠাৰ গড় সম্পাদনা',
@@ -2010,6 +2037,7 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization চাওক।",
 'pageswithprop-text' => 'বিশেষ পৃষ্ঠা উপাদান ব্যৱহাৰ কৰা পৃষ্ঠাসমূহ ইয়াত তালিকাভুক্ত কৰা হৈছে।',
 'pageswithprop-prop' => 'উপাদান নাম:',
 'pageswithprop-submit' => 'যাওক',
+'pageswithprop-prophidden-binary' => 'বাইনেৰী প্ৰপাৰ্টী মূল্য লুকোৱা হৈছে ($1)',
 
 'doubleredirects' => 'দ্বি-পুনঃনিৰ্দেশিত',
 'doubleredirectstext' => 'আন পুনৰ্নিদেশনা পৃষ্ঠালৈ পুনৰ্নিৰ্দেশিত পৃষ্ঠাসমূহ এই তালিকাত দিয়া হৈছে ।
@@ -2026,7 +2054,7 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization চাওক।",
 'brokenredirects-delete' => 'বাতিল কৰক',
 
 'withoutinterwiki' => 'ভাষাৰ সংযোগবিহীন পৃষ্ঠাসমূহ',
-'withoutinterwiki-summary' => 'তলৰ পৃষ্ঠাসমূহ আন ভাষাৰ সংস্কৰণৰ লগত সংযুক্ত নহয় ।',
+'withoutinterwiki-summary' => 'তলৰ পৃষ্ঠাসমূহ আন ভাষাৰ সংস্কৰণৰ লগত সংযুক্ত নহয়।',
 'withoutinterwiki-legend' => 'উপসৰ্গ',
 'withoutinterwiki-submit' => 'দেখুৱাওক',
 
@@ -2038,6 +2066,7 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization চাওক।",
 'ninterwikis' => '$1 {{PLURAL:$1|ইণ্টাৰৱিকি|ইণ্টাৰৱিকিসমূহ}}',
 'nlinks' => '$1 {{PLURAL:$1|সংযোগ|সংযোগ}}',
 'nmembers' => '{{PLURAL:$1|সদস্য|$1 সদস্যবৃন্দ}}',
+'nmemberschanged' => '$1 → $2 {{PLURAL:$2|জন সদস্য}}',
 'nrevisions' => '$1টা {{PLURAL:$1|সংশোধন|সংশোধন}}',
 'nviews' => '$1 {{PLURAL:$1|টা দৰ্শন|টা দৰ্শন}}',
 'nimagelinks' => '$1 {{PLURAL:$1|খন পৃষ্ঠাত|খন পৃষ্ঠাত}} ব্যৱহৃত',
@@ -2068,6 +2097,7 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization চাওক।",
 'mostrevisions' => 'অধিকবাৰ সম্পাদনা কৰা পৃষ্ঠাসমূহ',
 'prefixindex' => 'উপসৰ্গসহ সকলো পৃষ্ঠা',
 'prefixindex-namespace' => 'উপসৰ্গ ($1 namespace) -ৰ সৈতে সকলো পৃষ্ঠা',
+'prefixindex-strip' => 'তালিকাৰ পৰা প্ৰিফিক্স আঁতৰাওক',
 'shortpages' => 'চুটি পৃষ্ঠাসমূহ',
 'longpages' => 'দীঘলীয়া পৃষ্ঠাসমূহ',
 'deadendpages' => 'সংযোগবিহীন পৃষ্ঠাসমূহ',
@@ -2081,6 +2111,7 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization চাওক।",
 'listusers' => 'সদস্য তালিকা',
 'listusers-editsonly' => 'কেৱল সম্পাদনা কৰা সদস্যকহে দেখুৱাওক',
 'listusers-creationsort' => 'সৃষ্টিৰ তাৰিখমতে সজাওক',
+'listusers-desc' => 'নিম্নক্ৰমত সজাওক',
 'usereditcount' => '$1 {{PLURAL:$1|টা সম্পাদনা|টা সম্পাদনা}}',
 'usercreated' => '$1 তাৰিখে $2 সময়ত {{GENDER:$3|য়ে সৃষ্টি কৰিছে}}',
 'newpages' => 'নতুন পৃষ্ঠাসমূহ',
@@ -2182,7 +2213,8 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization চাওক।",
 'listgrouprights' => 'ব্যৱহাৰকাৰী গোটৰ অধিকাৰ',
 'listgrouprights-summary' => 'এই ৱিকিত থকা গোটসমূহৰ তালিকা সেইবোৰৰ প্ৰৱেশাধিকাৰসহ তলত দিয়া হ’ল ।
 সুকীয়া অধিকাৰ সম্পৰ্কে [[{{MediaWiki:Listgrouprights-helppage}}|অধিক তথ্য]] থাকিব পাৰে ।',
-'listgrouprights-key' => '* <span class="listgrouprights-granted">অনুমোদিত অধিকাৰ</span>
+'listgrouprights-key' => 'ব্যাখ্যা:
+* <span class="listgrouprights-granted">অনুমোদিত অধিকাৰ</span>
 * <span class="listgrouprights-revoked">প্ৰত্যাহাৰ কৰা অধিকাৰ</span>',
 'listgrouprights-group' => 'গোট',
 'listgrouprights-rights' => 'অধিকাৰসমূহ',
@@ -2201,7 +2233,7 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization চাওক।",
 'mailnologin' => 'পাওঁতাৰ ঠিকনা নাই',
 'mailnologintext' => 'আন সদস্যক ই-মেইল পঠিয়াবলৈ আপুনি [[Special:UserLogin|লগ্‌ ইন]] কৰিব লাগিব আৰু আপোনাৰ [[Special:Preferences|পছন্দসমূহত]] এটা বৈধ ই-মেইল ঠিকনা থাকিব লাগিব ।',
 'emailuser' => 'এই সদস্যজনলৈ ই-মেইল পঠিয়াওক',
-'emailuser-title-target' => '{{GENDER:$1|সদসà§\8dযà¦\9cনà¦\95}} ইমেইল পঠিয়াওক',
+'emailuser-title-target' => '{{GENDER:$1|সদসà§\8dযà¦\9cনলà§\88}} ইমেইল পঠিয়াওক',
 'emailuser-title-notarget' => 'ব্যৱহাৰকাৰী ই-পত্ৰ প্ৰেৰণ কৰক',
 'emailpage' => 'ই-পত্ৰ ব্যৱহাৰকাৰী',
 'emailpagetext' => 'তলৰ প্ৰপত্ৰখন ব্যৱহাৰ কৰি আপুনি এই {{GENDER:$1|সদস্যজনলৈ}} ই-মেইল পঠাব পাৰে ।
@@ -2246,14 +2278,14 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization চাওক।",
 'addedwatchtext' => 'আপোনাৰ [[Special:Watchlist|লক্ষ্য তালিকাত ]] "[[:$1]]" পৃষ্ঠাখন অন্তৰ্ভুক্ত কৰা হ\'ল।
 ভৱিষ্যতে এই পৃষ্ঠা বা ইয়াৰ আলোচনা পৃষ্ঠাত হোৱা সাল-সলনি আপুনি আপোনাৰ লক্ষ্য তালিকাত দেখিব।',
 'removewatch' => 'লক্ষ্য-তালিকাৰ পৰা আঁতৰাওক',
-'removedwatchtext' => '"[[:$1]]" à¦ªà§\83ষà§\8dঠাà¦\96ন [[Special:Watchlist|à¦\86পà§\8bনাৰ à¦²à¦\95à§\8dষà§\8dয-তালিà¦\95া]]ৰ à¦ªà§°à¦¾ à¦\86তৰোৱা হৈছে ।',
+'removedwatchtext' => '"[[:$1]]" à¦ªà§\83ষà§\8dঠাà¦\9fà§\8b [[Special:Watchlist|à¦\86পà§\8bনাৰ à¦²à¦\95à§\8dষà§\8dয-তালিà¦\95া]]ৰ à¦ªà§°à¦¾ à¦\86à¦\81তৰোৱা হৈছে ।',
 'watch' => 'চকু ৰাখক',
 'watchthispage' => 'এই পৃষ্ঠাটো লক্ষ্য কৰক',
 'unwatch' => 'চকু দিব নালাগে',
 'unwatchthispage' => 'চকু দিয়া বন্ধ কৰক',
-'notanarticle' => 'বিষয়বসà§\8dতà§\81 পৃষ্ঠা নহয়',
+'notanarticle' => 'সমল পৃষ্ঠা নহয়',
 'notvisiblerev' => 'অন্য কোনো সদস্যই কৰা সংশোধনী বিলোপ কৰা হৈছে',
-'watchlist-details' => 'আলোচনা পৃষ্ঠা সমূহ লেখত নধৰি {{PLURAL:$1|$1 খন পৃষ্ঠা|$1 খন পৃষ্ঠা}} আপোনাৰ লক্ষ্য-তালিকাত আছে ।',
+'watchlist-details' => 'আলোচনা পৃষ্ঠাসমূহ লেখত নধৰি {{PLURAL:$1|$1 টা পৃষ্ঠা}} আপোনাৰ লক্ষ্য-তালিকাত আছে ।',
 'wlheader-enotif' => 'ইমেইল জাননী সক্ৰিয় কৰা হৈছে।',
 'wlheader-showupdated' => "আপোনাৰ শেষ পৰিদৰ্শনৰ পিছত সলনি হোৱা পৃষ্ঠাসমূহ '''গাঢ়''' আখৰত দেখুওৱা হৈছে।",
 'watchmethod-recent' => 'লক্ষ্য কৰা পৃষ্ঠাসমূহ শেহতীয়া সম্পাদনাৰ বাবে পৰীক্ষা কৰা হৈছে',
@@ -2295,19 +2327,18 @@ $PAGEINTRO $NEWPAGE
 মেইল: $PAGEEDITOR_EMAIL
 ৱিকি: $PAGEEDITOR_WIKI
 
-আপুনি এই পৃষ্ঠাখন নোচোৱালৈকে আন সালসলনিৰ কোনো জাননী দিয়া নহ’ব।
-আপুনি আপোনাৰ লক্ষ্য-তালিকাৰ পৃষ্ঠাবোৰৰ জাননী ফ্লেগ পূৰ্বৰ অৱস্থালৈও ঘূৰাই নিব পাৰে ।
+আপুনি এই পৃষ্ঠাটো প্ৰৱেশ কৰি নোচোৱালৈকে আন সালসলনিৰ কোনো জাননী দিয়া নহ’ব। আপুনি আপোনাৰ লক্ষ্য-তালিকাৰ পৃষ্ঠাবোৰৰ জাননী ফ্লেগ পূৰ্বৰ অৱস্থালৈও ঘূৰাই নিব পাৰে ।
 
 আপোনাৰ {{SITENAME}} জাননী ব্যৱস্থা
 
 --
-à¦\86পà§\8bনাৰ à¦\87-মà§\87à¦\87ল à¦\9cাননà§\80 à¦\9bà§\87à¦\9fিà¦\82 à¦¸à¦²à¦¨à¦¿ à¦\95ৰিবলà§\88 à¦\8fà¦\87à¦\96ন à¦\9aাà¦\93à¦\95
+আপোনাৰ ই-মেইল জাননী ছেটিং সলনি কৰিবলৈ চাওক
 {{canonicalurl:{{#special:Preferences}}}}
 
-à¦\86পà§\8bনাৰ à¦²à¦\95à§\8dষà§\8dয-তালিà¦\95াৰ à¦\9bà§\87à¦\9fিà¦\82 à¦¸à¦²à¦¨à¦¿ à¦\95ৰিবলà§\88 à¦\8fà¦\87à¦\96ন à¦\9aাà¦\93à¦\95
+আপোনাৰ লক্ষ্য-তালিকাৰ ছেটিং সলনি কৰিবলৈ চাওক
 {{canonicalurl:{{#special:EditWatchlist}}}}
 
-à¦\86পà§\8bনাৰ à¦²à¦\95à§\8dষà§\8dয-তালিà¦\95াৰ à¦ªà§°à¦¾ à¦ªà§\83ষà§\8dঠা à¦¬à¦¿à¦²à§\8bপ à¦\95ৰিবলà§\88 à¦\8fà¦\87à¦\96ন à¦\9aাà¦\93à¦\95
+আপোনাৰ লক্ষ্য-তালিকাৰ পৰা পৃষ্ঠা বিলোপ কৰিবলৈ চাওক
 $UNWATCHURL
 
 প্ৰতিক্ৰিয়া আৰু অধিক সহযোগিতাৰ বাবে:
@@ -2321,7 +2352,7 @@ $UNWATCHURL
 'excontent' => 'বিষয়বস্তু আছিল: "$1"',
 'excontentauthor' => 'বিষয়বস্তু আছিল: "$1" (আৰু একমাত্ৰ অৱদানকাৰী আছিল "[[Special:Contributions/$2|$2]]")',
 'exbeforeblank' => 'খালী কৰাৰ আগেয়ে বিষয়বস্তু আছিল: $1',
-'exblank' => 'পà§\83ষà§\8dঠা à¦\96ালà§\80 আছিল',
+'exblank' => 'পà§\83ষà§\8dঠা à¦\96ালি আছিল',
 'delete-confirm' => '"$1" বিলোপ কৰক',
 'delete-legend' => 'বিলোপ কৰক',
 'historywarning' => "'''সাৱধান:''' আপুনি বিলোপ কৰিব বিচৰা পৃষ্ঠাখনৰ ইতিহাসত প্ৰায় {{PLURAL:$1|সংস্কৰণ|সংস্কৰণ}} আছে:",
@@ -2338,10 +2369,12 @@ $UNWATCHURL
 'deletecomment' => 'কাৰণ:',
 'deleteotherreason' => 'আন/অতিৰিক্ত কাৰণ:',
 'deletereasonotherlist' => 'আন কাৰণ:',
-'deletereason-dropdown' => '* অৱলুপ্তিৰ সাধাৰণ কাৰণসমূহ
-** লেখকৰ অনুৰোধ
+'deletereason-dropdown' => '* বিলোপনৰ সাধাৰণ কাৰণসমূহ
+** স্পাম
+** অসভ্যালি
 ** কপিৰাইট উলঙ্ঘন
-** অসভ্যালি',
+** লেখকৰ অনুৰোধ
+** ভঙা পুনঃনিৰ্দেশনা',
 'delete-edit-reasonlist' => 'অপসাৰণ কৰা কাৰণ সম্পাদনা কৰক',
 'delete-toobig' => 'এই পৃষ্ঠাখনৰ সম্পাদনা ইতিহাস অতি দীঘল, $1 {{PLURAL:$1|টা সংশোধনৰো|টা সংশোধনৰো}} বেছি ।
 {{SITENAME}}ৰ আকস্মিক ক্ষতি ৰোধ কৰিবলৈ এনে পৃষ্ঠাৰ ইতিহাস বিলোপ কৰাত সীমাবদ্ধতা আৰোপ কৰা হৈছে ।',
@@ -2363,7 +2396,7 @@ $UNWATCHURL
 [[User:$3|$3]] ([[User talk:$3|আলোচনা]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]])ই এই পৃষ্ঠাৰ শেষ সম্পাদনা কৰিছিল ।",
 'editcomment' => "সম্পাদনাৰ সাৰাংশ আছিল: \"''\$1''\"।",
 'revertpage' => '[[Special:Contributions/$2|$2]] ([[User talk:$2|কথা-বতৰা]])ৰ সম্পাদনাসমূহ [[User:$1|$1]]য়ে কৰা শেষ সংশোধনলৈ ঘূৰাই নিয়া হৈছে ।',
-'revertpage-nouser' => '(সদস্যনাম বিলোপিত) য়ে কৰা সম্পাদনা [[User:$1|$1]] য়ে কৰা শেষ সংশোধনীলৈ ঘূৰাই নিয়া হৈছে ।',
+'revertpage-nouser' => 'এজন গোপন ব্যৱহাৰকাৰীয়ে কৰা সম্পাদনা {{GENDER:$1|[[User:$1|$1]]}}-য়ে কৰা শেষ সংশোধনীলৈ ঘূৰাই নিয়া হৈছে।',
 'rollback-success' => '$1 ৰ সম্পাদনাসমূহ পূৰ্বৰ অৱস্থালৈ ঘূৰাই নিয়া হৈছে;
 পৃষ্ঠাখন $2 য়ে কৰা শেষ সংশোধনীলৈ ঘূৰাই নিয়া হৈছে ।',
 
@@ -2532,7 +2565,7 @@ $1',
 'sp-contributions-submit' => 'সন্ধান কৰক',
 
 # What links here
-'whatlinkshere' => 'à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠা à¦¬à§\8dযৱহাৰ à¦\95ৰিà¦\9bà§\87...',
+'whatlinkshere' => 'à¦\87য়ালà§\88 à¦¥à¦\95া à¦¸à¦\82যà§\8bà¦\97সমà§\82হ',
 'whatlinkshere-title' => '"$1"লৈ সংযোজিত পৃষ্ঠাসমূহ',
 'whatlinkshere-page' => 'পৃষ্ঠা:',
 'linkshere' => "এই পৃষ্ঠাটো '''[[:$1]]''' ৰ লগত সংযোজিত:",
@@ -2668,6 +2701,7 @@ $1ৰ অৱৰোধৰ কাৰণ: "$2"',
 'sorbsreason' => '{{SITENAME}}ত ব্যৱহাৰ কৰা DNSBLত আপোনাৰ আই.পি. ঠিকনা মুক্ত প্ৰক্সী হিছাপে তালিকাভুক্ত হৈ আছে ।',
 'sorbs_create_account_reason' => '{{SITENAME}}ত ব্যৱহাৰ কৰা DNSBLত আপোনাৰ আই.পি. ঠিকনা মুক্ত প্ৰক্সী হিছাপে তালিকাভুক্ত হৈ আছে ।
 আপুনি একাউণ্ট সৃষ্টি কৰিব নোৱাৰে',
+'xffblockreason' => "X-Forwarded-For header-ত থকা আপোনাৰ বা আপুনি ব্যৱহাৰ কৰি থকা প্ৰক্সী চাৰ্ভাৰৰ এটা আই পি ঠিকনা বাৰণ কৰা হৈছে। বাৰণ কৰাৰ কাৰণ হ'ল: $1",
 'cant-see-hidden-user' => 'আপুনি বাৰণ কৰিব বিচৰা সদস্যজনক ইতিমধ্যেই বাৰণ কৰি গোপন কৰা হৈছে ।
 যিহেতু আপোনাৰ সদস্যগোপনতা অধিকাৰ নাই, আপুনি সদস্যজনৰ প্ৰতিবন্ধক চাব বা সম্পাদনা কৰিব নোৱাৰে ।',
 'ipbblocked' => 'আপুনি আন সদস্যক অৱৰোধ কৰিব বা আঁতৰাব নোৱাৰে, কাৰণ আপুনি নিজেই বাধাপ্ৰাপ্ত অৱস্থাত আছে',
@@ -2704,11 +2738,11 @@ $1ৰ অৱৰোধৰ কাৰণ: "$2"',
 যদি এইটো কৰিব নিবিচাৰে তেনেহ'লে  [[Special:DoubleRedirects|দ্বি-পুনৰ্নিৰ্দেশনাসমূহ]] বা [[Special:BrokenRedirects|ভঙা পুনৰ্নিৰ্দেশনাসমূহ]] বাছনি কৰে যেন।
 সকলো সংযোগ সঠিক দিশলৈ পোনাৱাৰ দায়িত্ব আপোনাৰ।
 
-মন à¦\95ৰিব à¦¯à§\87 à¦ªà§\83ষà§\8dঠাà¦\96ন à¦¸à§\8dথানানà§\8dতৰ à¦\95ৰা '''নহ'ব''' à¦¯à¦¦à¦¿à¦¹à§\87 à¦¨à¦¤à§\81ন à¦¶à¦¿à§°à§\8bনামà¦\9fà§\8bত à¦ªà§\82ৰà§\8dবৰপৰা à¦\8fà¦\96ন à¦ªà§\83ষà§\8dঠা à¦\86à¦\9bà§\87à¦\87, à¦\86ৰà§\81 à¦¯à¦¦à¦¿à¦¹à§\87 à¦ªà§\82ৰà§\8dবৰ à¦ªà§\83ষà§\8dঠাà¦\96ন কোনো পুনৰ্নিৰ্দেশ নহয় আৰু তাৰ কোনো সম্পাদনাৰ পূৰ্বইতিহাস নাই।
-à¦\87য়াৰ à¦\85ৰà§\8dথ à¦\8fয়à§\87 à¦¯à§\87 à¦­à§\81ল à¦¹à¦²à§\87 à¦ªà§\83ষà§\8dঠাà¦\96ন à¦\86à¦\97ৰ à¦ à¦¾à¦\87তà§\87 à¦¥à¦¾à¦\95িব, à¦\86ৰà§\81 à¦\86পà§\81নি à¦ªà§\8dৰà¦\9aলিত à¦ªà§\83ষà§\8dঠা à¦\8fà¦\96নà¦\95 à¦\86ন à¦ªà§\83ষà§\8dঠা à¦\8fà¦\96নà§\87ৰে সলনি কৰিব নোৱাৰে।
+মন à¦\95ৰিব à¦¯à§\87 à¦ªà§\83ষà§\8dঠাà¦\9fà§\8b à¦¸à§\8dথানানà§\8dতৰ à¦\95ৰা '''নহ'ব''' à¦¯à¦¦à¦¿à¦¹à§\87 à¦¨à¦¤à§\81ন à¦¶à¦¿à§°à§\8bনামà¦\9fà§\8bত à¦ªà§\82ৰà§\8dবৰপৰা à¦\8fà¦\9fা à¦ªà§\83ষà§\8dঠা à¦\86à¦\9bà§\87à¦\87, à¦\86ৰà§\81 à¦¯à¦¦à¦¿à¦¹à§\87 à¦ªà§\82ৰà§\8dবৰ à¦ªà§\83ষà§\8dঠাà¦\9fà§\8b কোনো পুনৰ্নিৰ্দেশ নহয় আৰু তাৰ কোনো সম্পাদনাৰ পূৰ্বইতিহাস নাই।
+à¦\87য়াৰ à¦\85ৰà§\8dথ à¦\8fয়à§\87 à¦¯à§\87 à¦­à§\81ল à¦¹à¦²à§\87 à¦ªà§\83ষà§\8dঠাà¦\9fà§\8b à¦\86à¦\97ৰ à¦ à¦¾à¦\87তà§\87 à¦¥à¦¾à¦\95িব, à¦\86ৰà§\81 à¦\86পà§\81নি à¦ªà§\8dৰà¦\9aলিত à¦ªà§\83ষà§\8dঠা à¦\8fà¦\9fাà¦\95 à¦\86ন à¦ªà§\83ষà§\8dঠা à¦\8fà¦\9fাৰে সলনি কৰিব নোৱাৰে।
 
 '''সতৰ্কবাণী !'''
-à¦\9cনপà§\8dৰিয় à¦ªà§\83ষà§\8dঠা à¦\8fà¦\96নৰ বাবে এয়া এক ডাঙৰ আৰু অনাকাংক্ষিত সাল-সলনি হ’ব পাৰে;
+à¦\9cনপà§\8dৰিয় à¦ªà§\83ষà§\8dঠা à¦\8fà¦\9fাৰ বাবে এয়া এক ডাঙৰ আৰু অনাকাংক্ষিত সাল-সলনি হ’ব পাৰে;
 আগবঢ়াৰ পূৰ্বে এই কাৰ্যৰ পৰিণাম ভালদৰে বিবেচনা কৰি লয় যেন।",
 'movepagetext-noredirectfixer' => "তলৰ প্ৰপত্ৰ ব্যৱহাৰ কৰিলে এই পৃষ্ঠাৰ শিৰোনামা সলনি হ'ব, লগতে সমগ্ৰ ইতিহাস নতুন শিৰোনামালৈ স্থানান্তৰ কৰা হ'ব।
 পুৰণা শিৰোনামাটো নতুন শিৰোনামালৈ এটা পুনৰ্নিৰ্দেশনা হৈ ৰ'ব।
@@ -2716,16 +2750,16 @@ $1ৰ অৱৰোধৰ কাৰণ: "$2"',
 সকলো সংযোগে যাতে সঠিক দিশলৈ পোনায়, সেয়া লক্ষ্য কৰা দায়িত্ব আপোনাৰ।
 
 মন কৰিব যে নতুন শিৰোনামাতো যদি প্ৰচলিত, এই পৃষ্ঠা নতুন শিৰোনামালৈ সলনি কৰা '''নহ'ব''' যদিহে সেই পৃষ্ঠা খালী বা কোনো পুনৰ্নিৰ্দেশনৰ পূৰ্ব ইতিহাস নাই।
-à¦\87য়াৰ à¦\85ৰà§\8dথ à¦\8fয়à§\87 à¦¯à§\87 à¦­à§\81ল à¦¹à¦²à§\87 à¦ªà§\83ষà§\8dঠাà¦\96ন à¦\86à¦\97ৰ à¦ à¦¾à¦\87তà§\87 à¦¥à¦¾à¦\95িব, à¦\86ৰà§\81 à¦\86পà§\81নি à¦ªà§\8dৰà¦\9aলিত à¦ªà§\83ষà§\8dঠা à¦\8fà¦\96নক আন পৃষ্ঠা এখনেৰে সলনি কৰিব নোৱাৰে।
+à¦\87য়াৰ à¦\85ৰà§\8dথ à¦\8fয়à§\87 à¦¯à§\87 à¦­à§\81ল à¦¹à¦²à§\87 à¦ªà§\83ষà§\8dঠাà¦\9fà§\8b à¦\86à¦\97ৰ à¦ à¦¾à¦\87তà§\87 à¦¥à¦¾à¦\95িব, à¦\86ৰà§\81 à¦\86পà§\81নি à¦ªà§\8dৰà¦\9aলিত à¦ªà§\83ষà§\8dঠা à¦\8fà¦\9fাক আন পৃষ্ঠা এখনেৰে সলনি কৰিব নোৱাৰে।
 
 '''সতৰ্কবাণী !'''
-à¦\9cনপà§\8dৰিয় à¦ªà§\83ষà§\8dঠা à¦\8fà¦\96নৰ বাবে এয়া এক ডাঙৰ আৰু অকানাংক্ষিত সাল-সলনি হ'ব পাৰে;
+à¦\9cনপà§\8dৰিয় à¦ªà§\83ষà§\8dঠা à¦\8fà¦\9fাৰ বাবে এয়া এক ডাঙৰ আৰু অকানাংক্ষিত সাল-সলনি হ'ব পাৰে;
 এই কাৰ্য্যৰ পৰিণাম ভালদৰে বিবেচনা কৰি লয় যেন।",
 'movepagetalktext' => "পৃষ্ঠাখনৰ লগতে সংশ্লিষ্ট আলোচনা পৃষ্ঠাখনো স্বয়ংক্ৰিয়ভাৱে স্থানান্তৰ হ’ব; এনে নহয় '''যদিহে:'''
-*নতà§\81ন à¦¶à¦¿à§°à§\8bনামাৰ à¦\85ধà§\80নত à¦\8fà¦\96ন à¦\96ালà§\80 নোহোৱা আলোচনা পৃষ্ঠা ইতিমধ্যেই থাকে, বা
+*নতà§\81ন à¦¶à¦¿à§°à§\8bনামাৰ à¦\85ধà§\80নত à¦\8fà¦\9fা à¦\96ালি নোহোৱা আলোচনা পৃষ্ঠা ইতিমধ্যেই থাকে, বা
 *আপুনি তলৰ ঘৰটো অচিহ্নিত কৰে ।
 
-তà§\87নà§\87 à¦\95à§\8dষà§\87তà§\8dৰত à¦\86পà§\81নি à¦\86পà§\81নি à¦\87à¦\9aà§\8dà¦\9bা à¦\95ৰিলà§\87 à¦¨à¦¿à¦\9c à¦¹à¦¾à¦¤à§\87 à¦ªà§\83ষà§\8dঠাà¦\96ন স্থানান্তৰ বা একত্ৰীকৰণ কৰিব পাৰে ।",
+তà§\87নà§\87 à¦\95à§\8dষà§\87তà§\8dৰত à¦\86পà§\81নি à¦\86পà§\81নি à¦\87à¦\9aà§\8dà¦\9bা à¦\95ৰিলà§\87 à¦¨à¦¿à¦\9c à¦¹à¦¾à¦¤à§\87 à¦ªà§\83ষà§\8dঠাà¦\9fà§\8b স্থানান্তৰ বা একত্ৰীকৰণ কৰিব পাৰে ।",
 'movearticle' => 'পৃষ্ঠা স্থানান্তৰ কৰক:',
 'moveuserpage-warning' => "'''সতৰ্কবাণী:''' আপুনি এখন সদস্যপৃষ্ঠা স্থানান্তৰ কৰিবলৈ বিছাৰিছে । অনুগ্ৰহ কৰি মন কৰক যে কেৱল সদস্যপৃষ্ঠাখনহে স্থানান্তৰ হ’ব আৰু সদস্যজনৰ পুনঃনামাকৰণ নহ’ব ।",
 'movenologintext' => 'পৃষ্ঠা স্থানান্তৰ কৰিবলৈ আপুনি ভুক্ত সদস্য হৈ [[Special:UserLogin|প্ৰৱেশ]] কৰিব লাগিব ।',
@@ -2742,7 +2776,7 @@ $1ৰ অৱৰোধৰ কাৰণ: "$2"',
 'movepage-moved-noredirect' => 'পুনৰ্নিৰ্দেশনা সৃষ্টি কৰা নিবাৰণ কৰা হৈছে ।',
 'articleexists' => 'সেই নামৰ পৃষ্ঠা এটা আগৰ পৰাই আছে, বা সেই নামতো অযোগ্য।
 বেলেগ নাম এটা বাছি লওক।',
-'cantmove-titleprotected' => 'আপুনি ইয়ালৈ কোনো পৃষ্ঠা স্থানান্তৰ কৰিব নোৱাৰে, কাৰণ এই নতুন শিৰোনামা সৃষ্টিৰ পৰা সুৰক্ষিত ।',
+'cantmove-titleprotected' => 'আপুনি ইয়ালৈ কোনো পৃষ্ঠা স্থানান্তৰ কৰিব নোৱাৰে, কাৰণ এই নতুন শিৰোনামা সৃষ্টিৰ পৰা সুৰক্ষিত।',
 'movetalk' => 'সংলগ্ন বাৰ্তা পৃষ্ঠা স্থানান্তৰ কৰক',
 'move-subpages' => 'উপ-পৃষ্ঠাসমূহ স্থানান্তৰ কৰক ($1লৈ)',
 'move-talk-subpages' => 'আলোচনা পৃষ্ঠাৰ উপ-পৃষ্ঠাসমূহ স্থানান্তৰ কৰক ($1-লৈ)',
@@ -2858,7 +2892,7 @@ $2',
 'import-comment' => 'মন্তব্য:',
 'importtext' => "অনুগ্ৰহ কৰি [[Special:Export|ৰপ্তানি সুবিধা]] ব্যৱহাৰ কৰি উৎস ৱিকিৰ পৰা ফাইলটো ৰপ্তানি কৰক।
 আপোনাৰ কম্পিউটাৰত সাঁচি ৰাখক আৰু ইয়াত আপল'ড কৰক।",
-'importstart' => 'পà§\83ষà§\8dঠা à¦\86মদানি à¦\95ৰা à¦¹à§\88 à¦¹à§\88ছে...',
+'importstart' => 'পà§\83ষà§\8dঠা à¦\86মদানি à¦\95ৰা à¦¹à§\88 à¦\86ছে...',
 'import-revision-count' => '$1 {{PLURAL:$1|টা সংশোধন|টা সংশোধন}}',
 'importnopages' => 'আমদানি কৰিবলৈ কোনো পৃষ্ঠা নাই ।',
 'imported-log-entries' => "$1 {{PLURAL:$1|টা অভিলেখ ভৰ্তি|টা অভিলেখ ভৰ্তি}} আমদানি কৰা হ'ল ।",
@@ -2960,7 +2994,7 @@ $2',
 'tooltip-ca-nstab-main' => 'এই ৱিকিৰ সূচী চাওক',
 'tooltip-ca-nstab-user' => 'সভ্যৰ ব্যক্তিগত পৃষ্ঠালৈ',
 'tooltip-ca-nstab-media' => 'মিডিয়া পৃষ্ঠাখন চাওক',
-'tooltip-ca-nstab-special' => 'à¦\8fà¦\87à¦\96ন à¦\8fà¦\96ন বিশেষ পৃষ্ঠা, আপুনি সম্পাদনা কৰিব নোৱাৰে',
+'tooltip-ca-nstab-special' => 'à¦\8fà¦\87à¦\9fà§\8b à¦\8fà¦\9fা বিশেষ পৃষ্ঠা, আপুনি সম্পাদনা কৰিব নোৱাৰে',
 'tooltip-ca-nstab-project' => 'প্ৰকল্প পৃষ্ঠা চাওক',
 'tooltip-ca-nstab-image' => 'নথিৰ পৃষ্ঠা চাওক',
 'tooltip-ca-nstab-mediawiki' => 'প্ৰণালী বাৰ্তা চাওক',
@@ -3021,13 +3055,14 @@ $2',
 'pageinfo-length' => 'পৃষ্ঠাৰ দৈৰ্ঘ্য (বাইটত)',
 'pageinfo-article-id' => 'পৃষ্ঠা ID',
 'pageinfo-language' => 'পৃষ্ঠাত সন্নিবিষ্ট ভাষা',
-'pageinfo-robot-policy' => 'সন্ধান ইঞ্জিনৰ স্থিতি',
-'pageinfo-robot-index' => 'ইনডেক্স উপযোগী',
-'pageinfo-robot-noindex' => 'ইনডেক্সৰ অনুপযোগী',
+'pageinfo-content-model' => 'পৃষ্ঠাৰ সমলৰ মডেল',
+'pageinfo-robot-policy' => "ৰ'ব'টৰ জৰিয়তে ইন্‌ডেক্সিং কৰা হৈছে",
+'pageinfo-robot-index' => 'অনুমোদিত',
+'pageinfo-robot-noindex' => 'অনুমোদন অগ্ৰাহ্য',
 'pageinfo-views' => 'দৰ্শনৰ সংখ্যা',
 'pageinfo-watchers' => 'পৃষ্ঠা নিৰীক্ষকৰ সংখ্যা',
 'pageinfo-few-watchers' => '$1 {{PLURAL:$1|তকৈ কম নিৰীক্ষক}}',
-'pageinfo-redirects-name' => 'পà§\83ষà§\8dঠালà§\88 à¦¥à¦\95া à¦ªà§\81নৰà§\8dনিৰà§\8dদà§\87শ',
+'pageinfo-redirects-name' => 'à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠালà§\88 à¦¥à¦\95া à¦ªà§\81নৰà§\8dনিৰà§\8dদà§\87শৰ à¦¸à¦\82à¦\96à§\8dযা',
 'pageinfo-subpages-name' => 'এই পৃষ্ঠাৰ উপপৃষ্ঠাসমূহ',
 'pageinfo-subpages-value' => '$1 ($2 {{PLURAL:$2|পুনৰ্নিৰ্দেশ|পুনৰ্নিৰ্দেশসমূহ}}; $3 {{PLURAL:$3|অপুনৰ্নিৰ্দেশ নাই|অপুনৰ্নিৰ্দেশসমূহ}})',
 'pageinfo-firstuser' => 'পৃষ্ঠাখনৰ সৃষ্টিকৰ্তা',
@@ -3363,7 +3398,7 @@ Any subsequent links on the same line are considered to be exceptions, i.e. page
 'exif-compression-4' => "CCITT দল ৪ ফেক্স এনক'ডিং",
 
 'exif-copyrighted-true' => 'কপিৰাইট আছে',
-'exif-copyrighted-false' => "ৰাজহুৱা ড'মেইন",
+'exif-copyrighted-false' => 'কপিৰাইট সংক্ৰান্ত তথ্য নাই',
 
 'exif-unknowndate' => 'অজ্ঞাত তাৰিখ',
 
@@ -3624,14 +3659,14 @@ $5
 
 এই নিশ্চিতকৰণ সংকেতৰ ম্যাদ $4ত উকলিব ।',
 'confirmemail_body_set' => 'কোনোবাই (সম্ভৱতঃ আপুনি) আই.পি. ঠিকনা $1ৰ পৰা {{SITENAME}}ত
-একাউণ্ট "$2"ৰ ই-মেইল ঠিকনা এইটো প্ৰদান কৰিছে ।
+একাউণ্ট "$2"ৰ ইমেইল ঠিকনা এইটো প্ৰদান কৰিছে ।
 
-à¦\8fà¦\87 à¦\8fà¦\95াà¦\89ণà§\8dà¦\9f à¦\86পà§\8bনাৰ à¦¹à¦¯à¦¼à¦¨à§\87 à¦¨à¦¹à¦¯à¦¼ à¦¨à¦¿à¦¶à§\8dà¦\9aিত à¦\95ৰাৰ à¦¬à¦¾à¦¬à§\87 à¦\86ৰà§\81 {{SITENAME}}ত à¦\87-মà§\87à¦\87ল à¦¬à§\88শিষà§\8dà¦\9fসমà§\82হ à¦ªà§\81নৰ à¦¸à¦\95à§\8dৰিয় à¦\95ৰাৰ à¦¬à¦¾à¦¬à§\87
-à¦\86পà§\8bনাৰ à¦¬à§\8dৰাà¦\89à¦\9cাৰত à¦\8fà¦\87 à¦¸à¦\82যà§\8bà¦\97à¦\9fà§\8b à¦\96à§\81লক:
+এই একাউণ্ট আপোনাৰ হয়নে নহয় নিশ্চিত কৰাৰ বাবে আৰু {{SITENAME}}ত ই-মেইল বৈশিষ্টসমূহ সক্ৰিয় কৰাৰ বাবে
+à¦\86পà§\8bনাৰ à¦¬à§\8dৰাà¦\89à¦\9cাৰত à¦\8fà¦\87 à¦¸à¦\82যà§\8bà¦\97à¦\9fà§\8b à¦\96à§\8bলক:
 
 $3
 
-যদি একাউণ্টটো আপোনাৰ *নহয়*, তেন্তে ই-মেইল ঠিকনা নিশ্চিতকৰণ বাতিলৰ বাবে
+যদি একাউণ্টটো আপোনাৰ *নহয়*, তেন্তে ইমেইল ঠিকনা নিশ্চিতকৰণ বাতিলৰ বাবে
 এই সংযোগটো চাওক:
 
 $5
@@ -3671,11 +3706,15 @@ $5
 'imgmultigo' => 'যাওক',
 'imgmultigoto' => '$1 পৃষ্ঠালৈ যাওক',
 
+# Language selector for translatable SVGs
+'img-lang-default' => '(ডিফল্ট ভাষা)',
+'img-lang-go' => 'যাওক',
+
 # Table pager
 'ascending_abbrev' => 'আৰোহণ',
 'descending_abbrev' => 'অৱতৰণ',
 'table_pager_next' => 'পৰৱৰ্তী পৃষ্ঠা',
-'table_pager_prev' => 'পà§\82ৰà§\8dববৰ্তী পৃষ্ঠা',
+'table_pager_prev' => 'পà§\82ৰà§\8dবৱৰ্তী পৃষ্ঠা',
 'table_pager_first' => 'প্ৰথম পৃষ্ঠা',
 'table_pager_last' => 'শেষ পৃষ্ঠা',
 'table_pager_limit' => 'প্ৰতি পৃষ্ঠাত $1 টা বিষয়বস্তু দেখুৱাওক',
@@ -3754,6 +3793,7 @@ $5
 'version-license' => 'অনুজ্ঞাপত্ৰ',
 'version-poweredby-credits' => "এই ৱিকি '''[https://www.mediawiki.org/ মিডিয়াৱিকিৰ]''' দ্বাৰা প্ৰচলিত , কপিৰাইট © ২০০১-$1 $2.",
 'version-poweredby-others' => 'অন্য',
+'version-poweredby-translators' => 'translatewiki.net অনুবাদকসকল',
 'version-credits-summary' => 'আমি নিম্নোক্ত ব্যক্তিসকলক তেওঁলোকে [[Special:Version|মিডিয়াৱিকি]]লৈ দিয়া দিয়া বৰঙনিৰ বাবে চিনাকী  কৰিব বিচাৰিছো।',
 'version-license-info' => "মিডিয়াৱিকি এটা বিনামূলীয়া চফ্টৱেৰ; আপুনি Free Software Foundation -ৰ দ্বাৰা প্ৰকাশিত GNU General Public License -ৰ চুক্তিসমূহৰ অন্তৰ্গত ইয়াক পুনৰ বিতৰণ কৰিব পাৰিব অথবা সলনি কৰিব পাৰিব; হয়তো অনুজ্ঞাপত্ৰৰ সংস্কৰণ ২ 
 অথবা (আপোনাৰ বিকল্পত) যিকোনো পৰৱৰ্তী সংস্কৰণ।
@@ -3770,13 +3810,15 @@ $5
 'version-entrypoints-header-url' => 'ইউআৰএল',
 
 # Special:Redirect
-'redirect' => 'ফাইল, সদস্য, বা সংশোধন আই ডিৰে পুনঃনিৰ্দেশ',
-'redirect-legend' => 'এটা ফাইল বা এখন এখন পৃষ্ঠালৈ পুনঃনিৰ্দেশ',
-'redirect-summary' => 'এই বিশেষ পৃষ্ঠাটোৱে আপোনাক পুনঃনির্দেশিত কৰিছে অন্য এটা নথিপত্রলৈ (নথিপত্রৰ নাম), এটা পৃষ্ঠালৈ (পৃষ্ঠাৰ নাম), অথবা অন্য সদস্যৰ পৃষ্ঠালৈ(সংখ্যাৰে লিখা সদস্যৰ আইডি) ।',
+'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' => 'চাওক:',
 'redirect-value' => 'মূল্য:',
 'redirect-user' => 'সদস্য আই ডি',
+'redirect-page' => 'পৃষ্ঠা ID',
 'redirect-revision' => 'পৃষ্ঠা সংশোধন',
 'redirect-file' => 'ফাইলৰ নাম',
 'redirect-not-exists' => "মূল্য পোৱা নগ'ল",
@@ -3794,9 +3836,9 @@ $5
 
 # Special:SpecialPages
 'specialpages' => 'বিশেষ পৃষ্ঠাসমূহ',
+'specialpages-note-top' => 'ব্যাখ্যা',
 'specialpages-note' => '* সাধাৰণ বিশেষ পৃষ্ঠাসমূহ।
-* <span class="mw-specialpagerestricted">সীমাবদ্ধ বিশেষ পৃষ্ঠাসমূহ।</span>
-* <span class="mw-specialpagecached">কেশ্ব কৰা বিশেষ পৃষ্ঠাসমূহ (অপ্ৰচলিতও হ\'ব পাৰে)।</span>',
+* <span class="mw-specialpagerestricted">সীমাবদ্ধ বিশেষ পৃষ্ঠাসমূহ।</span>',
 'specialpages-group-maintenance' => 'তত্বাৱধানৰ কাৰ্যবিৱৰণীসমূহ',
 'specialpages-group-other' => 'অন্যান্য বিশেষ পৃষ্ঠাসমূহ',
 'specialpages-group-login' => 'প্ৰৱেশ/একাউণ্ট সৃষ্টি কৰক',
@@ -3812,7 +3854,7 @@ $5
 
 # Special:BlankPage
 'blankpage' => 'উকা পৃষ্ঠা',
-'intentionallyblankpage' => 'à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠা à¦\87à¦\9aà§\8dà¦\9bাà¦\95à§\83তভাৱà§\87 à¦\96ালà§\80 ৰখা হৈছে ।',
+'intentionallyblankpage' => 'à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠা à¦\87à¦\9aà§\8dà¦\9bাà¦\95à§\83তভাৱà§\87 à¦\96ালি ৰখা হৈছে ।',
 
 # External image whitelist
 'external_image_whitelist' => " #এই শাৰী যেনেকৈ আছে তেনেকৈয়ে ৰাখক<pre>
@@ -3828,8 +3870,9 @@ $5
 'tags' => 'সালসলনি টেগসমূহ চাওক',
 'tag-filter' => '[[Special:Tags|টেগ]] ছেকনী:',
 'tag-filter-submit' => 'সংশোধন',
+'tag-list-wrapper' => '([[Special:Tags|{{PLURAL:$1|টেগ্‌}}]]: $2)',
 'tags-title' => 'টেগসমূহ',
-'tags-intro' => 'ছফ্টৱেৰে সম্পাদনা চিহ্নিত কৰিব পৰা টেগসমূহ আৰু সেইবোৰৰ অৰ্থ এই পৃষ্ঠাত তালিকাভুক্ত কৰা হৈছে ।',
+'tags-intro' => 'ছফ্টৱেৰে সম্পাদনা চিহ্নিত কৰিব পৰা টেগসমূহ আৰু সেইবোৰৰ অৰ্থ এই পৃষ্ঠাত তালিকাভুক্ত কৰা হৈছে।',
 'tags-tag' => 'টেগ নাম',
 'tags-display-header' => 'পৰিৱৰ্তন তালিকাসমূহত ৰূপ',
 'tags-description-header' => 'অৰ্থৰ পূৰ্ণ বৰ্ণনা',
@@ -3862,7 +3905,7 @@ $5
 'dberr-cachederror' => "এইখন অনুৰোধ কৰা পৃষ্ঠাৰ কেচ্‌ড লিপি, যিখন নবীকৰণ নকৰাও হ'ব পাৰে ।",
 
 # HTML forms
-'htmlform-invalid-input' => 'à¦\86পà§\8bনাৰ à¦\85নà§\8dতৰà§\8dভà§\81à¦\95à§\8dতিত à¦\95িà¦\9bà§\81মান সমস্যা হৈছে',
+'htmlform-invalid-input' => 'à¦\86পà§\8bনাৰ à¦\95িà¦\9bà§\81মান à¦\85নà§\8dতৰà§\8dভà§\81à¦\95à§\8dতিত সমস্যা হৈছে',
 'htmlform-select-badoption' => 'আপুনি ধাৰ্য কৰা মান উপযুক্ত বিকল্প নহয়।',
 'htmlform-int-invalid' => 'অপুনি ধাৰ্য কৰা মান অখণ্ড সংখ্যা (integer) নহয়।',
 'htmlform-float-invalid' => 'অপুনি ধাৰ্য কৰা মান সংখ্যা নহয়।',
@@ -3884,7 +3927,7 @@ $5
 'logentry-delete-delete' => " $3 পৃষ্ঠাখন $1ৰদ্বাৰা {{GENDER:$2|বিলোপ কৰা হ'ল}}",
 'logentry-delete-restore' => "$3 পৃষ্ঠাখন $1 ৰদ্বাৰা {{GENDER:$2|পুনৰ্সংৰক্ষণ কৰা হ'ল}}",
 'logentry-delete-event' => '$3: $4 -ত {{PLURAL:$5|এটা লগ ঘটনা|$5 লগ ঘটনাসমূহ}} -ৰ $1 পৰিৱৰ্তন কৰা দৃশ্যমানতা',
-'logentry-delete-revision' => 'পৃষ্ঠা $3: $4ত {{PLURAL:$5|এটা পুনৰীক্ষন|$5 পুনৰীক্ষনসমূহ}}ৰ $1 দৃশ্যমানতা পৰিৱৰ্তন কৰা হ’ল',
+'logentry-delete-revision' => 'পৃষ্ঠা $3ত {{PLURAL:$5|এটা সংশোধন|$5 সংশোধনসমূহ}}ৰ দৃশ্যমানতা $1 {{GENDER:$2|য়ে সলালে}}: $4',
 'logentry-delete-event-legacy' => "$3ত ল'গ ঘটনাসমূহৰ দৃশ্যমানতা $1 {{GENDER:$2|ৰদ্বাৰা সলোৱা হ'ল}}",
 'logentry-delete-revision-legacy' => 'পৃষ্ঠা $3ত পুনৰীক্ষনসমূহৰ $1 দৃশ্যমানতা পৰিৱৰ্তন কৰা হল',
 'logentry-suppress-delete' => '$1 সংকোচিত পৃষ্ঠা $3',
@@ -3945,7 +3988,7 @@ $5
 'api-error-duplicate-archive-popup-title' => 'প্ৰতিলিপি {{PLURAL:$1|ফাইল|ফাইল}} যিসমূহ ইতিমধ্যে বিলোপ কৰা হৈছে।',
 'api-error-duplicate-popup-title' => 'প্ৰতিলিপি {{PLURAL:$1|ফাইল|ফাইলসমূহ}}।',
 'api-error-empty-file' => 'আপুনি দাখিল কৰা ফাইলটো খালী ।',
-'api-error-emptypage' => 'নতà§\81ন, à¦\96ালà§\80 পৃষ্ঠা সৃষ্টি কৰিবলৈ অনুমতি নাই।',
+'api-error-emptypage' => 'নতà§\81ন, à¦\96ালি পৃষ্ঠা সৃষ্টি কৰিবলৈ অনুমতি নাই।',
 'api-error-fetchfileerror' => 'আভ্যন্তৰীণ ত্ৰুটি: ফাইলটো অনাত কিবা সমস্যা হৈছে।',
 'api-error-fileexists-forbidden' => '"$1" নামৰ এখন নথি আগৰ পৰাই উপলদ্ধ আৰু ইয়াৰ পুনৰ লিখন অসম্ভৱ ।',
 'api-error-fileexists-shared-forbidden' => 'উমৈহতীয়া ফাইল ভঁৰালত "$1" নামৰ ফাইল এটা আছেই, ইয়াৰ ওপৰত লিখিব নোৱাৰি।',
@@ -3959,7 +4002,7 @@ $5
 'api-error-illegal-filename' => 'ফাইলৰ এই নামটো গ্ৰহণযোগ্য নহয় ।',
 'api-error-internal-error' => "আভ্যন্তৰীণ ত্ৰুটি: এই ৱিকিত আপোনাৰ আপল'ড প্ৰক্ৰিয়া সমাপনত কিবা সমস্যা হৈছে।",
 'api-error-invalid-file-key' => "আভ্যন্তৰীণ ত্ৰুটি: অস্থায়ী ভঁৰালত ফাইলটো পোৱা নগ'ল।",
-'api-error-missingparam' => 'à¦\86ভà§\8dযনà§\8dতৰà§\80ণ à¦¤à§\8dৰà§\81à¦\9fি: à¦\85নà§\81ৰà§\8bধত à¦ªà§\87ৰামিà¦\9fাৰৰ à¦\95িবা à¦¸à¦®à¦¸à§\8dযা à§°ৈছে।',
+'api-error-missingparam' => 'à¦\86ভà§\8dযনà§\8dতৰà§\80ণ à¦¤à§\8dৰà§\81à¦\9fি: à¦\85নà§\81ৰà§\8bধত à¦ªà¦¾à§°à¦¾à¦®à¦¿à¦\9fাৰৰ à¦\95িবা à¦¸à¦®à¦¸à§\8dযা à¦¹ৈছে।',
 'api-error-missingresult' => "আভ্যন্তৰীণ ত্ৰুটি: অনুলিপি সফল হৈছেনে নাই তাক নিশ্চিত কৰিব পৰা নগ'ল।",
 'api-error-mustbeloggedin' => "ফাইল আপল'ড কৰাৰ আগেয়ে আপুনি প্ৰৱেশ কৰাটো বাধ্যতামূলক ।",
 'api-error-mustbeposted' => 'আভ্যন্তৰীণ ত্ৰুটি: এই অনুৰোধত HTTP POST প্ৰয়োজন।',
@@ -3971,10 +4014,10 @@ $5
 'api-error-publishfailed' => "আভ্যন্তৰীণ ত্ৰুটি: অস্থায়ী ফাইল প্ৰকাশ কৰাত চাৰ্ভাৰ অসমৰ্থ হ'ল।",
 'api-error-timeout' => 'আশা কৰা সময়ৰ ভিতৰত চাৰ্ভাৰটোৱে সঁহাৰি নজনালে।',
 'api-error-unclassified' => 'এক অজ্ঞাত সমস্যাই দেখা দিছে।',
-'api-error-unknown-code' => 'à¦\85à¦\9cà§\8dà¦\9eাত à¦¸à¦®à¦¸à§\8dযা: "$1"।',
+'api-error-unknown-code' => 'à¦\85à¦\9cà§\8dà¦\9eাত à¦¤à§\8dৰà§\81à¦\9fি: "$1"।',
 'api-error-unknown-error' => "আভ্যন্তৰীণ ত্ৰুটি: আপোনাৰ ফাইলটো আপল'ড কৰাত কিবা সমস্যা হৈছে।",
 'api-error-unknown-warning' => 'অজ্ঞাত সাৱধানবাণী: "$1"।',
-'api-error-unknownerror' => 'à¦\85à¦\9cà§\8dà¦\9eাত à¦¸à¦®à¦¸à§\8dযা: "$1"।',
+'api-error-unknownerror' => 'à¦\85à¦\9cà§\8dà¦\9eাত à¦¤à§\8dৰà§\81à¦\9fি: "$1"।',
 'api-error-uploaddisabled' => "এই ৱিকিত আপল'ড নিষ্ক্ৰিয় কৰা হৈছে।",
 'api-error-verification-error' => 'সম্ভৱতঃ এই ফাইলটো ত্ৰুটিপূৰ্ণ বা তাৰ এক্সটেন্‌ছনটো ভুল।',
 
index afbb228..48863b8 100644 (file)
@@ -267,16 +267,16 @@ $messages = array(
 'december-date' => 'Сентябрь $1',
 
 # Categories related messages
-'pagecategories' => '{{PLURAL:$1|Категория|Категория}}',
+'pagecategories' => '{{PLURAL:$1|1=Категория|Категория}}',
 'category_header' => '«$1» категорияһындағы биттәр',
 'subcategories' => 'Эске категориялар',
 'category-media-header' => '«$1» категорияһындағы файлдар',
 'category-empty' => '"Был категория әлегә буш."',
-'hidden-categories' => '{{PLURAL:$1|Йәшерен категория|Йәшерен категориялар}}',
+'hidden-categories' => '{{PLURAL:$1|1=Йәшерен категория|Йәшерен категориялар}}',
 'hidden-category-category' => 'Йәшерен категориялар',
-'category-subcat-count' => '{{PLURAL:$2|Был категорияла тик киләһе эске категория ғына бар.|$2 эске категорияның $1 эске категорияһы күрһәтелгән.}}',
+'category-subcat-count' => '{{PLURAL:$2|1=Был категорияла тик киләһе эске категория ғына бар.|$2 эске категорияның $1 эске категорияһы күрһәтелгән.}}',
 'category-subcat-count-limited' => 'Был категорияла {{PLURAL:$1|$1 эске категория}} бар.',
-'category-article-count' => '{{PLURAL:$2|Был категорияла бер генә бит бар.|Категориялағы $2 биттең $1 бите күрһәтелгән.}}',
+'category-article-count' => '{{PLURAL:$2|1=Был категорияла бер генә бит бар.|Категориялағы $2 биттең $1 бите күрһәтелгән.}}',
 'category-article-count-limited' => 'Был категорияла {{PLURAL:$1|$1 бит}} бар.',
 'category-file-count' => '{{PLURAL:$2|Был категорияла бер генә файл бар.|Категориялағы $2 файлдың {{PLURAL:$1|$1 файлы күрһәтелгән}}.}}',
 'category-file-count-limited' => 'Бу категорияла {{PLURAL:$1|$1 файл}} бар.',
@@ -347,7 +347,7 @@ $messages = array(
 'deletethispage' => 'Был битте юйырға',
 'undeletethispage' => 'Юйылған был битте ҡабат тергеҙеү',
 'undelete_short' => '$1 {{PLURAL:$1|үҙгәртеүҙе}} тергеҙергә',
-'viewdeleted_short' => '{{PLURAL:$1|1 юйылған үҙгәртеүҙе|$1 юйылған үҙгәртеүҙе}} ҡарау',
+'viewdeleted_short' => '{{PLURAL:$1|1=1 юйылған үҙгәртеүҙе|$1 юйылған үҙгәртеүҙе}} ҡарау',
 'protect' => 'Һаҡларға',
 'protect_change' => 'үҙгәртергә',
 'protectthispage' => 'Был битте һаҡларға',
@@ -410,7 +410,7 @@ $1',
 
 'badaccess' => 'Кереү хатаһы',
 'badaccess-group0' => 'Һоратылған ғәмәлде үтәй алмайһығыҙ.',
-'badaccess-groups' => 'Һоратылған ғәмәлде киләһе {{PLURAL:$2|төркөм|төркөмдәр}} ҡулланыусылары ғына башҡара ала: $1.',
+'badaccess-groups' => 'Һоратылған ғәмәлде киләһе {{PLURAL:$2|1=төркөм|төркөмдәр}} ҡулланыусылары ғына башҡара ала: $1.',
 
 'versionrequired' => 'MediaWiki-ның $1 версияһы кәрәкле',
 'versionrequiredtext' => 'Был бит менән эшләү өсөн MediaWiki-ның $1 версияһы кәрәк. [[Special:Version|Ҡулланылған версия тураһында мәғлүмәт битен]] ҡара.',
@@ -419,10 +419,10 @@ $1',
 'pagetitle' => '{{SITENAME}} проектынан',
 'retrievedfrom' => 'Сығанағы — «$1»',
 'youhavenewmessages' => 'Яңы $1 бар ($2).',
-'youhavenewmessagesfromusers' => 'Һеҙгә {{PLURAL:$3|башҡа ҡатнашыусынан|$3 ҡатнашыусынан}} $1 бар ($2).',
+'youhavenewmessagesfromusers' => 'Һеҙгә {{PLURAL:$3|1=башҡа ҡатнашыусынан|$3 ҡатнашыусынан}} $1 бар ($2).',
 'youhavenewmessagesmanyusers' => 'Һеҙгә күп ҡатнашыусынан $1 бар ($2).',
-'newmessageslinkplural' => '{{PLURAL:$1|яңы хәбәр|яңы хәбәр}}',
-'newmessagesdifflinkplural' => 'һуңғы {{PLURAL:$1|үҙгәртеү|үҙгәртеү}}',
+'newmessageslinkplural' => '{{PLURAL:$1|1=яңы хәбәр|яңы хәбәр}}',
+'newmessagesdifflinkplural' => 'һуңғы {{PLURAL:$1|1=үҙгәртеү|үҙгәртеү}}',
 'youhavenewmessagesmulti' => 'Һеҙгә яңы хәбәрҙәр бар: $1',
 'editsection' => 'үҙгәртергә',
 'editold' => 'төҙәтеү',
@@ -437,7 +437,7 @@ $1',
 'collapsible-expand' => 'асырға',
 'thisisdeleted' => 'Ҡарарғамы йәки тергеҙергәме? — $1',
 'viewdeleted' => '$1 ҡарарғамы?',
-'restorelink' => '{{PLURAL:$1|1 юйылған үҙгәртеүҙе|$1 юйылған үҙгәртеүҙе}}',
+'restorelink' => '{{PLURAL:$1|1=1 юйылған үҙгәртеүҙе|$1 юйылған үҙгәртеүҙе}}',
 'feedlinks' => 'Таҫма:',
 'feed-invalid' => 'Хаталы таҫма тибы.',
 'feed-unavailable' => 'Синдикация таҫмаларына ирешеп булмай',
@@ -533,7 +533,7 @@ $1',
 'editinginterface' => "'''Иғтибар.''' Һеҙ программаның арайөҙ тексты булған битте мөхәррирләйһегеҙ.
 Уны үҙгәртеү, башҡа ҡулланыусыларҙын арайөҙ күренешен үҙгәртәсәктер.
 Тәржемә өсөн [//translatewiki.net/wiki/Main_Page?setlang=ba translatewiki.net] адресын, MediaWiki-ны локалләштереү проектын ҡулланыу яҡшыраҡ буласаҡтыр.",
-'cascadeprotected' => 'Был бит үҙгәртеүҙәрҙән һаҡланған, сөнки ул эҙмә-эҙлекле һаҡлау ҡуйылған {{PLURAL:$1|биткә|биттәргә}} керә:
+'cascadeprotected' => 'Был бит үҙгәртеүҙәрҙән һаҡланған, сөнки ул эҙмә-эҙлекле һаҡлау ҡуйылған {{PLURAL:$1|1=биткә|биттәргә}} керә:
 $2',
 'namespaceprotected' => '«$1» исем арауығындағы биттәрҙе мөхәррирләү өсөн хоҡуҡтарығыҙ юҡ.',
 'customcssprotected' => 'Был CSS-битте үҙгәртеү хоҡуғығыҙ юҡ, сөнки унда башҡа ҡулланыусының шәхси көйләүҙәре бар.',
@@ -620,8 +620,8 @@ $2',
 'createacct-another-submit' => 'Тағы бер иҫәп яҙмаһын булдырырға',
 'createacct-benefit-heading' => '{{SITENAME}} һеҙҙең кеүек үк кешеләр тарафынан булдырылған',
 'createacct-benefit-body1' => '{{PLURAL:$1|үҙгәртеү}}',
-'createacct-benefit-body2' => '{{PLURAL:$1|мәҡәлә|мәҡәлә|мәҡәләнең}}',
-'createacct-benefit-body3' => 'һуңғы ваҡытта {{PLURAL:$1|ҡатнашыусы|}}',
+'createacct-benefit-body2' => '{{PLURAL:$1|мәҡәлә|мәҡәләнең|мәҡәлә}}',
+'createacct-benefit-body3' => 'һуңғы ваҡытта {{PLURAL:$1|ҡатнашыусы}}',
 'badretype' => 'Һеҙ кереткән серһүҙҙәр тап килмәй.',
 'userexists' => 'Керетелгән исем ҡулланыла инде.
 Зинһар, башҡа исем һайлағыҙ.',
@@ -659,7 +659,7 @@ $2',
 'blocked-mailpassword' => 'Һеҙҙең IP-адресығыҙҙан мөхәррирләү тыйылған, шул сәбәпле серһүҙ тергеҙеү ғәмәле лә блокланған.',
 'eauthentsent' => 'Күрһәтелгән электрон почта адресына адресты үҙгәртеүҙе раҫлауығыҙ өсөн хат ебәрелде. Хатта был адрес һеҙҙеке булғанын раҫлау өсөн ниндәй ғәмәлдәрҙе үтәү кәрәклеге тураһында мәғлүмәт бар.',
 'throttled-mailpassword' => 'Серһүҙҙе иҫләтеү ғәмәле {{PLURAL:$1|һуңғы $1 сәғәт}} эсенде ҡулланылды инде.
-Насар ниәтле ҡулланыуҙарға ҡаршы, Серһүҙ иҫләтеү ғәмәлен {{PLURAL:$1|сәғәт|$1 сәғәт}} эсендә бер тапҡыр ғына ҡулланырға була.',
+Насар ниәтле ҡулланыуҙарға ҡаршы, Серһүҙ иҫләтеү ғәмәлен {{PLURAL:$1|1=сәғәт|$1 сәғәт}} эсендә бер тапҡыр ғына ҡулланырға була.',
 'mailerror' => 'Хат ебәреү хатаһы: $1',
 'acct_creation_throttle_hit' => 'Һеҙҙең IP-адрестан бер тәүлек эсендә {{PLURAL:$1|$1 иҫәп яҙыуы}} яһалды инде, был һан был ваҡыт аралығы өсөн максимум һан. Шул сәбәпле, был IP-адресына эйә ҡулланыусылар, хәҙерге ваҡытта яңы иҫәп яҙыуы яһай алмайҙар.',
 'emailauthenticated' => 'Электрон почта адресығыҙ раҫланды: $3, $2.',
@@ -722,18 +722,18 @@ $2',
 'passwordreset-email' => 'Электрон почта адресы:',
 'passwordreset-emailtitle' => '{{SITENAME}} иҫәп яҙыуы мәғлүмәттәре',
 'passwordreset-emailtext-ip' => 'Берәү (бәлки һәҙ, $1 IP-адресынан ) {{SITENAME}} ($4) проектындағы иҫәп яҙыуығыҙҙы хәтерләтеүҙе һоратты.
-Киләһе ҡулланыусы {{PLURAL:$3|иҫәп яҙыуы|иҫәп яҙыуҙары}} был электрон почта адресы менән бәйле:
+Киләһе ҡулланыусы {{PLURAL:$3|1=иҫәп яҙыуы|иҫәп яҙыуҙары}} был электрон почта адресы менән бәйле:
 
 $2
 
-Был ваҡытлыса {{PLURAL:$3|серһүҙ|серһүҙҙәр}} {{PLURAL:$5|$5 көн}} ғәмәлдә буласаҡ.
+Был ваҡытлыса {{PLURAL:$3|1=серһүҙ|серһүҙҙәр}} {{PLURAL:$5|$5 көн}} ғәмәлдә буласаҡ.
 Һеҙ системала танылырға һәм яңы серһүҙ һайларға тейешһегеҙ.
 Әгәр, һеҙ быны һоратмаған булһағыҙ йәки элекке серһүҙегеҙҙе киренән иҫләһәгеҙ һәм уны үҙгәртергә теләмәһәгеҙ, был хатҡа иғтибар итмәгеҙ һәм элекке серһүҙегеҙҙе ҡулланыуҙы дауам итегеҙ.',
-'passwordreset-emailtext-user' => '{{SITENAME}} проектындағы $1 ҡулланыусыһы {{SITENAME}} ($4) проектындағы иҫәп яҙыуығыҙҙы хәтерләтеүҙе һоратты. Киләһе ҡулланыусы {{PLURAL:$3|иҫәп яҙыуы|иҫәп яҙыуҙары}} был электрон почта адресы менән бәйле:
+'passwordreset-emailtext-user' => '{{SITENAME}} проектындағы $1 ҡулланыусыһы {{SITENAME}} ($4) проектындағы иҫәп яҙыуығыҙҙы хәтерләтеүҙе һоратты. Киләһе ҡулланыусы {{PLURAL:$3|1=иҫәп яҙыуы|иҫәп яҙыуҙары}} был электрон почта адресы менән бәйле:
 
 $2
 
-Был ваҡытлыса {{PLURAL:$3|серһүҙ|серһүҙҙәр}} {{PLURAL:$5|$5 көн}} ғәмәлдә буласаҡ.
+Был ваҡытлыса {{PLURAL:$3|1=серһүҙ|серһүҙҙәр}} {{PLURAL:$5|$5 көн}} ғәмәлдә буласаҡ.
 Һеҙ системала танылырға һәм яңы серһүҙ һайларға тейешһегеҙ.
 Әгәр, һеҙ быны һоратмаған булһағыҙ йәки элекке серһүҙегеҙҙе киренән иҫләһәгеҙ һәм уны үҙгәртергә теләмәһәгеҙ, был хатҡа иғтибар итмәгеҙ һәм элекке серһүҙеҙҙе ҡулланыуҙы дауам итегеҙ.',
 'passwordreset-emailelement' => 'Ҡулланыусы исеме: $1
@@ -922,7 +922,7 @@ $2
 Әгәр кемдең дә булһа текстарығыҙҙы үҙгәртеүен теләмәһәгеҙ, уларҙы бында ҡуймағыҙ.<br />
 Шулай уҡ, кереткән өҫтәмәләрҙең авторы булыуығыҙҙы йәки уларҙы, эстәлеге ирекле рәүештә таратылырға һәм үҙгәртелергә рөхсәт ителгән сығанаҡтан алыуығыҙҙы раҫлайһығыҙ (ҡарағыҙ: $1).
 '''РӨХСӘТҺЕҘ, АВТОРЛЫҠ ХОҠУҠТАРЫ МЕНӘН ҺАҠЛАНҒАН МАТЕРИАЛДАР ҠУЙМАҒЫҘ!'''",
-'longpageerror' => "'''ХАТА: һаҡланасаҡ текст күләме $1 килобайт, был иһә рөхсәт ителгән {{PLURAL:$1|$1 килобайттан|$2 килобайттан}} күп. Битте һаҡлап булмай.'''",
+'longpageerror' => "'''ХАТА: һаҡланасаҡ текст күләме $1 килобайт, был иһә рөхсәт ителгән {{PLURAL:$1|1=$1 килобайттан|$2 килобайттан}} күп. Битте һаҡлап булмай.'''",
 'readonlywarning' => "'''КИҪӘТЕҮ: Техник хеҙмәтләндереү сәбәпле мәғлүмәттәр базаһы блокланған, шунлыҡтан үҙгәртеүҙәрегеҙҙе хәҙер һаҡлай алмайһығыҙ.'''
 Тексты аҙаҡтан ҡулланыу өсөн файлда һаҡлап тора алаһығыҙ.
 
@@ -931,12 +931,12 @@ $2
 Белешмә өсөн түбәндә һуңғы үҙгәртеү тураһында мәғлүмәт бирелә:",
 'semiprotectedpagewarning' => "'''Киҫәтеү:''' был бит һаҡланған. Уны теркәлгән ҡулланыусылар ғына үҙгәртә ала.
 Белешмә өсөн түбәндә һуңғы үҙгәртеү тураһында мәғлүмәт бирелә:",
-'cascadeprotectedwarning' => "'''КИҪӘТЕҮ:''' Был битте тик хакимдәр генә үҙгәртә ала, сөнки ул эҙмә-эҙлекле һаҡлау ҡуйылған {{PLURAL:$1|киләһе биткә|киләһе биттәргә}} керә:",
+'cascadeprotectedwarning' => "'''КИҪӘТЕҮ:''' Был битте тик хакимдәр генә үҙгәртә ала, сөнки ул эҙмә-эҙлекле һаҡлау ҡуйылған {{PLURAL:$1|1=киләһе биткә|киләһе биттәргә}} керә:",
 'titleprotectedwarning' => "'''Киҫәтеү: Бындый исемле бит һаҡланған, уны үҙгәртеү өсөн [[Special:ListGroupRights|тейешле хоҡуҡҡа]] эйә булыу кәрәк.'''
 Белешмә өсөн түбәндә һуңғы үҙгәртеү тураһында мәғлүмәт бирелә:",
-'templatesused' => 'Был биттә ҡулланылған {{PLURAL:$1|ҡалып|ҡалыптар}}:',
-'templatesusedpreview' => 'Алдан ҡаралған биттә ҡулланылған {{PLURAL:$1|ҡалып|ҡалыптар}}:',
-'templatesusedsection' => 'Был бүлектә ҡулланылған {{PLURAL:$1|ҡалып|ҡалыптар}}:',
+'templatesused' => 'Был биттә ҡулланылған {{PLURAL:$1|1=ҡалып|ҡалыптар}}:',
+'templatesusedpreview' => 'Алдан ҡаралған биттә ҡулланылған {{PLURAL:$1|1=ҡалып|ҡалыптар}}:',
+'templatesusedsection' => 'Был бүлектә ҡулланылған {{PLURAL:$1|1=ҡалып|ҡалыптар}}:',
 'template-protected' => '(һаҡланған)',
 'template-semiprotected' => '(өлөшләтә һаҡланған)',
 'hiddencategories' => 'Был бит $1 {{PLURAL:$1|йәшерен категорияға}} керә:',
@@ -946,8 +946,8 @@ $2
 'sectioneditnotsupported-title' => 'Бүлектәрҙә мөхәррирләү терәкләнмәй',
 'sectioneditnotsupported-text' => 'Был биттә бүлектәрҙе мөхәррирләү терәкләнмәй.',
 'permissionserrors' => 'Инеү хоҡуғы хатаһы',
-'permissionserrorstext' => 'Түбәндәге {{PLURAL:$1|сәбәп|сәбәптәр}} буйынса һеҙҙең был ғәмәлде үтәү хоҡуғығыҙ юҡ:',
-'permissionserrorstext-withaction' => "«'''$2'''» ғәмәлен башҡара алмайһығыҙ. {{PLURAL:$1|Сәбәбе|Сәбәптәре}}:",
+'permissionserrorstext' => 'Түбәндәге {{PLURAL:$1|1=сәбәп|сәбәптәр}} буйынса һеҙҙең был ғәмәлде үтәү хоҡуғығыҙ юҡ:',
+'permissionserrorstext-withaction' => "«'''$2'''» ғәмәлен башҡара алмайһығыҙ. {{PLURAL:$1|1=Сәбәбе|Сәбәптәре}}:",
 'recreate-moveddeleted-warn' => "'''Иғтибар: Һеҙ, элек юйылған битте яңынан яһарға теләйһегеҙ.'''
 
 Һеҙгә был битте яңынан яһау кәрәклеген яңынан уйлап ҡарағыҙ.
@@ -1082,8 +1082,8 @@ $3 белдергән сәбәп: ''$2''",
 'revdelete-no-file' => 'Күрһәтелгән файл юҡ.',
 'revdelete-show-file-confirm' => '$2, $3 ваҡытлы «<nowiki>$1</nowiki> файлының юйылған версияһын ҡарарға теләүегеҙҙе раҫлайһығыҙмы?',
 'revdelete-show-file-submit' => 'Эйе',
-'revdelete-selected' => "'''[[:$1]] битенең {{PLURAL:$2|һайланған версияһы|һайланған версиялары}}:'''",
-'logdelete-selected' => "'''Яҙманың {{PLURAL:$1|һайланған яҙыуы|һайланған яҙыуҙары}}:'''",
+'revdelete-selected' => "'''[[:$1]] битенең {{PLURAL:$2|1=һайланған версияһы|һайланған версиялары}}:'''",
+'logdelete-selected' => "'''Яҙманың {{PLURAL:$1|1=һайланған яҙыуы|һайланған яҙыуҙары}}:'''",
 'revdelete-text' => "'''Биттәрҙең юйылған версиялары һәм ваҡиғалар, бит тарихында һәм яҙмаларҙа күрһәтеләсәк, ләкин уларҙың эстәлектәренең бер өлөшө ябай ҡулланыусыларға асыҡ булмаясаҡ.'''
 {{SITENAME}} проектының хакимдәре йәшерен эстәлеккә керә һәм өҫтәмә сикләүҙәр ҡуйылған осраҡтарҙан тыш, ошо уҡ арайөҙ аша тергеҙә аласаҡтар.",
 'revdelete-confirm' => 'Зинһар, был ғәмәлде үтәргә теләүегеҙҙе, буласаҡ һөҙөмтәләрҙә аңлауығыҙҙы, [[{{MediaWiki:Policy-url}}|ҡағиҙәләр]] буйынса эшләүегеҙҙе раҫлағыҙ.',
@@ -1104,7 +1104,7 @@ $3 белдергән сәбәп: ''$2''",
 'revdelete-suppress' => 'Мәғлүмәттәрҙе шулай уҡ хакимдәрҙән дә йәшерергә',
 'revdelete-unsuppress' => 'Тергеҙелгән версияларҙан бар сикләүҙәрҙе алырға',
 'revdelete-log' => 'Сәбәп:',
-'revdelete-submit' => 'Һайланған {{PLURAL:$1|версия|версиялар}} өсөн ҡулланырға',
+'revdelete-submit' => 'Һайланған {{PLURAL:$1|1=версия|версиялар}} өсөн ҡулланырға',
 'revdelete-success' => "'''Версия күренеүсәнлеге уңышлы үҙгәртелде.'''",
 'revdelete-failure' => "'''Версия күренеүсәнлеген үҙгәртеп булмай:'''
 $1",
@@ -1181,7 +1181,7 @@ $1",
 'diff-empty' => '(айырмалар юҡ)',
 'diff-multi' => '({{PLURAL:$2|$2 ҡатнашыусының}} {{PLURAL:$1|ваҡытлы версияһы}} күрһәтелмәгән)',
 'diff-multi-manyusers' => '(Кәмендә {{PLURAL:$2|$2 ҡатнашыусының}} {{PLURAL:$1|ваҡытлы версияһы}} күрһәтелмәгән)',
-'difference-missing-revision' => '$1 айырмаһының {{PLURAL:$2|бер өлгөһө|$2 өлгөһө}} табылманы.
+'difference-missing-revision' => '$1 айырмаһының {{PLURAL:$2|1=бер өлгөһө|$2 өлгөһө}} табылманы.
 
 Был хәл, ғәҙәттә, юйылған биткә яһалған айырма һылтанмаһының ваҡыты үтеүенән барлыҡҡа килә.
 Тулыраҡ мәғлүмәт өсөн ҡарағыҙ: [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} юйыу яҙмалары].',
@@ -1195,9 +1195,9 @@ $1",
 'notextmatches' => 'Тап килгән бит табылманы',
 'prevn' => 'алдағы {{PLURAL:$1|$1}}',
 'nextn' => 'киләһе {{PLURAL:$1|$1}}',
-'prevn-title' => 'Һуңғы $1 {{PLURAL:$1|һөҙөмтә|һөҙөмтә}}',
-'nextn-title' => 'Тәүге $1 {{PLURAL:$1|һөҙөмтә|һөҙөмтә}}',
-'shown-title' => 'Бер биттә $1 {{PLURAL:$1|һөҙөмтә|һөҙөмтә}} күрһәт',
+'prevn-title' => 'Һуңғы $1 {{PLURAL:$1|1=һөҙөмтә|һөҙөмтә}}',
+'nextn-title' => 'Тәүге $1 {{PLURAL:$1|1=һөҙөмтә|һөҙөмтә}}',
+'shown-title' => 'Бер биттә $1 {{PLURAL:$1|1=һөҙөмтә|һөҙөмтә}} күрһәт',
 'viewprevnext' => '($1 {{int:pipe-separator}} $2) ($3) ҡарарға',
 'searchmenu-exists' => "'''Был вики-проектта «[[:$1]]» бите бар'''",
 'searchmenu-new' => "'''Был википроектта \"[[:\$1]]\" бите булдырырға.'''",
@@ -1211,8 +1211,8 @@ $1",
 'searchprofile-images-tooltip' => 'Файлдар эҙләү',
 'searchprofile-everything-tooltip' => 'Барлыҡ биттәрҙә эҙләү (фекерләшеү биттәрендә лә)',
 'searchprofile-advanced-tooltip' => 'Махсус исем арауыҡтарында эҙләргә',
-'search-result-size' => '$1 ({{PLURAL:$2|$2 һүҙ|$2 һүҙ}})',
-'search-result-category-size' => '{{PLURAL:$1|$1 ағза}} ({{PLURAL:$2|$2 эске категория}}, {{PLURAL:$3|$3 файл}})',
+'search-result-size' => '$1 ({{PLURAL:$2|1=$2 һүҙ|$2 һүҙ}})',
+'search-result-category-size' => '{{PLURAL:$1|1=$1 ағза}} ({{PLURAL:$2|$2 эске категория}}, {{PLURAL:$3|$3 файл}})',
 'search-result-score' => 'Тап килеүсәнлек: $1%',
 'search-redirect' => '(йүнәлтеү $1)',
 'search-section' => '($1 бүлеге)',
@@ -1226,7 +1226,7 @@ $1",
 'searchall' => 'барыһы',
 'showingresults' => 'Түбәндә №&nbsp;<strong>$2</strong> һөҙөмтәнән башлап <strong>$1</strong> {{PLURAL:$1|һөҙөмтә}} күрһәтелгән.',
 'showingresultsnum' => 'Түбәндә №&nbsp;<strong>$2</strong> һөҙөмтәнән башлап <strong>$3</strong> {{PLURAL:$3|һөҙөмтә}} күрһәтелгән.',
-'showingresultsheader' => "'''$4''' өсөн '''$3''' һөҙөмтәнән {{PLURAL:$5|'''$1''' һөҙөмтә|'''$1 - $2''' арауығындағы һөҙөмтәләр}}",
+'showingresultsheader' => "'''$4''' өсөн '''$3''' һөҙөмтәнән {{PLURAL:$5|1='''$1''' һөҙөмтә|'''$1 - $2''' арауығындағы һөҙөмтәләр}}",
 'search-nonefound' => 'Был һорауға яуап биреүсе һөҙөмтәләр табылманы.',
 'powersearch-legend' => 'Киңәйтелгән эҙләү',
 'powersearch-ns' => 'Исем аралыҡтарында эҙләү:',
@@ -1255,7 +1255,7 @@ $1",
 'prefs-rc' => 'Һуңғы үҙгәртеүҙәр',
 'prefs-watchlist' => 'Күҙәтеү исемлеге',
 'prefs-watchlist-days' => 'Күҙәтеү исемлегендә нисә көн керетелгән үҙгәртеүҙәрҙе күрһәтергә:',
-'prefs-watchlist-days-max' => 'Максимум $1 {{PLURAL:$1|көн|көн}}',
+'prefs-watchlist-days-max' => 'Максимум $1 {{PLURAL:$1|1=көн|көн}}',
 'prefs-watchlist-edits' => 'Киңәйтелгән күҙәтеү исемлегендә күрһәтелә торған үҙгәртеүҙәр һанының сиге:',
 'prefs-watchlist-edits-max' => 'Иң күбе: 1000',
 'prefs-watchlist-token' => 'Күҙәтеү исемлеге токены:',
@@ -1528,7 +1528,7 @@ $1",
 'action-editmyprivateinfo' => 'һеҙҙең шәхси мәғлүмәтте мөхәррирләү',
 
 # Recent changes
-'nchanges' => '$1 {{PLURAL:$1|үҙгәртеү|үҙгәртеү}}',
+'nchanges' => '$1 {{PLURAL:$1|1=үҙгәртеү|үҙгәртеү}}',
 'enhancedrc-since-last-visit' => '$1 {{PLURAL:$1|һеҙҙең һуңғы визит}}',
 'enhancedrc-history' => 'тарих',
 'recentchanges' => 'Һуңғы үҙгәртеүҙәр',
@@ -1560,7 +1560,7 @@ $1",
 'number_of_watching_users_pageview' => '[$1 {{PLURAL:$1|ҡатнашыусы}} күҙәтә]',
 'rc_categories' => 'Ошо категорияларҙан ғына («|» менән айырырға)',
 'rc_categories_any' => 'Һәр',
-'rc-change-size-new' => 'Үҙгәртештән һуң $1 {{PLURAL:$1|байт|байт}}',
+'rc-change-size-new' => 'Үҙгәртештән һуң $1 {{PLURAL:$1|1=байт|байт}}',
 'newsectionsummary' => '/* $1 */ яңы бүлек',
 'rc-enhanced-expand' => 'Ваҡ-төйәгенә тиклем күрһәтергә',
 'rc-enhanced-hide' => 'Ваҡлыҡтарҙы йәшерергә',
@@ -1620,9 +1620,9 @@ $1",
 'filetype-badmime' => 'MIME-төрө «$1» булған файлдарҙы тейәп булмай.',
 'filetype-bad-ie-mime' => 'Был файлды тейәп булмай, сөнки Internet Explorer уны "$1", йәғни рөхсәт ителмәгән һәм хәүефле файл төрө тип билдәләйәсәк.',
 'filetype-unwanted-type' => "'''\".\$1\"''' — теләнмәгән файл тибы.
-{{PLURAL:\$3|Уңайлы файл тибы|Уңайлы файл типтары:}} \$2.",
-'filetype-banned-type' => '\'\'\'".$1"\'\'\' — {{PLURAL:$4|тыйылған файл төрө|тыйылған файл төрҙәре}}.
-{{PLURAL:$3|Файлдың рөхсәт ителгән төрө|Файлдың рөхсәт ителгән төрҙәре:}} $2.',
+{{PLURAL:\$3|1=Уңайлы файл тибы|Уңайлы файл типтары:}} \$2.",
+'filetype-banned-type' => '\'\'\'".$1"\'\'\' — {{PLURAL:$4|1=тыйылған файл төрө|тыйылған файл төрҙәре}}.
+{{PLURAL:$3|1=Файлдың рөхсәт ителгән төрө|Файлдың рөхсәт ителгән төрҙәре:}} $2.',
 'filetype-missing' => 'Файлдың киңәйтелмәһе юҡ (мәҫәлән, ".jpg").',
 'empty-file' => 'Һеҙ ебәргән файл буш.',
 'file-too-large' => 'Һеҙ ебәргән файл бигерәк ҙур.',
@@ -1664,7 +1664,7 @@ $1",
 'fileexists-shared-forbidden' => 'Бындай исемле файл дөйөм файл һаҡлағыста бар инде.
 Әгәр һеҙ шулай ҙа был файлды тейәргә теләһәгеҙ, зинһар, кире ҡайтығыҙ һәм яңы исем һайлағыҙ.
 [[File:$1|thumb|center|$1]]',
-'file-exists-duplicate' => 'Был файл түбәндәге {{PLURAL:$1|файл|файлдар}} менән тап килә:',
+'file-exists-duplicate' => 'Был файл түбәндәге {{PLURAL:$1|1=файл|файлдар}} менән тап килә:',
 'file-deleted-duplicate' => 'Оҡшаш файл ([[:$1]]) юйылғайны инде. Уны ҡайтанан тейәр алдынан, зинһар, файлды юйыу тарихын ҡарағыҙ.',
 'uploadwarning' => 'Киҫәтеү',
 'uploadwarning-text' => 'Зинһар, түбәндәге файл тасуирламаһын үҙгәртегеҙ һәм яңынан ҡабатлап ҡарағыҙ.',
@@ -1732,13 +1732,13 @@ $1',
 'backend-fail-closetemp' => 'Ваҡытлы файлды ябып булмай.',
 'backend-fail-read' => '«$1» файлын уҡып булмай.',
 'backend-fail-create' => '«$1» файлын яҙып булмай.',
-'backend-fail-maxsize' => '$1 файлын яҙып булманы, сөнки уның күләме {{PLURAL:$2|$2 байттан|$2 байттан}} күп.',
+'backend-fail-maxsize' => '$1 файлын яҙып булманы, сөнки уның күләме {{PLURAL:$2|1=$2 байттан|$2 байттан}} күп.',
 'backend-fail-readonly' => '$1 һаҡлағысы әлегә уҡыу өсөн генә асыҡ. Сәбәбе: $2',
 'backend-fail-synced' => '$1 файлы эске һаҡлағыста ярашһыҙ хәлдә тора.',
 'backend-fail-connect' => '"$1" һаҡлағысы менән бәйләнеш яһап булманы.',
 'backend-fail-internal' => '$1 һаҡлағысында билдәһеҙ хата килеп сыҡты',
 'backend-fail-contenttype' => 'Файлды $1 адресына һаҡлар өсөн уның эстәлеге төрөн билдәләп булманы.',
-'backend-fail-batchsize' => 'Һаҡлағыс $1 {{PLURAL:$1|файл операцияһынан|файл операцияһынан}} бер блок алды, сикләү һаны: $2 {{PLURAL:$1|операция|операция}}.',
+'backend-fail-batchsize' => 'Һаҡлағыс $1 {{PLURAL:$1|1=файл операцияһынан|файл операцияһынан}} бер блок алды, сикләү һаны: $2 {{PLURAL:$1|1=операция|операция}}.',
 'backend-fail-usable' => 'Хоҡуҡтар етмәгәнлектән йәки кәрәкле папкалар булмағанлыҡтан $1 файлын уҡып йәки яҙып булманы.',
 
 # File journal errors
@@ -1855,14 +1855,14 @@ $1',
 'filehist-comment' => 'Иҫкәрмә',
 'filehist-missing' => 'Файл юҡ',
 'imagelinks' => 'Файл ҡулланыу',
-'linkstoimage' => 'Был файлға {{PLURAL:$1|бит|$1 бит}} һылтана:',
+'linkstoimage' => 'Был файлға {{PLURAL:$1|1=бит|$1 бит}} һылтана:',
 'linkstoimage-more' => 'Был файлға кәмендә $1 {{PLURAL:$1|бит}} һылтанма яһай.
 Түбәндәге исемлектә был файлға $1 {{PLURAL:$1|һылтанма}} ғына килтерелгән.
 Шулай уҡ [[Special:WhatLinksHere/$2|тулы исемлекте]] ҡарарға мөмкин.',
 'nolinkstoimage' => 'Был файлға һылтанма яһаған бит юҡ.',
 'morelinkstoimage' => 'Был файлға [[Special:WhatLinksHere/$1|башҡа һылтанмаларҙы]] ҡарарға.',
 'linkstoimage-redirect' => '$1 (файл-йүнәлтеү) $2',
-'duplicatesoffile' => 'Түбәндәге {{PLURAL:$1|файл|файлдар}} был файл менән тап килә ([[Special:FileDuplicateSearch/$2|тулыраҡ мәғлүмәт]])',
+'duplicatesoffile' => 'Түбәндәге {{PLURAL:$1|1=файл|файлдар}} был файл менән тап килә ([[Special:FileDuplicateSearch/$2|тулыраҡ мәғлүмәт]])',
 'sharedupload' => 'Был файл $1 базаһынан һәм башҡа проектарҙа ҡулланылырға мөмкин.',
 'sharedupload-desc-there' => 'Был файл $1 базаһынан һәм башҡа проекттарҙа ҡулланыла ала.
 Тулыраҡ мәғлүмәтте [$2 файл тасуирламаһы битендә] ҡарарға мөмкин.',
@@ -1930,7 +1930,7 @@ $1',
 
 # Random page
 'randompage' => 'Осраҡлы мәҡәлә',
-'randompage-nopages' => 'Түбәндәге {{PLURAL:$2|исемдәр арауығында|исемдәр арауыҡтарында}} биттәр юҡ: $1.',
+'randompage-nopages' => 'Түбәндәге {{PLURAL:$2|1=исемдәр арауығында|исемдәр арауыҡтарында}} биттәр юҡ: $1.',
 
 # Random page in category
 'randomincategory' => 'Категориялағы осраҡлы бит',
@@ -1961,7 +1961,7 @@ $1',
 'statistics-views-peredit' => 'Бер үҙгәртеүгә ҡарап сығыуҙар',
 'statistics-users' => 'Теркәлгән [[Special:ListUsers|ҡатнашыусылар]]',
 'statistics-users-active' => 'Әүҙем ҡатнашыусылар',
-'statistics-users-active-desc' => 'Һуңғы {{PLURAL:$1|көндә|$1 көндә}} ниндәйҙер эшмәкәрлек башҡарған ҡатнашыусылар',
+'statistics-users-active-desc' => 'Һуңғы {{PLURAL:$1|1=көндә|$1 көндә}} ниндәйҙер эшмәкәрлек башҡарған ҡатнашыусылар',
 'statistics-mostpopular' => 'Иң күп ҡаралған биттәр',
 
 'pageswithprop' => 'Үҙенсәлектәре ҡайтанан билдәләнгән биттәр',
@@ -1995,11 +1995,11 @@ $1',
 
 # Miscellaneous special pages
 'nbytes' => '$1 {{PLURAL:$1|байт}}',
-'ncategories' => '$1 {{PLURAL:$1|Категория|Категория}}',
+'ncategories' => '$1 {{PLURAL:$1|1=Категория|Категория}}',
 'ninterwikis' => '$1 {{PLURAL:$1|интервики-һылтанма}}',
 'nlinks' => '$1 {{PLURAL:$1|һылтанма}}',
 'nmembers' => '$1 {{PLURAL:$1|объект}}',
-'nrevisions' => '$1 {{PLURAL:$1|өлгө|өлгө}}',
+'nrevisions' => '$1 {{PLURAL:$1|1=өлгө|өлгө}}',
 'nviews' => '$1 {{PLURAL:$1|ҡарап сығыу}}',
 'nimagelinks' => '$1 {{PLURAL:$1|биттә}} ҡулланыла',
 'ntransclusions' => '$1 {{PLURAL:$1|биттә}} ҡулланыла',
@@ -2058,8 +2058,8 @@ $1',
 'notargettext' => 'Һеҙ был ғәмәл өсөн кәрәкле битте йәки ҡатнашыусыны күрһәтмәгәнһегеҙ.',
 'nopagetitle' => 'Бындай бит юҡ',
 'nopagetext' => 'Һеҙ күрһәткән бит юҡ.',
-'pager-newer-n' => '{{PLURAL:$1|1 яңыраҡ|$1 яңыраҡ}}',
-'pager-older-n' => '{{PLURAL:$1|1 иҫкерәк|$1 иҫкерәк}}',
+'pager-newer-n' => '{{PLURAL:$1|1=1 яңыраҡ|$1 яңыраҡ}}',
+'pager-older-n' => '{{PLURAL:$1|1=1 иҫкерәк|$1 иҫкерәк}}',
 'suppress' => 'Йәшереү',
 'querypage-disabled' => 'Был махсус бит һөҙөмтәлелекте арттырыу өсөн ябылған.',
 
@@ -2103,7 +2103,7 @@ $1',
 
 # Special:Categories
 'categories' => 'Категориялар',
-'categoriespagetext' => 'Түбәндәге {{PLURAL:$1|категорияла|категорияларҙа}} биттәр йәки файлдар бар.
+'categoriespagetext' => 'Түбәндәге {{PLURAL:$1|1=категорияла|категорияларҙа}} биттәр йәки файлдар бар.
 [[Special:UnusedCategories|Ҡулланылмаған категориялар]] бында күрһәтелмәгән.
 Шулай уҡ [[Special:WantedCategories|кәрәкле категориялар исемлеген]] ҡарағыҙ.',
 'categoriesfrom' => 'Ошондай хәрефтәрҙән башланған категорияларҙы күрһәтергә:',
@@ -2122,7 +2122,7 @@ $1',
 'linksearch-ok' => 'Эҙләү',
 'linksearch-text' => '<code>*.wikipedia.org</code> һымаҡ төркөм билдәләрен ҡулланырға була.
 Кәмендә өҫкө кимәл домен кәрәк, мәҫәлән, <code>*.org</code><br />
-Мөмкин булған{{PLURAL:$2|протокол|протоколдар}}: <code>$1</code> (башҡа протокол өҫтәлмәһә, алдан бирелгәне индерелә http://).',
+Мөмкин булған{{PLURAL:$2|1=протокол|протоколдар}}: <code>$1</code> (башҡа протокол өҫтәлмәһә, алдан бирелгәне индерелә http://).',
 'linksearch-line' => '$1 адресына $2 битенән һылтанма яһалған',
 'linksearch-error' => 'Төркөм билдәләре URL адрестың башында ғына ҡулланыла ала.',
 
@@ -2135,7 +2135,7 @@ $1',
 # Special:ActiveUsers
 'activeusers' => 'Әүҙем ҡатнашыусылар исемлеге',
 'activeusers-intro' => 'Был — һуңғы $1 {{PLURAL:$1|көн}} эсендә ниҙер башҡарған ҡатнашыусылар исемлеге.',
-'activeusers-count' => 'һуңғы $3 {{PLURAL:$3|көн}} эсендәге һуңғы көндә $1 {{PLURAL:$1|үҙгәртеү}}',
+'activeusers-count' => 'һуңғы $3 {{PLURAL:$3|1=көн}} эсендәге һуңғы көндә $1 {{PLURAL:$1|үҙгәртеү}}',
 'activeusers-from' => 'Ошондай хәрефтәрҙән башланған ҡатнашыусыларҙы күрһәтергә:',
 'activeusers-hidebots' => 'Боттарҙы йәшерергә',
 'activeusers-hidesysops' => 'Хакимдәрҙе йәшерергә',
@@ -2152,12 +2152,12 @@ $1',
 'listgrouprights-rights' => 'Хоҡуҡтар',
 'listgrouprights-helppage' => 'Help:Төркөмдәр хоҡуҡтары',
 'listgrouprights-members' => '(ағзалар исемлеге)',
-'listgrouprights-addgroup' => '$1 {{PLURAL:$2|төркөмөнә|төркөмдәренә}} өҫтәү',
-'listgrouprights-removegroup' => '$1 {{PLURAL:$2|төркөмөнән|төркөмдәренән}} сығарыу',
+'listgrouprights-addgroup' => '$1 {{PLURAL:$2|1=төркөмөнә|төркөмдәренә}} өҫтәү',
+'listgrouprights-removegroup' => '$1 {{PLURAL:$2|1=төркөмөнән|төркөмдәренән}} сығарыу',
 'listgrouprights-addgroup-all' => 'Бөтә төркөмдәргә өҫтәү',
 'listgrouprights-removegroup-all' => 'Бөтә төркөмдәрҙән сығарыу',
-'listgrouprights-addgroup-self' => 'Үҙенең иҫәп яҙмаһына $1 {{PLURAL:$2|төркөмөн|төркөмдәрен}} өҫтәү',
-'listgrouprights-removegroup-self' => 'Үҙенең иҫәп яҙмаһынан $1 {{PLURAL:$2|төркөмөн|төркөмдәрен}} юйыу',
+'listgrouprights-addgroup-self' => 'Үҙенең иҫәп яҙмаһына $1 {{PLURAL:$2|1=төркөмөн|төркөмдәрен}} өҫтәү',
+'listgrouprights-removegroup-self' => 'Үҙенең иҫәп яҙмаһынан $1 {{PLURAL:$2|1=төркөмөн|төркөмдәрен}} юйыу',
 'listgrouprights-addgroup-self-all' => 'Үҙенең иҫәп яҙмаһына бөтә төркөмдәрҙе өҫтәү',
 'listgrouprights-removegroup-self-all' => 'Үҙенең иҫәп яҙмаһынан бөтә төркөмдәрҙе юйыу',
 
@@ -2222,9 +2222,9 @@ $1',
 'wlheader-showupdated' => "Һеҙҙең аҙаҡҡы кереүегеҙҙән һуң үҙгәргән биттәр '''ҡалын''' шрифт менән күрһәтелгән.",
 'watchmethod-recent' => 'күҙәтелгән биттәр өсөн аҙаҡҡы үҙгәртеүҙәрҙе ҡарау',
 'watchmethod-list' => 'аҙаҡҡы үҙгәртеүҙәр өсөн күҙәтелгән биттәрҙе ҡарау',
-'watchlistcontains' => 'Һеҙҙең күҙәтеү исемлегендә $1 {{PLURAL:$1|бит|бит}}бар.',
+'watchlistcontains' => 'Һеҙҙең күҙәтеү исемлегендә $1 {{PLURAL:$1|1=бит|бит}}бар.',
 'iteminvalidname' => '«$1» менән ҡыйынлыҡтар, исеме дөрөҫ түгел...',
-'wlnote' => "Түбәндә $3 $4 ваҡытына тиклем аҙаҡҡы {{PLURAL:$2|сәғәт|'''$2''' сәғәт}} эсендә эшләнгән {{PLURAL:$1|үҙгәртеү|'''$1''' үҙгәртеү}} күрһәтелгән.",
+'wlnote' => "Түбәндә $3 $4 ваҡытына тиклем аҙаҡҡы {{PLURAL:$2|1=сәғәт|'''$2''' сәғәт}} эсендә эшләнгән {{PLURAL:$1|1=үҙгәртеү|'''$1''' үҙгәртеү}} күрһәтелгән.",
 'wlshowlast' => 'Һуңғы $1 сәғәт $2 көн өсөн күрһәт $3',
 'watchlist-options' => 'Күҙәтеү исемлеге көйләүҙәре',
 
@@ -2318,8 +2318,8 @@ $UNWATCHURL
 'rollback' => 'Үҙгәртеүҙәрҙе кире ҡайтарырға',
 'rollback_short' => 'Кире ҡайтарырға',
 'rollbacklink' => 'кире',
-'rollbacklinkcount' => '$1 {{PLURAL:$1|төҙәтеүҙе|төҙәтеүҙе}} кире алырға',
-'rollbacklinkcount-morethan' => '$1 {{PLURAL:$1|төҙәтеүҙән|төҙәтеүҙән}} күберәк кире алырға',
+'rollbacklinkcount' => '$1 {{PLURAL:$1|1=төҙәтеүҙе|төҙәтеүҙе}} кире алырға',
+'rollbacklinkcount-morethan' => '$1 {{PLURAL:$1|1=төҙәтеүҙән|төҙәтеүҙән}} күберәк кире алырға',
 'rollbackfailed' => 'Кире ҡайтарырғанда барлыҡҡа килгән хата',
 'cantrollback' => 'Үҙгәртеүҙәрҙе кире алыу мөмкин түгел. Битте һуңғы үҙгәртеүсе ҡатнашыусы уның берҙән-бер авторы булып тора.',
 'alreadyrolled' => '[[User:$2|$2]] ([[User talk:$2|фекер алышыу]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]])  кереткән [[:$1]] һуңғы үҙгәртеүҙәрҙе кире алыу мөмкин түгел; башҡа ҡатнашыусы был битте мөхәррирләгән йәки үҙгәртеүҙәрҙе кире алған инде.
@@ -2364,7 +2364,7 @@ $2 өлгөһөнә ҡайтыу.',
 'protect-locked-dblock' => "Һаҡлау дәрәжәһе үҙгәртелә алмай, сөнки төп мәғлүмәттәр базаһы ваҡытлыса бикле.
 '''$1''' битенең хәҙерге һаҡлау көйләүҙәре:",
 'protect-locked-access' => "Биттең һаҡлау дәрәжеһен үҙгәртер өсөн иҫәп яҙыуығыҙҙың хоҡуҡтары етәрле түгел. '''$1''' битенең хәҙерге һаҡлау көйләүҙәре:",
-'protect-cascadeon' => 'Был бит һаҡланған, сөнки ул эҙмә-эҙлекле һаҡлау ҡуйылған {{PLURAL:$1|биткә|биттәргә}} керә. Һеҙ был биттең һаҡлау дәрәжәһен үҙгәртә алаһығыҙ, ләкин был эҙмә-эҙлекле һаҡлауға йоғонто яһамаясаҡ.',
+'protect-cascadeon' => 'Был бит һаҡланған, сөнки ул эҙмә-эҙлекле һаҡлау ҡуйылған {{PLURAL:$1|1=биткә|биттәргә}} керә. Һеҙ был биттең һаҡлау дәрәжәһен үҙгәртә алаһығыҙ, ләкин был эҙмә-эҙлекле һаҡлауға йоғонто яһамаясаҡ.',
 'protect-default' => 'Бар ҡулланыусыларға рөхсәт бирергә',
 'protect-fallback' => '«$1» хоҡуҡлы ҡатнашыусыларға ғына рөхсәте ителгән',
 'protect-level-autoconfirmed' => 'Үҙенән-үҙе раҫланған ҡатнашыусыларға ғына рөхсәт ителгән',
@@ -2409,12 +2409,12 @@ $2 өлгөһөнә ҡайтыу.',
 'undeletepage' => 'Юйылған биттәрҙе ҡарау һәм тергеҙеү',
 'undeletepagetitle' => "'''Түбәндә [[:$1|$1]] битенең юйылған өлгөләре килтерелгән'''.",
 'viewdeletedpage' => 'Юйылған биттәрҙе ҡарау',
-'undeletepagetext' => 'Түбәндәге {{PLURAL:$1|бит|$1 бит}} юйылған, әммә һаман архивта һаҡлана һәм тергеҙелә ала.
+'undeletepagetext' => 'Түбәндәге {{PLURAL:$1|1=бит|$1 бит}} юйылған, әммә һаман архивта һаҡлана һәм тергеҙелә ала.
 Архив ваҡыты менән таҙартыла ала.',
 'undelete-fieldset-title' => 'Өлгөләрҙе тергеҙергә',
 'undeleteextrahelp' => "Биттең тарихын тулыһынса тергеҙер өсөн, бөтә өлгөләрҙе лә һайланмаған килеш ҡалдырығыҙ һәм '''''{{int:undeletebtn}}''''' төймәһенә баҫығыҙ.
 Ҡайһы бер өлгөләрҙе генә тергеҙер өсөн, кәрәкле өлгөләрҙе һайлағыҙ һәм '''''{{int:undeletebtn}}''''' төймәһенә баҫығыҙ.",
-'undeleterevisions' => '$1 {{PLURAL:$1|өлгө|өлгө}} архивта һаҡланған',
+'undeleterevisions' => '$1 {{PLURAL:$1|1=өлгө|өлгө}} архивта һаҡланған',
 'undeletehistory' => 'Битте тергеҙгәндә уны үҙгәртеү тарихы ла тергеҙелә.
 Әгәр бит юйылғандан һуң шундай уҡ исемле бит булдырылған булһа, тергеҙелгән өлгөләр яңы өлгөләр алдынан ҡуйыласаҡ.',
 'undeleterevdel' => 'Әгәр тергеҙеү биттең йәки файлдың аҙаҡҡы өлгөһө өлөшләтә юйылыуына килтерһә, был терегеҙеү башҡарылмаясаҡ.
@@ -2432,7 +2432,7 @@ $2 өлгөһөнә ҡайтыу.',
 'undeleteinvert' => 'Һайланғандарҙы әйләндерергә',
 'undeletecomment' => 'Сәбәп:',
 'undeletedrevisions' => '$1 {{PLURAL:$1|өлгө}} тергеҙелде',
-'undeletedrevisions-files' => '{{PLURAL:$1|өлгө}} һәм {{PLURAL:$2|файл}} тергеҙелде',
+'undeletedrevisions-files' => '{{PLURAL:$1|1=өлгө}} һәм {{PLURAL:$2|файл}} тергеҙелде',
 'undeletedfiles' => '{{PLURAL:$1|файл}} тергеҙелде',
 'cannotundelete' => 'Юйыуҙы кире алып булманы:
 $1',
@@ -2504,8 +2504,8 @@ $1',
 'isredirect' => 'йүнәлтеү бите',
 'istemplate' => 'ҡушылған',
 'isimage' => 'файл һылтанмаһы',
-'whatlinkshere-prev' => '{{PLURAL:$1|алдағы|алдағы $1}}',
-'whatlinkshere-next' => '{{PLURAL:$1|киләһе|киләһе $1}}',
+'whatlinkshere-prev' => '{{PLURAL:$1|1=алдағы|алдағы $1}}',
+'whatlinkshere-next' => '{{PLURAL:$1|1=киләһе|киләһе $1}}',
 'whatlinkshere-links' => '← һылтанмалар',
 'whatlinkshere-hideredirs' => 'Йүнәлтеүҙәрҙе $1',
 'whatlinkshere-hidetrans' => 'Ҡушылғандарҙы $1',
@@ -2577,7 +2577,7 @@ $1',
 'blocklist-reason' => 'Сәбәп',
 'ipblocklist-submit' => 'Эҙләү',
 'ipblocklist-localblock' => 'Урындағы (локаль) бикләү',
-'ipblocklist-otherblocks' => 'Башҡа {{PLURAL:$1|бикләү|бикләүҙәр}}',
+'ipblocklist-otherblocks' => 'Башҡа {{PLURAL:$1|1=бикләү|бикләүҙәр}}',
 'infiniteblock' => 'сикһеҙ',
 'expiringblock' => '$1 $2 тамамлана',
 'anononlyblock' => 'танылмағандарҙы ғына',
@@ -2619,7 +2619,7 @@ $1 ҡатнашыусыһын бикләү сәбәбе: "$2"',
 'ipb_already_blocked' => '"$1" бикләнгән инде.',
 'ipb-needreblock' => '$1 бикләнгән инде.
 Бикләү көйләүҙәрен үҙгәртергә теләйһегеҙме?',
-'ipb-otherblocks-header' => 'Башҡа {{PLURAL:$1|бикләү|бикләүҙәр}}',
+'ipb-otherblocks-header' => 'Башҡа {{PLURAL:$1|1=бикләү|бикләүҙәр}}',
 'unblock-hideuser' => 'Һеҙ был ҡулланыусының биген ала алмайһығыҙ, сөнки ҡулланыусы исеме йәшерелгән.',
 'ipb_cant_unblock' => 'Хата: Идентификаторы $1 булған бикләү табылманы.
 Ул бик алынған, булырға тейеш.',
@@ -2819,7 +2819,7 @@ $2',
 'import-comment' => 'Иҫкәрмә:',
 'importtext' => 'Зинһар, файлды сығанаҡ викинан [[Special:Export|махсус ҡорал]] ярҙамында сығарығыҙ. Артабан уны компьютерығыҙға һаҡлағыҙ һәм бында тейәгеҙ.',
 'importstart' => 'Биттәрҙе тейәү...',
-'import-revision-count' => '$1 {{PLURAL:$1|өлгө|өлгө}}',
+'import-revision-count' => '$1 {{PLURAL:$1|1=өлгө|өлгө}}',
 'importnopages' => 'Тейәү өсөн биттәр юҡ.',
 'imported-log-entries' => 'Журналдан $1 {{PLURAL:$1|яҙма}} тейәлде.',
 'importfailed' => 'Тейәү хатаһы: <nowiki>$1</nowiki>',
@@ -2851,7 +2851,7 @@ $2',
 'import-error-special' => ' «$1» бите импортҡа сығарылманы, сөнки ул биттәр яһау мөмкин булмаған исемдәр арауығына ҡарай.',
 'import-error-invalid' => '"$1" бите яраҡһыҙ исеме өсөн импортланманы.',
 'import-error-unserialize' => '«$1» битенең $2 өлгөһөн структуралаштырып (десериаялап) булмай. $4 форматында серияланған $3 эстәлегенең моделеның был өлгөлә ҡулланылыуы тураһында хәбәр алынды.',
-'import-options-wrong' => 'Хаталы {{PLURAL:$2|опция|опциялар}}: <nowiki>$1</nowiki>',
+'import-options-wrong' => 'Хаталы {{PLURAL:$2|1=опция|опциялар}}: <nowiki>$1</nowiki>',
 'import-rootpage-invalid' => 'Төп биттең күрһәтелгән исеме яңылыш.',
 'import-rootpage-nosubpage' => 'Төп биттең "$1" исемдәр арауығы эске биттәргә рөхсәт бирмәй.',
 
@@ -2859,9 +2859,9 @@ $2',
 'importlogpage' => 'Тейәү яҙмалары журналы',
 'importlogpagetext' => 'Хакимдәр тарафынан башҡа вики проекттарҙан биттәрҙе һәм уларҙың үҙгәртеүҙәр тарихын тейәү.',
 'import-logentry-upload' => '[[$1]] битен файлдан тейәгән',
-'import-logentry-upload-detail' => '$1 {{PLURAL:$1|өлгө|өлгө}}',
+'import-logentry-upload-detail' => '$1 {{PLURAL:$1|1=өлгө|өлгө}}',
 'import-logentry-interwiki' => '$1 битен вики проекттары-ара тейәгән',
-'import-logentry-interwiki-detail' => '$2 өлгөнән $1 {{PLURAL:$1|өлгө|өлгө}}',
+'import-logentry-interwiki-detail' => '$2 өлгөнән $1 {{PLURAL:$1|1=өлгө|өлгө}}',
 
 # JavaScriptTest
 'javascripttest' => '
@@ -2949,14 +2949,14 @@ JavaScript тикшереү',
 The wiki server cannot provide data in a format your client can read.',
 
 # Attribution
-'anonymous' => '{{SITENAME}} проектының танылмаған {{PLURAL:$1|ҡатнашыусыһы|ҡатнашыусылары}}',
+'anonymous' => '{{SITENAME}} проектының танылмаған {{PLURAL:$1|1=ҡатнашыусыһы|ҡатнашыусылары}}',
 'siteuser' => '{{SITENAME}} проектының ҡатнашыусыһы $1',
 'anonuser' => '{{SITENAME}} проектының танылмаған ҡатнашыусыһы $1',
 'lastmodifiedatby' => 'Был бит һуңғы тапҡыр $1 $2 $3 тарафынан үҙгәртелгән.',
 'othercontribs' => 'Мөхәррирләүҙә ҡатнаштылар: $1.',
 'others' => 'башҡалар',
-'siteusers' => '{{SITENAME}} {{PLURAL:$2|ҡатнашыусы|ҡатнашыусылары}} $1',
-'anonusers' => '{{SITENAME}} проектының танылмаған {{PLURAL:$2|ҡатнашыусыһы|ҡатнашыусылары}} $1',
+'siteusers' => '{{SITENAME}} {{PLURAL:$2|1=ҡатнашыусы|ҡатнашыусылары}} $1',
+'anonusers' => '{{SITENAME}} проектының танылмаған {{PLURAL:$2|1=ҡатнашыусыһы|ҡатнашыусылары}} $1',
 'creditspage' => 'Рәхмәт белдереү',
 'nocredits' => 'Был мәҡәләне мөхәррирләүҙә ҡатнашыусылар исемлеге юҡ.',
 
@@ -3001,9 +3001,9 @@ The wiki server cannot provide data in a format your client can read.',
 'pageinfo-authors' => 'Төрлө авторҙар һаны',
 'pageinfo-recent-edits' => 'Һуңғы ваҡыттағы төҙәтеүҙәр ($1 эсендә)',
 'pageinfo-recent-authors' => 'Төрлө авторҙарҙың һуңғы һаны',
-'pageinfo-magic-words' => 'Тылсымлы {{PLURAL:$1|һүҙ|һүҙҙәр}} ($1)',
-'pageinfo-hidden-categories' => 'Йәшерен {{PLURAL:$1|категория|категориялар}} ($1)',
-'pageinfo-templates' => 'Ҡулланылған {{PLURAL:$1|ҡалып|ҡалыптар}} ($1)',
+'pageinfo-magic-words' => 'Тылсымлы {{PLURAL:$1|1=һүҙ|һүҙҙәр}} ($1)',
+'pageinfo-hidden-categories' => 'Йәшерен {{PLURAL:$1|1=категория|категориялар}} ($1)',
+'pageinfo-templates' => 'Ҡулланылған {{PLURAL:$1|1=ҡалып|ҡалыптар}} ($1)',
 'pageinfo-transclusions' => '{{PLURAL:$1|Индерелгән биттәр}} ($1)',
 'pageinfo-toolboxlink' => 'Бит мәғлүмәттәре',
 'pageinfo-redirectsto' => 'Йүнәлтеү',
@@ -3071,7 +3071,7 @@ $1',
 'svg-long-error' => 'Яңылыш SVG файл: $1',
 'show-big-image' => 'Тулы асыҡлыҡ',
 'show-big-image-preview' => 'Байҡау ваҡытындағы күләм: $1.',
-'show-big-image-other' => '{{PLURAL:$2|Башҡа сиселеш|Башҡа сиселештәр}}: $1.',
+'show-big-image-other' => '{{PLURAL:$2|1=Башҡа сиселеш|Башҡа сиселештәр}}: $1.',
 'show-big-image-size' => '$1 × $2 пиксель',
 'file-info-gif-looped' => 'әйләнешле',
 'file-info-gif-frames' => '$1 {{PLURAL:$1|фрейм}}',
@@ -3095,11 +3095,11 @@ $1',
 'sp-newimages-showfrom' => '$1 $2 ваҡытынан башлап яңы файлдарҙы күрһәтергә',
 
 # Video information, used by Language::formatTimePeriod() to format lengths in the above messages
-'seconds' => '{{PLURAL:$1|$1 секунд|$1 секунд}}',
-'minutes' => '{{PLURAL:$1|$1 минут|$1 минут}}',
-'hours' => '{{PLURAL:$1|$1 сәғәт|$1 сәғәт}}',
-'days' => '{{PLURAL:$1|$1 көн|$1 көн}}',
-'weeks' => '{{PLURAL:$1|$1 аҙна|$1 аҙна|}}',
+'seconds' => '{{PLURAL:$1|1=$1 секунд|$1 секунд}}',
+'minutes' => '{{PLURAL:$1|1=$1 минут|$1 минут}}',
+'hours' => '{{PLURAL:$1|1=$1 сәғәт|$1 сәғәт}}',
+'days' => '{{PLURAL:$1|1=$1 көн|$1 көн}}',
+'weeks' => '{{PLURAL:$1|$1 аҙна}}',
 'months' => '{{PLURAL:$1|$1 ай}}',
 'years' => '{{PLURAL:$1|$1 йыл}}',
 'ago' => '$1 элек',
@@ -3666,7 +3666,7 @@ $5
 'lag-warn-high' => 'Мәғлүмәттәр базаларын синхронлаштырыуҙың күпкә артта ҡалыуы сәбәпле, $1 {{PLURAL:$1|секундтан}} кәмерәк ваҡыт элек эшләнгән үҙгәртеүҙәр был исемлектә күрһәтелә алмай.',
 
 # Watchlist editor
-'watchlistedit-numitems' => 'Һеҙҙең күҙәтеү исемлегегеҙҙә фекер алышыу биттәрен иҫәпләмәгәндә - {{PLURAL:$1|$1 бит|$1 бит}} бар.',
+'watchlistedit-numitems' => 'Һеҙҙең күҙәтеү исемлегегеҙҙә фекер алышыу биттәрен иҫәпләмәгәндә - {{PLURAL:$1|1=$1 бит|$1 бит}} бар.',
 'watchlistedit-noitems' => 'Һеҙҙең күҙәтеү исемлегегеҙҙә бер бит тә юҡ.',
 'watchlistedit-normal-title' => 'Күҙәтеү исемлеген мөхәррирләү',
 'watchlistedit-normal-legend' => 'Күҙәтеү исемлегенән биттәрҙе юйыу',
@@ -3674,7 +3674,7 @@ $5
 Биттәрҙе юйыу өсөн, кәрәкле юлдарҙы һайлағыҙ һәм «{{int:Watchlistedit-normal-submit}}» төймәһенә баҫығыҙ.
 Һеҙ шулай уҡ [[Special:EditWatchlist/raw|исемлекте текст рәүешендә үҙгәртә]] алаһығыҙ.',
 'watchlistedit-normal-submit' => 'Биттәрҙе юйырға',
-'watchlistedit-normal-done' => '{{PLURAL:$1|$1 бит|$1 бит}} һеҙҙең күҙәтеү исемлегенән юйылды:',
+'watchlistedit-normal-done' => '{{PLURAL:$1|1=$1 бит|$1 бит}} һеҙҙең күҙәтеү исемлегенән юйылды:',
 'watchlistedit-raw-title' => '«Сей» күҙәтеү исемлеген мөхәррирләү',
 'watchlistedit-raw-legend' => '«Сей» күҙәтеү исемлеген мөхәррирләү',
 'watchlistedit-raw-explain' => 'Түбәндә һеҙҙең күҙәтеү исемлегендә булған биттәр күрһәтелгән. Һеҙ был исемлекте, юлдар өҫтәп йәки юйып, үҙгәртә алаһығыҙ; бер юлға - бер исем.
@@ -3683,8 +3683,8 @@ $5
 'watchlistedit-raw-titles' => 'Яҙмалар:',
 'watchlistedit-raw-submit' => 'Исемлекте яңыртырға',
 'watchlistedit-raw-done' => 'Һеҙҙең күҙәтеү исемлеге яңырҙы.',
-'watchlistedit-raw-added' => '{{PLURAL:$1|1 яҙма|$1 яҙма}} өҫтәлде:',
-'watchlistedit-raw-removed' => '{{PLURAL:$1|1 яҙма|$1 яҙма}} юйылды:',
+'watchlistedit-raw-added' => '{{PLURAL:$1|1=1 яҙма|$1 яҙма}} өҫтәлде:',
+'watchlistedit-raw-removed' => '{{PLURAL:$1|1=1 яҙма|$1 яҙма}} юйылды:',
 
 # Watchlist editing tools
 'watchlisttools-view' => 'Исемлектәге биттәрҙәге үҙгәрештәр',
@@ -3801,7 +3801,7 @@ MediaWiki файҙалы булыр, тигән өмөттә, ләкин БЕР
 'tags-active-yes' => 'Эйе',
 'tags-active-no' => 'Юҡ',
 'tags-edit' => 'үҙгәртергә',
-'tags-hitcount' => '$1 {{PLURAL:$1|үҙгәртеү|үҙгәртеү}}',
+'tags-hitcount' => '$1 {{PLURAL:$1|1=үҙгәртеү|үҙгәртеү}}',
 
 # Special:ComparePages
 'comparepages' => 'Биттәрҙе сағыштырыу',
@@ -3904,9 +3904,9 @@ MediaWiki файҙалы булыр, тигән өмөттә, ләкин БЕР
 'api-error-badtoken' => 'Эске хата: дөрөҫ булмаған токен',
 'api-error-copyuploaddisabled' => 'Был серверҙа URL адрес буйынса йөкләү өҙөлгән',
 'api-error-duplicate' => 'Бындай эстәлекле {{PLURAL:$1|[$2 файл]}}  бар.',
-'api-error-duplicate-archive' => 'Сайтта бындай эстәлекле {{PLURAL:$1|[$2 башҡа файл]}} бар ине инде, ләкин {{PLURAL:$1|ул юйылды|улар юйылды}}',
-'api-error-duplicate-archive-popup-title' => 'Элек юйылған {{PLURAL:$1|файлдың|файлдарҙың}} дубликаты',
-'api-error-duplicate-popup-title' => '{{PLURAL:$1|файлы|файлдары}} дубликаты.',
+'api-error-duplicate-archive' => 'Сайтта бындай эстәлекле {{PLURAL:$1|[$2 башҡа файл]}} бар ине инде, ләкин {{PLURAL:$1|1=ул юйылды|улар юйылды}}',
+'api-error-duplicate-archive-popup-title' => 'Элек юйылған {{PLURAL:$1|1=файлдың|файлдарҙың}} дубликаты',
+'api-error-duplicate-popup-title' => '{{PLURAL:$1|1=файлы|файлдары}} дубликаты.',
 'api-error-empty-file' => 'Һеҙ ебәргән файл буш.',
 'api-error-emptypage' => 'Яңы буш биттәр яһау тыйыла.',
 'api-error-fetchfileerror' => 'Эске хата: файлды күсергән ваҡытта хата китте',
@@ -3915,7 +3915,7 @@ MediaWiki файҙалы булыр, тигән өмөттә, ләкин БЕР
 'api-error-file-too-large' => 'Һеҙ ебәргән файл үтә ҙур.',
 'api-error-filename-tooshort' => 'Файл исеме бик ҡыҫҡа.',
 'api-error-filetype-banned' => 'Был файл төрө тыйылған.',
-'api-error-filetype-banned-type' => '$1 {{PLURAL:$4|тыйылған файл төрө|тыйылған файл төрҙәре}}. Рөхсәт ителгән {{PLURAL:$3|файл төрө|файл төрҙәре}} $2.',
+'api-error-filetype-banned-type' => '$1 {{PLURAL:$4|1=тыйылған файл төрө|тыйылған файл төрҙәре}}. Рөхсәт ителгән {{PLURAL:$3|1=файл төрө|файл төрҙәре}} $2.',
 'api-error-filetype-missing' => 'Был файлдың ҡушымтаһы юҡ',
 'api-error-hookaborted' => 'Һеҙ эшләргә теләгән үҙгәртеүҙәр ҡушымтаны тикшереүсе тарафынан өҙөлдө',
 'api-error-http' => 'Эске хата: серверға бәйләнеп булмай.',
@@ -3942,15 +3942,15 @@ MediaWiki файҙалы булыр, тигән өмөттә, ләкин БЕР
 'api-error-verification-error' => 'Был файл боҙолған, йәки дөрөҫ булмаған ҡушымтаһы бар.',
 
 # Durations
-'duration-seconds' => '$1 {{PLURAL:$1|секунд|секунд}}',
-'duration-minutes' => '$1 {{PLURAL:$1|минут|минут}}',
-'duration-hours' => '$1 {{PLURAL:$1|сәғәт|сәғәт}}',
-'duration-days' => '$1 {{PLURAL:$1|көн|көн}}',
-'duration-weeks' => '$1 {{PLURAL:$1|аҙна|аҙналар|аҙна}}',
-'duration-years' => '$1 {{PLURAL:$1|йыл|йылдар}}',
-'duration-decades' => '$1 {{PLURAL:$1|ун көнлөк|ун көнлөктәр}}',
-'duration-centuries' => '$1 {{PLURAL:$1|быуат|быуаттар}}',
-'duration-millennia' => '$1 {{PLURAL:$1|меңйыллыҡ|меңйыллыҡтар}}',
+'duration-seconds' => '$1 {{PLURAL:$1|1=секунд|секунд}}',
+'duration-minutes' => '$1 {{PLURAL:$1|1=минут|минут}}',
+'duration-hours' => '$1 {{PLURAL:$1|1=сәғәт|сәғәт}}',
+'duration-days' => '$1 {{PLURAL:$1|1=көн|көн}}',
+'duration-weeks' => '$1 {{PLURAL:$1|аҙна|аҙна|аҙналар}}',
+'duration-years' => '$1 {{PLURAL:$1|1=йыл|йылдар}}',
+'duration-decades' => '$1 {{PLURAL:$1|1=ун көнлөк|ун көнлөктәр}}',
+'duration-centuries' => '$1 {{PLURAL:$1|1=быуат|быуаттар}}',
+'duration-millennia' => '$1 {{PLURAL:$1|1=меңйыллыҡ|меңйыллыҡтар}}',
 
 # Image rotation
 'rotate-comment' => 'Рәсем сәғәт йөрөшө буйынса $1{{PLURAL:$1|}} градусҡа боролдо',
index 874da30..db45b4d 100644 (file)
@@ -1319,6 +1319,7 @@ An saimong e-surat na adres dae ipagbuyagyag kunsoarin na an ibang paragamit mak
 'prefs-tokenwatchlist' => 'Paduos',
 'prefs-diffs' => 'Diffs',
 'prefs-help-prefershttps' => 'Ining kamuyahan magkaka-epekto sa masunod mong paglaog.',
+'prefs-tabs-navigation-hint' => 'Pantama: Ika makakagamit nin wala asin too na pansusing pana tanganing magnabigar sa tahaw kan mga tanda na yaon sa listahan nin mga panandaan.',
 
 # User preference: email validation using jQuery
 'email-address-validity-valid' => 'An e-koreo nagpapahiling na balido',
@@ -1505,12 +1506,14 @@ An saimong e-surat na adres dae ipagbuyagyag kunsoarin na an ibang paragamit mak
 'recentchanges-label-bot' => 'Ining pagliwat pinaghimo bilang sarong bot',
 'recentchanges-label-unpatrolled' => 'Ining pagliwat dae pa tabi pinagpatrolyahan',
 'recentchanges-label-plusminus' => 'An kadakulaan nin pahina pinagliwat sa paagi kaining numero nin mga bayta',
+'recentchanges-legend-heading' => "'''Kabalaynan:'''",
 'recentchanges-legend-newpage' => '(hilngon man [[Special:NewPages|listahan kan mga baguhong pahina]])',
+'recentchanges-legend-plusminus' => "(''±saro-duwa-tolo'')",
 'rcnotefrom' => "Sa ibaba iyo an mga kaliwatan poon kan '''$2''' (sagkod sa '''$1''' na ipinapahiling).",
 'rclistfrom' => 'Ipahiling an baguhon na mga kaliwatan magpoon kan $1',
 'rcshowhideminor' => '$1 saradit na mga pagliwat',
 'rcshowhidebots' => '$1 mga gantaw',
-'rcshowhideliu' => '$1 nakalaog na mga paragamit',
+'rcshowhideliu' => '$1 rehistradong mga paragamit',
 'rcshowhideanons' => '$1 mga dae bistong paragamit',
 'rcshowhidepatr' => '$1 patrolyadong mga pagliwat',
 'rcshowhidemine' => '$1 sakong mga pagliliwat',
@@ -1956,6 +1959,7 @@ Ini ngunyan minatukdo-liwat pasiring sa [[$2]].',
 'ninterwikis' => '$1 {{PLURAL:$1|an interwiki|mga interwiki}}',
 'nlinks' => '$1 {{PLURAL:$1|takod|mga takod}}',
 'nmembers' => '$1 {{PLURAL:$1|miyembro|mga miyembro}}',
+'nmemberschanged' => '$1 → $2 {{PLURAL:$2|miyembro|mga miyembro}}',
 'nrevisions' => '$1 {{PLURAL:$1|pagpakarhay|mga pagpakarhay}}',
 'nviews' => '$1 {{PLURAL:$1|hiling|mga hiling}}',
 'nimagelinks' => 'Ginamit sa $1 {{PLURAL:$1|pahina|mga pahina}}',
@@ -2269,6 +2273,7 @@ Hilingón tabì an $2 para mahiling an lista nin mga kaaagi pa sanang pagparà.'
 An pagpupura kan nasambit na mga pahina dae pinagtutugot tanganing maiwasan an aksidenteng pagka-antala kan {{SITENAME}}.',
 'delete-warning-toobig' => 'Ining pahina igwa nin dakulaong historiya sa pagliwat, minasobrang $1 {{PLURAL:$1|rebisyon|mga rebisyon}}.
 An pagpupura kaini mapuwedeng makapag-antala sa mga operasyon kan datos-sarayan kan {{SITENAME}}; magpadagos tabi na igwang pag-iingat.',
+'deleting-backlinks-warning' => "'''Patanid:''' An ibang mga pahina nakatakod sa pahina na muya mong pagpupuraon.",
 
 # Rollback
 'rollback' => 'Mga paghihira na pabalík',
@@ -3592,7 +3597,7 @@ Ikonpirmar tabi na talagang gusto mong gibohon giraray ining pahina.",
 
 # Language selector for translatable SVGs
 'img-lang-default' => '(panugmad na lengguwahe)',
-'img-lang-info' => 'Giboha ining imahe sa $1 $2.',
+'img-lang-info' => 'Giboha ining imahe sa $1. $2',
 'img-lang-go' => 'Dumani',
 
 # Table pager
@@ -3691,13 +3696,14 @@ Ika dapat na nakapagresibe na kan [{{SERVER}}{{SCRIPTPATH}}/COPYING sarong kopya
 'version-entrypoints-header-url' => 'Kilyawan',
 
 # Special:Redirect
-'redirect' => 'Palikwatong sa paagi nin sagunson, paragamit, or rebisyon kan ID',
+'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 ngaran kan sagunson), sarong pahina (ipinagtao an sarong rebisyon kan ID), o sarong pahina nin paragamit (ipinagtao an numerikong ID nin paragamit). Pinaggamitan: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revision/328429]], or [[{{#Special:Redirect}}/user/101]].',
+'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',
 'redirect-value' => 'Halaga:',
 'redirect-user' => 'ID nin Paragamit',
+'redirect-page' => 'ID kan pahina',
 'redirect-revision' => 'Rebisyon kan Pahina',
 'redirect-file' => 'Ngaran nin Sagunson',
 'redirect-not-exists' => 'Halaga dae nanagboan',
index bdba0fb..f7fc9fc 100644 (file)
@@ -387,7 +387,7 @@ $messages = array(
 'subcategories' => 'Падкатэгорыі',
 'category-media-header' => 'Файлы ў катэгорыі «$1»',
 'category-empty' => "''Гэтая катэгорыя ня ўтрымлівае ні старонак, ні файлаў.''",
-'hidden-categories' => '{{PLURAL:$1|Схаваная катэгорыя|Схаваныя катэгорыі}}',
+'hidden-categories' => '{{PLURAL:$1|1=Схаваная катэгорыя|Схаваныя катэгорыі}}',
 'hidden-category-category' => 'Схаваныя катэгорыі',
 'category-subcat-count' => '{{PLURAL:$2|Гэтая катэгорыя зьмяшчае наступную падкатэгорыю.|Гэтая катэгорыя зьмяшчае {{PLURAL:$1|наступную $1 падкатэгорыю|наступныя $1 падкатэгорыі|наступныя $1 падкатэгорыяў}} з $2 агулам.}}',
 'category-subcat-count-limited' => 'У гэтай катэгорыі $1 {{PLURAL:$1|падкатэгорыя|падкатэгорыі|падкатэгорыяў}}.',
@@ -525,7 +525,7 @@ $1',
 
 'badaccess' => 'Памылка доступу',
 'badaccess-group0' => 'Вам не дазволена выканаць запытанае Вамі дзеяньне.',
-'badaccess-groups' => 'Запытанае Вамі дзеяньне дазволенае толькі ўдзельнікам {{PLURAL:$2|з групы|адной з групаў:}} $1.',
+'badaccess-groups' => 'Запытанае Вамі дзеяньне дазволенае толькі ўдзельнікам {{PLURAL:$2|1=з групы|адной з групаў:}} $1.',
 
 'versionrequired' => 'Патрабуецца MediaWiki вэрсіі $1',
 'versionrequiredtext' => 'Для карыстаньня гэтай старонкай патрабуецца MediaWiki вэрсіі $1.
@@ -535,10 +535,10 @@ $1',
 'pagetitle' => '$1 — {{SITENAME}}',
 'retrievedfrom' => 'Атрымана з «$1»',
 'youhavenewmessages' => 'Вы атрымалі $1 ($2).',
-'youhavenewmessagesfromusers' => 'Вы атрымалі $1 ад {{PLURAL:$3|іншага ўдзельніка|$3 удзельнікаў}} ($2).',
+'youhavenewmessagesfromusers' => '{{PLURAL:$4|Вы}} атрымалі $1 ад {{PLURAL:$3|1=іншага ўдзельніка|$3 удзельнікаў}} ($2).',
 'youhavenewmessagesmanyusers' => 'Вы атрымалі $1 ад некалькіх удзельнікаў ($2).',
-'newmessageslinkplural' => '{{PLURAL:$1|новае паведамленьне|новыя паведамленьні}}',
-'newmessagesdifflinkplural' => '{{PLURAL:$1|апошняя зьмена|апошнія зьмены}}',
+'newmessageslinkplural' => '{{PLURAL:$1|1=новае паведамленьне|999=новыя паведамленьні}}',
+'newmessagesdifflinkplural' => '{{PLURAL:$1|1=апошняя зьмена|999=апошнія зьмены}}',
 'youhavenewmessagesmulti' => 'Вы атрымалі новыя паведамленьні на $1',
 'editsection' => 'рэдагаваць',
 'editold' => 'рэдагаваць',
@@ -631,8 +631,8 @@ $1',
 'no-null-revision' => 'Немагчыма стварыць нулявую вэрсію для старонкі «$1»',
 'badtitle' => 'Няслушная назва',
 'badtitletext' => 'Запытаная назва старонкі няслушная ці пустая, альбо няслушна ўказаная міжмоўная ці інтэрвікі-назва. Яна можа ўтрымліваць сымбалі, якія нельга ўжываць у назвах.',
-'perfcached' => 'Наступныя зьвесткі кэшаваныя і могуць быць састарэлымі. У кэшы {{PLURAL:$1|даступны|даступныя}} ня больш за $1 {{PLURAL:$1|вынік|вынікі|вынікаў}}.',
-'perfcachedts' => 'Наступныя зьвесткі кэшаваныя і апошні раз былі абноўленыя $1. У кэшы {{PLURAL:$4|даступны|даступныя}} ня больш за $4 {{PLURAL:$4|вынік|вынікі|вынікаў}}.',
+'perfcached' => 'Наступныя зьвесткі кэшаваныя і могуць быць састарэлымі. У кэшы {{PLURAL:$1|1=даступны|даступныя}} ня больш за $1 {{PLURAL:$1|вынік|вынікі|вынікаў}}.',
+'perfcachedts' => 'Наступныя зьвесткі кэшаваныя і апошні раз былі абноўленыя $1. У кэшы {{PLURAL:$4|1=даступны|даступныя}} ня больш за $4 {{PLURAL:$4|вынік|вынікі|вынікаў}}.',
 'querypage-no-updates' => 'Абнаўленьні гэтай старонкі цяпер адключаныя. Зьвесткі ня будуць абнаўляцца.',
 'viewsource' => 'Паказаць крыніцу',
 'viewsource-title' => 'Прагляд крыніцы для $1',
@@ -645,7 +645,7 @@ $1',
 'editinginterface' => "'''Увага:''' Вы рэдагуеце старонку, якая ўтрымлівае сыстэмнае паведамленьне MediaWiki.
 Яе зьмена паўплывае на вонкавы выгляд інтэрфэйсу іншых удзельнікаў у гэтай вікі.
 Каб дадаць ці зьмяніць пераклад ва ўсіх праектах, зьвярніцеся на [//translatewiki.net/wiki/Main_Page?setlang=be-tarask translatewiki.net] — праект для лякалізацыі MediaWiki.",
-'cascadeprotected' => 'Гэтая старонка абароненая ад рэдагаваньня, таму што яна ўключаная ў {{PLURAL:$1|наступную старонку, якая была абароненая|наступныя старонкі, якія былі абароненыя}} з актывізаванай опцыяй «каскаднай абароны»:
+'cascadeprotected' => 'Гэтая старонка абароненая ад рэдагаваньня, таму што яна ўключаная ў {{PLURAL:$1|1=наступную старонку, якая была абароненая|наступныя старонкі, якія былі абароненыя}} з актывізаванай опцыяй «каскаднай абароны»:
 $2',
 'namespaceprotected' => "Вы ня маеце правоў на рэдагаваньне старонак у прасторы назваў '''$1'''.",
 'customcssprotected' => 'Вы ня маеце правоў на рэдагаваньне гэтай CSS-старонкі, таму што яна ўтрымлівае пэрсанальныя налады іншага ўдзельніка.',
@@ -663,7 +663,8 @@ $2',
 'invalidtitle-knownnamespace' => 'Няслушная назва ў прасторы «$2»: «$3»',
 'invalidtitle-unknownnamespace' => 'Няслушная назва ў невядомай прасторы $1: «$2»',
 'exception-nologin' => 'Вы не ўвайшлі ў сыстэму',
-'exception-nologin-text' => 'Гэтая старонка ці дзеяньне патрабуе, каб вы ўвайшлі ў сыстэму.',
+'exception-nologin-text' => 'Неабходна [[Special:Userlogin|ўвайсьці]], каб атрымаць доступ да гэтай старонкі або дзеяньня.',
+'exception-nologin-text-manual' => 'Неабходна $1, каб мець доступ да гэтай старонкі або дзеяньня.',
 
 # Virus scanner
 'virus-badscanner' => "Няслушная канфігурацыя: невядомы антывірусны сканэр: ''$1''",
@@ -842,19 +843,19 @@ $2',
 'passwordreset-capture-help' => 'Калі Вы пазначыце гэтае поле, электронны ліст (з часовым паролем), будзе паказаны Вам як толькі ён будзе дасланы ўдзельніку.',
 'passwordreset-email' => 'Адрас электроннай пошты:',
 'passwordreset-emailtitle' => 'Падрабязнасьці рахунку ў {{GRAMMAR:месны|{{SITENAME}}}}',
-'passwordreset-emailtext-ip' => 'Нехта (магчыма Вы, з IP-адрасу $1) зрабіў запыт на вашага паролю ў {{GRAMMAR:месны|{{SITENAME}}}} ($4). {{PLURAL:$3|Наступны рахунак удзельніка зьвязаны|Наступныя рахункі ўдзельнікаў зьвязаныя}} з гэтым адрасам электроннай пошты:
+'passwordreset-emailtext-ip' => 'Нехта (магчыма Вы, з IP-адрасу $1) зрабіў запыт на вашага паролю ў {{GRAMMAR:месны|{{SITENAME}}}} ($4). {{PLURAL:$3|1=Наступны рахунак удзельніка зьвязаны|Наступныя рахункі ўдзельнікаў зьвязаныя}} з гэтым адрасам электроннай пошты:
 
 $2
 
-{{PLURAL:$3|Гэты часовы пароль будзе|Гэтыя часовыя паролі будуць}} дзейнічаць $5 {{PLURAL:|дзень|дні|дзён}}.
+{{PLURAL:$3|1=Гэты часовы пароль будзе|Гэтыя часовыя паролі будуць}} дзейнічаць $5 {{PLURAL:|дзень|дні|дзён}}.
 Цяпер Вам неабходна ўвайсьці і выбраць новы пароль. Калі нехта іншы зрабіў гэты запыт,
 ці Вы ўспомнілі Ваш пачатковы пароль, які ня хочаце мяняць,
 Вы можаце праігнараваць гэтае паведамленьне, і працягваць выкарыстоўваць стары пароль.',
-'passwordreset-emailtext-user' => 'Удзельнік $1 зрабіў запыт на скіданьне вашага паролю ў {{GRAMMAR:месны|{{SITENAME}}}} ($4). {{PLURAL:$3|Наступны рахунак удзельніка зьвязаны|Наступныя рахункі ўдзельнікаў зьвязаныя}} з гэтым адрасам электроннай пошты:
+'passwordreset-emailtext-user' => 'Удзельнік $1 зрабіў запыт на скіданьне вашага паролю ў {{GRAMMAR:месны|{{SITENAME}}}} ($4). {{PLURAL:$3|1=Наступны рахунак удзельніка зьвязаны|Наступныя рахункі ўдзельнікаў зьвязаныя}} з гэтым адрасам электроннай пошты:
 
 $2
 
-{{PLURAL:$3|Гэты часовы пароль будзе|Гэтыя часовыя паролі будуць}} дзейнічаць $5 {{PLURAL:|дзень|дні|дзён}}.
+{{PLURAL:$3|1=Гэты часовы пароль будзе|Гэтыя часовыя паролі будуць}} дзейнічаць $5 {{PLURAL:|дзень|дні|дзён}}.
 Цяпер Вам неабходна ўвайсьці і выбраць новы пароль. Калі нехта іншы зрабіў гэты запыт,
 ці Вы ўспомнілі Ваш пачатковы пароль, які ня хочаце мяняць,
 Вы можаце праігнараваць гэтае паведамленьне, і працягваць выкарыстоўваць стары пароль.',
@@ -1052,23 +1053,23 @@ $2
 Апошні запіс з журнала пададзены ніжэй для даведкі:",
 'semiprotectedpagewarning' => "'''Заўвага:''' Гэтая старонка была абароненая, і рэдагаваць яе могуць толькі зарэгістраваныя ўдзельнікі.
 Апошні запіс з журнала пададзены ніжэй для даведкі:",
-'cascadeprotectedwarning' => "'''Папярэджаньне:''' Гэтая старонка абароненая, толькі ўдзельнікі з правамі адміністратараў могуць рэдагаваць яе, таму што яна ўключаная ў {{PLURAL:$1|наступную каскадна-абароненую старонку|наступныя каскадна-абароненыя старонкі}}:",
+'cascadeprotectedwarning' => "'''Папярэджаньне:''' Гэтая старонка абароненая, толькі ўдзельнікі з правамі адміністратараў могуць рэдагаваць яе, таму што яна ўключаная ў {{PLURAL:$1|1=наступную каскадна-абароненую старонку|наступныя каскадна-абароненыя старонкі}}:",
 'titleprotectedwarning' => "'''Папярэджаньне: гэтая старонка была абароненая і для яе стварэньня патрабуюцца [[Special:ListGroupRights|адпаведныя правы]].'''
 Апошні запіс з журнала пададзены ніжэй для даведкі:",
-'templatesused' => 'На гэтай старонцы {{PLURAL:$1|выкарыстаны наступны шаблён|выкарыстаныя наступныя шаблёны}}:',
-'templatesusedpreview' => 'У гэтым папярэднім праглядзе {{PLURAL:$1|выкарыстаны наступны шаблён|выкарыстаныя наступныя шаблёны}}:',
-'templatesusedsection' => 'У гэтай сэкцыі {{PLURAL:$1|выкарыстаны наступны шаблён|выкарыстаныя наступныя шаблёны}}:',
+'templatesused' => 'На гэтай старонцы {{PLURAL:$1|1=выкарыстаны наступны шаблён|выкарыстаныя наступныя шаблёны}}:',
+'templatesusedpreview' => 'У гэтым папярэднім праглядзе {{PLURAL:$1|1=выкарыстаны наступны шаблён|выкарыстаныя наступныя шаблёны}}:',
+'templatesusedsection' => 'У гэтай сэкцыі {{PLURAL:$1|1=выкарыстаны наступны шаблён|выкарыстаныя наступныя шаблёны}}:',
 'template-protected' => '(абаронены)',
 'template-semiprotected' => '(часткова абароненая)',
-'hiddencategories' => 'Гэтая старонка належыць да $1 {{PLURAL:$1|схаванай катэгорыі|схаваных катэгорыяў}}:',
+'hiddencategories' => 'Гэтая старонка належыць да $1 {{PLURAL:$1|1=схаванай катэгорыі|схаваных катэгорыяў}}:',
 'nocreatetext' => 'У {{GRAMMAR:месны|{{SITENAME}}}} абмежаванае стварэньне новых старонак.
 Вы можаце вярнуцца і рэдагаваць існуючую старонку, альбо [[Special:UserLogin|ўвайсьці ў сыстэму ці стварыць рахунак]].',
 'nocreate-loggedin' => 'Вы ня маеце дазволу на стварэньне новых старонак.',
 'sectioneditnotsupported-title' => 'Рэдагаваньне сэкцыяў не падтрымліваецца',
 'sectioneditnotsupported-text' => 'Рэдагаваньне сэкцыяў не падтрымліваецца ў гэтай старонцы рэдагаваньня',
 'permissionserrors' => 'Памылка дазволу',
-'permissionserrorstext' => 'Вы ня маеце дазволу на гэтае дзеяньне па {{PLURAL:$1|наступнай прычыне|наступных прычынах}}:',
-'permissionserrorstext-withaction' => 'Вы ня маеце дазволу на $2 па {{PLURAL:$1|наступнай прычыне|наступных прычынах}}:',
+'permissionserrorstext' => 'Вы ня маеце дазволу на гэтае дзеяньне па {{PLURAL:$1|1=наступнай прычыне|наступных прычынах}}:',
+'permissionserrorstext-withaction' => 'Вы ня маеце дазволу на $2 па {{PLURAL:$1|1=наступнай прычыне|наступных прычынах}}:',
 'recreate-moveddeleted-warn' => "'''Увага: Вы ствараеце старонку, якая раней была выдаленая.'''
 
 Упэўніцеся, што стварэньне гэтай старонкі неабходнае.
@@ -1202,8 +1203,8 @@ $2
 'revdelete-no-file' => 'Пазначаны файл не існуе.',
 'revdelete-show-file-confirm' => 'Вы ўпэўненыя, што жадаеце паглядзець выдаленую вэрсію файла «<nowiki>$1</nowiki>» ад $2 $3?',
 'revdelete-show-file-submit' => 'Так',
-'revdelete-selected' => "'''{{PLURAL:$2|Выбраная вэрсія|Выбраныя вэрсіі}} старонкі [[:$1]]:'''",
-'logdelete-selected' => "'''{{PLURAL:$1|Выбраны запіс|Выбраныя запісы}} журнала падзеяў:'''",
+'revdelete-selected' => "'''{{PLURAL:$2|1=Выбраная вэрсія|Выбраныя вэрсіі}} старонкі [[:$1]]:'''",
+'logdelete-selected' => "'''{{PLURAL:$1|1=Выбраны запіс|Выбраныя запісы}} журнала падзеяў:'''",
 'revdelete-text' => "'''Выдаленыя вэрсіі і падзеі будуць паказвацца ў гісторыі старонкі і журналах, але частка іх зьместу ня будзе даступная для звычайных удзельнікаў.'''
 Іншыя адміністратары {{GRAMMAR:родны|{{SITENAME}}}} будуць мець магчымасьць прагляду зьместу і аднаўленьня старонкі праз гэты інтэрфэйс, калі ня будуць уведзеныя дадатковыя абмежаваньні.",
 'revdelete-confirm' => 'Калі ласка, пацьвердзіце, што Вы сапраўды жадаеце зрабіць гэта, разумееце наступствы і робіце гэта ў адпаведнасьці з [[{{MediaWiki:Policy-url}}|правіламі]].',
@@ -1223,7 +1224,7 @@ $2
 'revdelete-suppress' => 'Схаваць зьвесткі ад адміністратараў як і ад іншых удзельнікаў',
 'revdelete-unsuppress' => 'Зьняць абмежаваньні з адноўленых вэрсіяў',
 'revdelete-log' => 'Прычына:',
-'revdelete-submit' => 'Ужыць для {{PLURAL:$1|выбранай вэрсіі|выбраных вэрсіяў}}',
+'revdelete-submit' => 'Ужыць для {{PLURAL:$1|1=выбранай вэрсіі|выбраных вэрсіяў}}',
 'revdelete-success' => "'''Бачнасьць вэрсіі пасьпяхова абноўленая.'''",
 'revdelete-failure' => "'''Немагчыма абнавіць бачнасьць вэрсіі:'''
 $1",
@@ -1302,7 +1303,7 @@ $1",
 'diff-empty' => '(Розьніцы няма)',
 'diff-multi' => '($1 {{PLURAL:$1|прамежная вэрсія|прамежныя вэрсіі|прамежных вэрсіяў}} $2 {{PLURAL:$2|удзельніка|удзельнікаў|удзельнікаў}} {{PLURAL:$1|не паказаная|не паказаныя|не паказаныя}})',
 'diff-multi-manyusers' => '($1 {{PLURAL:$1|прамежная вэрсія|прамежныя вэрсіі|прамежных вэрсіяў}} $2 {{PLURAL:$2|удзельніка|удзельнікаў|удзельнікаў}} {{PLURAL:$1|не паказаная|не паказаныя|не паказаныя}})',
-'difference-missing-revision' => '{{PLURAL:$2|Адна вэрсія|$2 вэрсіі}} з гэтымі адрозьненьнямі ($1) {{PLURAL:$2|не была|не былі}} знойдзеныя.
+'difference-missing-revision' => '{{PLURAL:$2|1=Адна вэрсія|$2 вэрсіі}} з гэтымі адрозьненьнямі ($1) {{PLURAL:$2|1=не была|не былі}} знойдзеныя.
 
 Звычайна гэта здараецца з-за перахода па састарэлай спасылцы на старонку, якая была выдаленая.
 Падрабязнасьці можна знайсьці ў [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} журнале выдаленьняў].',
@@ -1347,7 +1348,7 @@ $1",
 'searchall' => 'усе',
 'showingresults' => "Ніжэй {{PLURAL:$1|паданы|паданыя|паданыя}} да '''$1''' {{PLURAL:$1|выніку|вынікаў|вынікаў}}, пачынаючы з #<b>$2</b>.",
 'showingresultsnum' => "Ніжэй паказаны сьпіс з '''$3''' {{PLURAL:$3|выніка|вынікаў|вынікаў}}, пачынаючы ад № '''$2'''.",
-'showingresultsheader' => "{{PLURAL:$5|Вынік '''$1''' з '''$3'''|Вынікі '''$1 - $2''' з '''$3'''}} для '''$4'''",
+'showingresultsheader' => "{{PLURAL:$5|1=Вынік '''$1''' з '''$3'''|Вынікі '''$1 - $2''' з '''$3'''}} для '''$4'''",
 'search-nonefound' => 'Супадзеньняў па запыце ня знойдзена.',
 'powersearch-legend' => 'Удасканалены пошук',
 'powersearch-ns' => 'Шукаць у прасторах назваў:',
@@ -1364,6 +1365,7 @@ $1",
 'preferences' => 'Налады',
 'mypreferences' => 'Налады',
 'prefs-edits' => 'Колькасьць рэдагаваньняў:',
+'prefsnologintext2' => 'Неабходна $1, каб зьмяніць вашыя налады.',
 'prefs-skin' => 'Афармленьне',
 'skin-preview' => 'Папярэдні прагляд',
 'datedefault' => 'Па змоўчаньні',
@@ -1433,7 +1435,7 @@ $1",
 'youremail' => 'Адрас электроннай пошты:',
 'username' => 'Імя {{GENDER:$1|ўдзельніка|ўдзельніцы}}:',
 'uid' => 'ID {{GENDER:$1|удзельніка|удзельніцы}}:',
-'prefs-memberingroups' => '{{GENDER:$2|Удзельнік|Удзельніца}} {{PLURAL:$1|групы|групаў}}:',
+'prefs-memberingroups' => '{{GENDER:$2|Удзельнік|Удзельніца}} {{PLURAL:$1|1=групы|групаў}}:',
 'prefs-registration' => 'Час рэгістрацыі:',
 'yourrealname' => 'Сапраўднае імя:',
 'yourlanguage' => 'Мова інтэрфэйсу:',
@@ -1661,12 +1663,13 @@ $1",
 'recentchanges-label-bot' => 'Гэтае рэдагаваньне зробленае робатам',
 'recentchanges-label-unpatrolled' => 'Гэтае рэдагаваньне яшчэ не было адпатруляванае',
 'recentchanges-label-plusminus' => 'Памер старонкі зьмяніўся на такую колькасьць байтаў',
+'recentchanges-legend-heading' => "'''Легенда:'''",
 'recentchanges-legend-newpage' => '(глядзіце таксама [[Special:NewPages|сьпіс новых старонак]])',
 'rcnotefrom' => "Ніжэй знаходзяцца зьмены з '''$2''' (да '''$1''' на старонку).",
 'rclistfrom' => 'Паказаць зьмены з $1',
 'rcshowhideminor' => '$1 дробныя праўкі',
 'rcshowhidebots' => '$1 робатаў',
-'rcshowhideliu' => '$1 зарэгістраваных',
+'rcshowhideliu' => '$1 зарэгістраваных карыстальнікаў',
 'rcshowhideanons' => '$1 ананімаў',
 'rcshowhidepatr' => '$1 патруляваныя праўкі',
 'rcshowhidemine' => '$1 мае праўкі',
@@ -1740,9 +1743,9 @@ $1",
 'filetype-badmime' => 'Загрузка файлаў тыпу MIME «$1» забароненая.',
 'filetype-bad-ie-mime' => 'Немагчыма загрузіць гэты файл, таму што Internet Explorer вызначыў яго як «$1», што азначае, што тып гэтага файла забаронены і патэнцыяльна небясьпечны.',
 'filetype-unwanted-type' => "'''«.$1»''' — непажаданы тып файла.
-{{PLURAL:$3|Пажаданым тыпам файла зьяўляецца|Пажаданымі тыпамі файлаў зьяўляюцца}} $2.",
-'filetype-banned-type' => "'''«.$1»''' — {{PLURAL:$4|забаронены тып файлаў|забароненыя тыпы файлаў}}.
-{{PLURAL:$3|Дазволены тып файлаў|Дазволеныя тыпы файлаў}}: $2.",
+{{PLURAL:$3|1=Пажаданым тыпам файла зьяўляецца|Пажаданымі тыпамі файлаў зьяўляюцца}} $2.",
+'filetype-banned-type' => "'''«.$1»''' — {{PLURAL:$4|1=забаронены тып файлаў|забароненыя тыпы файлаў}}.
+{{PLURAL:$3|1=Дазволены тып файлаў|Дазволеныя тыпы файлаў}}: $2.",
 'filetype-missing' => 'Файл ня мае пашырэньня (напрыклад, «.jpg»).',
 'empty-file' => 'Дасланы Вамі файл пусты.',
 'file-too-large' => 'Дасланы Вамі файл занадта вялікі.',
@@ -1780,7 +1783,7 @@ $1",
 Калі ласка, вярніцеся назад і загрузіце гэты файл з новай назвай. [[File:$1|thumb|center|$1]]',
 'fileexists-shared-forbidden' => 'Файл з такой назвай ужо існуе ў агульным сховішчы файлаў.
 Калі Вы жадаеце загрузіць Ваш файл, вярніцеся назад і загрузіце гэты файл з новай назвай. [[File:$1|thumb|center|$1]]',
-'file-exists-duplicate' => 'Гэты файл дублюе {{PLURAL:$1|наступны файл|наступныя файлы}}:',
+'file-exists-duplicate' => 'Гэты файл дублюе {{PLURAL:$1|1=наступны файл|наступныя файлы}}:',
 'file-deleted-duplicate' => 'Падобны файл ([[:$1]]) ужо выдаляўся. Калі ласка, паглядзіце гісторыю выдаленьняў гэтага файла перад яго паўторнай загрузкай.',
 'uploadwarning' => 'Папярэджаньне',
 'uploadwarning-text' => 'Калі ласка, зьмяніце апісаньне файла ніжэй і паспрабуйце ізноў.',
@@ -1970,14 +1973,14 @@ $1',
 'filehist-comment' => 'Камэнтар',
 'filehist-missing' => 'Файл адсутнічае',
 'imagelinks' => 'Выкарыстаньне файла',
-'linkstoimage' => '{{PLURAL:$1|Наступная старонка спасылаецца|Наступныя старонкі спасылаюцца}} на гэты файл:',
+'linkstoimage' => '{{PLURAL:$1|1=Наступная старонка спасылаецца|Наступныя старонкі спасылаюцца}} на гэты файл:',
 'linkstoimage-more' => 'Больш чым $1 {{PLURAL:$1|старонка спасылаецца|старонкі спасылаюцца|старонак спасылаюцца}} на гэты файл.
 У гэтым сьпісе толькі $1 {{PLURAL:$1|спасылка|спасылкі|спасылак}} на гэты файл.
 Даступны таксама [[Special:WhatLinksHere/$2|поўны сьпіс]].',
 'nolinkstoimage' => 'Ніводная старонка не спасылаецца на гэты файл.',
 'morelinkstoimage' => 'Паказаць [[Special:WhatLinksHere/$1|болей спасылак]] на гэты файл.',
 'linkstoimage-redirect' => '$1 (перанакіраваньне на файл) $2',
-'duplicatesoffile' => '{{PLURAL:$1|Наступны файл дублюе|Наступныя файлы дублююць}} гэты файл ([[Special:FileDuplicateSearch/$2|падрабязнасьці]]):',
+'duplicatesoffile' => '{{PLURAL:$1|1=Наступны файл дублюе|Наступныя файлы дублююць}} гэты файл ([[Special:FileDuplicateSearch/$2|падрабязнасьці]]):',
 'sharedupload' => 'Гэты файл паходзіць з $1 і можа выкарыстоўвацца іншымі праектамі.',
 'sharedupload-desc-there' => 'Гэты файл паходзіць з $1 і можа выкарыстоўвацца іншымі праектамі.
 Калі ласка, глядзіце падрабязнасьці на [$2 старонцы апісаньня файла].',
@@ -2046,7 +2049,7 @@ $1',
 
 # Random page
 'randompage' => 'Выпадковая старонка',
-'randompage-nopages' => 'Няма старонак у {{PLURAL:$2|наступнай прасторы|наступных прасторах}} назваў: $1.',
+'randompage-nopages' => 'Няма старонак у {{PLURAL:$2|1=наступнай прасторы|наступных прасторах}} назваў: $1.',
 
 # Random page in category
 'randomincategory' => 'Выпадковая старонка ў катэгорыі',
@@ -2110,9 +2113,10 @@ $1',
 # Miscellaneous special pages
 'nbytes' => '$1 {{PLURAL:$1|байт|байты|байтаў}}',
 'ncategories' => '$1 {{PLURAL:$1|катэгорыя|катэгорыі|катэгорыяў}}',
-'ninterwikis' => '$1 {{PLURAL:$1|інтэрвікі|інтэрвікі}}',
+'ninterwikis' => '$1 {{PLURAL:$1|1=інтэрвікі|інтэрвікі}}',
 'nlinks' => '$1 {{PLURAL:$1|спасылка|спасылкі|спасылак}}',
 'nmembers' => '$1 {{PLURAL:$1|элемэнт|элемэнты|элемэнтаў}}',
+'nmemberschanged' => '$1 → $2 {{PLURAL:$2|элемэнт|элемэнты|элемэнтаў}}',
 'nrevisions' => '$1 {{PLURAL:$1|вэрсія|вэрсіі|вэрсіяў}}',
 'nviews' => '$1 {{PLURAL:$1|прагляд|прагляды|праглядаў}}',
 'nimagelinks' => 'Выкарыстоўваецца на $1 {{PLURAL:$1|старонцы|старонках|старонках}}',
@@ -2218,7 +2222,7 @@ $1',
 
 # Special:Categories
 'categories' => 'Катэгорыі',
-'categoriespagetext' => '{{PLURAL:$1|Наступная катэгорыя зьмяшчае|Наступныя катэгорыі зьмяшчаюць}} старонкі і/альбо мэдыяфайлы.
+'categoriespagetext' => '{{PLURAL:$1|1=Наступная катэгорыя зьмяшчае|Наступныя катэгорыі зьмяшчаюць}} старонкі і/альбо мэдыяфайлы.
 Тут не паказаныя [[Special:UnusedCategories|катэгорыі, якія не выкарыстоўваюцца]].
 Глядзіце таксама [[Special:WantedCategories|сьпіс запатрабаваных катэгорыяў]].',
 'categoriesfrom' => 'Паказаць катэгорыі, пачынаючы з:',
@@ -2237,7 +2241,7 @@ $1',
 'linksearch-ok' => 'Шукаць',
 'linksearch-text' => 'Можна ўжываць сымбалі падстаноўкі, напрыклад, «*.wikipedia.org».<br />
 Неабходны дамэн першага ўзроўню, напрыклад, «*.org».<br />
-{{PLURAL:$2|Пратакол, які падтрымліваецца|Пратаколы, якія падтрымліваюцца}}: <code>$1</code> (дапомна http://, калі пратакол не пазначаны).',
+{{PLURAL:$2|1=Пратакол, які падтрымліваецца|Пратаколы, якія падтрымліваюцца}}: <code>$1</code> (дапомна http://, калі пратакол не пазначаны).',
 'linksearch-line' => 'Спасылка на $1 з $2',
 'linksearch-error' => 'Сымбалі падстаноўкі могуць ужывацца толькі ў пачатку адрасоў.',
 
@@ -2267,12 +2271,12 @@ $1',
 'listgrouprights-rights' => 'Правы',
 'listgrouprights-helppage' => 'Help:Правы групаў удзельнікаў',
 'listgrouprights-members' => '(сьпіс удзельнікаў групы)',
-'listgrouprights-addgroup' => 'можа дадаваць {{PLURAL:$2|групу|групы}}: $1',
-'listgrouprights-removegroup' => 'можа выдаляць {{PLURAL:$2|групу|групы}}: $1',
+'listgrouprights-addgroup' => 'можа дадаваць {{PLURAL:$2|1=групу|групы}}: $1',
+'listgrouprights-removegroup' => 'можа выдаляць {{PLURAL:$2|1=групу|групы}}: $1',
 'listgrouprights-addgroup-all' => 'можа дадаваць усе групы',
 'listgrouprights-removegroup-all' => 'можа выдаляць усе групы',
-'listgrouprights-addgroup-self' => 'Можа дадаць уласны рахунак да {{PLURAL:$2|групы|групаў}}: $1',
-'listgrouprights-removegroup-self' => 'Можа выдаліць уласны рахунак з {{PLURAL:$2|групы|групаў}}: $1',
+'listgrouprights-addgroup-self' => 'Можа дадаць уласны рахунак да {{PLURAL:$2|1=групы|групаў}}: $1',
+'listgrouprights-removegroup-self' => 'Можа выдаліць уласны рахунак з {{PLURAL:$2|1=групы|групаў}}: $1',
 'listgrouprights-addgroup-self-all' => 'Можа дадаць уласны рахунак да ўсіх груп',
 'listgrouprights-removegroup-self-all' => 'Можа выдаліць уласны рахунак з ўсіх груп',
 
@@ -2525,7 +2529,7 @@ $UNWATCHURL
 'undeletepage' => 'Прагляд і аднаўленьне выдаленых старонак',
 'undeletepagetitle' => "'''Ніжэй паданыя выдаленыя вэрсіі [[:$1|$1]]'''.",
 'viewdeletedpage' => 'Паказаць выдаленыя старонкі',
-'undeletepagetext' => '{{PLURAL:$1|Наступная старонка была выдаленая, але яна знаходзяцца ў архіве і можа быць адноўленая|Наступныя старонкі былі выдаленыя, але яны знаходзяцца ў архіве і могуць быць адноўленыя}}.
+'undeletepagetext' => '{{PLURAL:$1|1=Наступная старонка была выдаленая, але яна знаходзяцца ў архіве і можа быць адноўленая|Наступныя старонкі былі выдаленыя, але яны знаходзяцца ў архіве і могуць быць адноўленыя}}.
 Архіў пэрыядычна чысьціцца.',
 'undelete-fieldset-title' => 'Аднавіць вэрсіі',
 'undeleteextrahelp' => "Для поўнага аднаўленьня гісторыі рэдагаваньня старонкі, пакіньце ўсе адзнакі нявызначнымі і націсьніце '''''{{int:undeletebtn}}'''''.
@@ -2690,7 +2694,7 @@ $1',
 'blocklist-reason' => 'Прычына',
 'ipblocklist-submit' => 'Шукаць',
 'ipblocklist-localblock' => 'Лякальнае блякаваньне',
-'ipblocklist-otherblocks' => '{{PLURAL:$1|Іншае блякаваньне|Іншыя блякаваньні}}',
+'ipblocklist-otherblocks' => '{{PLURAL:$1|1=Іншае блякаваньне|Іншыя блякаваньні}}',
 'infiniteblock' => 'назаўсёды',
 'expiringblock' => 'канчаецца $1 $2',
 'anononlyblock' => 'толькі ананімаў',
@@ -2728,7 +2732,7 @@ $1',
 'ipb_hide_invalid' => 'Немагчыма схаваць гэты рахунак; верагодна зь яго зроблена зашмат рэдагаваньняў.',
 'ipb_already_blocked' => '«$1» ужо заблякаваны',
 'ipb-needreblock' => '$1 ужо заблякаваны. Вы жадаеце зьмяніць парамэтры?',
-'ipb-otherblocks-header' => '{{PLURAL:$1|Іншае блякаваньне|Іншыя блякаваньні}}',
+'ipb-otherblocks-header' => '{{PLURAL:$1|1=Іншае блякаваньне|Іншыя блякаваньні}}',
 'unblock-hideuser' => 'Вы ня можаце разблякаваць гэтага ўдзельніка, таму што яго імя было схаванае.',
 'ipb_cant_unblock' => 'Памылка: ID блякаваньня $1 ня знойдзена. Верагодна яно было ўжо зьнятае.',
 'ipb_blocked_as_range' => 'Памылка: IP-адрас $1 быў заблякаваны наўпрост і ня можа быць разблякаваны.
@@ -2823,8 +2827,8 @@ $1',
 'movepage-max-pages' => '$1 {{PLURAL:$1|старонка была перанесеная|старонкі былі перанесеныя|старонак былі перанесеныя}} — гэта дазволены максымум, больш аўтаматычных пераносаў ня будзе.',
 'movelogpage' => 'Журнал пераносаў',
 'movelogpagetext' => 'Ніжэй пададзены сьпіс перанесеных старонак.',
-'movesubpage' => '{{PLURAL:$1|Падстаронка|Падстаронкі}}',
-'movesubpagetext' => 'Гэтая старонка мае $1 {{PLURAL:$1|падстаронку|падстаронкі|падстаронак}}, {{PLURAL:$1|якая паказаная ніжэй|якія паказаныя ніжэй}}.',
+'movesubpage' => '{{PLURAL:$1|1=Падстаронка|Падстаронкі}}',
+'movesubpagetext' => 'Гэтая старонка мае $1 {{PLURAL:$1|падстаронку|падстаронкі|падстаронак}}, {{PLURAL:$1|1=якая паказаная ніжэй|якія паказаныя ніжэй}}.',
 'movenosubpage' => 'Гэтая старонка ня мае падстаронак.',
 'movereason' => 'Прычына:',
 'revertmove' => 'адкат',
@@ -2961,7 +2965,7 @@ $2',
 'import-error-special' => 'Старонка «$1» не была імпартаваная, таму што яна належыць да спэцыяльнай прасторы назваў, старонкі ў якой не дазволеныя.',
 'import-error-invalid' => 'Старонка «$1» не была імпартаваная з-за няслушнасьці назвы.',
 'import-error-unserialize' => 'Не атрымалася дэсэрыялізаваць вэрсію $2 старонкі «$1». Меркавалася, што вэрсія выкарыстоўвала мадэль зьвестак $3 і была сэрыялізавана ў фармаце $4.',
-'import-options-wrong' => '{{PLURAL:$2|Няслушная налада|Няслушныя налады}}: <nowiki>$1</nowiki>',
+'import-options-wrong' => '{{PLURAL:$2|1=Няслушная налада|Няслушныя налады}}: <nowiki>$1</nowiki>',
 'import-rootpage-invalid' => 'Пазначаная назва карнявой старонкі няслушная.',
 'import-rootpage-nosubpage' => 'Падстаронкі ў прасторы назваў «$1» карнявой старонкі не дазволеныя.',
 
@@ -3059,14 +3063,14 @@ $2',
 'notacceptable' => 'Вікі-сэрвэр ня можа адлюстраваць зьвесткі ў выглядзе, які здольны прачытаць Ваш браўзэр.',
 
 # Attribution
-'anonymous' => '{{PLURAL:$1|Ананімны ўдзельнік ці ўдзельніца|Ананімныя ўдзельнікі і ўдзельніцы}} {{GRAMMAR:родны|{{SITENAME}}}}',
+'anonymous' => '{{PLURAL:$1|1=Ананімны ўдзельнік ці ўдзельніца|Ананімныя ўдзельнікі і ўдзельніцы}} {{GRAMMAR:родны|{{SITENAME}}}}',
 'siteuser' => 'Удзельнік/удзельніца {{GRAMMAR:родны|{{SITENAME}}}} $1',
 'anonuser' => 'Ананімны ўдзельнік {{GRAMMAR:родны|{{SITENAME}}}} $1',
 'lastmodifiedatby' => 'Гэтую старонку апошні раз рэдагаваў $3 $2, $1.',
 'othercontribs' => 'На аснове працы $1.',
 'others' => 'іншыя',
-'siteusers' => '{{PLURAL:$2|Удзельнік|Удзельнікі}} {{GRAMMAR:родны|{{SITENAME}}}} $1',
-'anonusers' => '{{PLURAL:$2|Ананімны ўдзельнік|Ананімныя ўдзельнікі}} {{GRAMMAR:родны|{{SITENAME}}}} $1',
+'siteusers' => '{{PLURAL:$2|1=Удзельнік|Удзельнікі}} {{GRAMMAR:родны|{{SITENAME}}}} $1',
+'anonusers' => '{{PLURAL:$2|1=Ананімны ўдзельнік|Ананімныя ўдзельнікі}} {{GRAMMAR:родны|{{SITENAME}}}} $1',
 'creditspage' => 'Падзякі',
 'nocredits' => 'Няма інфармацыі пра аўтараў гэтай старонкі.',
 
@@ -3094,12 +3098,13 @@ $2',
 'pageinfo-length' => 'Памер старонкі (у байтах)',
 'pageinfo-article-id' => 'Ідэнтыфікатар старонкі',
 'pageinfo-language' => 'Мова зьместу старонкі',
+'pageinfo-content-model' => 'Мадэль зьместу старонкі',
 'pageinfo-robot-policy' => 'Індэксацыя пашукавікамі',
 'pageinfo-robot-index' => 'Дазволеная',
 'pageinfo-robot-noindex' => 'Не дазволеная',
 'pageinfo-views' => 'Колькасьць праглядаў',
 'pageinfo-watchers' => 'Колькасьць назіральнікаў і назіральніц',
-'pageinfo-few-watchers' => 'Менш за $1 {{PLURAL:$1|назіральніка|назіральнікаў}}',
+'pageinfo-few-watchers' => 'Менш за $1 {{PLURAL:$1|1=назіральніка|назіральнікаў}}',
 'pageinfo-redirects-name' => 'Перанакіраваньняў на гэтую старонку',
 'pageinfo-subpages-name' => 'Колькасьць падстаронак',
 'pageinfo-subpages-value' => '$1 ($2 {{PLURAL:$2|перанакіраваньне|перанакіраваньні|перанакіраваньняў}}; $3 {{PLURAL:$3|звычайная|звычайныя|звычайных}})',
@@ -3111,10 +3116,10 @@ $2',
 'pageinfo-authors' => 'Колькасьць аўтараў',
 'pageinfo-recent-edits' => 'Колькасьць апошніх рэдагаваньняў (за $1)',
 'pageinfo-recent-authors' => 'Колькасьць апошніх аўтараў',
-'pageinfo-magic-words' => '{{PLURAL:$1|Магічнае слова|Магічныя словы}} ($1)',
-'pageinfo-hidden-categories' => '{{PLURAL:$1|Схаваная катэгорыя|Схаваныя катэгорыі}} ($1)',
-'pageinfo-templates' => '{{PLURAL:$1|Шаблён|Шаблёны}} ($1)',
-'pageinfo-transclusions' => 'Выкарыстаньне на {{PLURAL:$1|іншай старонцы|іншых старонках}} ($1)',
+'pageinfo-magic-words' => '{{PLURAL:$1|1=Магічнае слова|Магічныя словы}} ($1)',
+'pageinfo-hidden-categories' => '{{PLURAL:$1|1=Схаваная катэгорыя|Схаваныя катэгорыі}} ($1)',
+'pageinfo-templates' => '{{PLURAL:$1|1=Шаблён|Шаблёны}} ($1)',
+'pageinfo-transclusions' => 'Выкарыстаньне на {{PLURAL:$1|1=іншай старонцы|іншых старонках}} ($1)',
 'pageinfo-toolboxlink' => 'Зьвесткі пра старонку',
 'pageinfo-redirectsto' => 'Перанакіроўвае на',
 'pageinfo-redirectsto-info' => 'інфармацыя',
@@ -3181,7 +3186,7 @@ $1',
 'svg-long-error' => 'Няслушны SVG-файл: $1',
 'show-big-image' => 'Найлепшае разрозьненьне',
 'show-big-image-preview' => 'Памер прагляду: $1.',
-'show-big-image-other' => '{{PLURAL:$2|Іншае разрозьненьне|Іншыя разрозьненьні}}: $1.',
+'show-big-image-other' => '{{PLURAL:$2|1=Іншае разрозьненьне|Іншыя разрозьненьні}}: $1.',
 'show-big-image-size' => '$1 × $2 піксэлаў',
 'file-info-gif-looped' => 'паўтараючыся',
 'file-info-gif-frames' => '$1 {{PLURAL:$1|кадар|кадры|кадраў}}',
@@ -3738,6 +3743,9 @@ $5
 'confirm-unwatch-button' => 'Добра',
 'confirm-unwatch-top' => 'Выдаліць гэтую старонку з Вашага сьпісу назіраньня?',
 
+# Separators for various lists, etc.
+'quotation-marks' => '«$1»',
+
 # Multipage image navigation
 'imgmultipageprev' => '← папярэдняя старонка',
 'imgmultipagenext' => 'наступная старонка →',
@@ -3884,8 +3892,7 @@ MediaWiki распаўсюджваецца з надзеяй, што будзе
 'specialpages' => 'Спэцыяльныя старонкі',
 'specialpages-note-top' => 'Легенда',
 'specialpages-note' => '* Звычайныя спэцыяльныя старонкі.
-* <strong class="mw-specialpagerestricted">Спэцыяльныя старонкі з абмежаваным доступам.</strong>
-* <span class="mw-specialpagecached">Кэшаваныя спэцыяльныя старонкі (могуць быць састарэлымі).</span>',
+* <strong class="mw-specialpagerestricted">Спэцыяльныя старонкі з абмежаваным доступам.</strong>',
 'specialpages-group-maintenance' => 'Тэхнічныя справаздачы',
 'specialpages-group-other' => 'Іншыя спэцыяльныя старонкі',
 'specialpages-group-login' => 'Уваход / стварэньне рахунку',
@@ -3917,7 +3924,7 @@ MediaWiki распаўсюджваецца з надзеяй, што будзе
 'tags' => 'Слушныя тэгі зьменаў',
 'tag-filter' => 'Фільтар [[Special:Tags|тэгаў]]:',
 'tag-filter-submit' => 'Фільтар',
-'tag-list-wrapper' => '([[Special:Tags|{{PLURAL:$1|Тэг|Тэгі}}]]: $2)',
+'tag-list-wrapper' => '([[Special:Tags|{{PLURAL:$1|1=Тэг|Тэгі}}]]: $2)',
 'tags-title' => 'Тэгі',
 'tags-intro' => 'На гэтай старонцы знаходзіцца сьпіс тэгаў, якімі праграмнае забесьпячэньне можа пазначыць рэдагаваньне, і іх значэньне.',
 'tags-tag' => 'Назва тэга',
@@ -3973,13 +3980,13 @@ MediaWiki распаўсюджваецца з надзеяй, што будзе
 # New logging system
 'logentry-delete-delete' => '$1 {{GENDER:$2|выдаліў|выдаліла}} старонку $3',
 'logentry-delete-restore' => '$1 {{GENDER:$2|аднавіў|аднавіла}} старонку $3',
-'logentry-delete-event' => '$1 {{GENDER:$2|зьмяніў|зьмяніла}} бачнасьць $5 {{PLURAL:$5|падзеі ў журнале|падзеяў у журнале}} на $3: $4',
-'logentry-delete-revision' => '$1 {{GENDER:$2|зьмяніў|зьмяніла}} бачнасьць $5 {{PLURAL:$5|вэрсіі|вэрсіяў}} старонкі $3: $4',
+'logentry-delete-event' => '$1 {{GENDER:$2|зьмяніў|зьмяніла}} бачнасьць $5 {{PLURAL:$5|1=падзеі ў журнале|падзеяў у журнале}} на $3: $4',
+'logentry-delete-revision' => '$1 {{GENDER:$2|зьмяніў|зьмяніла}} бачнасьць $5 {{PLURAL:$5|1=вэрсіі|вэрсіяў}} старонкі $3: $4',
 'logentry-delete-event-legacy' => '$1 {{GENDER:$2|зьмяніў|зьмяніла}} бачнасьць падзеяў у журнале на $3',
 'logentry-delete-revision-legacy' => '$1 {{GENDER:$2|зьмяніў|зьмяніла}} бачнасьць вэрсіяў старонкі $3',
 'logentry-suppress-delete' => '$1 {{GENDER:$2|схаваў|схавала}} старонку $3',
-'logentry-suppress-event' => '$1 прыхавана {{GENDER:$2|зьмяніў|зьмяніла}} бачнасьць $5 {{PLURAL:$5|падзеі ў журнале|падзеяў у журнале}} на $3: $4',
-'logentry-suppress-revision' => '$1 прыхавана {{GENDER:$2|зьмяніў|зьмяніла}} бачнасьць $5 {{PLURAL:$5|вэрсіі|вэрсіяў}} старонкі $3: $4',
+'logentry-suppress-event' => '$1 прыхавана {{GENDER:$2|зьмяніў|зьмяніла}} бачнасьць $5 {{PLURAL:$5|1=падзеі ў журнале|падзеяў у журнале}} на $3: $4',
+'logentry-suppress-revision' => '$1 прыхавана {{GENDER:$2|зьмяніў|зьмяніла}} бачнасьць $5 {{PLURAL:$5|1=вэрсіі|вэрсіяў}} старонкі $3: $4',
 'logentry-suppress-event-legacy' => '$1 прыхавана {{GENDER:$2|зьмяніў|зьмяніла}} бачнасьць падзеяў у журнале на $3',
 'logentry-suppress-revision-legacy' => '$1 прыхавана {{GENDER:$2|зьмяніў|зьмяніоа}} бачнасьць вэрсіяў старонкі $3',
 'revdelete-content-hid' => 'зьмест схаваны',
@@ -4030,10 +4037,10 @@ MediaWiki распаўсюджваецца з надзеяй, што будзе
 'api-error-badaccess-groups' => 'У Вас няма дазволу загружаць файлы ў гэтую вікі.',
 'api-error-badtoken' => 'Унутраная памылка: няслушны ключ.',
 'api-error-copyuploaddisabled' => 'Загрузка з URL-адрасу забароненая на гэтым сэрвэры.',
-'api-error-duplicate' => 'Ужо {{PLURAL:$1|існуе [$2 іншы файл]|існуюць [$2 іншыя файлы]}} з такім жа зьместам.',
-'api-error-duplicate-archive' => 'Раней на сайце {{PLURAL:$1|ўжо быў [$2 файл]|былі [$2 файлы]}} з дакладна такім жа зьместам, але {{PLURAL:$1|ён быў выдалены|яны былі выдаленыя}}.',
-'api-error-duplicate-archive-popup-title' => 'Дублікаты {{PLURAL:$1|файла, які ўжо быў выдалены|файлаў, якія ўжо былі выдаленыя}}',
-'api-error-duplicate-popup-title' => '{{PLURAL:$1|Ідэнтычны файл|Ідэнтычныя файлы}}',
+'api-error-duplicate' => 'Ужо {{PLURAL:$1|1=існуе [$2 іншы файл]|існуюць [$2 іншыя файлы]}} з такім жа зьместам.',
+'api-error-duplicate-archive' => 'Раней на сайце {{PLURAL:$1|1=ўжо быў [$2 файл]|былі [$2 файлы]}} з дакладна такім жа зьместам, але {{PLURAL:$1|1=ён быў выдалены|яны былі выдаленыя}}.',
+'api-error-duplicate-archive-popup-title' => 'Дублікаты {{PLURAL:$1|1=файла, які ўжо быў выдалены|файлаў, якія ўжо былі выдаленыя}}',
+'api-error-duplicate-popup-title' => '{{PLURAL:$1|1=Ідэнтычны файл|Ідэнтычныя файлы}}',
 'api-error-empty-file' => 'Дасланы Вамі файл быў пусты.',
 'api-error-emptypage' => 'Стварэньне новых пустых старонак забаронена.',
 'api-error-fetchfileerror' => 'Унутраная памылка: падчас атрыманьня файла штосьці здарылася.',
@@ -4042,7 +4049,7 @@ MediaWiki распаўсюджваецца з надзеяй, што будзе
 'api-error-file-too-large' => 'Дасланы Вамі файл занадта вялікі.',
 'api-error-filename-tooshort' => 'Назва файла занадта кароткая.',
 'api-error-filetype-banned' => 'Гэты тып файла забаронены.',
-'api-error-filetype-banned-type' => '$1 — {{PLURAL:$4|забаронены тып файлаў|забароненыя тыпы файлаў}}. {{PLURAL:$3|Дазволены тып файлаў|Дазволеныя тыпы файлаў}}: $2.',
+'api-error-filetype-banned-type' => '$1 — {{PLURAL:$4|1=забаронены тып файлаў|забароненыя тыпы файлаў}}. {{PLURAL:$3|1=Дазволены тып файлаў|Дазволеныя тыпы файлаў}}: $2.',
 'api-error-filetype-missing' => 'У файла няма пашырэньня.',
 'api-error-hookaborted' => 'Прапанаваная Вамі зьмена была адхіленая апрацоўшчыкам пашырэньня.',
 'api-error-http' => 'Унутраная памылка: немагчыма далучыцца да сэрвэра.',
index d2a284a..add6007 100644 (file)
@@ -14,6 +14,8 @@
  * @author Dimi z
  * @author Geitost
  * @author Kaganer
+ * @author MegaAlex
+ * @author Milicevic01
  * @author Simona
  * @author Spiritia
  * @author Stanqo
@@ -634,7 +636,7 @@ $2',
 'filereadonlyerror' => 'Файлът „$1“ не може да бъде променен, тъй като файловото хранилище „$2“ е в режим само за четене.
 
 Администраторът, който го е заключил, е посочил следната причина: „$3“.',
-'exception-nologin-text' => 'УикиÑ\82о Ð¸Ð·Ð¸Ñ\81ква Ð²Ð»Ð¸Ð·Ð°Ð½Ðµ Ð·Ð° Ñ\82ази Ñ\81Ñ\82Ñ\80аниÑ\86а Ð¸Ð»Ð¸ Ð´ÐµÐ¹Ñ\81Ñ\82вие.',
+'exception-nologin-text' => 'Ð\97а Ð´Ð¾Ñ\81Ñ\8aп Ð´Ð¾ Ð¶ÐµÐ»Ð°Ð½Ð°Ñ\82а Ñ\81Ñ\82Ñ\80аниÑ\86а Ð¸Ð»Ð¸ Ð´ÐµÐ¹Ñ\81Ñ\82вие Ñ\83икиÑ\82о Ð¸Ð·Ð¸Ñ\81ква [[Special:Userlogin|влизане Ð² Ñ\81иÑ\81Ñ\82емаÑ\82а]].',
 
 # Virus scanner
 'virus-badscanner' => "Лоша конфигурация: непознат скенер за вируси: ''$1''",
@@ -1163,8 +1165,8 @@ $2
 'revdelete-hide-user' => 'Потребителско име/IP адрес на редактора',
 'revdelete-hide-restricted' => 'Прилагане на тези ограничения и за администраторите',
 'revdelete-radio-same' => '(да не се променя)',
-'revdelete-radio-set' => 'Ð\94а',
-'revdelete-radio-unset' => 'Ð\9dе',
+'revdelete-radio-set' => 'СкÑ\80иÑ\82',
+'revdelete-radio-unset' => 'Ð\92идим',
 'revdelete-suppress' => 'Скриване на причината за изтриването и от администраторите',
 'revdelete-unsuppress' => 'Премахване на ограниченията за възстановените версии',
 'revdelete-log' => 'Причина:',
@@ -1575,16 +1577,18 @@ $1",
 Легенда: '''тек''' = разлика на текущата версия,
 '''ист''' = история на версиите",
 'recentchanges-feed-description' => 'Проследяване на последните промени в {{SITENAME}}.',
-'recentchanges-label-newpage' => 'С Ñ\82ази Ñ\80едакÑ\86иÑ\8f Ð±ÐµÑ\88е Ñ\81Ñ\8aздадена Ð½ова страница',
+'recentchanges-label-newpage' => 'Ð\9dова страница',
 'recentchanges-label-minor' => 'Това е малка промяна',
 'recentchanges-label-bot' => 'Тази редакция е извършена от робот',
 'recentchanges-label-unpatrolled' => 'Тази редакция все още не е проверена',
+'recentchanges-label-plusminus' => 'Размерът на страницата е променен с този брой байтове',
+'recentchanges-legend-heading' => "'''Легенда:'''",
 'recentchanges-legend-newpage' => '(вижте също [[Special:NewPages|списъка с нови страници]])',
 'rcnotefrom' => 'Дадени са промените от <strong>$2</strong> (до <strong>$1</strong> показани).',
 'rclistfrom' => 'Показване на промени, като се започва от $1.',
 'rcshowhideminor' => '$1 на малки промени',
 'rcshowhidebots' => '$1 на ботове',
-'rcshowhideliu' => '$1 на влезли потребители',
+'rcshowhideliu' => '$1 на регистрирани потребители',
 'rcshowhideanons' => '$1 на анонимни потребители',
 'rcshowhidepatr' => '$1 на проверени редакции',
 'rcshowhidemine' => '$1 на моите приноси',
@@ -3497,6 +3501,9 @@ $5
 'imgmultigo' => 'Отваряне',
 'imgmultigoto' => 'Отиване на страница $1',
 
+# Language selector for translatable SVGs
+'img-lang-default' => '(език по подразбиране)',
+
 # Table pager
 'ascending_abbrev' => 'възх',
 'descending_abbrev' => 'низх',
@@ -3607,9 +3614,9 @@ MediaWiki се разпространява с надеждата, че ще б
 
 # Special:SpecialPages
 'specialpages' => 'Специални страници',
+'specialpages-note-top' => 'Легенда',
 'specialpages-note' => '* Обикновени специални страници.
-* <strong class="mw-specialpagerestricted">Специални страници с ограничения.</strong>
-* <span class="mw-specialpagecached">Само складирани специални страници (възможно е да са остарели).</span>',
+* <strong class="mw-specialpagerestricted">Специални страници с ограничения.</strong>',
 'specialpages-group-maintenance' => 'Доклади по поддръжката',
 'specialpages-group-other' => 'Други специални страници',
 'specialpages-group-login' => 'Влизане / създаване на сметка',
@@ -3707,8 +3714,8 @@ MediaWiki се разпространява с надеждата, че ще б
 'logentry-move-move-noredirect' => '$1 премести „$3“ като „$4“ без пренасочване',
 'logentry-move-move_redir' => '$1 премести страницата $3 като $4 (върху пренасочване)',
 'logentry-move-move_redir-noredirect' => '$1 премести върху пренасочване „$3“ като „$4“ без пренасочване',
-'logentry-patrol-patrol' => '$1 отбеляза като патрулирана версия $4 на страницата „$3“',
-'logentry-patrol-patrol-auto' => '$1 автоматично отбеляза като патрулирана версия $4 на страницата $3',
+'logentry-patrol-patrol' => '$1 {{GENDER:$2|отбеляза}} като патрулирана версия $4 на страницата „$3“',
+'logentry-patrol-patrol-auto' => '$1 автоматично {{GENDER:$2|отбеляза}} като патрулирана версия $4 на страницата $3',
 'logentry-newusers-newusers' => 'Потребителската сметка $1 беше {{GENDER:$2|създадена}}',
 'logentry-newusers-create' => 'Потребителската сметка $1 беше {{GENDER:$2|създадена}}',
 'logentry-newusers-create2' => '$1 {{GENDER:$2|създаде}} потребителска сметка $3',
index 95aee1b..4487567 100644 (file)
@@ -569,7 +569,7 @@ $2',
 'passwordtooshort' => 'শব্দচাবি অবশ্যই {{PLURAL:$1|১ অক্ষরের|$1 অক্ষরের}} হতে হবে।',
 'password-name-match' => 'আপনার শব্দচাবি আপনার ব্যবহারকারী নাম থেকে আলাদা হতে হবে।',
 'password-login-forbidden' => 'এই ব্যবহারকারীর নাম এবং শব্দচাবিটি ব্যবহার নিষিদ্ধ করা হয়েছে।',
-'mailmypassword' => 'নতà§\81ন à¦¶à¦¬à§\8dদà¦\9aাবি à¦\87-মà§\87à¦\87লà§\87 à¦ªà¦¾à¦ à¦¾à¦¨à§\8b à¦¹à§\8bà¦\95',
+'mailmypassword' => 'শবà§\8dদà¦\9aাবি à¦°à¦¿à¦¸à§\87à¦\9f',
 'passwordremindertitle' => '{{SITENAME}}-এর জন্য নতুন সাময়িক শব্দচাবি',
 'passwordremindertext' => 'কেউ একজন ($1 আইপি ঠিকানাটি থেকে সম্ভবত আপনি) অনুরোধ করেছেন যেন আমরা আপনাকে {{SITENAME}} ($4) এর জন্য একটি নতুন শব্দচাবি পাঠাই।
 "$2" নামে অ্যাকাউন্ট খোলা হয়েছে এবং এর শব্দচাবি "$3"। আপনি যদি এটাই চেয়ে থাকেন, তাহলে আপনাকে এখন অ্যাকাউন্টে প্রবেশ করতে হবে ও নতুন একটি শব্দচাবি পছন্দ করতে হবে।
@@ -636,7 +636,7 @@ $2',
 # Special:PasswordReset
 'passwordreset' => 'শব্দচাবি রিসেট',
 'passwordreset-text-one' => 'আপনার পাসওয়ার্ড পুনরায় সেট করতে এই ফর্মটি পূরণ করুন।',
-'passwordreset-text-many' => '{{PLURAL:$1|à¦\86পনার à¦ªà¦¾à¦¸à¦\93য়ারà§\8dড à¦°à¦¿à¦¸à§\87à¦\9f à¦\95রতà§\87 à¦\8fà¦\87 à¦¤à¦¥à§\8dযà¦\97à§\81লà§\8bর à¦¯à§\87à¦\95à§\8bন à¦\8fà¦\95à¦\9fা à¦ªà§\8dরবà§\87শ à¦\95রান।}}',
+'passwordreset-text-many' => '{{PLURAL:$1|à¦\87মà§\87à¦\87লà§\87র à¦®à¦¾à¦§à§\8dযমà§\87 à¦\8fà¦\95à¦\9fি à¦\85সà§\8dথায়à§\80 à¦¶à¦¬à§\8dদà¦\9aাবি à¦ªà§\87তà§\87 à¦\98রà¦\97à§\81লির à¦\8fà¦\95à¦\9fি à¦ªà§\82রণ à¦\95রà§\81ন।}}',
 'passwordreset-legend' => 'শব্দচাবি রিসেট',
 'passwordreset-disabled' => 'এই উইকিতে শব্দচাবি রিসেটের সুবিধা নিষ্ক্রিয় রয়েছে।',
 'passwordreset-emaildisabled' => 'এই উইকিতে ইমেইল অপশনটি বন্ধ করা হয়েছে।',
@@ -1276,6 +1276,7 @@ $1",
 'prefs-tokenwatchlist' => 'টোকেন',
 'prefs-diffs' => 'পার্থক্য',
 'prefs-help-prefershttps' => 'পরবর্তী লগইনের পর থেকে এই পরিবর্তনগুলো কার্যকর হবে।',
+'prefs-tabs-navigation-hint' => 'সাহায্য: আপনি ডান এবং বাম অ্যারো বাটন ব্যবহার করে বিভিন্ন ট্যাবগুলোতে যেতে পারবেন।',
 
 # User preference: email validation using jQuery
 'email-address-validity-valid' => 'ইমেইল ঠিকানাটি সঠিক',
@@ -1462,13 +1463,14 @@ $1",
 'recentchanges-label-bot' => 'এটি বট দ্বারা সম্পাদিত',
 'recentchanges-label-unpatrolled' => 'এই সম্পাদনাটি এখনও পরীক্ষিত নয়',
 'recentchanges-label-plusminus' => 'পাতার আকারে এই পরিমান বাইট পরিবর্তিত হয়েছে',
+'recentchanges-legend-heading' => "'''ব্যাখ্যামূলক বর্ণনা:'''",
 'recentchanges-legend-newpage' => '(আরও দেখুন [[Special:NewPages|নতুন পাতার তালিকা]])',
 'recentchanges-legend-plusminus' => "(''±১২৩'')",
 'rcnotefrom' => "'''$2'''-এর পরে সংঘটিত পরিবর্তনগুলো নিচে দেখানো হল ('''$1'''টি)।",
 'rclistfrom' => '$1-এর পর সংঘটিত নতুন পরিবর্তনগুলো দেখাও।',
 'rcshowhideminor' => 'অনুল্লেখ্য পরিবর্তনগুলো $1',
 'rcshowhidebots' => 'বটগুলো $1',
-'rcshowhideliu' => 'পà§\8dরবà§\87শ à¦\95রà§\87à¦\9bà§\87ন à¦\8fমন ব্যবহারকারীদের $1',
+'rcshowhideliu' => 'নিবনà§\8dধিত ব্যবহারকারীদের $1',
 'rcshowhideanons' => 'বেনামী ব্যবহারকারীদের $1',
 'rcshowhidepatr' => 'পরীক্ষিত সম্পাদনা $1',
 'rcshowhidemine' => 'আমার সম্পাদনাগুলো $1',
@@ -1913,6 +1915,7 @@ Maybe you want to edit the description on its [$2 file description page] there.'
 'ninterwikis' => '$1 {{PLURAL:$1|ইন্টারউইকি|ইন্টারউইকিসমূহ}}',
 'nlinks' => '$1টি {{PLURAL:$1|সংযোগ|সংযোগসমূহ}}',
 'nmembers' => '$1 {{PLURAL:$1|সদস্য|সদস্যবৃন্দ}}',
+'nmemberschanged' => '$1 জন → $2 জন {{PLURAL:$2|সদস্য}}',
 'nrevisions' => '$1 {{PLURAL:$1|সংশোধন|সংশোধনসমূহ}}',
 'nviews' => '$1 {{PLURAL:$1|বার দেখা হয়েছে|বার দেখা হয়েছে}}',
 'nimagelinks' => '$1 {{PLURAL:$1|টি পাতায়| টি পাতায়}} ব্যবহৃত',
@@ -2232,8 +2235,8 @@ $UNWATCHURL
 'rollback' => 'সম্পাদনা ফিরিয়ে নিন',
 'rollback_short' => 'ফিরিয়ে নিন',
 'rollbacklink' => 'পুনর্বহাল',
-'rollbacklinkcount' => '$1 {{PLURAL:$1|সম্পাদনা|সম্পাদনাগুলো}} রোলব্যাক করুন',
-'rollbacklinkcount-morethan' => '$1 এর বেশি {{PLURAL:$1|সম্পাদনা|সম্পাদনাগুলো}} রোলব্যাক করুন',
+'rollbacklinkcount' => '$1টি {{PLURAL:$1|সম্পাদনা}} রোলব্যাক করুন',
+'rollbacklinkcount-morethan' => '$1টির বেশি {{PLURAL:$1|সম্পাদনা|সম্পাদনাগুলো}} রোলব্যাক করুন',
 'rollbackfailed' => 'রোলব্যাক ব্যর্থ',
 'cantrollback' => 'পূর্বের সংস্করণে ফেরত যাওয়া সম্ভব হল না, সর্বশেষ সম্পাদনাকারী এই নিবন্ধটির একমাত্র লেখক।',
 'alreadyrolled' => '[[User:$2|$2]] ([[User talk:$2|talk]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]) দ্বারা সম্পাদিত সর্বশেষ [[:$1]] সম্পাদনাটি পুনর্বহাল করা যাচ্ছে না;
@@ -2418,7 +2421,7 @@ $1',
 'whatlinkshere-links' => '← সংযোগগুলি',
 'whatlinkshere-hideredirs' => 'পুননির্দেশনা $1',
 'whatlinkshere-hidetrans' => '$1 ট্রান্সক্লুশন',
-'whatlinkshere-hidelinks' => '$1 টি সংযোগ',
+'whatlinkshere-hidelinks' => 'সংযোগ $1',
 'whatlinkshere-hideimages' => '$1 ফাইল সংযোগ',
 'whatlinkshere-filters' => 'ছাকনী',
 
@@ -2840,6 +2843,7 @@ $2',
 'tooltip-undo' => '"বাতিল" এই সম্পাদনাকে পূর্ববস্থায় ফিরত নিবে এবং প্রাকদর্শন সহ সম্পাদনা ফরমটি খুলবে। এটি সম্পাদনা সারাংশতে এর কারণ যোগ করার সুযোগ দিবে।',
 'tooltip-preferences-save' => 'পছন্দ সংরক্ষণ',
 'tooltip-summary' => 'একটি সংক্ষিপ্ত সারাংশ দিন',
+'interlanguage-link-title' => '$1 - $2',
 
 # Metadata
 'notacceptable' => 'আপনার ক্লায়েন্ট পড়তে পারে এমন ফরম্যাটে উইকি সার্ভার উপাত্ত সরবরাহ করতে পারছে না।',
@@ -3522,6 +3526,11 @@ $4-এ নিশ্চিতকরণ কোডটি মেয়াদোত
 'imgmultigo' => 'চলো!',
 'imgmultigoto' => '$1 পাতায় চলো',
 
+# Language selector for translatable SVGs
+'img-lang-default' => '(ডিফল্ট ভাষা)',
+'img-lang-info' => '$1 এ ছবিটি রেন্ডার করো। $2',
+'img-lang-go' => 'যাও',
+
 # Table pager
 'ascending_abbrev' => 'আরোহণ',
 'descending_abbrev' => 'অবতরণ',
@@ -3915,10 +3924,12 @@ $4-এ নিশ্চিতকরণ কোডটি মেয়াদোত
 'expand_templates_input' => 'ইনপুটকৃত লেখা:',
 'expand_templates_output' => 'ফলাফল',
 'expand_templates_xml_output' => 'XML আউটপুট',
+'expand_templates_html_output' => 'এইচটিএমএল আউটপুট',
 'expand_templates_ok' => 'ঠিক আছে',
 'expand_templates_remove_comments' => 'মন্তব্য মুছে ফেলো',
 'expand_templates_remove_nowiki' => 'ফলাফলে <nowiki> ট্যাগগুলো বাতিল করো',
 'expand_templates_generate_xml' => 'XML পার্স বৃক্ষ দেখাও',
+'expand_templates_generate_rawhtml' => 'এইচটিএমএল দেখাও',
 'expand_templates_preview' => 'প্রাকদর্শন',
 
 );
index bdaf00a..b29e16e 100644 (file)
@@ -1550,11 +1550,11 @@ Ma skrivit anezhañ e vo implijet evit lakaat war wel ar pezh a vo bet degaset g
 'recentchanges-summary' => "Dre ar bajenn-mañ e c'hallit heuliañ ar c'hemmoù diwezhañ bet degaset d'ar wiki.",
 'recentchanges-noresult' => "N'eus bet kemm ebet a glot gant an dezverkoù-se e-pad ar prantad diferet.",
 'recentchanges-feed-description' => "Heuilhit ar c'hemmoù diwezhañ er wiki el lusk-mañ.",
-'recentchanges-label-newpage' => "Gant ar c'hemm-mañ eo bet krouet ur bajenn nevez.",
+'recentchanges-label-newpage' => "Gant ar c'hemm-mañ ez eus bet krouet ur bajenn nevez.",
 'recentchanges-label-minor' => "Ur c'hemm dister eo hemañ",
 'recentchanges-label-bot' => "Gant ur bot eo bet degaset ar c'hemm-mañ.",
 'recentchanges-label-unpatrolled' => "N'eo ket bet gwiriet ar c'hemm-mañ evit c'hoazh.",
-'recentchanges-label-plusminus' => 'Kemmet he deus ment ar bajenn eus an niver-se a bitoù',
+'recentchanges-label-plusminus' => 'Kemmet eo ment ar bajenn eus an niver-mañ a oktedoù',
 'recentchanges-legend-newpage' => '(gwelet ivez [[Dibar:PajennoùNevez|roll ar pajennoù nevez krouet]])',
 'rcnotefrom' => "Setu aze roll ar c'hemmoù c'hoarvezet abaoe an '''$2''' ('''$1''' d'ar muiañ).",
 'rclistfrom' => "Diskouez ar c'hemmoù diwezhañ abaoe an $1.",
@@ -1874,7 +1874,7 @@ Diweredekaet eo bet img_auth.php evit ur surentez eus ar gwellañ",
 'filehist-comment' => 'Notenn',
 'filehist-missing' => 'Restr diank',
 'imagelinks' => 'Implij ar restr',
-'linkstoimage' => "Liammet eo {{PLURAL:$1|ar bajenn-mañ|an $1 pajenn-mañ}} d'ar restr-mañ :",
+'linkstoimage' => 'Liammet eo {{PLURAL:$1|ar bajenn-mañ|an $1 pajenn-mañ}} ouzh ar restr-mañ :',
 'linkstoimage-more' => "Ouzhpenn $1 {{PLURAL:$1|bajenn zo liammet ouzh|pajenn zo liammet ouzh}} ar restr-mañ.
 Ne laka ar roll-mañ war wel nemet {{PLURAL:$1|ar bajenn gentañ liammet ouzh|an $1 pajenn gentañ liammet ouzh}} ar rest-mañ.
 Ur [[Special:WhatLinksHere/$2|roll klok]] a c'haller da gaout.",
index 91edbe7..f68c3e3 100644 (file)
@@ -423,7 +423,7 @@ $messages = array(
 'article' => 'Članak',
 'newwindow' => '(otvara se u novom prozoru)',
 'cancel' => 'Poništite',
-'moredotdotdot' => 'Još...',
+'moredotdotdot' => 'Više...',
 'morenotlisted' => 'Ovaj spisak nije kompletan.',
 'mypage' => 'Korisnička stranica',
 'mytalk' => 'Razgovor',
@@ -554,8 +554,8 @@ $1',
 'youhavenewmessages' => 'Imate $1 ($2).',
 'youhavenewmessagesfromusers' => 'Imate $1 od {{PLURAL:$3|drugog korisnika|$3 korisnika}} ($2).',
 'youhavenewmessagesmanyusers' => 'Imate $1 od mnogo korisnika ($2).',
-'newmessageslinkplural' => '{{PLURAL:$1|novu poruku|nove poruke}}',
-'newmessagesdifflinkplural' => '{{PLURAL:$1|posljednja izmjena|posljednje izmjene}}',
+'newmessageslinkplural' => '{{PLURAL:$1|novu poruku|999=nove poruke}}',
+'newmessagesdifflinkplural' => '{{PLURAL:$1|posljednja izmjena|999=posljednje izmjene}}',
 'youhavenewmessagesmulti' => 'Imate nove poruke na $1',
 'editsection' => 'uredi',
 'editold' => 'uredi',
@@ -774,7 +774,7 @@ Molimo Vas da pokušate ponovno.',
 'passwordtooshort' => 'Šifra mora imati najmanje {{PLURAL:$1|1 znak|$1 znaka|$1 znakova}}.',
 'password-name-match' => 'Vaša šifra mora biti različita od Vašeg korisničkog imena.',
 'password-login-forbidden' => 'Korištenje ovih korisničkih imena i šifara je zabranjeo.',
-'mailmypassword' => 'Pošalji mi novu šifru',
+'mailmypassword' => 'Poništi šifru/lozinku',
 'passwordremindertitle' => 'Nova privremena šifra za {{SITENAME}}',
 'passwordremindertext' => 'Neko (vjerovatno Vi, sa IP adrese $1) je zahtjevao da vam pošaljemo novu šifru za {{SITENAME}}  ($4). Privremena šifra za korisnika "$2" je napravljena i glasi "$3". Ako ste to željeli, sad treba da se prijavite i promjenite šifru.
 Vaša privremena šifra će isteči za {{PLURAL:$5|$5 dan|$5 dana}}.
@@ -845,7 +845,7 @@ Možda ste već uspješno promijenili Vašu šifru ili ste tražili novu privrem
 # Special:PasswordReset
 'passwordreset' => 'Poništavanje šifre',
 'passwordreset-text-one' => 'Ispunite ovaj obrazac da biste resetovali Vašu šifru/lozinku.',
-'passwordreset-text-many' => '{{PLURAL:$1|Ispunite jedno od polja kako bi ste resetirali svoju šifru/lozinku.}}',
+'passwordreset-text-many' => '{{PLURAL:$1|Ispunite jedno od polja kako bi ste dobili privremenu šifru/lozinku putem e-pošte.}}',
 'passwordreset-legend' => 'Poništi šifru',
 'passwordreset-disabled' => 'Poništavanje šifre  je onemogućeno na ovoj wiki.',
 'passwordreset-emaildisabled' => 'E-pošta je onemogućena na ovom wikiju.',
@@ -1231,8 +1231,8 @@ Drugi administratori projekta {{SITENAME}} će i dalje moći pristupiti sakriven
 'revdelete-hide-user' => 'Korisničko ime urednika/IP',
 'revdelete-hide-restricted' => 'Ograniči podatke za administratore kao i za druge korisnike',
 'revdelete-radio-same' => '(ne mijenjaj)',
-'revdelete-radio-set' => 'Vidljivo',
-'revdelete-radio-unset' => 'Sakriveno',
+'revdelete-radio-set' => 'Sakriveno',
+'revdelete-radio-unset' => 'Vidljivo',
 'revdelete-suppress' => 'Sakrij podatke od administratora kao i od drugih',
 'revdelete-unsuppress' => 'Ukloni ograničenja na vraćenim revizijama',
 'revdelete-log' => 'Razlog:',
@@ -1369,6 +1369,7 @@ Više informacija možete pronaći u [{{fullurl:{{#Special:Log}}/delete|page={{F
 'powersearch-togglenone' => 'Ništa',
 'search-external' => 'Vanjska pretraga',
 'searchdisabled' => '<p>Izvinjavamo se!  Puno pretraga teksta je privremeno onemogućena.  U međuvremenu, možete koristiti Google za pretragu.  Indeks može biti stariji.',
+'search-error' => 'Dogodila se greška prilikom pretraživanja: $1',
 
 # Preferences page
 'preferences' => 'Postavke',
@@ -1663,7 +1664,8 @@ Ako izaberete da date ime, biće korišteno za pripisivanje za vaš rad.',
 'recentchanges-label-bot' => 'Ova izmjenu je načinio bot',
 'recentchanges-label-unpatrolled' => 'Ova izmjena još nije patrolirana',
 'recentchanges-label-plusminus' => 'Veličina stranice je se promjenila za ovoliko bajtova',
-'recentchanges-legend-newpage' => '$1 - nova stranica',
+'recentchanges-legend-heading' => "'''Legenda:'''",
+'recentchanges-legend-newpage' => '(također pogledajte [[Special:NewPages|spisak novih stranica]])',
 'rcnotefrom' => 'Ispod su izmjene od <b>$2</b> (do <b>$1</b> prikazano).',
 'rclistfrom' => 'Prikaži nove izmjene počev od $1',
 'rcshowhideminor' => '$1 male izmjene',
@@ -3911,6 +3913,7 @@ Trebali biste dobiti [{{SERVER}}{{SCRIPTPATH}}/KOPIJU GNU opće javne licence] z
 'redirect-submit' => 'Idi',
 'redirect-value' => 'Vrijednost:',
 'redirect-user' => 'Korisnički ID',
+'redirect-page' => 'ID stranice',
 'redirect-revision' => 'Verzija stranice',
 'redirect-file' => 'Naziv datoteke',
 'redirect-not-exists' => 'Vrijednost nije pronađena',
@@ -3928,6 +3931,7 @@ Trebali biste dobiti [{{SERVER}}{{SCRIPTPATH}}/KOPIJU GNU opće javne licence] z
 
 # Special:SpecialPages
 'specialpages' => 'Posebne stranice',
+'specialpages-note-top' => 'Legenda',
 'specialpages-note' => '* Normalne posebne stranice.
 * <strong class="mw-specialpagerestricted">Zaštićene posebne stranice.</strong>',
 'specialpages-group-maintenance' => 'Izvještaji za održavanje',
index 012ab8a..b4d79fb 100644 (file)
@@ -711,7 +711,7 @@ la vostra antiga contrasenya.",
 'noemailcreate' => "Has d'indicar una adreça de correu electrònic vàlida",
 'passwordsent' => "S'ha enviat una nova contrasenya a l'adreça electrònica registrada per «$1».
 Inicieu una sessió després que la rebeu.",
-'blocked-mailpassword' => 'La vostra adreça IP ha estat blocada. Se us ha desactivat la funció de recuperació de contrasenya per a prevenir abusos.',
+'blocked-mailpassword' => "S'ha blocat la vostra adreça IP. Se us ha desactivat la funció de recuperació de contrasenya per a prevenir abusos.",
 'eauthentsent' => "S'ha enviat un correu electrònic a la direcció especificada. Abans no s'enviï cap altre correu electrònic a aquesta adreça, cal verificar que és realment vostra. Per tant, cal que seguiu les instruccions presents en el correu electrònic que se us ha enviat.",
 'throttled-mailpassword' => "Ja se us ha enviat un correu electrònic de reinicialització de contrasenya en {{PLURAL:$1|l'última hora|les últimes $1 hores}}.
 Per a prevenir abusos, només s'envia un correu electrònic de reinicialització de contrasenya cada {{PLURAL:$1|hora|$1 hores}}.",
@@ -1003,10 +1003,10 @@ Podeu modificar les planes ja existents o bé [[Special:UserLogin|entrar en un c
 'permissionserrors' => 'Error de permisos',
 'permissionserrorstext' => 'No teniu permisos per a fer-ho, {{PLURAL:$1|pel següent motiu|pels següents motius}}:',
 'permissionserrorstext-withaction' => 'No teniu permís per a $2, {{PLURAL:$1|pel motiu següent|pels motius següents}}:',
-'recreate-moveddeleted-warn' => "'''Avís: esteu creant una pàgina que ha estat prèviament suprimida.'''
+'recreate-moveddeleted-warn' => "'''Avís: esteu creant una pàgina que s'ha suprimit prèviament.'''
 
 Hauríeu de considerar si és realment necessari continuar editant aquesta pàgina.
-A continuació s'ofereix el registre d'esborraments i de reanomenaments de la pàgina:",
+A continuació s'ofereix el registre de supressions i de reanomenaments de la pàgina:",
 'moveddeleted-notice' => "S'ha suprimit aquesta pàgina.
 A continuació us mostrem com a referència el registre d'esborraments i reanomenaments de la pàgina.",
 'log-fulllog' => 'Veure tot el registre',
@@ -1065,6 +1065,9 @@ Se n'han omès els arguments.",
 'cantcreateaccounttitle' => 'No es pot crear el compte',
 'cantcreateaccount-text' => "[[User:$3|$3]] ha bloquejat la creació de comptes des d'aquesta adreça IP ('''$1''').
 
+El motiu donat per $3 és ''$2''",
+'cantcreateaccount-range-text' => "La creació de comptes des de les adreces IP en el rang '''$1''', que inclou la vostra adreça IP ('''$4'''), ha esta blocada per [[User:$3|$3]].
+
 El motiu donat per $3 és ''$2''",
 
 # History pages
@@ -1104,8 +1107,8 @@ Intenteu [[Special:Search|cercar al mateix wiki]] per a noves pàgines rellevant
 'rev-deleted-user' => "(s'ha suprimit el nom d'usuari)",
 'rev-deleted-event' => "(s'ha suprimit el registre d'accions)",
 'rev-deleted-user-contribs' => "[nom d'usuari o adreça IP esborrada - modificació ocultada de les contribucions]",
-'rev-deleted-text-permission' => "Aquesta versió de la pàgina ha estat '''eliminada'''.
-Hi poden haver més detalls al [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registre d'esborrats].",
+'rev-deleted-text-permission' => "S'ha '''suprimit''' aquesta versió de la pàgina.
+Vegeu-ne més detalls al [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registre de supressions].",
 'rev-deleted-text-unhide' => "S'ha '''suprimit''' la revisió d'aquesta pàgina.
 Hi poden haver més detalls al [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registre d'esborrats].
 Encara podeu [$1 veure aquesta revisió] si així ho desitgeu.",
@@ -1114,21 +1117,21 @@ Hi poden haver més detalls al [{{fullurl:{{#Special:Log}}/suppress|page={{FULLP
 Encara podeu [$1 veure aquesta revisió] si així ho desitgeu.",
 'rev-deleted-text-view' => "S'ha '''suprimit''' aquesta versió de la pàgina.
 Podeu veure-la; vegeu-ne més detalls al [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registre d'esborrats].",
-'rev-suppressed-text-view' => "Aquesta versió de la pàgina ha estat '''eliminada'''.
-Podeu veure-la; vegeu-ne més detalls al [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} registre d'esborrats].",
+'rev-suppressed-text-view' => "S'ha '''suprimit''' aquesta versió de la pàgina.
+Vegeu-ne més detalls al [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} registre de supressions].",
 'rev-deleted-no-diff' => "No podeu veure aquesta comparativa perquè s'ha '''suprimit''' una de les versions.
 Potser trobareu detalls al [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registre d'esborrats].",
 'rev-suppressed-no-diff' => "No podeu veure aquesta diferència perquè s'ha '''suprimit''' una de les revisions.",
-'rev-deleted-unhide-diff' => "Una de les revisions d'aquesta comparativa ha estat '''eliminada'''.
-Potser trobareu detalls al [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registre d'esborrats].
+'rev-deleted-unhide-diff' => "S'ha '''eliminat''' una de les revisions d'aquesta comparativa.
+Vegeu-ne més detalls al [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registre de supressions].
 Encara podeu [$1 veure aquesta comparativa] si així ho desitgeu.",
 'rev-suppressed-unhide-diff' => "S¡ha '''suprimit''' una de les revisions d'aquesta comparativa.
 Podeu veure'n més detalls al [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} registre de supressions].
 Podeu seguir [$1 veient aquesta comparativa] si així ho desitgeu.",
 'rev-deleted-diff-view' => "S'ha '''suprimit'' una de les revisions d'aquesta comparativa.
 Podeu veure aquesta comparativa; poden haver-hi més detalls al [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registre d'esborraments].",
-'rev-suppressed-diff-view' => "Una de les revisions d'aquesta comparativa ha estat '''esborrada'''.
-Podeu veure aquesta comparativa; pot haver-hi més detalls al [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} registre de supressions].",
+'rev-suppressed-diff-view' => "S'ha '''suprimit'' una de les revisions d'aquesta comparativa.
+Vegeu-ne més detalls al [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} registre de supressions].",
 'rev-delundel' => 'mostra/amaga',
 'rev-showdeleted' => 'mostra',
 'revisiondelete' => 'Esborrar/restaurar revisions',
@@ -1407,6 +1410,7 @@ Ha de tenir com a molt {{PLURAL:$1|un caràcter|$1 caràcters}}.',
 'prefs-tokenwatchlist' => 'Testimoni',
 'prefs-diffs' => 'Difs',
 'prefs-help-prefershttps' => 'Aquesta preferència tindrà efecte quan inicieu una nova sessió.',
+'prefs-tabs-navigation-hint' => 'Consell: Podeu utilitzar les tecles de cursor de dreta i esquerra per a navegar entre les pestanyes.',
 
 # User preference: email validation using jQuery
 'email-address-validity-valid' => "L'adreça de correu electrònic sembla vàlida",
@@ -1593,13 +1597,14 @@ Ha de tenir com a molt {{PLURAL:$1|un caràcter|$1 caràcters}}.',
 'recentchanges-label-bot' => 'Aquesta modificació fou feta per un bot',
 'recentchanges-label-unpatrolled' => "Aquesta modificació encara no s'ha patrullat",
 'recentchanges-label-plusminus' => 'La mida de la pàgina ha canviat aquest nombre de bytes',
+'recentchanges-legend-heading' => "'''Llegenda:'''",
 'recentchanges-legend-newpage' => '(vegeu també la [[Special:NewPages|llista de pàgines noves]])',
 'recentchanges-legend-plusminus' => "(''±123'')",
 'rcnotefrom' => 'A sota hi ha els canvis des de <b>$2</b> (es mostren fins <b>$1</b>).',
 'rclistfrom' => 'Mostra els canvis nous des de $1',
 'rcshowhideminor' => '$1 edicions menors',
 'rcshowhidebots' => '$1 bots',
-'rcshowhideliu' => '$1 usuaris identificats',
+'rcshowhideliu' => '$1 usuaris registrats',
 'rcshowhideanons' => '$1 usuaris anònims',
 'rcshowhidepatr' => '$1 edicions supervisades',
 'rcshowhidemine' => '$1 edicions pròpies',
@@ -1712,7 +1717,7 @@ Si us plau, torneu enrere i carregueu aquest fitxer sota un altre nom. [[File:$1
 'fileexists-shared-forbidden' => 'Ja hi ha un fitxer amb aquest nom al fons comú de fitxers.
 Si us plau, si encara desitgeu carregar el vostre fitxer, torneu enrera i carregueu-ne una còpia amb un altre nom. [[File:$1|thumb|center|$1]]',
 'file-exists-duplicate' => 'Aquest fitxer és un duplicat {{PLURAL:$1|del fitxer |dels següents fitxers:}}',
-'file-deleted-duplicate' => "Un fitxer idèntic a aquest ([[:$1]]) ha estat esborrat amb anterioritat. Hauríeu de comprovar el registre d'esborrat del fitxer abans de tornar-lo a carregar.",
+'file-deleted-duplicate' => "S'ha suprimit anteriorment un fitxer idèntic a aquest ([[:$1]]). Hauríeu de comprovar el registre de supressions del fitxer abans de tornar-lo a carregar.",
 'uploadwarning' => 'Avís de càrrega',
 'uploadwarning-text' => 'Modifiqueu la descripció de la imatge i torneu a intentar-ho.',
 'savefile' => 'Desa el fitxer',
@@ -2034,6 +2039,7 @@ Les entrades <del>ratllades</del> s\'han resolt.',
 'ninterwikis' => '$1 {{PLURAL:$1|interwiki|interwikis}}',
 'nlinks' => '$1 {{PLURAL:$1|enllaç|enllaços}}',
 'nmembers' => '$1 {{PLURAL:$1|membre|membres}}',
+'nmemberschanged' => '$1 → $2 {{PLURAL:$2|membre|membres}}',
 'nrevisions' => '$1 {{PLURAL:$1|revisió|revisions}}',
 'nviews' => '$1 {{PLURAL:$1|visita|visites}}',
 'nimagelinks' => "S'utilitza en {{PLURAL:$1|una pàgina|$1 pàgines}}",
@@ -2072,6 +2078,7 @@ Les entrades <del>ratllades</del> s\'han resolt.',
 'protectedpages' => 'Pàgines protegides',
 'protectedpages-indef' => 'Només proteccions indefinides',
 'protectedpages-cascade' => 'Només proteccions en cascada',
+'protectedpages-noredirect' => 'Amaga redireccions',
 'protectedpagesempty' => 'No hi ha cap pàgina protegida per ara',
 'protectedtitles' => 'Títols protegits',
 'protectedtitlesempty' => 'No hi ha cap títol protegit actualment amb aquests paràmetres.',
@@ -2216,7 +2223,7 @@ L'adreça electrònica que vau indicar a [[Special:Preferences|les vostres prefe
 'emailtarget' => "Introduïu el nom d'usuari del destinatari",
 'emailusername' => "Nom d'usuari:",
 'emailusernamesubmit' => 'Enviar',
-'email-legend' => 'Enviar un correu electrònic a un altre usuari de {{SITENAME}}',
+'email-legend' => 'Envia un missatge electrònic a un altre usuari de {{SITENAME}}',
 'emailfrom' => 'De:',
 'emailto' => 'Per a:',
 'emailsubject' => 'Assumpte:',
@@ -2242,7 +2249,7 @@ L'adreça electrònica que vau indicar a [[Special:Preferences|les vostres prefe
 'watchnologintext' => "Heu d'[[Special:UserLogin|entrar]]
 per modificar el vostre llistat de seguiment.",
 'addwatch' => 'Afegeix a llista de seguiment',
-'addedwatchtext' => 'La pàgina "[[:$1]]" ha estat afegida a la vostra [[Special:Watchlist|llista de seguiment]].
+'addedwatchtext' => 'S\'ha afegit la pàgina "[[:$1]]" a la vostra [[Special:Watchlist|llista de seguiment]].
 S\'hi mostraran els canvis futurs que tinguin lloc en aquesta pàgina i la corresponent discussió.',
 'removewatch' => 'Treu de la llista de seguiment',
 'removedwatchtext' => "S'ha tret la pàgina «[[:$1]]» de la vostra [[Special:Watchlist|llista de seguiment]].",
@@ -2347,6 +2354,7 @@ Vegeu $2 per a un registre dels esborrats més recents.",
 'delete-edit-reasonlist' => "Edita els motius d'eliminació",
 'delete-toobig' => "Aquesta pàgina té un historial d'edicions molt gran, amb més de $1 {{PLURAL:$1|canvi|canvis}}. L'eliminació d'aquestes pàgines està restringida per a prevenir que hi pugui haver un desajustament seriós de la base de dades de tot el projecte {{SITENAME}} per accident.",
 'delete-warning-toobig' => "Aquesta pàgina té un historial d'edicions molt gran, amb més de $1 {{PLURAL:$1|canvi|canvis}}. Eliminar-la podria suposar un seriós desajustament de la base de dades de tot el projecte {{SITENAME}}; aneu en compte abans dur a terme l'acció.",
+'deleting-backlinks-warning' => "'''Avís:''' Altres pàgines enllacen a la pàgina que esteu a punt de suprimir.",
 
 # Rollback
 'rollback' => 'Reverteix edicions',
@@ -2367,7 +2375,7 @@ La darrera modificació l'ha fet l'usuari [[User:$3|$3]] ([[User talk:$3|Discuss
 
 # Edit tokens
 'sessionfailure-title' => 'Error de sessió',
-'sessionfailure' => "Sembla que hi ha problema amb la vostra sessió. Aquesta acció ha estat anuŀlada en prevenció de pirateig de sessió. Si us plau, pitgeu «Torna», i recarregueu la pàgina des d'on veniu, després intenteu-ho de nou.",
+'sessionfailure' => "S'ha produït un error amb la vostra sessió. S'ha anul·lat aquesta acció en prevenció de pirateig de sessió. Premeu «Torna», recarregueu la pàgina des d'on veniu i torneu-ho a intentar.",
 
 # Protect
 'protectlogpage' => 'Registre de protecció',
@@ -2627,7 +2635,7 @@ l'accés a l'escriptura a una adreça IP o un usuari prèviament bloquejat.",
 'change-blocklink' => 'canvia el blocatge',
 'contribslink' => 'contribucions',
 'emaillink' => 'correu electrònic',
-'autoblocker' => "Heu estat blocat automàticament perquè la vostra adreça IP ha estat recentment utilitzada per l'usuari ''[[User:$1|$1]]''.
+'autoblocker' => "Se us ha blocat automàticament perquè la vostra adreça IP ha estat recentment utilitzada per l'usuari ''[[User:$1|$1]]''.
 El motiu del bloqueig de $1 és: ''$2''.",
 'blocklogpage' => 'Registre de bloquejos',
 'blocklog-showlog' => "S'ha blocat aquest usuari prèviament.
@@ -3676,7 +3684,7 @@ Confirmeu que realment voleu tornar-la a crear.",
 
 # Language selector for translatable SVGs
 'img-lang-default' => '(llengua per defecte)',
-'img-lang-info' => 'Dibuixa aquesta imatge en $1 $2.',
+'img-lang-info' => 'Dibuixa aquesta imatge en $1. $2',
 'img-lang-go' => 'Vés-hi',
 
 # Table pager
@@ -3776,13 +3784,14 @@ Amb aquest programa heu d'haver rebut [{{SERVER}}{{SCRIPTPATH}}/COPYING una còp
 'version-entrypoints-header-url' => 'URL',
 
 # Special:Redirect
-'redirect' => 'Redirigeix per fitxer, usuari o ID de la revisió',
+'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 (donada un ID de la revisió), o a una pàgina d'usuari (donat un ID numèric d'usuari). Ús: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revision/328429]], or [[{{#Special:Redirect}}/user/101]].",
+'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:',
 'redirect-value' => 'Valor:',
 'redirect-user' => "ID d'usuari",
+'redirect-page' => 'ID de pàgina',
 'redirect-revision' => 'Revisió de la pàgina',
 'redirect-file' => 'Nom del fitxer',
 'redirect-not-exists' => "No s'ha trobat el valor",
@@ -4022,10 +4031,12 @@ També expandeix les funcions sintàctiques, com ara <code><nowiki>{{</nowiki>#l
 'expand_templates_input' => 'El vostre text:',
 'expand_templates_output' => 'Resultat:',
 'expand_templates_xml_output' => 'Sortida XML',
+'expand_templates_html_output' => 'Sortida en HTML sense filtrar',
 'expand_templates_ok' => 'OK',
 'expand_templates_remove_comments' => 'Elimina els comentaris',
 'expand_templates_remove_nowiki' => "Suprimeix l'etiqueta <nowiki> en el resultat",
 'expand_templates_generate_xml' => "Mostra l'arbre XML",
+'expand_templates_generate_rawhtml' => "Mostra l'HTML sense filtrar",
 'expand_templates_preview' => 'Previsualitza',
 
 );
index 7471d34..5443ac2 100644 (file)
@@ -321,8 +321,8 @@ $messages = array(
 # User preference toggles
 'tog-underline' => 'Кlел сиз хьака хьажориган:',
 'tog-justify' => 'Нисде йоза шораллий агlонца',
-'tog-hideminor' => 'Къайладаха кигийра нисдарш оц могlама керла хийцамехь',
-'tog-hidepatrolled' => 'Къайладаха гlаролладина нисдарш оц могlама керла нисдашкахь',
+'tog-hideminor' => 'Къайладаха кигийра нисдарш оц могӀама керла хийцамехь',
+'tog-hidepatrolled' => 'Къайладаха гӀаролладина нисдарш оц могӀама керла нисдаршкахь',
 'tog-newpageshidepatrolled' => 'Къайлайаха гlароллайина агlонаш оц могlама керла агlонашкахь',
 'tog-extendwatchlist' => 'Шорбина тlехьажарна могlам, ша беригге а хийцамаш чубогlуш, тlяхьабина боцурш а',
 'tog-usenewrc' => 'Лелабе дика могӀам керла чу хийцамашна (оьшу JavaScript)',
@@ -332,11 +332,11 @@ $messages = array(
 'tog-editsection' => 'Гайта хьажораг «нисйе» аьлла хӀора агӀона',
 'tog-editsectiononrightclick' => 'Нисде дакъа шозза бакъехьар дахка тӀетаӀийча оцу кортан (JavaScript)',
 'tog-showtoc' => 'Гойти коьртнаш (оцу агlонашна лаххара 3 коьртнашца)',
-'tog-rememberpassword' => 'Ð\94аглаÑ\86а Ñ\81ан Ð´Ó\80аÑ\8fздаÑ\80 Ñ\85Ó\80окÑ\85Ñ\83 Ð±Ñ\80аÑ\83зеÑ\80ан Ñ\82Ó\80Ñ\8fÑ\85Ñ\8c (Ñ\86Ñ\85Ñ\8cан $1 {{PLURAL:$1|де|ден|динаÑ\85Ñ\8c}})',
+'tog-rememberpassword' => 'Ð\94аглаÑ\86а Ñ\81ан Ð´Ó\80аÑ\8fздаÑ\80 Ñ\85Ó\80окÑ\85Ñ\83 Ð±Ñ\80аÑ\83зеÑ\80ан Ñ\82Ó\80Ñ\8fÑ\85Ñ\8c (Ñ\86Ñ\85Ñ\8cан $1 {{PLURAL:$1|де|динаÑ\85Ñ\8c|ден}})',
 'tog-watchcreations' => 'ТӀетоха ас кхоьллина агӀонаш тергаме могӀам чу',
 'tog-watchdefault' => 'ТӀетоха ас нисйина агӀонаш тергаме могӀам чу',
 'tog-watchmoves' => 'ТӀетоха ас цӀераш хийцина агӀонаш тергаме могӀам чу',
-'tog-watchdeletion' => 'Тlетоха ас дӀаяхина агlонаш тергаме могlам чу',
+'tog-watchdeletion' => 'ТӀетоха ас дӀаяьхна агӀонаш тергаме могӀанан чу',
 'tog-minordefault' => 'Къастам бе нисйиначарн хlумцадеш кегийра долушсанна',
 'tog-previewontop' => 'Чуяккха хьалххьажар тадаран кора хьалха',
 'tog-previewonfirst' => 'Гайта хьалххьажар тадарш да долийча',
@@ -344,17 +344,17 @@ $messages = array(
 'tog-enotifusertalkpages' => 'Хаам бо зlе чухул, долахь йолу дийцаре агlон хийцамах лаьцна',
 'tog-enotifminoredits' => 'Хаам бо зӀе чухул, цхьа жимма а хийцамаш биняхь',
 'tog-enotifrevealaddr' => 'Гайта сан зlе оцу хаамаш барехь',
-'tog-shownumberswatching' => 'Гайта декъашхойн терахь, агlо латийна болу шай тергаме могlам юкъа',
+'tog-shownumberswatching' => 'Гайта декъашхойн терахь, агӀо латийна болу шай тергаме могӀанан юкъа',
 'tog-oldsig' => 'Карара куьгтаӀорна:',
 'tog-fancysig' => 'Шен вики-къастаман куьгтаӀдар (ша шех хьажораг йоцуш)',
 'tog-uselivepreview' => 'Лелайа чехка хьалха хьажа (JavaScript, муха ю хьажарна)',
 'tog-forceeditsummary' => 'Дага даийта, нагахь нисйарх лаьцна чохь язйина яцахь',
-'tog-watchlisthideown' => 'Къайлаяха ас нисйинарш оцу тергаме могlам чура',
-'tog-watchlisthidebots' => 'Къайладаха шаболх бечо нисдинарш оцу тергаме могlам чура',
-'tog-watchlisthideminor' => 'Къайладаха кегийра нисдарш оцу тергаме могlам чура',
-'tog-watchlisthideliu' => 'Къайладаха вовзийтина болу декъашхойн нисдарш оцу тергаме могlам чура',
-'tog-watchlisthideanons' => 'Къайладаха къайлаха болу декъашхойн нисдарш оцу тергаме могlам чура',
-'tog-watchlisthidepatrolled' => 'Ð\9aÑ\8aайладаÑ\85а Ñ\85Ñ\8cаÑ\8cжина Ð²Ð¾Ð»Ñ\83 Ð½Ð¸Ñ\81даÑ\80Ñ\88 Ð¾Ñ\86Ñ\83 Ñ\82еÑ\80гаме Ð¼Ð¾Ð³lам чура',
+'tog-watchlisthideown' => 'Къайлаяха ас нисйинарш оцу тергаме могӀам чура',
+'tog-watchlisthidebots' => 'Къайладаха шаболх бечо нисдинарш оцу тергаме могӀам чура',
+'tog-watchlisthideminor' => 'Къайладаха кегийра нисдарш оцу тергаме могӀам чура',
+'tog-watchlisthideliu' => 'Къайладаха вовзийтина болу декъашхойн нисдарш оцу тергаме могӀам чура',
+'tog-watchlisthideanons' => 'Къайладаха къайлаха болу декъашхойн нисдарш оцу тергаме могӀам чура',
+'tog-watchlisthidepatrolled' => 'Ð\9aÑ\8aайладаÑ\85а Ñ\85Ñ\8cаÑ\8cжина Ð´Ð¾Ð»Ñ\83 Ð½Ð¸Ñ\81даÑ\80Ñ\88 Ð¾Ñ\86Ñ\83 Ñ\82еÑ\80гаме Ð¼Ð¾Ð³Ó\80ам чура',
 'tog-ccmeonemails' => 'Дlадахьийта суна исанна кехат, аса дохьуьйтуш долу кхечу декъашхошна.',
 'tog-diffonly' => 'Ма гайта агlон чулацам шина башхонца цхьатерра йолуш',
 'tog-showhiddencats' => 'Гайта къайлаха йолу категореш',
@@ -439,19 +439,19 @@ $messages = array(
 'december-date' => 'Декабрь $1',
 
 # Categories related messages
-'pagecategories' => '{{PLURAL:$1|Категори|Категореш}}',
+'pagecategories' => '{{PLURAL:$1|1=Категори|Категореш}}',
 'category_header' => 'Агlонаш оц категоречохь «$1»',
 'subcategories' => 'Бухаркатегореш',
 'category-media-header' => 'Файлаш оцу категори чохь «$1»',
 'category-empty' => "''ХӀара категори хӀинца йаьсса ю.''",
-'hidden-categories' => '{{PLURAL:$1|Къайлаха категори|Къайлаха йолу категореш}}',
+'hidden-categories' => '{{PLURAL:$1|1=Къайлаха категори|Къайлаха йолу категореш}}',
 'hidden-category-category' => 'Къайлаха йолу категореш',
-'category-subcat-count' => '{{PLURAL:$2|ХӀокх категори чохь ю хӀокхуьна бухар категори.|{{PLURAL:$1|Гойташ $1 бухар категори|Гойту $1 бухар категореш|Гойту $1 бухар категори}} оцу $2.}}',
-'category-subcat-count-limited' => 'Хlокх категори чохь {{PLURAL:$1|$1 бухар категори|$1 бухар категореша|$1 бухар категореш}}.',
-'category-article-count' => '{{PLURAL:$2|ХӀокх категори чохь яц цхьа агӀо бе.|{{PLURAL:$1|Гойташ $1 агӀо|Гойту $1 агӀонаш|Гойту $1 агӀонаш}} хӀокх категорешца кху $2.}}',
-'category-article-count-limited' => 'ХӀокх категори чохь {{PLURAL:$1|$1 агӀо|$1 агӀонаш}}.',
-'category-file-count' => '{{PLURAL:$2|ХӀокх категори чохь цхьа файл бе яц.|{{PLURAL:$1|Гойта $1 файл|Гойту $1 файл|Гойту $1 файлаш}} хӀокх категорешца кху $2.}}',
-'category-file-count-limited' => 'ХӀокх категори чохь {{PLURAL:$1|$1 файл|$1 файл|$1 файлаш}}.',
+'category-subcat-count' => '{{PLURAL:$2|1=ХӀокху категори чохь ю хӀокхуьна бухар категори.|ХӀокху категори чохь ю $1 {{PLURAL:$1|1=бухара категори|бухара категореш}} $2 массо нах.}}',
+'category-subcat-count-limited' => 'Хlокх категори чохь {{PLURAL:$1|$1 бухар категори|$1 бухар категореш|$1 бухар категореша}}.',
+'category-article-count' => '{{PLURAL:$2|1=ХӀокху категори чохь яц цхьа агӀо бе.|{{PLURAL:$1|1=Гойташ $1 агӀо|Гойту $1 агӀонаш}} хӀокху категорешца кху $2.}}',
+'category-article-count-limited' => 'ХӀокх категори чохь {{PLURAL:$1|1=$1 агӀо|$1 агӀонаш}}.',
+'category-file-count' => '{{PLURAL:$2|ХӀокху категори чохь цхьа файл бе яц.|{{PLURAL:$1|Гойта $1 файл|Гойту $1 файлаш|Гойту $1 файл}} хӀокху категорешца кху $2.}}',
+'category-file-count-limited' => 'ХӀокх категори чохь {{PLURAL:$1|$1 файл|$1 файлаш|$1 файл}}.',
 'listingcontinuesabbrev' => '(кхин дlа)',
 'index-category' => 'Меттигтерахьйо агlонаш',
 'noindex-category' => 'ДӀахьушйоцу агӀонаш',
@@ -480,13 +480,13 @@ $messages = array(
 'faqpage' => 'Project:СиХХ',
 
 # Vector skin
-'vector-action-addsection' => 'Тlетоха хьедар',
+'vector-action-addsection' => 'ТӀетоха хьедар',
 'vector-action-delete' => 'ДӀаяккха',
 'vector-action-move' => 'Цlе хийца',
 'vector-action-protect' => 'Гlаролла дé',
 'vector-action-undelete' => 'Меттахlоттадé',
 'vector-action-unprotect' => 'ГӀароллех къаста',
-'vector-simplesearch-preference' => 'ШÑ\83Ñ\8cйÑ\80а Ð»Ð°Ñ\85аÑ\80ан Ñ\85Ñ\8cеÑ\85аÑ\80 Ð»Ð°Ñ\82а Ð´Ðµ (декÑ\8aа Â«Ð¥Ñ\8cÑ\83Ñ\88йеÑ\80г» ÐºÐµÑ\87йаÑ\80Ñ\86а)',
+'vector-simplesearch-preference' => 'Ð\90Ñ\82Ñ\82а Ð»Ð°Ñ\85аÑ\80ан Ñ\85Ñ\8cеÑ\85аÑ\80 Ð»Ð°Ñ\82а Ð´Ðµ («Ð\92екÑ\82оÑ\80ан» ÐºÐµÑ\87Ñ\8fÑ\80на Ð±ÐµÐ½)',
 'vector-view-create' => 'Кхоллар',
 'vector-view-edit' => 'Нисйé',
 'vector-view-history' => 'АгӀона хийцамаш',
@@ -498,7 +498,7 @@ $messages = array(
 
 'navigation-heading' => 'Навигацин меню',
 'errorpagetitle' => 'ГӀалат',
-'returnto' => 'Юхагlо оцу агlоне $1.',
+'returnto' => 'ЮхагӀо оцу агӀоне $1.',
 'tagline' => 'Гlирс хlокхуьна бу {{grammar:genitive|{{SITENAME}}}}',
 'help' => 'ГӀо',
 'search' => 'Лаха',
@@ -519,7 +519,7 @@ $messages = array(
 'delete' => 'ДӀаяккха',
 'deletethispage' => 'ДӀаяккха хӀара агӀо',
 'undeletethispage' => 'ХӀара агӀо меттахӀоттор',
-'undelete_short' => 'Меттахlоттайé $1 {{PLURAL:$1|нисйинарг|нисйинарш|нисйинарш}}',
+'undelete_short' => 'МеттахӀоттайé $1 {{PLURAL:$1|1=нисйинарг|нисйинарш}}',
 'viewdeleted_short' => 'Хьажар {{PLURAL:$1|$1 дlадаьккхина нийсдар|$1 дlадаьхна нийсдарш|$1 дlадаьхна нийсдарш}}',
 'protect' => 'Гlаролла дé',
 'protect_change' => 'хийца',
@@ -565,7 +565,7 @@ $1',
 # All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage).
 'aboutsite' => '{{grammar:genitive|{{SITENAME}}}} лаьцна',
 'aboutpage' => 'Project:Цуьнах лаьцна',
-'copyright' => 'Чулацам лело мега догӀуш хиларца оцу $1.',
+'copyright' => 'Чулацам лело мега $1 лицензица (кхениг билгалйина яцахь).',
 'copyrightpage' => '{{ns:project}}:Авторан бакъонаш',
 'currentevents' => 'ХӀинцлера хилларш',
 'currentevents-url' => 'Project:ХӀинцлера хилларш',
@@ -583,7 +583,7 @@ $1',
 
 'badaccess' => 'ТӀекхачарехь гӀалат',
 'badaccess-group0' => 'Шуьга кхочуш далур дац дехарца деш дерг',
-'badaccess-groups' => 'Дехарца деш дерг кхочуш далундерш бу хӀара декъашхой оцу {{PLURAL:$2|тобанашах|тобанах}} $1.',
+'badaccess-groups' => 'Дехарца деш дерг кхочуш далундерш бу хӀара декъашхой оцу {{PLURAL:$2|1=тобанашах|тобанах}} $1.',
 
 'versionrequired' => 'Оьшу MediaWiki тайпанара $1',
 'versionrequiredtext' => 'Болх бан хӀоку агӀонца оьшу MediaWiki тайпан $1. Хьажа. [[Special:Version|лелочу тайпанара башхонах лаьцна хаам]].',
@@ -593,25 +593,25 @@ $1',
 'pagetitle-view-mainpage' => '{{SITENAME}}',
 'retrievedfrom' => 'Хьост — «$1»',
 'youhavenewmessages' => 'Хьуна кхечи $1 ($2).',
-'youhavenewmessagesfromusers' => 'Хьуна кхачанна $1 {{PLURAL:$3|$3 декъашхочунгара|$3 декъашхошкара|$3 декъашхошкара}} ($2).',
+'youhavenewmessagesfromusers' => 'Хьуна кхачанна $1 {{PLURAL:$3|1=$3 декъашхочунгара|$3 декъашхошкара}} ($2).',
 'youhavenewmessagesmanyusers' => 'Хьона еъна $1 дукху декъашхошкар ($2).',
 'newmessageslinkplural' => '{{PLURAL:$1|керла хаам|999=керла хаамаш}}',
 'newmessagesdifflinkplural' => '{{PLURAL:$1|тӀаьхьара бина хийцам|999=тӀаьхьара бина хийцамаш}}',
 'youhavenewmessagesmulti' => 'Хьуна кхаьчна керла хаам оцу $1',
 'editsection' => 'нисйé',
 'editold' => 'нисйé',
-'viewsourceold' => 'Ñ\85Ñ\8cажа Ð¹Ð¾Ð»Ñ\88 Ð¹Ð¾Ð»Ñ\83Ñ\87Ñ\83 Ð¸Ñ\88аÑ\80е',
+'viewsourceold' => 'Ñ\85Ñ\8cажа Ð¹Ð¾Ð»Ñ\83Ñ\88 Ð¹Ð¾Ð»Ñ\83Ñ\87Ñ\83 ÐºÐ¾Ð´е',
 'editlink' => 'нисйé',
-'viewsourcelink' => 'Ñ\85Ñ\8cажа Ð¹Ð¾Ð»Ñ\88 Ð¹Ð¾Ð»Ñ\83Ñ\87Ñ\83 Ð¸Ñ\88аÑ\80е',
+'viewsourcelink' => 'Ñ\85Ñ\8cажа Ð¹Ð¾Ð»Ñ\83Ñ\88 Ð¹Ð¾Ð»Ñ\83Ñ\87Ñ\83 ÐºÐ¾Ð´е',
 'editsectionhint' => 'Нисде дакъа: $1',
 'toc' => 'Чулацам',
 'showtoc' => 'гайта',
 'hidetoc' => 'къайлаяккха',
 'collapsible-collapse' => 'къайлаяккха',
 'collapsible-expand' => 'хьайаста',
-'thisisdeleted' => 'Хьажа йа меттахlоттайé $1?',
-'viewdeleted' => 'Ð¥Ñ\8cалÑ\85Ñ\85Ñ\8cожи $1?',
-'restorelink' => '{{PLURAL:$1|$1 дӀадаьккхина нийсдар|$1 дӀадяхна нийсдарш}}',
+'thisisdeleted' => 'Хьажа я меттахӀоттайé $1?',
+'viewdeleted' => 'Ð¥Ñ\8cожий $1?',
+'restorelink' => '{{PLURAL:$1|1=$1 дӀадаьккхина нийсдар|$1 дӀадяхна нийсдарш}}',
 'feedlinks' => 'Оцу хатlаьхь:',
 'feed-invalid' => 'Тайпан нийсадоцу талол оцу куьгтаlорна.',
 'feed-unavailable' => 'Хаитарца йолу асанаш тlекхочучехь яц',
@@ -621,7 +621,7 @@ $1',
 'page-atom-feed' => '«$1» — Atom-аса',
 'feed-atom' => 'Атом',
 'feed-rss' => 'RSS',
-'red-link-title' => '$1 (ишта агlо йоцуш йу)',
+'red-link-title' => '$1 (ишта агӀо йоцуш ю)',
 'sort-descending' => 'Ма хийла нисяр',
 'sort-ascending' => 'Ма хила нисяр',
 
@@ -630,7 +630,7 @@ $1',
 'nstab-user' => 'Декъашхо',
 'nstab-media' => 'Медиа агӀо',
 'nstab-special' => 'Белха агlо',
-'nstab-project' => 'Ð\9aÑ\85олламех',
+'nstab-project' => 'Ð\9fÑ\80оекÑ\82ех',
 'nstab-image' => 'Файл',
 'nstab-mediawiki' => 'Хаам',
 'nstab-template' => 'Кеп',
@@ -639,6 +639,9 @@ $1',
 
 # Main script and global functions
 'nosuchaction' => 'Ишта дийриг дац',
+'nosuchactiontext' => 'ДӀаязйина URL нийса яц.
+URL язъеш гӀалат даьлла хила мега.
+Иза кхин {{SITENAME}} пороектехь гӀалат хила мега.',
 'nosuchspecialpage' => 'Иштта белхан агӀо яц',
 'nospecialpagetext' => '<strong>Иштта белхан агӀо яц.</strong>
 
@@ -681,22 +684,24 @@ $1',
 'formerror' => 'ГӀалат: йиш яц хӀара формаш дӀакхачо',
 'badarticleerror' => 'И хӀума кхочушъ дан йиш яц хӀокху агӀонехь.',
 'cannotdelete' => 'Цатарло дӀаяккха я цӀе хийца «$1».
-АгӀо хьалхо дӀаяккхина хила тарло',
+АгӀо хьалхо дӀаяьккхина хила тарло',
 'cannotdelete-title' => 'Цатарло агӀо дӀаяккха «$1»',
 'delete-hook-aborted' => 'Нисдар юхадаьккхина тӀехьожучо.
 ХӀу бахьна ду билгал дина дац.',
 'no-null-revision' => '«$1» агӀона нисдар дан цаделира',
 'badtitle' => 'Цамегаш йолу цlе',
 'badtitletext' => 'Дехарца йолу агlонан цlе нийса яц, йаьсса ю, хила мега нийса ца хlоттийна меттаюкъар йа юкъарвики цlе. Хила мега, цlарца цамагош йолу саберг.',
-'perfcached' => 'Лахара хаам схьаэца кэша чура цундела тӀехьарлаьра хийцамаш гойтуш бац. Кэша чохь латтаё оцул $1  кӀезиг {{PLURAL:$1|дӀаяздар|дӀаяздарш}}.',
-'perfcachedts' => 'Лахара хаам схьаэца кэша чура иза тӀаьхьара карла ялла $1. Кэша чохь латта до оцул $4 кӀезиг {{PLURAL:$4|дӀаяздар|дӀаяздарш}}.',
+'perfcached' => 'Лахара хаам схьаэца кэша чура цундела тӀехьарлаьра хийцамаш гойтуш бац. Кэша чохь латтаё оцул $1  кӀезиг {{PLURAL:$1|1=дӀаяздар|дӀаяздарш}}.',
+'perfcachedts' => 'Лахара хаам схьаэца кэша чура иза тӀаьхьара карла ялла $1. Кэша чохь латта до оцул $4 кӀезиг {{PLURAL:$4|1=дӀаяздар|дӀаяздарш}}.',
 'querypage-no-updates' => 'ХӀинца хӀара агӀо карлаякхар дӀадайина ду.
 Кхузахь гайтина болу хаамаш карла боккхур бац.',
 'viewsource' => 'Хьажар',
 'viewsource-title' => 'Агӏона $1 дуьххьарлера йозане хьажар',
 'actionthrottled' => 'Сиххалин доза тохар',
+'actionthrottledtext' => 'Спам цахилийта хӀара дешдерг кӀезиг хенахь дукху ца дайта дихкина ду. Дехар до массийта минот яьлча гӀорта.',
 'protectedpagetext' => 'ХӀара агӀо дӀакъойлина йу рé цадаккхийта.',
 'viewsourcetext' => 'Хьоьга далундерг хьажар а дезахь хlокху агlон чура йоза хьаэцар:',
+'viewyourtext' => "Хьан йиш ю '''хьой нисдинчу''' дӀадолалун йозе хьажа а цуна копи ян а:",
 'protectedinterface' => 'ХӀара схьгайтарна гӀирса хаамаш латтош йолу агӀо ю. Куьйгалхошна бен иза хийца цало.',
 'editinginterface' => "'''Тергам бе:''' Ахьа таеш ю интерфейсан йоза долу агӀо програмин латторан.
 Цуна бина хийцам хьокху википедин кхечу декъашхошна гур бу.
@@ -708,7 +713,8 @@ $1',
 'mycustomjsprotected' => 'Хьан бакъо яц JavaScript агӀо тая.',
 'myprivateinfoprotected' => 'Хьайн долара хаамна хийцам ба хьа йиш яц',
 'mypreferencesprotected' => 'Хьай гӀирс нисбан хьа бакъо яц.',
-'exception-nologin' => 'Ахьа хӀой вовзийтина/йовзийтина вац/яц',
+'ns-specialprotected' => 'ХӀокху «{{ns:special}}» цӀерийн меттигашан агӀонаш таян йиш яц.',
+'exception-nologin' => 'ХӀинца а ахьа системин чохь болх беш бац',
 
 # Virus scanner
 'virus-scanfailed' => 'сканиран гӀалат (код $1)',
@@ -732,28 +738,28 @@ $1',
 'yourpasswordagain' => 'Юха язъе пароль:',
 'createacct-yourpasswordagain' => 'Бакъе пароль',
 'createacct-yourpasswordagain-ph' => 'Кхин цкъа язъе пароль',
-'remembermypassword' => 'Даглаца сан дӀавазвалар/ялар хӀокху гӀулкхдечу гӀирса тӀяхь (цхьан $1 {{PLURAL:$1|ден|динахь|динахь}})',
+'remembermypassword' => 'Даглаца сан дӀаяздар хӀокху компьютеран тӀехь (цхьан $1 {{PLURAL:$1|динахь}})',
 'userlogin-remembermypassword' => 'Дагахь латт ве/е со',
 'userlogin-signwithsecure' => 'Ларийна цхьаьнакхетар',
 'yourdomainname' => 'Хьан машан меттиг:',
 'password-change-forbidden' => 'Хьан йиш яц хӀокху вики чохь пароль хийца.',
 'login' => 'Системин чугӀо',
-'nav-login-createaccount' => 'Ð\92овзийÑ\82а/Ð\99овзийÑ\82а Ñ\85Ñ\8cой / Ð´Ó\80авазло/дÓ\80аÑ\8fзло',
-'loginprompt' => 'Ахьа бакъо йала йеза оцу «cookies» хьайна вовзийта лаахь гlирсан.',
+'nav-login-createaccount' => 'СиÑ\81Ñ\82емин Ñ\87Ñ\83гÓ\80о / Ð´Ó\80аÑ\8fздаÑ\80 ÐºÑ\85олла',
+'loginprompt' => 'Ахьа бакъо яла еза оцу «cookies» хьайна системин чохь болхбан лаахь.',
 'userlogin' => 'Довзийтар я декъашхочун дӀаяздар кхоллар',
 'userloginnocreate' => 'Довзийта',
 'logout' => 'Болх дӀаберзор',
 'userlogout' => 'Болх дӀаберзор',
-'notloggedin' => 'Хьо вовзийта/йовзийта гlирсан',
+'notloggedin' => 'ХӀинца а ахьа системин чохь болх беш бац',
 'userlogin-noaccount' => 'Декъашхочун дӀаяздар дац хьа?',
-'userlogin-joinproject' => '{{grammar:genitive|{{SITENAME}}}} юкъахӀотта',
+'userlogin-joinproject' => 'Проектехь дӀаяздар кхоллар',
 'nologin' => "Декъашхочун дӀаяздар дац хьа? '''$1'''.",
 'nologinlink' => 'Кхолла декъашхочун дӀаяздар',
 'createaccount' => 'Кхолла декъашхочун дӀаяздар',
-'gotaccount' => "Дlавазвелла вуй хьо? '''$1'''.",
+'gotaccount' => "ДӀаяздар кхоьллин ахь? '''$1'''.",
 'gotaccountlink' => 'Довзийта',
 'userlogin-resetlink' => 'Чуволу/йолу хаам биц бела?',
-'userlogin-resetpassword-link' => 'Пароль кхоссар',
+'userlogin-resetpassword-link' => 'Пароль кхоссар?',
 'helplogin-url' => 'Help:Системин довзийтар',
 'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|Системин чудаха гӀодар]]',
 'userlogin-loggedin' => 'Хьо {{GENDER:$1|$1}} цӀарца чохь ву/ю.
@@ -775,9 +781,9 @@ $1',
 'createacct-submit' => 'Кхолла декъашхочун дӀаяздар',
 'createacct-another-submit' => 'Кхолла декъашхочун кхин дӀаяздар',
 'createacct-benefit-heading' => '{{SITENAME}} кхолийна хьо санначу наха.',
-'createacct-benefit-body1' => '{{PLURAL:$1|нисдар|нисдарш}}',
-'createacct-benefit-body2' => '{{PLURAL:$1|яззам|яззамаш}}',
-'createacct-benefit-body3' => '{{PLURAL:$1|декъашхо|декъашхой}} тӀаьхьарачу хенахь',
+'createacct-benefit-body1' => '{{PLURAL:$1|1=нисдар|нисдарш}}',
+'createacct-benefit-body2' => '{{PLURAL:$1|1=яззам|яззамаш}}',
+'createacct-benefit-body3' => '{{PLURAL:$1|1=декъашхо|декъашхой}} тӀаьхьарачу хенахь',
 'badretype' => 'Ахьа язъен ишарш цхьатера яц',
 'userexists' => 'Ахьа язъен декъашхочун цӀе йолуш ю, дехар до кхин цӀе харжар.',
 'loginerror' => 'Гlалат ду декъашхо вовзарехь/йовзарехь',
@@ -788,26 +794,40 @@ $1',
 'noname' => 'Ахьа магийтина йолу декъашхочун цӀе билгал йина яц.',
 'loginsuccesstitle' => 'Хьан пароль тӀеэца, марша догӀила Википеди чу!',
 'loginsuccess' => 'Хlинца ахьа болх бó оцу цlарца $1.',
-'nosuchuser' => 'ЦlаÑ\80Ñ\86а $1 Ð´ÐµÐºÑ\8aаÑ\88Ñ\85о Ð²Ð°Ñ\86\8fц.
-Декъашхой цlераш хаалуш йу дlайазвалрца/яларца элраш.
-Нийса юьй хьажа цlе йа [[Special:UserLogin/signup|дlаяздар кхолла керла]].',
+'nosuchuser' => 'Ð\98Ñ\88Ñ\82Ñ\82а $1 Ñ\86Ó\80е Ð¹Ð¾Ð»Ñ\83Ñ\88 Ð´ÐµÐºÑ\8aаÑ\88Ñ\85оÑ\87Ñ\83н Ð´Ó\80аÑ\8fздаÑ\80 Ð´Ð°ц.
+Декъашхой цӀераш хаалуш ю дӀаяздарца элпаш.
+Нийса юьй хьажа цӀе я [[Special:UserLogin/signup|дӀаяздар кхолла керла]].',
 'nosuchusershort' => 'Ишта «$1» цӀе йолу декъашхо вац/яц. Хьажа цӀе нийса язйина юй.',
 'nouserspecified' => 'Ахьа декъашхочун цӀе билгал ян езаш ю.',
 'login-userblocked' => 'ХӀара декъашхо блоктоьхна ву/ю. Системин чувала/яла магийна дац.',
 'wrongpassword' => 'Ахьа язйина йолу пароль нийса яц. Хьажа юху цхьаъз.',
 'wrongpasswordempty' => 'Дехар до, язъе еса йоцу пароль.',
-'mailmypassword' => 'Яийта керла пароль электронан почтехула',
+'passwordtooshort' => 'Пароль хилла еза $1 {{PLURAL:$1|1=символ|символаш}} йолуш.',
+'password-name-match' => 'Язъен пароль декъашхочун дӀаяздарал башха хила еза.',
+'password-login-forbidden' => 'Иштта декъашхочун цӀе а пароль а лелаян цамаго.',
+'mailmypassword' => 'Пароль кхоссар',
 'passwordremindertitle' => 'Декъашхочун {{grammar:genitive|{{SITENAME}}}}  пароль дагайаийтар',
 'noemail' => 'ЦӀе $1 йолу декъашхочун электронни адрес яздина дац.',
 'noemailcreate' => 'Ахьа нийса электронни почтан адрес дӀаяздан деза',
 'passwordsent' => 'Керла пароль декъашхочун $1 электронни адрес тӀе дӀахьажина. Дехар до, керла пароль еъча юху системин чугӀо.',
 'blocked-mailpassword' => 'Хьан IP-адрес ца тадарш дан магийна дац, цуьндела пароль меттахӀотош йолу функци блоктоьхна ю.',
+'eauthentsent' => 'ДӀаяздинчу электронан адрес тӀе хаам баийтина.
+Даиман хаамаш баийта хааман чохь де бохург дан деза адрес хьай хилар бакъдеш.',
 'throttled-mailpassword' => 'Пароль дага йоуьйту функци {{PLURAL:$1|тӀехьара $1 сахьтехь}} лелина.
 Зулам цахилийта $1 {{PLURAL:$1|сахьтан чохь}} цӀа бен функци лело йиш яц.',
 'mailerror' => 'Кехат дохьуьйтуш гӀалат ду: $1',
-'emailauthenticated' => 'Хьан почтан адрес бакъдина $2 $3.',
+'emailauthenticated' => 'Хьан электронан почтан адрес бакъдина $2 $3.',
+'emailnotauthenticated' => 'Хьан электронан почтан адрес хӀинца а бакъдина дац.
+Хаамаш кхоьхьуьйтура бац.',
+'emailconfirmlink' => 'Бакъде хьай электронан почтан адрес',
+'emaildisabled' => 'ХӀокху сайтан таро яц электронан почте хаамаш бахьийта.',
 'accountcreated' => 'Декъашхочун дӀаяздар кхоьллина',
 'accountcreatedtext' => 'Кхоьллина декъашхочун [[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|дийцаре.]]) дӀаяздар.',
+'createaccount-title' => '{{SITENAME}}: декъашхочун дӀаяздар кхоллар',
+'usernamehasherror' => 'Декъашхочун цӀеран юкъахь хийла ца еза «цаца»',
+'login-throttled' => 'Хьо дукха гӀиртира.
+Дехар до, собар де $1 юха гӀортале.',
+'login-abort-generic' => 'Сестемин довзийта тарцаделира',
 'loginlanguagelabel' => 'Мотт: $1',
 
 # Change password dialog
@@ -817,11 +837,14 @@ $1',
 'oldpassword' => 'Шираелла пароль:',
 'newpassword' => 'Керла пароль:',
 'retypenew' => 'Юха язъйе керла пароль:',
+'resetpass_submit' => 'Пароль дӀахӀоттийна системин чугӀо',
+'changepassword-success' => 'Хьан пароль кхиамца хийцина!',
 'resetpass_forbidden' => 'Пароль хийца йиш яц',
 'resetpass-no-info' => 'ХӀара агӀо лело системин чугӀо.',
 'resetpass-submit-loggedin' => 'Хийца пароль',
 'resetpass-submit-cancel' => 'Цаоьшу',
 'resetpass-temp-password' => 'Цхьан хана пароль:',
+'resetpass-abort-generic' => 'Пароль хийцар дӀахедар',
 
 # Special:PasswordReset
 'passwordreset' => 'Пароль кхоссар',
@@ -829,7 +852,14 @@ $1',
 'passwordreset-legend' => 'Пароль кхоссар',
 'passwordreset-username' => 'Декъашхочун цӀе:',
 'passwordreset-domain' => 'Домен:',
+'passwordreset-capture' => 'Хьажа беанчу хааме?',
 'passwordreset-email' => 'Электронни почтан адрес:',
+'passwordreset-emailtitle' => '{{SITENAME}}: декъашхочун дӀаяздарх лаьцна хаам',
+'passwordreset-emailelement' => 'Декъашхочун цӀе: $1
+Ханна йолу пароль: $2',
+'passwordreset-emailsent' => 'Электронан хаам баийтина кхоьссинчу паролах лаьцна хаам чохь болуш.',
+'passwordreset-emailsent-capture' => 'Электронан хаам баийтина кхоьссинчу паролах лаьцна хаам чохь болуш. 
+цуна йозане хьажа йиш ю лахахь.',
 
 # Special:ChangeEmail
 'changeemail' => 'Хийца электрони почт',
@@ -848,10 +878,11 @@ $1',
 'resettokens-text' => 'Хьан йиш ю токенаш кхосса, цара йиш хуьлуьйту цхьаболу долара хаамашна тӀекхача, уьш ю хьан дӀаяздар ца вовшахтесна. 
 
 Хьона иза оьшу, ахьа хьай токенаш цхьам гучу яьхна елахь я хьан аккаунт йохийна елахь.',
+'resettokens-no-tokens' => 'Кхосса токенаш яц.',
 'resettokens-legend' => 'Токенаш кхоссар',
 'resettokens-tokens' => 'Токенаш:',
 'resettokens-token-label' => '$1 (карара маьӀна: $2)',
-'resettokens-watchlist-token' => 'Ð\92еб-каналан (Atom/RSS) Ñ\82окен  [[Special:Watchlist|Ñ\85Ñ\8cан Ñ\82еÑ\80гаме Ð¼Ð¾Ð³Ó\80ам чура агӀонашна хийцамаш бар]]',
+'resettokens-watchlist-token' => 'Ð\92еб-каналан (Atom/RSS) Ñ\82окен  [[Special:Watchlist|Ñ\85Ñ\8cан Ñ\82еÑ\80гаме Ð¼Ð¾Ð³Ó\80анан чура агӀонашна хийцамаш бар]]',
 'resettokens-done' => 'Токенаш кхиссина.',
 'resettokens-resetbutton' => 'Къастина токенаш кхоссар',
 
@@ -879,19 +910,26 @@ $1',
 'summary' => 'Хийцамех лаьцна:',
 'subject' => 'Дlахьедар/коьрта могlа:',
 'minoredit' => 'Жим хийцам',
-'watchthis' => 'Латайе хlара агlо тергаме могlам юкъа',
+'watchthis' => 'Латайе хӀара агӀо тергаме могӀанан юкъахь',
 'savearticle' => 'Дlайазъé агlо',
 'preview' => 'Хьалха муха ю хьажа',
 'showpreview' => 'Хьалха муха ю хьажар',
+'showlivepreview' => 'Сиха хьажар',
 'showdiff' => 'Хlоттина болу хийцам',
 'anoneditwarning' => "'''Тергам бе''': Ахьа хьай цӀарца тадарш деш дац. Хьан IP-адрес дӀаяздина хира ду хӀокху агӀон истори чу.",
+'anonpreviewwarning' => "''Системин чу цагӀахь хьан IP-адрес агӀона истори чу дӀаяз лур ду.''",
+'missingcommenttext' => 'Дехар до дӀаязбе хайн хаам лахахь.',
 'summary-preview' => 'Цуьнах лаьцна хирду:',
+'subject-preview' => 'Коьрта могӀа хира бу:',
 'blockedtitle' => 'Декъашхочун блоктоьхана',
+'blockednoreason' => 'бахьана билгалдина дац',
+'whitelistedittext' => 'Ахьа да деза $1 агӀона хийцамаш бан.',
 'nosuchsectiontitle' => 'Дакъа каро йиш яц.',
-'nosuchsectiontext' => 'Хьо гӀерта дуцу дакъа тадан.
+'nosuchsectiontext' => 'Хьо гӀерта доцу дакъа тадан.
 Хьо хӀокху агӀоне хьоьжучу хенахь иза кхечухьа деккхина я дӀадаьккхина хела тарло.',
 'loginreqtitle' => 'Хьай цӀарца чугӀо',
 'loginreqlink' => 'Логин',
+'loginreqpagetext' => 'Ахьа да деза $1, кхин агӀонаш хьажа.',
 'accmailtitle' => 'Пароль дlаяхьийтина.',
 'accmailtext' => "Пароль декъашхочуьна [[User talk:$1|$1]], йина ша шех хитта делла чу элпашах, дlаяхийтина хьокху $2 адрес тӀе.
 
@@ -900,10 +938,10 @@ $1',
 'newarticletext' => "Хьо веана хьажоригци хlокху агlон тlе, хlара агlо хlинца йоцаш ю.
 Нагахь иза кхолла лаахь, хlотта де лахо гуш долу корехь йоза (мадарра хьажа. [[{{MediaWiki:Helppage}}|гlон агlон чу]]).
 Нагахь гlалат даьлла нисвелляхь кхузе, атта тlе тlаlа йе '''юха йоккхуриг''' хьай гlирса тlяхь.",
-'anontalkpagetext' => "----''Хlара дийцаре агIо къайлаха волу декъашхочуьна  ю, хlинца дӀавазвина/дӀаязйина воцуш/йоцуш, я лелош воцуш/йоцуш.
-ЦÑ\83ндела Ð¸Ð·Ð° Ð²Ð¾Ð²Ð·Ð¸Ð¹Ñ\82а/йовзийÑ\82а Ð»ÐµÐ»Ð¾Ñ\88 Ð´Ñ\83 Ñ\82еÑ\80аÑ\85Ñ\8cÑ\86а IP-долÑ\83 Ð¼ÐµÑ\82аг.
+'anontalkpagetext' => "----''ХӀара дийцаре агӀо къайлаха декъашхочуьна ю, хӀинца дӀаяздар доцу, я лелош воцуш/йоцуш.
+ЦÑ\83ндела Ð¸Ð·Ð° Ð²Ð¾Ð²Ð·Ð¸Ð¹Ñ\82а/йовзийÑ\82а Ð»ÐµÐ»Ð¾Ñ\88 Ð´Ñ\83 Ñ\82еÑ\80аÑ\85Ñ\8cÑ\86а IP-адÑ\80еÑ\81.
 Иза терахь долу меттиг хила мега кхечу декъашхойчух терра.
-Нагахь хьо къайлах волу декъашхо валахь хьайна хаам кхаьчна аьлла хеташн, хьуна хьажийна доцуш, дехар до, кхолла хьай меттиг кху чохь[[Special:UserLogin/signup|дlавазло]] йа [[Special:UserLogin|хьой вовзийта/йовзийта]],",
+Нагахь хьо къайлах волу декъашхо валахь хьайна хаам кхаьчна аьлла хеташн, хьуна хьажийна доцуш, дехар до, кхолла хьай меттиг кху чохь[[Special:UserLogin/signup|дӀаяздар кхоллар]] я [[Special:UserLogin|системин чугӀо]],",
 'noarticletext' => "Хlокх хан чохь кху агlонца йоза дац.
 Шуьга далундерг [[Special:Search/{{PAGENAME}}|лахар ишта хьехош йолу цlе]] кхечу яззамашкахь,
 <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} лахар кхечу тептаршкахь],
@@ -913,16 +951,23 @@ $1',
 йа <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} лаха оцуьнах терадерг кхечу тептаршкахь].</span>',
 'missing-revision' => 'АгӀона «{{PAGENAME}}» верси $1 яц.
 
-Ишта хуьйла ширелла дӀайаьккхина агӀонан хьажориган дихьа делча.
+Ишта хуьйла ширелла дӀаяьккхина агӀонан хьажораган дихьа делча.
 Ма-дара хила мега [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} дӀайаьхарш йолу тептар] чохь.',
-'userpage-userdoesnotexist' => 'Ишта дlайазвар «<nowiki>$1</nowiki>» хlинца дац. Хьажа билгал, хьуна бакъалла лаьи кхолла йа хийцам ба хlокху агlон.',
+'userpage-userdoesnotexist' => 'Ишта декъашхочун дӀаяздар «<nowiki>$1</nowiki>» хӀинца дац. Хьажа билгал, хьуна бакъалла лаьий кхолла я хийцам ба хӀокху агӀон.',
+'userpage-userdoesnotexist-view' => '«$1» ишта декъашхочун дӀаяздар дац.',
+'blocked-notice-logextract' => 'ХӀара декъашхочун дӀаяздар блоктоьхна ду.
+Лахахь гойту блоктохаршан тептар чура тӀаьхьарлера дӀаяздар:',
+'usercssyoucanpreview' => "'''ДӀаалар.''' ТӀетаӀае кнопка «{{int:showpreview}}», хьажа хьай керла CSS-файл Ӏалаш яле.",
+'userjsyoucanpreview' => "'''ДӀаалар.''' ТӀетаӀае кнопка «{{int:showpreview}}», хьажа хьай керла JS-файл Ӏалаш яле.",
+'usercsspreview' => "'''Дагахь латтаде хӀара хьа CSS-файле хьалха хьажар хилар, иза хӀинца а Ӏалаш йина яц!'''",
+'userjspreview' => "'''Дагахь латтаде хӀара хьа javascript-файле хьалха хьажар хилар, иза хӀинца а Ӏалаш йина яц!'''",
 'sitecsspreview' => "'''ХӀара хьалх хьажар ду, хӀара CSS.'''
 '''хӀинца Ӏалашдина дац!'''",
 'sitejspreview' => "'''ХӀара хьалх хьажар ду, хӀара JavaScript-код.'''
 '''хӀинца Ӏалашйина яц!'''",
 'updated' => '(Карла йаькхина)',
 'note' => "'''Билгалдаккхар:'''",
-'previewnote' => "'''Ð¥Ó\80аÑ\80а Ñ\85Ñ\8cалÑ\85 хьажар ду, йоза хӀинца язданза ду!'''",
+'previewnote' => "'''Ð¥Ó\80аÑ\80а Ñ\85Ñ\8cлÑ\85а хьажар ду, йоза хӀинца язданза ду!'''",
 'continue-editing' => 'Кхин дӀа тадар',
 'session_fail_preview' => 'Сервер лара ца йира ахьа бина хийцамаш дӀаязба. Кхиъ цкъа а гӀортахь.
 Нагахь санна хӀара гӀалат юха а далахь, [[Special:UserLogout|сеанс дӀа а къоьвлин]], юха а системин чувала/яла хьажа.',
@@ -938,6 +983,7 @@ $1',
 Хьой бина хийцам лахарчу корера лакхарчу коре баккха.
 Кнопкан «{{int:savearticle}}» тӏетаӏича лакхара корера йоза дӏаязлурду.',
 'yourtext' => 'Хьан йоза',
+'storedversion' => 'Ӏалашйина верси',
 'editingold' => "'''ДӀахьедар. Ахьа таеш ю хӀокху агӀона шира елла верси.'''
 АгӀо Ӏалаш йинчул тӀехьа хьалхо бина хийцамаш дӀабяра бу.",
 'yourdiff' => 'Башхаллаш',
@@ -954,26 +1000,43 @@ $1',
 Лахахьа гойту хаамаш тlаьхьара бина болу хийцамна тептар чура:",
 'cascadeprotectedwarning' => '<div id="cascadeprotectedwarning" style="border:1px solid #ee0; padding:10px; background:#ffa; margin-bottom:1em">[[file:Padlock.svg|left|25px|ДовгӀа|link=]]
 ХӀара агӀо тада бакъо йолуш [[Project:Куьйгалхой|куьйгалхой]] бу, хӀунда аьлча и агӀо латийна кхечу агӀонашца хӀоттделлачу гӀаролле:</div>',
-'templatesused' => '{{PLURAL:$1|Кеп, лелийна|Кепаш, лелош ду}} хlокху агlон башхонца:',
-'templatesusedpreview' => '{{PLURAL:$1|Кеп, лелошдолу|Кепаш, лелошдолу}} оцу хьалх хьожучу агlонца:',
-'templatesusedsection' => 'ХӀокху декъан чохь {{PLURAL:$1|лелош йолу кеп|лелош йолу кепаш}}:',
+'templatesused' => '{{PLURAL:$1|1=Кеп, лелийна|Кепаш, лелош ду}} хlокху агlон башхонца:',
+'templatesusedpreview' => '{{PLURAL:$1|1=Кеп, лелошдолу|Кепаш, лелошдолу}} оцу хьалх хьожучу агlонца:',
+'templatesusedsection' => 'ХӀокху декъан чохь {{PLURAL:$1|1=лелош йолу кеп|лелош йолу кепаш}}:',
 'template-protected' => '(гlароллийца)',
 'template-semiprotected' => '(дуьззина доцуш гlаролла)',
-'hiddencategories' => 'ХӀара агӀо чуйогӀуш ю оцу $1 {{PLURAL:$1|къайлаха категори чу|къайлаха категореш чу}}:',
+'hiddencategories' => 'ХӀара агӀо чуйогӀуш ю оцу $1 {{PLURAL:$1|1=къайлаха категори чу|къайлаха категореш чу}}:',
 'edittools' => '<!-- Кхузе буха диллина йоза гуш хир ду редоккхуче бухахь а хlума чуйоккхуче бухахь. -->',
+'nocreate-loggedin' => 'Хьан бакъо яц керла агӀонаш кхолла.',
+'sectioneditnotsupported-title' => 'Дакъош тадар ловш дац',
+'sectioneditnotsupported-text' => 'ХӀокху агӀорахь дакъош тадар ловш дац',
 'permissionserrors' => 'ТӀекхачаре бакъона гӀалат',
-'permissionserrorstext' => 'Хьан бакъо яц кхочуш хилийта хийцам оцу {{PLURAL:$1|шолгlа бахьанца|шолгlа бахьанашца}}:',
-'permissionserrorstext-withaction' => "Хьан бакъо яц хlумда «'''$2'''» оцу {{PLURAL:$1|шолгlа бахьанца|шолгlа бахьанашца}}:",
-'recreate-moveddeleted-warn' => "'''Тидам бе. Ахьа кхуллуш ю, хьалхо дӀаяккхина йолу агӀо.'''
+'permissionserrorstext' => 'Хьан бакъо яц кхочуш хилийта хийцам оцу {{PLURAL:$1|1=шолгlа бахьанца|шолгlа бахьанашца}}:',
+'permissionserrorstext-withaction' => "Хьан бакъо яц хlумда «'''$2'''» оцу {{PLURAL:$1|1=шолгlа бахьанца|шолгlа бахьанашца}}:",
+'recreate-moveddeleted-warn' => "'''Тидам бе. Ахьа кхуллуш ю, хьалхо дӀаяьккхина йолу агӀо.'''
 
 Хьажа, билгалла оьши хьуна хӀара агӀо юха кхолла.
 Лахахь далина ду дӀаяхарш тӀяхь долу тептарш а хӀокх агӀона цӀе хийцарш а.",
-'moveddeleted-notice' => 'Иза агӀо дӀаяккхина яра.
+'moveddeleted-notice' => 'Иза агӀо дӀаяьккхина яра.
 Хаийтарна лахахьа гойту, цуьнца долу дӀаяздарш кху тептар чура дӀаяхарш а цӀе хийцарш а.',
 'log-fulllog' => 'Хьажа деригге тептаре',
+'edit-hook-aborted' => 'Нисдар юхадаьккхина тӀехьожучо.
+ХӀу бахьна ду билгал дина дац.',
+'edit-gone-missing' => 'АгӀо карлаяккха цатарло.
+Иза дӀаяьккхина хила мега.',
+'edit-conflict' => 'Тадарна дойнаш.',
+'edit-no-change' => 'Хьан нисдар юхадаьккхина, ахьа хийцамаш бина цахилар бахьнехь.',
 'postedit-confirmation' => 'Хьан нисдар дӏайазъдина.',
+'edit-already-exists' => 'Керла агӀо кхолла цатарло.
+Иза хӀинцале йолуш ю.',
+'defaultmessagetext' => 'Ӏад дитарца йоза',
+'content-failed-to-parse' => 'Чулацам $2 богӀуш бац $1: $3.',
+'invalid-content-data' => 'Хилийта йиш йоцу хаамаш',
+'content-not-allowed-here' => 'Чулацам "$1" [[$2]] агӀонгахь хилийта йиш яц',
 
 # Content models
+'content-model-wikitext' => 'вики-йоза',
+'content-model-text' => 'цхьалхе йоза',
 'content-model-javascript' => 'JavaScript',
 'content-model-css' => 'CSS',
 
@@ -992,6 +1055,7 @@ $1',
 
 # History pages
 'viewpagelogs' => 'Гайта хlокху агlонан тептар',
+'nohistory' => 'ХӀокху агӀона хийцамаш бина хила бац.',
 'currentrev' => 'Карара верси',
 'currentrev-asof' => 'Карара верси оцу $1',
 'revisionasof' => 'Верси $1',
@@ -1014,17 +1078,26 @@ $1',
 
 # Revision feed
 'history-feed-title' => 'Хийцаман истори',
+'history-feed-description' => 'Википедин чохь хӀокху агӀона хийцаман истори',
 'history-feed-item-nocomment' => '$1 оцу $2',
 
 # Revision deletion
+'rev-deleted-comment' => '(нисдарах лаьцна хаам дӀабаьккхина)',
 'rev-deleted-user' => '(авторан цӏе дӏаяйина)',
+'rev-deleted-event' => '(дӀаяздар дӀаяьккхина)',
+'rev-deleted-text-unhide' => "ХӀара агӀона верси '''дӀаяьккхина''' ю.
+Бахьна далина [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} дӀаяьхнарш йолу тептар чохь].
+Хьайна лаахь хьа йиш ю [$1 и верси хьажа].",
+'rev-deleted-text-view' => "ХӀара агӀона верси '''дӀаяьккхина''' ю.
+Бахьна далина [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} дӀаяьхнарш йолу тептар чохь].",
 'rev-delundel' => 'гайта/къайла',
 'rev-showdeleted' => 'гайта',
 'revisiondelete' => 'ДӀаяха / меттахӀотае агӀона версеш',
 'revdelete-nooldid-title' => 'Билгалйина яц Ӏалашонан верси',
 'revdelete-nooldid-text' => 'Ахьа хӀара функци кхочушъян билгалйина яц Ӏалашонан верси (я версеш).',
 'revdelete-show-file-submit' => 'Хlаъ',
-'revdelete-selected' => "'''АгӀона [[:$1]] {{PLURAL:$2|къастина верси|къастина версеш}}:'''",
+'revdelete-selected' => "'''АгӀона [[:$1]] {{PLURAL:$2|1=къастина верси|къастина версеш}}:'''",
+'logdelete-selected' => "'''Тептар чура {{PLURAL:$1|1=хаьржина дӀаяздар|хаьржина дӀаяздарш}}:'''",
 'revdelete-text' => "'''ДӀаяхна агӀонашан версеш а хелларш а гуш хир ду агӀона истори а тептаран а чохь, амма цара чулацам куьйгалхошна бен тӀекхочу чохь хир бац.'''
 {{SITENAME}} проектан куьйгалхойн йиш хир ю хӀокху интерфейс чухула дӀааьхинарш меттахӀотта я.",
 'revdelete-confirm' => 'Дехар до, бакъдар ахьа деш дерг [[{{MediaWiki:Policy-url}}|бакъонашца]] деш хилар.',
@@ -1032,14 +1105,24 @@ $1',
 'revdelete-hide-text' => 'Къайладаккха хӀокху агӀона чура йоза',
 'revdelete-hide-image' => 'Къайлабаккха файлан чулацам',
 'revdelete-hide-name' => 'Къайлаяккха дешдерг а цуна объект а',
-'revdelete-hide-comment' => 'Хийцамах лаьцнарг къайладаккха',
+'revdelete-hide-comment' => 'Хийцамах лаьцнарг',
 'revdelete-hide-user' => 'Къайлаяккха авторан цӀе',
 'revdelete-radio-same' => '(ма хийца)',
-'revdelete-radio-set' => 'Хlаъ',
-'revdelete-radio-unset' => 'Хlахlа',
+'revdelete-radio-set' => 'Къайлаяьккхина',
+'revdelete-radio-unset' => 'Гуш ерг',
+'revdelete-suppress' => 'Къайлабаха хаамаш куьйгалхойх а',
+'revdelete-unsuppress' => 'МеттахӀоьттина версешан дихкар къайладаккха',
 'revdelete-log' => 'Бахьан:',
-'revdelete-submit' => 'Кхочушде {{PLURAL:$1|къастина версин|къастина версешан}}',
+'revdelete-submit' => 'Кхочушде {{PLURAL:$1|1=къастина версин|къастина версешан}}',
+'revdelete-success' => "'''Версеш гуш хилар кхиамца хийцина.'''",
+'revdelete-failure' => "'''Версеш гуш хилар хийца йиш яц:'''
+$1",
+'logdelete-success' => 'Хиларг гуш хилар хийцина.',
+'logdelete-failure' => "'''Тептаран гуш хилар хӀоттина дац:'''
+$1",
 'revdel-restore' => 'Хийцам бе схьагарехь',
+'pagehist' => 'АгӀона истори',
+'deletedhist' => 'ДӀаяккхаран истори',
 'revdelete-hide-current' => 'Цунах $2, $1: дӀаяздар къайладаккхаран гӀалат и верси карара ю.
 Иза къайлаяккха йиш яц.',
 'revdelete-reason-dropdown' => 'Даржина долу дӀаяккхаран баьхьанаш 
@@ -1049,9 +1132,20 @@ $1',
 'revdelete-otherreason' => 'Кхин бахьна/тӀетохар:',
 'revdelete-reasonotherlist' => 'Кхин бахьан',
 'revdelete-edit-reasonlist' => 'Бахьанин список нисяр',
+'revdelete-offender' => 'АгӀона версен автор:',
+
+# Suppression log
+'suppressionlog' => 'Хьулдаран тептар',
 
 # History merging
+'mergehistory' => 'Нисдарин истори цхьаьнатохар',
+'mergehistory-box' => 'Шин агӀона нисдарин истори цхьаьнатохар:',
 'mergehistory-from' => 'Дуьххьарлера агӀоно',
+'mergehistory-into' => 'Ӏалашонан агӀо:',
+'mergehistory-list' => 'Цхьаьнатухуш долу нисдарин истори',
+'mergehistory-go' => 'Гайта цхьаьнатухуш долу нисдарш',
+'mergehistory-submit' => 'Цхьаьнатоха нисдарш',
+'mergehistory-empty' => 'Цхьаьнатоха нисдарш цакарий.',
 'mergehistory-fail' => 'АгӀонийн истореш вовшахтоха цаделира, дехар до агӀона параметаршка а хене а хьажа.',
 'mergehistory-invalid-source' => 'Хьостан нийса корта хила еза.',
 'mergehistory-invalid-destination' => 'Юзийна агӀона нийса корта хила еза.',
@@ -1060,26 +1154,27 @@ $1',
 # Merge log
 'mergelog' => 'Цхьаьнатохаршан тептар',
 'revertmerge' => 'Йекъа',
+'mergelogpagetext' => 'Лахахь гойту тӀеххьара вовшахтоьхна агӀонийн могӀам.',
 
 # Diffs
 'history-title' => '$1 — хийцаман истори',
 'difference-title' => '$1 — Версешан башхалла',
 'lineno' => 'Могlа $1:',
 'compareselectedversions' => 'Хаьржина версеш муха ю хьажа',
-'showhideselectedversions' => 'Гайта/къайлайаха хаьржина башхонаш',
+'showhideselectedversions' => 'Гайта/къайлаяха хаьржина башхонаш',
 'editundo' => 'цаоьшу',
 'diff-empty' => '(башхалла яц)',
-'diff-multi' => '({{PLURAL:$1|гайтина яц $1 юккъера верси|гайтина яц $1 юккъера версеш}} {{PLURAL:$2|$2 декъашхочун|$2 декъашхой}})',
+'diff-multi' => '({{PLURAL:$1|1=гайтина яц $1 юккъера верси|гайтина яц $1 юккъера версеш}} {{PLURAL:$2|1=$2 декъашхочун|$2 декъашхой}})',
 
 # Search results
 'searchresults' => 'Лахарна хилам',
 'searchresults-title' => 'Лаха «$1»',
 'notextmatches' => 'Агlонаш чура йозанашца цхьатера йогlуш яц',
-'prevn' => '{{PLURAL:$1|хьалхарниг $1|хьалхарнаш $1|хьалхарнаш $1}}',
-'nextn' => '{{PLURAL:$1|тlаьхьйогlург $1|тlаьхьйогlурш $1|тlаьхьйогlурш $1}}',
-'prevn-title' => '{{PLURAL:$1|Хьалхара $1 дӀаяздар|Хьалхара $1 дӀаяздарш}}',
-'nextn-title' => '{{PLURAL:$1|ТӀаьхьара $1 дӀаяздар|ТӀаьхьара $1 дӀаяздарш}}',
-'shown-title' => 'АгӀона чохь $1 {{PLURAL:$1|дӀаяздар|дӀаяздарш}} гайта',
+'prevn' => 'хьалхарнаш {{PLURAL:$1|$1}}',
+'nextn' => 'тӀаьхьйогӀурш {{PLURAL:$1|$1}}',
+'prevn-title' => '{{PLURAL:$1|1=Хьалхара $1 дӀаяздар|Хьалхара $1 дӀаяздарш}}',
+'nextn-title' => '{{PLURAL:$1|1=ТӀаьхьара $1 дӀаяздар|ТӀаьхьара $1 дӀаяздарш}}',
+'shown-title' => 'АгӀона чохь $1 {{PLURAL:$1|1=дӀаяздар|дӀаяздарш}} гайта',
 'viewprevnext' => 'Хьажа ($1 {{int:pipe-separator}} $2) ($3)',
 'searchmenu-exists' => "'''ХӀокху вики чохь йолуш ю ишта агӀо «[[:$1]]»'''",
 'searchmenu-new' => "'''Кхолла ишта агlо «[[:$1]]» хlокху вики-кхолламашчохь!'''",
@@ -1094,7 +1189,7 @@ $1',
 'searchprofile-everything-tooltip' => 'Лаха массо агlонашкахь (дийцаре агlонашцани)',
 'searchprofile-advanced-tooltip' => 'Лаха дехарца хlокху ана цlерашкахь',
 'search-result-size' => '$1 ({{PLURAL:$2|$2 дош|$2 дешнаш|$2 дешнаш}})',
-'search-result-category-size' => '$1 {{PLURAL:$1|юкъаяр}} ($2 {{PLURAL:$2|бухара категори|бухара категореш}}, $3 {{PLURAL:$3|файл|файлаш}}).',
+'search-result-category-size' => '$1 {{PLURAL:$1|юкъаяр}} ($2 {{PLURAL:$2|1=бухара категори|бухара категореш}}, $3 {{PLURAL:$3|1=файл|файлаш}}).',
 'search-redirect' => '(дlасахьажийна $1)',
 'search-section' => '(дакъа $1)',
 'search-suggest' => 'Хила мега ахьа лоьхарг: $1',
@@ -1105,7 +1200,7 @@ $1',
 'searchrelated' => 'хlоттаделларг',
 'searchall' => 'массо',
 'showingresults' => 'Лахахьа {{PLURAL:$1|гойта|гойту|гойту}} <strong>$1</strong> {{PLURAL:$1|хилам|хиламаш|хиламаш}}, дlаболало кху № <strong>$2</strong>.',
-'showingresultsheader' => "{{PLURAL:$5|Хилам '''$1''' кху '''$3'''|Хиламаш '''$1 — $2''' кху '''$3'''}} оцун '''$4'''",
+'showingresultsheader' => "{{PLURAL:$5|1=Хилам '''$1''' кху '''$3'''|Хиламаш '''$1 — $2''' кху '''$3'''}} оцун '''$4'''",
 'search-nonefound' => 'Дехаре терра цхьа хӀума ца карийна.',
 'powersearch-legend' => 'Шуьро лахар',
 'powersearch-ns' => 'Цlераши анахь лахар:',
@@ -1129,7 +1224,7 @@ $1',
 'prefs-user-pages' => 'Декъашхочун агӀо',
 'prefs-personal' => 'Долахь болу хаамаш',
 'prefs-rc' => 'Керла нисдарш',
-'prefs-watchlist' => 'Тергаме могlам',
+'prefs-watchlist' => 'Тергаме могӀам',
 'prefs-watchlist-days' => 'Денойн дукхалла:',
 'prefs-watchlist-days-max' => 'Къезиг  $1 {{PLURAL:$1|дена}}',
 'prefs-watchlist-edits' => 'Тергаме могӀам чохь гойтучу нисдаршан максимальни дукхалла:',
@@ -1179,7 +1274,7 @@ $1',
 'youremail' => 'Кехат яздо зlе цlе:',
 'username' => '{{GENDER:$1|Декъашхочун цӀе}}:',
 'uid' => 'Декъашхочун {{GENDER:$1|код}}:',
-'prefs-memberingroups' => '{{GENDER:$2|Тобана|Тобана}} {{PLURAL:$1|декъашхо|декъашхо}}:',
+'prefs-memberingroups' => '{{GENDER:$2|Тобана|Тобана}} {{PLURAL:$1|1=декъашхо|декъашхо}}:',
 'prefs-registration' => 'ДӀаяздар кхолийна хан:',
 'yourrealname' => 'Хьан бакъ цlе:',
 'yourlanguage' => 'Мотт:',
@@ -1194,7 +1289,7 @@ $1',
 И хаам массарна гуш хир бу.',
 'email' => 'Email',
 'prefs-help-email' => 'Электрони почтан адрес цахlоттийча аъ хlумма дац, амма иза оьшар ю, нагахь хьуна хьай пароль йицлахь.',
-'prefs-help-email-others' => 'Ð\9aÑ\85ин Ð´Ó\80а Ñ\86о ÐºÑ\85еÑ\87Ñ\83 Ð´ÐµÐºÑ\8aаÑ\88Ñ\85оÑ\88на Ð¹Ð¸Ñ\88 Ñ\85Ñ\83Ñ\8cлÑ\83Ñ\8cйÑ\82Ñ\83 Ñ\85Ñ\8cога Ñ\8dлекÑ\82Ñ\80онни ÐºÐµÑ\85аÑ\82 Ð´Ð°Ð¸Ð¹Ñ\82а Ñ\85Ñ\8cан Ð°Ð³Ó\80она Ñ\87оÑ\85Ñ\8c Ð¹Ð¾Ð»Ñ\83 Ñ\85Ñ\8cажоÑ\80иган Ð³Ó\80онца.',
+'prefs-help-email-others' => 'Ð\9aÑ\85ин Ð´Ó\80а Ñ\86о ÐºÑ\85еÑ\87Ñ\83 Ð´ÐµÐºÑ\8aаÑ\88Ñ\85оÑ\88на Ð¹Ð¸Ñ\88 Ñ\85Ñ\83Ñ\8cлÑ\83Ñ\8cйÑ\82Ñ\83 Ñ\85Ñ\8cога Ñ\8dлекÑ\82Ñ\80онан ÐºÐµÑ\85аÑ\82 Ð´Ð°Ð¸Ð¹Ñ\82а Ñ\85Ñ\8cан Ð°Ð³Ó\80она Ñ\87оÑ\85Ñ\8c Ð¹Ð¾Ð»Ñ\83 Ñ\85Ñ\8cажоÑ\80иган Ð³Ó\80оÑ\8cнца.',
 'prefs-info' => 'Коьрта хаам',
 'prefs-i18n' => 'Юкъардекъа мотт',
 'prefs-signature' => 'КуьгтаӀор',
@@ -1267,7 +1362,7 @@ $1',
 'right-move' => 'АгӀонашан цӀераш хийцар',
 'right-move-subpages' => 'АгӀонашан цӀераш хийцар цера бухара агӀонашцан',
 'right-move-rootuserpages' => 'декъашхочун ораман агӀонийн цӀераш хийцар',
-'right-movefile' => 'ФайланÑ\88и цӀе хийцар',
+'right-movefile' => 'Файлийн цӀе хийцар',
 'right-suppressredirect' => 'агӀона цӀе хуьйцуш ширчу цӀарах ма кхолла дӀасахьажаяр',
 'right-upload' => 'Файлаш чуйаьхар',
 'right-reupload' => 'йолуш йолу чера тӀехула файлаш дӀаязъяр',
@@ -1316,6 +1411,7 @@ $1',
 'right-import' => 'кхечу википедешкара агӀонаш импорт ян',
 'right-importupload' => 'файлаш чуяхарца агӀонаш импорт ян',
 'right-patrol' => 'нисдарш хьаьжна сана билгалдар',
+'right-autopatrol' => 'нисдарш хьаьжна сана автоматически билгалдан',
 'right-patrolmarks' => 'керла нисдарийн хьаьжна билгалонашка хьажар',
 'right-unwatchedpages' => 'тергамехь йоцу агӀонийн могӀане хьажар',
 'right-mergehistory' => 'агӀонаш вовшахтохар',
@@ -1327,10 +1423,12 @@ $1',
 'right-passwordreset' => 'пароль хийцарца электроннан хаамашка хьажар',
 
 # Special:Log/newusers
-'newuserlogpage' => 'Декъашхой дlабазбина тептар',
+'newuserlogpage' => 'Декъашхой дӀабазбина тептар',
+'newuserlogpagetext' => 'Дукху хан йоцуш дӀабазбелла декъашхойн могӀам',
 
 # User rights log
 'rightslog' => 'Декъашхочун бакъона тéптар',
+'rightslogtext' => 'Декъашхойн бакъонаш хийцар долу тептар.',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'хӀара агӀо ешар',
@@ -1386,8 +1484,8 @@ $1',
 'recentchangeslinked-feed' => 'Кхуьнца долу нисдарш',
 'recentchangeslinked-toolbox' => 'Кхуьнца долу нисдарш',
 'recentchangeslinked-title' => 'Кхуьнца долу нисдарш $1',
-'recentchangeslinked-summary' => "Хlара хийцам биначу агlонашан могlам бу, тlетовжар долуш хьагучу агlон (йа хьагойтуш йолучу категорена).
-Агlонаш юькъайогlуш йолу хьан [[Special:Watchlist|тергаме могlам чохь]] '''къастийна йу'''.",
+'recentchangeslinked-summary' => "ХӀара хийцам биначу агӀонашан могӀам бу, тӀетовжар долуш хьагучу агӀон (йа хьагойтуш йолучу категорена).
+АгӀонаш юькъайогӀуш йолу хьан [[Special:Watchlist|тергаме могӀам чохь]] '''къастийна ю'''.",
 'recentchangeslinked-page' => 'Агlон цlе:',
 'recentchangeslinked-to' => 'Кхечу агӀор, гайта хийцамаш агӀонашца, хӀоттийначу агӀонтӀе хьажораг йолуш',
 
@@ -1397,9 +1495,13 @@ $1',
 'reuploaddesc' => 'Юху гӀо файл чуйоккху агӀоне',
 'upload-tryagain' => 'ДӀадахьийта хийцина файлах лаьцнарг',
 'uploadnologintext' => 'Серверан чу файлаш яха хьо $1.',
+'upload-recreate-warning' => "'''Тегам бе: иштта цӀе йолу файл дӀаяьккхина я цӀе хийцина.'''
+
+Лахахьа гойтуш ю хӀокху агӀона тептар:",
 'upload-permitted' => 'Магийна файлийн тайпанаш: $1.',
 'uploadlogpage' => 'Чуяхаран тéптар',
-'uploadlogpagetext' => 'Лахахьа гойтуш бу могlам тlаьххьара чуяхна файлаши. Ишта хьажа. [[Special:ImageList|файлаши могlам]] йа [[Special:NewImages|галеларе файлаши]].',
+'uploadlogpagetext' => 'Лахахьа гойтуш бу тӀаьххьара чуяхна файлийн могӀам.
+Ишта хьажа [[Special:NewFiles|керлачу файлийн галерей]].',
 'filename' => 'Файлан цӀе',
 'filedesc' => 'Файлах лаьцна',
 'fileuploadsummary' => 'Файлах лаьцна:',
@@ -1407,22 +1509,32 @@ $1',
 'filesource' => 'Хьост:',
 'ignorewarning' => 'ХӀума дац чуяккха файл',
 'ignorewarnings' => 'ДӀахедар тергал ца дан',
-'badfilename' => 'Файлан цӀе оцу $1.',
+'badfilename' => 'Файлан цӀе хийцина → $1.',
 'emptyfile' => 'Ахьа чуйоккхуш йолу файл еса хийла там бу. Иза гӀалат хийла мега файлан цӀе нийса язйина йоцу дела. Дехар до хьажа бакъалла и юьй ахьа чуйоккхуш йолу файл.',
 'fileexists' => 'Иштта цӀе йолу файл йолуш ю. Дехар до, хьажа <strong>[[:$1]]</strong>, лаьий хьуна и хийца. 
 [[$1|thumb]]',
+'filepageexists' => 'Файлах лаьцна хаам болу агӀо кхоьллина <strong>[[:$1]]</strong>, амма иштта цӀе йолуш файл хӀинца яц.
+Язбина хаам файлах лаьцнарг долу агӀонехь гучабаьра бац.
+Керла хаам тӀетоха ахьа и куьга хийца езар ю.
+[[$1|thumb]]',
 'fileexists-extension' => 'Тера цӀе йолу файл йолуш ю: [[$2|thumb]]
 * Чуйоккхуш йолу файлан цӀе: <strong>[[:$1]]</strong>
 * Йолуш йолу файлан цӀе: <strong>[[:$2]]</strong>
 Дехар до, харжа кхин цӀе.',
+'fileexists-thumbnail-yes' => 'Файл жима йина копи хила там бу. [[$1|thumb]]
+Дехар до, хьажа файле <strong>[[:$1]]</strong>.
+Билгалйина файл цуна жима йина копи елахь и чуяккха цаоьшу.',
+'file-thumbnail-no' => 'Файлан цӀе йолалуш ю <strong>$1</strong>.
+Файл жима йина суьртан копи хила там бу.
+Хьайгахь хӀара сурт дика барамехь делахь, дехар до, чудаккха и я файлан цӀе хийца.',
 'fileexists-forbidden' => 'Иштта цӀе йолу файл йолуш ю цундела тӀехула дӀаязян йиш яц.
 ТӀаккха а хьара файл чуяккха лууш делахь, дехар до, юха а гӀой файлан цӀе хийца а яй чуяккха файл. [[File:$1|thumb|center|$1]]',
-'file-exists-duplicate' => 'ХӀара файл лахарчу {{PLURAL:$1|файлан|файлийн}} дубликат ю:',
+'file-exists-duplicate' => 'ХӀара файл лахарчу {{PLURAL:$1|1=файлан|файлийн}} дубликат ю:',
 'file-deleted-duplicate' => 'Иштта файл ([[:$1]]) хӀинцале дӀаяьккхина хилла. Дехар до, юху файл чуяккхале файл дӀаяккхаран историга хьажа.',
 'uploadwarning' => 'Дlахьедар',
 'uploadwarning-text' => 'Дехар до, лахара файлах лаьцнарг хийца а дай юху а гӀорта файл чуяккха.',
-'uploadedimage' => 'чуяккхина «[[$1]]»',
-'overwroteimage' => 'Чуяккхина файлан керла верси «[[$1]]»',
+'uploadedimage' => 'чуяьккхина «[[$1]]»',
+'overwroteimage' => 'Чуяьккхина файлан керла верси «[[$1]]»',
 'upload-source' => 'ДIайолалун файл',
 'sourcefilename' => 'ДIайолалун файл:',
 'destfilename' => 'Файлан керла цӀе:',
@@ -1431,6 +1543,7 @@ $1',
 'upload-options' => 'Чуякхаран параметраш',
 'watchthisupload' => 'Латайе хӀара файл тергаме могӀам юкъахь',
 'filewasdeleted' => 'Иштта цӀе йолуш файл хьалха чуяьккхина хила, амма дӀаяьккхина. Дехар до, юху чуяккхале $1 хьажа.',
+'filename-bad-prefix' => "Чуйоккхучу файлан цӀе йолалуш ю «'''$1'''» и сурт доккхучу хӀумнан кепан цӀе хилла мега. Дехар до, хьаржа файлан йогӀуш йолу цӀе.",
 'filename-prefix-blacklist' => '#<!-- битийша хlара могlа ша мабарра --> <pre>
 # Бухасиз шолгlа:
 #  * Массо, саболчунтlийра йуьлалуш ерш «#» хуьлу хетаме дерг (могlа чекх балац)
@@ -1465,6 +1578,8 @@ PICT # тайп тайпан
 'listfiles_user' => 'Декъашхо',
 'listfiles_size' => 'Барам',
 'listfiles_description' => 'Цуьнах лаьцна',
+'listfiles_count' => 'Верси',
+'listfiles-show-all' => 'Гайта суьртийн шира версеш',
 
 # File description page
 'file-anchor-link' => 'Файл',
@@ -1482,11 +1597,13 @@ PICT # тайп тайпан
 'filehist-filesize' => 'Файлан барам',
 'filehist-comment' => 'Билгалдаккхар',
 'imagelinks' => 'Файл лелор',
-'linkstoimage' => '{{PLURAL:$1|ТӀаьхьайогӀу $1 агӀо тӀетойжина|ТӀаьхьайогӀу $1 агӀонаш тӀетойжина|ТӀаьхьайогlу $1 агӀонаш тӀетойжина}} хӀокху файлан:',
+'linkstoimage' => '{{PLURAL:$1|ТӀаьхьайогӀу $1 агӀо тӀетойжина|ТӀаьхьайогlу $1 агӀонаш тӀетойжина|ТӀаьхьайогӀу $1 агӀонаш тӀетойжина}} хӀокху файлан:',
 'nolinkstoimage' => 'АгӀонашчохь файл лелош яц.',
-'sharedupload' => 'Хlара хlума оцун $1 чура ю иза хила мега лелош кхечу кхолламашкахь.',
+'sharedupload' => 'ХӀара хӀума оцун $1 чура ю иза хила мега лелош кхечу проекташкахь.',
 'sharedupload-desc-here' => 'ХӀара файл $1 чура ю и лело йиш ю массо проекташкахь.
 Цунна хаам гайтина лахахь. [$2 Файл Викигуламехь]',
+'filepage-nofile' => 'Иштта цӀе йолуш файл яц.',
+'filepage-nofile-link' => 'Ишта цӀе йолуш файл яц. Хьа йиш ю и [$1 чуяккха].',
 'uploadnewversion-linktext' => 'Чуяккха керла верси хӀокху файлан',
 'shared-repo-name-wikimediacommons' => 'Викидlайуллуче',
 
@@ -1529,6 +1646,7 @@ PICT # тайп тайпан
 'unusedtemplates' => 'Лелош доцу кепаш',
 'unusedtemplatestext' => 'Кхузахь дагар йина «{{ns:template}}» цӀерийн меттиган агӀонаш, кхечу агӀонийн юкъа тоьхна йоцу.
 Диц ма делахь хьажа кеп агӀонашкахь лелош юй.',
+'unusedtemplateswlh' => 'кхин хьажорагаш',
 
 # Random page
 'randompage' => 'Цахууш нисйелла агӀо',
@@ -1546,6 +1664,7 @@ PICT # тайп тайпан
 'statistics-header-pages' => 'Агlонашан жамlа',
 'statistics-header-edits' => 'Нисдаран жамӀ',
 'statistics-header-users' => 'Декъашхойн жамӀа',
+'statistics-header-hooks' => 'Кхин статистика',
 'statistics-articles' => 'Яззамаш',
 'statistics-pages' => 'Агlонаш',
 'statistics-pages-desc' => 'Массо вики агlонаш, дийцаре агlонашцани, дlасахьаждарш а кхин дерш.',
@@ -1554,7 +1673,7 @@ PICT # тайп тайпан
 'statistics-edits-average' => 'Юккъера агӀонан нисдаран терахь',
 'statistics-users' => '[[ВП:Дlаязвалар|Дlаязбелларш]] шаберигге декъашхой чохь болу [[Special:ListUsers|(могlам)]]',
 'statistics-users-active' => 'Жигара декъашхой',
-'statistics-users-active-desc' => 'Декъашхой, муьлха цхьа хlум дина болу, кху {{PLURAL:$1|тlаьххьара $1 динахь|тlаьххьара $1 дийнахь}}',
+'statistics-users-active-desc' => 'Декъашхой, муьлха цхьа хlум дина болу, кху {{PLURAL:$1|1=тlаьххьара $1 динахь|тlаьххьара $1 дийнахь}}',
 
 'pageswithprop' => 'АгӀонаш цхьадолу къастамашца',
 'pageswithprop-legend' => 'АгӀонаш цхьадолу къастамашца',
@@ -1580,9 +1699,9 @@ PICT # тайп тайпан
 # Miscellaneous special pages
 'nbytes' => '$1 {{PLURAL:$1|байт}}',
 'ncategories' => '$1 {{PLURAL:$1|категори|категореш|категореш}}',
-'ninterwikis' => '$1 {{PLURAL:$1|юкъарвики-хьажораг|юкъарвики-хьажорагаш}}',
-'nlinks' => '$1 {{PLURAL:$1|хьажораг|хьажорагаш}}',
-'nmembers' => '$1 {{PLURAL:$1|хӀума|хӀумнаш}}',
+'ninterwikis' => '$1 {{PLURAL:$1|1=юкъарвики-хьажораг|юкъарвики-хьажорагаш}}',
+'nlinks' => '$1 {{PLURAL:$1|1=хьажораг|хьажорагаш}}',
+'nmembers' => '$1 {{PLURAL:$1|1=хӀума|хӀумнаш}}',
 'nimagelinks' => 'Лелош ю $1 {{PLURAL:$1|агӀоначохь|агӀонашкахь|агӀонашкахь}}',
 'ntransclusions' => 'лелош ю $1 {{PLURAL:$1|агӀоначохь|агӀонашкахь|агӀонашкахь}}',
 'specialpage-empty' => 'Дехаро хӀумма ца елла.',
@@ -1615,10 +1734,12 @@ PICT # тайп тайпан
 'longpages' => 'Беха яззамаш',
 'deadendpages' => 'Дика йоцу агIонаш',
 'protectedpages' => 'ГIаролла дина агIонаш',
+'protectedpages-indef' => 'Хан йоцуш гӀоралла динарш бен',
+'protectedpages-cascade' => 'Чахчарин гӀоралла бен',
 'protectedtitles' => 'ГIаролла дина цIераш',
 'listusers' => 'Декъашхой могlам',
 'listusers-editsonly' => 'Цхаъ мукъане а хийцам бина декъашхой гайта',
-'listusers-creationsort' => 'Кхолларан хене хьаьжна нисъяр',
+'listusers-creationsort' => 'Кхоьллина хене хьаьжна нисъяр',
 'listusers-desc' => 'Харжа къезиг хиларца',
 'usercreated' => '{{GENDER:$3|дӀавазвелла|дӀаязелла}} $1 $2',
 'newpages' => 'Керла агlонаш',
@@ -1628,10 +1749,11 @@ PICT # тайп тайпан
 'movethispage' => 'Хlокху агlон цlе хийца',
 'unusedimagestext' => 'Дехар до, тидаме эца, кхин йолу дуьнана машан-меттигаш а лелош хила мега нийсса йогӀу хьажораг (URL) хӀокху хӀуман, хӀокху могӀаме йогӀуш ялахь яцахь а иза хила мега жигара лелош.',
 'notargettitle' => 'Ӏалашо билгал йина яц',
+'notargettext' => 'И кхочушдан ахьа билгал йина яц Ӏалашонан агӀо я декъашхо.',
 'nopagetitle' => 'Ишта агӀо яц',
 'nopagetext' => 'Ишта агӀо яц.',
-'pager-newer-n' => '{{PLURAL:$1|алсамо керла|алсамо керланаш|алсамо керлачарех}} $1',
-'pager-older-n' => '{{PLURAL:$1|алсамо шира|алсамо ширниш|алсамо ширачарех}} $1',
+'pager-newer-n' => '{{PLURAL:$1|алсамо керла 1|алсамо керланаш $1}}',
+'pager-older-n' => '{{PLURAL:$1|алсамо шира 1|алсамо ширниш $1}}',
 
 # Book sources
 'booksources' => 'Жайнан хьосташ',
@@ -1646,13 +1768,15 @@ PICT # тайп тайпан
 'alllogstext' => 'Массо тéптар могӀам. {{SITENAME}}.
 Шуьга харжалур бу хилам оцу тептаре хьаьжжина, декъашхочун цӀе (дӀаяздар диц а цадеш) я цо хьейина агӀонаш (ишта дӀаяздар а диц цадеш).',
 'logempty' => 'Тептарш чохь хӀокху агӀона дӀаяздарш дац.',
+'log-title-wildcard' => 'ХӀокху символашца болалуш болу кортанаш карабе',
+'showhideselectedlogentries' => 'Гайта/къайлаяха хаьржина башхонаш',
 
 # Special:AllPages
 'allpages' => 'Массо агӀонаш',
-'alphaindexline' => 'оцу $1 кху $2',
+'alphaindexline' => 'тӀера $1 $2 кхаччалц',
 'nextpage' => 'Тlаьхьа йогlу агlо ($1)',
 'prevpage' => 'Хьалхалера агlо ($1)',
-'allpagesfrom' => 'Гучé яха агlонаш, йуьлалуш йолу оцу:',
+'allpagesfrom' => 'Гучé яха агӀонаш, йолалуш йолу оцу:',
 'allpagesto' => 'Арайахар сацадé оцу:',
 'allarticles' => 'Массо агӀонаш',
 'allinnamespace' => 'Массо агlонаш оцу цlери анахь «$1»',
@@ -1664,7 +1788,7 @@ PICT # тайп тайпан
 
 # Special:Categories
 'categories' => 'Категореш',
-'categoriespagetext' => '{{PLURAL:$1|Лахара категореш чохь ю|Лахара категореш чохь ю}} агӀонаш я медиа-файлаш.
+'categoriespagetext' => '{{PLURAL:$1|1=Лахара категореш чохь ю|Лахара категореш чохь ю}} агӀонаш я медиа-файлаш.
 Кхузахь гойтуш яц [[Special:UnusedCategories|лелош йоцу категореш]].
 Кхин дӀа [[Special:WantedCategories| хийла еза категореш]].',
 'categoriesfrom' => 'Гучé яха категореш, оцу:',
@@ -1680,7 +1804,7 @@ PICT # тайп тайпан
 'linksearch-ok' => 'Лаха',
 'linksearch-text' => 'Лело мега хӀоттош йолу символаш, масала, <code>*.wikipedia.org</code>.
 Лакхара даржан домен мукъа хила еза , масала<code>*.org</code><br />
-Ловш йолу {{PLURAL:$2|протокол|протоколаш}}: <code>$1</code> (Iад йитарца http://, протокол бакъалла язъен яцахь).',
+Ловш йолу {{PLURAL:$2|1=протокол|протоколаш}}: <code>$1</code> (Iад йитарца http://, протокол бакъалла язъен яцахь).',
 'linksearch-line' => '$2 — хьажораг кху $1',
 
 # Special:ListUsers
@@ -1690,8 +1814,8 @@ PICT # тайп тайпан
 
 # Special:ActiveUsers
 'activeusers' => 'Жигар декъашхой могlам',
-'activeusers-intro' => 'Лахахь гойтуш бу  {{PLURAL:$1|тӀаьхьара $1 динахь|тӀаьхьара $1 деношкахь}} хийцамаш бина декъашхой.',
-'activeusers-count' => '{{PLURAL:$3|тӀаьхьарчу $3 динахь|тӀаьхьара $3 деношкахь}} $1 {{PLURAL:$1|нисдар|нисдарш}} дина',
+'activeusers-intro' => 'Лахахь гойтуш бу  {{PLURAL:$1|1=тӀаьхьара $1 динахь|тӀаьхьара $1 деношкахь}} хийцамаш бина декъашхой.',
+'activeusers-count' => '{{PLURAL:$3|1=тӀаьхьарчу $3 динахь|тӀаьхьара $3 деношкахь}} $1 {{PLURAL:$1|1=нисдар|нисдарш}} дина',
 'activeusers-from' => 'Гучé баха декъашхой, болалуш болу тӀера:',
 'activeusers-hidebots' => 'Къайлабаха шабелхалой',
 'activeusers-hidesysops' => 'Къайлабаха куьйгалхой',
@@ -1727,12 +1851,12 @@ PICT # тайп тайпан
 'mywatchlist' => 'Тергаме могӀам',
 'watchlistfor2' => 'Цунна $1 $2',
 'watchlistanontext' => 'Тергаме могӀоме хьажа я тая кхочушде $1.',
-'watchnologin' => 'Ð¥Ñ\8cо Ð²Ð¾Ð²Ð·Ð¸Ð¹Ñ\82а/йовзийÑ\82а Ð³lиÑ\80Ñ\81ан',
+'watchnologin' => 'СиÑ\81Ñ\82емин Ñ\87Ñ\83гÓ\80о',
 'addwatch' => 'Тергаме могӀам юкъа тоха',
 'addedwatchtext' => 'Хlар агlо «[[:$1]]» тlетоьхна хьан [[Special:Watchlist|тидаме могlам чу]].
 Тlаьхьабогlу хийцамаш хlокх агlонна а кхунца дозуш долу дийцаре агlо а дlаяздийра ду кху могlамашкахь, ишта къастина хирду уьш шуьрочу элпашца хlокх агlон чохь [[Special:RecentChanges|керла хийцаме могlамашкахь]], бгlаьран га атту болуш.',
 'removewatch' => 'ДӀаяккха тергаме могӀам юкъар',
-'removedwatchtext' => 'Агlо «[[:$1]]» дlаяккхина йара хьан [[Special:Watchlist|тергаме могlам юкъар]].',
+'removedwatchtext' => 'АгӀо «[[:$1]]» дӀаяьккхина яра хьан [[Special:Watchlist|тергаме могӀанан юкъар]].',
 'watch' => 'Тидам бе',
 'watchthispage' => 'Тергам бé хlокху агlон',
 'unwatch' => 'Тергамах къаста',
@@ -1745,9 +1869,10 @@ PICT # тайп тайпан
 
 # Displayed when you click the "watch" button and it is in the process of watching
 'watching' => 'Тергаме мlогаман юкъаяккха…',
-'unwatching' => 'Тергаме мlогаман чура дlайаккха…',
+'unwatching' => 'Тергаме могӀанан чура дӀаяккхар…',
 
 'enotif_reset' => 'Билгал йаь ерриге агӀонаш хьаьжна санна',
+'changed' => 'хийцина',
 
 # Delete
 'deletepage' => 'ДӀаяккха агӀо',
@@ -1762,7 +1887,7 @@ PICT # тайп тайпан
 'confirmdeletetext' => "Хьо гӀерта агӀо я файл дӀаяккха '''дехар до''', дӀаяккхале хьалха хьажа [[{{MediaWiki:Policy-url}}|кхуза]].",
 'actioncomplete' => 'Дешдерг кхочушди',
 'actionfailed' => 'Кхочушъ дина дац',
-'deletedtext' => '«$1» дӀаяккхина яра.
+'deletedtext' => '«$1» дӀаяьккхина яра.
 Хьажа. $2 хьажарна оцу тӀаьхьара дӀаяхначара могӀаме.',
 'dellogpage' => 'ДӀадаьхнарш долу тéптар',
 'dellogpagetext' => 'Лахахь гойтуш ду дӀадахаршан тептар.',
@@ -1778,14 +1903,24 @@ PICT # тайп тайпан
 
 # Rollback
 'rollback' => 'Юхабаккха хийцам',
+'rollback_short' => 'Юхаяккхар',
 'rollbacklink' => 'юхаяккха',
-'rollbacklinkcount' => 'юхадаккха $1 {{PLURAL:$1|нисдар|нисдарш}}',
+'rollbacklinkcount' => 'юхадаккха $1 {{PLURAL:$1|1=нисдар|нисдарш}}',
 'rollbacklinkcount-morethan' => 'Юхадаккха $1 дукха {{PLURAL:$1|нисдар|нисдарш|нисдарш}}',
+'rollbackfailed' => 'Юхайоккхуш гӀалат ду',
+'alreadyrolled' => 'ТӀехьара [[User:$2|$2]] ([[User talk:$2|дийцаре]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]) декъашхочо «[[:$1]]» агӀона  бина хийцамаш юхабаха цатарло,
+хӀинцале цхъаъ кхиъна хийцамаш юхабаха я агӀо тая.
+
+Хийцамаш бинарг [[User:$3|$3]] ([[User talk:$3|дийцаре]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).',
+'editcomment' => "Хийцамаш барна гайтина бахьна: ''$1''.",
 'revertpage' => 'Нисдарш [[Special:Contributions/$2|$2]] ([[User talk:$2|дийцаре]]) юха даьхна башхаллийн [[User:$1|$1]]',
+'revertpage-nouser' => 'Нисдарш (декъашхочун цӀе хьулйина) юхадаьхина башхаллин {{GENDER:$1|[[User:$1|$1]]}}',
 'rollback-success' => 'Юха даьхна $1; нисдарш, $2 версен.',
 
 # Protect
 'protectlogpage' => 'Гlаролли тептар',
+'protectlogtext' => 'Лахахь гойту агӀона гӀоралла дарна бина хийцамаш чохь болу тептар.
+Хьа кхин йиш ю [[Special:ProtectedPages|хӀинца гӀоралла дина йолу агӀонийн могӀаме хьажа]].',
 'protectedarticle' => 'гlаролла дина агlо «[[$1]]»',
 'modifiedarticleprotection' => 'агlонан гlаролли локхалла хийцина «[[$1]]»',
 'unprotectedarticle' => 'ГӀоролла дӀадаьстина «[[$1]]»',
@@ -1798,9 +1933,9 @@ PICT # тайп тайпан
 'protect_expiry_invalid' => 'Нийса йоцу хан гlаролла дlайаларехь.',
 'protect_expiry_old' => 'Хан чаккхе — хьалхалера.',
 'protect-unchain-permissions' => 'Схьабелла кхин гӀорралин гӀирс',
-'protect-text' => "Кхузéхь хьо хьажало хийцалуш гlаролли локхалла оцу агlонашна '''$1'''.",
+'protect-text' => "Кхузéхь хьо хьажало хийцалуш гӀароллин локхалла оцу агӀонашна '''$1'''.",
 'protect-locked-access' => "Хьан дlаязваларéхь тоъал бакъо яц гlароллийн локхаллéхь агlон хийцам бá. Дlадоьлху хlоттийнарш оцу агlонна '''$1''':",
-'protect-cascadeon' => 'Хlара агlо гlароллийца ю, хlунд аьлча иза латийна {{PLURAL:$1|лахахьа гойтучу агlонца, цуьнца хlоттийна|лахахьа гойтучу агlоншца, цаьрца хlоттийна}} чахчарийца гlаролла. Хьога хийцалур ю гlаролли локхалла хlокху агlон, амма оцо хийцам бийра бац чахчарехь йолучу гlароллийна.',
+'protect-cascadeon' => 'Хlара агlо гlароллийца ю, хlунд аьлча иза латийна {{PLURAL:$1|1=лахахьа гойтучу агlонца, цуьнца хlоттийна|лахахьа гойтучу агlоншца, цаьрца хlоттийна}} чахчарийца гlаролла. Хьога хийцалур ю гlаролли локхалла хlокху агlон, амма оцо хийцам бийра бац чахчарехь йолучу гlароллийна.',
 'protect-default' => 'Гlаролла йоцуш',
 'protect-fallback' => 'Бакъо оьшу «$1»',
 'protect-level-autoconfirmed' => 'Гlаролла дé оцу керла а дlабазбина боцучу декъашхойх',
@@ -1824,6 +1959,8 @@ PICT # тайп тайпан
 'protect-expiry-options' => '1 сахьт:1 hour,1 де:1 day,1 кӀиран:1 week,2 кӀиран:2 weeks,1 бутт:1 month,3 бутт:3 months,6 бутт:6 months,1 шо:1 year,цlкъа:infinite',
 'restriction-type' => 'Бакъо:',
 'restriction-level' => 'ТӀекхочаран локхалла:',
+'minimum-size' => 'Лаххара бараме',
+'maximum-size' => 'Лаккхара бараме:',
 
 # Restrictions (nouns)
 'restriction-edit' => 'Тадар',
@@ -1832,11 +1969,12 @@ PICT # тайп тайпан
 'restriction-upload' => 'Чуйолуш',
 
 # Restriction levels
+'restriction-level-sysop' => 'дуьззина гӀоралла',
 'restriction-level-autoconfirmed' => 'дуьззина доцуш гӀаролла',
 'restriction-level-all' => 'массо барам',
 
 # Undelete
-'undelete' => 'ДIайайина йолу агIонашка хьажар',
+'undelete' => 'ДӀаяхна агӀонашка хьажар',
 'undeletepage' => 'ДӀаяхина агӀонашка хьажар а меттахӀоттор а',
 'undeletepagetitle' => "'''Лахахь гайтина хӀокху [[:$1]] агӀона дӀаяхина версеш'''.",
 'viewdeletedpage' => 'ДӀаяхна йолу агӀонашка хьажар',
@@ -1847,7 +1985,7 @@ PICT # тайп тайпан
 Агӏо дӏаяккхинчул тӏяха юху кхолийна елахь меттахӏоттина йолу версеш гучуер ю керлачу версешна хьалха',
 'undeleterevdel' => 'Метта хlоттор хира дац, нагахь иза дакъошкахь дlадайина далахь а тlаьххьара кисак башхо йа хlума.
 Иштнарг хилча ахьа дlабаккха беза хlоттийна болу къастам йа хьагайта тlаьххьара дlайайина башхо.',
-'undelete-revision' => 'Декъашхочун $3 дӀайаьккхина верси $1 (цу $4 $5 хан):',
+'undelete-revision' => 'Декъашхочун $3 дӀаяьккхина верси $1 (цу $4 $5 хан):',
 'undeletebtn' => 'МеттахӀоттае',
 'undeletelink' => 'хьажа/меттахӀоттае',
 'undeleteviewlink' => 'хьажа',
@@ -1861,7 +1999,9 @@ PICT # тайп тайпан
 'undelete-header' => 'Дукху хан йоцуш дӀаяхна агӀонаш хьажа мега [[Special:Log/delete|дӀадаьхьнарш долу тептар чохь]].',
 'undelete-search-title' => 'ДӀаяхна агӀонаш лахар',
 'undelete-search-box' => 'ДӀаяхна агӀонаш лахар',
+'undelete-search-prefix' => 'Гайта агӀонаш йолалуш йолу тӀера:',
 'undelete-search-submit' => 'Лаха',
+'undelete-no-results' => 'Архив чохь йогӀуш агӀонаш цакарий.',
 'undelete-show-file-submit' => 'Хlаъ',
 
 # Namespace form on various pages
@@ -1877,6 +2017,7 @@ PICT # тайп тайпан
 'contributions-title' => '{{GENDER:$1|Декъашхочун}} къинхьегам $1',
 'mycontris' => 'Сан къинхьегам',
 'contribsub2' => 'Къинхьегам $1 ($2)',
+'nocontribs' => 'Дехарца хийцамаш цакарий.',
 'uctop' => ' (тlаьхьара)',
 'month' => 'Баттаца (я хьалхе):',
 'year' => 'Шерачохь (я хьалхе):',
@@ -1888,6 +2029,8 @@ PICT # тайп тайпан
 'sp-contributions-logs' => 'тéптарш',
 'sp-contributions-talk' => 'дийцаре',
 'sp-contributions-userrights' => 'декъашхочун бакъона урхалладар',
+'sp-contributions-blocked-notice' => 'ХӀара декъашхочун дӀаяздар блоктоьхна ду.
+Лахахь гойту блоктохаршан тептар чура тӀаьхьарлера дӀаяздар:',
 'sp-contributions-blocked-notice-anon' => 'ХӀара IP-адрес хӀинца блоктоьхна ду.
 Лахахь гойту блоктохаршан тептар чура тӀаьхьарлера дӀаяздар:',
 'sp-contributions-search' => 'Къинхьегам лахар',
@@ -1905,7 +2048,7 @@ PICT # тайп тайпан
 'isredirect' => 'агlо-дlасахьажайар',
 'istemplate' => 'лата йe',
 'isimage' => 'Файлан хьажораг',
-'whatlinkshere-prev' => '{{PLURAL:$1|хьалхайодарг|хьалхайодарш|хьалхайодарш}} $1',
+'whatlinkshere-prev' => '{{PLURAL:$1|1=хьалхайодарг|хьалхайодарш}} $1',
 'whatlinkshere-next' => '{{PLURAL:$1|тlаьхьайогlург|тlаьхьайогlурш|тlаьхьайогlурш}} $1',
 'whatlinkshere-links' => '← хьажорагаш',
 'whatlinkshere-hideredirs' => '$1 дlасахьажйар',
@@ -1939,7 +2082,7 @@ PICT # тайп тайпан
 'ipbenableautoblock' => 'Блоктоха декъашхочо лелош йолу IP-адресашна',
 'ipbsubmit' => 'Блоктоха хӀокху декъашхочун/адресна',
 'ipbother' => 'Кхин хан:',
-'ipboptions' => '2 сахьат:2 hours,1 де:1 day,3 де:3 days,1 кlиран:1 week,2 кlиран:2 weeks,1 бутт:1 month,3 бутт:3 months,6 бутт:6 months,1 шо:1 year,цlкъа:infinite',
+'ipboptions' => '2 сахьат:2 hours,1 де:1 day,3 де:3 days,1 кlиран:1 week,2 кlиран:2 weeks,1 бутт:1 month,3 бутт:3 months,6 бутт:6 months,1 шо:1 year,цӀкъа:infinite',
 'ipbwatchuser' => 'ТӀетоха тергаме могӀам юкъа цуьнан долахь йолу агӀо а цуьнан дийцаре агӀо а',
 'ipb-disableusertalk' => 'Цамагдо шин дийцаре агӀо та я блоктоьхна хан чекхъяллалц',
 'ipb-change-block' => 'Юхаблоктоха декъашхочун оьцу хийцамашца',
@@ -1947,7 +2090,7 @@ PICT # тайп тайпан
 'blockipsuccesssub' => 'Блоктохар чакхдели',
 'blockipsuccesstext' => '[[Special:Contributions/$1|«$1»]] {{GENDER:$1|блоктоьхна ву|блоктоьхна ю}}.<br />
 Хьажа. [[Special:BlockList|блоктоьхна IP-адресашан могӀам]].',
-'ipb-blockingself' => 'Хьо хьайна блоктухуш ву/ю! Лууш вуй/юй хьо и кхочушдан?',
+'ipb-blockingself' => 'Хьо хьайна блоктоха гӀерта! Лаьий хьона и кхочушдан?',
 'ipb-edit-dropdown' => 'Бахьанин список нисяр',
 'ipb-unblock-addr' => 'ДӀаякхаблок $1',
 'ipb-unblock' => 'дӀаякхаблок декъашхонтӀера я IP-адрес тӀера',
@@ -1994,7 +2137,9 @@ PICT # тайп тайпан
 'block-log-flags-noautoblock' => 'ша блоктухарг дӏаяйина',
 'block-log-flags-noemail' => 'цамаго кехаташ кхехӀита',
 'block-log-flags-nousertalk' => 'шин дийцаре агӀо тая лууш дац',
+'block-log-flags-hiddenname' => 'декъашхочун цӀе къайлаяьккхина',
 'ipb-needreblock' => 'ХӀара $1 {{GENDER:$1|блоктоьхна ву|блоктоьхна ю}}. Лаьий хьуна блоктохаран параметраш хийца?',
+'unblock-hideuser' => 'Декъашхочун тӀера блокдӀаяккха хьа таро яц, цуна цӀе хьулйина хилар бахьанехь.',
 
 # Move page
 'move-page' => '$1 — цlе хийцар',
@@ -2033,7 +2178,7 @@ PICT # тайп тайпан
 Ишта чу ханчохь, ахьа дехьа яккха йезар ю йа куьйга хlоттайар, нагахь иза хьашт йалахь.",
 'movearticle' => 'Цle хийца хlокху агlон',
 'newtitle' => 'Керла цlе',
-'move-watch' => 'Латайé хlара агlо тергаме могlам юкъа',
+'move-watch' => 'Латайé хӀара агӀо тергаме могӀанан юкъахь',
 'movepagebtn' => 'Агlон цlе хийца',
 'pagemovedsub' => 'Агlон цlе хийцина',
 'movepage-moved' => "'''Агlон цlе «$1» хийцина хlокху «$2»'''",
@@ -2045,11 +2190,11 @@ PICT # тайп тайпан
 'move-subpages' => 'ЦӀeрш хийцае бухара агӀонаши ($1 кхаччалц)',
 'move-talk-subpages' => 'ЦӀе хийца бухара агӀонаши а агӀонашан дийцаре а ($1  кхаччалц)',
 'movepage-page-exists' => 'Агӏо $1 йолуш ю цундела и ша юху дӏаязъян йиш яц.',
-'movepage-page-moved' => 'АгӀона $1 цӀе хийцина оцу $2.',
+'movepage-page-moved' => 'АгӀона $1 цӀе хийцина  $2.',
 'movelogpage' => 'Цlераш хийцаран тептар',
 'movelogpagetext' => 'Лахахьа гойтуш ю цӀе хийцина агӀонаш.',
-'movesubpage' => '{{PLURAL:$1|Бухара агӀо|Бухара агӀонаш}}',
-'movesubpagetext' => 'ХӀокху агӀона $1 {{PLURAL:$1|бухара агӀо ю|бухара агӀонаш ю}}.',
+'movesubpage' => '{{PLURAL:$1|1=Бухара агӀо|Бухара агӀонаш}}',
+'movesubpagetext' => 'ХӀокху агӀона $1 {{PLURAL:$1|1=бухара агӀо ю|бухара агӀонаш ю}}.',
 'movenosubpage' => 'ХӀокху агӀона бухара агӀонаш яц.',
 'movereason' => 'Бахьан:',
 'revertmove' => 'юхаяккха',
@@ -2058,15 +2203,15 @@ PICT # тайп тайпан
 И цӀе йолу аг1о «[[:$1]]» йолуш ю. 
 Лаьий хьуна и дӀаяккха, цӀе хийца таро хилийта?',
 'delete_and_move_confirm' => 'Хlаъ, дӀаяккха хlара агlо',
-'delete_and_move_reason' => 'ДӀаяккхина цӀе хийца я таро хилийта  «[[$1]]»',
+'delete_and_move_reason' => 'ДӀаяьккхина цӀе хийца я таро хилийта  «[[$1]]»',
 'selfmove' => 'АгӀона цӏе хийца йиш яц: и цӏе хӏокху агӏона йолуш ю.',
 'immobile-source-page' => 'ХӀокху агӏона цӏе хийца йиш яц.',
 'bad-target-model' => 'Йиш яц хийца $1 оцу $2: цхьаьна ца догӀу моделин хаамаш.',
-'move-leave-redirect' => 'Ó\80адйиÑ\82а Ð´Ó\80аÑ\81аÑ\85Ñ\8cажоÑ\80иг',
-'protectedpagemovewarning' => "'''Дlахьедар.''' Хlара агlо гlаролла йина йу; цlе хийца йа нисйа а бакъо йолуш адаманкуьйгалхой бе бац.
-Лахахьа тептаро балийна тlаьхьаралера дlаязбина хаам:",
-'semiprotectedpagemovewarning' => "'''Дlахьедо.''' Хlара агlо гlаролла йина йу; дlабазбиначу декъашхошка бе цlе хийцалуш яц.
-Лахахьа тептаро балийна тlаьхьаралера дlаязбина хаам:",
+'move-leave-redirect' => 'Ó\80адйиÑ\82а Ð´Ó\80аÑ\81аÑ\85Ñ\8cажоÑ\80аг',
+'protectedpagemovewarning' => "'''ДӀахьедар.''' ХӀара агӀо гӀаролла йина ю; цӀе хийца я нисйа а бакъо йолуш куьйгалхой бе бац.
+Лахахьа тептаро балийна тӀаьхьаралера дӀаязбина хаам:",
+'semiprotectedpagemovewarning' => "'''ДӀахьедо.''' ХӀара агӀо гӀаролла йина ю; дӀабазбиначу декъашхошка бе цӀе хийцалуш яц.
+Лахахьа тептаро балийна тӀаьхьаралера дӀаязбина хаам:",
 
 # Export
 'export' => 'АгӀонаш араяхар',
@@ -2078,6 +2223,8 @@ PICT # тайп тайпан
 'exportcuronly' => 'Карара верси бен юкъа ма тоха, юзийна хьалхалерра истори йоцуш',
 'export-submit' => 'Экспорт ян',
 'export-addcattext' => 'ТӀетоха агӀонаш категори чура:',
+'export-addcat' => 'ТӀетоха',
+'export-addns' => 'ТӀетоха',
 'export-download' => 'Кховда де файл сана Ӏалашдан',
 'export-templates' => 'Латадé кепаш',
 
@@ -2108,9 +2255,11 @@ PICT # тайп тайпан
 'import-upload-filename' => 'Файлан цӀе:',
 'import-comment' => 'Билгалдаккхар:',
 'importnosources' => 'Юкъаравики-импортан хьост хаьржина яцара, дуьхьала хийцамашан истори чуяккхар дӀадайина ду.',
+'import-error-special' => '«$1» агӀо импорт йина яц, и къастина цӀерийн меттигашан юкъайогӀуш хиларна.',
 
 # Import log
 'importlogpage' => 'Импортан тептар',
+'importlogpagetext' => 'Куьйгалхоша агӀонаш импорт яр царна бина хийцамашца кхечу википедеш чура.',
 
 # Tooltip help for the actions
 'tooltip-pt-userpage' => 'Декъашхочуьна агlо',
@@ -2129,8 +2278,8 @@ PICT # тайп тайпан
 'tooltip-ca-unprotect' => 'Дlадаккха хlокху агlонна долу гаролла',
 'tooltip-ca-delete' => 'ДӀаяккха хӀара агӀо',
 'tooltip-ca-move' => 'Агlон цlе хийца',
-'tooltip-ca-watch' => 'Тlетоха хlара агlо сан тергаме могlам юкъа',
-'tooltip-ca-unwatch' => 'Дlайаккха хlара агlо хьай тергаме могlам юкъар',
+'tooltip-ca-watch' => 'ТӀетоха хӀара агӀо сан тергаме могӀанан юкъа',
+'tooltip-ca-unwatch' => 'ДӀаяккха хӀара агӀо хьай тергаме могӀанан юкъар',
 'tooltip-search' => 'Лаха иза дош',
 'tooltip-search-go' => 'Билгала и санна цӀе йолучу агӀон чу дехьа гӀо',
 'tooltip-search-fulltext' => 'Лаха агlонаш ше чулацамехь хlара йоза долуш',
@@ -2141,13 +2290,13 @@ PICT # тайп тайпан
 'tooltip-n-currentevents' => 'Дlаоьхуш болу хаамашна могlам',
 'tooltip-n-recentchanges' => 'Тlаьххьаралера хийцаман могlам',
 'tooltip-n-randompage' => 'Хьажа цахууш нисйеллачу агlоне',
-'tooltip-n-help' => 'Ð\9dиÑ\81воÑ\85аамаÑ\88 Ð¾Ñ\86Ñ\83 ÐºÑ\85олламÑ\86а Â«{{SITENAME}}»',
+'tooltip-n-help' => 'Ð\93Ó\80оде Ð¼ÐµÑ\82Ñ\82иг',
 'tooltip-t-whatlinkshere' => 'Массо агlон могlам, хlокху агlонтlе хьажийна йолу',
 'tooltip-t-recentchangeslinked' => 'Тlаьхьарлера хийцамаш хlокху агlонашкахь, мичхьа хьажийна хlара агlо',
 'tooltip-feed-rss' => 'Хьагайтар оцу RSS цани хlокху агlон',
 'tooltip-feed-atom' => 'Хьагайтар оцу Atom цани хlокху агlон',
 'tooltip-t-contributions' => 'Хlокху декъашхочо хийцина йолу агlонашан могlам',
-'tooltip-t-emailuser' => 'Дlабахьийта хаам оцу декъашхона',
+'tooltip-t-emailuser' => 'ДӀабахьийта хаам оцу декъашхона',
 'tooltip-t-upload' => 'Чуйаха файлаш',
 'tooltip-t-specialpages' => 'Белха агlонаши могlам',
 'tooltip-t-print' => 'Хlокху агlонна зорба туху башхо',
@@ -2155,7 +2304,7 @@ PICT # тайп тайпан
 'tooltip-ca-nstab-main' => 'Яззамна чулацам',
 'tooltip-ca-nstab-user' => 'ХӀора декъашхочун долахь йолу агӀо ю',
 'tooltip-ca-nstab-media' => 'Медиа-файл',
-'tooltip-ca-nstab-special' => 'Хlара белха агlо йу, хlара рéдаккхалуш яц',
+'tooltip-ca-nstab-special' => 'ХӀара белха агӀо ю, хӀара тая луш яц',
 'tooltip-ca-nstab-project' => 'Кхолламан дакъа',
 'tooltip-ca-nstab-image' => 'Хlуман агlо',
 'tooltip-ca-nstab-mediawiki' => 'Хааман агlо MediaWiki',
@@ -2166,15 +2315,15 @@ PICT # тайп тайпан
 'tooltip-preview' => 'Дехар до, агlо lалаш йарал хьалха хьажа муха йу яз!',
 'tooltip-diff' => 'Гайта долуш долу йозанах бина болу хийцам.',
 'tooltip-compareselectedversions' => 'Хlокху шина хаьржина агlона башхо муха ю хьажа.',
-'tooltip-watch' => 'Тlетоха хlара агlо сан тергаме могlам юкъа',
+'tooltip-watch' => 'ТӀетоха хӀара агӀо сан тергаме могӀанан юкъа',
 'tooltip-rollback' => 'Цхьоз тlетаlийча дlабаккха кхечо бина болу тlаьххьара хийцам',
 'tooltip-undo' => 'Дlабаккха бина болу хийцам а хьалхьажар гойтуш, дlайаккхарна бахьан гайта аьтту беш',
 'tooltip-summary' => 'Язъе йоца цӀе',
 
 # Stylesheets
-'common.css' => '/** Чуйиллина йолу кхузе CSS хир йу лелош масхьа кечйечу чохь */',
-'monobook.css' => '/* Чуйиллина йолу кхузе CSS хир йу лелош масхьа Monobook чохь */',
-'print.css' => '/* Чуйиллина йолу кхузе CSS хир йу лелош масхьа зорба тухучуче чохь */',
+'common.css' => '/** Чуйиллина йолу кхузе CSS хир ю лелош масхьа кечйечу чохь */',
+'monobook.css' => '/* Чуйиллина йолу кхузе CSS хир ю лелош масхьа Monobook чохь */',
+'print.css' => '/* Чуйиллина йолу кхузе CSS хир ю лелош масхьа зорба тухучуче чохь */',
 
 # Scripts
 'common.js' => '/* Чуйиллина йолу кхузе JavaScript код гучу ера ю массо декъашхошна оцара схьаелларца хlора агlо */',
@@ -2183,8 +2332,8 @@ PICT # тайп тайпан
 # Attribution
 'siteuser' => 'декъашхо {{grammar:genitive|{{SITENAME}}}} $1',
 'others' => 'кхин',
-'siteusers' => '{{PLURAL:$2|декъашхо|декъашхой}} {{grammar:genitive|{{SITENAME}}}} $1',
-'anonusers' => '{{PLURAL:$2|цӀе хьулйина декъашхо|цӀе хьулйина декъашхой}} {{grammar:genitive|{{SITENAME}}}} $1',
+'siteusers' => '{{PLURAL:$2|1=декъашхо|декъашхой}} {{grammar:genitive|{{SITENAME}}}} $1',
+'anonusers' => '{{PLURAL:$2|1=цӀе хьулйина декъашхо|цӀе хьулйина декъашхой}} {{grammar:genitive|{{SITENAME}}}} $1',
 'nocredits' => 'Бац декъашхойн могlам хlокху яззамца',
 
 # Spam protection
@@ -2197,6 +2346,8 @@ PICT # тайп тайпан
 'pageinfo-language' => 'АгӀона мотт',
 'pageinfo-toolboxlink' => 'Агlонах болу бовзам',
 'pageinfo-redirectsto-info' => 'Хаам',
+'pageinfo-protect-cascading' => 'Чахчарин гӀоралла кхузара',
+'pageinfo-protect-cascading-from' => 'Чахчарин гӀоралла тӀера',
 'pageinfo-category-info' => 'Категорех лаьцна хаам',
 
 # Skin names
@@ -2210,6 +2361,7 @@ PICT # тайп тайпан
 
 # Patrol log
 'patrol-log-page' => 'ТӀехьажаран тептар',
+'patrol-log-header' => 'Хьажжина версеш йолу тептар.',
 'log-show-hide-patrol' => '$1 тӀехьажаран тептар',
 
 # Browsing diffs
@@ -2222,13 +2374,13 @@ PICT # тайп тайпан
 'widthheightpage' => '$1 × $2, $3 {{PLURAL:$3|агlо|агlонаш|агlонаш}}',
 'file-info' => 'файлан барам: $1, MIME-тайп: $2',
 'file-info-size' => '$1 × $2 пиксель, файлан барам: $3, MIME-тайп: $4',
-'file-info-size-pages' => '$1 × $2 пиксель, файлан барам: $3, MIME-тайп: $4, $5 {{PLURAL:$5|агӀо|агӀонаш}}',
+'file-info-size-pages' => '$1 × $2 пиксель, файлан барам: $3, MIME-тайп: $4, $5 {{PLURAL:$5|1=агӀо|агӀонаш}}',
 'file-nohires' => 'Кхи йоккха гlоле башхо яц.',
 'svg-long-desc' => 'SVG-файл, лартӀахь ю $1 × $2 {{PLURAL:$2|пиксель|пикселш|пикселш}}, файлан барам: $3',
 'svg-long-desc-animated' => 'Анимироват йина SVG-файл, номиналан $1 × $2 пиксель, файлан барам: $3',
 'show-big-image' => 'Сурт цlанал лаккхара бакъонца',
 'show-big-image-preview' => 'Барам хьажале: $1.',
-'show-big-image-other' => '{{PLURAL:$2|Кхин шоралла|Кхин шоралла}}: $1.',
+'show-big-image-other' => '{{PLURAL:$2|1=Кхин шоралла|Кхин шоралла}}: $1.',
 'show-big-image-size' => '$1 × $2 пиксель',
 
 # Special:NewFiles
@@ -2237,6 +2389,7 @@ PICT # тайп тайпан
 'newimages-legend' => 'Литтар',
 'showhidebots' => '$1 шабелхалой',
 'ilsubmit' => 'Лаха',
+'bydate' => 'терахьашца',
 'sp-newimages-showfrom' => 'Гайта керла файлаш $2, $1 тӀера дуьйна',
 
 # Video information, used by Language::formatTimePeriod() to format lengths in the above messages
@@ -2251,6 +2404,12 @@ PICT # тайп тайпан
 'hours-ago' => '$1 {{PLURAL:$1|сахьт}} хьалха',
 'minutes-ago' => '$1 {{PLURAL:$1|минут}} хьалха',
 'seconds-ago' => '$1 {{PLURAL:$1|секунд}} хьалха',
+'monday-at' => 'оршотан дийнахь $1',
+'wednesday-at' => 'кхаарин дийнахь $1',
+'thursday-at' => 'еарин дийнахь $1',
+'friday-at' => 'пӀераскан дийнахь $1',
+'saturday-at' => 'шот дийнахь $1',
+'sunday-at' => 'кӀиранан дийнахь $1',
 'yesterday-at' => 'селхана $1 даьлча',
 
 # Bad image list
@@ -2294,6 +2453,7 @@ PICT # тайп тайпан
 'exif-model' => 'Камеран модель',
 'exif-software' => 'Лелина программа',
 'exif-copyright' => 'Авторан бакъо ерг',
+'exif-exifversion' => 'Верси Exif',
 'exif-colorspace' => 'Беснашан хьал',
 'exif-compressedbitsperpixel' => 'Бесан кIоргалла дацдина чул тӀехьа',
 'exif-pixelxdimension' => 'Суьртан локхалла',
@@ -2321,6 +2481,7 @@ PICT # тайп тайпан
 'exif-originaltransmissionref' => 'ДӀадолалун меттиган код',
 'exif-label' => 'Билгало',
 'exif-datetimemetadata' => 'ТӀехьара метахаамаш хийцина терахь',
+'exif-usageterms' => 'Лелоран хьал',
 'exif-pngfilecomment' => 'PNG-файлан билгалдаккхар',
 'exif-giffilecomment' => 'GIF-файлан билгалдаккхар',
 
@@ -2329,10 +2490,16 @@ PICT # тайп тайпан
 
 'exif-copyrighted-false' => 'Юкъараллин хьал',
 
+'exif-unknowndate' => 'Хууш доцу терахь',
+
 'exif-orientation-1' => 'Лартӏахь',
 
 'exif-xyresolution-i' => '$1 тӏадамаш дюйман',
 
+'exif-lightsource-1' => 'Ден хьехам',
+'exif-lightsource-9' => 'Хаза хенан хӀоттам',
+'exif-lightsource-10' => 'Мархаш йолу',
+
 'exif-filesource-3' => 'Терахьийн суртдохку аппарат',
 
 'exif-scenetype-1' => 'Сурт даьккхина нис дуьххьал',
@@ -2353,10 +2520,10 @@ PICT # тайп тайпан
 'monthsall' => 'массо',
 
 # Delete conflict
-'confirmrecreate' => "Декъашхочо [[User:$1|$1]] ([[User talk:$1|дийцаре]]) хӀара агӀо дӀаяккхина, ахьа иза тая йолийча, дӀаяккхарна бахьна:
+'confirmrecreate' => "Декъашхочо [[User:$1|$1]] ([[User talk:$1|дийцаре]]) хӀара агӀо дӀаяьккхина, ахьа иза тая йолийча, дӀаяккхарна бахьна:
 : ''$2''
 Дехар до, тешал де, хьо иза агӀо меттахӀотто лууш ву/ю але.",
-'confirmrecreate-noreason' => 'Декъашхочо [[User:$1|$1]] ([[User talk:$1|дийцаре]]) хӀара агӀо дӀаяккхина, ахьа иза тая йолийча. Дехар до, тешал де, хьо иза агӀо меттахӀотто лууш ву/ю але.',
+'confirmrecreate-noreason' => 'Декъашхочо [[User:$1|$1]] ([[User talk:$1|дийцаре]]) хӀара агӀо дӀаяьккхина, ахьа иза тая йолийча. Дехар до, тешал де, хьо иза агӀо меттахӀотто лууш ву/ю але.',
 
 # action=watch/unwatch
 'confirm-watch-top' => 'ТӀетоха хӀара агӀо хьан тергаме могӀам юкъа?',
@@ -2385,7 +2552,7 @@ PICT # тайп тайпан
 
 # Live preview
 'livepreview-loading' => 'Чуйолуш…',
-'livepreview-ready' => 'Чуйолуш… Кийча йу!',
+'livepreview-ready' => 'Чуйолуш… Кийча ю!',
 
 # Watchlist editor
 'watchlistedit-normal-title' => 'Тергаме могӀанийн хийцамаш',
@@ -2403,7 +2570,7 @@ PICT # тайп тайпан
 'watchlistedit-raw-submit' => 'МогӀам Ӏалашбар',
 
 # Watchlist editing tools
-'watchlisttools-view' => 'Могlам чура агlонашан хийцамаш',
+'watchlisttools-view' => 'МогӀам чура агӀонашан хийцамаш',
 'watchlisttools-edit' => 'Хьажа/нисбé могlам',
 'watchlisttools-raw' => 'Йоза санна нисдé',
 
@@ -2412,9 +2579,25 @@ PICT # тайп тайпан
 
 # Special:Version
 'version' => 'Верси MediaWiki',
+'version-extensions' => 'ДӀахӀоттийна шордарш',
+'version-specialpages' => 'Белхан агӀонаш',
+'version-parserhooks' => 'Cинтаксисан къастор схьалоцурш',
 'version-variables' => 'Хийцаме',
 'version-other' => 'Кхин',
+'version-mediahandlers' => 'Медиа кеч ерраш',
+'version-parser-extensiontags' => 'Cинтаксисан къасторан шораллин тегаш',
+'version-parser-function-hooks' => 'Cинтаксисан къасторан функци схьалоцурш',
+'version-version' => '(Верси $1)',
 'version-license' => 'Бакъо',
+'version-poweredby-credits' => "ХӀара вики болх беш ю '''[https://www.mediawiki.org/ MediaWiki]''' движок тӀехь, copyright © 2001-$1 $2.",
+'version-poweredby-others' => 'кхин',
+'version-license-info' => 'MediaWiki ю маьрша программин латораг, шу йиш ю фондас арахецна йолу GNU General Public License лицензица и яржо я хийца а.
+
+MediaWiki яржош ю и шуна пайдане хир яц те аьлла, амма  ЦХЬА ЮКЪАРАХИЛАР ДОЦУШ. Хь. кхин. лицензи мадарра GNU General Public License .
+
+Шоьга кхача езаш яра [{{SERVER}}{{SCRIPTPATH}}/COPYING копи GNU General Public License] хӀокху программица, кхаьчна яцахь язъе Free Software Foundation, Inc., адрес тӀе: 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA я [//www.gnu.org/licenses/old-licenses/gpl-2.0.html еша и онлайнехь].',
+'version-software' => 'ДӀахӀоттийна программин латтор',
+'version-software-version' => 'Верси',
 
 # Special:Redirect
 'redirect' => 'Декъашхочун файлан тӀера дӀасхьажор',
@@ -2441,7 +2624,7 @@ PICT # тайп тайпан
 * <strong class="mw-specialpagerestricted">Кlеззиг таронаш йолу леррина агlонаш.</strong>',
 'specialpages-group-maintenance' => 'Жамlаш гlирса хьашташ кхочушдар',
 'specialpages-group-other' => 'Кхин гlуллакхан агlонаш',
-'specialpages-group-login' => 'Ð¥Ñ\8cой Ð²Ð¾Ð²Ð·Ð¸Ð¹Ñ\82а/йовзийÑ\82а / Ð´Ó\80авазло/дÓ\80аÑ\8fзло',
+'specialpages-group-login' => 'СиÑ\81Ñ\82емин Ñ\87Ñ\83гÓ\80о / Ð´Ó\80аÑ\8fздаÑ\80 ÐºÑ\85олла',
 'specialpages-group-changes' => 'Керла нисдарш а тéптарш',
 'specialpages-group-media' => 'Жамlаш оцу медиа-гlирсашан а чуяхарш',
 'specialpages-group-users' => 'Декъашхой а бакъонаш',
@@ -2459,12 +2642,13 @@ PICT # тайп тайпан
 'tags' => 'Болш болу хийцаман къастам',
 'tag-filter' => 'Къастам [[Special:Tags|хьажар]]:',
 'tag-filter-submit' => 'Литта',
-'tag-list-wrapper' => '([[Special:Tags|{{PLURAL:$1|Билгало|Билгалонаш}}]]: $2)',
+'tag-list-wrapper' => '([[Special:Tags|{{PLURAL:$1|1=Билгало|Билгалонаш}}]]: $2)',
 'tags-title' => 'Билгалонаш',
 'tags-intro' => 'ХӀокху агӀона чохь гойтуш бу билгалошан могӀам царца программин латторо билгал доху нисдарш, кхин билгалошан маьӀна а.',
 'tags-tag' => 'Билгалона цӀе',
 'tags-display-header' => 'МогӀам чохь хийцамаш гар',
 'tags-description-header' => 'МаьӀнан дуьззина сурт хӀоттор',
+'tags-active-header' => 'Жигара?',
 'tags-hitcount-header' => 'Къастам бина нисдарш',
 'tags-edit' => 'нисйé',
 'tags-hitcount' => '$1 {{PLURAL:$1|хийцам|хийцамаш|хийцамаш}}',
@@ -2478,11 +2662,11 @@ PICT # тайп тайпан
 'compare-submit' => 'Муха ю хьажа',
 
 # Database error messages
-'dberr-header' => 'Хlара вики ловш йу халона бала',
+'dberr-header' => 'ХӀара вики ловш ю халона бала',
 'dberr-problems' => 'Бехк ма бил! Хlинц машан меттиган хилла гlирсаца халонаш.',
 'dberr-again' => 'Хьажа карла йаккха агlо массех минот йаьлча.',
 'dberr-info' => '(аьтто ца хили зlе хlотта гlулкхдечуьнца бухара хаамашца: $1)',
-'dberr-usegoogle' => 'Цlачун хьо хьажа лаха гlонца Google.',
+'dberr-usegoogle' => 'ЦӀачун хьо хьажа лаха гӀоьнца Google.',
 'dberr-outofdate' => 'Хьуна хаалахь, цуьна йолу меттиг хила мега тишйелла черахь.',
 
 # HTML forms
@@ -2494,12 +2678,27 @@ PICT # тайп тайпан
 # New logging system
 'logentry-delete-delete' => '$1 {{GENDER:$2|дӀаяьккхина}} агӀо $3',
 'logentry-delete-restore' => '$1 {{GENDER:$2|меттахӀоттайина|меттахӀоттайина}} агӀо $3',
+'logentry-delete-event' => '$1 {{GENDER:$2|хийцина}} гуш хилар {{PLURAL:$5|1=$5 дӀаяздаран|$5 дӀаяздаршан}} тептаран → $3: $4',
+'logentry-delete-revision' => '$1 {{GENDER:$2|хийцина}} {{PLURAL:$5|1=$5 верси|$5 версеш}} гуш хилар $3: $4 агӀорахь',
+'logentry-delete-event-legacy' => '$1 {{GENDER:$2|хийцина}} $3 агӀона тептаран дӀаяздарш гуш хилар',
+'logentry-delete-revision-legacy' => '$1 {{GENDER:$2|хийцина}} $3 агӀона верси гуш хилар',
+'logentry-suppress-event' => '$1 къайлаха {{GENDER:$2|хийцина}} тептаран {{PLURAL:$5|1=$5 дӀаяздар|$5 дӀаяздарш}} гуш хилар $3: $4 чохь',
+'logentry-suppress-revision' => '$1 къайлаха {{GENDER:$2|хийцина}} {{PLURAL:$5|1=$5 верси|$5 версеш}} $3: $4 чохь гуш хилар',
+'logentry-suppress-event-legacy' => '$1 къайлаха {{GENDER:$2|хийцина}} $3 тептар чура дӀаяздарш гуш хилар',
+'logentry-suppress-revision-legacy' => '$1 къайлаха {{GENDER:$2|хийцина}} $3 агӀона верси гуш хилар',
 'revdelete-content-hid' => 'чулацам къайлабаьккхина',
+'revdelete-summary-hid' => 'нисдарх лаьцнарг къайладаьккхина',
+'revdelete-uname-hid' => 'декъашхочун цӀе къайлаяьккхина',
 'revdelete-content-unhid' => 'чулацам гучубаьккхина',
-'logentry-move-move' => '$1 {{GENDER:$2|цӀе хийцина|цӀе хийцина}} $3 оцу $4',
-'logentry-move-move-noredirect' => '$1 {{GENDER:$2|цӀе хийцина|цӀе хийцина}} $3 оцу $4 дӀасахьажийнарг цаюьтуш',
+'revdelete-summary-unhid' => 'нисдарх лаьцнарг гуча даьккхина',
+'revdelete-uname-unhid' => 'декъашхочун цӀе гуча яьккхина',
+'revdelete-restricted' => 'куьйгалхойн доза туху',
+'revdelete-unrestricted' => 'куьйгалхойн доза тохар дӀаяьккхина',
+'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-auto' => '$1 автоматически {{GENDER:$2|хьаьжина}} $3 агӀона версега $4',
 'logentry-newusers-newusers' => '{{GENDER:$2|ДӀавазвелла|ДӀаязелла}} керла декъашхо $1',
 'logentry-newusers-create' => '{{GENDER:$2|ДӀавазвелла|ДӀаязелла}} керла декъашхо $1',
 'logentry-newusers-autocreate' => 'Автоматически кхоьллина {{GENDER:$2|декъашхочун}} $1 дӀаяздар',
@@ -2515,8 +2714,11 @@ PICT # тайп тайпан
 'searchsuggest-containing' => 'чуьраниг…',
 
 # Durations
+'duration-seconds' => '$1 {{PLURAL:$1|секунд}}',
+'duration-minutes' => '$1 {{PLURAL:$1|минут}}',
 'duration-hours' => '$1 {{PLURAL:$1|сахьт}}',
 'duration-days' => '$1 {{PLURAL:$1|де}}',
+'duration-years' => '$1 {{PLURAL:$1|шо}}',
 
 # Limit report
 'limitreport-title' => 'АгӀона хӀоттам къасторан хаамаш:',
index a9775ba..42aa270 100644 (file)
@@ -624,7 +624,11 @@ $2',
 'userlogin-resetpassword-link' => 'تێپەڕوشە ڕیسێت بکەوە',
 'helplogin-url' => 'Help:چوونەژوورەوە',
 'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|یارمەتی بۆ چوونەژوورەوە]]',
+'userlogin-loggedin' => 'تۆ ھەر ئێستا بە ناوی {{GENDER:$1|$1}} چوویتە ژوورەوە.
+فۆرمی ژێرەوە بەکاربھێنە بۆ چوونەژوورەوە وەک بەکارھێنەرێکی تر.',
+'userlogin-createanother' => 'ھەژمارێکی تر دروست بکە',
 'createacct-join' => 'زانیارییەکەت لە ژێرەوە بنووسە.',
+'createacct-another-join' => 'زانیارییەکانی ھەژمارە نوێکەت لە ژێرەوە بنووسە.',
 'createacct-emailrequired' => 'ناونیشانی ئیمەیل',
 'createacct-emailoptional' => 'ناونیشانی ئیمەیل (دڵخوازانە)',
 'createacct-email-ph' => 'ناونیشانی ئیمەیلەکەت بنووسە',
@@ -636,6 +640,7 @@ $2',
 'createacct-captcha' => 'تاوتوێی ئاسایشی',
 'createacct-imgcaptcha-ph' => 'دەقەکەی لە ژێرەوە دەیبینی بینووسە',
 'createacct-submit' => 'ھەژمارەکەت دروست بکە',
+'createacct-another-submit' => 'ھەژمارێکی تر دروست بکە',
 'createacct-benefit-heading' => '{{SITENAME}} لە لایەن کەسانێک وەکوو خۆت دروست کراوە.',
 'createacct-benefit-body1' => '{{PLURAL:$1|دەستکاری}}',
 'createacct-benefit-body2' => '{{PLURAL:$1|پەڕە}}',
@@ -1506,6 +1511,7 @@ $1",
 'recentchanges-label-bot' => 'ئەم دەستکارییە لە لایەن بۆتەوە کراوە',
 'recentchanges-label-unpatrolled' => 'ئەم دەستکارییە ھێشتا پاس نەدراوە',
 'recentchanges-label-plusminus' => 'قەبارەی پەڕە ئەوەندە بایت گۆڕاوە',
+'recentchanges-legend-heading' => "'''کورتکراوەکان:'''",
 'recentchanges-legend-newpage' => '(ھەروەھا بڕوانە [[Special:NewPages|پێرستی پەڕە نوێکان]])',
 'recentchanges-legend-plusminus' => "(''±۱٢٣'')",
 'rcnotefrom' => "ئەوی‌ خوارەوە گۆڕانکارییەکانە لە '''$2'''ەوە (ھەتا '''$1''' نیشاندراو).",
index d16761f..b29a9e8 100644 (file)
@@ -120,7 +120,7 @@ $messages = array(
 'tog-editsection' => 'Болюклерни [денъиштир] багълантысы вастасынен денъиштирмеге рухсет бер',
 'tog-editsectiononrightclick' => 'Болюк серлевасына онъ баскъанда денъиштирюв пенджересини ач. (JavaScript)',
 'tog-showtoc' => 'Мундеридже джедвели косьтер (3 данеден зияде серлевасы олгъан саифелер ичюн)',
-'tog-rememberpassword' => 'Киришимни бу браузерде хатырла (энъ чокъ $1 {{PLURAL:$1|кунь|кунь}} ичюн)',
+'tog-rememberpassword' => 'Киришимни бу браузерде хатырла (энъ чокъ $1 {{PLURAL:$1|1=кунь|кунь}} ичюн)',
 'tog-watchcreations' => 'Яраткъан саифелеримни ве юклеген файлларымны козетюв джедвелиме кирсет',
 'tog-watchdefault' => 'Денъиштирген саифе ве файлларымны козетюв джедвелиме кирсет',
 'tog-watchmoves' => 'Адыны мен денъиштирген саифе ве файлларны козетюв джедвелиме кирсет',
@@ -212,19 +212,19 @@ $messages = array(
 'dec' => 'дек',
 
 # Categories related messages
-'pagecategories' => '{{PLURAL:$1|Саифенинъ категориясы|Саифенинъ категориялары}}',
+'pagecategories' => '{{PLURAL:$1|1=Саифенинъ категориясы|Саифенинъ категориялары}}',
 'category_header' => '"$1" категориясындаки саифелер',
 'subcategories' => 'Алт категориялар',
 'category-media-header' => '"$1" категориясындаки медиа файллары',
 'category-empty' => "''Ишбу категорияда ич бир саифе я да медиа файл ёкъ.''",
-'hidden-categories' => 'Гизли {{PLURAL:$1|категория|категориялар}}',
+'hidden-categories' => 'Гизли {{PLURAL:$1|1=категория|категориялар}}',
 'hidden-category-category' => 'Гизли категориялар',
-'category-subcat-count' => '{{PLURAL:$2|Бу категорияда тек бир ашагъыдаки алт категория бар.|Бу категориядаки топлам $2 алт категориядан ашагъыдаки $1 алт категория косьтерильген.}}',
-'category-subcat-count-limited' => 'Бу категорияда ашагъыдаки {{PLURAL:$1|1|$1}} алт категория бар.',
-'category-article-count' => '{{PLURAL:$2|Бу категорияда тек бир ашагъыдаки саифе бар.|Бу категориядаки топлам $2 саифеден ашагъыдаки $1 саифе косьтерильген.}}',
-'category-article-count-limited' => 'Бу категорияда ашагъыдаки {{PLURAL:$1|1|$1}} саифе бар.',
-'category-file-count' => '{{PLURAL:$2|Бу категорияда тек бир ашагъыдаки файл бар.|Бу категориядаки топлам $2 файлдан ашагъыдаки $1 файл косьтерильген.}}',
-'category-file-count-limited' => 'Бу категорияда ашагъыдаки {{PLURAL:$1|1|$1}} файл бар.',
+'category-subcat-count' => '{{PLURAL:$2|1=Бу категорияда тек бир ашагъыдаки алт категория бар.|Бу категориядаки топлам $2 алт категориядан ашагъыдаки $1 алт категория косьтерильген.}}',
+'category-subcat-count-limited' => 'Бу категорияда ашагъыдаки {{PLURAL:$1|1=1|$1}} алт категория бар.',
+'category-article-count' => '{{PLURAL:$2|1=Бу категорияда тек бир ашагъыдаки саифе бар.|Бу категориядаки топлам $2 саифеден ашагъыдаки $1 саифе косьтерильген.}}',
+'category-article-count-limited' => 'Бу категорияда ашагъыдаки {{PLURAL:$1|1=1|$1}} саифе бар.',
+'category-file-count' => '{{PLURAL:$2|1=Бу категорияда тек бир ашагъыдаки файл бар.|Бу категориядаки топлам $2 файлдан ашагъыдаки $1 файл косьтерильген.}}',
+'category-file-count-limited' => 'Бу категорияда ашагъыдаки {{PLURAL:$1|1=1|$1}} файл бар.',
 'listingcontinuesabbrev' => ' (девам)',
 'index-category' => 'Индексли саифелер',
 'noindex-category' => 'Индекссиз саифелер',
@@ -289,8 +289,8 @@ $messages = array(
 'create-this-page' => 'Бу саифени ярат',
 'delete' => 'Ёкъ эт',
 'deletethispage' => 'Саифени ёкъ эт',
-'undelete_short' => '{{PLURAL:$1|1|$1}} денъиштирмени кери кетир',
-'viewdeleted_short' => '{{PLURAL:$1|бир ёкъ этильген денъиштирмени|$1 ёкъ этильген денъиштирмени}} косьтер.',
+'undelete_short' => '{{PLURAL:$1|1=1|$1}} денъиштирмени кери кетир',
+'viewdeleted_short' => '{{PLURAL:$1|1=бир ёкъ этильген денъиштирмени|$1 ёкъ этильген денъиштирмени}} косьтер.',
 'protect' => 'Къорчала',
 'protect_change' => 'денъиштир',
 'protectthispage' => 'Саифени къорчалав алтына ал',
@@ -318,7 +318,7 @@ $messages = array(
 'redirectedfrom' => '($1 саифесинден ёлланды)',
 'redirectpagesub' => 'Ёллама саифеси',
 'lastmodifiedat' => 'Бу саифе сонъки оларакъ $1, $2 тарихында янъарды.',
-'viewcount' => 'Бу саифе {{PLURAL:$1|1|$1}} дефа иришильген.',
+'viewcount' => 'Бу саифе {{PLURAL:$1|1=1|$1}} дефа иришильген.',
 'protectedpage' => 'Къорчалангъан саифе',
 'jumpto' => 'Бунъа бар:',
 'jumptonavigation' => 'къуллан',
@@ -351,7 +351,7 @@ $1',
 
 'badaccess' => 'Изин хатасы',
 'badaccess-group0' => 'Япаджакъ олгъан арекетинъизни япмагъа акъкъынъыз ёкъ.',
-'badaccess-groups' => 'Япаджакъ олгъан арекетинъизни тек ашагъыдаки {{PLURAL:$2|1|$2}} группагъа аза олгъан къулланыджылары япып олалар: $1.',
+'badaccess-groups' => 'Япаджакъ олгъан арекетинъизни тек ашагъыдаки {{PLURAL:$2|1=1|$2}} группагъа аза олгъан къулланыджылары япып олалар: $1.',
 
 'versionrequired' => 'MediaWiki-нинъ $1 версиясы керек',
 'versionrequiredtext' => 'Бу саифени къулланмакъ ичюн MediaWiki-нинъ $1 версиясы керек. [[Special:Version|Версия]] саифесине бакъ.',
@@ -359,10 +359,10 @@ $1',
 'ok' => 'Ок',
 'retrievedfrom' => 'Менба – "$1"',
 'youhavenewmessages' => 'Янъы $1 бар ($2).',
-'youhavenewmessagesfromusers' => '{{PLURAL:$3|Башкъа бир къулланыджыдан|$3 къулланыджыдан}} $1 бар. ($2)',
+'youhavenewmessagesfromusers' => '{{PLURAL:$3|1=Башкъа бир къулланыджыдан|$3 къулланыджыдан}} $1 бар. ($2)',
 'youhavenewmessagesmanyusers' => 'Бир къач къулланыджыдан $1 бар. ($2)',
-'newmessageslinkplural' => '{{PLURAL:$1|янъы беянатынъыз|янъы беянатларынъыз}}',
-'newmessagesdifflinkplural' => 'музакере саифенъизнинъ сонъки {{PLURAL:$1|денъиштирильмеси|денъиштирильмелери}}',
+'newmessageslinkplural' => '{{PLURAL:$1|1=янъы беянатынъыз|янъы беянатларынъыз}}',
+'newmessagesdifflinkplural' => 'музакере саифенъизнинъ сонъки {{PLURAL:$1|1=денъиштирильмеси|денъиштирильмелери}}',
 'youhavenewmessagesmulti' => '$1 саифесинде янъы беянатынъыз бар.',
 'editsection' => 'денъиштир',
 'editold' => 'денъиштир',
@@ -377,7 +377,7 @@ $1',
 'collapsible-expand' => 'Кенишлет',
 'thisisdeleted' => '$1 корьмеге я да кери кетирмеге истейсинъизми?',
 'viewdeleted' => '$1 корь?',
-'restorelink' => 'ёкъ этильген {{PLURAL:$1|1|$1}} денъиштирмеси',
+'restorelink' => 'ёкъ этильген {{PLURAL:$1|1=1|$1}} денъиштирмеси',
 'feedlinks' => 'Бу шекильде:',
 'feed-invalid' => 'Абуне каналынынъ чешити янълыштыр.',
 'feed-unavailable' => 'Синдикация ленталары къулланылып оламай.',
@@ -448,8 +448,8 @@ $1',
 Ич бир изаат берильмеди.',
 'badtitle' => 'Рухсетсиз серлева',
 'badtitletext' => 'Истенильген саифе ады догъру дегиль, о боштыр, яхут тиллерара багъланты я да викилерара багъланты догъру язылмагъан. Бельки саифе адында ясакълангъан ишаретлер бар.',
-'perfcached' => 'Ашагъыдаки малюмат кэштен алынды ве эскирген ола билир! Кэште энъ чокъ {{PLURAL:$1|бир нетидже|$1 нетидже}} сакъланып тура.',
-'perfcachedts' => 'Ашагъыдаки малюмат кэштен алынды, кэшнинъ сонъки янъартылгъан вакъты: $1. Кэште энъ чокъ {{PLURAL:$1|бир нетидже|$1 нетидже}} сакъланып тура.',
+'perfcached' => 'Ашагъыдаки малюмат кэштен алынды ве эскирген ола билир! Кэште энъ чокъ {{PLURAL:$1|1=бир нетидже|$1 нетидже}} сакъланып тура.',
+'perfcachedts' => 'Ашагъыдаки малюмат кэштен алынды, кэшнинъ сонъки янъартылгъан вакъты: $1. Кэште энъ чокъ {{PLURAL:$1|1=бир нетидже|$1 нетидже}} сакъланып тура.',
 'querypage-no-updates' => 'Бу саифени денъиштирмеге шимди изин ёкъ. Бу малюмат аман янъартылмайджакъ.',
 'viewsource' => 'менба кодуны косьтер',
 'viewsource-title' => '$1 саифесининъ менба коду',
@@ -459,7 +459,7 @@ $1',
 'viewsourcetext' => 'Саифенинъ кодуны козьден кечирип копиялай билесинъиз:',
 'protectedinterface' => 'Бу саифеде система интерфейсининъ метни бар. Онынъ ичюн мында бир хата чыкъмасын деп оны денъиштирмек ясакъ.',
 'editinginterface' => "'''Тенби''': MediaWiki системасынынъ интерфейс саифесини денъиштиреятасыз. Бу саифедеки денъиштирмелер интерфейснинъ корюнишини бу викининъ башкъа къулланыджылары ичюн де денъиштиреджек. Лютфен, вики интерфейсини терджиме этмек ичюн [//translatewiki.net/wiki/Main_Page?setlang=crh translatewiki.net] сайтыны (MediaWiki ресмий локализация лейхасы) къулланынъыз.",
-'cascadeprotected' => 'Бу саифени денъиштирип оламазсынъыз, чюнки каскад къорчалав алтында булунгъан {{PLURAL:$1|саифеге|саифелерге}} менсюптир:
+'cascadeprotected' => 'Бу саифени денъиштирип оламазсынъыз, чюнки каскад къорчалав алтында булунгъан {{PLURAL:$1|1=саифеге|саифелерге}} менсюптир:
 $2',
 'namespaceprotected' => "'''$1''' исим фезасында саифелер денъиштирмеге акъкъынъыз ёкъ.",
 'ns-specialprotected' => '{{ns:special}} исим фезасындаки саифелерни денъиштирмек ясакъ.',
@@ -478,7 +478,7 @@ $2',
 'yourname' => 'Къулланыджы адынъыз',
 'yourpassword' => 'Паролинъиз',
 'yourpasswordagain' => 'Парольни бир даа язынъыз:',
-'remembermypassword' => 'Киришимни бу компьютерде хатырла (энъ чокъ $1 {{PLURAL:$1|кунь|кунь}} ичюн)',
+'remembermypassword' => 'Киришимни бу компьютерде хатырла (энъ чокъ $1 {{PLURAL:$1|1=кунь|кунь}} ичюн)',
 'yourdomainname' => 'Домен адынъыз',
 'externaldberror' => 'Сайткъа киргенде бир хата олды. Бу тыш эсабынъызны денъиштирмек акъкъынъыз олмагъанындан себеп мейдангъа келип ола.',
 'login' => 'Кириш',
@@ -516,13 +516,13 @@ $2',
 'wrongpassword' => 'Кирсеткен паролинъиз янълыштыр. Лютфен, текрар этинъиз.',
 'wrongpasswordempty' => 'Кирсеткен паролинъиз боштыр.
 Лютфен, текрар этинъиз.',
-'passwordtooshort' => 'Паролинъизде энъ аз {{PLURAL:$1|1|$1}} ишарет олмалы.',
+'passwordtooshort' => 'Паролинъизде энъ аз {{PLURAL:$1|1=1|$1}} ишарет олмалы.',
 'password-name-match' => 'Паролинъиз къулланыджы адынъыздан фаркълы олмалы.',
 'password-login-forbidden' => 'Бу къулланыджы ады ве парольни къулланмакъ ясакътыр.',
 'mailmypassword' => 'Янъы пароль йибер',
 'passwordremindertitle' => '{{grammar:genitive|{{SITENAME}}}} къулланыджынынъ пароль хатырлатувы',
 'passwordremindertext' => 'Бирев (бельки де бу сизсинъиз, $1 IP адресинден) {{SITENAME}} сайты ичюн ($4) янъы къулланыджы паролини истеди.
-$2 къулланыджысына вакътынджа <code>$3</code> пароли яратылды. Эгер бу керчектен де сизинъ истегинъиз олгъан олса, отурым ачып янъы бир пароль яратманъыз керектир. Мувакъкъат паролинъизнинъ муддети {{PLURAL:$5|1 кунь|$5 кунь}} ичинде доладжакъ.
+$2 къулланыджысына вакътынджа <code>$3</code> пароли яратылды. Эгер бу керчектен де сизинъ истегинъиз олгъан олса, отурым ачып янъы бир пароль яратманъыз керектир. Мувакъкъат паролинъизнинъ муддети {{PLURAL:$5|1=1 кунь|$5 кунь}} ичинде доладжакъ.
 
 Эгер де янъы пароль талап этмеген олсанъыз я да эски паролинъизни хатырлап энди оны денъиштирмеге истемесенъиз, бу мектюпни дикъкъаткъа алмайып эски паролинъизни къулланмагъа девам этип оласынъыз.',
 'noemail' => '$1 адлы къулланыджы ичюн e-mail бильдирильмеди.',
@@ -530,9 +530,9 @@ $2 къулланыджысына вакътынджа <code>$3</code> паро
 'passwordsent' => 'Янъы пароль e-mail ёлунен къулланыджынынъ бильдирген $1 адресине йиберильди. Парольни алгъан сонъ текрар кириш япынъыз.',
 'blocked-mailpassword' => 'IP адресинъизден саифелер денъиштирюв ясакълы, пароль хатырлатув функциясы да блок этильди.',
 'eauthentsent' => 'Бильдирильген e-mail адресине ичинде тасдыкъ коду олгъан бир мектюп ёлланды. Сиз шу мектюпте язылгъан арекетлерни япып бу e-mail адресининъ саиби керчектен де сиз олгъанынъызны тасдыкълагъан сонъ башкъа мектюп ёлланып олур.',
-'throttled-mailpassword' => 'Пароль хатырлатув функциясы энди сонъки {{PLURAL:$1|1|$1}} саат девамында ишлетильген эди. {{PLURAL:$1|1|$1}} саат ичинде тек бир хатырлатув ишлетмек мумкюн.',
+'throttled-mailpassword' => 'Пароль хатырлатув функциясы энди сонъки {{PLURAL:$1|1=1|$1}} саат девамында ишлетильген эди. {{PLURAL:$1|1=1|$1}} саат ичинде тек бир хатырлатув ишлетмек мумкюн.',
 'mailerror' => 'Почта йиберильгенде бир хата мейдангъа кельди: $1',
-'acct_creation_throttle_hit' => 'Сизинъ IP адресинъизни къулланып бу викини зиярет эткенлер сонъки куньде {{PLURAL:$1|1 эсап|$1 эсап}} яратты. Бу вакъыт аралыгъында бир IP-ден даа чокъ эсап яратмакъ мумкюн дегиль.
+'acct_creation_throttle_hit' => 'Сизинъ IP адресинъизни къулланып бу викини зиярет эткенлер сонъки куньде {{PLURAL:$1|1=1 эсап|$1 эсап}} яратты. Бу вакъыт аралыгъында бир IP-ден даа чокъ эсап яратмакъ мумкюн дегиль.
 Нетиджеде, бу IP адресини къуллангъан зияретчилер шимди даа зияде эсап ачып оламазлар.',
 'emailauthenticated' => 'E-mail адресинъиз $2 $3 тарихында тасдыкъланды.',
 'emailnotauthenticated' => 'E-mail адресинъиз тасдыкъланмады, викининъ e-mail иле багълы функциялары чалышмайджакъ.',
@@ -705,23 +705,23 @@ $2 къулланыджысына вакътынджа <code>$3</code> паро
 Журналнынъ сонъки язысы ашагъыда берильген:",
 'semiprotectedpagewarning' => "'''Тенби''': Бу саифе тек къайдлы къулланыджылар тарафындан денъиштирилип олур.
 Журналнынъ сонъки язысы ашагъыда берильген:",
-'cascadeprotectedwarning' => "'''Тенби:''' Бу саифени тек «Идареджилер» группасына кирген къулланыджылар денъиштирип олалар, чюнки о каскад къорчалав алтында булунгъан {{PLURAL:$1|саифеге|саифелерге}} менсюптир:",
+'cascadeprotectedwarning' => "'''Тенби:''' Бу саифени тек «Идареджилер» группасына кирген къулланыджылар денъиштирип олалар, чюнки о каскад къорчалав алтында булунгъан {{PLURAL:$1|1=саифеге|саифелерге}} менсюптир:",
 'titleprotectedwarning' => "'''ТЕНБИ: Бу саифе къорчалав алтындадыр, тек [[Special:ListGroupRights|махсус акъларгъа]] саип къулланыджылар оны яратып ола.'''
 Журналнынъ сонъки язысы ашагъыда берильген:",
-'templatesused' => 'Бу саифеде къулланылгъан {{PLURAL:$1|шаблон|шаблонлар}}:',
-'templatesusedpreview' => 'Сиз бакъып чыкъкъан саифенъизде къулланылгъан {{PLURAL:$1|шаблон|шаблонлар}}:',
-'templatesusedsection' => 'Бу болюкте къулланылгъан {{PLURAL:$1|шаблон|шаблонлар}}:',
+'templatesused' => 'Бу саифеде къулланылгъан {{PLURAL:$1|1=шаблон|шаблонлар}}:',
+'templatesusedpreview' => 'Сиз бакъып чыкъкъан саифенъизде къулланылгъан {{PLURAL:$1|1=шаблон|шаблонлар}}:',
+'templatesusedsection' => 'Бу болюкте къулланылгъан {{PLURAL:$1|1=шаблон|шаблонлар}}:',
 'template-protected' => '(къорчалав алтында)',
 'template-semiprotected' => '(къысмен къорчалав алтында)',
-'hiddencategories' => 'Бу саифе {{PLURAL:$1|1|$1}} гизли категориягъа менсюптир:',
+'hiddencategories' => 'Бу саифе {{PLURAL:$1|1=1|$1}} гизли категориягъа менсюптир:',
 'nocreatetext' => '{{SITENAME}} сайтында янъы саифе яратув сынъырлыдыр.
 Кери къайтып мевджут олгъан саифени денъиштире, [[Special:UserLogin|отурым ача я да янъы бир эсап яратып оласынъыз]].',
 'nocreate-loggedin' => 'Янъы саифелер яратмагъа изининъиз ёкътыр.',
 'sectioneditnotsupported-title' => 'Болюклерни денъиштирмек мумкюн дегиль.',
 'sectioneditnotsupported-text' => 'Бу саифеде болюклерни денъиштирмек мумкюн дегиль.',
 'permissionserrors' => 'Иришим акъларынынъ хаталары',
-'permissionserrorstext' => 'Буны япмагъа изининъиз ёкътыр. {{PLURAL:$1|Себеп|Себеплер}}:',
-'permissionserrorstext-withaction' => 'Ашагъыдаки {{PLURAL:$1|себептен|себеплерден}} $2 рухсетинъиз ёкъ:',
+'permissionserrorstext' => 'Буны япмагъа изининъиз ёкътыр. {{PLURAL:$1|1=Себеп|Себеплер}}:',
+'permissionserrorstext-withaction' => 'Ашагъыдаки {{PLURAL:$1|1=себептен|себеплерден}} $2 рухсетинъиз ёкъ:',
 'recreate-moveddeleted-warn' => "'''Тенби: Эвельдже ёкъ этильген саифени янъыдан яратасынъыз.'''
 
 Саифени денъиштирмеге девам эткени уйгъун олып олмагъаныны тюшюнмелисинъиз.
@@ -771,7 +771,7 @@ $3 мына бу себепни бильдирди: ''$2''",
 'history-show-deleted' => 'Тек ёкъ этильгенлер',
 'histfirst' => 'Энъ эски',
 'histlast' => 'Энъ янъы',
-'historysize' => '({{PLURAL:$1|1 байт|$1 байт}})',
+'historysize' => '({{PLURAL:$1|1=1 байт|$1 байт}})',
 'historyempty' => '(бош)',
 
 # Revision feed
@@ -792,7 +792,7 @@ $3 мына бу себепни бильдирди: ''$2''",
 'revdelete-hide-comment' => 'Къыскъа тарифни косьтерме',
 'revdelete-hide-user' => 'Денъиштирмени япкъаннынъ къулланыджы адыны/IP-ни гизле',
 'revdelete-hide-restricted' => 'Малюматны адий къулланыджылардан киби идареджилерден де гизле',
-'revdelete-submit' => 'Сайлангъан {{PLURAL:$1|версиягъа|версияларгъа}} ишлет',
+'revdelete-submit' => 'Сайлангъан {{PLURAL:$1|1=версиягъа|версияларгъа}} ишлет',
 'revdel-restore' => 'корюнювни денъиштир',
 
 # Merge log
@@ -806,8 +806,8 @@ $3 мына бу себепни бильдирди: ''$2''",
 'compareselectedversions' => 'Сайлангъан версияларны тенъештир',
 'showhideselectedversions' => 'Сайлангъан версияларны косьтер/гизле',
 'editundo' => 'лягъу эт',
-'diff-multi' => '({{PLURAL:$2|Бир къулланыджы|$2 къулланыджы}}нынъ япкъан {{PLURAL:$1|бир ара версиясы|$1 ара версиясы}} косьтерильмей)',
-'diff-multi-manyusers' => '($2-ден зияде {{PLURAL:$2|къулланыджы|къулланыджы}}нынъ япкъан {{PLURAL:$1|бир ара версиясы|$1 ара версиясы}} косьтерильмей)',
+'diff-multi' => '({{PLURAL:$2|1=Бир къулланыджы|$2 къулланыджы}}нынъ япкъан {{PLURAL:$1|1=бир ара версиясы|$1 ара версиясы}} косьтерильмей)',
+'diff-multi-manyusers' => '($2-ден зияде {{PLURAL:$2|1=къулланыджы|къулланыджы}}нынъ япкъан {{PLURAL:$1|1=бир ара версиясы|$1 ара версиясы}} косьтерильмей)',
 
 # Search results
 'searchresults' => 'Къыдырув нетиджелери',
@@ -818,9 +818,9 @@ $3 мына бу себепни бильдирди: ''$2''",
 'notextmatches' => 'Ич бир саифеде тапыламады',
 'prevn' => 'эвельки {{PLURAL:$1|$1}}',
 'nextn' => 'сонъраки {{PLURAL:$1|$1}}',
-'prevn-title' => 'Эвельки $1 {{PLURAL:$1|нетидже|нетидже}}',
-'nextn-title' => 'Сонъраки $1 {{PLURAL:$1|нетидже|нетидже}}',
-'shown-title' => 'Саифе башына $1 {{PLURAL:$1|нетидже|нетидже}} косьтер',
+'prevn-title' => 'Эвельки $1 {{PLURAL:$1|1=нетидже|нетидже}}',
+'nextn-title' => 'Сонъраки $1 {{PLURAL:$1|1=нетидже|нетидже}}',
+'shown-title' => 'Саифе башына $1 {{PLURAL:$1|1=нетидже|нетидже}} косьтер',
 'viewprevnext' => '($1 {{int:pipe-separator}} $2) ($3).',
 'searchmenu-exists' => "'''Бу викиде \"[[:\$1]]\" адлы бир саифе бар'''",
 'searchmenu-new' => "'''Бу викиде \"[[:\$1]]\" саифесини ярат!'''",
@@ -834,7 +834,7 @@ $3 мына бу себепни бильдирди: ''$2''",
 'searchprofile-images-tooltip' => 'Файлларны къыдыр',
 'searchprofile-everything-tooltip' => 'Бутюн саифелерде (музакере саифелеринде де) къыдыр',
 'searchprofile-advanced-tooltip' => 'Бельгиленген исим фезаларында къыдыр',
-'search-result-size' => '$1 ({{PLURAL:$2|1|$2}} сёз)',
+'search-result-size' => '$1 ({{PLURAL:$2|1=1|$2}} сёз)',
 'search-result-score' => 'Уйгъунлыкъ: $1 %',
 'search-redirect' => '(ёллама $1)',
 'search-section' => '(болюк $1)',
@@ -846,8 +846,8 @@ $3 мына бу себепни бильдирди: ''$2''",
 'searcheverything-enable' => 'Бутюн исим фезаларында къыдыр',
 'searchrelated' => 'багълы',
 'searchall' => 'эписи',
-'showingresults' => "Ашагъыда №&nbsp;<strong>$2</strong>ден башлап {{PLURAL:$1|'''1''' нетидже|'''$1''' нетидже}} булуна.",
-'showingresultsnum' => "Ашагъыда №&nbsp;'''$2'''ден башлап {{PLURAL:$3|'''1''' нетидже|'''$3''' нетидже}} булуна.",
+'showingresults' => "Ашагъыда №&nbsp;<strong>$2</strong>ден башлап {{PLURAL:$1|1='''1''' нетидже|'''$1''' нетидже}} булуна.",
+'showingresultsnum' => "Ашагъыда №&nbsp;'''$2'''ден башлап {{PLURAL:$3|1='''1''' нетидже|'''$3''' нетидже}} булуна.",
 'search-nonefound' => 'Соратманен эшлешкен бир нетидже ёкъ.',
 'powersearch-legend' => 'Тафсилятлы къыдырув',
 'powersearch-ns' => 'Бу исим фезаларында къыдыр:',
@@ -870,7 +870,7 @@ $3 мына бу себепни бильдирди: ''$2''",
 'prefs-rc' => 'Сонъки денъиштирмелер',
 'prefs-watchlist' => 'Козетюв джедвели',
 'prefs-watchlist-days' => 'Козетюв джедвелинде косьтериледжек кунь сайысы:',
-'prefs-watchlist-days-max' => 'Энъ чокъ $1 {{PLURAL:$1|кунь|кунь}}',
+'prefs-watchlist-days-max' => 'Энъ чокъ $1 {{PLURAL:$1|1=кунь|кунь}}',
 'prefs-watchlist-edits' => 'Кенишлетилген козетюв джедвелинде косьтериледжек денъиштирмелер сайысы:',
 'prefs-watchlist-edits-max' => '(энъ чокъ 1000)',
 'prefs-watchlist-token' => 'Козетюв джедвели ишарети:',
@@ -886,7 +886,7 @@ $3 мына бу себепни бильдирди: ''$2''",
 'searchresultshead' => 'Къыдырув',
 'resultsperpage' => 'Саифеде косьтериледжек тапылгъан саифе сайысы',
 'recentchangesdays' => 'Сонъки денъиштирмелер саифесинде косьтериледжек кунь сайысы:',
-'recentchangesdays-max' => '(энъ чокъ $1 {{PLURAL:$1|кунь|кунь}})',
+'recentchangesdays-max' => '(энъ чокъ $1 {{PLURAL:$1|1=кунь|кунь}})',
 'recentchangescount' => 'Ог бельгиленген косьтериледжек денъиштирмелер сайысы:',
 'prefs-help-recentchangescount' => 'Бу, сонъки денъиштирмелер, саифе кечмиши ве журнал саифелеринде къулланыла.',
 'savedprefs' => 'Сазламаларынъыз сакъланды.',
@@ -917,7 +917,7 @@ $3 мына бу себепни бильдирди: ''$2''",
 'youremail' => 'E-mail адресинъиз:',
 'username' => 'Къулланыджы ады:',
 'uid' => 'Къайд номери:',
-'prefs-memberingroups' => 'Азасы олгъан {{PLURAL:$1|группа|группалар}}:',
+'prefs-memberingroups' => 'Азасы олгъан {{PLURAL:$1|1=группа|группалар}}:',
 'prefs-registration' => 'Къайд тарихы:',
 'yourrealname' => 'Керчек адынъыз:',
 'yourlanguage' => 'Интерфейс тили:',
@@ -925,7 +925,7 @@ $3 мына бу себепни бильдирди: ''$2''",
 'yournick' => 'Янъы имзанъыз:',
 'prefs-help-signature' => 'Музакере саифелериндеки тефсирлерни "<nowiki>~~~~</nowiki>" иле имзаламакъ керек, бу дёрт тильда ерине имзанъыз ве вакъыт косьтерилир.',
 'badsig' => 'Янълыш имза. HTML тэглерининъ догърулыгъыны бакъынъыз.',
-'badsiglength' => 'Къарардан зияде узун имзадыр, {{PLURAL:$1|1|$1}} зияде ишареттен ибарет олмасы мумкюн дегиль.',
+'badsiglength' => 'Къарардан зияде узун имзадыр, {{PLURAL:$1|1=1|$1}} зияде ишареттен ибарет олмасы мумкюн дегиль.',
 'yourgender' => 'Джынсынъыз:',
 'gender-unknown' => 'Бильдирильмеген',
 'gender-male' => 'Эркек',
@@ -1022,7 +1022,7 @@ $3 мына бу себепни бильдирди: ''$2''",
 'minoreditletter' => 'к',
 'newpageletter' => 'Я',
 'boteditletter' => 'б',
-'number_of_watching_users_pageview' => '[$1 {{PLURAL:$1|къулланыджы|къулланыджы}} козете]',
+'number_of_watching_users_pageview' => '[$1 {{PLURAL:$1|1=къулланыджы|къулланыджы}} козете]',
 'rc_categories' => 'Тек категориялардан («|» иле айырыла)',
 'rc_categories_any' => 'Эр анги',
 'newsectionsummary' => '/* $1 */ янъы болюк',
@@ -1077,9 +1077,9 @@ $3 мына бу себепни бильдирди: ''$2''",
 'filetype-badmime' => '"$1" MIME чешитиндеки файллар юклеме ясакълыдыр.',
 'filetype-bad-ie-mime' => 'Бу файл юкленип оламаз, чюнки Internet Explorer оны "$1" яни рухсет берильмеген ве зарарлы ола бильген файл деп беллейджек.',
 'filetype-unwanted-type' => "'''\".\$1\"''' — истенильмеген файл чешити.
-Истенильген {{PLURAL:\$3|файл чешити|файл чешитлери}}: \$2.",
+Истенильген {{PLURAL:\$3|1=файл чешити|файл чешитлери}}: \$2.",
 'filetype-banned-type' => "'''\".\$1\"''' — ясакълы файл чешити.
-Истенильген {{PLURAL:\$3|файл чешити|файл чешитлери}}: \$2.",
+Истенильген {{PLURAL:\$3|1=файл чешити|файл чешитлери}}: \$2.",
 'filetype-missing' => 'Файлнынъ ич бир узантысы ёкъ (меселя «.jpg», «.gif» ве илх.).',
 'large-file' => 'Буюклиги $1 байттан зияде ибарет олмагъан ресимлер къулланув тевсие этиле (бу файлнынъ буюклиги $2 байт).',
 'largefileserver' => 'Бу файлнынъ узунлыгъы серверде изин берильгенден буюкчедир.',
@@ -1108,7 +1108,7 @@ $3 мына бу себепни бильдирди: ''$2''",
 'fileexists-shared-forbidden' => 'Файллар умумий тутулгъан еринде бу исимде бир файл энди бар.
 Эгер бу файлны эп бир юклемеге истесенъиз, кери къайтынъыз ве файл исмини денъиштирип янъыдан юкленъиз.
 [[File:$1|thumb|center|$1]]',
-'file-exists-duplicate' => 'Бу файл ашагъыдаки {{PLURAL:$1|файлнынъ|файлларнынъ}} дубликаты ола:',
+'file-exists-duplicate' => 'Бу файл ашагъыдаки {{PLURAL:$1|1=файлнынъ|файлларнынъ}} дубликаты ола:',
 'uploadwarning' => 'Тенби',
 'savefile' => 'Файлны сакъла',
 'uploadedimage' => 'Юкленген: "[[$1]]"',
@@ -1177,7 +1177,7 @@ $3 мына бу себепни бильдирди: ''$2''",
 'filehist-comment' => 'Изаат',
 'filehist-missing' => 'Файл ёкъ',
 'imagelinks' => 'Файл багълантылары',
-'linkstoimage' => 'Бу файлгъа багъланты олгъан {{PLURAL:$1|1|$1}} саифе:',
+'linkstoimage' => 'Бу файлгъа багъланты олгъан {{PLURAL:$1|1=1|$1}} саифе:',
 'nolinkstoimage' => 'Бу файлгъа багълангъан саифе ёкъ.',
 'sharedupload' => 'Бу файл $1 сайтындан ве дигер лейхаларда да къулланылып ола.',
 'uploadnewversion-linktext' => 'Файлнынъ янъысыны юкленъиз',
@@ -1209,7 +1209,7 @@ $3 мына бу себепни бильдирди: ''$2''",
 
 # Random page
 'randompage' => 'Тесадюфий саифе',
-'randompage-nopages' => '"$1" {{PLURAL:$2|исим фезасында|исим фезаларында}} ич бир саифе ёкъ.',
+'randompage-nopages' => '"$1" {{PLURAL:$2|1=исим фезасында|исим фезаларында}} ич бир саифе ёкъ.',
 
 # Random redirect
 'randomredirect' => 'Тесадюфий ёллама саифеси',
@@ -1242,12 +1242,12 @@ $3 мына бу себепни бильдирди: ''$2''",
 'fewestrevisions' => 'Энъ аз денъиштирме япылгъан саифелер',
 
 # Miscellaneous special pages
-'nbytes' => '{{PLURAL:$1|1 байт|$1 байт}}',
-'ncategories' => '{{PLURAL:$1|1 категория|$1 категория}}',
-'nlinks' => '{{PLURAL:$1|1 багъланты|$1 багъланты}}',
-'nmembers' => '{{PLURAL:$1|1 аза|$1 аза}}',
-'nrevisions' => '{{PLURAL:$1|1 версия|$1 версия}}',
-'nviews' => '{{PLURAL:$1|1 корюнюв|$1 корюнюв}}',
+'nbytes' => '{{PLURAL:$1|1=1 байт|$1 байт}}',
+'ncategories' => '{{PLURAL:$1|1=1 категория|$1 категория}}',
+'nlinks' => '{{PLURAL:$1|1=1 багъланты|$1 багъланты}}',
+'nmembers' => '{{PLURAL:$1|1=1 аза|$1 аза}}',
+'nrevisions' => '{{PLURAL:$1|1=1 версия|$1 версия}}',
+'nviews' => '{{PLURAL:$1|1=1 корюнюв|$1 корюнюв}}',
 'specialpage-empty' => 'Бу соратма ичюн ич нетидже ёкъ.',
 'lonelypages' => 'Озюне ич багъланты олмагъан саифелер',
 'lonelypagestext' => 'Ашагъыдаки саифелерге {{SITENAME}} сайтындаки дигер саифелерден багъланты берильмеген, ондан да гъайры мезкюр саифелер дигер саиферлрге кирсетильмеген.',
@@ -1282,8 +1282,8 @@ $3 мына бу себепни бильдирди: ''$2''",
 'ancientpages' => 'Энъ эски саифелер',
 'move' => 'Адыны денъиштир',
 'movethispage' => 'Саифенинъ адыны денъиштир',
-'pager-newer-n' => '{{PLURAL:$1|даа янъы 1|даа янъы $1}}',
-'pager-older-n' => '{{PLURAL:$1|даа эски 1|даа эски $1}}',
+'pager-newer-n' => '{{PLURAL:$1|1=даа янъы 1|даа янъы $1}}',
+'pager-older-n' => '{{PLURAL:$1|1=даа эски 1|даа эски $1}}',
 
 # Book sources
 'booksources' => 'Китаплар менбасы',
@@ -1314,7 +1314,7 @@ $3 мына бу себепни бильдирди: ''$2''",
 
 # Special:Categories
 'categories' => 'Саифе категориялары',
-'categoriespagetext' => 'Ашагъыдаки {{PLURAL:$1|категорияда|категорияларда}} саифе я да медиа файллар бар.
+'categoriespagetext' => 'Ашагъыдаки {{PLURAL:$1|1=категорияда|категорияларда}} саифе я да медиа файллар бар.
 [[Special:UnusedCategories|Къулланылмагъан категориялар]] мында косьтерильмеген.
 Айрыджа [[Special:WantedCategories|талап этильген категорияларнынъ джедвелине]] де бакъынъыз.',
 'special-categories-sort-count' => 'сайыларына коре сырала',
@@ -1370,14 +1370,14 @@ $3 мына бу себепни бильдирди: ''$2''",
 'unwatch' => 'Козетме',
 'unwatchthispage' => 'Бу саифени козетме',
 'notanarticle' => 'Малюмат саифеси дегиль',
-'watchlist-details' => 'Музакере саифелерини эсапкъа алмайып, козетюв джедвелинъизде {{PLURAL:$1|1|$1}} саифе бар.',
+'watchlist-details' => 'Музакере саифелерини эсапкъа алмайып, козетюв джедвелинъизде {{PLURAL:$1|1=1|$1}} саифе бар.',
 'wlheader-enotif' => 'E-mail иле хабер берюв ачылды.',
 'wlheader-showupdated' => "Сонъки зияретинъизден сонъ денъиштирильген саифелер '''къалын арифлернен''' косьтерильди.",
 'watchmethod-recent' => 'сонъки денъиштирмелер арасында козеткен саифелеринъиз къыдырыла',
 'watchmethod-list' => 'козетюв джедвелиндеки саифелер тешкериле',
-'watchlistcontains' => 'Сизинъ козетюв джедвелинъизде {{PLURAL:$1|1|$1}} саифе бар.',
+'watchlistcontains' => 'Сизинъ козетюв джедвелинъизде {{PLURAL:$1|1=1|$1}} саифе бар.',
 'iteminvalidname' => '"$1" саифеси мунасебетинен проблема олып чыкъты, эльверишли олмагъан исимдир…',
-'wlnote' => "Ашагъыда саат $3, $4 ичюн сонъки {{PLURAL:$2|саат|'''$2''' саат}} ичинде япылгъан сонъки {{PLURAL:$1|денъиштирме|'''$1''' денъиштирме}} косьтериле.",
+'wlnote' => "Ашагъыда саат $3, $4 ичюн сонъки {{PLURAL:$2|1=саат|'''$2''' саат}} ичинде япылгъан сонъки {{PLURAL:$1|1=денъиштирме|'''$1''' денъиштирме}} косьтериле.",
 'wlshowlast' => 'Сонъки $1 саат ичюн, $2 кунь ичюн я да $3 косьтер',
 'watchlist-options' => 'Козетюв джедвели сазламалары',
 
@@ -1429,7 +1429,7 @@ $UNWATCHURL
 'exblank' => 'саифе метини бош',
 'delete-confirm' => '«$1» саифесини ёкъ этмектесинъиз',
 'delete-legend' => 'Ёкъ этюв',
-'historywarning' => "'''Тенби:''' Сиз ёкъ этмеге истеген саифенъизнинъ къарарнен $1 {{PLURAL:$1|версиялы|версиялы}} кечмиши бардыр:",
+'historywarning' => "'''Тенби:''' Сиз ёкъ этмеге истеген саифенъизнинъ къарарнен $1 {{PLURAL:$1|1=версиялы|версиялы}} кечмиши бардыр:",
 'confirmdeletetext' => 'Бир саифени я да ресимни бутюн кечмиши иле бирликте малюмат базасындан къалыджы оларакъ ёкъ этмек узьресинъиз.
 Лютфен, нетиджелерини анълагъанынъызны ве [[{{MediaWiki:Policy-url}}|ёкъ этюв политикасына]] уйгъунлыгъыны дикъкъаткъа алып, буны япмагъа истегенинъизни тасдыкъланъыз.',
 'actioncomplete' => 'Арекет тамамланды.',
@@ -1468,7 +1468,7 @@ $UNWATCHURL
 'protect_expiry_old' => 'Битиш заманы кечмиштедир.',
 'protect-text' => "'''[[$1]]''' саифесининъ къорчалав севиесини мындан корип олур ве денъиштирип оласынъыз.",
 'protect-locked-access' => "Къулланыджы эсабынъыз саифенинъ къорчалав севиелерини денъиштирме еткисине саип дегиль. '''$1''' саифесининъ шимдики сазламалары шуларыдыр:",
-'protect-cascadeon' => 'Бу саифе шимди къорчалав алтындадыр, чюнки ашагъыда джедвелленген ве каскадлы къорчалав алтындаки {{PLURAL:$1|1|$1}} саифеде къулланыла.
+'protect-cascadeon' => 'Бу саифе шимди къорчалав алтындадыр, чюнки ашагъыда джедвелленген ве каскадлы къорчалав алтындаки {{PLURAL:$1|1=1|$1}} саифеде къулланыла.
 Бу саифенинъ къорчалав севиесини денъиштирип оласынъыз, амма каскадлы къорчалав тесир этильмейджек.',
 'protect-default' => 'Бутюн къулланыджыларгъа рухсет бер',
 'protect-fallback' => 'Тек «$1» рухсети олгъан къулланыджылар ичюн',
@@ -1500,7 +1500,7 @@ $UNWATCHURL
 'undeletebtn' => 'Кери кетир!',
 'undeletelink' => 'косьтер/кери кетир',
 'undeletecomment' => 'Себеп:',
-'undeletedrevisions' => 'Топлам {{PLURAL:$1|1 къайд|$1 къайд}} кери кетирильди.',
+'undeletedrevisions' => 'Топлам {{PLURAL:$1|1=1 къайд|$1 къайд}} кери кетирильди.',
 'undelete-header' => 'Кеченлерде ёкъ этильген саифелерни корьмек ичюн [[Special:Log/delete|ёкъ этюв журналына]] бакъынъыз.',
 
 # Namespace form on various pages
@@ -1537,8 +1537,8 @@ $UNWATCHURL
 'isredirect' => 'Ёллама саифеси',
 'istemplate' => 'кирсетильме',
 'isimage' => 'файл багълантысы',
-'whatlinkshere-prev' => '{{PLURAL:$1|эвельки|эвельки $1}}',
-'whatlinkshere-next' => '{{PLURAL:$1|сонъраки|сонъраки $1}}',
+'whatlinkshere-prev' => '{{PLURAL:$1|1=эвельки|эвельки $1}}',
+'whatlinkshere-next' => '{{PLURAL:$1|1=сонъраки|сонъраки $1}}',
 'whatlinkshere-links' => '← багълантылар',
 'whatlinkshere-hideredirs' => 'ёлламаларны $1',
 'whatlinkshere-hidetrans' => 'чапраз къошмаларны $1',
@@ -1621,8 +1621,8 @@ $UNWATCHURL
 'movepage-page-unmoved' => '$1 саифесининъ ады $2 оларакъ денъиштирилип оламай.',
 'movelogpage' => 'Ад денъиштирильмелери журналы',
 'movelogpagetext' => 'Ашагъыда булунгъан джедвель ады денъиштирильген саифелерни косьтере',
-'movesubpage' => '{{PLURAL:$1|Алт саифе|Алт саифелер}}',
-'movesubpagetext' => 'Бу саифенинъ ашагъыда косьтерильген $1 {{PLURAL:$1|алт саифеси|алт саифеси}} бар.',
+'movesubpage' => '{{PLURAL:$1|1=Алт саифе|Алт саифелер}}',
+'movesubpagetext' => 'Бу саифенинъ ашагъыда косьтерильген $1 {{PLURAL:$1|1=алт саифеси|алт саифеси}} бар.',
 'movenosubpage' => 'Бу саифенинъ алт саифеси ёкъ.',
 'movereason' => 'Себеп',
 'revertmove' => 'Кериге ал',
@@ -1735,14 +1735,14 @@ MediaWiki интерфейсининъ чешит тиллерге терджи
 'notacceptable' => 'Вики-сервер браузеринъиз окъуп оладжакъ форматында малюмат бералмай.',
 
 # Attribution
-'anonymous' => '{{SITENAME}} сайтынынъ  {{PLURAL:$1|1|$1}} къайдсыз (аноним) къулланыджысы',
+'anonymous' => '{{SITENAME}} сайтынынъ  {{PLURAL:$1|1=1|$1}} къайдсыз (аноним) къулланыджысы',
 'siteuser' => '{{SITENAME}} сайтынынъ къулланыджысы $1',
 'anonuser' => '{{SITENAME}} сайтынынъ къайдсыз (аноним) къулланыджысы $1',
 'lastmodifiedatby' => 'Саифе энъ сонъки $3 тарафындан $1, $2 тарихында денъиштирильди.',
 'othercontribs' => 'Бу саифени яраткъанда иштирак эткен: $1.',
 'others' => 'дигерлери',
-'siteusers' => '{{SITENAME}} сайтынынъ {{PLURAL:$2|1|$2}} къулланыджысы $1',
-'anonusers' => '{{SITENAME}} сайтынынъ къайдсыз (аноним) {{PLURAL:$2|къулланыджысы|къулланыджылары}} $1',
+'siteusers' => '{{SITENAME}} сайтынынъ {{PLURAL:$2|1=1|$2}} къулланыджысы $1',
+'anonusers' => '{{SITENAME}} сайтынынъ къайдсыз (аноним) {{PLURAL:$2|1=къулланыджысы|къулланыджылары}} $1',
 'creditspage' => 'Тешеккюрлер',
 'nocredits' => 'Бу саифе ичюн къулланыджылар джедвели ёкъ.',
 
@@ -1778,7 +1778,7 @@ MediaWiki интерфейсининъ чешит тиллерге терджи
 Файлны ишлетип ишлетим системанъызгъа зарар кетирип олурсынъыз.",
 'imagemaxsize' => "Ресим ольчюси сынъыры:<br />''(файл малюмат саифелери ичюн)''",
 'thumbsize' => 'Кичик ольчю:',
-'widthheightpage' => '$1 × $2, {{PLURAL:$3|1|$3}} саифе',
+'widthheightpage' => '$1 × $2, {{PLURAL:$3|1=1|$3}} саифе',
 'file-info' => 'файл буюклиги: $1, MIME чешити: $2',
 'file-info-size' => '$1 × $2 пиксель, файл буюклиги: $3, MIME чешити: $4',
 'file-nohires' => 'Даа юксек айырымлылыкъкъа саип версия ёкъ.',
@@ -1787,7 +1787,7 @@ MediaWiki интерфейсининъ чешит тиллерге терджи
 
 # Special:NewFiles
 'newimages' => 'Янъы ресимлер',
-'imagelisttext' => "Ашагъыдаки джедвельде $2 коре тизильген {{PLURAL:$1|'''1''' файлдыр|'''$1''' файлдыр}}.",
+'imagelisttext' => "Ашагъыдаки джедвельде $2 коре тизильген {{PLURAL:$1|1='''1''' файлдыр|'''$1''' файлдыр}}.",
 'newimages-summary' => 'Бу махсус саифе сонъки юкленген файлларны косьтере.',
 'newimages-legend' => 'Сюзгюч',
 'newimages-label' => 'Файл ады (я да онынъ бир парчасы):',
@@ -1969,18 +1969,18 @@ $5
 'livepreview-error' => 'Багъланамады: $1 «$2». Адий бакъып чыкъувны къулланып бакъынъыз.',
 
 # Friendlier slave lag warnings
-'lag-warn-normal' => '{{PLURAL:$1|1|$1}} саниеден эвель ве ондан сонъ япылгъан денъишикликлер бу джедвельде косьтерильмейип олалар.',
-'lag-warn-high' => 'Малюмат базасындаки проблемалар себебинден {{PLURAL:$1|1|$1}} саниеден эвель ве ондан сонъ япылгъан денъишикликлер бу джедвельде косьтерильмейип олалар.',
+'lag-warn-normal' => '{{PLURAL:$1|1=1|$1}} саниеден эвель ве ондан сонъ япылгъан денъишикликлер бу джедвельде косьтерильмейип олалар.',
+'lag-warn-high' => 'Малюмат базасындаки проблемалар себебинден {{PLURAL:$1|1=1|$1}} саниеден эвель ве ондан сонъ япылгъан денъишикликлер бу джедвельде косьтерильмейип олалар.',
 
 # Watchlist editor
-'watchlistedit-numitems' => 'Музакере саифесини эсапкъа алмайып, козетюв джедвелинъизде {{PLURAL:$1|1|$1}} саифе бар.',
+'watchlistedit-numitems' => 'Музакере саифесини эсапкъа алмайып, козетюв джедвелинъизде {{PLURAL:$1|1=1|$1}} саифе бар.',
 'watchlistedit-noitems' => 'Козетюв джедвелинъизде ич бир саифе ёкъ.',
 'watchlistedit-normal-title' => 'Козетюв джевелинъизни денъиштиреятасыз',
 'watchlistedit-normal-legend' => 'Козетюв джедвелинден саифе ёкъ этилюви',
 'watchlistedit-normal-explain' => 'Козетюв джедвелинъиздеки саифелер ашагъыда косьтерильген.
 Бир саифе козетюв джедвелинден ёкъ этмек ичюн оны бельгилеп «{{int:Watchlistedit-normal-submit}}» дёгмесине басынъыз. Козетюв джедвелинъизни [[Special:EditWatchlist/raw|метин оларакъ да]] денъиштирип оласынъыз.',
 'watchlistedit-normal-submit' => 'Сайлангъан саифелерни козетюв джевелинден ёкъ эт',
-'watchlistedit-normal-done' => '{{PLURAL:$1|1 саифе|$1 саифе}} козетюв джедвелинъизден ёкъ этильди:',
+'watchlistedit-normal-done' => '{{PLURAL:$1|1=1 саифе|$1 саифе}} козетюв джедвелинъизден ёкъ этильди:',
 'watchlistedit-raw-title' => 'Козетюв джевелинъизни денъиштиреятасыз',
 'watchlistedit-raw-legend' => 'Козетюв джедвелини денъиштирилюви',
 'watchlistedit-raw-explain' => 'Козетюв джедвелинъиздеки саифелер ашагъыда косьтерильген. Эр сатырда бир саифе серлевасы олмакъ узере, серлеваларны кирсетип я да ёкъ этип джедвельни денъиштирип оласынъыз.
@@ -1989,8 +1989,8 @@ $5
 'watchlistedit-raw-titles' => 'Саифелер:',
 'watchlistedit-raw-submit' => 'Козетюв джедвелини янъарт',
 'watchlistedit-raw-done' => 'Козетюв джедвелинъиз янъарды.',
-'watchlistedit-raw-added' => '{{PLURAL:$1|1 саифе|$1 саифе}} иляве олунды:',
-'watchlistedit-raw-removed' => '{{PLURAL:$1|1 саифе|$1 саифе}} ёкъ этильди:',
+'watchlistedit-raw-added' => '{{PLURAL:$1|1=1 саифе|$1 саифе}} иляве олунды:',
+'watchlistedit-raw-removed' => '{{PLURAL:$1|1=1 саифе|$1 саифе}} ёкъ этильди:',
 
 # Watchlist editing tools
 'watchlisttools-view' => 'Денъишикликлерни косьтер',
@@ -2009,7 +2009,7 @@ $5
 'fileduplicatesearch-submit' => 'Къыдыр',
 'fileduplicatesearch-info' => '$1 × $2 пиксел<br />Файл буюклиги: $3<br />MIME чешити: $4',
 'fileduplicatesearch-result-1' => '«$1» файлынынъ ич копиясы ёкъ.',
-'fileduplicatesearch-result-n' => '«$1» файлынынъ {{PLURAL:$2|бир копиясы|$2 копиясы}} бар.',
+'fileduplicatesearch-result-n' => '«$1» файлынынъ {{PLURAL:$2|1=бир копиясы|$2 копиясы}} бар.',
 
 # Special:SpecialPages
 'specialpages' => 'Махсус саифелер',
index bdcff04..b1582da 100644 (file)
@@ -1227,6 +1227,9 @@ Tyto argumenty byly vynechány.',
 '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]].
 
+$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]].
+
 $3 uvádí toto zdůvodnění: ''$2''",
 
 # History pages
@@ -1757,6 +1760,7 @@ Vaše adresa v takovém případě není prozrazena.',
 'recentchanges-label-bot' => 'Tuto editaci provedl bot',
 'recentchanges-label-unpatrolled' => 'Tato změna dosud nebyla prověřena',
 'recentchanges-label-plusminus' => 'Velikost stránky se změnila o tolik bajtů',
+'recentchanges-legend-heading' => "'''Legenda:'''",
 'recentchanges-legend-newpage' => '(vizte též [[Special:NewPages|seznam nových stránek]])',
 'recentchanges-legend-plusminus' => "(''±123'')",
 'rcnotefrom' => 'Níže {{PLURAL:$1|je|jsou|je}} nejvýše <b>$1</b> {{PLURAL:$1|změna|změny|změn}} od <b>$2</b>.',
@@ -2525,6 +2529,7 @@ Rady a kontakt:
 'delete-edit-reasonlist' => 'Editovat důvody smazání',
 'delete-toobig' => 'Tato stránka má velkou historii editací, přes $1 {{plural:$1|verzi|verze|verzí}}. Mazání takových stránek je omezeno, aby se předešlo nechtěnému narušení {{grammar:2sg|{{SITENAME}}}}.',
 'delete-warning-toobig' => 'Tato stránka má velkou historii editací, přes $1 {{plural:$1|verzi|verze|verzí}}. Mazání takových stránek může narušit databázové operace {{grammar:2sg|{{SITENAME}}}}; postupujte opatrně.',
+'deleting-backlinks-warning' => "'''Upozornění:''' Na stránku, kterou se chystáte smazat, odkazují jiné stránky.",
 
 # Rollback
 'rollback' => 'Vrátit zpět editace',
@@ -4009,13 +4014,14 @@ MediaWiki je distribuována v naději, že bude užitečná, avšak BEZ JAKÉKOL
 'version-entrypoints-scriptpath' => '[https://www.mediawiki.org/wiki/Manual:$wgScriptPath Cesta ke skriptům]',
 
 # Special:Redirect
-'redirect' => 'Přesměrování podle souboru, uživatele nebo ID revize',
+'redirect' => 'Přesměrování podle souboru, uživatele, stránky nebo ID revize',
 '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 revize) nebo uživatele (podle číselného uživatelského ID). Použití: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revision/328429]] nebo [[{{#Special:Redirect}}/user/101]].',
+'redirect-summary' => 'Tato speciální stránka přesměrovává na soubor (podle názvu), stránku (podle ID stránky nebo revize) nebo uživatele (podle číselného uživatelského ID). Použití: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]] nebo [[{{#Special:Redirect}}/user/101]].',
 'redirect-submit' => 'Přejít',
 'redirect-lookup' => 'Najít:',
 'redirect-value' => 'Hodnota:',
 'redirect-user' => 'Uživatelské ID',
+'redirect-page' => 'ID stránky',
 'redirect-revision' => 'Revizi stránky',
 'redirect-file' => 'Jméno souboru',
 'redirect-not-exists' => 'Hodnota nenalezena',
@@ -4258,10 +4264,12 @@ V podstatě rozbalí prakticky všechno v dvojitých složených závorkách.',
 'expand_templates_input' => 'Vstupní text:',
 'expand_templates_output' => 'Výstup',
 'expand_templates_xml_output' => 'Výstup XML',
+'expand_templates_html_output' => 'Surové výsledné HTML',
 'expand_templates_ok' => 'OK',
 'expand_templates_remove_comments' => 'Odstranit komentáře',
 'expand_templates_remove_nowiki' => 'Potlačit ve výsledku značky <nowiki>',
 'expand_templates_generate_xml' => 'Zobrazit syntaktický strom v XML',
+'expand_templates_generate_rawhtml' => 'Zobrazit surové HTML',
 'expand_templates_preview' => 'Náhled',
 
 );
index 3256569..e86553c 100644 (file)
@@ -546,7 +546,7 @@ $messages = array(
 'recentchanges-summary' => 'с҄ьдє послѣдьнѩ мѣнꙑ сѥѩ викиопꙑтьствованиꙗ видѣти можєши',
 'recentchanges-label-newpage' => 'по сѥи мѣнꙑ нова страница сътворѥна ѥстъ',
 'recentchanges-label-minor' => 'малаꙗ мѣна',
-'recentchanges-label-bot' => 'сѭ мѣноу аѵтоматъ сътворихъ',
+'recentchanges-label-bot' => 'сѭ мѣноу аѵтоматъ сътворилъ',
 'rcshowhideminor' => '$1 малꙑ мѣнꙑ',
 'rcshowhidebots' => '$1 аѵтоматъ',
 'rcshowhideliu' => '$1 польꙃєватєлъ · ѩжє съꙁижьдє сѥ мѣсто · мѣнꙑ',
index 342fecd..4d52199 100644 (file)
@@ -57,7 +57,7 @@ $messages = array(
 'tog-editsection' => '«Тӳрлет» ссылкăна кашни пайра кăтартмалла',
 'tog-editsectiononrightclick' => 'Шăшин сылтăм пускăчне пуссан статья пайне тӳрлетмелле (JavaScript)',
 'tog-showtoc' => 'Тупмаллине кăтартмалла (3, е ытларах заголовок пулсан)',
-'tog-rememberpassword' => 'Мана ку компьютер çинче астуса хăвармалла (for a maximum of $1 {{PLURAL:$1|day|days}})',
+'tog-rememberpassword' => 'Мана ку компьютер çинче астуса хăвармалла (for a maximum of $1 {{PLURAL:$1|1=day|days}})',
 'tog-watchcreations' => 'Эпĕ тунă страницăсене сăнав списокне кĕртмелле',
 'tog-watchdefault' => 'Тӳрлетнĕ страницăсене сăнав списокне кĕртмелле',
 'tog-watchmoves' => 'Страница ятне эпĕ улаштарсан вĕсене сăнав списокне кĕртмелле',
@@ -138,18 +138,18 @@ $messages = array(
 'dec' => 'раш',
 
 # Categories related messages
-'pagecategories' => 'Категорисем',
+'pagecategories' => '{{PLURAL:$1|1=Категори|Категорисем}}',
 'category_header' => '«$1» категорири статьясем',
 'subcategories' => 'Подкатегорисем',
 'category-media-header' => '«$1» категорири файлсем',
 'category-empty' => "''Хальхи вăхăтра ку категори пушă.''",
-'hidden-categories' => '{{PLURAL:$1|Пытарнă категори|Пытарнă категорисем}}',
+'hidden-categories' => '{{PLURAL:$1|1=Пытарнă категори|Пытарнă категорисем}}',
 'hidden-category-category' => 'Пытарнă категорисем',
 'category-subcat-count' => '{{PLURAL:$2|Ку категоринче çак айри категори пур.|$2-ран(-рен,-тан,-тен) {{PLURAL:$1|$1 айри категорине кăтартнă|$1 айри категорине кăтартнă|$1 айри категорине кăтартнă}}.}}',
 'category-subcat-count-limited' => 'Ку категоринче {{PLURAL:$1|$1 айри категори|$1 айри категори|$1 айри категори}}.',
-'category-article-count' => '{{PLURAL:$2|Ку категоринче пĕр страница кăна.|Ку категорири $2 страницăран $1 кăтартнă.}}',
+'category-article-count' => '{{PLURAL:$2|1=Ку категоринче пĕр страница кăна.|Ку категорири $2 страницăран $1 кăтартнă.}}',
 'category-article-count-limited' => 'Ку категоринче $1 страница.',
-'category-file-count' => '{{PLURAL:$2|Ку категоринче пĕр файл кăна.|Ку категоринчи $2 файлтан $1 кăтартнă.}}',
+'category-file-count' => '{{PLURAL:$2|1=Ку категоринче пĕр файл кăна.|Ку категоринчи $2 файлтан $1 кăтартнă.}}',
 'category-file-count-limited' => 'Ку категоринче $1 файл.',
 'listingcontinuesabbrev' => '(малалли)',
 
@@ -159,7 +159,7 @@ $messages = array(
 'cancel' => 'Пăрахăçла',
 'moredotdotdot' => 'Малалла…',
 'mypage' => 'Ман страница',
-'mytalk' => 'Ð\9cан ÐºÐ°Ð½Ð°Ñ\88лÑ\83 Ñ\81Ñ\82Ñ\80аниÑ\86и',
+'mytalk' => 'СӳÑ\82Ñ\81е Ñ\8fвни',
 'anontalk' => 'Çак IP-адреса сӳтсе явни',
 'navigation' => 'Меню',
 'and' => '&#32;тата',
@@ -219,7 +219,7 @@ $messages = array(
 'articlepage' => 'Статьяна пăх',
 'talk' => 'Сӳтсе явни',
 'views' => 'Пурĕ пăхнă',
-'toolbox' => 'Ĕç хатĕрĕсем',
+'toolbox' => 'Хатĕрсем',
 'userpage' => 'Хутшăнакан страницине пăх',
 'projectpage' => 'Проект страницине пăх',
 'imagepage' => 'Ӳкерчĕк страницине пăх',
@@ -292,7 +292,7 @@ $messages = array(
 'nstab-main' => 'Статья',
 'nstab-user' => 'Хутшăнакан страници',
 'nstab-media' => 'Мультимеди',
-'nstab-special' => 'Ятарлă',
+'nstab-special' => 'Ятарлă страницă',
 'nstab-project' => 'Проект çинчен',
 'nstab-image' => 'Файл',
 'nstab-mediawiki' => 'Пĕлтерӳ',
@@ -337,8 +337,8 @@ $1',
 'cannotdelete' => 'Эсир кăтартнă страницăна е файла кăларса пăрахаймастпăр. Ăна, тен, урăххи кăларса пăрахнă?',
 'badtitle' => 'Ку ят килĕшмест',
 'badtitletext' => 'Эсир кăтартнă статья ячĕ тĕрĕс мар, пушă, е чĕлхе хушшинчипе интервики ячĕ тĕрĕс мар. Ятра усă курма юраман паллăсене çырнинче пулма пултарать.',
-'perfcached' => 'Ку даннăйсене кэшран илнĕ, çавна май унта юлашки улшăнусем палăрмасăр пултараççĕ. A maximum of {{PLURAL:$1|one result is|$1 results are}} available in the cache.',
-'perfcachedts' => 'Ку даннăйсене кэшран илнĕ, юлашки хут вăл $1 вăхăтра çĕнелнĕ. A maximum of {{PLURAL:$4|one result is|$4 results are}} available in the cache.',
+'perfcached' => 'Ку даннăйсене кэшран илнĕ, çавна май унта юлашки улшăнусем палăрмасăр пултараççĕ. A maximum of {{PLURAL:$1|1=one result is|$1 results are}} available in the cache.',
+'perfcachedts' => 'Ку даннăйсене кэшран илнĕ, юлашки хут вăл $1 вăхăтра çĕнелнĕ. A maximum of {{PLURAL:$4|1=one result is|$4 results are}} available in the cache.',
 'querypage-no-updates' => 'Ку страницăна хальхи вăхăтра улăштарма чарнă. Ку даннăйсене хальхи вăхăтра çĕнетме май çук.',
 'viewsource' => 'Курăм',
 'actionthrottled' => 'Хăвăртлăха чакарнă',
@@ -364,7 +364,7 @@ $1',
 'yourname' => 'Сирĕн ят',
 'yourpassword' => 'Вăрттăн сăмах:',
 'yourpasswordagain' => 'Вăрттăн сăмах тепре çырăр:',
-'remembermypassword' => 'Ку компьютер çинче мана астуса хăвармалла (for a maximum of $1 {{PLURAL:$1|day|days}})',
+'remembermypassword' => 'Ку компьютер çинче мана астуса хăвармалла (for a maximum of $1 {{PLURAL:$1|1=day|days}})',
 'yourdomainname' => 'Сирĕн домен',
 'login' => 'Сайта кĕр',
 'nav-login-createaccount' => 'Сайта кĕр / регистрацилен',
@@ -557,14 +557,14 @@ $1 хутшăнакан патне, е ытти [[{{MediaWiki:Grouppage-sysop}}|
 'textmatches' => 'Статьясенчи текст пĕрпеклĕхĕ',
 'prevn' => 'малтанхи {{PLURAL:$1|$1}}',
 'nextn' => 'малалли {{PLURAL:$1|$1}}',
-'search-result-size' => '$1 ({{PLURAL:$2|1 сăмах|$2 сăмах}})',
+'search-result-size' => '$1 ({{PLURAL:$2|1=1 сăмах|$2 сăмах}})',
 'showingresults' => 'Аяларах эсир <b>#$2</b> пуçласа кăтартнă <b>$1</b> йĕркене куратăр.',
-'showingresultsheader' => "{{PLURAL:$5|Результат '''$1'''  '''$3''' хушшинчен|Результатсем'''$1 - $2''' '''$3''' хушшинчен}}  '''$4''' валли",
+'showingresultsheader' => "{{PLURAL:$5|1=Результат '''$1'''  '''$3''' хушшинчен|Результатсем'''$1 - $2''' '''$3''' хушшинчен}}  '''$4''' валли",
 'powersearch-legend' => 'Анлă шырав',
 
 # Preferences page
 'preferences' => 'Ĕнерлевсем',
-'mypreferences' => 'Ман ĕнерлевсем',
+'mypreferences' => 'Ĕнерлев',
 'prefs-edits' => 'Тӳрлетӳсен шучĕ:',
 'prefs-skin' => 'Ерешленӳ',
 'skin-preview' => 'Малтанхи курăну',
@@ -776,8 +776,8 @@ $1 хутшăнакан патне, е ытти [[{{MediaWiki:Grouppage-sysop}}|
 'fewestrevisions' => 'Сахал тӳрлетнĕ статьясем',
 
 # Miscellaneous special pages
-'nbytes' => '$1 {{PLURAL:$1|байт|байт}}',
-'nlinks' => '$1 {{PLURAL:$1|каçă|каçă}}',
+'nbytes' => '$1 {{PLURAL:$1|1=байт|байт}}',
+'nlinks' => '$1 {{PLURAL:$1|1=каçă|каçă}}',
 'nviews' => '$1 хут пăхнă',
 'specialpage-empty' => 'Ку страница пушă',
 'lonelypages' => 'Тăлăх страницăсем',
index 8492f9c..96bb2fa 100644 (file)
@@ -8,6 +8,7 @@
  * @file
  *
  * @author Arwel Parry
+ * @author Cymrodor
  * @author Kaganer
  * @author Lloffiwr
  * @author Malafaya
@@ -139,8 +140,8 @@ $messages = array(
 'tog-minordefault' => 'Marcio pob golygiad fel un bach yn ddiofyn',
 'tog-previewontop' => 'Dangos y rhagolwg cyn y blwch golygu',
 'tog-previewonfirst' => 'Dangos rhagolwg ar y golygiad cyntaf',
-'tog-enotifwatchlistpages' => 'Gyrru e-bost ataf pan fo newid i dudalen neu ffeil ar fy rhestr wylio',
-'tog-enotifusertalkpages' => "Gyrru e-bost ataf fy hunan pan fo newid i'm tudalen sgwrs",
+'tog-enotifwatchlistpages' => 'Anfon e-bost ataf pan fo newid i dudalen neu ffeil ar fy rhestr wylio',
+'tog-enotifusertalkpages' => "Anfon e-bost ataf fy hunan pan fo newid i'm tudalen sgwrs",
 'tog-enotifminoredits' => 'Gyrru e-bost ataf hefyd ar gyfer golygiadau bychain i dudalennau a ffeiliau',
 'tog-enotifrevealaddr' => 'Datguddio fy nghyfeiriad e-bost mewn e-byst hysbysu',
 'tog-shownumberswatching' => "Dangos y nifer o ddefnyddwyr sy'n gwylio",
@@ -845,7 +846,7 @@ Cofiwch bod y tudalennau .css a .js yn defnyddio llythrennau bach, e.e. {{ns:use
 'updated' => '(Diweddariad)',
 'note' => "'''Dalier sylw:'''",
 'previewnote' => "'''Cofiwch taw rhagolwg yw hwn.''' Nid yw eich gwaith wedi ei roi ar gadw eto!",
-'continue-editing' => "Neidier i'r blwch golygu",
+'continue-editing' => "Neidio i'r blwch golygu",
 'previewconflict' => "Mae'r rhagolwg hwn yn dangos y testun yn yr ardal golygu uchaf, fel ag y byddai'n ymddangos petaech yn rhoi'r dudalen ar gadw.",
 'session_fail_preview' => "'''Ymddiheurwn! Methwyd prosesu eich golygiad gan fod rhan o ddata'r sesiwn wedi'i golli. Ceisiwch eto.
 Os digwydd yr un peth eto, ceisiwch [[Special:UserLogout|allgofnodi]] ac yna mewngofnodi eto.'''",
@@ -971,6 +972,9 @@ Cafodd yr argiau hyn eu hepgor.",
 'cantcreateaccount-text' => "Rhwystrwyd y gallu i greu cyfrif ar gyfer y cyfeiriad IP hwn, ('''$1'''), gan [[User:$3|$3]].
 
 Y rheswm a roddwyd dros y bloc gan $3 yw ''$2''.",
+'cantcreateaccount-range-text' => "Gosododd [[User:\$3|\$3]] floc ar agor cyfrifon o gyfeiriadau IP yn yr ystod '''\$1''', sy'n cynnwys eich cyfeiriad IP chi ('''\$4''').
+
+Y rheswm a roddwyd gan \$3 yw \"\$2\"",
 
 # History pages
 'viewpagelogs' => "Dangos logiau'r dudalen hon",
@@ -1227,7 +1231,7 @@ Cofiwch y gall mynegeion Google o gynnwys {{SITENAME}} fod ar ei hôl hi.",
 'prefs-setemail' => 'Gosod cyfeiriad e-bost',
 'prefs-email' => 'E-bostio',
 'prefs-rendering' => 'Ymddangosiad',
-'saveprefs' => 'Cadwer y dewisiadau',
+'saveprefs' => 'Cadw',
 'restoreprefs' => 'Adfer yr holl osodiadau diofyn (ymhob adran)',
 'prefs-editing' => 'Golygu',
 'rows' => 'Rhesi:',
@@ -1316,6 +1320,7 @@ Mae'r wybodaeth hon ar gael i'r cyhoedd.",
 'prefs-tokenwatchlist' => 'Tocyn',
 'prefs-diffs' => "Cymharu golygiadau ('gwahan')",
 'prefs-help-prefershttps' => "Bydd y dewis yma'n cael ei roi ar waith y tro nesaf i chi fewngofnodi.",
+'prefs-tabs-navigation-hint' => "Awgrym: Gallwch ddefnyddio'r allweddellau sy'n saethau i'r chwith neu i'r dde i lywio rhwng y tabiau ar restr y tabiau.",
 
 # User preference: email validation using jQuery
 'email-address-validity-valid' => 'Y cyfeiriad e-bost yn ymddangos yn un dilys',
@@ -1502,13 +1507,14 @@ Mae'r wybodaeth hon ar gael i'r cyhoedd.",
 'recentchanges-label-bot' => 'Golygwyd gan fot',
 'recentchanges-label-unpatrolled' => "Nid yw'r golygiad hwn wedi derbyn ymweliad patrôl eto",
 'recentchanges-label-plusminus' => "Newidiodd maint y dudalen o'r nifer hwn o feitiau",
+'recentchanges-legend-heading' => "'''Allwedd:'''",
 'recentchanges-legend-newpage' => '(gweler hefyd [[Special:NewPages|restr y tudalennau newydd]])',
 'recentchanges-legend-plusminus' => "(''±123'')",
 'rcnotefrom' => "Isod rhestrir pob newid ers '''$2''' (hyd at '''$1''' ohonynt).",
 'rclistfrom' => 'Dangos newidiadau newydd, gan ddechrau ers $1',
 'rcshowhideminor' => '$1 golygiadau bychain',
 'rcshowhidebots' => '$1 botiau',
-'rcshowhideliu' => '$1 defnyddwyr mewngofnodedig',
+'rcshowhideliu' => '$1 o ddefnyddwyr cofrestredig',
 'rcshowhideanons' => '$1 defnyddwyr anhysbys',
 'rcshowhidepatr' => '$1 golygiadau wedi derbyn ymweliad patrôl',
 'rcshowhidemine' => '$1 fy ngolygiadau',
@@ -2271,6 +2277,7 @@ Gwelwch y $2 am gofnod o\'r dileuon diweddar.',
 Cyfyngwyd ar y gallu i ddileu tudalennau sydd wedi eu golygu cymaint â hyn, er mwyn osgoi amharu ar weithrediad databas {{SITENAME}} yn ddamweiniol.",
 'delete-warning-toobig' => "Cafwyd dros $1 {{PLURAL:$1|o olygiadau}} i'r dudalen hon.
 Gallai dileu tudalen, gyda hanes golygu cymaint â hyn iddi, beri dryswch i weithrediadau'r databas ar {{SITENAME}}; ewch ati'n ofalus.",
+'deleting-backlinks-warning' => "'''Rhybudd:''' Mae tudalennau eraill yn cysylltu i'r dudalen yr ydych ar fin ei dileu.",
 
 # Rollback
 'rollback' => 'Gwrthdroi golygiadau',
@@ -2893,7 +2900,7 @@ Mae ffolder dros dro yn eisiau.',
 'tooltip-rollback' => "Yn troi golygiad(au) y defnyddiwr diwethaf i'r dudalen hon yn ôl gydag un clic.",
 'tooltip-undo' => 'Mae "dadwneud" yn troi\'r golygiad hwn yn ôl ac yn dangos rhagolwg o\'r golygiad adferedig.
 Gellir ychwanegu rheswm dros y dadwneud yn y crynodeb.',
-'tooltip-preferences-save' => 'Rhodder y dewisiadau ar gadw',
+'tooltip-preferences-save' => "Cadw'r dewisiadau",
 'tooltip-summary' => 'Rhowch grynodeb byr',
 'interlanguage-link-title' => '$1 - $2',
 
@@ -3582,6 +3589,7 @@ Cadarnhewch eich bod chi wir am ail-greu'r dudalen.",
 'imgmultigoto' => "Mynd i'r dudalen $1",
 
 # Language selector for translatable SVGs
+'img-lang-default' => '(diofyn)',
 'img-lang-info' => "Cynhyrchu'r ddelwedd yn yr iaith $1. $2",
 'img-lang-go' => 'Cynhyrcher',
 
@@ -3680,15 +3688,16 @@ Dylech fod wedi derbyn [{{SERVER}}{{SCRIPTPATH}}/COPYING gopi o GNU General Publ
 'version-entrypoints-header-url' => 'URL',
 
 # Special:Redirect
-'redirect' => 'Ailgyfeirio yn ôl enw ffeil, ID defnyddiwr neu ID diwygiad tudalen',
+'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 at dudalen defnyddiwr (o roi rhif ID y defnyddiwr).
+'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).
 Defnydd: 
-[[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revision/328429]], neu [[{{#Special:Redirect}}/user/101]].",
+[[{{#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:',
 'redirect-value' => 'Chwilio am:',
 'redirect-user' => 'ID defnyddwyr',
+'redirect-page' => 'ID tudalennau',
 'redirect-revision' => 'Rhifau diwygiadau tudalennau',
 'redirect-file' => 'Enwau ffeiliau',
 'redirect-not-exists' => "Heb lwyddo i'w ganfod",
@@ -3921,12 +3930,15 @@ Defnydd:
 
 # Special:ExpandTemplates
 'expandtemplates' => "Ehangu'r nodynnau",
+'expand_templates_title' => 'Teitl y cyd-destun, ar gyfer {{FULLPAGENAME}}, etc.:',
 'expand_templates_input' => 'Cynnwys y mewnbwn:',
 'expand_templates_output' => 'Y canlyniad',
 'expand_templates_xml_output' => 'Yr allbwn XML',
+'expand_templates_html_output' => 'Allbwn HTML crai',
 'expand_templates_ok' => 'Iawn',
 'expand_templates_remove_comments' => 'Peidio â dangos sylwadau',
 'expand_templates_remove_nowiki' => "Cuddio'r tagiau <nowiki> wrth ehangu",
+'expand_templates_generate_rawhtml' => 'Dangos HTML crai',
 'expand_templates_preview' => 'Rhagolwg',
 
 );
index 75397cd..1d1205e 100644 (file)
@@ -207,7 +207,7 @@ $messages = array(
 'tog-editsection' => 'Redigér afsnit ved hjælp af [redigér]-henvisninger',
 'tog-editsectiononrightclick' => 'Redigér afsnit ved at højreklikke på deres titler',
 'tog-showtoc' => 'Vis indholdsfortegnelse (på sider med mere end tre afsnit)',
-'tog-rememberpassword' => 'Husk mit login i denne browser (højst $1 {{PLURAL:$1|dag|dage}})',
+'tog-rememberpassword' => 'Husk mig i denne browser (i højst $1 {{PLURAL:$1|dag|dage}})',
 'tog-watchcreations' => 'Tilføj sider, jeg opretter, og filer, jeg lægger op, til min overvågningsliste',
 'tog-watchdefault' => 'Tilføj sider og filer, jeg redigerer, til min overvågningsliste',
 'tog-watchmoves' => 'Tilføj sider og filer, jeg flytter, til min overvågningsliste',
@@ -559,9 +559,9 @@ Den kan være blevet slettet af en anden.',
 'delete-hook-aborted' => 'Sletningen blev afbrudt af en programfunktion.
 Der var ikke nogen forklaring.',
 'no-null-revision' => 'Kunne ikke oprette nye tom revision for side "$1"',
-'badtitle' => 'Forkert titel',
-'badtitletext' => 'Den ønskede sides titel var ikke tilladt, tom eller siden er forkert henvist fra en {{SITENAME}} på et andet sprog.
-Den kan indeholde et eller flere tegn, som ikke kan anvendes i titler.',
+'badtitle' => 'Ugyldig titel',
+'badtitletext' => 'Den ønskede sides titel var ikke tilladt, tom eller siden er forkert henvist fra {{SITENAME}} på et andet sprog.
+Den kan indeholde et eller flere tegn, som ikke  anvendes i titler.',
 'perfcached' => 'Følgende data er gemt i cachen, der muligvis ikke er helt opdateret. Der gemmes højst {{PLURAL:$1|ét resultat|$1 resultater}} i cachen.',
 'perfcachedts' => 'Disse data stammer fra cachen, som senest blev opdateret $1. Der gemmes højst {{PLURAL:$4|ét resultat|$4 resultater}} i cachen.',
 'querypage-no-updates' => "'''Opdateringer til denne side er deaktiveret for øjeblikket. Dataene bliver indtil videre ikke fornyet.'''",
@@ -704,7 +704,7 @@ kan du bare ignorere denne e-mail og fortsætte med at bruge din gamle adgangsko
 'noemailcreate' => 'Du skal angive en gyldig e-mailadresse',
 'passwordsent' => 'En ny adgangskode er sendt til e-mailadressen, som er registreret for "$1".
 Du bør logge på og ændre din adgangskode straks efter du har modtaget e-mailen.',
-'blocked-mailpassword' => 'Din IP-adresse er spærret for ændring af sider. For at forhindre misbrug, er det heller ikke muligt, at bestille en ny adgangskode.',
+'blocked-mailpassword' => 'Din IP-adresse er blokeret fra at redigere sider. For at forhindre misbrug, er det heller ikke muligt, at bestille en ny adgangskode.',
 'eauthentsent' => 'En e-mailbekræftelse er sendt til den angivne e-mailadresse.
 
 Før flere e-mails bliver sendt til kontoen, skal du følge instruktionerne i e-mailen, for at bekræfte at kontoen rent faktisk er din.',
@@ -853,7 +853,7 @@ Du bør gøre det, hvis du ved et uheld deler dem med nogen, eller hvis din kont
 'missingcommentheader' => "'''Bemærk:''' Du har ikke angivet en overskrift/emne for denne kommentar. Hvis du trykker \"{{int:savearticle}}\" én gang til, gemmes dine ændringer uden overskrift/emne.",
 'summary-preview' => 'Forhåndsvisning af beskrivelsen:',
 'subject-preview' => 'Forhåndsvisning af emnet:',
-'blockedtitle' => 'Brugeren er blokeret',
+'blockedtitle' => 'Du eller din IP-adresse er blokeret',
 'blockedtext' => "'''Dit brugernavn eller din IP-adresse er blevet blokeret.'''
 
 Blokeringen er foretaget af $1.
@@ -886,7 +886,7 @@ Din nuværende IP-adresse er $3, og blokerings-id\'et er #$5.
 Angiv venligst alle de ovenstående detaljer ved eventuelle henvendelser.',
 'blockednoreason' => 'ingen begrundelse givet',
 'whitelistedittext' => 'Du skal $1 for at kunne redigere sider.',
-'confirmedittext' => 'Du skal først bekræfte e-mailadressen, før du kan lave ændringer. Udfyld og bekræft din e-mailadresse i dine [[Special:Preferences|indstillinger]].',
+'confirmedittext' => 'Du skal først bekræfte din e-mailadresse, før du kan redigere sider. Udfyld og bekræft din e-mailadresse i dine [[Special:Preferences|indstillinger]].',
 'nosuchsectiontitle' => 'Kan ikke finde afsnittet',
 'nosuchsectiontext' => 'Du forsøgte at ændre et afsnit der ikke findes. Det kan være flyttet eller slettet, siden du hentede siden.',
 'loginreqtitle' => 'Log på nødvendigt',
@@ -1057,7 +1057,12 @@ Kontroller venligst sammenligningen herunder for at bekræfte at det er hvad du
 
 # Account creation failure
 'cantcreateaccounttitle' => 'Brugerkontoen kan ikke oprettes.',
-'cantcreateaccount-text' => "Oprettelsen af en brugerkonto fra IP-adressen <b>$1</b> er spærret af [[User:$3|$3]]. Årsagen til blokeringen er angivet som ''$2''",
+'cantcreateaccount-text' => "Oprettelsen af en brugerkonto fra IP-adressen ('''$1''') er blevet blokeret af [[User:$3|$3]].
+
+Årsagen til blokeringen er angivet af $3 som ''$2''",
+'cantcreateaccount-range-text' => "Oprettelsen af en brugerkonto fra IP-adresser i intervallet '''$1''', som omfatter din IP-adresse ('''$4'''), er blevet blokeret af [[User:$3|$3]].
+
+Årsagen angivet af $3 er ''$2''",
 
 # History pages
 'viewpagelogs' => 'Vis loglister for denne side',
@@ -1292,7 +1297,7 @@ Detaljer kan findes i [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}
 'prefsnologintext2' => 'Du skal $1 for at ændre brugerindstillinger.',
 'prefs-skin' => 'Udseende',
 'skin-preview' => 'Forhåndsvisning',
-'datedefault' => 'Ingen præference',
+'datedefault' => 'Standard',
 'prefs-beta' => 'Betafunktioner',
 'prefs-datetime' => 'Dato og klokkeslæt',
 'prefs-labs' => 'Testfunktioner',
@@ -1344,7 +1349,7 @@ Hvis andre kender den, man vil være i stand til at læse din overvågningsliste
 'timezoneregion-europe' => 'Europa',
 'timezoneregion-indian' => 'Indiske Ocean',
 'timezoneregion-pacific' => 'Stillehavet',
-'allowemail' => 'Tillad e-mails fra andre brugere',
+'allowemail' => 'Tillad e-mail fra andre brugere',
 'prefs-searchoptions' => 'Søg',
 'prefs-namespaces' => 'Navnerum',
 'defaultns' => 'Ellers søg i disse navnerum:',
@@ -1367,8 +1372,8 @@ Det kan ikke gøres om.',
 'prefs-help-variant' => 'Den sprogvariant eller retskrivning, som du foretrækker, at denne wikis indholdssider vises i.',
 'yournick' => 'Signatur:',
 'prefs-help-signature' => 'Kommentarer på diskussionssider bør signeres med "<nowiki>~~~~</nowiki>" som vil blive konverteret til din signatur og et tidsstempel.',
-'badsig' => 'Syntaksen i underskriften er ugyldig; kontroller venligst den brugte HTML.',
-'badsiglength' => 'Din signatur er for lang. Den må højst indeholde {{PLURAL:$1|}}$1 tegn.',
+'badsig' => 'Syntaksen i signaturen er ugyldig; kontroller venligst den brugte HTML.',
+'badsiglength' => 'Din signatur er for lang. Den må højst indeholde $1 {{PLURAL:$1|tegn}}.',
 'yourgender' => 'Hvordan foretrækker du at blive beskrevet?',
 'gender-unknown' => 'Jeg foretrækker ikke at specificere',
 'gender-male' => 'Han redigerer wikisider',
@@ -1388,7 +1393,7 @@ Hvis du vælger at oplyse dit navn, vil det blive brugt til at tilskrive dig dit
 'prefs-dateformat' => 'Formatering af datoer',
 'prefs-timeoffset' => 'Tidsforskel',
 'prefs-advancedediting' => 'Generelle indstillinger',
-'prefs-editor' => 'Redaktør',
+'prefs-editor' => 'Redigeringsprogrammet',
 'prefs-preview' => 'Forhåndsvisning',
 'prefs-advancedrc' => 'Avancerede indstillinger',
 'prefs-advancedrendering' => 'Avancerede indstillinger',
@@ -1588,8 +1593,9 @@ Vær venlig at gennemse og bekræft dine ændringer.',
 'recentchanges-label-bot' => 'Denne redigering blev udført af en bot',
 'recentchanges-label-unpatrolled' => 'Denne redigering er endnu ikke blevet patruljeret',
 'recentchanges-label-plusminus' => 'Størrelsen på siden blev ændret med dette antal bytes',
+'recentchanges-legend-heading' => "'''Forklaring:'''",
 'recentchanges-legend-newpage' => '(se også [[Special:NewPages|listen over nye sider]])',
-'recentchanges-legend-plusminus' => '("±123")',
+'recentchanges-legend-plusminus' => "(''±123'')",
 'rcnotefrom' => "Nedenfor er op til '''$1''' ændringer siden '''$2''' vist.",
 'rclistfrom' => 'Vis nye ændringer startende fra $1',
 'rcshowhideminor' => '$1 mindre ændringer',
@@ -2032,7 +2038,7 @@ Hver linje indeholder henvisninger til den første og den anden omdirigering, s
 
 'brokenredirects' => 'Defekte omdirigeringer',
 'brokenredirectstext' => 'Følgende omdirigeringer peger på en side der ikke eksisterer:',
-'brokenredirects-edit' => 'rediger',
+'brokenredirects-edit' => 'redigér',
 'brokenredirects-delete' => 'slet',
 
 'withoutinterwiki' => 'Sider uden henvisninger til andre sprog',
@@ -2220,7 +2226,7 @@ Der findes muligvis [[{{MediaWiki:Listgrouprights-helppage}}|yderligere informat
 'emailuser-title-notarget' => 'Send e-mail til en bruger',
 'emailpage' => 'E-mail bruger',
 'emailpagetext' => 'Du kan bruge formularen nedenfor til at sende en e-mail til denne {{GENDER:$1|bruger}}.
-Den e-mail-adresse, du har angivet i [[Special:Preferences|dine indstillinger]], vil dukke op i "fra"-feltet på e-mailen, så modtageren kan svare dig.',
+Den e-mailadresse, du har angivet i [[Special:Preferences|dine indstillinger]], vil dukke op i "fra"-feltet på e-mailen, så modtageren kan svare dig.',
 'usermailererror' => 'E-mail-modulet returnerede en fejl:',
 'defemailsubject' => '{{SITENAME}}-e-mail fra brugeren "$1"',
 'usermaildisabled' => 'Bruger-e-mail deaktiveret',
@@ -2405,7 +2411,8 @@ Se [[Special:ProtectedPages|listen over beskyttede sider]] for listen over sideb
 'protect_expiry_old' => 'Udløbstiden ligger i fortiden.',
 'protect-unchain-permissions' => 'Lås yderligere beskyttelsesindstillinger op',
 'protect-text' => "Her kan beskyttelsesstatus for siden '''$1''' ses og ændres.",
-'protect-locked-blocked' => "Du kan ikke ændre sidens status, da din brugerkonto er spærret. Her er de aktuelle beskyttelsesindstillinger for siden '''„$1“:'''",
+'protect-locked-blocked' => "Du kan ikke ændre sidens status, da din brugerkonto er blokeret.
+Her er de aktuelle beskyttelsesindstillinger for siden '''$1''':",
 'protect-locked-dblock' => "Databasen er spærret, sidebeskyttelsen kan derfor ikke ændres. her er de aktuelle beskyttelsesindstillinger for siden '''„$1“:'''",
 'protect-locked-access' => "Den brugerkonto har ikke de nødvendige rettigheder til at ændre sidebeskyttelsen. Her er de aktuelle beskyttelsesindstillinger for siden '''„$1“:'''",
 'protect-cascadeon' => 'Denne side er del af en nedarvet skrivebeskyttelse. Wen er indeholdt i nedenstående {{PLURAL:$1|side|sider}}, som er skrivebeskyttet med tilvalg af "nedarvende sidebeskyttelse" Sidebeskyttelsen kan ændres for denne side, det påvirker dog ikke kaskadespærringen:',
@@ -2590,7 +2597,9 @@ Angiv en konkret begrundelse herunder (for eksempel med angivelse af sider der h
 'badipaddress' => 'IP-adressen/brugernavnet er udformet forkert eller eksistere ikke.',
 'blockipsuccesssub' => 'Blokeringen er gennemført.',
 'blockipsuccesstext' => '[[Special:Contributions/$1|$1]] er blevet blokeret.<br />
-Se [[Special:BlockList|blokeringslisten]] for alle blokeringer.',
+Se [[Special:BlockList|blokeringslisten]] for alle blokeringer.
+
+[[Bruger:$1|$1]] ([[User talk:$1|diskussion]] | [[Special:Contributions/$1|bidrag]]) er blevet blokeret. <br />Se [[Special:BlockList|blokeringslisten]] for alle blokeringer.',
 'ipb-blockingself' => 'Du er ved at blokere dig selv! Er du sikker på, du vil gøre det?',
 'ipb-confirmhideuser' => 'Du er ved at blokere en bruger med "skjul bruger" aktiveret. Dette vil skjule brugerens navn på alle lister og logposter. Er du sikker på du vil gøre det?',
 'ipb-edit-dropdown' => 'Rediger blokeringsbegrundelser',
@@ -2615,7 +2624,7 @@ Se [[Special:BlockList|blokeringslisten]] for alle blokeringer.',
 'blocklist-target' => 'Mål',
 'blocklist-expiry' => 'Udløber',
 'blocklist-by' => 'Blokerende administrator',
-'blocklist-params' => 'Block parametre',
+'blocklist-params' => 'Parametre for blokeringen',
 'blocklist-reason' => 'Årsag',
 'ipblocklist-submit' => 'Søg',
 'ipblocklist-localblock' => 'Lokal blokering',
@@ -2623,8 +2632,8 @@ Se [[Special:BlockList|blokeringslisten]] for alle blokeringer.',
 'infiniteblock' => 'udløber ikke',
 'expiringblock' => 'udløber $1 $2',
 'anononlyblock' => 'kun anonyme',
-'noautoblockblock' => 'Autoblok deaktiveret',
-'createaccountblock' => 'Oprettelse af brugerkonti spærret',
+'noautoblockblock' => 'automatisk blokering slået fra',
+'createaccountblock' => 'oprettelse af konto deaktiveret',
 'emailblock' => 'e-mail blokeret',
 'blocklist-nousertalk' => 'kan ikke redigere egen diskussionsside',
 'ipblocklist-empty' => 'Blokeringslisten er tom.',
@@ -2637,22 +2646,22 @@ Se [[Special:BlockList|blokeringslisten]] for alle blokeringer.',
 'autoblocker' => 'Du er automatisk blokeret, fordi du deler IP-adresse med "[[User:$1|$1]]".
 Begrundelse: "$2".',
 'blocklogpage' => 'Blokeringslog',
-'blocklog-showlog' => 'Denne bruger er tidligere blevet blokeret.
+'blocklog-showlog' => 'Denne bruger har tidligere været blokeret.
 Blokeringsloggen vises nedenfor som reference:',
 'blocklog-showsuppresslog' => 'Denne bruger har tidligere været blokeret og skjult.
 Skjulningsloggen vises nedenfor som reference:',
-'blocklogentry' => 'blokerede [[$1]] med en varighed på $2 $3',
-'reblock-logentry' => 'ændrede blokeringsindstillinger for [[$1]] med en varighed $2 $3',
+'blocklogentry' => 'blokerede [[$1]] med $2 som udløbstid $3',
+'reblock-logentry' => 'ændrede blokeringsindstillinger for [[$1]] med $2 som udløbstid $3',
 'blocklogtext' => 'Dette er en liste med blokerede brugere og ophævede blokeringer af brugere.
 Automatisk blokerede IP-adresser er ikke anført her.
 Se [[Special:BlockList|blokeringslisten]] for den nuværende liste med aktuelle blokeringer.',
 'unblocklogentry' => 'ophævede blokering af "$1"',
 'block-log-flags-anononly' => 'kun anonyme',
-'block-log-flags-nocreate' => 'Oprettelse af brugerkonti blokeret',
-'block-log-flags-noautoblock' => 'Autoblok deaktiveret',
+'block-log-flags-nocreate' => 'oprettelse af konto deaktiveret',
+'block-log-flags-noautoblock' => 'automatisk blokering slået fra',
 'block-log-flags-noemail' => 'e-mail blokeret',
 'block-log-flags-nousertalk' => 'kan ikke redigere egen diskussionsside',
-'block-log-flags-angry-autoblock' => 'udvidet automatisk blokering slået tilenhanced autoblock enabled',
+'block-log-flags-angry-autoblock' => 'udvidet automatisk blokering slået til',
 'block-log-flags-hiddenname' => 'brugernavnet er skjult',
 'range_block_disabled' => 'Sysop-muligheden for at oprette blokeringsklasser er slået fra.',
 'ipb_expiry_invalid' => 'Udløbstiden er ugyldig.',
@@ -2737,7 +2746,7 @@ I disse tilfælde er du nødt til at flytte eller sammenflette siden manuelt.",
 'movepage-moved' => 'Siden \'\'\'"$1" er flyttet til "$2"\'\'\'',
 'movepage-moved-redirect' => 'En omdirigering er oprettet.',
 'movepage-moved-noredirect' => 'Der oprettedes ikke en omdirigering.',
-'articleexists' => 'En side med det navn eksisterer allerede, eller det
+'articleexists' => 'En side med dette navn eksisterer allerede, eller det
 navn du har valgt er ikke gyldigt. Vælg et andet navn.',
 'cantmove-titleprotected' => 'Du kan ikke omdøbe en side til dette navn. Det nye navn er beskyttet mod oprettelse.',
 'movetalk' => 'Flyt også "diskussionssiden", hvis den eksisterer.',
@@ -2830,7 +2839,7 @@ $2',
 'djvu_no_xml' => 'XML-data kan ikke hentes til DjVu-filen',
 'thumbnail-temp-create' => 'Kunne ikke oprette midlertidig miniaturefil',
 'thumbnail-dest-create' => 'Kunne ikke gemme miniaturebillede til destinationen',
-'thumbnail_invalid_params' => 'Ugyldige thumbnail-parametre',
+'thumbnail_invalid_params' => 'Ugyldige parametre for miniaturebillede',
 'thumbnail_dest_directory' => 'Kataloget kan ikke oprettes.',
 'thumbnail_image-type' => 'Billedtypen understøttes ikke',
 'thumbnail_gd-library' => 'Ufuldstændig konfiguration af GD-biblioteket: funktionen $1 mangler',
@@ -3578,11 +3587,11 @@ Kun indholdet af lister (linjer startende med *) bliver brugt. Den første henvi
 
 # Email address confirmation
 'confirmemail' => 'Bekræft e-mailadresse',
-'confirmemail_noemail' => 'Du har ikke angivet en gyldig e-mailadresse i din [[Special:Preferences|brugerprofil]].',
+'confirmemail_noemail' => 'Du har ikke angivet en gyldig e-mailadresse i dine [[Special:Preferences|indstillinger]].',
 'confirmemail_text' => '{{SITENAME}} kræver, at du bekræfter en e-mailadresse (autentificering), før du kan bruge de udvidede e-mailfunktioner. Med et klik på kontrolfeltet forneden sendes en e-mail til dig. Denne e-mail indeholder et link med en bekræftelseskode. Med et klik på dette link bekræftes, at e-mailadressen er gyldig.',
 'confirmemail_pending' => 'En bekræftelsesmail er allerede sendt til dig. Hvis du først for nylig har oprettet brugerkontoen, vent da et par minutter på denne e-mail, før du bestiller en ny kode.',
 'confirmemail_send' => 'Send bekræftelseskode',
-'confirmemail_sent' => 'Bekræftelses-e-mail afsendt.',
+'confirmemail_sent' => 'Bekræftelsesmail afsendt.',
 'confirmemail_oncreate' => 'En bekræftelseskode er sendt til din e-mailadresse. Denne kode skal ikke bruges til at logge på, den kræves til aktivering af e-mailfunktionerne i Wikien.',
 'confirmemail_sendfailed' => '{{SITENAME}} kunne ikke afsende din bekræftelsesmail.
 Kontroller at e-mailadressen er korrekt.
@@ -3669,7 +3678,7 @@ Bekræft venligst, at du virkelig vil oprette denne side igen.",
 
 # Language selector for translatable SVGs
 'img-lang-default' => '(standardsprog)',
-'img-lang-info' => 'Gengiv dette billede på $1 $2.',
+'img-lang-info' => 'Gengiv dette billede på $1. $2',
 'img-lang-go' => 'Udfør',
 
 # Table pager
@@ -3686,9 +3695,9 @@ Bekræft venligst, at du virkelig vil oprette denne side igen.",
 
 # Auto-summaries
 'autosumm-blank' => 'Tømmer siden for indhold',
-'autosumm-replace' => "Sidens indhold blev erstattet med: '$1'",
+'autosumm-replace' => 'Erstatter sidens indhold med "$1"',
 'autoredircomment' => 'Omdirigering til [[$1]] oprettet',
-'autosumm-new' => "Oprettede siden med '$1'",
+'autosumm-new' => 'Oprettede siden med "$1"',
 
 # Live preview
 'livepreview-loading' => 'Indlæser …',
@@ -3768,13 +3777,14 @@ Du skulle have modtaget [{{SERVER}}{{SCRIPTPATH}}/COPYING en kopi af GNU General
 'version-entrypoints-header-url' => 'URL',
 
 # Special:Redirect
-'redirect' => 'Omdirigering pga. fil, bruger eller udgave ID',
+'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 er angivet) eller en brugerside (hvis et numerisk brugernummer er angivet). Eksempler på brug: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revision/328429]] eller [[{{#Special:Redirect}}/user/101]].",
-'redirect-submit' => 'Kør',
+'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:',
 'redirect-value' => 'Værdi:',
 'redirect-user' => 'Bruger ID',
+'redirect-page' => 'Side-ID',
 'redirect-revision' => 'Sideversion',
 'redirect-file' => 'Filnavn',
 'redirect-not-exists' => 'Værdi ej fundet',
@@ -3868,7 +3878,7 @@ Du skulle have modtaget [{{SERVER}}{{SCRIPTPATH}}/COPYING en kopi af GNU General
 'htmlform-int-toohigh' => 'Den angivne værdi er over maksimumsværdien på $1',
 'htmlform-required' => 'Denne værdi skal angives',
 'htmlform-submit' => 'Gem',
-'htmlform-reset' => 'Annuller ændringer',
+'htmlform-reset' => 'Fortryd ændringer',
 'htmlform-selectorother-other' => 'Anden',
 'htmlform-no' => 'Nej',
 'htmlform-yes' => 'Ja',
@@ -4014,10 +4024,12 @@ Faktisk udfolder den stort set alt i dobbelte tuborgklammer.',
 'expand_templates_input' => 'Inputtekst:',
 'expand_templates_output' => 'Resultat',
 'expand_templates_xml_output' => 'XML-kode',
+'expand_templates_html_output' => 'Rå HTML-output',
 'expand_templates_ok' => 'Udfold',
 'expand_templates_remove_comments' => 'Fjern kommentarer',
 'expand_templates_remove_nowiki' => 'Undertryk <nowiki>-tags i resultatet',
 'expand_templates_generate_xml' => 'Vis analysetræ som XML',
+'expand_templates_generate_rawhtml' => 'Vis rå HTML',
 'expand_templates_preview' => 'Forhåndsvisning',
 
 );
index f0c7036..2e0e0be 100644 (file)
@@ -72,6 +72,7 @@
  * @author W (aka Wuzur)
  * @author Wikifan
  * @author Wikinaut
+ * @author Wnme
  * @author Xqt
  * @author Ziko
  * @author Zylbath
@@ -879,7 +880,7 @@ Vergiss nicht, deine [[Special:Preferences|{{SITENAME}}-Einstellungen]] zu ände
 'helplogin-url' => 'Help:Anmelden',
 'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|Hilfe beim Anmelden]]',
 'userlogin-loggedin' => 'Du bist bereits als {{GENDER:$1|$1}} angemeldet.
-Benutze das unten stehende Formular, um sich unter einem anderen Benutzer anzumelden.',
+Benutze das unten stehende Formular, um dich unter einem anderen Benutzernamen anzumelden.',
 'userlogin-createanother' => 'Ein weiteres Benutzerkonto erstellen',
 'createacct-join' => 'Gib unten deine Informationen ein.',
 'createacct-another-join' => 'Gib unten die Informationen des neuen Benutzerkontos ein.',
@@ -1293,6 +1294,9 @@ Bitte prüfe den Vergleich unten, um sicherzustellen, dass du dies tun möchtest
 'cantcreateaccount-text' => "Die Erstellung eines Benutzerkontos von der IP-Adresse '''($1)''' aus wurde durch [[User:$3|$3]] gesperrt.
 
 Grund der Sperre: ''$2''",
+'cantcreateaccount-range-text' => "Das Erstellen von Benutzerkonten von IP-Adressen im Bereich '''$1''', der deine IP-Adresse ('''$4''') enthält, wurde von [[User:$3|$3]] gesperrt.
+
+Der angegebene Grund von $3 lautet: ''$2''",
 
 # History pages
 'viewpagelogs' => 'Logbücher dieser Seite anzeigen',
@@ -1822,14 +1826,15 @@ Diese Information ist öffentlich.',
 'recentchanges-label-minor' => 'Kleine Änderung',
 'recentchanges-label-bot' => 'Änderung durch einen Bot',
 'recentchanges-label-unpatrolled' => 'Nicht-kontrollierte Änderung',
-'recentchanges-label-plusminus' => 'Die geänderte Seitengröße (Anzahl in Bytes)',
+'recentchanges-label-plusminus' => 'Die Änderung der Seitengröße in Bytes',
+'recentchanges-legend-heading' => "'''Legende:'''",
 'recentchanges-legend-newpage' => '(siehe auch die [[Special:NewPages|Liste neuer Seiten]])',
 'recentchanges-legend-plusminus' => "''(±123)''",
 'rcnotefrom' => "Angezeigt werden die Änderungen seit '''$2''' (max. '''$1''' Einträge).",
 'rclistfrom' => 'Nur Änderungen seit $1 zeigen.',
 'rcshowhideminor' => 'Kleine Änderungen $1',
 'rcshowhidebots' => 'Bots $1',
-'rcshowhideliu' => 'Angemeldete Benutzer $1',
+'rcshowhideliu' => 'Registrierte Benutzer $1',
 'rcshowhideanons' => 'Unangemeldete Benutzer $1',
 'rcshowhidepatr' => 'Kontrollierte Änderungen $1',
 'rcshowhidemine' => 'Eigene Beiträge $1',
@@ -2323,6 +2328,7 @@ Jede Zeile enthält Links zur ersten und zweiten Weiterleitung sowie dem Ziel de
 'protectedpages' => 'Geschützte Seiten',
 'protectedpages-indef' => 'Nur unbeschränkt geschützte Seiten zeigen',
 'protectedpages-cascade' => 'Nur Seiten mit Kaskadenschutz',
+'protectedpages-noredirect' => 'Weiterleitungen ausblenden',
 'protectedpagesempty' => 'Aktuell sind keine Seiten mit diesen Parametern geschützt.',
 'protectedtitles' => 'Geschützte Seitennamen',
 'protectedtitlesempty' => 'Zurzeit sind mit den angegebenen Parametern keine Seiten zur Neuerstellung gesperrt.',
@@ -2589,6 +2595,7 @@ Rückmeldungen und weitere Hilfe: {{canonicalurl:{{MediaWiki:Helppage}}}}',
 'delete-edit-reasonlist' => 'Löschgründe bearbeiten',
 'delete-toobig' => 'Diese Seite hat mit mehr als $1 {{PLURAL:$1|Version|Versionen}} eine sehr lange Versionsgeschichte. Das Löschen solcher Seiten wurde eingeschränkt, um eine versehentliche Überlastung der Server zu verhindern.',
 'delete-warning-toobig' => 'Diese Seite hat mit mehr als $1 {{PLURAL:$1|Version|Versionen}} eine sehr lange Versionsgeschichte. Das Löschen kann zu Störungen im Datenbankbetrieb führen.',
+'deleting-backlinks-warning' => "'''Warnung:''' Es verweisen noch andere Seiten auf die zu löschende Seite.",
 
 # Rollback
 'rollback' => 'Zurücksetzen der Änderungen',
@@ -3927,7 +3934,7 @@ Bitte bestätige, dass du diese Seite wirklich neu erstellen möchten.",
 
 # Language selector for translatable SVGs
 'img-lang-default' => '(Standardsprache)',
-'img-lang-info' => 'Dieses Bild in $1 rendern $2.',
+'img-lang-info' => 'Dieses Bild in $1 rendern. $2',
 'img-lang-go' => 'Los',
 
 # Table pager
@@ -4044,13 +4051,14 @@ Eine [{{SERVER}}{{SCRIPTPATH}}/COPYING Kopie der ''GNU General Public License'']
 'version-entrypoints-scriptpath' => '[https://www.mediawiki.org/wiki/Manual:$wgScriptPath Skriptpfad]',
 
 # Special:Redirect
-'redirect' => 'Weiterleitung auf Benutzerseite, Seitenversion oder Datei',
-'redirect-legend' => 'Weiterleitung auf eine Benutzerseite, Seitenversion oder Datei',
-'redirect-summary' => 'Diese Spezialseite leitet auf eine Benutzerseite (numerische Benutzerkennung angegeben), Seitenversion (Versionskennung angegeben) oder Datei (Dateiname angegeben) weiter. Benutzung: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revision/328429]] oder [[{{#Special:Redirect}}/user/101]].',
+'redirect' => 'Weiterleitung auf Benutzerseite, Seite, Seitenversion oder Datei',
+'redirect-legend' => 'Weiterleitung auf eine Benutzerseite, Seite, Seitenversion oder Datei',
+'redirect-summary' => 'Diese Spezialseite leitet auf eine Benutzerseite (numerische Benutzerkennung angegeben), Seite (Seitenkennung angeben), Seitenversion (Versionskennung angegeben) oder Datei (Dateiname angegeben) weiter. Benutzung: [[{{#Special:Redirect}}/user/101]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]] oder [[{{#Special:Redirect}}/file/Example.jpg]].',
 'redirect-submit' => 'Los',
 'redirect-lookup' => 'Suchen:',
 'redirect-value' => 'Kennung oder Dateiname:',
 'redirect-user' => 'Benutzerseite',
+'redirect-page' => 'Seite',
 'redirect-revision' => 'Seitenversion',
 'redirect-file' => 'Datei',
 'redirect-not-exists' => 'Der Wert wurde nicht gefunden',
@@ -4246,6 +4254,7 @@ Anderenfalls kannst du auch das untenstehende einfache Formular nutzen. Dein Kom
 'api-error-overwrite' => 'Das Überschreiben einer vorhandenen Datei ist nicht erlaubt.',
 'api-error-stashfailed' => 'Interner Fehler: Der Server konnte keine temporäre Datei speichern.',
 'api-error-publishfailed' => 'Interner Fehler: Der Server konnte die temporäre Datei nicht veröffentlichen.',
+'api-error-stasherror' => 'Beim Hochladen der Datei gab es einen Fehler.',
 'api-error-timeout' => 'Der Server hat nicht innerhalb der erwarteten Zeit reagiert.',
 'api-error-unclassified' => 'Ein unbekannter Fehler ist aufgetreten.',
 'api-error-unknown-code' => 'Unbekannter Fehler: „$1“',
@@ -4294,14 +4303,16 @@ Auch Parserfunktionen wie
 <code><nowiki>{{</nowiki>#language:…}}</code> und Variablen wie
 <code><nowiki>{{</nowiki>CURRENTDAY}}</code> werden ausgewertet –
 faktisch alles was in doppelten geschweiften Klammern enthalten ist.',
-'expand_templates_title' => 'Kontexttitel, für {{FULLPAGENAME}} etc.:',
+'expand_templates_title' => 'Kontexttitel für beispielsweise {{FULLPAGENAME}}:',
 'expand_templates_input' => 'Eingabefeld:',
 'expand_templates_output' => 'Ergebnis',
 'expand_templates_xml_output' => 'XML-Ausgabe',
-'expand_templates_ok' => 'Okay',
+'expand_templates_html_output' => 'Roh-HTML-Ausgabe',
+'expand_templates_ok' => 'Vorlage expandieren',
 'expand_templates_remove_comments' => 'Kommentare entfernen',
 'expand_templates_remove_nowiki' => '<nowiki>-Tags in der Ausgabe unterdrücken',
 'expand_templates_generate_xml' => 'XML-Parser-Baum zeigen',
+'expand_templates_generate_rawhtml' => 'Rohes HTML anzeigen',
 'expand_templates_preview' => 'Vorschau',
 
 );
index 5e8c235..7eba4b8 100644 (file)
@@ -403,28 +403,28 @@ $messages = array(
 'sat' => 'Bdé',
 'january' => 'Çele',
 'february' => 'Zemherı',
-'march' => 'Mert',
-'april' => 'Lisan',
+'march' => 'Adar',
+'april' => 'Nisane',
 'may_long' => 'Gúlan',
 'june' => 'Heziran',
 'july' => 'Temuz',
-'august' => 'Ağustos',
+'august' => 'Tebaxe',
 'september' => 'Keşkelun',
-'october' => 'Cetan',
-'november' => 'Kelverdan',
-'december' => 'Gağand',
+'october' => 'Tışrino Verên',
+'november' => 'Tışrino Peyên',
+'december' => 'Kanun',
 'january-gen' => 'Çele',
 'february-gen' => 'Zemherı',
 'march-gen' => 'Mert',
-'april-gen' => 'Lisan',
+'april-gen' => 'Nisane',
 'may-gen' => 'Gúlan',
 'june-gen' => 'Heziran',
 'july-gen' => 'Temuz',
-'august-gen' => 'Ağustos',
+'august-gen' => 'Tebaxe',
 'september-gen' => 'Keşkelun',
-'october-gen' => 'Cetan',
-'november-gen' => 'Kelverdan',
-'december-gen' => 'Gağand',
+'october-gen' => 'Tışrino Verên',
+'november-gen' => 'Tışrino Peyên',
+'december-gen' => 'Kanun',
 'jan' => 'Çel',
 'feb' => 'Sbt',
 'mar' => 'Adr',
@@ -448,7 +448,7 @@ $messages = array(
 'september-date' => 'Keşkelun $1',
 'october-date' => 'Cıtan $1',
 'november-date' => 'Qasım $1',
-'december-date' => 'Gağand $1',
+'december-date' => '$1 Kanun',
 
 # Categories related messages
 'pagecategories' => '{{PLURAL:$1|Kategori|Kategoriy}}',
@@ -474,11 +474,11 @@ $messages = array(
 'about' => 'Heqdé cı',
 'article' => 'Wesiqe',
 'newwindow' => '(pençereyê newey de beno a)',
-'cancel' => 'Bıterkne',
+'cancel' => 'Bıtexelne',
 'moredotdotdot' => 'Vêşi...',
 'morenotlisted' => 'Vêşi lista nêbi...',
 'mypage' => 'Per',
-'mytalk' => 'Vaten',
+'mytalk' => 'Werênayış',
 'anontalk' => 'Pela werênayışê nê IPy',
 'navigation' => 'Pusula',
 'and' => '&#32;u',
@@ -486,7 +486,7 @@ $messages = array(
 # Cologne Blue skin
 'qbfind' => 'Bıvêne',
 'qbbrowse' => 'Rovete',
-'qbedit' => 'Timar ke',
+'qbedit' => 'Bıvurne',
 'qbpageoptions' => 'Na per',
 'qbmyoptions' => 'Peré mı',
 'faq' => 'PZP (Persê ke zehf persiyenê)',
@@ -501,9 +501,9 @@ $messages = array(
 'vector-action-unprotect' => 'Starkerdışi bıvurne',
 'vector-simplesearch-preference' => 'Çuweya cı geyreyış de rehater aktiv ke (Tenya vector skin de)',
 'vector-view-create' => 'İycad ke',
-'vector-view-edit' => 'Timar ke',
-'vector-view-history' => 'Verénan bıvin',
-'vector-view-view' => 'Buwan',
+'vector-view-edit' => 'Bıvurne',
+'vector-view-history' => 'Verênan bıvêne',
+'vector-view-view' => 'Bıwane',
 'vector-view-viewsource' => 'Çımi bıvin',
 'actions' => 'Hereketi',
 'namespaces' => 'Cayê namey',
@@ -513,7 +513,7 @@ $messages = array(
 'errorpagetitle' => 'Ğeta',
 'returnto' => 'Peyser şo $1.',
 'tagline' => '{{SITENAME}} ra',
-'help' => 'Desteg',
+'help' => 'Peşti',
 'search' => 'Cı geyre',
 'searchbutton' => 'Cı geyre',
 'go' => 'Şo',
@@ -525,7 +525,7 @@ $messages = array(
 'permalink' => 'Gıreyo jûqere',
 'print' => 'Nusten ke',
 'view' => 'Bıvin',
-'edit' => 'Timar ke',
+'edit' => 'Bıvurne',
 'create' => 'İycad ke',
 'editthispage' => 'Ena pele bıvurne',
 'create-this-page' => 'Na pele bınuse',
@@ -541,12 +541,12 @@ $messages = array(
 'unprotectthispage' => 'Starkerdışe ena peler bıvurne',
 'newpage' => 'Pera newiye',
 'talkpage' => 'Ena pele sero werêne',
-'talkpagelinktext' => 'Vaten',
+'talkpagelinktext' => 'Werênayış',
 'specialpage' => 'Pela xısusiye',
 'personaltools' => 'Hacetê şexsiy',
 'postcomment' => 'Qısımo newe',
 'articlepage' => 'Pela zerreki bıvêne',
-'talk' => 'Vaten',
+'talk' => 'Werênayış',
 'views' => 'Asayışi',
 'toolbox' => 'Haceti',
 'userpage' => 'Pela karberi bıvêne',
@@ -786,9 +786,11 @@ Wexta ke verhafızayê cıgerayoxê şıma pak beno no benate de taye peli de he
 'gotaccount' => "Hesabê şıma esto? '''$1'''.",
 'gotaccountlink' => 'Dekewtış',
 'userlogin-resetlink' => 'Melumatê cıkewtışi xo vira kerdê?',
-'userlogin-resetpassword-link' => 'Şıma parola ke ğo vira?',
+'userlogin-resetpassword-link' => 'Parola xo kerda xo vira?',
 'helplogin-url' => 'Help:Qeydbiyayış',
-'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|Desteg be qeydbiyayış ra]]',
+'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|Peşti be qeydbiyayış ra]]',
+'userlogin-loggedin' => 'Tı xora namey {{GENDER:$1|$1}} ra kewtê/kewtay cı.
+Formê cêrêni bıgureyne ke namey karberio bin ra cı kewê.',
 'userlogin-createanother' => 'Zewbi hesab vıraz',
 'createacct-join' => 'Cêr melumatê xo cı ke',
 'createacct-another-join' => 'Malumata hesabdé ğoye newi dekeré cér.',
@@ -893,7 +895,7 @@ Bıne vındere u newe ra dest pê bıkere.',
 'resetpass_forbidden' => 'parolayi nêvuryayi',
 'resetpass-no-info' => 'şıma gani hesab akere u hona bıeşke bırese cı',
 'resetpass-submit-loggedin' => 'Parola bıvurne',
-'resetpass-submit-cancel' => 'Bıterkne',
+'resetpass-submit-cancel' => 'Bıtexelne',
 'resetpass-wrong-oldpass' => 'parolayo parola maqbul niyo.
 şıma ya parolaye xo vurnayo ya zi parolayo muwaqqat waşto.',
 'resetpass-temp-password' => 'parolayo muweqet:',
@@ -940,7 +942,7 @@ Parola vêrdiye: $2',
 'changeemail-none' => '(Çıno)',
 'changeemail-password' => 'Parolaya şımaya {{SITENAME}}i:',
 'changeemail-submit' => 'E-postay xo bıvurne',
-'changeemail-cancel' => 'Bıterkne',
+'changeemail-cancel' => 'Bıtexelne',
 
 # Special:ResetTokens
 'resettokens' => 'Reset fi ye',
@@ -975,7 +977,7 @@ Parola vêrdiye: $2',
 # Edit pages
 'summary' => "<font style=\"color:Blue\">'''Xulasa:'''</font>",
 'subject' => 'Mewzu/sernuşte:',
-'minoredit' => 'Vırnayışa werkek',
+'minoredit' => 'No vırnayışê do werdiyo',
 'watchthis' => "'''Ena pele seyr ke'''",
 'savearticle' => 'Pele qeyd ke',
 'preview' => 'Verqayt',
@@ -1143,7 +1145,7 @@ Yew sebeb beyan nibı.',
 Hewna kerde aseno.',
 'edit-conflict' => 'Vurnayişê pêverdiyaye .',
 'edit-no-change' => 'Vurnayişê şıma qebul nêbı, çunke nuşte de yew vurnayiş n3evıraziya.',
-'postedit-confirmation' => 'Vurnayış qeyd be',
+'postedit-confirmation' => 'Vurnayışê to qeyd bi.',
 'edit-already-exists' => 'Pelo newe nêvıraziyeno.
 Pel ca ra esto.',
 'defaultmessagetext' => 'Hesıbyaye metne mesaci',
@@ -1184,7 +1186,7 @@ Taye şabloni zerre pel de nêmociyayeni.',
 'undo-success' => 'No vurnayiş tepeye geryeno. pêverronayişêyê cêrıni kontrol bıkeri.',
 'undo-failure' => 'Sebayê pêverameyişê vurnayişan karo tepêya gırewtış nêbı.',
 'undo-norev' => 'Vurnayiş tepêya nêgeryeno çunke ya vere cû hewna biyo ya zi ca ra çino.',
-'undo-summary' => 'Peysergırewtışê teshisê $1i be terefê [[Special:Contributions/$2|$2i]] ([[User talk:$2|Werênayış]])',
+'undo-summary' => "Vırnayışê $1'i [[Special:Contributions/$2|$2i]] ([[User talk:$2|Werênayış]]) peyser gırewt",
 'undo-summary-username-hidden' => "Rewizyona veri $1'i hewada",
 
 # Account creation failure
@@ -1276,7 +1278,7 @@ Eke şertê ilawekerdey ke niyê ro, idarekerê bini {{SITENAME}} de nêşenê h
 'revdelete-hide-text' => 'Nuştey revizyoni',
 'revdelete-hide-image' => 'zerreyê dosyay bınımnê',
 'revdelete-hide-name' => "hedef u vaqa' bınımne",
-'revdelete-hide-comment' => 'Menıni timar ke',
+'revdelete-hide-comment' => 'Xulasa bıvurne',
 'revdelete-hide-user' => 'IP asresa/namey  vırnoği',
 'revdelete-hide-restricted' => 'Malumatan pa serkaran u karberan ra bınım.',
 'revdelete-radio-same' => '(mevurne)',
@@ -1608,7 +1610,7 @@ Eka tu wazene ke nameyo raşt xo bide, ma nameyo raşt ti iştirakanê ti de moc
 'right-upload_by_url' => 'Yew URL ra dosyan bar bıke',
 'right-purge' => 'Virê sita seba yew pele bêdestur bestere.',
 'right-autoconfirmed' => 'Perê ke nême kılit biyê, inan bıvurne',
-'right-bot' => 'Zey yew karê xoserkerdey be',
+'right-bot' => 'Zey yew kardê otomotiki kar bıvin',
 'right-nominornewtalk' => 'Pelanê werênayışan rê vurnayışê qıckeki çıniyê, qutiya mesacanê newiyan bıgurene',
 'right-apihighlimits' => 'Persanê API de sinoranê berzêran bıgurene',
 'right-writeapi' => 'İstıfadey APIyê nuştey',
@@ -1640,8 +1642,8 @@ Eka tu wazene ke nameyo raşt xo bide, ma nameyo raşt ti iştirakanê ti de moc
 'right-viewmywatchlist' => 'Lista seyr de xo bıvin',
 'right-editmywatchlist' => 'Listeya temaşiya karberinda ğo timar ke.Not  tay karfinayışi na icazet nédeyo zi pera dekeno de.',
 'right-viewmyprivateinfo' => 'Bağse malumatané ğo bıasne (e-posta, nameyo raştay vs.)',
-'right-editmyprivateinfo' => 'Bağse malumatané ğo bıvırn (e-posta, nameyo raştay vs.)',
-'right-editmyoptions' => 'Tercihané Ä\9fo bıvırn',
+'right-editmyprivateinfo' => 'Melumatanê xoyê şexsiyan bıvurne (adresa e-postey, nameyo raştıkên uêb.)',
+'right-editmyoptions' => 'Tercihanê xo bıvurne',
 'right-rollback' => 'Lez/herbi vurnayışanê karberê peyêni tekrar bıke, oyo ke yew be yew pelê sero gureyao',
 'right-markbotedits' => 'Vurnayışanê peyd ameyan, vurnayışê boti deye nışan kerê',
 'right-noratelimit' => 'Sinoranê xızi (rate limit) ra tesir nêbi',
@@ -1714,29 +1716,30 @@ Eka tu wazene ke nameyo raşt xo bide, ma nameyo raşt ti iştirakanê ti de moc
 'enhancedrc-history' => 'verenayış',
 'recentchanges' => 'Vırnayışé bahdoyéni',
 'recentchanges-legend' => 'Tercihê vurnayışanê peyênan',
-'recentchanges-summary' => 'Ena pele de wiki sero vurnayışanê peyênan teqib ke.',
+'recentchanges-summary' => 'Ena perer de wiki sero vurnayışanê peyênan teqib ke.',
 'recentchanges-noresult' => 'Zey kiterandé şıma vırnayış névineya',
 'recentchanges-feed-description' => 'Ena feed dı vurnayişanê tewr peniyan teqip bık.',
-'recentchanges-label-newpage' => 'Enê vurnayışi pelaya newi vıraşt',
+'recentchanges-label-newpage' => 'Ena vırnayış ra pera newi vıraziyê',
 'recentchanges-label-minor' => 'Ena vırnayışa werkeka',
-'recentchanges-label-bot' => 'Yew boti xo het ra no vurnayış vıraşto',
+'recentchanges-label-bot' => 'No vurnayışé boti yo.',
 'recentchanges-label-unpatrolled' => 'Eno vurnayış hewna dewriya nêbiyo',
 'recentchanges-label-plusminus' => 'Ebata na perer ebatta na nımra de vırneya',
+'recentchanges-legend-heading' => "'''Kıtabek:'''",
 'recentchanges-legend-newpage' => '(Zewbi bıvin [[Special:NewPages|Listeya peran de newan]])',
 'recentchanges-legend-plusminus' => "''(±123)''",
 'rcnotefrom' => "Cêr de '''$2''' ra nata vurnayışiyê asenê (tewr vêşi <b> '''$1'''</b> asenê).",
-'rclistfrom' => '$1 ra tepya vırnayışané newan bıasne',
+'rclistfrom' => '$1 ra tepiya vurnayışanê neweyan bımocne',
 'rcshowhideminor' => 'Vırnayışané werkekean $1',
 'rcshowhidebots' => 'Botan $1',
-'rcshowhideliu' => 'Karberané qeydınan $1',
+'rcshowhideliu' => 'Karberé qeydınan $1',
 'rcshowhideanons' => 'Karberané bénaman $1',
 'rcshowhidepatr' => '$1 vurnayışê ke dewriya geyrayê',
 'rcshowhidemine' => 'Vurnayışanê mı $1',
-'rclinks' => '$2 rocan peynira $1 vurnayışan bıasne <br />$3',
+'rclinks' => 'Peyniya $2 rocan de $1 vurnayışan bımocne <br />$3',
 'diff' => 'ferq',
 'hist' => 'verên',
 'hide' => 'Bınımne',
-'show' => 'Bıasne',
+'show' => 'Bımocne',
 'minoreditletter' => 'q',
 'newpageletter' => 'N',
 'boteditletter' => 'b',
@@ -2234,7 +2237,7 @@ gıreyê her satıri de gıreyi; raş motışê yewın u dıyıni esto.
 'newpages' => 'Peré newey',
 'newpages-username' => 'Nameyê karberi:',
 'ancientpages' => 'Wesiqeyê ke vurnayışê ciyê peyeni tewr kehani',
-'move' => 'Ber',
+'move' => 'Bere',
 'movethispage' => 'Na perer ber',
 'unusedimagestext' => 'Enê dosyey estê, feqet zerrey yew pele de wedardey niyê.
 Xo vira mekerê ke, sıteyê webiê bini şenê direkt ebe URLi yew dosya ra gırê bê, u wına şenê verba gurênayışo feal de tiya hewna lista bê.',
@@ -2469,7 +2472,7 @@ Qey hemkari u pêşniyazi:
 # Delete
 'deletepage' => 'Pele bestere',
 'confirm' => 'Testiq ke',
-'excontent' => "Zerrey cı: '$1'",
+'excontent' => "Zerreko verén: '$1'",
 'excontentauthor' => "Zerrey cı: '$1' no/na ('[[Special:Contributions/$2|$2]]'  teyna iştıraq kerdo)",
 'exbeforeblank' => "behsê verê esteriyayişi: '$1'",
 'exblank' => 'zerreyê peli vengo',
@@ -2666,12 +2669,12 @@ $1',
 'sp-contributions-newbies' => 'Tenya iştıraqanê karberanê neweyan bımocne',
 'sp-contributions-newbies-sub' => 'Qe hesebê newe',
 'sp-contributions-newbies-title' => 'Îştîrakê karberî ser hesabê neweyî',
-'sp-contributions-blocklog' => 'Qeydê kılitkerdışi',
-'sp-contributions-deleted' => 'iştırakê karberiê esterıtey',
+'sp-contributions-blocklog' => 'Qeydê blokey',
+'sp-contributions-deleted' => 'İştırakê karberi esterd',
 'sp-contributions-uploads' => 'barkerdey',
 'sp-contributions-logs' => 'qeydi',
 'sp-contributions-talk' => 'werênayış',
-'sp-contributions-userrights' => 'İdareyê heqanê karberan',
+'sp-contributions-userrights' => 'idareyê heqanê karberan',
 'sp-contributions-blocked-notice' => 'verniyê no/na karber/e geriyayo/a
 qê referansi qeydê vernigrewtışi cêr de eşkera biyo:',
 'sp-contributions-blocked-notice-anon' => 'Eno adresê IPi bloke biyo.
@@ -2773,7 +2776,7 @@ Cıkewtışo tewr peyêno ke bloke biyo, cêr seba referansi belikerdeyo:',
 'ipblocklist-empty' => 'Lista kılitkerdışi venga.',
 'ipblocklist-no-results' => 'Adresa IPya waştiye ya zi namey karberi kılit nêbiyo.',
 'blocklink' => 'kılit ke',
-'unblocklink' => 'bloqi hewad',
+'unblocklink' => 'bloki wedare',
 'change-blocklink' => 'kılitkerdışi bıvurne',
 'contribslink' => 'iştıraqi',
 'emaillink' => 'e-poste bırışe',
@@ -2782,7 +2785,7 @@ Sebebê kılit-biyayışê $1\'i: "$2"o',
 'blocklogpage' => 'Qeydê bloqi',
 'blocklog-showlog' => 'verniyê no/na karberi cıwa ver geriyayo/ya.',
 'blocklog-showsuppresslog' => 'verniyê no/na karberi cıwa ver geriyayo/ya.',
-'blocklogentry' => 'Karberê [[$1]] ke bloqe, bloqey cı hetana $2 $3 do bıramo.',
+'blocklogentry' => '[[$1]] biyo bloqe, sebeb: $3, hetana $2 do bıramo.',
 'reblock-logentry' => 'qey [[$1]]i tarixê qediyayişi $2 $3 pa ninan a eyarê ver-grewtışan vurna.',
 'blocklogtext' => "No kuliyatê kılitkerdış u rakerdışê fealiyetê karberano.
 Adresê IP'ya ke otomatikmen kılit biyê lista de çıniya.
@@ -2816,6 +2819,7 @@ labele parçeya benateyê na $2 adresibi u ey ra ver-geryayo u şıma eşkeni no
 'sorbs_create_account_reason' => 'IP adresa şıma, hetê no translatewiki.net keyepeli ra DNSBL de proxy hesibyayo u liste biyo.
 
 şıma neeşkeni hesab bıvırazi',
+'xffblockreason' => 'Yew adresê İP sernuştey X-Forwarded-For de esto, ya ê to ya ki ê proxy serverio ke tı gureynenê (xebetnenê), bloke biyo. Sebebê blokekerdışio esıl no bi: $1',
 'cant-see-hidden-user' => 'karber o ke şıma gêreni verniyê ey bıgeri ca ra verniyê ey gırewteyo u pinani kerdeyo.',
 'ipbblocked' => 'Ti nieşkena karberanê binan bloke bike ya zi a bike cunki ti bloke biya',
 'ipbnounblockself' => 'Ti nieşkena xo a bike',
@@ -3057,7 +3061,7 @@ dosyaya emaneti vindbiyo',
 # Tooltip help for the actions
 'tooltip-pt-userpage' => 'Pera şımaya karberi',
 'tooltip-pt-anonuserpage' => 'pelê karberê IPyi',
-'tooltip-pt-mytalk' => 'Pera şımaya vaten',
+'tooltip-pt-mytalk' => 'Pela toya werênayışi',
 'tooltip-pt-anontalk' => 'vurnayiş ê ke no Ipadresi ra biyo muneqeşa bıker',
 'tooltip-pt-preferences' => 'Tercihi',
 'tooltip-pt-watchlist' => 'Lista pelanê ke to gırewtê seyrkerdış',
@@ -3065,7 +3069,7 @@ dosyaya emaneti vindbiyo',
 'tooltip-pt-login' => 'Mayê şıma ronıştış akerdışi rê dawet keme; labelê ronıştış mecburi niyo',
 'tooltip-pt-anonlogin' => 'Seba cıkewtışê şıma rê dewato; labelê, no zeruri niyo',
 'tooltip-pt-logout' => 'Sistem ra vıcyayış',
-'tooltip-ca-talk' => 'Zerrey pela sero werênayış',
+'tooltip-ca-talk' => 'Zerrekê pele sero werênayış',
 'tooltip-ca-edit' => 'Tı şenay na perer bıvurné.Verdé qeyd kerdışi ver gocega verqayti bıkarné.',
 'tooltip-ca-addsection' => 'Zu bınnusteya newi ak',
 'tooltip-ca-viewsource' => 'Ena pele kılit biya.
@@ -3075,7 +3079,7 @@ dosyaya emaneti vindbiyo',
 'tooltip-ca-unprotect' => 'Starkerdışe ena peler bıvurne',
 'tooltip-ca-delete' => 'Ena perer bestern',
 'tooltip-ca-undelete' => 'peli biyarê halê ver hewnakerdışi',
-'tooltip-ca-move' => 'Na perer ber',
+'tooltip-ca-move' => 'Ena pele bere',
 'tooltip-ca-watch' => 'Ena pele lista xoya seyrkerdışi ke',
 'tooltip-ca-unwatch' => 'Ena pele listeya seyir-kerdışi xo ra bıvec',
 'tooltip-search' => '{{SITENAME}} miyan de bıvin',
@@ -3088,7 +3092,7 @@ dosyaya emaneti vindbiyo',
 'tooltip-n-currentevents' => 'Vurnayışanê peyênan de melumatê pey bıvêne',
 'tooltip-n-recentchanges' => 'Wiki de lista vurnayışanê peyênan',
 'tooltip-n-randompage' => 'Perake raşt amé',
-'tooltip-n-help' => 'Cay desteg grotışi',
+'tooltip-n-help' => 'Cayê peştigırewtışi',
 'tooltip-t-whatlinkshere' => 'Lista pelanê wikiya pêroina ke tiya gırê bena',
 'tooltip-t-recentchangeslinked' => 'Vurnayışê peyênê pelanê ke ena pela ra gırê biyê',
 'tooltip-feed-rss' => 'RSS feed qe ena pele',
@@ -4122,13 +4126,14 @@ enê programiya piya [{{SERVER}}{{SCRIPTPATH}}/COPYING jew kopyay lisans dê GNU
 'version-entrypoints-scriptpath' => '[https://www.mediawiki.org/wiki/Manual:$wgScriptPath Script path]',
 
 # Special:Redirect
-'redirect' => "Hetenayışa dosyay, karberi yana  rewizyona ID'i",
+'redirect' => 'Serşıkıtena dosya, karberi, pele ya ki revizyonê kamiya dosya',
 'redirect-legend' => 'Hetenayışa dosya yana pela',
-'redirect-summary' => "Na pera bağsi şıma bena dosya (cıré namey dosya deyeno), zu per (zu ID'A rewizyoni deyaya) yana cıré zu pera karberi beno herın (kamiya karberiya amoriyen). Karkerden: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revision/328429]], yana  [[{{#Special:Redirect}}/user/101]].",
+'redirect-summary' => 'Na pela xase to hetê jû dosya (namey dosya daeyo), jû pele (kamiya revizyoni ya ki pele daiya) ya ki jû pela karberi (kamiya karberia reqemkiye daiya) ser şıknena. Gurenayış: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], ya ki  [[{{#Special:Redirect}}/user/101]].',
 'redirect-submit' => 'Şo',
 'redirect-lookup' => 'Bewni',
 'redirect-value' => 'Erc:',
 'redirect-user' => 'Kamiya Karberi:',
+'redirect-page' => 'Kamiya pele',
 'redirect-revision' => 'Rewizyona pela',
 'redirect-file' => 'Namey dosya',
 'redirect-not-exists' => 'Erc nêvineyê',
@@ -4273,7 +4278,7 @@ satır ê ke pê ney # # destpêkenê zey mışore/mıjore muamele vineno.
 'feedback-bugornote' => 'Jew mersela teferruato teknik esta şıma reca malumatê şıma hazıro se [ $1  jew xırab rapor] bıvinê.Zewbi zi, formê cerê xo rê şenê karfiyê. Vatışê xo pela da "[ $3  $2 ]", namey karber dê xoya piya u wasteriya karfiye.',
 'feedback-subject' => 'Mersel:',
 'feedback-message' => 'Mesac:',
-'feedback-cancel' => 'Bıterkne',
+'feedback-cancel' => 'Bıtexelne',
 'feedback-submit' => 'Peyxeberdar Bırşe',
 'feedback-adding' => 'Pela rê peyxeberdar defêno...',
 'feedback-error1' => 'Xeta: API ra neticey ne vıcyay',
@@ -4370,10 +4375,12 @@ Eneri Medya wiki sera xo keno.',
 'expand_templates_input' => 'sernameyê cıkewtışi:',
 'expand_templates_output' => 'netice',
 'expand_templates_xml_output' => 'XML vıraştış',
+'expand_templates_html_output' => 'Xam vetey HTML',
 'expand_templates_ok' => 'temam',
 'expand_templates_remove_comments' => 'Tefsiran wedare',
 'expand_templates_remove_nowiki' => 'neticeyan de etiketê <nowiki> yan çap bıker',
 'expand_templates_generate_xml' => 'Dara XML arêdayoği bımocne',
+'expand_templates_generate_rawhtml' => "Xam HTML'i bıvin",
 'expand_templates_preview' => 'Verqayt',
 
 );
index 7b2f48e..a170aeb 100644 (file)
@@ -386,7 +386,7 @@ $messages = array(
 'otherlanguages' => 'W drugich rěcach',
 'redirectedfrom' => '(pósrědnjone z boka „$1”)',
 'redirectpagesub' => 'Dalejpósrědnjenje',
-'lastmodifiedat' => 'Slědna změna boka: $1 w $2 goź.',
+'lastmodifiedat' => 'Slědna změna boka: $1 w $2 góź.',
 'viewcount' => 'Toś ten bok jo był woglědany {{PLURAL:$1|jaden raz|$1 raza|$1 raze}}.',
 'protectedpage' => 'Śćitany bok',
 'jumpto' => 'Źi na bok:',
@@ -995,6 +995,9 @@ Njesmějo daś wěcej nježli $2 {{PLURAL:$2|wołanja|wołanjowu|wołanjow|woła
 'cantcreateaccount-text' => "Wutwórjenje wužywarskego konta z toś teje IP adresy ('''$1''') jo blokěrowane pśez [[User:$3|$3]].
 
 Pśicyna, kótaruž $3 jo zapódał, jo ''$2''.",
+'cantcreateaccount-range-text' => "Napóranje kontow z IP-adresow we wobcerku '''$1''', kótaryž wopśimujo twóju IP-adresu ('''$4'''), jo se wót [[User:$3|$3]] zablokěrowało.
+
+Pśicyna pódana wót $3 jo ''$2''",
 
 # History pages
 'viewpagelogs' => 'Protokole boka pokazaś',
@@ -1524,13 +1527,14 @@ Toś ta informacija buźo zjawna.',
 'recentchanges-label-bot' => 'Toś ta změna jo se pśez bośik wuwjadła.',
 'recentchanges-label-unpatrolled' => 'Toś ta změna hyšći njejo se pśekontrolěrowała',
 'recentchanges-label-plusminus' => 'Změnjona wjelikosc boka (licba bajtow)',
+'recentchanges-legend-heading' => "'''Legenda:'''",
 'recentchanges-legend-newpage' => '(glej teke [[Special:NewPages|lisćinu nowych bokow]])',
 'recentchanges-legend-plusminus' => "(''±123'')",
 'rcnotefrom' => "Dołojce pokazuju se změny wót '''$2''' (maks. '''$1''' zapisow).",
 'rclistfrom' => 'Nowe změny wót $1 pokazaś.',
 'rcshowhideminor' => 'Snadne změny $1',
 'rcshowhidebots' => 'awtomatiske programy (boty) $1',
-'rcshowhideliu' => 'pśizjawjone wužywarje $1',
+'rcshowhideliu' => 'Zregistrěrowane wužywarje $1',
 'rcshowhideanons' => 'anonymne wužywarje $1',
 'rcshowhidepatr' => 'kontrolěrowane změny $1',
 'rcshowhidemine' => 'móje pśinoski $1',
@@ -2018,6 +2022,7 @@ Kužda smužka wopśimjejo wótkaze na prědne a druge dalejpósrědnjenje a tek
 'protectedpages' => 'Šćitane boki',
 'protectedpages-indef' => 'Jano boki pokazaś, kótarež su na njewěsty cas šćitane',
 'protectedpages-cascade' => 'Jano boki z kaskadowym šćitom',
+'protectedpages-noredirect' => 'Dalejpósrědnjenja schowaś',
 'protectedpagesempty' => 'Z toś tymi parametrami njejsu tuchylu žedne boki šćitane.',
 'protectedtitles' => 'Šćitane titele',
 'protectedtitlesempty' => 'Tuchylu njejsu žedne boki z pódanych parametrami šćitane.',
@@ -2290,6 +2295,7 @@ Pšašanja a dalšna pomoc:
 'delete-toobig' => 'Toś ten bok ma z wěcej nježli $1 {{PLURAL:$1|wersiju|wersijomaj|wersijami|wersijami}} dłujku historiju. Lašowanje takich bokow bu wobgranicowane, aby wobškoźenju {{GRAMMAR:genitiw|{{SITENAME}}}} z pśigódy zajźowało.',
 'delete-warning-toobig' => 'Toś ten bok ma z wěcej ako $1 {{PLURAL:$1|wersiju|wersijomaj|wersijami|wersijami}} dłujke stawizny. Jich wulašowanje móžo źěło datoweje banki na {{SITENAME}} kazyś;
 póstupujśo z glědanim.',
+'deleting-backlinks-warning' => "'''Warnowanje:''' Druge boki wótkazuju k bokoju, kótaryž coš wulašowaś.",
 
 # Rollback
 'rollback' => 'Wobźěłanja slědk wześ',
@@ -3080,7 +3086,7 @@ Slědujuce wótkaze w tej samej smužce se za wuwześa naglědaju, w kótarychž
 
 # Metadata
 'metadata' => 'Metadaty',
-'metadata-help' => 'Toś ta dataja wopśimjejo pśidatne informacije, kótarež nejskerjej póchadaju wót digitalneje kamery abo scannera. Jolic dataja bu pozdźej změnjona, njeby mógli někotare detaile změnjonu dataju wótbłyšćowaś.',
+'metadata-help' => 'Toś ta dataja wopśimjejo pśidatne informacije, kótarež nejskerjej póchadaju wót digitalneje kamery abo scannera. Jolic dataja bu pózdźej změnjona, njeby mógli někotare detaile změnjonu dataju wótbłyšćowaś.',
 'metadata-expand' => 'rozšyrjone detaile pokazaś',
 'metadata-collapse' => 'rozšyrjone detaile schowaś',
 'metadata-fields' => 'Slědujuce póla metadatow, kótarež su w toś tej powěźeńce pódane, budu se do bokow wopisanja wobrazow zapśimowaś, gaž tabela metadatow jo schowana. Druge se pó standarźe njepokazuju.
@@ -3584,7 +3590,7 @@ Pšosym wobkšuś, až napšawdu coš toś ten bok zasej napóraś.',
 
 # Language selector for translatable SVGs
 'img-lang-default' => '(standardna rěc)',
-'img-lang-info' => 'Toś ten wobraz w $1 kresliś $2.',
+'img-lang-info' => 'Toś ten wobraz w $1 kresliś. $2',
 'img-lang-go' => 'Wótpósłaś',
 
 # Table pager
@@ -3694,14 +3700,15 @@ Ty by dejał [{{SERVER}}{{SCRIPTPATH}}/COPYING kopiju licence GNU General Public
 'version-entrypoints-header-url' => 'URL',
 
 # Special:Redirect
-'redirect' => 'Pó datajowem mjenju, wužywarju abo wersijowem ID dalej pósrědniś',
+'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 jo pódany) abo wužywarskego boka (numeriski wužywarski ID jo pódany) dalej. Wužyśe:
-[[{{#Special:Redirect}}/file/Pśikład.jpg]], [[{{#Special:Redirect}}/revision/328429]] abo [[{{#Special:Redirect}}/user/101]].',
+'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:
+[[{{#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ś:',
 'redirect-value' => 'Gódnota:',
 'redirect-user' => 'ID wužywarja',
+'redirect-page' => 'ID boka',
 'redirect-revision' => 'Bokowa wersija',
 'redirect-file' => 'Datajowe mě',
 'redirect-not-exists' => 'Gódnota njejo se namakała',
@@ -3940,10 +3947,12 @@ Hować móžoš slědujucy jadnory formular wužywaś. Twój komentar pśidajo s
 'expand_templates_input' => 'Zapódany tekst:',
 'expand_templates_output' => 'Wuslědk',
 'expand_templates_xml_output' => 'Wudany XML',
+'expand_templates_html_output' => 'Gropne HTML-wudaśe',
 'expand_templates_ok' => 'W pórěźe',
 'expand_templates_remove_comments' => 'Komentary wótwónoźeś',
 'expand_templates_remove_nowiki' => 'Toflicki <nowiki> we wuslědku pódtłocyś',
 'expand_templates_generate_xml' => 'Parsowański bom XML pokazaś',
+'expand_templates_generate_rawhtml' => 'Gropny HTML pokazaś',
 'expand_templates_preview' => 'Pśeglěd',
 
 );
index 523228e..c2b721c 100644 (file)
  * @ingroup Language
  * @file
  *
+ * @author Lévi
  * @author Reder
  */
 
 $fallback = 'it';
 
 $messages = array(
+# User preference toggles
+'tog-underline' => "Tîra 'na rîga sòta i colegamèint.",
+'tog-hideminor' => "Lōga 'l mudéfichi pió céchi int al j ûltmi mudéfichi.",
+'tog-hidepatrolled' => "Lōga 'l mudéfichi verifichêdi int al j ûltmi mudéfichi",
+'tog-newpageshidepatrolled' => "Lōga al pàgini verifichêdi da l'elèinch dal pàgini pió nōvi.",
+'tog-extendwatchlist' => "Fà vèder tót' al mudéfichi fât a i tgnû sòt ôc, mìa sōl l'ûltma.",
+'tog-usenewrc' => "Unés al mudéfichi per pàgina int al j ûltmi mudéfichi e in quî tgnû sòt' ôc.",
+'tog-numberheadings' => 'Cûnta automâtica di tétol ed sesiòun.',
+'tog-showtoolbar' => 'Fà vèder la bâra di strumèint ed mudéfica.',
+'tog-editondblclick' => "Mudéfica 'l pàgini cun un cléch dòpi.",
+'tog-editsection' => 'Mudéfica dal sesiòun per mèz dal colegamèint [mudéfica].',
+'tog-editsectiononrightclick' => 'Mudéfica dal sesiòun per mèz dal cléch a dréta insém al tétol.',
+'tog-showtoc' => "Fà vèder al sûnt (p'r al pàgini cun pió 'd 3 sesiòun)",
+
 # Dates
+'sunday' => 'Dumènica',
+'monday' => 'lunedé',
+'tuesday' => 'Martedé',
+'wednesday' => 'Mercordé',
+'thursday' => 'Giovedé',
+'friday' => 'Venerdé',
+'saturday' => 'Sâbet',
 'sun' => 'Dum',
-'mon' => 'Lün',
-'tue' => 'Mär',
+'mon' => 'Lun',
+'tue' => 'Mar',
 'wed' => 'Mer',
 'thu' => 'Giu',
-'fri' => 'Van',
+'fri' => 'Ven',
 'sat' => 'Sab',
-'january' => 'Znär',
-'february' => 'Farvär',
-'march' => 'März',
-'april' => 'April',
-'may_long' => "Magg'",
-'june' => 'Giügn',
-'july' => 'Lüi',
-'august' => 'Agust',
-'september' => 'Steimbar',
-'october' => 'Uttubar',
-'november' => 'Nueimbar',
-'december' => 'Dzeimbar',
-'january-gen' => 'Znär',
-'february-gen' => 'Farvär',
-'march-gen' => 'März',
-'april-gen' => 'April',
-'may-gen' => "Magg'",
-'june-gen' => 'Giügn',
-'july-gen' => 'Lüi',
-'august-gen' => 'Agust',
-'september-gen' => 'Steimbar',
-'october-gen' => 'Uttubar',
-'november-gen' => 'Nueimbar',
-'december-gen' => 'Dzeimbar',
-'jan' => 'Znä',
-'feb' => 'Far',
-'mar' => 'Mär',
-'apr' => 'Apr',
-'may' => 'Mag',
-'jun' => 'Giü',
-'jul' => 'Lüi',
-'aug' => 'Agu',
-'sep' => 'Ste',
-'oct' => 'Utt',
-'nov' => 'Nue',
-'dec' => 'Dze',
+'january' => 'Znêr',
+'february' => 'Fervêr',
+'march' => 'Mêrs',
+'april' => 'Avrîl',
+'may_long' => 'Mâg',
+'june' => 'gn',
+'july' => 'Lój',
+'august' => 'Agòst',
+'september' => 'Setèmber',
+'october' => 'Utòber',
+'november' => 'Novèmber',
+'december' => 'Dicèmber',
+'january-gen' => 'Znêr',
+'february-gen' => 'Fervêr',
+'march-gen' => 'Mêrs',
+'april-gen' => 'Avrîl',
+'may-gen' => 'Mâg',
+'june-gen' => 'gn',
+'july-gen' => 'Lój',
+'august-gen' => 'Agòst',
+'september-gen' => 'Setèmber',
+'october-gen' => 'Utòber',
+'november-gen' => 'Novèmber',
+'december-gen' => 'Dicèmber',
+'jan' => 'Znê',
+'feb' => 'Fer',
+'mar' => 'Mêr',
+'apr' => 'Avr',
+'may' => 'Mâg',
+'jun' => 'Zóg',
+'jul' => 'Lój',
+'aug' => 'Agò',
+'sep' => 'Set',
+'oct' => 'Utò',
+'nov' => 'Nov',
+'dec' => 'Dic',
 
 # Categories related messages
-'hidden-categories' => '{{PLURAL:$1|Categuria nascost|Categuri nascost}}',
-
-'about' => 'Informaziun',
-'cancel' => ' 
-Cancellä',
-'mytalk' => 'Le mé discüssion',
-'navigation' => 'Navigazion',
+'pagecategories' => '{{PLURAL:$1|Categoréia!Categoréi}}',
+'category_header' => "Pàgini 'd la categoréia $1",
+'subcategories' => 'Sòt-categoréi',
+'hidden-categories' => '{{PLURAL:$1|Categoréia lughêda|Categoréi lughêdi}}',
+'category-subcat-count' => "{{PLURAL:$2|In cla categoréia ché a gh'é sōl 'n'ónica sòt-categoréia.| In cla categoréia ché a gh'é {{PLURAL:$1|la sòt-categoréia sgnêda|al $1 sòt-categoréi sgnêdi}} ed sègvit, só 'n totêl ed $2.}}",
+'category-article-count' => "{{PLURAL:$2|In cla categoréia ché a gh'é sōl 'na pàgina, sgnêda ché.|In cla categoréia ché gh'é{{PLURAL:$1|la pàgina sgnêda| al pàgini $1 sgnêdi}} ed sègvit, in un totêl ed $2.}}",
+'listingcontinuesabbrev' => 'cunt.',
+
+'about' => 'Infumasiòun',
+'newwindow' => "(a s'arvés 'na fnèstra nōva)",
+'cancel' => 'Scanşèla',
+'mytalk' => 'Al mē discusiòun',
+'navigation' => 'Navigasiòun',
 'and' => '&#32;e',
 
 # Cologne Blue skin
-'qbfind' => 'Trov',
-'qbedit' => 'Mudifich',
-'qbpageoptions' => "Opzion d'la pàgina",
-'qbmyoptions' => 'Le mé pàgin',
-'faq' => 'Dumand frequeint',
+'qbfind' => 'Câta',
+'qbedit' => 'Mudéfica',
+'qbpageoptions' => "Siēlti 'd la pàgina",
+'qbmyoptions' => 'Al mē pàgini',
+'faq' => 'Dmândi fâti',
 
 # Vector skin
-'vector-action-delete' => 'Cancellä',
-'vector-action-move' => 'Spusta',
-'vector-action-protect' => "Prutegg'",
-'vector-view-create' => 'Creä',
-'vector-view-edit' => 'Mudifich',
-'vector-view-history' => 'Väda la storia',
-'vector-view-view' => "Legg'",
-'vector-view-viewsource' => 'Vadä la surgìnt',
-'actions' => 'Azion',
-'namespaces' => 'Namespace',
-'variants' => 'Variänt',
-
-'errorpagetitle' => 'Errur',
+'vector-action-addsection' => 'Zûnta discusiòun',
+'vector-action-delete' => 'Scanşèla',
+'vector-action-move' => 'Spôsta',
+'vector-action-protect' => 'Prutēz',
+'vector-view-create' => 'Invèinta',
+'vector-view-edit' => 'Mudéfica',
+'vector-view-history' => 'Guêrda la stôria',
+'vector-view-view' => 'Lēş',
+'vector-view-viewsource' => 'Guêrda la surzéia',
+'actions' => 'Asiòun',
+'namespaces' => 'Spâsi di nòm',
+'variants' => 'Mudéfichi',
+
+'errorpagetitle' => 'Erōr',
+'returnto' => 'Tōrna a $1',
 'tagline' => 'Da {{SITENAME}}',
-'help' => 'Aiüt',
-'search' => 'Cercä',
-'searchbutton' => 'Cercä',
-'go' => 'Vé',
-'searcharticle' => 'Vé',
-'history' => "Storia d'la pàgina",
-'history_short' => 'Storia',
-'permalink' => 'Link permaneint',
-'print' => 'Stampa',
-'view' => 'Vada',
-'edit' => 'Mudifich',
-'create' => 'Creä',
-'delete' => 'Cancellä',
-'deletethispage' => 'Cancellä custa pàgina ché',
-'undelete_short' => 'Recuperä {{PLURAL:$1|una revision|$1 revision}}',
-'viewdeleted_short' => 'Vadä {{PLURAL:$1|una mudfich cancellät|$1 mudfich cancellät}}',
-'protect' => "Prutegg'",
-'protect_change' => 'Cambia',
-'protectthispage' => "Prutegg' custa pàgina ché",
-'unprotect' => 'Cambiä la prutezion',
-'unprotectthispage' => 'Cambiä la prutezion par custa pàgina ché',
-'newpage' => 'Pàgina növa',
-'talkpage' => 'Pàgina ad discüssion',
-'talkpagelinktext' => 'Discüssion',
-'specialpage' => 'Pàgina speciäl',
-'personaltools' => 'Strümeint parsunäl',
-'postcomment' => 'Sezion növa',
-'articlepage' => 'Vadä la pàgina ad contenüt',
-'talk' => 'Discüssion',
-'views' => 'Visit',
-'toolbox' => 'Strümeint',
-'userpage' => "Vadä la pàgina ad l'uteint",
-'projectpage' => 'Vadä la pàgina dal prugett',
-'imagepage' => 'Vadä la pàgina dal file',
-'mediawikipage' => "Vadä al messagg'",
-'templatepage' => 'Vadä al template',
-'viewhelppage' => "Vadä la pàgina d'aiüt",
-'categorypage' => 'Vadä la categoria',
-'viewtalkpage' => 'Vadä la discüssion',
-'otherlanguages' => 'Ätar leingav',
-'redirectedfrom' => '(Reindirizzameint da <b>$1</b>)',
-'redirectpagesub' => 'Pàgina ad reindirizzameint',
-'lastmodifiedat' => "Ültim mudifich d'la pàgina: $2, $1.",
-'viewcount' => "Custa pàgina ché l'è stata letta {{PLURAL:$1|vüna volta|$1 volte}}.",
-'protectedpage' => 'Pàgina bluccä',
-'jumpto' => 'Andä a',
-'jumptonavigation' => 'navigazion',
-'jumptosearch' => 'cercä',
-'pool-queuefull' => "La cua dal pool l'è piena",
-'pool-errorunknown' => 'Errur mia cugnussü',
+'help' => 'Ajót',
+'search' => 'Sèirca',
+'searchbutton' => 'Sèirca',
+'go' => 'Và',
+'searcharticle' => 'Và',
+'history' => "Stòria 'd la pàgina",
+'history_short' => 'Stôria',
+'printableversion' => "Stâmpa la pàgina ch' ét vèd.",
+'permalink' => 'Colegamèint fés',
+'print' => 'Stâmpa',
+'view' => 'Guêrda',
+'edit' => 'Mudéfichi',
+'create' => 'Invèinta',
+'delete' => 'Scanşéla',
+'deletethispage' => 'Scanşéla cla pàgina ché',
+'undelete_short' => "Recóper ed {{PLURAL:$1|'na revisiòun|$1 revisiòun}}",
+'viewdeleted_short' => "Guèrda {{PLURAL:$1|'na mudéficha scanşlêda|$1 mudéfichi scanşlêdi}}",
+'protect' => 'Prutēz',
+'protect_change' => 'Câmbia',
+'protectthispage' => 'Prutēz cla pàgina ché',
+'unprotect' => 'Câmbia la prutesiòun',
+'unprotectthispage' => 'Câmbia la prutesiòun per cla pàgina ché',
+'newpage' => 'Pàgina nōva',
+'talkpage' => "Pàgina 'd discusiòun",
+'talkpagelinktext' => 'Discusiòun',
+'specialpage' => 'Pàgina specêla',
+'personaltools' => 'Strumèint persunêl',
+'postcomment' => 'Sesiòun nōva',
+'articlepage' => 'Guêrda la pàgina',
+'talk' => 'Discusiòun',
+'views' => 'Vîşiti',
+'toolbox' => 'Strumèint',
+'userpage' => 'Guêrda la pàgina utèint',
+'projectpage' => 'Guêrda la pàgina dal prugèt',
+'imagepage' => "Guêrda la pàgina dal 'file'",
+'mediawikipage' => 'Guêrda al mesâg',
+'templatepage' => "Guêrda al 'template'",
+'viewhelppage' => "Guêrda la pàgina 'd ajót",
+'categorypage' => 'Guêrda la categuréia',
+'viewtalkpage' => 'Guêrda la discusiòun',
+'otherlanguages' => 'In êtri léngvi',
+'redirectedfrom' => '(Tót còst al deşvîn da <b>$1</b>)',
+'redirectpagesub' => "Pàgina 'd partèinsa",
+'lastmodifiedat' => "Ûltmi mudéfichi 'dla pàgina: $2, $1.",
+'viewcount' => "Cla pàgina ché l'é stêda lişûda {{PLURAL:$1|'na vôlta|$1 vôlti}}.",
+'protectedpage' => 'Pàgina sòta prutesiòun',
+'jumpto' => 'Và a:',
+'jumptonavigation' => 'Navigasiòun',
+'jumptosearch' => 'Sērca',
+'pool-queuefull' => 'A ghé la fîla, trôpa gînta a vōl vèder la pàgina, prōva tra soquânt minût',
+'pool-errorunknown' => 'Erōr mìa cgnusû',
 
 # All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage).
-'aboutsite' => 'Infurmazion su {{SITENAME}}',
-'aboutpage' => 'Project:Infurmäzion',
-'copyright' => "Contenüt suggètt a licinza d'üs $1.",
-'copyrightpage' => '{{ns:project}}:Copyright',
-'currentevents' => 'Eveint curreint',
-'currentevents-url' => 'Project:Eveint curreint',
-'disclaimers' => 'Informazion legäl',
-'disclaimerpage' => 'Project:Avvartenza generäl',
-'edithelp' => 'Libar di spiegazión',
-'helppage' => "Help:Tütt l'argumeint",
-'mainpage' => 'Prima pàgina',
-'mainpage-description' => 'Pàgina principäl',
-'policy-url' => 'Project:Policy',
-'portal' => "Purtäda d'la cumünitä",
-'portal-url' => "Project:Purtäda d'la cumünitä",
-'privacy' => "Legg' l'informazion parsunäl",
-
-'ok' => 'OK',
-'editsection' => 'cambi',
-'editold' => 'mudifich',
-'viewsourceold' => 'vadä la surgìnt',
-'editlink' => 'mudifich',
-'viewsourcelink' => 'vadä la surgìnt',
-'editsectionhint' => 'Mudifich la seziòn: $1',
-'toc' => 'Indez',
-'showtoc' => 'mustra',
-'hidetoc' => 'nascond',
-'collapsible-collapse' => 'Comprim',
-'collapsible-expand' => 'Espand',
-'thisisdeleted' => 'Vadä o ripristinä $1?',
-'viewdeleted' => 'Vadä $1?',
-'restorelink' => '{{PLURAL:$1|vüna mudfich cancellät|$1 mudfich cancellät}}',
+'aboutsite' => 'Infurmasiòun só {{SITENAME}}',
+'aboutpage' => 'Project:Infurmasiòun',
+'copyright' => "Còl che gh' é che dèinter a 's pōl druvêr sòta licèinsa $1, s' an gh'é mia scrét diversamèint.",
+'copyrightpage' => "{{ns:project}}:Dirét 'd avtōr",
+'currentevents' => 'Fât e prugèt ed tót',
+'currentevents-url' => 'Project:Prugèt_ed_tót',
+'disclaimers' => 'Avertèinsi',
+'disclaimerpage' => 'Project:Avertèinsi generêli',
+'edithelp' => 'Léber dal spiegasiòun',
+'helppage' => 'Help:Tót j argumèint',
+'mainpage' => 'Préma pàgina',
+'mainpage-description' => 'Pàgina principêla',
+'policy-url' => "Project:Léni 'd cundòta",
+'portal' => 'Discóter e quistiunêr',
+'portal-url' => 'Project:Discóter e quistiunêr',
+'privacy' => 'Infurmasiòun só la véta privêda',
+'privacypage' => 'Project:Règoli só la secretèsa dal j infurmasiòun personêli.',
+
+'ok' => 'Va bèin',
+'retrievedfrom' => 'Tôt da "$1".',
+'editsection' => 'Mudéfica',
+'editold' => 'mudéfica',
+'viewsourceold' => 'guêrda la surzéia',
+'editlink' => 'mudéfica',
+'viewsourcelink' => 'guêrda la surzéia',
+'editsectionhint' => 'Mudéfica la sesiòn: $1',
+'toc' => 'Argumèint',
+'showtoc' => 'Fà vèder',
+'hidetoc' => 'Lōga',
+'collapsible-collapse' => 'Stréca',
+'collapsible-expand' => 'Şlêrga',
+'thisisdeleted' => 'Guêrda e tōrna a mèter $1?',
+'viewdeleted' => 'Guêrda $1?',
+'restorelink' => "{{PLURAL:$1|'na mudéfica scanşlêda|$1 mudéfichi scanşlêdi}}",
 'feedlinks' => 'Feed:',
-'feed-invalid' => "La mudalitä ad sottoscrizion dal feed l'è mia valid.",
-'feed-unavailable' => 'I feed al son mia dispunibil',
-'site-rss-feed' => 'Emissiòn RSS ad $1',
-'site-atom-feed' => 'Emission Atom ad $1',
-'page-rss-feed' => 'Emissiòn RSS par $1',
-'page-atom-feed' => 'Emission Atom par $1',
-'red-link-title' => "$1 (la pàgina a l'esist mia)",
-'sort-descending' => 'Ordinamient decrescent',
-'sort-ascending' => 'Ordinamient cresceint',
+'feed-invalid' => "Al môd ed sotoscrisiòun dal feed an n'é mìa vâlid",
+'feed-unavailable' => "An gh'é mìa di feed léber",
+'site-rss-feed' => 'Feed RSS ed $1',
+'site-atom-feed' => 'Feed Atom ed $1',
+'page-rss-feed' => 'Feed RSS per $1',
+'page-atom-feed' => 'Feed Atom per $1',
+'red-link-title' => "$1 (la pàgina l'an gh'é mìa)",
+'sort-descending' => 'Ōrdin in calêr',
+'sort-ascending' => 'Ōrdin in crèser',
 
 # Short words for each namespace, by default used in the namespace tab in monobook
 'nstab-main' => 'Pàgina',
-'nstab-user' => 'Pàgina uteint',
-'nstab-media' => 'File multimediäl',
-'nstab-special' => 'Pàgina speciäl',
-'nstab-project' => 'Pàgina ad sërvizi',
-'nstab-image' => 'Immàgin',
-'nstab-mediawiki' => "Messagg'",
-'nstab-template' => 'Mudell',
-'nstab-help' => 'Aiüt',
-'nstab-category' => 'Categuria',
+'nstab-user' => 'Pàgina utèint',
+'nstab-media' => 'File multimediêl',
+'nstab-special' => 'Pàgina specêla',
+'nstab-project' => "Pàgina 'd servési",
+'nstab-image' => "'File'",
+'nstab-mediawiki' => 'Mesâg',
+'nstab-template' => 'Mudèl',
+'nstab-help' => 'Per quî rivê da pôch',
+'nstab-category' => 'Categoréia',
 
 # General errors
-'error' => 'Errur',
-'databaseerror' => 'Errur dal database',
-'readonly' => 'Database bluccä',
-'missingarticle-rev' => '(revision n°: $1)',
+'error' => 'Erōr',
+'databaseerror' => "Erōr dal 'database'",
+'readonly' => "'Database' bluchê",
+'missing-article' => "Al datebêş an n'à mìa catê al tèst ed 'na pàgina ch' l' aré duvû catêres sòt' al nòm \"\$1\" \$2. Ed sôlit còst a sucēd quând a vîn arciamê, a partîr da la stòria dal mudéfichi o dal cunfrûnt tra revisiòun, un colegamèint a 'na pàgina scanşlêda, a un cunfrûnt tra revisiòun che gh'în mìa o a un cunfrûnt tra revisiòun cun la stòria dal mudéfichi scanşlêda. In chês cuntrâri, a s'é pubabilmèint catê un erōr int al prugrâma ed Media Wiki. A se dmânda al piaşèir ed comunichêr còl ch'é sucès a un [[Special:ListUsers/sysop|amministadōr]] e comunichêregh l'indirés (URL) in quistiòun.",
+'missingarticle-rev' => '(revisiòun n°: $1)',
 'missingarticle-diff' => '(Diff: $1, $2)',
-'internalerror' => 'Errur interiur',
-'internalerror_info' => 'Errur interiur: $1',
-'viewsource' => 'Vadä la surgìnt',
-'viewsource-title' => 'Vadä la surgìnt ad $1',
+'internalerror' => 'Erōr intêren',
+'internalerror_info' => 'Erōr intêren: $1',
+'badtitletext' => "Al tétol ed la pàgina serchêda l'é vōd, şbaliê opór al deşvîn da 'n erōr int i colegamèint di côdis o int i colegamèint druvê in wiki. In pió al pré avèir ûn o pió carâter ch'an pōlen mìa èser druvê int i tétol.",
+'viewsource' => 'Guêrda la surzéia',
+'viewsource-title' => "Guêrda la surzéia 'd $1",
 
 # Login and logout pages
-'yourname' => 'Nom uteint:',
-'yourpassword' => 'Password:',
-'yourpasswordagain' => 'Ripett la password:',
-'login' => 'Enträ',
-'nav-login-createaccount' => 'Enträ / Creä un account',
-'userlogin' => 'Enträ / Creä un account',
-'userloginnocreate' => 'Enträ',
-'logout' => 'Üscì',
-'userlogout' => 'Üscì',
-'notloggedin' => 'Si mia enträ',
-'nologinlink' => 'Creä un cunt',
-'createaccount' => 'Creä cunt',
-'gotaccountlink' => 'Enträ',
-'createaccountmail' => 'Via e-mail',
-'createaccountreason' => 'Mutiv:',
-'loginerror' => 'Errur ad enträ',
-'accountcreated' => 'Account creä',
-'loginlanguagelabel' => 'Leingua: $1',
+'yourname' => 'Nòm utèint:',
+'yourpassword' => "Cêva 'd ingrès:",
+'yourpasswordagain' => "Scrév incòra la cêva 'd ingrès:",
+'login' => 'Và dèinter',
+'nav-login-createaccount' => 'Và dèinter / Fà la tó inscrisiòun',
+'userlogin' => 'Và dèinter / Fà la tó inscrisiòun',
+'userloginnocreate' => 'Và dèinter',
+'logout' => 'Và fōra',
+'userlogout' => 'Và fōra',
+'notloggedin' => "An t'é mìa gnû dèinter",
+'nologinlink' => 'Fà la tó inscrisiòun',
+'createaccount' => 'Fà la tó inscrisiòun',
+'gotaccountlink' => 'Và dèinter',
+'createaccountmail' => "Drōva 'na cêva 'd ingrès a chêş pruvişôria e spidésla a l'indirés ed pôsta eletrônica sgnê.",
+'createaccountreason' => 'Mutîv:',
+'loginerror' => "Erōr 'd ingrès",
+'accountcreated' => 'Ingrès fât',
+'loginlanguagelabel' => 'Léngva: $1',
 
 # Change password dialog
-'changepassword' => 'Cambiä la password',
-'oldpassword' => "Vecc' password:",
-'newpassword' => 'Növa password:',
-'resetpass-submit-loggedin' => 'Cambiä la password',
-'resetpass-submit-cancel' => 'Cancellä',
-'resetpass-temp-password' => 'Password tempural:',
+'changepassword' => "Câmbia la cêva 'd ingrès",
+'oldpassword' => "Cêva 'd ingès vècia:",
+'newpassword' => "Nōva cêva 'd ingrès:",
+'resetpass-submit-loggedin' => "Câmbia la cêva 'd ingrès",
+'resetpass-submit-cancel' => 'Scanşèla',
+'resetpass-temp-password' => "Cêva 'd ingrès pruvişôria:",
 
 # Special:PasswordReset
-'passwordreset' => 'Cambiä la password',
-'passwordreset-legend' => 'Cambiä la password',
-'passwordreset-username' => 'Nom uteint:',
-'passwordreset-domain' => 'Dumini:',
+'passwordreset' => "Câmbia la cêva 'd ingrès",
+'passwordreset-legend' => "Tōrna mèter la cêva 'd ingrès",
+'passwordreset-username' => 'Nòm utèint:',
+'passwordreset-domain' => 'Proprietê:',
 
 # Edit page toolbar
-'bold_sample' => 'Grassètt',
-'italic_sample' => 'Cursìv',
-'media_tip' => 'Cullegameint al file',
+'bold_sample' => 'Grasèt',
+'bold_tip' => 'Grasèt',
+'italic_sample' => 'Cursîv',
+'italic_tip' => 'Cursîv',
+'link_sample' => 'Tétol dal colegamèint',
+'link_tip' => 'Colegamèint intêren',
+'extlink_sample' => 'http://www.example.com tétol dal colegamèint',
+'extlink_tip' => "Colegamèin d'ed fōra (ricôrdet ed mèter préma http://)",
+'headline_sample' => 'Intestasiòun',
+'headline_tip' => 'Intestasiòun ed 2° livèl',
+'nowiki_sample' => 'Mèt dèinter ché al tèst mìa furmatê',
+'nowiki_tip' => 'An badêr mìa la furmatasiòun wiki',
+'image_tip' => 'Mèt dèinter al file',
+'media_tip' => "Colegamèint al 'file'",
+'sig_tip' => "Fîrma cun la dâta e l'ōra",
+'hr_tip' => 'Rîga spiâna (drōva cun giudési)',
 
 # Edit pages
-'summary' => 'Summari:',
-'savearticle' => 'Sälv la pàgina',
-'preview' => 'Vadä prima',
-'showpreview' => "Vadä l'antepeima",
-'showdiff' => 'Vadä li cambiameint',
-'blockedtitle' => 'Uteint bluccä',
-'newarticle' => '(Növ)',
-'note' => "'''Nota:'''",
-'editing' => 'Mudifich ad $1',
-'editingsection' => 'Mudifich ad $1 (sezion)',
-'editingcomment' => 'Mudifich ad $1 (növ sezion)',
-'editconflict' => 'Conflitt ad mudifich: $1',
-'yourtext' => 'Al tò test',
-'yourdiff' => 'Differeinz',
-'template-protected' => '(prutett)',
-'template-semiprotected' => '(mézz-prutett)',
-'log-fulllog' => 'Vadä al log cumplet',
-'edit-conflict' => 'Conflitt ad mudifich.',
+'summary' => 'Sûnt:',
+'minoredit' => "Còsta l'é 'na mudéfica céca",
+'watchthis' => 'Tîn adrē a cla pàgina ché',
+'savearticle' => 'Sêlva la pàgina',
+'preview' => 'Guêrda préma',
+'showpreview' => "Guêrda préma 'd salvêr",
+'showdiff' => 'Guêrda i cambiamèint',
+'anoneditwarning' => "'''Atensiòun:''' Ingrès mìa fât. Al tó indirés IP al srà sgnê int la stòria ed cla pàgina chè.",
+'blockedtitle' => 'Utèint bluchê',
+'newarticle' => '(Nōv)',
+'newarticletext' => "Al colegamèint apèina fât al cumbîna cun 'na pàgina ch' an n'é mìa incòra stêda fâta. S'ét vō fêr la pàgina adès, l'é asê cumincêr a scréver al tèst int la caşèla ché sòt (per vedèr infurmasiòun pió precîşi guêrda la [[{{MediaWiki:Helppage}}|pàgina 'd ajót]]). Se al colegamèint  l'é stê avêrt per erōr, l'é asê clichêr al pulsânt \"Indrē\" dal tó navigadōr.",
+'noarticletext' => 'In cól mumèint ché la pàgina serchêda l\'é vōda. L\'é pusébil [[Special:Search/{{PAGENAME}}|serchêr sté tétol]] int al j êtri pàgini dal sît, <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} serchêr int i regéster coleghê] opór  [{{fullurl:{{FULLPAGENAME}}|action=edit}} mudifichêr la pàgina adèsa]</span>.',
+'noarticletext-nopermission' => "In cól mumèint ché la pàgina serchêda l'é vōda. L'é pusébil [[Special:Search/{{PAGENAME}}|serchêr sté tétol]] int al j êtri pàgini dal sît o<span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} serchêr int i regéster coleghê] <span>, mó an 't gh'ê mìa al permès ed fêr cla pàgina ché.",
+'note' => "'''Nôta:'''",
+'editing' => 'Mudéfica ed $1',
+'editingsection' => 'Mudéfica ed $1 (sesiòun)',
+'editingcomment' => 'Mudéfica e $1 (sesiòun nōva)',
+'editconflict' => "Cuntrâst 'd edisiòun só $1",
+'yourtext' => 'Al tó tèst',
+'yourdiff' => 'Diferèinsi',
+'template-protected' => '(prutèt)',
+'template-semiprotected' => '(mèz-prutèt)',
+'log-fulllog' => 'Guêrda la stòria dal registrasiòun',
+'edit-conflict' => "Cuntrâst 'd edisiòun",
+
+# Parser/template warnings
+'post-expand-template-inclusion-warning' => "'''Atensiòun:''' la grandèsa di mudē més dèinter l'é trôp grôsa. Soquânt mudē gnirâ mìa més dèinter.",
+'post-expand-template-inclusion-category' => "Pàgini in dó la grandèsa di mudē més dèinter la và d'ed sōver dal lémit permés.",
+'post-expand-template-argument-category' => 'Pàgini cun mudē sèinsa argumèint.',
 
 # History pages
-'viewpagelogs' => 'Vadä li log ad custa pàgina ché',
-'currentrev' => 'Ültima version',
-'currentrev-asof' => 'Ültima version dle $1',
-'revisionasof' => 'Version dle $1',
-'revision-info' => 'Version dle $1, avtur: $2',
-'previousrevision' => "← Version piö vecc'",
-'nextrevision' => 'Versiòn piö növ →',
-'currentrevisionlink' => 'Ültima version',
-'cur' => 'curr',
-'next' => 'succ',
-'last' => 'prec',
-'page_first' => 'prima',
-'page_last' => 'ültim',
+'viewpagelogs' => "Guêrda la stòria 'd cla pàgina ché",
+'currentrev' => 'Ûltma revişiòun',
+'currentrev-asof' => 'Ûltma revişiòun dal $1',
+'revisionasof' => 'Revişiòun dal $1',
+'revision-info' => 'Revişiòun ed $1, avtōr: $2',
+'previousrevision' => '← Revişiòun pió vècia',
+'nextrevision' => 'Revişiòun pió nōva →',
+'currentrevisionlink' => 'Ûltma revişiòun',
+'cur' => 'cur',
+'next' => 'Còl dôp',
+'last' => 'Còl préma',
+'page_first' => 'préma',
+'page_last' => 'ûltem',
+'histlegend' => "Cunfrûnt tra 'l revisiòun:  sernés al caşèli cumpâgni al revisiòun vrûdi e schésa Invio o al ptòun in bâs. Spiegasiòun: : '''({{int:cur}})''' = diferèinsi cun la revisiòun d' adèsa, '''({{int:last}})''' = diferèinsi cun larevisiòun ed préma, '''{{int:minoreditletter}}''' = mudéfica céca.",
+'history-fieldset-title' => "Nâviga int la stòria 'd la pàgina",
+'history-show-deleted' => 'Sōl quî scanşlê',
 
 # Revision feed
 'history-feed-item-nocomment' => '$1 al $2',
 
 # Revision deletion
-'rev-delundel' => 'vadä/anscönd',
-'revdelete-radio-set' => 'Sì',
-'revdelete-radio-unset' => 'No',
-'revdelete-reasonotherlist' => 'Ätar ragion',
+'rev-delundel' => 'Guêrda/nascònd',
+'revdelete-radio-set' => 'Nascònd',
+'revdelete-radio-unset' => 'Fà vèder',
+'revdel-restore' => 'Câmbia la vidûda.',
+'revdelete-reasonotherlist' => 'Êtra ragiòun',
 
 # Merge log
-'revertmerge' => "Annullä l'ünion",
+'revertmerge' => "Scanşèla l'uniòun",
 
 # Diffs
-'lineno' => 'Riga $1:',
-'editundo' => 'cancellä',
+'history-title' => '$1 stòria dal mudéfichi',
+'lineno' => 'Rîga $1:',
+'compareselectedversions' => 'Cunfrûnta al revisiòun sernîdi.',
+'editundo' => 'scanşèla',
 
 # Search results
-'searchresults' => "Risultät d'la ricerch",
-'searchresults-title' => 'Risultät d\'la ricerch ad "$1"',
-'viewprevnext' => 'Väda ($1 {{int:pipe-separator}} $2) ($3).',
-'searchprofile-articles' => 'Pàgin ad cuntinüt',
-'searchprofile-images' => 'Multimëdi',
-'searchprofile-everything' => 'Tütt',
-'searchprofile-advanced' => 'Avanzät',
-'searchprofile-articles-tooltip' => 'Cercä in $1',
-'searchprofile-project-tooltip' => 'Cercä in $1',
-'searchprofile-images-tooltip' => 'Cercä immàgin',
-'search-result-size' => '$1 ({{PLURAL:$2|1 parola|$2 paroli}})',
+'searchresults' => "Rişultê 'd la sērca",
+'searchresults-title' => 'Rişultê \'d la sērca ed "$1"',
+'prevn' => '{{PLURAL:$1|còl préma|quî préma $1}}',
+'nextn' => '{{PLURAL:$1|al seguèint|i seguèint $1}}',
+'prevn-title' => '{{PLURAL:$1|Al rişultêt ed préma|$1 i rişultêt ed préma}}',
+'nextn-title' => '{{PLURAL:$1|Al rişultêt ed préma|$1 i rişultêt ed préma}}',
+'shown-title' => 'Fà vèder {{PLURAL:$1|un rişultêt|$1 di rişultêt}}',
+'viewprevnext' => 'Guêrda ($1 {{int:pipe-separator}} $2) ($3).',
+'searchmenu-exists' => "'''Int al sît a gh'é 'na pàgina cun al nòm [[:$1]].'''
+{{PLURAL:$2|0=|Guêrda ânca chiêter ch'în stê catê.}}",
+'searchmenu-new' => "'''Şvilópa la pàgina \"[[:\$1]]\" insém a cól sît ché! '''{{PLURAL:\$2|0=|Guêrda ânch i rişultêt catê}}.",
+'searchprofile-articles' => "Pàgini 'd j argumèint",
+'searchprofile-project' => "Pàgini 'd ajót e relatîvi al prugèt.",
+'searchprofile-images' => 'Multimèdia',
+'searchprofile-everything' => 'Tót',
+'searchprofile-advanced' => 'Specêla',
+'searchprofile-articles-tooltip' => 'Sèirca in $1',
+'searchprofile-project-tooltip' => 'Sèirca in $1',
+'searchprofile-images-tooltip' => "Sèirca 'file'",
+'searchprofile-everything-tooltip' => "Sērca dapertót (ânch int al pàgini 'd discusuòun).",
+'searchprofile-advanced-tooltip' => 'Sērca int i spâsi di nòm fât só mzûra.',
+'search-result-size' => "$1 ({{PLURAL:$2|'na parôla|$2 parôli}})",
 'search-redirect' => '(redirect $1)',
-'search-section' => '(sezion $1)',
-'search-interwiki-caption' => 'Prugett fradel',
-'search-interwiki-default' => 'Risültä da $1:',
-'search-interwiki-more' => '(ätar)',
-'searchall' => 'tütt',
-'powersearch-toggleall' => 'Tütt',
-'powersearch-togglenone' => 'Ansöin',
+'search-section' => '(sesiòun $1)',
+'search-suggest' => "Fōrsi 't serchêv $1",
+'search-interwiki-caption' => 'Prugèt fradē',
+'search-interwiki-default' => 'Rişultêt da $1:',
+'search-interwiki-more' => '(êter)',
+'searchall' => 'tót',
+'showingresultsheader' => "{{PLURAL:$5|Al risultêt '''$1''' ed '''$3'''|I risultêt '''$1 - $2''' ed '''$3'''}} per '''$4'''",
+'search-nonefound' => "La sērca an n'à mìa dê di rişultê.",
+'powersearch-toggleall' => 'Tót',
+'powersearch-togglenone' => 'Nisûn',
 
 # Preferences page
-'preferences' => 'Prefereinz',
-'mypreferences' => 'Al me prefereinz',
-'prefs-edits' => 'Nümar ad mudifich:',
-'prefs-skin' => 'Skin',
-'skin-preview' => 'Vadä prima',
-'datedefault' => 'Ansiön prefereinz',
-'prefs-beta' => 'Funzionalitä beta',
-'saveprefs' => 'Salvä',
-'prefs-editing' => 'Mudificä',
-'rows' => 'Righe',
-'searchresultshead' => 'Cercä',
-'timezoneregion-africa' => 'Africa',
-'timezoneregion-america' => 'América',
-'timezoneregion-antarctica' => 'Antartide',
-'timezoneregion-arctic' => 'Artide',
-'timezoneregion-asia' => 'Asia',
-'timezoneregion-atlantic' => 'Ucean Atlantich',
-'timezoneregion-australia' => 'Australia',
-'timezoneregion-europe' => 'Europa',
-'timezoneregion-indian' => 'Ucean Indian',
-'timezoneregion-pacific' => 'Ucean Pacifich',
+'preferences' => 'Preferèinsa',
+'mypreferences' => 'Preferèinsi',
+'prefs-edits' => 'Mudéfichi fâti:',
+'prefs-skin' => 'Aspèt grâfich (skin)',
+'skin-preview' => 'Guêrda préma',
+'datedefault' => 'Nisóna preferèinsa',
+'prefs-beta' => "Funsionamèint 'beta'",
+'saveprefs' => 'Sêlva',
+'prefs-editing' => "Caşèla 'd mudéfica",
+'rows' => 'Rîghi',
+'searchresultshead' => 'Sērca',
+'timezoneregion-africa' => 'Âfrica',
+'timezoneregion-america' => 'Amèrica',
+'timezoneregion-antarctica' => 'Antârtide',
+'timezoneregion-arctic' => 'Ârtide',
+'timezoneregion-asia' => 'Âsia',
+'timezoneregion-atlantic' => 'Ocèan Atlântich',
+'timezoneregion-australia' => 'Austrâlia',
+'timezoneregion-europe' => 'Eurôpa',
+'timezoneregion-indian' => 'Ocèan Indiân',
+'timezoneregion-pacific' => 'Ocèan Pacéfich',
 'youremail' => 'E-mail:',
-'username' => 'Nom uteint',
-'uid' => 'ID uteint',
-'prefs-memberingroups' => 'Membar {{PLURAL:$1|dal grüpp|dei grüpp}}:',
-'yourrealname' => 'Nom ver:',
-'yourlanguage' => 'Leingua',
+'username' => '{{GENDER:$1|Nòm utèint}}',
+'uid' => '{{GENDER:$1|utèint}}',
+'prefs-memberingroups' => '{{GENDER:$2|Elemèint}}{{PLURAL:$1|dal gróp|di gróp}}:',
+'yourrealname' => 'Nòm vèira:',
+'yourlanguage' => 'Léngua',
 'email' => 'E-mail',
 
 # Groups
-'group' => 'Grüpp:',
-'group-user' => 'Uteint',
-'group-autoconfirmed' => 'Uteint autoconvalidät',
+'group' => 'Gróp:',
+'group-user' => 'Utèint',
+'group-autoconfirmed' => 'Utèint cunvalidê da per ló',
 'group-bot' => 'Bot',
-'group-sysop' => 'Amministradór',
-'group-bureaucrat' => 'Bürocrat',
+'group-sysop' => 'Aministradōr',
+'group-bureaucrat' => 'Funsionâri',
 'group-suppress' => 'Oversight',
-'group-all' => '(tütt)',
+'group-all' => '(tót)',
 
-'group-user-member' => '{{GENDER:$1|uteint}}',
-'group-autoconfirmed-member' => '{{GENDER:$1|uteint autoconvalidät}}',
+'group-user-member' => '{{GENDER:$1|utèint}}',
+'group-autoconfirmed-member' => '{{GENDER:$1|utèint convalidê da per ló}}',
 'group-bot-member' => '{{GENDER:$1|bot}}',
-'group-sysop-member' => '{{GENDER:$1|amministradór}}',
-'group-bureaucrat-member' => '{{GENDER:$1|bürocrat}}',
+'group-sysop-member' => '{{GENDER:$1|aministradōr}}',
+'group-bureaucrat-member' => '{{GENDER:$1|funsionâri}}',
 'group-suppress-member' => '{{GENDER:$1|oversight}}',
 
-'grouppage-user' => '{{ns:project}}:Uteint',
-'grouppage-autoconfirmed' => '{{ns:project}}:Uteint autoconvalidät',
+'grouppage-user' => '{{ns:project}}:Utèint',
+'grouppage-autoconfirmed' => '{{ns:project}}:Utèint convalidê da per ló',
 'grouppage-bot' => '{{ns:project}}:Bot',
-'grouppage-sysop' => '{{ns:project}}:Amministradór',
-'grouppage-bureaucrat' => '{{ns:project}}:Bürocrat',
+'grouppage-sysop' => '{{ns:project}}:Aministradōr',
+'grouppage-bureaucrat' => '{{ns:project}}:Funsionâri',
 'grouppage-suppress' => '{{ns:project}}:Oversight',
 
 # Rights
-'right-read' => "Legg' pàgin",
-'right-edit' => 'Mudifich pàgin',
+'right-read' => 'Al lēş al pàgini',
+'right-edit' => 'Mudéfica pàgini',
 
 # Associated actions - in the sentence "You do not have permission to X"
-'action-read' => "legg' custa pàgina ché",
-'action-edit' => 'mudifch custa pàgina ché',
-'action-createpage' => 'creä pàgin',
-'action-move' => 'spustä custa pàgina ché',
-'action-movefile' => 'spustä cust file ché',
-'action-upload' => 'caricä cust file ché',
-'action-delete' => 'cancellä custa pàgina ché',
+'action-read' => 'lēzer cla pàgina ché',
+'action-edit' => 'Mudifichêr cla pàgina ché',
+'action-createpage' => 'inventêr pàgini',
+'action-move' => 'spustêr cla pàgina ché',
+'action-movefile' => "spustêr cól 'file' ché",
+'action-upload' => "carghêr cól 'file' ché",
+'action-delete' => 'scanşlêr cla pàgina ché',
 
 # Recent changes
-'recentchanges' => 'Ültim cambiameint',
+'recentchanges' => 'Ûltmi mudéfichi',
+'recentchanges-legend' => 'Siēlti ûltmi mudéfichi.',
+'recentchanges-label-newpage' => "Cun cla mudéfica ché t'é fât 'na pàgina nōva.",
+'recentchanges-label-minor' => "Còsta l'é 'na mudéfica céca",
+'recentchanges-label-bot' => "Cla mudéfica ché l'é stêda fâta da un bot.",
+'recentchanges-label-unpatrolled' => "Cla mudéfica ché an n'é mìa incòra stêda verifichêda.",
+'rclistfrom' => 'Fà vèder al mudéfichi fâti a partîr da $1.',
+'rcshowhideminor' => '$1 al mudéfichi céchi',
 'rcshowhidebots' => '$1 i bot',
-'rcshowhidemine' => '$1 le mé mudifich',
-'diff' => 'diff',
-'hist' => 'cron',
-'hide' => 'Nascond',
-'show' => 'mustra',
+'rcshowhideliu' => '$1 j utèint registrê',
+'rcshowhideanons' => '$1 j utèint sèinsa nòm.',
+'rcshowhidemine' => '$1 al mē mudéfichi',
+'rclinks' => 'Fà vèder al $1 ûltmi mudéfichi fâti int j ûltem $2 dé<br />$3',
+'diff' => 'dif',
+'hist' => 'stòr',
+'hide' => 'Lōga',
+'show' => 'Fà vèder',
 'minoreditletter' => 'm',
 'newpageletter' => 'N',
 'boteditletter' => 'b',
-'number_of_watching_users_pageview' => '[usservä da {{PLURAL:$1|vün uteint|$1 uteint}}]',
-'rc_categories_any' => 'Qualsía',
+'number_of_watching_users_pageview' => '[vésta da {{PLURAL:$1|un utèint|$1 utèint}}]',
+'rc_categories_any' => "Bast' ech sia",
+'rc-enhanced-expand' => 'Fà vèder i particulêr.',
+'rc-enhanced-hide' => 'Lōga i particulêr.',
+
+# Recent changes linked
+'recentchangeslinked' => 'Mudéfichi coleghêdi',
+'recentchangeslinked-toolbox' => 'Mudéfichi coleghêdi',
+'recentchangeslinked-title' => 'Mudéfichi coleghêdi a $1.',
+'recentchangeslinked-summary' => "Cla pàgina specêla ché la fà vèder al j ûltmi mudéfichi al pàgini coleghêdi da còla sgnêda (o dèinter int la categoréia sgnêda). Al pàgini dèint a la tó lésta 'd j [[Special:Watchlist|tgnû sòt ôc specêl]] în sgnêdi in '''grasèt'''.",
+'recentchangeslinked-page' => "Nòm ' d la pàgina.",
+'recentchangeslinked-to' => 'Fà vèder sōl al mudéfichi fâti al pàgini coleghêdi a còla sgnêda.',
 
 # Upload
-'upload' => 'Cärga un file',
+'upload' => "Cârga un 'file'",
+'filedesc' => 'Sûnt.',
 
-'license' => 'Licinza:',
-'license-header' => 'Licinza',
-'nolicense' => 'Ansöna licinza seleziunä',
+'license' => 'Licèinsa:',
+'license-header' => 'Licèinsa',
+'nolicense' => 'Nisóna licèinsa sgnêda',
 
 # Special:ListFiles
-'listfiles_date' => 'Data',
-'listfiles_name' => 'Nom',
-'listfiles_user' => 'Uteint',
+'listfiles_date' => 'Dâta',
+'listfiles_name' => 'Nòm',
+'listfiles_user' => 'Utèint',
 
 # File description page
-'file-anchor-link' => 'Immàgin',
-'filehist' => 'Storia dal file',
-'filehist-current' => 'curreint',
-'filehist-datetime' => 'Data/Ura',
-'filehist-thumb' => 'Miniadüra',
-'filehist-user' => 'Uteint',
-'filehist-dimensions' => 'Dimension',
-'filehist-comment' => 'Uggett',
-'imagelinks' => 'Cullegameint al file',
+'file-anchor-link' => "'File'",
+'filehist' => "Stòria 'd la pàgina",
+'filehist-help' => "Fà cléch insém a 'n gróp dâta/ōra per vèder al file cm'é l'ēra int al mumèint e-sgnê",
+'filehist-current' => '(adès)',
+'filehist-datetime' => 'Dâta/Ōra',
+'filehist-thumb' => 'Miniadûra',
+'filehist-thumbtext' => 'Miniadûra ed la revisiòun dal $1.',
+'filehist-user' => 'Utèint',
+'filehist-dimensions' => 'Amzûri',
+'filehist-comment' => 'Cumèint',
+'imagelinks' => "Ûş dal 'file'",
+'linkstoimage' => "{{PLURAL:$1|Int la pàgina seguèint a gh'é|Int al seguèinti $1 pàgini a gh'é}} colegamèint al file:",
+'nolinkstoimage' => "Nisóna pàgina la gh'à colegamèint al file",
+'sharedupload-desc-here' => "Cól file ché al deşvîn da $1 e al pōl èser druvê da êter prugèt. Ed sègvit a vîn fât vèder la spiegasiòun che gh'é int la [$2 pàgina de spiegasiòun dal file].",
 
 # File deletion
-'filedelete-submit' => 'Cancellä',
+'filedelete-submit' => 'Scanşela',
 
 # Random page
-'randompage' => 'Una pàgina a cäs',
+'randompage' => "'Na pàgina a chêş",
 
-'brokenredirects-edit' => 'cambi',
+'brokenredirects-edit' => 'Mudéfica',
 
 # Miscellaneous special pages
 'nbytes' => '$1 {{PLURAL:$1|byte|byte}}',
-'newpages' => 'Pàgin növ',
-'move' => 'Spusta',
+'nmembers' => '$1 {{PLURAL:$1|elemèint}}',
+'newpages' => 'Pàgini pió nōvi',
+'move' => 'Spôsta',
 
 # Book sources
-'booksources-go' => 'Vé',
+'booksources-go' => 'Và',
+
+# Special:Log
+'log' => 'Regéster',
 
 # Special:AllPages
 'alphaindexline' => 'da $1 a $2',
-'allpagessubmit' => 'Vé',
+'allpagessubmit' => 'Và',
+
+# Special:Categories
+'categories' => 'Categoréi',
+
+# Special:LinkSearch
+'linksearch-line' => '$1 preşèint int la pàgina $2',
 
 # Special:ListUsers
-'listusers-submit' => 'Mustra',
+'listusers-submit' => 'Fà vèder',
 
 # Special:ListGroupRights
-'listgrouprights-group' => 'Grüpp',
+'listgrouprights-group' => 'Gróp:',
 
 # Email user
 'emailfrom' => 'Da:',
 'emailto' => 'A:',
-'emailsubject' => 'Uggett:',
-'emailmessage' => "Messagg'",
+'emailsubject' => 'Argumèint:',
+'emailmessage' => 'Mesâg',
 
 # Watchlist
-'mywatchlist' => 'Le mé üsservat speciäl',
-'watchlistfor2' => "Dall'uteint $1 $2",
-'watchnologin' => 'Si mia enträ',
-'watch' => 'Vadä',
-'watchthispage' => 'Vadä custa pàgina ché',
-'unwatch' => "N'la vadär piö",
+'mywatchlist' => 'Sòt uservasiòun',
+'watchlistfor2' => "Da l'utèint $1 $2",
+'watchnologin' => "An t'é mìa gnû dèinter",
+'watch' => 'Và adrē',
+'watchthispage' => 'Và adrē a cla pàgina ché',
+'unwatch' => 'Andêr mìa adrē',
 
 'created' => 'creät',
 'changed' => 'mudifegat',
 
 # Delete
-'delete-confirm' => 'Cancellä "$1"',
-'delete-legend' => 'Cancellä',
+'delete-confirm' => 'Scanşela "$1"',
+'delete-legend' => 'Scanşela',
+'actioncomplete' => 'Asiòun cumpîda',
+'actionfailed' => 'Asiòun falîda',
+'dellogpage' => 'Scanşladûri',
 
 # Rollback
-'rollback_short' => 'Turne indré',
-'rollbacklink' => 'Avé indré la mudifech ad prima',
-'rollbackfailed' => 'Si mia riussì a turnä indré',
+'rollback_short' => 'Tōrna a préma dal mudéfichi',
+'rollbacklink' => 'tōrna a préma dal mudéfichi',
+'rollbackfailed' => "An t'é mia turnê indrē",
 
 # Protect
 'pagesize' => '(byte)',
 
 # Restrictions (nouns)
-'restriction-edit' => 'Mudifich',
-'restriction-move' => 'Spusta',
-'restriction-create' => 'Creä',
-'restriction-upload' => 'Caricä',
+'restriction-edit' => 'Mudéfichi',
+'restriction-move' => 'Spôsta',
+'restriction-create' => 'Invèinta',
+'restriction-upload' => 'Cârga',
 
 # Undelete
-'undeletelink' => 'vada/turna indré',
-'undeleteviewlink' => 'vada',
-'undelete-show-file-submit' => 'Sì',
+'undeletelink' => 'guêrda/recóper',
+'undeleteviewlink' => 'Guêrda',
+'undelete-show-file-submit' => 'Sé',
 
 # Namespace form on various pages
-'namespace' => 'Namespace:',
-'blanknamespace' => '(Principäl)',
+'namespace' => 'Spâsi di nòm',
+'invert' => "scâmbia 'l pêrti siēlta",
+'blanknamespace' => '(Principêl)',
 
 # Contributions
-'contributions' => "Contribüdi de l'uteint",
-'contributions-title' => 'Contribüdi ed $1',
-'mycontris' => 'Le mé contribüdi',
-'contribsub2' => 'Par $1 ($2)',
-'uctop' => '(ültim par la pàgin)',
+'contributions' => "Lavōr fât da {{GENDER:$1|l'utèint}}",
+'contributions-title' => 'Lavōr ed $1',
+'mycontris' => 'I mē lavōr',
+'contribsub2' => 'Per {{GENDER:$3|$1}}($2)',
+'uctop' => '(adès)',
+'month' => 'Dal mèiş (e quî préma):',
+'year' => "Da l'ân (e quî préma):",
 
-'sp-contributions-submit' => 'Cercä',
+'sp-contributions-submit' => 'Sērca',
 
 # What links here
+'whatlinkshere' => 'A pûnten ché',
+'whatlinkshere-title' => 'Pàgini che pûnten a "$1"',
 'whatlinkshere-page' => 'Pàgina:',
-'whatlinkshere-links' => '← cullegameint',
+'linkshere' => "Al pàgini segvèinti a gh'àn di colegamèint a '''[[:$1]]'''.",
+'isredirect' => 'Pàgina redirect',
+'istemplate' => 'uniòun',
+'isimage' => "Colegamèint vêrs al 'file'",
+'whatlinkshere-prev' => '{{PLURAL:$1|còl préma|quî préma $1}}',
+'whatlinkshere-next' => '{{PLURAL:$1|còl dôp|quî dôp $1}}',
+'whatlinkshere-links' => '← colegamèint',
+'whatlinkshere-hideredirs' => '$1redirect',
+'whatlinkshere-hidetrans' => '$1 uniòun',
+'whatlinkshere-hidelinks' => '$1 colegamèint',
+'whatlinkshere-filters' => 'Fîlter',
 
 # Block/unblock
-'block' => "Bluccä l'uteint",
-'unblock' => "Sbluccä l'uteint",
-'blockip' => "Bluccä l'uteint",
-'blockip-title' => "Bluccä l'uteint",
-'blockip-legend' => "Bluccä l'uteint",
-'ipbotheroption' => 'ätar',
-'ipb-unblock-addr' => 'Sbluccä $1',
-'unblockip' => "Sbluccä l'uteint",
-'blocklist' => 'Uteint bluccä',
-'ipblocklist-submit' => 'Cercä',
-'ipblocklist-otherblocks' => 'Ã\84tar {{PLURAL:$1|blocc|blocc}}',
-'blocklink' => 'blocc',
-'unblocklink' => 'sblocc',
-'change-blocklink' => 'cambiä al blocc',
-'contribslink' => 'cuntribüti',
-'unblocklogentry' => "l'à sbluccä $1",
+'block' => "Blôca l'utèint",
+'unblock' => "Şblôcä l'utèint",
+'blockip' => "Blôcä l'utèint",
+'blockip-legend' => "Blôcä l'utèint",
+'ipboptions' => '2 ōri:2 hours,1 dé:1 day,3 dé:3 days,1 stmâna:1 week,2 stâni:2 weeks,1 mèiş:1 month,3 mèiş:3 months,6 mèiş:6 months,1 ân:1 year,infinito:infinite',
+'ipb-unblock-addr' => 'Şblôcä $1',
+'unblockip' => "Şblôcä l'utèint",
+'blocklist' => 'Utèint bluchê',
+'ipblocklist' => 'Utèint bluchê',
+'ipblocklist-submit' => 'Sērca',
+'ipblocklist-otherblocks' => 'Ã\8ater {{PLURAL:$1|blôch}}',
+'blocklink' => 'blôca',
+'unblocklink' => 'şblôca',
+'change-blocklink' => 'câmbia blôch',
+'contribslink' => 'lavōr',
+'unblocklogentry' => "l'à şbluchê $1",
 
 # Move page
-'move-page' => 'Spustameint ad $1',
-'move-page-legend' => 'Spustä la pàgina',
-'movearticle' => 'Spustä la pàgina:',
-'movepagebtn' => 'Spustä la pàgina',
-'movelogpage' => 'Spustameint',
-'revertmove' => 'Turné indré',
+'move-page' => 'Spustamèint ed $1',
+'move-page-legend' => 'Spustamèint ed pàgina',
+'movearticle' => 'Spôsta la pàgina:',
+'movepagebtn' => 'Spôsta la pàgina',
+'movelogpage' => 'Spustamèint',
+'revertmove' => 'armèt',
 
 # Export
-'export-submit' => 'Esporta',
+'export' => "Pôrta fōra 'l pàgini.",
+'export-submit' => 'Pôrta fōra',
 
 # Namespace 8 related
-'allmessages-filter-all' => 'Tütt',
-'allmessages-language' => 'Leingua:',
-'allmessages-filter-submit' => 'Vé',
+'allmessages-filter-all' => 'Tót',
+'allmessages-language' => 'Léngua:',
+'allmessages-filter-submit' => 'Và',
 
 # Thumbnails
-'thumbnail-more' => 'Allargä',
+'thumbnail-more' => 'Ingrandés',
+'thumbnail_error' => 'Erōr mèinter ét fêv la miniadûra:$1',
 
 # Special:Import
-'import-upload-filename' => 'Nom dal file:',
-'import-comment' => 'Uggett:',
-'import-upload' => 'Caricä dat XML',
+'import-upload-filename' => "Nòm dal 'file':",
+'import-comment' => 'Argumèint:',
+'import-upload' => 'Cârga infurmasiòun XML',
 
 # Tooltip help for the actions
-'tooltip-pt-logout' => 'Üscì',
-'tooltip-ca-move' => 'Spustä custa pàgina ché',
-'tooltip-search' => 'Cercä deintar ad {{SITENAME}}',
-'tooltip-p-logo' => 'Väda la pàgina principäl',
-'tooltip-n-mainpage' => 'Väda la pàgina principäl',
-'tooltip-n-mainpage-description' => 'Väda la pàgina principäl',
-'tooltip-n-randompage' => 'Fa vëd una pàgina a cäs',
-'tooltip-n-help' => 'Pàgin di aiüt',
-'tooltip-t-upload' => 'Cärag file multimediäl',
-'tooltip-ca-nstab-project' => 'Vadä la pàgina dal prugett',
-'tooltip-ca-nstab-image' => ' 
-Vadä la pàgina dal file',
-'tooltip-ca-nstab-template' => 'Väda la template',
-'tooltip-ca-nstab-help' => "Vadä la pàgina d'aiüt",
-'tooltip-ca-nstab-category' => "Vadä la pàgina d'la categoria",
-'tooltip-save' => 'Salvä li tò cambiameint',
+'tooltip-pt-userpage' => 'La tó pàgina utèint',
+'tooltip-pt-mytalk' => "La tó pàgina 'd discusiòun.",
+'tooltip-pt-preferences' => 'Al mē preferèinsi.',
+'tooltip-pt-watchlist' => "Elèinch dal pàgini che t'é drē tgnîr sòt ôc.",
+'tooltip-pt-mycontris' => 'Elèinch di tō lavōr.',
+'tooltip-pt-login' => "A 's cunsélia 'd fêr la registrasiòun, ânca s' an n'é mia ubligatôri.",
+'tooltip-pt-logout' => 'Và fōra',
+'tooltip-ca-talk' => 'Guêrda al discusiòun relatîvi a cla pàgina chè.',
+'tooltip-ca-edit' => 'Ét pō mudifiche cla pàgina ché. Per piaşèir drōva al ptòun "Guêrda préma" préma \'d salvêr còl che t\'é fât.',
+'tooltip-ca-addsection' => "Cumîncia 'na sesiòun nōva.",
+'tooltip-ca-viewsource' => "Cla pàgina ché l'é sòta prutesiòun, mó 't pō vèder al só côdis surzéia.",
+'tooltip-ca-history' => 'Revişiòun fâti a cla pàgina ché.',
+'tooltip-ca-move' => 'Spôsta cla pàgina ché (câmbia tétol)',
+'tooltip-ca-watch' => "Zûnta cla pàgina ché a la tó lésta di tgnû 'd ôc specêl.",
+'tooltip-ca-unwatch' => "Tó via cla pàgina ché da la tó lésta di tgnû 'd ôc specêl.",
+'tooltip-search' => 'Sērca dèinter ed {{SITENAME}}',
+'tooltip-search-go' => "Và a'na pàgina cun al tétol sgnê, s' al gh'é.",
+'tooltip-search-fulltext' => 'Sērca int al pàgini al tèst e-sgnê.',
+'tooltip-p-logo' => 'Guêrda la pàgina principêla',
+'tooltip-n-mainpage' => 'Guêrda la pàgina principêla',
+'tooltip-n-mainpage-description' => 'Guêrda la pàgina principêlal',
+'tooltip-n-portal' => "Spiegasiòun dal prugèt, còl ch'ét pō fêr, in dó catêr al côşi.",
+'tooltip-n-currentevents' => "Infurmasiòun só i fât 'd adèsa.",
+'tooltip-n-recentchanges' => 'Elèinch dal j ûltmi mudéfichi dal sît',
+'tooltip-n-randompage' => "Fà vèder 'na pàgina a chêş",
+'tooltip-n-help' => "Pàgini 'd ajót",
+'tooltip-t-whatlinkshere' => "Elèinch ed tót' al pàgini ch'în coleghêdi a còsta.",
+'tooltip-t-recentchangeslinked' => 'Elèinch dal j ûltmi mudéfichi al pàgini coleghêdi a còsta.',
+'tooltip-feed-atom' => 'Feed Atom per cla pàgina ché.',
+'tooltip-t-contributions' => "Lèsta di lavōr fât da cl'utèint ché.",
+'tooltip-t-upload' => "Cârga un 'file'",
+'tooltip-t-specialpages' => 'Elèinch ed tót al pàgini specêli',
+'tooltip-t-print' => 'Per stampêr cla pàgina ché.',
+'tooltip-t-permalink' => "Colegamèint fés a cla revişiòun ché 'd  la pàgina.",
+'tooltip-ca-nstab-main' => 'Guêrda la pàgina',
+'tooltip-ca-nstab-user' => 'Guêrda la pàgina utèint',
+'tooltip-ca-nstab-project' => 'Guêrda la pàgina dal prugèt',
+'tooltip-ca-nstab-image' => "Guêrda la pàgina dal 'file'",
+'tooltip-ca-nstab-template' => "Guêrda 'l template",
+'tooltip-ca-nstab-help' => "Guêrda la pàgina d'ajót",
+'tooltip-ca-nstab-category' => "Guêrda la pàgina 'd la categoréia",
+'tooltip-minoredit' => "Sègna cme 'na mudéfica céca",
+'tooltip-save' => 'Sêlva al mudéfichi',
+'tooltip-preview' => "Guêrda al mudéfichi préma 'd salvêr (cunsiliê préma 'd salvêr)",
+'tooltip-diff' => "Guêrda 'l mudéfichi fâti al tèst",
+'tooltip-compareselectedversions' => "Guêrda al diferèinsi tr' al dō revisiòun sernîdi ed cla pàgina ché.",
+'tooltip-watch' => "Zûnta cla pàgina ché a la tó lésta di tgnû 'd ôc specêl.",
+'tooltip-rollback' => "\"Rollback\" al scanşèla cun un cléch tót' al mudéfichi fâti a cla pàgina ché da l'ûltem ch' al gh'à més al mân.",
+'tooltip-undo' => '"Scanşèla" al permèt de scanşlêr cla mudéfica ché e l\'arvés al mudèl ed mudéfica in môd "Guerda préma". E al permèt ed mèter dèinter \'na spiegasiòun int l\' elemèint ed la mudéfica.',
+'tooltip-summary' => 'Mèt dèinter un sût cèch.',
 
 # Attribution
-'others' => 'ätar',
+'others' => 'êter',
 
 # Info page
-'pageinfo-header-edits' => 'Mudifich',
-'pageinfo-views' => 'Nümar ad visit',
-'pageinfo-watchers' => 'Numar ad visitador',
-'pageinfo-edits' => 'Nümar ad mudifich',
-'pageinfo-authors' => 'Nümar ad devers autor',
+'pageinfo-header-edits' => 'Stòria dal mudéfichi',
+'pageinfo-views' => 'Nómer dal vîÅ\9fiti',
+'pageinfo-watchers' => "Nómer  'd utèint che gh'àn la pàgina sòt uservasiòun.",
+'pageinfo-edits' => 'Nómer totêl dal mudéfichi',
+'pageinfo-authors' => 'Nómer totêl di divêrs avtôr',
 
 # Browsing diffs
-'previousdiff' => "← Mudifich piö vecc'",
-'nextdiff' => 'Mudifich piö növa →',
+'previousdiff' => "← Diferèinsa 'd préma",
+'nextdiff' => 'Diferèinsa dôp →',
 
 # Media information
-'file-info-gif-looped' => 'ciclich',
-'file-info-png-looped' => 'ciclich',
+'file-info-size' => '$1 × $2 pixel, amzûra dal file:$3, gèner MIME: $4',
+'file-nohires' => "An gh'é mìa la manēra ed vèder pió cêr de csé.",
+'show-big-image' => 'File uriginêl',
+'file-info-gif-looped' => 'A ripetisiòun',
+'file-info-png-looped' => 'A ripetisiòun',
 
 # Special:NewFiles
-'newimages-legend' => 'Nom dal file',
+'newimages-legend' => 'Fîltra',
 'showhidebots' => '($1 i bot)',
-'ilsubmit' => 'Cercä',
-'bydate' => 'par data',
+'ilsubmit' => 'Sērca',
+'bydate' => 'per dâta',
 
 # Video information, used by Language::formatTimePeriod() to format lengths in the above messages
 'ago' => '$1 fa',
 
+# Bad image list
+'bad_image_list' => "La manēra l'é còsta:
+
+a vînen cunsidrê sōl j elèinch puntê (ríghi che cumîncen cun al carâter *). Al prém colegamèint só ògni rîga al dēv èser un colegamèint a un 'file' mìa vrû. I colegamèint che vînen dôp, int l'istèsa rîga, în cunsidrê cme un chêş (oséia, pàgini in dó al 'file' al pōl èser arciamê normalmèint).",
+
 # Metadata
-'metadata' => 'Metadat',
+'metadata' => 'Metadati',
+'metadata-help' => "In cól file ché agh'é dal j infurmasiòun zuntêdi, prubabilmèint zuntêdi da la mâchina fotogrâfica o dal scàner druvê per fotografêrel o per fêrel dvintêr digitêl. Se al file l'é stê mudfifichê, soquânt particulêr a prén cumbinêr mìa cun la realtê.",
+'metadata-fields' => "I câmp relatîv a i metadati ed la figûra, in lésta in cól mesâg ché, a gnirân més int la pàgina ed la figûra quând la tabèla di metadati l'é mustrêda int la fōrma cûrta. Per impustasiòun pre-stabilîda, chiêter câmp a gnirân lughê. 
+* make 
+* model 
+* datetimeoriginal 
+* exposuretime 
+* fnumber 
+* isospeedratings 
+* focallength 
+* artist 
+* copyright 
+* imagedescription 
+* gpslatitude 
+* gpslongitude 
+* gpsaltitude",
 
 # Exif tags
 'exif-exposuretime-format' => '$1 s ($2)',
-'exif-gpsareainformation' => "Nom d'la zona GPS",
-'exif-gpsdatestamp' => 'Data GPS',
-'exif-source' => 'Font',
-'exif-languagecode' => 'Leingva',
-'exif-iimcategory' => 'Categuria',
-'exif-identifier' => 'Identificativ',
+'exif-gpsareainformation' => 'Nòm ed la zôna GPS',
+'exif-gpsdatestamp' => 'Dâta GPS',
+'exif-source' => 'Surzéia',
+'exif-languagecode' => 'Léngva',
+'exif-iimcategory' => 'Categoréia',
+'exif-identifier' => 'Identificatîv',
 
 # 'all' in various places, this might be different for inflected languages
-'watchlistall2' => 'tütt',
-'namespacesall' => 'tütt',
-'monthsall' => 'tütt',
-'limitall' => 'tütt',
+'watchlistall2' => 'tót',
+'namespacesall' => 'tót',
+'monthsall' => 'tót',
 
 # Delete conflict
-'recreate' => 'Creä ad növ',
+'recreate' => 'Tōrna a fêr',
 
 # action=purge
-'confirm_purge_button' => 'OK',
+'confirm_purge_button' => 'Va bèin',
 
 # action=watch/unwatch
-'confirm-watch-button' => 'OK',
-'confirm-unwatch-button' => 'OK',
+'confirm-watch-button' => 'Va bèin',
+'confirm-unwatch-button' => 'Va bèin',
 
 # Multipage image navigation
-'imgmultigo' => 'Vé!',
-'imgmultigoto' => "Vé in s'la pàgina $1",
+'imgmultigo' => 'Và!',
+'imgmultigoto' => 'Và a la pàgina $1',
 
 # Table pager
-'ascending_abbrev' => 'cresc',
-'descending_abbrev' => 'decresc',
-'table_pager_first' => 'Prima pàgina',
-'table_pager_last' => 'Ã\9cltima pàgina',
-'table_pager_limit_submit' => 'Vé',
+'ascending_abbrev' => 'crès',
+'descending_abbrev' => 'câl',
+'table_pager_first' => 'Préma pàgina',
+'table_pager_last' => 'Ã\9bltma pàgina',
+'table_pager_limit_submit' => 'Và',
 
 # Watchlist editor
-'watchlistedit-raw-titles' => 'Titul:',
+'watchlistedit-raw-titles' => 'Tétol:',
 
 # Special:Version
-'version' => 'Version',
-'version-specialpages' => 'Pàgin speciäl',
-'version-other' => 'Ã\84tar',
-'version-version' => '(Version $1)',
-'version-license' => 'Licinza',
-'version-poweredby-others' => 'ätar',
+'version' => 'Versiòun',
+'version-specialpages' => 'Pàgina specêla',
+'version-other' => 'Ã\8ater',
+'version-version' => '(Versiòun $1)',
+'version-license' => 'Licèinsa',
+'version-poweredby-others' => 'êter',
 
 # Special:FileDuplicateSearch
-'fileduplicatesearch-filename' => 'Nom dal file:',
-'fileduplicatesearch-submit' => 'Cercä',
+'fileduplicatesearch-filename' => "Nòm dal 'file':",
+'fileduplicatesearch-submit' => 'Sērca',
 
 # Special:SpecialPages
-'specialpages' => 'Pàgin speciäl',
+'specialpages' => 'Pàgini specêli',
 
 # Special:Tags
-'tags-edit' => 'mudifich',
+'tag-filter' => 'Fîlta per  [[Special:Tags|etichèta]]',
+'tags-edit' => 'mudéfica',
 
 # Special:ComparePages
 'compare-page1' => 'Pàgina 1',
 'compare-page2' => 'Pàgina 2',
-'compare-rev1' => 'Revisiòn 1',
-'compare-rev2' => 'Revisiòn 2',
+'compare-rev1' => 'Revişiòn 1',
+'compare-rev2' => 'Revişiòn 2',
 
 # HTML forms
-'htmlform-reset' => 'Turna indré cul la mudifich',
-'htmlform-selectorother-other' => 'Ã\84tar',
+'htmlform-reset' => 'Scanşèla la mudéfica',
+'htmlform-selectorother-other' => 'Ã\8ater',
 
 # New logging system
-'rightsnone' => '(ansöin)',
+'rightsnone' => '(nisûn)',
 
 # Feedback
-'feedback-subject' => 'Uggett:',
-'feedback-message' => "Messagg':",
-'feedback-cancel' => 'Cancellä',
+'feedback-subject' => 'Argomèint:',
+'feedback-message' => 'Mesâg',
+'feedback-cancel' => 'Scanşela',
 
 );
index d80ec61..5171ec8 100644 (file)
@@ -1233,6 +1233,7 @@ No email will be sent for any of the following features.',
 Please enter a well-formatted address or empty that field.',
 'cannotchangeemail'               => 'Account email addresses cannot be changed on this wiki.',
 'emaildisabled'                   => 'This site cannot send emails.',
+'emailsender'                     => '{{SITENAME}}', # do not translate or duplicate this message to other languages
 'accountcreated'                  => 'Account created',
 'accountcreatedtext'              => 'The user account for [[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|talk]]) has been created.',
 'createaccount-title'             => 'Account creation for {{SITENAME}}',
@@ -1615,6 +1616,9 @@ Please check the comparison below to verify that this is what you want to do, an
 
 # Account creation failure
 'cantcreateaccounttitle' => 'Cannot create account',
+'cantcreateaccount-range-text' => "Account creation from IP addresses in the range '''$1''', which includes your IP address ('''$4'''), has been blocked by [[User:$3|$3]].
+
+The reason given by $3 is ''$2''",
 'cantcreateaccount-text' => "Account creation from this IP address ('''$1''') has been blocked by [[User:$3|$3]].
 
 The reason given by $3 is ''$2''",
@@ -1699,8 +1703,8 @@ function, the specified revision does not exist, or you are attempting to hide t
 Other administrators on {{SITENAME}} will still be able to access the hidden content and can undelete it again through this same interface, unless additional restrictions are set.",
 'revdelete-confirm'           => 'Please confirm that you intend to do this, that you understand the consequences, and that you are doing this in accordance with [[{{MediaWiki:Policy-url}}|the policy]].',
 'revdelete-suppress-text'     => "Suppression should '''only''' be used for the following cases:
-* Potentially libelous information
-* Inappropriate personal information
+* potentially libelous information
+* inappropriate personal information
 *: ''home addresses and telephone numbers, national identification numbers, etc.''",
 'revdelete-legend'            => 'Set visibility restrictions',
 'revdelete-hide-text'         => 'Revision text',
@@ -2186,13 +2190,14 @@ Your email address is not revealed when other users contact you.',
 'recentchanges-label-bot'           => 'This edit was performed by a bot',
 'recentchanges-label-unpatrolled'   => 'This edit has not yet been patrolled',
 'recentchanges-label-plusminus'     => 'The page size changed by this number of bytes',
+'recentchanges-legend-heading'      => "'''Legend:'''",
 'recentchanges-legend-newpage'      => '(also see [[Special:NewPages|list of new pages]])',
 'recentchanges-legend-plusminus'    => "(''±123'')",
 'rcnotefrom'                        => "Below are the changes since '''$2''' (up to '''$1''' shown).",
 'rclistfrom'                        => 'Show new changes starting from $1',
 'rcshowhideminor'                   => '$1 minor edits',
 'rcshowhidebots'                    => '$1 bots',
-'rcshowhideliu'                     => '$1 logged-in users',
+'rcshowhideliu'                     => '$1 registered users',
 'rcshowhideanons'                   => '$1 anonymous users',
 'rcshowhidepatr'                    => '$1 patrolled edits',
 'rcshowhidemine'                    => '$1 my edits',
@@ -2322,6 +2327,8 @@ If you still want to upload your file, please go back and use a new name.
 'file-exists-duplicate'       => 'This file is a duplicate of the following {{PLURAL:$1|file|files}}:',
 'file-deleted-duplicate'      => "A file identical to this file ([[:$1]]) has previously been deleted.
 You should check that file's deletion history before proceeding to re-upload it.",
+'file-deleted-duplicate-notitle' => "A file identical to this file has previously been deleted, and the title has been suppressed.
+You should ask someone with the ability to view suppressed file data to review the situation before proceeding to re-upload it.",
 'uploadwarning'               => 'Upload warning',
 'uploadwarning-text'          => 'Please modify the file description below and try again.',
 'savefile'                    => 'Save file',
@@ -2748,6 +2755,7 @@ It now redirects to [[$2]].',
 'protectedpages-indef'            => 'Indefinite protections only',
 'protectedpages-summary'          => '', # do not translate or duplicate this message to other languages
 'protectedpages-cascade'          => 'Cascading protections only',
+'protectedpages-noredirect'       => 'Hide redirects',
 'protectedpagesempty'             => 'No pages are currently protected with these parameters.',
 'protectedtitles'                 => 'Protected titles',
 'protectedtitles-summary'         => '', # do not translate or duplicate this message to other languages
@@ -3022,6 +3030,7 @@ Feedback and further assistance:
 'historywarning'         => "'''Warning:''' The page you are about to delete has a history with approximately $1 {{PLURAL:$1|revision|revisions}}:",
 'confirmdeletetext'      => 'You are about to delete a page along with all of its history.
 Please confirm that you intend to do this, that you understand the consequences, and that you are doing this in accordance with [[{{MediaWiki:Policy-url}}|the policy]].',
+'deleting-backlinks-warning' => "'''Warning:''' Other pages link to the page you are about to delete.",
 'actioncomplete'         => 'Action complete',
 'actionfailed'           => 'Action failed',
 'deletedtext'            => '"$1" has been deleted.
@@ -3363,7 +3372,7 @@ See the [[Special:BlockList|block list]] for the list of currently operational b
 'ipb_expiry_invalid'              => 'Expiry time invalid.',
 'ipb_expiry_temp'                 => 'Hidden username blocks must be permanent.',
 'ipb_hide_invalid'                => 'Unable to suppress this account; it may have too many edits.',
-'ipb_already_blocked'             => '"$1" is already blocked',
+'ipb_already_blocked'             => '"$1" is already blocked.',
 'ipb-needreblock'                 => '$1 is already blocked. Do you want to change the settings?',
 'ipb-otherblocks-header'          => 'Other {{PLURAL:$1|block|blocks}}',
 'unblock-hideuser'                => 'You cannot unblock this user, as their username has been hidden.',
@@ -3378,12 +3387,12 @@ Please contact your Internet service provider or technical support of your organ
 'sorbs'                           => 'DNSBL', # only translate this message to other languages if you have to change it
 'sorbsreason'                     => 'Your IP address is listed as an open proxy in the DNSBL used by {{SITENAME}}.',
 'sorbs_create_account_reason'     => 'Your IP address is listed as an open proxy in the DNSBL used by {{SITENAME}}.
-You cannot create an account',
+You cannot create an account.',
 'xffblockreason'                  => 'An IP address present in the X-Forwarded-For header, either yours or that of a proxy server you are using, has been blocked. The original block reason was: $1',
 'cant-see-hidden-user'            => "The user you are trying to block has already been blocked and hidden.
 Since you do not have the hideuser right, you cannot see or edit the user's block.",
-'ipbblocked'                      => 'You cannot block or unblock other users because you are yourself blocked',
-'ipbnounblockself'                => 'You are not allowed to unblock yourself',
+'ipbblocked'                      => 'You cannot block or unblock other users because you are yourself blocked.',
+'ipbnounblockself'                => 'You are not allowed to unblock yourself.',
 'ipb-default-expiry'              => '', # do not translate or duplicate this message to other languages
 
 # Developer tools
@@ -4622,7 +4631,7 @@ Please confirm that you really want to recreate this page.",
 
 'img-lang-opt' => '$2 ($1)',
 'img-lang-default' => '(default language)',
-'img-lang-info' => 'Render this image in $1 $2.',
+'img-lang-info' => 'Render this image in $1. $2',
 'img-lang-go' => 'Go',
 
 # Table pager
@@ -4843,15 +4852,16 @@ You should have received [{{SERVER}}{{SCRIPTPATH}}/COPYING a copy of the GNU Gen
 'version-entrypoints-load-php'          => '[https://www.mediawiki.org/wiki/Manual:load.php load.php]', # do not translate or duplicate this message to other languages
 
 # Special:Redirect
-'redirect'            => 'Redirect by file, user, or revision ID',
+'redirect'            => 'Redirect by file, user, page or revision ID',
 'redirect-legend'     => 'Redirect to a file or page',
 'redirect-text'       => '', # do not translate or duplicate this message to other languages
-'redirect-summary'    => 'This special page redirects to a file (given the file name), a page (given a revision ID), or a user page (given a numeric user ID). Usage: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revision/328429]], or [[{{#Special:Redirect}}/user/101]].',
+'redirect-summary'    => 'This special page redirects to a file (given the file name), a page (given a revision ID or page ID), or a user page (given a numeric user ID). Usage: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], or [[{{#Special:Redirect}}/user/101]].',
 'redirect-submit'     => 'Go',
 'redirect-lookup'     => 'Lookup:',
 'redirect-value'      => 'Value:',
 'redirect-user'       => 'User ID',
 'redirect-revision'   => 'Page revision',
+'redirect-page'       => 'Page ID',
 'redirect-file'       => 'File name',
 'redirect-not-exists' => 'Value not found',
 
@@ -5080,6 +5090,7 @@ Otherwise, you can use the easy form below. Your comment will be added to the pa
 '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-stasherror'                    => 'There was an error while uploading the file to stash.',
 
 # Durations
 'duration-seconds'   => '$1 {{PLURAL:$1|second|seconds}}',
@@ -5115,19 +5126,21 @@ Otherwise, you can use the easy form below. Your comment will be added to the pa
 'limitreport-expensivefunctioncount-value' => '$1/$2', # only translate this message to other languages if you have to change it
 
 # ExpandTemplates
-'expandtemplates'                  => 'Expand templates',
-'expand_templates_intro'           => 'This special page takes text and expands all templates in it recursively.
+'expandtemplates'                   => 'Expand templates',
+'expand_templates_intro'            => 'This special page takes text and expands all templates in it recursively.
 It also expands supported parser functions like
 <code><nowiki>{{</nowiki>#language:…}}</code> and variables like
 <code><nowiki>{{</nowiki>CURRENTDAY}}</code>.
 In fact, it expands pretty much everything in double-braces.',
-'expand_templates_title'           => 'Context title, for {{FULLPAGENAME}}, etc.:',
-'expand_templates_input'           => 'Input text:',
-'expand_templates_output'          => 'Result',
-'expand_templates_xml_output'      => 'XML output',
-'expand_templates_ok'              => 'OK',
-'expand_templates_remove_comments' => 'Remove comments',
-'expand_templates_remove_nowiki'   => 'Suppress <nowiki> tags in result',
-'expand_templates_generate_xml'    => 'Show XML parse tree',
-'expand_templates_preview'         => 'Preview',
+'expand_templates_title'            => 'Context title, for {{FULLPAGENAME}}, etc.:',
+'expand_templates_input'            => 'Input text:',
+'expand_templates_output'           => 'Result',
+'expand_templates_xml_output'       => 'XML output',
+'expand_templates_html_output'      => 'Raw HTML output',
+'expand_templates_ok'               => 'OK',
+'expand_templates_remove_comments'  => 'Remove comments',
+'expand_templates_remove_nowiki'    => 'Suppress <nowiki> tags in result',
+'expand_templates_generate_xml'     => 'Show XML parse tree',
+'expand_templates_generate_rawhtml' => 'Show raw HTML',
+'expand_templates_preview'          => 'Preview',
 );
index a0dce90..8848512 100644 (file)
@@ -596,8 +596,8 @@ $1',
 'youhavenewmessages' => 'Por vi estas $1 ($2).',
 'youhavenewmessagesfromusers' => 'Riceviĝis $1 de {{PLURAL:$3|alia uzanto|$3 uzantoj}} ($2).',
 'youhavenewmessagesmanyusers' => 'Riceviĝis $1 de multaj uzantoj ($2).',
-'newmessageslinkplural' => '{{PLURAL:$1|nova mesaĝo|novaj mesaĝoj}}',
-'newmessagesdifflinkplural' => '{{PLURAL:$1|lasta ŝanĝo|lastaj ŝanĝoj}}',
+'newmessageslinkplural' => '{{PLURAL:$1|nova mesaĝo|999=novaj mesaĝoj}}',
+'newmessagesdifflinkplural' => '$1 {{PLURAL:$1|ŝanĝo|ŝanĝoj}}',
 'youhavenewmessagesmulti' => 'Vi havas novajn mesaĝojn ĉe $1',
 'editsection' => 'redakti',
 'editold' => 'redakti',
@@ -649,6 +649,11 @@ Listo de validaj specialaj paĝoj estas trovebla ĉe [[Special:SpecialPages|{{in
 # General errors
 'error' => 'Eraro',
 'databaseerror' => 'Datumbaza eraro',
+'databaseerror-text' => 'Datumbaza eraro de la mendo okazis.
+Ĉi tiu eble indikas cimon de la programaro.',
+'databaseerror-textcl' => 'Datumbaza eraro de la mendo okazis.',
+'databaseerror-query' => 'Mendo: $1',
+'databaseerror-function' => 'Funkcio: $1',
 'databaseerror-error' => 'Eraro: $1',
 'laggedslavemode' => 'Avertu: la paĝo eble ne enhavas lastatempajn ĝisdatigojn.',
 'readonly' => 'Datumaro ŝlosita, nurlega',
@@ -720,7 +725,7 @@ La administranto kiu ŝlosis ĝin proponis tiun klarigon: "$3".',
 'invalidtitle-knownnamespace' => 'Nevalida titolo kun nomspaco "$2" kaj teksto "$3"',
 'invalidtitle-unknownnamespace' => 'Nevalida titolo kun nekonata nomspaca numero $1 kaj teksto "$2"',
 'exception-nologin' => 'Ne ensalutita',
-'exception-nologin-text' => 'Vi devas ensaluti ĉi tiun vikion por fari ĉi tiun agon.',
+'exception-nologin-text' => 'Bonvolu [[Special:Userlogin|ensaluti]] por atingi ĉi tiun paĝon aŭ agon.',
 
 # Virus scanner
 'virus-badscanner' => "Malbona konfiguro: nekonata virusa skanilo: ''$1''",
@@ -730,7 +735,6 @@ La administranto kiu ŝlosis ĝin proponis tiun klarigon: "$3".',
 # Login and logout pages
 'logouttext' => "'''Vi nun estas elsalutinta.'''
 
-Vi rajtas daŭre vikiumi sennome, aŭ vi povas <span class='plainlinks'>[$1 reensaluti]</span> kiel la sama aŭ kiel alia uzanto.
 Notu ke iuj paĝoj daŭre ŝajnos kvazaŭ vi ankoraŭ estus ensalutinta, ĝis vi refreŝigos kaŝmemoron de via retumilo.",
 'welcomeuser' => 'Bonvenon, $1!',
 'welcomecreation-msg' => 'Via konto estas kreita.
@@ -765,7 +769,7 @@ Ne forgesu ŝanĝi viajn [[Special:Preferences|{{SITENAME}}-preferojn]]',
 'gotaccount' => "Ĉu vi jam havas konton? '''$1'''.",
 'gotaccountlink' => 'Ensaluti',
 'userlogin-resetlink' => 'Ĉu vi forgesis ensalutajn detalojn?',
-'userlogin-resetpassword-link' => 'Restarigu vian pasvorton',
+'userlogin-resetpassword-link' => 'Ĉu vi forgesis vian pasvorton?',
 'helplogin-url' => 'Help:Ensalutado',
 'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|Helpo pri ensalutado]]',
 'createacct-join' => 'Suben enigu informojn pri vi',
@@ -808,7 +812,7 @@ Kontrolu vian literumadon, aŭ [[Special:UserLogin/signup|kreu novan konton]].',
 'passwordtooshort' => 'Pasvortoj devas esti almenaŭ  $1 {{PLURAL:$1|1 signon|$1 signojn}}.',
 'password-name-match' => 'Via pasvorto devas nepre malsami vian salutnomon.',
 'password-login-forbidden' => 'Estas malpermesite uzi tiun ĉi salutnomon kaj pasvorton.',
-'mailmypassword' => 'Retpoŝti novan pasvorton',
+'mailmypassword' => 'Refari pasvorton',
 'passwordremindertitle' => 'Rememorigo el {{SITENAME}} pri perdita pasvorto',
 'passwordremindertext' => 'Iu (probable vi, el IP-adreso $1) petis novan
 pasvorton por {{SITENAME}} ($4). Provizora pasvorto por uzanto
@@ -831,7 +835,7 @@ Por preventi misuzon, nur unu reŝargita pasvorto estos sendita dum {{PLURAL:$1|
 'mailerror' => 'Okazis eraro sendante retpoŝtaĵon: $1',
 'acct_creation_throttle_hit' => 'Vizitintoj al ĉi tiu vikio uzintaj vian IP-adreson kreis {{PLURAL:$1|1 konton|$1 kontojn}} dum la lasta tago, kiu estas la maksimume permesita en ĉi tiu tempoperiodo.
 Tial, vizitantoj kun ĉi tiu IP-adreso ne povas krei pluajn kontojn ĉi-momente.',
-'emailauthenticated' => 'Via retadreso estis aŭtentikigita ekde $2 $3.',
+'emailauthenticated' => 'Via retadreso estis konfirmita ekde $2 $3.',
 'emailnotauthenticated' => 'Via retadreso ne jam estas aŭtentigata.
 Neniu retpoŝto estos sendita pro iuj jenaj kialoj.',
 'noemailprefs' => 'Specifu retpoŝtan adreson por ĉi tiuj ecoj funkcii.',
@@ -1262,18 +1266,19 @@ funkcion, la specifita versio ne ekzistas, aŭ vi estas provanta kaŝi la nunan
 Aliaj administrantoj ĉe {{SITENAME}} plu povos aliri la kaŝitan entenon kaj restarigi ĝin per la sama interfaco, krom se plia limigo estas metita de la paĝaradministrantoj.",
 'revdelete-confirm' => 'Bonvolu konfirmi ke vi intencias fari ĉi tion, ke vi komprenas la konsekvencojn kaj ke vi faras ĉi tion laŭ [[{{MediaWiki:Policy-url}}|la regularo]].',
 'revdelete-suppress-text' => "Subpremo '''nur''' estu uzata por la jenaj kazoj:
+* Ebla kalumnia informo
 * Netaŭga persona informo
 *: ''hejmaj adresoj kaj telefonnumeroj, ŝtataj identnumeroj, ktp.''",
 'revdelete-legend' => 'Fari videblecajn limigojn',
-'revdelete-hide-text' => 'Kaŝi tekston de versio',
+'revdelete-hide-text' => 'Teksto de revizio',
 'revdelete-hide-image' => 'Kaŝi enhavon de dosieroj',
 'revdelete-hide-name' => 'Kaŝi agon kaj celon',
-'revdelete-hide-comment' => 'Kaŝi komenton de redakto',
-'revdelete-hide-user' => 'Kaŝi nomon aŭ IP-adreson de redaktinto',
+'revdelete-hide-comment' => 'Resumo de redakto',
+'revdelete-hide-user' => 'Salutnomo de redaktanto/IP-adreso',
 'revdelete-hide-restricted' => 'Subpremi ĉi tiujn datenojn de administrantoj kaj ankaŭ aliaj',
 'revdelete-radio-same' => '(ne ŝanĝi)',
-'revdelete-radio-set' => 'Videbla',
-'revdelete-radio-unset' => 'Kaŝita',
+'revdelete-radio-set' => 'Kaŝita',
+'revdelete-radio-unset' => 'Videbla',
 'revdelete-suppress' => 'Subpremi datenojn de kaj administrantoj kaj aliaj',
 'revdelete-unsuppress' => 'Forigi limigojn al restarigitaj versioj',
 'revdelete-log' => 'Kialo:',
@@ -1675,7 +1680,7 @@ indekso pro troŝarĝita servilo. Intertempe, vi povas serĉi per <i>guglo</i> a
 'action-protect' => 'ŝanĝi la protektan nivelon por ĉi tiu paĝo',
 'action-rollback' => 'tuj malfari la redaktojn de la lasta uzanto kiu redaktis specifan paĝon',
 'action-import' => 'enporti paĝojn de alia vikio',
-'action-importupload' => 'importi ĉi tiun paĝon de dosiera alŝuto',
+'action-importupload' => 'importi paĝojn de dosiera alŝuto',
 'action-patrol' => 'marki redakton de alia persono kiel patrolitan',
 'action-autopatrol' => 'fari vian redakton markitan kiel patrolitan',
 'action-unwatchedpages' => 'vidi la liston de neatentitaj paĝoj',
@@ -1701,7 +1706,7 @@ indekso pro troŝarĝita servilo. Intertempe, vi povas serĉi per <i>guglo</i> a
 'recentchanges-label-minor' => 'Ĉi tiu estas eta redakto',
 'recentchanges-label-bot' => 'Ĉi tiu redakto estis farita per roboto.',
 'recentchanges-label-unpatrolled' => 'Ĉi tiu redakto ne jam estis patrolata.',
-'recentchanges-legend-newpage' => '$1 - nova paĝo',
+'recentchanges-legend-newpage' => '(vidu ankaŭ [[Special:NewPages|liston de novaj paĝoj]])',
 'rcnotefrom' => "Jen la ŝanĝoj ekde '''$2''' (lastaj ĝis '''$1''').",
 'rclistfrom' => 'Montri novajn ŝanĝojn ekde "$1"',
 'rcshowhideminor' => '$1 redaktetojn',
@@ -1743,7 +1748,7 @@ Paĝoj en [[Special:Watchlist|via atentaro]] estas '''grasaj'''.",
 'reuploaddesc' => 'Reveni al la alŝuta formularo.',
 'upload-tryagain' => 'Enigi ŝanĝitan dosieran priskribon',
 'uploadnologin' => 'Ne ensalutinta',
-'uploadnologintext' => 'Vi devas [[Special:UserLogin|ensaluti]] por alŝuti dosierojn.',
+'uploadnologintext' => 'Bonvolu $1 por alŝuti dosierojn.',
 'upload_directory_missing' => 'La alŝuta dosierujo ($1) estas nek trovebla nek kreebla de la retservilo.',
 'upload_directory_read_only' => 'La TTT-servilo ne povas alskribi la alŝuto-dosierujon ($1).',
 'uploaderror' => 'Eraro okazis dum alŝuto',
@@ -1985,6 +1990,8 @@ Kiam oni filtras ĝin laŭ uzanto, nur la aktuala versio de la dosiero estos mon
 'listfiles_size' => 'Grandeco',
 'listfiles_description' => 'Priskribo',
 'listfiles_count' => 'Versioj',
+'listfiles-latestversion-yes' => 'Jes',
+'listfiles-latestversion-no' => 'Ne',
 
 # File description page
 'file-anchor-link' => 'Dosiero',
@@ -2353,8 +2360,8 @@ La retadreso kiun vi enigis en [[Special:Preferences|viaj preferoj]] aperos kiel
 'notanarticle' => 'Ne estas artikolo',
 'notvisiblerev' => 'Versio estis forigita',
 'watchlist-details' => '{{PLURAL:$1|$1 paĝon|$1 paĝojn}} en via atentaro, krom diskutpaĝoj.',
-'wlheader-enotif' => 'Retpoŝta sciigo estas ebligita',
-'wlheader-showupdated' => "Montriĝas per '''dikaj literoj''' tiuj paĝoj, kiujn oni ŝanĝis ekde kiam vi laste vizitis ilin",
+'wlheader-enotif' => 'Retpoŝta sciigo estas ŝalta.',
+'wlheader-showupdated' => "Paĝoj montriĝis per '''dikaj literoj''' kiuj estis ŝanĝitaj ekde vi laste vizitis.",
 'watchmethod-recent' => 'traserĉas lastajn redaktojn',
 'watchmethod-list' => 'traserĉas priatentitajn',
 'watchlistcontains' => 'Via atentaro enhavas $1 {{PLURAL:$1|paĝon|paĝojn}}.',
@@ -2397,7 +2404,7 @@ Kontaktu la redaktinton:
 retpoŝte: $PAGEEDITOR_EMAIL
 vikie: $PAGEEDITOR_WIKI
 
-Ne estos aliaj avertoj kaze de sekvaj ŝanĝoj krom se vi vizitus ĉi tiun paĝon. Vi povas ankaŭ malaktivigi la avertsignalon por ĉiuj priatentitaj paĝoj de via atentaro.
+Ne estos aliaj avertoj kaze de sekvaj agoj krom se vi vizitus ĉi tiun paĝon ensalutite. Vi povas ankaŭ malaktivigi la avertsignalon por ĉiuj priatentitaj paĝoj de via atentaro.
 
             Sincere via, la avertsistemo de {{SITENAME}}
 
@@ -2462,7 +2469,7 @@ pro tio, ke oni intertempe redaktis aŭ restarigis la paĝon.
 La lasta redaktinto estis [[User:$3|$3]] ([[User talk:$3|diskuto]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).',
 'editcomment' => "La resumo de la komento estis: \"''\$1''\".",
 'revertpage' => 'Malfaris redaktojn de [[Special:Contributions/$2|$2]] ([[User talk:$2|diskuto]]) al la lasta versio de [[User:$1|$1]]',
-'revertpage-nouser' => 'Restarigis redaktojn de (salutnomo forigita) al lasta revizio de [[User:$1|$1]]',
+'revertpage-nouser' => 'Restarigis redaktojn de (salutnomo forigita) al lasta revizio de {{GENDER:$1|[[User:$1|$1]]}}',
 'rollback-success' => 'Restaris redaktojn de $1; ŝanĝis al lasta versio de $2.',
 
 # Edit tokens
@@ -2601,7 +2608,7 @@ $1',
 'contributions' => 'Kontribuoj de {{GENDER:$1|uzanto|uzantino}}',
 'contributions-title' => 'Kontribuoj de uzanto $1',
 'mycontris' => 'Kontribuoj',
-'contribsub2' => 'De $1 ($2)',
+'contribsub2' => 'De {{GENDER:$3|$1}} ($2)',
 'nocontribs' => 'Trovis neniajn redaktojn laŭ tiu kriterio.',
 'uctop' => ' (aktuala)',
 'month' => 'Ekde monato (kaj pli frue):',
@@ -2792,7 +2799,7 @@ Vi povas ĝisdatigi alidirektilojn kiu indikas la originalan titolon aŭtomate.
 Se vi elektas ĝisdatigi permane, bonvolu kontroli [[Special:DoubleRedirects|duoblajn]] aŭ [[Special:BrokenRedirects|rompitajn alidirektilojn]].
 Vi estas responsa por certigi ke ligilojn direktas fidinde.
 
-Notu, ke la paĝo '''ne''' estos movita se jam ekzistas paĝo ĉe la nova titolo, krom se ĝi estas malplena aŭ alidirektilo al ĉi tiu paĝo, kaj sen antaŭa redaktohistorio.
+Notu, ke la paĝo '''ne''' estos movita se jam ekzistas paĝo ĉe la nova titolo, krom se tiu loko estas malplena aŭ alidirektilo al ĉi tiu paĝo, kaj sen antaŭa redaktohistorio.
 Pro tio, vi ja povos removi la paĝon je la antaŭa titolo se vi mistajpus, kaj ne povas forviŝi ekzistantan paĝon per movo.
 
 '''AVERTO!'''
@@ -3111,8 +3118,8 @@ Datoj de versioj kaj nomoj de redaktantoj estos preservitaj.
 'spam_reverting' => 'Restarigo de lasta versio ne entenante ligilojn al $1',
 'spam_blanking' => 'Forviŝo de ĉiuj versioj entenantaj ligilojn al $1',
 'spam_deleting' => 'Ĉiuj versioj enhavis ligilojn al $1 - forigante',
-'simpleantispam-label' => 'Kontrolo kontraŭ spamo.
-NE ENIGU ion ajn!',
+'simpleantispam-label' => "Kontrolo kontraŭ spamo.
+'''NE ENIGU''' ion ajn!",
 
 # Info page
 'pageinfo-title' => 'Informoj por "$1"',
@@ -3126,13 +3133,13 @@ NE ENIGU ion ajn!',
 'pageinfo-length' => 'Paĝgrandeco (en bajtoj)',
 'pageinfo-article-id' => 'Paĝa identigo',
 'pageinfo-language' => 'Lingvo de paĝa enhavo',
-'pageinfo-robot-policy' => 'Statuso de la serĉilo',
-'pageinfo-robot-index' => 'Indeksebla',
-'pageinfo-robot-noindex' => 'Ne indeksebla',
+'pageinfo-robot-policy' => 'Indeksado per robotoj',
+'pageinfo-robot-index' => 'Permesata',
+'pageinfo-robot-noindex' => 'Malpermesata',
 'pageinfo-views' => 'Nombro de rigardoj',
 'pageinfo-watchers' => 'Nombro de paĝatentantoj',
 'pageinfo-few-watchers' => 'Malpli ol $1 {{PLURAL:$1|atentanto|atentantoj}}',
-'pageinfo-redirects-name' => 'Alidirektoj al ĉi tiu paĝo',
+'pageinfo-redirects-name' => 'Nombro da alidirektiloj al ĉi tiu paĝo',
 'pageinfo-subpages-name' => 'Subpaĝoj de ĉi tiu paĝo',
 'pageinfo-subpages-value' => '$1 ($2 {{PLURAL:$2|alidirektilo|alidirektiloj}}; $3 {{PLURAL:$3|ne-alidirektilo|ne-alidirektiloj}})',
 'pageinfo-firstuser' => 'Kreinto de la paĝo',
@@ -3210,7 +3217,7 @@ $1',
 'svg-long-desc' => 'SVG-dosiero, $1 × $2 rastrumeroj, grandeco de dosiero: $3',
 'svg-long-desc-animated' => 'Animata SVG-dosiero, $1 × $2 rastrumeroj, grandeco de dosiero: $3',
 'svg-long-error' => 'Malvalida SVG-dosiero: $1',
-'show-big-image' => 'Plena distingivo',
+'show-big-image' => 'Fonta dosiero',
 'show-big-image-preview' => 'Grandeco de ĉi antaŭvido: $1.',
 'show-big-image-other' => '{{PLURAL:$2|Alia distingivo|Aliaj distingivoj}}: $1.',
 'show-big-image-size' => '$1 × $2 rastrumeroj',
@@ -3918,6 +3925,9 @@ Oni devis doni al vi [{{SERVER}}{{SCRIPTPATH}}/COPYING ekzempleron de la GNU Gen
 'version-entrypoints-header-entrypoint' => 'Eniropunkto',
 'version-entrypoints-header-url' => 'Retadreso',
 
+# Special:Redirect
+'redirect-submit' => 'Ek',
+
 # Special:FileDuplicateSearch
 'fileduplicatesearch' => 'Serĉu duplikatajn dosierojn',
 'fileduplicatesearch-summary' => 'Serĉi duplikatajn dosierojn bazite de haketvaloro.',
@@ -3932,8 +3942,7 @@ Oni devis doni al vi [{{SERVER}}{{SCRIPTPATH}}/COPYING ekzempleron de la GNU Gen
 # Special:SpecialPages
 'specialpages' => 'Specialaj paĝoj',
 'specialpages-note' => '* Normaj specialaj paĝoj.
-* <strong class="mw-specialpagerestricted">Limigitaj specialaj paĝoj.</strong>
-* <span class="mw-specialpagecached">Memorkaŝitaj specialaj paĝoj (eble malaktualaj).</span>',
+* <span class="mw-specialpagerestricted">Limigitaj specialaj paĝoj.</span>',
 'specialpages-group-maintenance' => 'Raportoj pri prizorgado',
 'specialpages-group-other' => 'Aliaj specialaj paĝoj',
 'specialpages-group-login' => 'Ensaluti /  registriĝi',
@@ -4016,14 +4025,14 @@ Oni devis doni al vi [{{SERVER}}{{SCRIPTPATH}}/COPYING ekzempleron de la GNU Gen
 'logentry-delete-delete' => '$1 forigis paĝon $3',
 'logentry-delete-restore' => '$1 restarigis paĝon $3',
 'logentry-delete-event' => '$1 ŝanĝis videblecon de {{PLURAL:$5|protokola evento|$5 protokolaj eventoj}} je $3: $4',
-'logentry-delete-revision' => '$1 ŝanĝis videblecon de {{PLURAL:$5|revizio|$5 reviziojn}} je paĝo $3: $4',
-'logentry-delete-event-legacy' => '$1 ŝanĝis videblecon de protokolaj eventoj en $3',
-'logentry-delete-revision-legacy' => '$1 ŝanĝis videblecon de revizioj en $3',
-'logentry-suppress-delete' => '$1 kaŝis paĝon $3',
-'logentry-suppress-event' => '$1 kaŝite ŝanĝis videblecon de {{PLURAL:$5|protokola evento|$5 protokolaj eventoj}} je $3: $4',
+'logentry-delete-revision' => '$1 {{GENDER:$2|ŝanĝis}} videblecon de {{PLURAL:$5|revizio|$5 reviziojn}} je paĝo $3: $4',
+'logentry-delete-event-legacy' => '$1 {{GENDER:$2|ŝanĝis}} videblecon de protokolaj eventoj en $3',
+'logentry-delete-revision-legacy' => '$1 {{GENDER:$2|ŝanĝis}} videblecon de revizioj en $3',
+'logentry-suppress-delete' => '$1 {{GENDER:$2|kaŝis}} paĝon $3',
+'logentry-suppress-event' => '$1 kaŝite {{GENDER:$2|ŝanĝis}} videblecon de {{PLURAL:$5|protokola evento|$5 protokolaj eventoj}} je $3: $4',
 'logentry-suppress-revision' => '$1 kaŝite ŝanĝis videblecon de {{PLURAL:$5|revizio|$5 reviziojn}} je paĝo $3: $4',
-'logentry-suppress-event-legacy' => '$1 kaŝite ŝanĝis videblecon de protokolaj eventoj en $3',
-'logentry-suppress-revision-legacy' => '$1 kaŝite ŝanĝis videblecon de revizioj en paĝo $3',
+'logentry-suppress-event-legacy' => '$1 kaŝite {{GENDER:$2|ŝanĝis}} videblecon de protokolaj eventoj en $3',
+'logentry-suppress-revision-legacy' => '$1 kaŝite {{GENDER:$2|ŝanĝis}} videblecon de revizioj en paĝo $3',
 'revdelete-content-hid' => 'enhavo kaŝita',
 'revdelete-summary-hid' => 'resumo de redakto kaŝita',
 'revdelete-uname-hid' => 'salutnomo kaŝita',
@@ -4036,13 +4045,13 @@ Oni devis doni al vi [{{SERVER}}{{SCRIPTPATH}}/COPYING ekzempleron de la GNU Gen
 'logentry-move-move-noredirect' => '$1 movis paĝon $3 al $4 ne lasante alidirektilon',
 'logentry-move-move_redir' => '$1 movis paĝon $3 al $4 anstataŭigante alidirektilon',
 'logentry-move-move_redir-noredirect' => '$1 movis paĝon $3 al $4 anstataŭigante alidirektilon ne lasante alidirektilon',
-'logentry-patrol-patrol' => '$1 markis revizion $4 de paĝo $3 patrolita',
-'logentry-patrol-patrol-auto' => '$1 aŭtomate markis revizion $4 de paĝo $3 patrolita',
-'logentry-newusers-newusers' => 'Konto de uzanto $1 estis kreita',
+'logentry-patrol-patrol' => '$1 {{GENDER:$2|markis}} revizion $4 de paĝo $3 patrolita',
+'logentry-patrol-patrol-auto' => '$1 aŭtomate {{GENDER:$2|markis}} revizion $4 de paĝo $3 patrolita',
+'logentry-newusers-newusers' => 'Konto de uzanto $1 estis {{GENDER:$2|kreita}}',
 'logentry-newusers-create' => 'Konto de uzanto $1 estis kreita',
 'logentry-newusers-create2' => 'Konto de uzanto $3 estis kreita de $1',
 'logentry-newusers-byemail' => 'Konto de uzanto $3 estis kreita de $1 kaj pasvorto estis sendita per retpoŝto',
-'logentry-newusers-autocreate' => 'Uzantokonto $1 estis kreita aŭtomate',
+'logentry-newusers-autocreate' => 'Uzantokonto $1 estis {{GENDER:$2|kreita}} aŭtomate',
 'logentry-rights-rights' => '$1 ŝanĝis grupan membrecon por $3 de $4 al $5',
 'logentry-rights-rights-legacy' => '$1 ŝanĝis grupan membrecon por $3',
 'logentry-rights-autopromote' => '$1 estis aŭtomate {{GENDER:$2|altrangigita}} de $4 al $5',
index 1f94a67..a87c9de 100644 (file)
@@ -77,6 +77,7 @@
  * @author Penarc
  * @author PerroVerd
  * @author Pertile
+ * @author Peter Bowman
  * @author Pginer
  * @author Piolinfax
  * @author Platonides
@@ -1128,7 +1129,7 @@ La última entrada del registro de bloqueos se proporciona debajo para mayor ref
 '''¡Aún no se ha guardado!'''",
 'sitejspreview' => "'''Recuerda que sólo estás previsualizando este código JavaScript.'''
 '''¡Aún no se ha guardado!'''",
-'userinvalidcssjstitle' => "'''Aviso:''' No existe la piel «$1». Recuerda que las páginas personalizadas ''.css'' y ''.js'' tienen un título en minúsculas. Por ejemplo, {{ns:user}}:Ejemplo/vector.css en vez de {{ns:user}}:Ejemplo/Vector.css.",
+'userinvalidcssjstitle' => "'''Aviso:''' No existe la apariencia «$1». Recuerda que las páginas personalizadas ''.css'' y ''.js'' tienen un título en minúsculas. Por ejemplo, {{ns:user}}:Ejemplo/vector.css en vez de {{ns:user}}:Ejemplo/Vector.css.",
 'updated' => '(Actualizado)',
 'note' => "'''Nota:'''",
 'previewnote' => "'''Recuerda que esto es solo una previsualización.'''
@@ -1788,6 +1789,7 @@ Tu dirección de correo no se revela cuando otros usuarios te contactan.',
 'recentchanges-label-bot' => 'Esta edición fue realizada por un robot',
 'recentchanges-label-unpatrolled' => 'Esta edición todavía no se ha patrullado',
 'recentchanges-label-plusminus' => 'El tamaño de la página cambió esta cantidad de bytes',
+'recentchanges-legend-heading' => "'''Leyenda:'''",
 'recentchanges-legend-newpage' => '(véase también la [[Special:NewPages|lista de páginas nuevas]])',
 'rcnotefrom' => 'A continuación se muestran los cambios desde <b>$2</b> (hasta <b>$1</b>).',
 'rclistfrom' => 'Mostrar nuevos cambios desde $1',
@@ -3184,10 +3186,10 @@ Permite añadir una razón al resumen de edición.',
 
 # Stylesheets
 'common.css' => '/* El CSS colocado en esta página será aplicado a todas las apariencias */',
-'cologneblue.css' => '/* El CSS colocado en esta página afectará a los usuarios que usen la piel "Cologne Blue" */',
-'monobook.css' => '/* El CSS colocado en esta página afectará a los usuarios que usen la piel "MonoBook" */',
-'modern.css' => '/* El CSS colocado en esta página afectará a los usuarios que usen la piel "Modern" */',
-'vector.css' => '/* El CSS colocado en esta página afectará a los usuarios que usen la piel "Vector" */',
+'cologneblue.css' => '/* El CSS colocado en esta página afectará a los usuarios que usen la apariencia Cologne Blue */',
+'monobook.css' => '/* El CSS colocado en esta página afectará a los usuarios que usen la apariencia "MonoBook" */',
+'modern.css' => '/* El CSS colocado en esta página afectará a los usuarios que usen la apariencia Moderna */',
+'vector.css' => '/* El CSS colocado en esta página afectará a los usuarios que usen la apariencia "Vector" */',
 'print.css' => '/* Los estilos CSS colocados aquí afectarán la impresión */',
 'noscript.css' => '/* Los estilos CSS colocados aquí se aplicarán a los usuarios que hayan desactivado el JavaScript en su navegador */',
 'group-autoconfirmed.css' => '/* Los estilos CSS colocados aquí se aplicarán para todos los usuarios del grupo Usuarios autoconfirmados */',
@@ -3198,9 +3200,9 @@ Permite añadir una razón al resumen de edición.',
 # Scripts
 'common.js' => '/* Cualquier código JavaScript escrito aquí se cargará para todos los usuarios en cada carga de página */',
 'cologneblue.js' => '/* Cualquier código JavaScript escrito aquí se cargará para todos los usuarios que usen la piel Colonia azul */',
-'monobook.js' => '/* El código JavaScript que se ponga aquí será cargado por los usuarios de la piel MonoBook */',
-'modern.js' => '/* Cualquier código JavaScript escrito aquí se cargará para todos los usuarios que usen la piel Moderna */',
-'vector.js' => '/* Cualquier código JavaScript escrito aquí se cargará para todos los usuarios que usen la piel Vector */',
+'monobook.js' => '/* El código JavaScript que se ponga aquí será cargado por los usuarios de la apariencia MonoBook */',
+'modern.js' => '/* Cualquier código JavaScript escrito aquí se cargará para todos los usuarios que usen la apariencia Moderna */',
+'vector.js' => '/* Cualquier código JavaScript escrito aquí se cargará para todos los usuarios que usen la apariencia Vector */',
 'group-autoconfirmed.js' => '/* Cualquier código JavaScript escrito aquí se cargará para todos los usuarios del grupo Usuarios autoconfirmados */',
 'group-bot.js' => '/* Cualquier código JavaScript escrito aquí se cargará para todos los usuarios del grupo Bots */',
 'group-sysop.js' => '/* Cualquier código JavaScript escrito aquí se cargará para todos los usuarios del grupo Administradores */',
@@ -3900,6 +3902,9 @@ Confirma que realmente quieres volver a crear esta página.",
 'imgmultigo' => '¡Ir!',
 'imgmultigoto' => 'Ir a la página $1',
 
+# Language selector for translatable SVGs
+'img-lang-default' => '(idioma predeterminado)',
+
 # Table pager
 'ascending_abbrev' => 'asc',
 'descending_abbrev' => 'desc',
@@ -4000,9 +4005,9 @@ Has recibido [{{SERVER}}{{SCRIPTPATH}}/COPYING una copia de la Licencia Pública
 'version-entrypoints-scriptpath' => '[https://www.mediawiki.org/wiki/Manual:$wgScriptPath Ruta de la secuencia de comandos (script)]',
 
 # Special:Redirect
-'redirect' => 'Redirigir por archivo, usuario o ID de revisión',
+'redirect' => 'Redirigir por archivo, usuario, página o ID de revisión',
 'redirect-legend' => 'Redirigir a un archivo o página',
-'redirect-summary' => 'Esta página especial redirige a un fichero (dado un nombre de fichero), a una página (dado un identificador de revisión) o a una página de usuario (dado en identificador numérico de usuario). Uso: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revision/328429]], o [[{{#Special:Redirect}}/user/101]].',
+'redirect-summary' => 'Esta página especial redirige a un fichero (dado un nombre de fichero), a una página (dado un identificador de revisión o de página) o a una página de usuario (dado un identificador numérico de usuario). Uso: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revision/328429]], o [[{{#Special:Redirect}}/user/101]].',
 'redirect-submit' => 'Ir',
 'redirect-lookup' => 'Buscar:',
 'redirect-value' => 'Valor:',
index 7d6ee49..8a53579 100644 (file)
@@ -1164,6 +1164,9 @@ Need argumendid on välja jäetud.",
 'cantcreateaccounttitle' => 'Ei saa kontot luua',
 'cantcreateaccount-text' => "Kasutaja [[User:$3|$3]] on blokeerinud kasutajanime loomise sellelt IP-aadressilt ('''$1''').
 Kasutaja $3 märkis põhjuseks ''$2''",
+'cantcreateaccount-range-text' => "Kontode loomine IP-aadressidelt vahemikus '''$1''', millesse jääb sinu IP-aadress ('''$4'''), on blokeeritud. Blokeeris kasutaja [[User:$3|$3]].
+
+$3 tõi järgmise põhjuse: ''$2''",
 
 # History pages
 'viewpagelogs' => 'Vaata selle lehe logisid',
@@ -1704,7 +1707,7 @@ See teave on avalik.',
 'rclistfrom' => 'Näita muudatusi alates: $1',
 'rcshowhideminor' => 'Pisiparandused ($1)',
 'rcshowhidebots' => 'Robotid ($1)',
-'rcshowhideliu' => 'Sisseloginud kasutajad ($1)',
+'rcshowhideliu' => 'Registreeritud kasutajad ($1)',
 'rcshowhideanons' => 'Anonüümsed kasutajad ($1)',
 'rcshowhidepatr' => 'Kontrollitud muudatused ($1)',
 'rcshowhidemine' => 'Minu parandused ($1)',
@@ -3771,7 +3774,7 @@ Palun kinnita, et soovid tõesti selle lehekülje taasluua.",
 
 # Language selector for translatable SVGs
 'img-lang-default' => '(vaikekeel)',
-'img-lang-info' => 'Viimistle pilt järgmises keeles: $1 $2',
+'img-lang-info' => 'Viimistle pilt järgmises keeles: $1. $2',
 'img-lang-go' => 'Mine',
 
 # Table pager
@@ -3870,13 +3873,14 @@ GNU Üldise Avaliku Litsentsi [{{SERVER}}{{SCRIPTPATH}}/COPYING eksemplar] peaks
 'version-entrypoints-header-url' => 'URL',
 
 # Special:Redirect
-'redirect' => 'Ümbersuunamine faili, kasutaja või redaktsiooni identifikaatori järgi',
+'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 identifikaator) või kasutajalehekülje (toodud numbriline kasutaja identfikaator) juurde. Kasutamine: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revision/328429]] või [[{{#Special:Redirect}}/user/101]].',
+'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:',
 'redirect-value' => 'Väärtus:',
 'redirect-user' => 'Kasutaja identifikaator',
+'redirect-page' => 'Lehekülje identifikaator',
 'redirect-revision' => 'Lehekülje redaktsioon',
 'redirect-file' => 'Failinimi',
 'redirect-not-exists' => 'Väärtust ei leitud',
@@ -4118,10 +4122,12 @@ Samuti hõrendab see parserifunktsioonid nagu
 'expand_templates_input' => 'Sisendtekst:',
 'expand_templates_output' => 'Tulemus',
 'expand_templates_xml_output' => 'XML-väljund',
+'expand_templates_html_output' => 'HTML-toorväljund',
 'expand_templates_ok' => 'Hõrenda',
 'expand_templates_remove_comments' => 'Eemalda selgitavad märkused',
 'expand_templates_remove_nowiki' => 'Ära näita tulemuses <nowiki>-silte',
 'expand_templates_generate_xml' => 'Näita XML sõelumispuud',
+'expand_templates_generate_rawhtml' => 'Näita toor-HTMLi',
 'expand_templates_preview' => 'Eelvaade',
 
 );
index bbca477..3c3e02b 100644 (file)
@@ -470,7 +470,7 @@ Hau ez bada kasua, agian akats bat aurkitu duzu softwarean.
 Mesedez, bidali gertakar hau administradore bati, URLaren izena jarriz.',
 'missingarticle-rev' => '(berrikuspena#: $1)',
 'missingarticle-diff' => '(Ezb: $1, $2)',
-'readonly_lag' => 'Datu-basea automatikoki blokeatu da menpeko zerbitzariak nagusiarekin sinkronizatu bitartean',
+'readonly_lag' => 'Datu-basea automatikoki blokeatu da, menpeko zerbitzariak nagusiarekin sinkronizatu bitartean',
 'internalerror' => 'Barne errorea',
 'internalerror_info' => 'Barne errorea: $1',
 'fileappenderrorread' => 'Ezin izan da "$1" irakurri, gehitzean.',
@@ -500,7 +500,7 @@ Ez du arrazoirik eman.',
 'actionthrottled' => 'Ekintzaren gainetik pasa da',
 'actionthrottledtext' => 'Spamaren aurkako neurri gisa ekintza hau denbora tarte laburrean aldi askotan egiteko mugapena duzu, eta muga hori zeharkatu duzu.
 Saia zaitez berriro minutu batzuen buruan, mesedez.',
-'protectedpagetext' => 'Orrialde hau aldaketak saihesteko blokeatu egin da.',
+'protectedpagetext' => 'Orri hau babestu da, edizioak edo beste ekintza batzuk egin ez daitezen.',
 'viewsourcetext' => 'Orri honen iturburu-testua ikusi eta kopiatu dezakezu:',
 'viewyourtext' => "Ondorengo orri honetan '''zeuk egin dituzun aldaketen''' iturburu kodea ikus eta kopia dezakezu:",
 'protectedinterface' => 'Orrialde honek softwarearentzako interfaze testua gordetzen du eta blokeatuta dago bandalismoak saihesteko.
@@ -1205,7 +1205,7 @@ Kontura zaitez nabigazio loturek, zutabea ezabatu dezakela.',
 'prefs-beta' => 'Beta ezaugarriak',
 'prefs-datetime' => 'Data eta ordua',
 'prefs-labs' => 'Labs ezaugarriak',
-'prefs-user-pages' => 'Erabiltzaile orrialdeak',
+'prefs-user-pages' => 'Erabiltzaile orriak',
 'prefs-personal' => 'Erabiltzaile profila',
 'prefs-rc' => 'Azken aldaketak',
 'prefs-watchlist' => 'Jarraipen zerrenda',
@@ -1334,7 +1334,7 @@ Informazio hau publikoa da.',
 'userrights-notallowed' => 'Zure kontuak ez du baimenik erabiltzaile eskumenak aldatzeko.',
 'userrights-changeable-col' => 'Alda ditzakezun taldeak',
 'userrights-unchangeable-col' => 'Aldatu ezin ditzakezun taldeak',
-'userrights-conflict' => 'Erabiltzaile eskumenen aldaketak gatazka! Mesedez, gorde eta ziurtatu zure aldaketak.',
+'userrights-conflict' => 'Gatazka gertatu da erabiltzaile eskubideak aldatzean. Mesedez, berrikusi eta baieztatu zure aldaketak.',
 'userrights-removed-self' => 'Arrakasta izan duzu zure eskumenak kentzen. Beraz jada ezin duzu orrialde hau gehiago ikusi.',
 
 # Groups
@@ -1362,7 +1362,7 @@ Informazio hau publikoa da.',
 'grouppage-suppress' => '{{ns:project}}:Gainikuspena',
 
 # Rights
-'right-read' => 'Orriak irakurri',
+'right-read' => 'Irakurri orriak',
 'right-edit' => 'Orriak aldatu',
 'right-createpage' => 'Orrialdeak sortu (eztabaida orrialdeak ez direnak)',
 'right-createtalk' => 'Eztabaida orriak sortu',
@@ -1394,9 +1394,9 @@ Informazio hau publikoa da.',
 'right-undelete' => 'Ezabatutako orrialde bat itzularazi',
 'right-suppressrevision' => 'Administratzaileentzat izkutatutako berrikuspenak berrikusi edo berrezarri',
 'right-suppressionlog' => 'Log pribatuak ikusi',
-'right-block' => 'Beste lankideek edita ez dezaten blokeatu',
-'right-blockemail' => 'Erabiltzaile batek emailak bidal ez ditzan blokeatu',
-'right-hideuser' => 'Erabiltzaile izen bat blokeatu, publikotik izkutatuz',
+'right-block' => 'Blokeatu beste erabiltzaile batzuk, edita ez dezaten',
+'right-blockemail' => 'Erabiltzaile bati blokeatu mezu elektronikoak bidaltzeko aukera',
+'right-hideuser' => 'Blokeatu erabiltzaile izen bat, publikotik ezkutatuta',
 'right-ipblock-exempt' => 'IP blokeoen, auto-blokeoen eta maila blokeoen gainetik pasa.',
 'right-proxyunbannable' => 'Proxyen blokeo automatikoen gainetik pasa',
 'right-unblockself' => 'Beren burua desblokeatu',
@@ -1419,14 +1419,14 @@ Informazio hau publikoa da.',
 'right-noratelimit' => 'Ez dio eragiten erlazio mugak',
 'right-import' => 'Orrialdeak beste wiki batetik inportatu',
 'right-importupload' => 'Igotako fitxategi batetik orrialdeak inportatu',
-'right-patrol' => 'Besteen edizioak patrullatu moduan markatu',
+'right-patrol' => 'Markatu patruilatutzat besteen edizioak',
 'right-autopatrol' => 'Norberak egiten dituen aldaketa guztiak automatikoki gain-ikusi gisa markatu',
 'right-patrolmarks' => 'Ikusi azken aldaketen jarraitze markak',
 'right-unwatchedpages' => 'Ikusi gabeko orrialdeen zerrenda bat ikusi',
 'right-mergehistory' => 'Orrialdeen historia batu',
 'right-userrights' => 'Erabiltzaile guztien eskumenak aldatu',
 'right-userrights-interwiki' => 'Beste wiki batzuetan erabiltzaileen eskumenak aldatu',
-'right-siteadmin' => 'Databasea blokeatu eta desblokeatu',
+'right-siteadmin' => 'Blokeatu eta desblokeatu datu basea blokeatu',
 'right-override-export-depth' => '5eko sakonerararteko loturiko orrialdeak barne esportatu',
 'right-sendemail' => 'Beste erabiltzaileei e-posta bidali',
 'right-passwordreset' => 'Ikusi pasahitza berrezartze e-postak',
@@ -1466,7 +1466,7 @@ Informazio hau publikoa da.',
 'action-protect' => 'orrialde honetako babes mailak aldatu',
 'action-import' => 'orrialdeak beste wiki batetik inportatu',
 'action-importupload' => 'igotako fitxategi batetik orrialdeak inportatu',
-'action-patrol' => 'besteen aldaketak patruilatu moduan markatu',
+'action-patrol' => 'markatu patruilatutzat besteen aldaketak',
 'action-autopatrol' => 'zeure aldaketak patruilatutzat markatu',
 'action-unwatchedpages' => 'ikusi gabeko orrialdeen zerrenda ikusi',
 'action-mergehistory' => 'orrialde honen historia batu',
@@ -1485,7 +1485,7 @@ Informazio hau publikoa da.',
 'enhancedrc-history' => 'historia',
 'recentchanges' => 'Aldaketa berriak',
 'recentchanges-legend' => 'Azken aldaketen aukerak',
-'recentchanges-summary' => 'Orri honetan ikuska ditzakezu wiki honetan egindako azken aldaketak.',
+'recentchanges-summary' => 'Orrialde honetan ikus ditzakezu wiki honetan egindako azken aldaketak.',
 'recentchanges-noresult' => 'Ez da egon aldaketarik emandako tartean irizpide hau betetzen dutenik.',
 'recentchanges-feed-description' => 'Sindikazio honetan wikian eginiko azkeneko aldaketak jarrai daitezke.',
 'recentchanges-label-newpage' => 'Aldaketa honek orri berri bat sortu du',
@@ -1493,6 +1493,7 @@ Informazio hau publikoa da.',
 'recentchanges-label-bot' => 'Aldaketa hau bot batek egin du',
 'recentchanges-label-unpatrolled' => 'Aldaketa hau ez da oraindik patruilatua izan',
 'recentchanges-label-plusminus' => 'Orriaren neurriak byte kopuru honen gorabehera izan du',
+'recentchanges-legend-heading' => "'''Azalpenak:'''",
 'recentchanges-legend-newpage' => '(ikus, gainera, [[Special:NewPages|orri berrien zerrenda]])',
 'rcnotefrom' => 'Jarraian azaltzen diren aldaketak data honetatik aurrerakoak dira: <b>$2</b> (gehienez <b>$1</b> erakusten dira).',
 'rclistfrom' => 'Erakutsi $1 ondorengo aldaketa berriak',
@@ -1566,6 +1567,7 @@ Ikus ezazu [[Special:NewFiles|fitxategi berrien galeria]], irudizkoagoa den ikus
 'illegalfilename' => '"$1" fitxategiaren izenak orrialdeen izenburuetan erabili ezin diren karaktereak ditu. Mesedez, fitxategiari izena aldatu eta saiatu berriz igotzen.',
 'filename-toolong' => 'Fitxategi izenak ezin dira izan 240 byte baino luzeagoak.',
 'badfilename' => 'Irudiaren izena aldatu da: "$1".',
+'filetype-mime-mismatch' => '".$1" fitxategi luzapena ez dator bat fitxategiaren MIME motarekin ($2).',
 'filetype-badmime' => 'Ezin dira "$1" MIME motako fitxategiak igo.',
 'filetype-bad-ie-mime' => 'Ezin da fitxategia igo, Internet Explorerek "$1" bezala detektatuko lukeelako, zein fitxategi mota ez onartua eta arriskutsua den.',
 'filetype-unwanted-type' => '\'\'\'".$1"\'\'\' fitxategi mota ez da gustokoa. Hobesten {{PLURAL:$3|den fitxategi mota|diren fitxategi motak}} {{PLURAL:$2|$2 da|$2 dira}}.',
@@ -1577,6 +1579,7 @@ Baimendutako fitxategi {{PLURAL:$3|mota $2 da|motak $2 dira}}.',
 'filename-tooshort' => 'Fitxategiaren izena laburregia da.',
 'filetype-banned' => 'Mota horretako fitxategiak debekatuta daude.',
 'verification-error' => 'Fitxategiak ez du egiaztapena gainditu.',
+'hookaborted' => 'Egiten saiatu zaren aldaketa albo batera utzi du estentsio batek.',
 'illegal-filename' => 'Fitxategiaren izena ez da onartzen.',
 'overwrite' => 'Jada existitzen den fitxategi bat ezin da berridatzi.',
 'unknown-error' => 'Ezezaguna den errorea gertatu da.',
@@ -1585,6 +1588,7 @@ Baimendutako fitxategi {{PLURAL:$3|mota $2 da|motak $2 dira}}.',
 'large-file' => 'Ez da gomendagarria fitxategiak $1 baino handiagoak izatea; fitxategi honen tamaina: $2.',
 'largefileserver' => 'Fitxategi hau zerbitzariak baimentzen duena baino handiagoa da.',
 'emptyfile' => 'Badirudi igotzen ari zaren fitxategia hutsik dagoela. Mesedez, egiaztatu fitxategi hori dela igo nahi duzuna.',
+'windows-nonascii-filename' => 'Wiki honek ez du baimentzen letra bereziak dituzten fitxategi izenak.',
 'fileexists' => 'Badago izen hori daukan fitxategi bat; mesedez, ikusi existitzen den <strong>[[:$1]]</strong> fitxategia aldatu nahi duzun egiaztatzeko.
 [[$1|thumb]]',
 'filepageexists' => 'Fitxategi honen deskribapen orria dagoeneko sortuta dago <strong>[[:$1]]</strong>-en, baina, ez da existitzen izen hori duen fitxategirik.
@@ -1619,6 +1623,8 @@ Oraindik ere fitxategia igo nahi baduzu atzera itzuli eta izen berri bat erabili
 'php-uploaddisabledtext' => 'Fitxategi igoerak PHP-n ezinduta daude. Ikusi fitxategi_igoerak mesedez.',
 'uploadscripted' => 'Fitxategi honek web zerbitzariak modu ezegokian interpretatu lezakeen HTML edo script kodea dauka.',
 'uploadvirus' => 'Fitxategiak birusa dauka! Xehetasunak: $1',
+'uploadjava' => 'Fitxategia ZIP bat da eta Java .class fitxategi bat du.
+Java fitxategiak igotzea ez dago baimendua, segurtasun muga batzuk hausteko aukera ematen duelako.',
 'upload-source' => 'Jatorrizko fitxategia',
 'sourcefilename' => 'Iturri-fitxategiaren izena:',
 'sourceurl' => 'Jatorrizko URL-a:',
@@ -1869,6 +1875,7 @@ Bere [$2 fitxategiaren deskribapen orrialdea] behean dago.',
 'pageswithprop-legend' => 'Orrialde propietatea duten orrialdeak',
 'pageswithprop-prop' => 'Ezaugarriaren izena:',
 'pageswithprop-submit' => 'Joan',
+'pageswithprop-prophidden-long' => 'testu luzearen ezagaurria izkutatua ($1)',
 
 'doubleredirects' => 'Birzuzenketa bikoitzak',
 'doubleredirectstext' => 'Lerro bakoitzean lehen eta bigarren birzuzenketetarako loturak ikus daitezke, eta baita edukia daukan edo eduki beharko lukeen orrialderako lotura ere. Lehen birzuzenketak azken honetara <del>zuzendu</del> beharko luke.',
@@ -2125,6 +2132,16 @@ Orri honetan aurrerantzean egindako aldaketak zerrenda horretan agertuko dira.',
 'enotif_mailer' => '{{SITENAME}}(e)ko Oharpen Postaria',
 'enotif_reset' => 'Orrialde guztiak bisitatu bezala markatu',
 'enotif_impersonal_salutation' => '{{SITENAME}} erabiltzailea',
+'enotif_subject_deleted' => '{{SITENAME}}(e)ko $1 orrialdea {{GENDER:$2|ezabatu}} du $2 erabiltzaileak',
+'enotif_subject_created' => '{{SITENAME}}(e)ko $1 orrialdea {{GENDER:$2|sortu}} du $2 erabiltzaileak',
+'enotif_subject_moved' => '{{SITENAME}}(e)ko $1 orrialdea {{GENDER:$2|mugitu}} du $2 erabiltzaileak',
+'enotif_subject_restored' => '{{SITENAME}}(e)ko $1 orrialdea {{GENDER:$2|berreskurtu}} du $2 erabiltzaileak',
+'enotif_subject_changed' => '{{SITENAME}}(e)ko $1 orrialdea {{GENDER:$2|aldatu}} du $2 erabiltzaileak',
+'enotif_body_intro_deleted' => '{{SITENAME}}(e)ko $1 orrialdea {{GENDER:$2|ezabatu}} du $2 erabiltzaileak $PAGEEDITDATE datan, ikus $3.',
+'enotif_body_intro_created' => '{{SITENAME}}(e)ko $1 orrialdea {{GENDER:$2|sortu}} du $2 erabiltzaileak $PAGEEDITDATE datan, ikus $3 oraingo bertsiorako.',
+'enotif_body_intro_moved' => '{{SITENAME}}(e)ko $1 orrialdea {{GENDER:$2|mugitu}} du $2 erabiltzaileak $PAGEEDITDATE datan, ikus $3 oraingo bertsiorako.',
+'enotif_body_intro_restored' => '{{SITENAME}}(e)ko $1 orrialdea {{GENDER:$2|berrezarri}} du $2 erabiltzaileak $PAGEEDITDATE datan, ikus $3 oraingo bertsiorako.',
+'enotif_body_intro_changed' => '{{SITENAME}}(e)ko $1 orrialdea {{GENDER:$2|aldatu}} du $2 erabiltzaileak $PAGEEDITDATE datan, ikus $3 oraingo bertsiorako.',
 'enotif_lastvisited' => 'Jo $1 orrialdera zure azken bisitaz geroztik izandako aldaketa guztiak ikusteko.',
 'enotif_lastdiff' => 'Jo $1(e)ra aldaketa hau ikusteko.',
 'enotif_anon_editor' => '$1 erabiltzaile anonimoa',
@@ -2385,10 +2402,10 @@ Blokeo erregistroa azken sarrera ematen da azpian erreferentziarako:',
 
 # Block/unblock
 'autoblockid' => 'Blokeo automatikoa #$1',
-'block' => 'Erabiltzailea blokeatu',
+'block' => 'Blokeatu erabiltzailea',
 'unblock' => 'Erabiltzailea desblokeatu',
-'blockip' => 'Erabiltzailea blokeatu',
-'blockip-legend' => 'Erabiltzailea blokeatu',
+'blockip' => 'Blokeatu erabiltzailea',
+'blockip-legend' => 'Blokeatu erabiltzailea',
 'blockiptext' => 'IP helbide edo erabiltzaile izen bati idazketa baimenak kentzeko beheko formularioa erabil dezakezu. Ekintza hau bandalismoa saihesteko baino ez da burutu behar, eta beti ere [[{{MediaWiki:Policy-url}}|politikak]] errespetatuz. Blokeoaren arrazoi bat ere zehaztu ezazu (adibidez, orrialde batzuk zehaztuz).',
 'ipadressorusername' => 'IP Helbidea edo erabiltzaile izena',
 'ipbexpiry' => 'Iraungipena',
@@ -2401,15 +2418,17 @@ Blokeo erregistroa azken sarrera ematen da azpian erreferentziarako:',
 ** Beste erabiltzaileei mehatxatzea
 ** Kontu ugari erabiltzea
 ** Erabiltzaile izen desegokia',
-'ipbcreateaccount' => 'Kontua sortzea debekatu',
-'ipbemailban' => 'Erabiltzaileak e-mailak bidal ditzan ekidin',
+'ipb-hardblock' => 'Galarazi izena emandako erabiltzaileek IP helbide honetatik editatzea',
+'ipbcreateaccount' => 'Debekatu konturik sortzea',
+'ipbemailban' => 'Galarazi erabiltzaile honi mezu elektronikoak bidal ditzan',
 'ipbenableautoblock' => 'Erabiltzaile honek erabilitako azken IP helbidea automatikoki blokeatu, eta baita erabili dezakeen beste edozein IP ere',
-'ipbsubmit' => 'Erabiltzaile hau blokeatu',
+'ipbsubmit' => 'Blokeatu erabiltzaile hau',
 'ipbother' => 'Beste denbora-tarte bat',
 'ipboptions' => '2 ordu:2 hours,1 egun:1 day,3 egun:3 days,astebete:1 week,2 aste:2 weeks,hilabete:1 month,3 hilabete:3 months,6 hilabete:6 months,urtebete:1 year,betiko:infinite',
 'ipbhidename' => 'Lankide izena aldaketa eta zerrendetatik ezkutatu',
-'ipbwatchuser' => 'Erabiltzaile honen erabiltzaile eta eztabaida orrialdeak jarraitu',
-'ipb-change-block' => 'Lankidea honako balioekin bir-blokeatu',
+'ipbwatchuser' => 'Egin jarraipena erabiltzaile honen erabiltzaile eta eztabaida orriei',
+'ipb-disableusertalk' => 'Galarazi erabiltzaile honi bere eztabaida orria editatzea, blokeatuta dagoen aldian',
+'ipb-change-block' => 'Berriz blokeatu erabiltzailea, parametro hauekin',
 'ipb-confirm' => 'Blokeoa baieztatu',
 'badipaddress' => 'Baliogabeko IP helbidea',
 'blockipsuccesssub' => 'Blokeoa burutu da',
@@ -2458,10 +2477,9 @@ Ikus [[Special:BlockList|blokeoen zerrenda]] blokeoak aztertzeko.',
 'emaillink' => 'E-maila bidali',
 'autoblocker' => '"[[User:$1|$1]]"(e)k berriki erabili duen IP helbidea duzulako autoblokeatu zaizu. $1(e)k emandako arrazoia zera da: "\'\'\'$2\'\'\'"',
 'blocklogpage' => 'Blokeo erregistroa',
-'blocklog-showlog' => 'Lankide hau aurretik blokeatua izan da.
-Blokeo erregistroa ematen da azpian erreferentziarako:',
-'blocklog-showsuppresslog' => 'Lankide hau aurretik blokeatua eta ezkutatua izan da.
-Erregistroa ematen da azpian erreferentziarako:',
+'blocklog-showlog' => 'Lankide hau blokeatua izan da lehenago ere.
+Hona hemen blokeoen erregistroa, erreferentzia gisa:',
+'blocklog-showsuppresslog' => 'Lankide hau blokeatua eta ezkutatua izan da lehenago ere. Hona hemen erregistroa, erreferentzia gisa:',
 'blocklogentry' => 'wikilariak [[$1]] erabiltzailea blokeatu du. Blokeoaldia: $2 $3',
 'reblock-logentry' => '[[$1]] wikilariari blokeoaldia aldatu diogu. Blokeoaldi berria: $2 $3',
 'blocklogtext' => 'Erabiltzaileen blokeoen ezarpen eta ezabaketen erregistroa da hau. 
@@ -2496,16 +2514,16 @@ Hala ere, $2-(r)en parte denez, blokeoa kendu daiteke.',
 'ipbnounblockself' => 'Ez duzu baimenik zure buruari blokeoa kentzeko',
 
 # Developer tools
-'lockdb' => 'Datu-basea blokeatu',
+'lockdb' => 'Blokeatu datu basea',
 'unlockdb' => 'Datu-basea desblokeatu',
 'lockdbtext' => 'Datu-basea blokeatzeak edozein erabiltzailek orrialdeak aldatzea, hobespenak aldatzea, jarraipen zerrendan aldaketak egitea, eta datu-basean edozein aldaketa behar duen edozein ekintza galaraziko du. Mesedez, baieztatu zure asmoa hori dela, eta blokeoa kenduko duzula mantenua burutu ondoren.',
 'unlockdbtext' => 'Datu-basea desblokeatzerakoan erabiltzaile guztiek orrialdeak aldatu, beraien hobespenak ezarri, jarraipen zerrendan aldaketak egin eta beste eragiketa batzuk burutzeko gaitasuna leheneratuko du. Mesedez, baieztatu egin nahi duzuna hori dela.',
 'lockconfirm' => 'Bai, datu-basea blokeatu nahi dut',
 'unlockconfirm' => 'Bai, datu-basea desblokeatu nahi dut',
-'lockbtn' => 'Datu-basea blokeatu',
+'lockbtn' => 'Blokeatu datu basea',
 'unlockbtn' => 'Datu-basea desblokeatu',
 'locknoconfirm' => 'Ez duzu baieztapen kutxa hautatu.',
-'lockdbsuccesssub' => 'Datu-basea blokeatu egin da',
+'lockdbsuccesssub' => 'Datu-basea blokeatu da',
 'unlockdbsuccesssub' => 'Datu-basearen blokeoa kendu da',
 'lockdbsuccesstext' => 'Datu-basea blokeatu egin da. <br />Ez ahaztu mantenu lanak burutu ondoren [[Special:UnlockDB|blokeoa kentzeaz]].',
 'unlockdbsuccesstext' => 'Datu-basea desblokeatu egin da.',
@@ -2603,7 +2621,7 @@ Horrez gain, lotura zuzena ere erabil dezakezu; adibidez, [[{{#Special:Export}}/
 'export-addcat' => 'Gehitu',
 'export-addnstext' => 'Izen-tarteko orrialdeak gehitu:',
 'export-addns' => 'Gehitu',
-'export-download' => 'Fitxategi moduan gordetzeko eskaini',
+'export-download' => 'Gorde fitxategitzat',
 'export-templates' => 'Txantiloiak barneratu',
 'export-pagelinks' => 'Sartu lotutako orriak honako sakoneran:',
 
@@ -2628,6 +2646,8 @@ Mesedez bisitatu [https://www.mediawiki.org/wiki/Localisation MediaWiki] eta [//
 'thumbnail-more' => 'Handitu',
 'filemissing' => 'Fitxategia falta da',
 'thumbnail_error' => 'Errorea irudi txikia sortzerakoan: $1',
+'thumbnail_error_remote' => '$1 gunearen akats mezua:
+$2',
 'djvu_page_error' => 'DjVu orrialdea eremuz kanpo',
 'djvu_no_xml' => 'Ezinezkoa izan da DjVu fitxategiaren XML lortzea',
 'thumbnail-temp-create' => 'Ezin izan da behin-behineko iruditxoa sortu',
@@ -2676,6 +2696,12 @@ Fitxategiaren atal bat baino ez zen igo.',
 'import-upload' => 'Igo XML datuak',
 'import-token-mismatch' => 'Sesio data galdu da. Saia saitez berriro ere, mesedez.',
 'import-invalid-interwiki' => 'Ezin da esandako wikitik inportatu.',
+'import-error-edit' => '"$1" orrialdea ez da inportatu ez duzula baimenik aldatzeko.',
+'import-error-create' => '"$1" orrialdea ez da inportatu ez duzula baimenik sortzeko.',
+'import-error-interwiki' => '"$1" orrialdea ez da inportatu bere izena kanpo loturetarako gordeta dagoelako (interwiki).',
+'import-error-special' => '"$1" orrialdea ez da inportatu izen-tarte berezi bati dagokiolako eta horretan orrialderik ezin delako egon.',
+'import-error-invalid' => '"$1" orrialdea ez da inportatu izena ez delako baliagarria.',
+'import-options-wrong' => 'Aukera {{PLURAL:$2|ez-egokia|ez-egokiak}}:<nowiki>$1</nowiki>',
 'import-rootpage-invalid' => 'Emandako jatorri orrialdea izenburu ez-baliagarria da.',
 'import-rootpage-nosubpage' => 'Jatorri orrialdearen "$1" izen-tarteak ez du baimentzen azpi-orrialderik.',
 
@@ -2813,6 +2839,7 @@ Atal hau '''EZ''' bete!",
 'pageinfo-length' => 'Orriaren neurria (byteak)',
 'pageinfo-article-id' => 'Orriaren identifikazio zenbakia',
 'pageinfo-language' => 'Orriaren edukiaren hizkuntza',
+'pageinfo-content-model' => 'Orrialde edukiaren eredua',
 'pageinfo-robot-policy' => 'Errobotak indexatzea egiten',
 'pageinfo-robot-index' => 'Baimendua',
 'pageinfo-robot-noindex' => 'Debekatua',
@@ -2833,6 +2860,7 @@ Atal hau '''EZ''' bete!",
 'pageinfo-magic-words' => 'Hitz {{PLURAL:$1|magikoa|magikoak}} ($1)',
 'pageinfo-hidden-categories' => 'Ezkutuko {{PLURAL:$1|kategoria|kategoriak}} ($1)',
 'pageinfo-templates' => 'Txertatutako {{PLURAL:$1|txantiloia|txantiloiak}} ($1)',
+'pageinfo-transclusions' => '{{PLURAL:$1|Orrialde baten transklusioa|$1 orrialderen transklusioa}}',
 'pageinfo-toolboxlink' => 'Orri honen datuak',
 'pageinfo-redirectsto' => 'Hona birzuzentzen du',
 'pageinfo-redirectsto-info' => 'Informazioa',
@@ -2860,7 +2888,7 @@ Atal hau '''EZ''' bete!",
 'markedaspatrollederror' => 'Ezin da patruilatutzat markatu',
 'markedaspatrollederrortext' => 'Patruilatutzat markatzeko berrikuspen bat hautatu behar duzu.',
 'markedaspatrollederror-noautopatrol' => 'Ez daukazu zeure aldaketak patruilatutzat markatzeko baimenik.',
-'markedaspatrollednotify' => '$1 orrialdeari egindako aldaketa patruilatu moduan markatua izan da.',
+'markedaspatrollednotify' => '«$1» orriari egindako aldaketa patruilatutzat markatu da.',
 'markedaspatrollederrornotify' => 'Patruilatu gisa markatzean akatsa egon da.',
 
 # Patrol log
@@ -2904,6 +2932,7 @@ Zure sisteman exekutatzea arriskutsua izan liteke.",
 'file-info-png-looped' => 'begiztatua',
 'file-info-png-repeat' => '{{PLURAL:$1|Behin|$1 aldiz}} ikusia',
 'file-info-png-frames' => '{{PLURAL:$1|Frame bat|$1 frame}}',
+'file-no-thumb-animation' => "'''Oharra: Muga teknikoak direla eta, fitxategi honen iruditxoak ezin dira animatu.'''",
 
 # Special:NewFiles
 'newimages' => 'Fitxategi berrien galeria',
@@ -3527,6 +3556,7 @@ Halaber [[Special:EditWatchlist|aldatzaile estandarra]] erabil dezakezu.',
 'version-poweredby-credits' => "Wiki hau '''[https://www.mediawiki.org/ MediaWiki]'''k sustatzen du (copyright © 2001-$1 $2).",
 'version-poweredby-others' => 'beste batzuk',
 'version-poweredby-translators' => 'translatewiki.net itzultzaileak',
+'version-credits-summary' => 'Hurrengo pertsonak gogoan izan nahi ditugu [[Special:Version|MediaWikiri]] egindako ekarpena dela eta.',
 'version-software' => 'Instalatutako softwarea',
 'version-software-product' => 'Produktua',
 'version-software-version' => 'Bertsioa',
@@ -3597,6 +3627,7 @@ Halaber [[Special:EditWatchlist|aldatzaile estandarra]] erabil dezakezu.',
 'tags-tag' => 'Etiketaren izena',
 'tags-display-header' => 'Aldaketa zerrenden itxura',
 'tags-description-header' => 'Esanahiaren deskribapen osoa',
+'tags-active-header' => 'Aktiboa?',
 'tags-hitcount-header' => 'Etiketatutako aldaketak',
 'tags-active-yes' => 'Bai',
 'tags-active-no' => 'Ez',
@@ -3673,6 +3704,7 @@ Halaber [[Special:EditWatchlist|aldatzaile estandarra]] erabil dezakezu.',
 'feedback-message' => 'Mezua:',
 'feedback-cancel' => 'Utzi',
 'feedback-submit' => 'Feedbacka bidali',
+'feedback-adding' => 'Orriari feedbacka gehitzen...',
 'feedback-error1' => 'Akatsa: APIaren emaitza ez ezagunak',
 'feedback-error2' => 'Akatsa: Aldaketa ez da egin',
 'feedback-error3' => 'Akatsa: APIaren erantzunik gabe',
@@ -3686,6 +3718,7 @@ Halaber [[Special:EditWatchlist|aldatzaile estandarra]] erabil dezakezu.',
 # API errors
 'api-error-badaccess-groups' => 'Ez duzu baimendik fitxategi hauek wiki honetara igotzeko.',
 'api-error-badtoken' => 'Barne akatsa: token okerra.',
+'api-error-duplicate-popup-title' => 'Fitxategi {{PLURAL:$1|bikoiztua|bikoiztuak}}.',
 'api-error-empty-file' => 'Bidali duzun fitxategia hutsik dago.',
 'api-error-emptypage' => 'Berria sortzerako garaian orrialde hutsak ezin dira erabili.',
 'api-error-fetchfileerror' => 'Barne akatsa: zerbait gaizki joan da fitxategia eskuratzerakoan.',
@@ -3726,6 +3759,17 @@ Halaber [[Special:EditWatchlist|aldatzaile estandarra]] erabil dezakezu.',
 
 # Limit report
 'limitreport-cputime' => 'CPU denbora erabilpena',
+'limitreport-cputime-value' => '{{PLURAL:$1|Segundu $1|$1 segundu}}',
+'limitreport-walltime' => 'Denbora errealeko erabilpena',
+'limitreport-walltime-value' => '{{plural:$1|Segundu $1|$1 segundu}}',
+'limitreport-ppvisitednodes' => 'Preprozesadoreak bisitatu du nodo kontua',
+'limitreport-ppgeneratednodes' => 'Preprozesadoreak sortu du nodo kontua',
+'limitreport-postexpandincludesize' => 'Espantsioaren ondoko inklusio tamaina',
+'limitreport-postexpandincludesize-value' => '{{PLURAL:$2|byte $1/$2|$1/$2 byte}}',
+'limitreport-templateargumentsize' => 'Txantiloiaren argumentuaren tamaina',
+'limitreport-templateargumentsize-value' => '{{PLURAL:$2|byte $1/$2|$1/$2 byte}}',
+'limitreport-expansiondepth' => 'Gehienezko espantsio sakonera',
+'limitreport-expensivefunctioncount' => 'Parser funtzio kontaketa garestia',
 
 # Special:ExpandTemplates
 'expandtemplates' => 'Txantiloi ordezkatzailea',
index 095109f..93a91d9 100644 (file)
@@ -1344,6 +1344,8 @@ $2
 'cantcreateaccount-text' => "امكان ساختن حساب کاربری از این این نشانی آی‌پی ('''$1''') توسط [[User:$3|$3]] سلب شده است.
 
 دلیل ارائه شده توسط $3 چنین است: $2",
+'cantcreateaccount-range-text' => "ایجاد حساب از آدرس آی‌پی در مجموعه‌ی '''$1'''، که شامل آدرس آی‌پی شما ('''$4''') است، توسط [[User:$3|$3]] متوقف شده‌است.
+دلیل ارائه شده توسط $3، $2 است.",
 
 # History pages
 'viewpagelogs' => 'نمایش سیاهه‌های این صفحه',
@@ -1876,13 +1878,14 @@ $1",
 'recentchanges-label-bot' => 'این ویرایش را یک ربات انجام داده‌است',
 'recentchanges-label-unpatrolled' => 'این ویرایش هنوز گشت‌زنی نشده‌است',
 'recentchanges-label-plusminus' => 'حجم صفحه به اندازه این بایت‌ها تغییر یافته‌است',
+'recentchanges-legend-heading' => "'''اختصارها:'''",
 'recentchanges-legend-newpage' => '(همچنین به [[Special:NewPages|فهرست صفحات جدید]] نگاه کنید)',
 'recentchanges-legend-plusminus' => "('' ±۱۲۳'')",
 'rcnotefrom' => 'در زیر تغییرات از تاریخ <b>$2</b> آمده‌اند (تا <b>$1</b> مورد نشان داده می‌شود).',
 'rclistfrom' => 'نمایش تغییرات جدید با شروع از $1',
 'rcshowhideminor' => '$1 ویرایش‌های جزئی',
 'rcshowhidebots' => '$1 ربات‌ها',
-'rcshowhideliu' => '$1 کاربران ثبت‌نام‌کرده',
+'rcshowhideliu' => 'کاربران نسخهٔ $1 ثبت‌نام‌ کردند',
 'rcshowhideanons' => '$1 کاربران ناشناس',
 'rcshowhidepatr' => '$1 ویرایش‌های گشت‌خورده',
 'rcshowhidemine' => '$1 ویرایش‌های من',
@@ -2380,6 +2383,7 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization را ببینید.',
 'protectedpages' => 'صفحه‌های محافظت‌شده',
 'protectedpages-indef' => 'فقط محافظت‌های بی‌پایان',
 'protectedpages-cascade' => 'فقط محافظت‌های آبشاری',
+'protectedpages-noredirect' => 'پنهان‌کردن تغییر مسیرها',
 'protectedpagesempty' => 'در حال حاضر هیچ‌صفحه‌ای محافظت نشده‌است.',
 'protectedtitles' => 'عنوان‌های محافظت‌شده',
 'protectedtitlesempty' => 'در حال حاضر هیچ عنوانی با این پارامترها محافظت نشده‌است.',
@@ -2656,6 +2660,7 @@ $PAGEINTRO $NEWPAGE
 'delete-warning-toobig' => 'این صفحه تاریخچهٔ ویرایشی بزرگی دارد، که شامل بیش از $1 {{PLURAL:$1|نسخه|نسخه}} است.
 حذف آن ممکن است که عملکرد پایگاه دادهٔ {{SITENAME}} را مختل کند;
 با احتیاط ادامه دهید.',
+'deleting-backlinks-warning' => "''' هشدار:''' صفحات دیگر پیوند به صفحه شما  درباره حذف هستند.",
 
 # Rollback
 'rollback' => 'واگردانی ویرایش‌ها',
@@ -3998,14 +4003,14 @@ $5
 
 # Language selector for translatable SVGs
 'img-lang-default' => '(زبان پیش‌فرض)',
-'img-lang-info' => 'ارائه این تصویر در  $1   $2 .',
+'img-lang-info' => 'ارائه این تصویر در  $1 .  $2',
 'img-lang-go' => 'برو',
 
 # Table pager
 'ascending_abbrev' => 'صعودی',
 'descending_abbrev' => 'نزولی',
 'table_pager_next' => 'صفحهٔ بعدی',
-'table_pager_prev' => 'صفحه قبل',
+'table_pager_prev' => 'صفحهٔ قبل',
 'table_pager_first' => 'صفحهٔ نخست',
 'table_pager_last' => 'صفحهٔ آخر',
 'table_pager_limit' => 'نمایش $1 مورد در هر صفحه',
@@ -4163,13 +4168,15 @@ $5
 'version-entrypoints-scriptpath' => '[https://www.mediawiki.org/wiki/Manual:$wgScriptPath مسیر اسکریپت]',
 
 # Special:Redirect
-'redirect' => 'تغییرمسیر توسط پرونده، کاربر یا شناسهٔ نسخه',
+'redirect' => 'تغییرمسیر توسط پرونده، کاربر، صفحه یا شناسهٔ نسخه',
 'redirect-legend' => 'تغییرمسیر به یک پرونده یا صفحه',
-'redirect-summary' => 'این صفحهٔ ویژه به پرونده (نام پرونده داده‌شده)، صفحه (شماره شناسهٔ صفحه داده‌شده) یا صفحهٔ کاربری (شناسهٔ عددی کاربری داده‌شده) تغییرمسیر می‌یابد. طرز استفاده: [[{{#Special:Redirect}}/file/Example.jpg]]، [[{{#Special:Redirect}}/revision/328429]] یا [[{{#Special:Redirect}}/user/101]].',
+'redirect-summary' => 'این صفحهٔ ویژه به پرونده (نام پرونده داده‌شده)، صفحه (شماره شناسهٔ صفحه یا شماره نسخهٔ داده‌شده) یا صفحهٔ کاربری (شناسهٔ عددی کاربری داده‌شده) تغییرمسیر می‌یابد. طرز استفاده: [[{{#Special:Redirect}}/file/Example.jpg]]، 
+[[{{#Special:Redirect}}/page/64308]]، [[{{#Special:Redirect}}/revision/328429]] یا [[{{#Special:Redirect}}/user/101]].',
 'redirect-submit' => 'برو',
 'redirect-lookup' => 'جستجو:',
 'redirect-value' => 'مقدار:',
 'redirect-user' => 'شناسهٔ کاربر',
+'redirect-page' => 'شناسهٔ صفحه',
 'redirect-revision' => 'نسخهٔ صفحه',
 'redirect-file' => 'نام پرونده',
 'redirect-not-exists' => 'مقدار پیدا نشد',
@@ -4407,10 +4414,12 @@ $5
 'expand_templates_input' => 'متن ورودی:',
 'expand_templates_output' => 'نتیجه',
 'expand_templates_xml_output' => 'خروجی XML',
+'expand_templates_html_output' => 'خروجی اچ‌تی‌ام‌ال خام',
 'expand_templates_ok' => 'تأیید',
 'expand_templates_remove_comments' => 'حذف ملاحظات',
 'expand_templates_remove_nowiki' => 'خنثی کردن تگ‌های <nowiki> در نتیجه',
 'expand_templates_generate_xml' => 'نمایش درخت تجزیهٔ XML',
+'expand_templates_generate_rawhtml' => 'نمایش اچ‌تی‌ام‌ال خام',
 'expand_templates_preview' => 'پیش‌نمایش',
 
 );
index 149c30f..c1fbe77 100644 (file)
@@ -1701,12 +1701,13 @@ Tämä tieto on julkinen.',
 'recentchanges-label-bot' => 'Tämän muutoksen suoritti botti',
 'recentchanges-label-unpatrolled' => 'Tätä muutosta ei ole vielä tarkastettu',
 'recentchanges-label-plusminus' => 'Sivun koon muutos tavuina',
+'recentchanges-legend-heading' => "'''Selitys:'''",
 'recentchanges-legend-newpage' => '(katso myös [[Special:NewPages|lista uusista sivuista]])',
 'rcnotefrom' => 'Alla on muutokset <b>$2</b> lähtien. Enintään <b>$1</b> merkintää näytetään.',
 'rclistfrom' => 'Näytä uudet muutokset $1 alkaen',
 'rcshowhideminor' => '$1 pienet muutokset',
 'rcshowhidebots' => '$1 botit',
-'rcshowhideliu' => '$1 kirjautuneet käyttäjät',
+'rcshowhideliu' => '$1 rekisteröityneet käyttäjät',
 'rcshowhideanons' => '$1 anonyymit käyttäjät',
 'rcshowhidepatr' => '$1 tarkastetut muutokset',
 'rcshowhidemine' => '$1 omat muutokset',
@@ -2408,7 +2409,7 @@ Ota yhteyttä muokkaajaan:
 sähköposti: $PAGEEDITOR_EMAIL
 wiki: $PAGEEDITOR_WIKI
 
-Uusia ilmoituksia tästä sivusta ei tule kunnes vierailet sivulla. Voit myös nollata ilmoitukset kaikille tarkkailemillesi sivuille tarkkailulistallasi.
+Uusia ilmoituksia tästä sivusta ei tule kunnes vierailet sivulla sisään kirjautuneena. Voit myös nollata ilmoitukset kaikille tarkkailemillesi sivuille tarkkailulistallasi.
 
              {{GRAMMAR:genitive|{{SITENAME}}}} ilmoitusjärjestelmä
 
index b13f82c..c24aa95 100644 (file)
@@ -25,6 +25,7 @@
  * @author Dereckson
  * @author Diti
  * @author Dodoïste
+ * @author Dr Brains
  * @author Drongou
  * @author Elfix
  * @author Enzoreg
@@ -1272,6 +1273,9 @@ Il devrait y avoir moins de $2 appel{{PLURAL:$2||s}}, alors qu'il y en a mainten
 'cantcreateaccount-text' => "La création de compte depuis cette adresse IP (<b>$1</b>) a été bloquée par [[User:$3|$3]].
 
 La raison donnée était ''$2''.",
+'cantcreateaccount-range-text' => "La création de compte depuis les adresses IP dans la plage '''$1''', qui comprend votre adresse IP ('''$4'''), ont été bloquées par [[User:$3|$3]].
+
+Le motif fourni par $3 est ''$2''",
 
 # History pages
 'viewpagelogs' => 'Voir les opérations sur cette page',
@@ -1395,8 +1399,8 @@ Vérifiez les journaux.",
 'revdelete-offender' => 'Auteur de la révision :',
 
 # Suppression log
-'suppressionlog' => 'Journal des suppressions',
-'suppressionlogtext' => 'Voici la liste des suppressions et des blocages qui portent sur du contenu caché aux administrateurs.
+'suppressionlog' => 'Journal des masquages',
+'suppressionlogtext' => 'Voici la liste des masquages et des blocages qui portent sur du contenu caché aux administrateurs.
 Voir la [[Special:BlockList|liste des blocages]] pour la liste des bannissements et des blocages actuellement opérationnels.',
 
 # History merging
@@ -1799,13 +1803,14 @@ Cette information sera publique.',
 'recentchanges-label-bot' => 'Cette modification a été effectuée par un robot.',
 'recentchanges-label-unpatrolled' => "Cette modification n'a pas encore été patrouillée.",
 'recentchanges-label-plusminus' => 'La taille de la page a changé de ce nombre d’octets.',
+'recentchanges-legend-heading' => "'''Légende :'''",
 'recentchanges-legend-newpage' => '(voir aussi la [[Special:NewPages|liste des nouvelles pages]]).',
 'recentchanges-legend-plusminus' => "(''±123'')",
 'rcnotefrom' => "Voici les modifications effectuées depuis le '''$2''' ('''$1''' au maximum).",
 'rclistfrom' => 'Afficher les nouvelles modifications depuis le $1.',
 'rcshowhideminor' => '$1 les modifications mineures',
 'rcshowhidebots' => '$1 les robots',
-'rcshowhideliu' => '$1 les utilisateurs inscrits',
+'rcshowhideliu' => '$1 les utilisateurs enregistrés',
 'rcshowhideanons' => '$1 les utilisateurs anonymes',
 'rcshowhidepatr' => '$1 les modifications surveillées',
 'rcshowhidemine' => '$1 mes modifications',
@@ -2305,6 +2310,7 @@ Les entrées <del>barrées</del> ont été résolues.',
 'protectedpages' => 'Pages protégées',
 'protectedpages-indef' => 'Uniquement les protections permanentes',
 'protectedpages-cascade' => 'Uniquement les protections en cascade',
+'protectedpages-noredirect' => 'Masquer les redirections',
 'protectedpagesempty' => "Aucune page n'est protégée de cette façon.",
 'protectedtitles' => 'Titres protégés',
 'protectedtitlesempty' => "Aucun titre n'est actuellement protégé avec ces paramètres.",
@@ -2581,6 +2587,7 @@ La suppression de telles pages a été restreinte pour prévenir des perturbatio
 'delete-warning-toobig' => "Cette page possède un historique important de modifications, dépassant $1 version{{PLURAL:$1||s}}.
 La supprimer peut perturber le fonctionnement de la base de données de {{SITENAME}} ;
 veuiller ne procéder qu'avec prudence.",
+'deleting-backlinks-warning' => "'''Attention :''' D’autres pages ont un lien vers la page que vous allez supprimer.",
 
 # Rollback
 'rollback' => 'Révoquer les modifications',
@@ -2624,7 +2631,7 @@ Consultez la [[Special:ProtectedPages|liste des pages protégées]] pour la list
 'protect-norestrictiontypes-title' => 'Page non protégeable',
 'protect-legend' => 'Confirmer la protection',
 'protectcomment' => 'Motif :',
-'protectexpiry' => "Date d'expiration :",
+'protectexpiry' => 'Date d’expiration :',
 'protect_expiry_invalid' => "La date d'expiration est invalide.",
 'protect_expiry_old' => "La date d'expiration est déjà passée.",
 'protect-unchain-permissions' => "Déverrouiller davantage d'options de protection",
@@ -4108,13 +4115,14 @@ Vous devriez avoir reçu [{{SERVER}}{{SCRIPTPATH}}/COPYING une copie de la Licen
 'version-entrypoints-scriptpath' => '[https://www.mediawiki.org/wiki/Manual:$wgScriptPath Chemin de script]',
 
 # Special:Redirect
-'redirect' => 'Redirigé par fichier, utilisateur, ou ID de révision',
+'redirect' => 'Redirigé par fichier, utilisateur, page ou ID de révision',
 '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 fourni) ou une page d’utilisateur (identifiant numérique de l’utilisateur fourni). Utilisation : [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revision/328429]], ou [[{{#Special:Redirect}}/user/101]].',
+'redirect-summary' => 'Cette page spéciale redirige vers un fichier (nom de fichier fourni), une page (ID de révision ou de page fourni) ou une page d’utilisateur (identifiant numérique de l’utilisateur fourni). Utilisation : [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], ou [[{{#Special:Redirect}}/user/101]].',
 'redirect-submit' => 'Valider',
 'redirect-lookup' => 'Recherche :',
 'redirect-value' => 'Valeur :',
 'redirect-user' => "ID de l'utilisateur",
+'redirect-page' => 'ID de page',
 'redirect-revision' => 'Révision de la page',
 'redirect-file' => 'Nom du fichier',
 'redirect-not-exists' => 'Valeur non trouvée',
@@ -4357,10 +4365,12 @@ En fait, elle réalise l'expansion de pratiquement tout ce qui est encadré par
 'expand_templates_input' => 'Texte wiki source :',
 'expand_templates_output' => 'Texte wiki obtenu après expansion',
 'expand_templates_xml_output' => 'Résultat intermédiaire de l’analyse, au format XML',
+'expand_templates_html_output' => 'Sortie en HTML brut',
 'expand_templates_ok' => 'Valider',
 'expand_templates_remove_comments' => 'Supprimer les commentaires',
 'expand_templates_remove_nowiki' => 'Supprime les marqueurs <nowiki> dans le résultat',
 'expand_templates_generate_xml' => 'Voir l’arborescence d’analyse XML',
+'expand_templates_generate_rawhtml' => 'Afficher le HTML brut',
 'expand_templates_preview' => 'Aperçu du rendu',
 
 );
index 5140dc3..ecf6d8a 100644 (file)
@@ -122,6 +122,9 @@ $messages = array(
 'tog-underline' => 'Sotlinee leams',
 'tog-justify' => 'Justifiche paragraf',
 'tog-hideminor' => 'Plate lis piçulis modifichis tai ultins cambiaments',
+'tog-hidepatrolled' => 'Plate lis modifichis controladis intai ultins cambiaments',
+'tog-newpageshidepatrolled' => 'Plate lis pagjinis verificadis de liste des pagjinis gnovis',
+'tog-extendwatchlist' => 'Slargje la liste des controladis specialis, no dome aes ultimis',
 'tog-usenewrc' => 'Ragrupe lis modifichis par pagjine intes ultimis modifichis e inati oservâts speciai',
 'tog-numberheadings' => 'Numerazion automatiche dai titui',
 'tog-showtoolbar' => 'Mostre sbare dai imprescj pe modifiche (JavaScript)',
@@ -130,7 +133,10 @@ $messages = array(
 'tog-editsectiononrightclick' => 'Modifiche une sezion fracant cul tast diestri<br /> sui titui des sezions',
 'tog-showtoc' => 'Mostre la tabele dai contignûts pes pagjinis cun plui di 3 sezions',
 'tog-rememberpassword' => 'Visiti di me su chest sgarfadôr (par un massim di $1 {{PLURAL:$1|zornade|zornadis}})',
+'tog-watchcreations' => 'Zonte  lis pagjinis creadis e i file cjariats aes oservadis specials',
 'tog-watchdefault' => 'Zonte in automatic lis pagjinis che o cambii inte liste di chês tignudis di voli',
+'tog-watchmoves' => 'Zonte in automatic lis pagjinis che o cambii inte liste di chês tignudis di voli',
+'tog-watchdeletion' => 'Zonte in automatic lis pagjinis che o cambii inte liste di chês tignudis di voli',
 'tog-minordefault' => 'Imposte come opzion predeterminade ducj i cambiaments come piçui',
 'tog-previewontop' => 'Mostre anteprime parsore dal spazi pe modifiche',
 'tog-previewonfirst' => 'Mostre anteprime te prime modifiche',
@@ -139,18 +145,33 @@ $messages = array(
 'tog-enotifminoredits' => 'Mandimi une email ancje pai piçui cambiaments ae pagjine',
 'tog-enotifrevealaddr' => 'Distapone fûr il gno recapit email tai messaçs di notifiche',
 'tog-shownumberswatching' => 'Mostre il numar di utents che a stan tignint di voli',
+'tog-oldsig' => 'Firme esistente',
 'tog-fancysig' => 'Interprete lis firmis come test wiki (cence un leam automatic)',
+'tog-uselivepreview' => 'Dopre la anteprime direte (sperimentâl)',
+'tog-forceeditsummary' => 'Domande conferme se il cjamp ogjet al è vueit',
 'tog-watchlisthideown' => 'Plate i miei cambiaments inte liste des pagjinis tignudis di voli',
+'tog-watchlisthidebots' => 'Plate i bot de liste dai oservâts speciai',
+'tog-watchlisthideminor' => 'Plate i piçui cambiaments de liste dai oservâts speciai',
+'tog-watchlisthideliu' => 'Plate lis modifichis dai utents regjstrâts de liste dai oservâts speciai',
+'tog-watchlisthideanons' => 'Palte lis modifichis dai utents anonims dai oservâts speciai',
+'tog-watchlisthidepatrolled' => 'Plate lis modifichis verificadis de liste dai oservâts speciai',
 'tog-ccmeonemails' => 'Mandimi une copie dai messaçs che o mandi ai altris utents',
+'tog-diffonly' => 'No mostrâ la pagjine dopo il control des versions',
 'tog-showhiddencats' => 'Mostre categoriis platadis',
+'tog-norollbackdiff' => 'No mostrâ lis diferencis dopo vê revocât une pagjine',
 'tog-useeditwarning' => 'Visimi cuant che o stoi par lassâ une pagjine dulà che a son cambiaments no salvâts',
+'tog-prefershttps' => 'Dopre simpri une conession sigure par acedi',
 
 'underline-always' => 'Simpri',
 'underline-never' => 'Mai',
 'underline-default' => 'Ten ilis impostazions dal Browser o de skin che tu stâs doprant',
 
 # Font style option in Special:Preferences
+'editfont-style' => 'Stîl di caratar de aree di scriture',
 'editfont-default' => 'Predeterminât dal sgarfadôr',
+'editfont-monospace' => 'Caratar a lungjece fisse',
+'editfont-sansserif' => 'Caratar sans-serif',
+'editfont-serif' => 'Caratar di scriture serif',
 
 # Dates
 'sunday' => 'Domenie',
@@ -203,6 +224,18 @@ $messages = array(
 'oct' => 'Otu',
 'nov' => 'Nov',
 'dec' => 'Dic',
+'january-date' => '$1 di Zenâr',
+'february-date' => '$1 di Fevrâr',
+'march-date' => '$1 di Març',
+'april-date' => '$1 di Avrîl',
+'may-date' => '$1 di Mai',
+'june-date' => '$1 di Jugn',
+'july-date' => '$1 di Lui',
+'august-date' => '$1 di Avost',
+'september-date' => '$1 di Setembar',
+'october-date' => '$1 di Otubar',
+'november-date' => '$1 di Novembar',
+'december-date' => '$1 di Dicembar',
 
 # Categories related messages
 'pagecategories' => '{{PLURAL:$1|Categorie|Categoriis}}',
@@ -219,13 +252,16 @@ $messages = array(
 'category-file-count' => '{{PLURAL:$2|Cheste categorie e conten dome un file, mostrât ca sot.|Cheste categorie e conten {{PLURAL:$1|un file, mostrât|$1 files, mostrâts}} ca sot, suntun totâl di $2.}}',
 'category-file-count-limited' => 'Cheste categorie e conten {{PLURAL:$1|il file mostrât|i $1 files mostrâts}} ca sot.',
 'listingcontinuesabbrev' => 'cont.',
+'index-category' => 'Pagjinis indicizadis',
 'noindex-category' => 'Pagjinis no indicizadis',
+'broken-file-category' => 'Pagjnis cun leams a file no corets',
 
 'about' => 'Informazions',
 'article' => 'Vôs',
 'newwindow' => '(al vierç un gnûf barcon)',
 'cancel' => 'Scancele',
 'moredotdotdot' => 'Plui...',
+'morenotlisted' => 'La liste no je complete',
 'mypage' => 'Pagjine',
 'mytalk' => 'Discussions',
 'anontalk' => 'Discussion par chest IP',
@@ -239,6 +275,7 @@ $messages = array(
 'qbpageoptions' => 'Cheste pagjine',
 'qbmyoptions' => 'Mês pagjinis',
 'faq' => 'Domandis plui frecuentis',
+'faqpage' => 'Project:FAQ',
 
 # Vector skin
 'vector-action-addsection' => 'Gnove sezion',
@@ -247,6 +284,7 @@ $messages = array(
 'vector-action-protect' => 'Protêç',
 'vector-action-undelete' => 'Recupere',
 'vector-action-unprotect' => 'Gambie la protezion',
+'vector-simplesearch-preference' => 'Abilite la bare di ricjerche semplificade (dome pe Vector Skin)',
 'vector-view-create' => 'Cree',
 'vector-view-edit' => 'Cambie',
 'vector-view-history' => 'Cjale il storic',
@@ -256,6 +294,7 @@ $messages = array(
 'namespaces' => 'Spazis dai nons',
 'variants' => 'Variants',
 
+'navigation-heading' => 'Menù di Navigazion',
 'errorpagetitle' => 'Erôr',
 'returnto' => 'Torne a $1.',
 'tagline' => 'Di {{SITENAME}}',
@@ -277,6 +316,7 @@ $messages = array(
 'create-this-page' => 'Cree cheste pagjine',
 'delete' => 'Elimine',
 'deletethispage' => 'Elimine cheste pagjine',
+'undeletethispage' => 'Recupere cheste pagjine',
 'undelete_short' => 'Recupere {{PLURAL:$1|modifiche eliminade|$1 modifichis eliminadis}}',
 'viewdeleted_short' => 'Viôt {{PLURAL:$1|une modifiche eliminade|$1 modifichis eliminadis}}',
 'protect' => 'Protêç',
@@ -311,12 +351,17 @@ $messages = array(
 'jumpto' => 'Va a:',
 'jumptonavigation' => 'navigazion',
 'jumptosearch' => 'ricercje',
+'view-pool-error' => 'Scusinus ma i server a son sovrecjariats in chest moment. Masse utents a stan cjalant cheste pagjnie. Torne a provâ fra cualchi minût.
+
+$1',
+'pool-timeout' => 'Timeout durant la spiete dal sbolc.',
+'pool-queuefull' => 'La code dal pool e je plene',
 'pool-errorunknown' => 'Erôr no cognossût',
 
 # All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage).
 'aboutsite' => 'Informazions su {{SITENAME}}',
 'aboutpage' => 'Project:Informazions',
-'copyright' => 'Il contignût al è disponibil sot de $1',
+'copyright' => 'Il contignût al è disponibil sot de licence $1 se nol è specificât in altre maniere',
 'copyrightpage' => '{{ns:project}}:Copyrights',
 'currentevents' => 'Lis gnovis',
 'currentevents-url' => 'Project:Lis gnovis',
@@ -326,18 +371,27 @@ $messages = array(
 'helppage' => 'Help:Contignûts',
 'mainpage' => 'Pagjine principâl',
 'mainpage-description' => 'Pagjine principâl',
+'policy-url' => 'Project:Politiche',
 'portal' => 'Ostarie',
 'portal-url' => 'Project:Ostarie',
 'privacy' => 'Politiche pe privacy',
 'privacypage' => 'Project:Politiche_pe_privacy',
 
 'badaccess' => 'Permès no suficients',
+'badaccess-group0' => 'No tu sês autorizât a  eseguî la azion domandade',
+'badaccess-groups' => 'La azione domandade è je pussibile dome dai utents {{PLURAL:$2|dal grup|di un di chescj grups}}: $1.',
 
 'versionrequired' => 'E covente la version $1 di MediaWiki',
+'versionrequiredtext' => 'La version $1 de MediaWiki a covente par doprâ cheste pagjine.
+Cjale la [[Special:Version|pagjine de version]].',
 
 'ok' => 'Va ben',
 'retrievedfrom' => 'Cjapât fûr di $1',
 'youhavenewmessages' => 'Tu âs $1 ($2).',
+'youhavenewmessagesfromusers' => '{{PLURAL:$4|Tu âs}} $1 da {{PLURAL:$3|un altri utent|$3 utens}} ($2).',
+'youhavenewmessagesmanyusers' => 'Tu âs $1 di tancj utents ($2)',
+'newmessageslinkplural' => '{{PLURAL:$1|un gnûf messaç|999=gnûfs messaçs}}',
+'newmessagesdifflinkplural' => '{{PLURAL:$1|ultin cambiament|999=ultins cambiaments}}',
 'youhavenewmessagesmulti' => 'Tu âs gnûfs messaçs su $1',
 'editsection' => 'cambie',
 'editold' => 'cambie',
@@ -354,11 +408,15 @@ $messages = array(
 'viewdeleted' => 'Vuelistu viodi $1?',
 'restorelink' => '{{PLURAL:$1|une modifiche eliminade|$1 modifichis eliminadis}}',
 'feedlinks' => 'Canâl (feed):',
+'feed-invalid' => 'Modalitât di iscrizion al feed no valide',
+'feed-unavailable' => 'No son disponibîi feeds',
 'site-rss-feed' => 'Canâl RSS di $1',
 'site-atom-feed' => 'Canâl Atom di $1',
 'page-rss-feed' => 'Canâl RSS par "$1"',
 'page-atom-feed' => 'Canâl Atom par "$1"',
 'red-link-title' => '$1 (la pagjine no esist)',
+'sort-descending' => 'Ordinament decressint',
+'sort-ascending' => 'Ordinament cressint',
 
 # Short words for each namespace, by default used in the namespace tab in monobook
 'nstab-main' => 'Vôs',
@@ -373,6 +431,9 @@ $messages = array(
 'nstab-category' => 'Categorie',
 
 # Main script and global functions
+'nosuchaction' => 'Azion no pussibile',
+'nosuchactiontext' => "La azion specificade inte URL no je valide. Forsit la URL no je stade scrite juste o forsit il leam no l'è valit. Forsit al è un bug in {{SITENAME}}.",
+'nosuchspecialpage' => 'Pagjine speciâl no disponibil',
 'nospecialpagetext' => '<strong>Tu âs cirût une pagjine speciâl no valide.</strong>
 
 Une liste des pagjinis speciâls validis a si pues cjatâ su [[Special:SpecialPages|{{int:specialpages}}]].',
@@ -380,8 +441,14 @@ Une liste des pagjinis speciâls validis a si pues cjatâ su [[Special:SpecialPa
 # General errors
 'error' => 'Erôr',
 'databaseerror' => 'Erôr de base di dâts',
+'databaseerror-text' => 'Erôr inte interogazion dal database. Forsit al è un bug intal software.',
+'databaseerror-textcl' => 'Erôr inte interogazion dal database.',
+'databaseerror-query' => 'Interogazion: $1',
+'databaseerror-function' => 'Funzion $1',
+'databaseerror-error' => 'Erôr: $1',
 'laggedslavemode' => 'Atenzion: La pagjine podarès no segnalâ inzornaments recents.',
 'readonly' => 'Base di dâts blocade',
+'enterlockreason' => 'Scrivi il motîf dal bloc e indicâ cuant che al varès di jessi gjavât.',
 'readonlytext' => "La base di dâts pal moment e je blocade e no si puedin zontâ vôs e fâ modifichis, probabilmentri pe normâl manutenzion de base di dâts, daspò de cuâl dut al tornarà normâl.
 
 L'aministradôr ch'al à metût il bloc al à scrit cheste motivazion: $1",
@@ -392,18 +459,49 @@ Chest in gjenar al è causât dal jessi lâts daûr dal leam a une pagjine che e
 Se la cause no samee jessi cheste, tu podaressis vê cjatât un problem tal software.
 Segnalilu par plasê a un [[Special:ListUsers/sysop|administrator]], notant la URL.',
 'missingarticle-rev' => '(numar de revision: $1)',
+'missingarticle-diff' => '(Dif.: $1, $2)',
+'readonly_lag' => 'Par cumò il database al è stât blocât pe sincronizazion cul server',
+'internalerror' => 'Erôr interni',
+'internalerror_info' => 'Erôr interni: $1',
+'fileappenderrorread' => 'No si pues lei "$1" durant òa zonte',
+'fileappenderror' => 'No si pues tacâ "$1" a "$2"',
+'filecopyerror' => 'No si pues copiâ il file "$1" in "$2"',
+'filerenameerror' => 'No si pues rinominâ "$1" in "$2"',
 'filedeleteerror' => 'No si pues eliminâ il file "$1".',
+'directorycreateerror' => 'No si pues creâ la cartele "$1"',
 'filenotfound' => 'No si pues cjatâ il file "$1".',
+'fileexistserror' => 'No si pues scrivi il file "$1": al esist zà',
+'unexpected' => 'Valor no proviodût: "$1" = "$2"',
+'formerror' => 'Erôr: no si rive a mandâ il form',
+'badarticleerror' => 'Operazion no permetude in cheste pagjine',
+'cannotdelete' => 'La pagjine o il file "$1" no si pues concelâ. 
+Podarès jessi stât cancelât di cualchidun altri.',
+'cannotdelete-title' => 'No si pues cancelâ la pagjine "$1"',
+'delete-hook-aborted' => 'La cancelazion e je stade anulade di un hook. 
+No je une spigazion disponibile.',
+'no-null-revision' => 'No si pues creâ une version vuedie de pagjine "$1"',
 'badtitle' => 'Titul sbaliât',
 'badtitletext' => 'Il titul de pagjine che tu âs inserît nol è valit, al è vuelit, o al veve un erôr tal colegament tra wiki diviersis o tra versions in altris lenghis.
 Al podarès vê dentri caratars che no podin jessi doprâts tai titui.',
+'perfcached' => 'I dats seguints a vegnin di une copie de "cache" dal database e a podaressin no jessi inzornâts. La cache e rive a tignî al massim  {{PLURAL:$1|un risultâ disponibil|$1 risultats disponibii}}',
+'perfcachedts' => 'I dats seguints a vegnin di une copie de "cache" dal database dal $1 e a podaressin no jessi inzornâts. La cache e rive a tignî al massim  {{PLURAL:$1|un risultâ disponibil|$1 risultats disponibii}}',
+'querypage-no-updates' => 'Inzornaments de pagjine a son al moment sospindûts. I dats metûts no saràn salvâts.',
 'viewsource' => 'Cjale risultive',
+'viewsource-title' => 'Cjale il codiç di $1',
+'actionthrottled' => 'Azion ritardade',
+'actionthrottledtext' => 'Come misure anti-spam tu âs des limitazion tal fâ cheste azion masse voltis in toc di timp curt. Il limit al è stât superât. Tu puedis tornâ a provâ fra cualchi minût.',
+'protectedpagetext' => 'Pagjine protete par evitâ modifichis o altris azions.',
 'viewsourcetext' => 'Tu puedis viodi e copiâ la risultive di cheste pagjine:',
+'viewyourtext' => 'Tu puedis viodi o copiâ il codiç des "tôs modifichis" in cheste pagjine.',
+'ns-specialprotected' => 'Lis pagjinis specialis no si puedin modificâ',
+'exception-nologin' => 'No tu sês jentrât',
+
+# Virus scanner
+'virus-unknownscanner' => 'antivirus no cognossût:',
 
 # Login and logout pages
-'logouttext' => "'''Tu sâs cumò lât fûr.'''
+'logouttext' => "'''Tu sës cumò lât fûr.'''
 
-Tu puedis continuâ a doprâ {{SITENAME}} come anonim, o tu puedis <span class='plainlinks'>[$1 jentrâ di gnûf]</span> cul stes o cuntun altri non utent.
 Considere che cualchi pagjine e pues mostrâti ancjemò come jentrât tal sît fin cuant che no tu netis la memorie cache dal sgarfadôr.",
 'yourname' => 'Non utent',
 'yourpassword' => 'Peraule clâf',
@@ -731,7 +829,7 @@ Leiende: (cur) = difarencis cun la version atuâl, (prec) = difarencis cun la ve
 'timezoneregion-indian' => 'Ocean Indian',
 'timezoneregion-pacific' => 'Ocean Pacific',
 'allowemail' => 'Ative la ricezion di messaçs email di bande di altris utents¹',
-'prefs-searchoptions' => 'Opzions de ricercje',
+'prefs-searchoptions' => 'Cîr',
 'prefs-namespaces' => 'Spazis dai nons',
 'defaultns' => 'Se no, cîr in chescj spazis dai nons:',
 'default' => 'predeterminât',
@@ -740,7 +838,7 @@ Leiende: (cur) = difarencis cun la version atuâl, (prec) = difarencis cun la ve
 'prefs-custom-js' => 'JS personalizât',
 'prefs-emailconfirm-label' => 'Conferme de pueste eletroniche:',
 'youremail' => 'Email *',
-'username' => 'Non utent:',
+'username' => '{{GENDER:$1|Non utent}}:',
 'uid' => 'ID utent:',
 'prefs-memberingroups' => 'Al fâs part {{PLURAL:$1|dal grup|dai grups}}:',
 'prefs-registration' => 'Date di regjistrazion:',
@@ -804,11 +902,12 @@ La tô direzion di pueste no ven mostrade cuant che i utents ti contatin.',
 'recentchanges-label-minor' => 'Chest al è un piçul cambiament',
 'recentchanges-label-bot' => 'Chest cambiament al è stât eseguît di un bot',
 'recentchanges-label-unpatrolled' => 'Chest cambiament nol è stât ancjemò verificât',
+'recentchanges-label-plusminus' => 'La dimension de pagjine e je cambiade di chest numar di byte',
 'rcnotefrom' => "Ca sot i cambiaments dal '''$2''' (fintremai al '''$1''').",
 'rclistfrom' => 'Mostre i ultins cambiaments dal $1',
 'rcshowhideminor' => '$1 i piçui cambiaments',
 'rcshowhidebots' => '$1 i bots',
-'rcshowhideliu' => '$1 utents jentrâts',
+'rcshowhideliu' => '$1 utents regjstrâts',
 'rcshowhideanons' => '$1 utents anonims',
 'rcshowhidepatr' => '$1 cambiaments verificâts',
 'rcshowhidemine' => '$1 miei cambiaments',
@@ -1284,7 +1383,7 @@ Tu puedis cambiâ il nivel di protezion di cheste pagjine, ma chest nol varà ef
 'move-page-legend' => 'Môf pagjine',
 'movepagetext' => "Cun il formulari ca sot tu puedis gambiâ il non a une pagjine, movint dut il sô storic al gnûf non.
 Il vieri titul al deventarà une pagjine di reindirizament al gnûf titul. I leams ae vecje pagjine no saran gambiâts; verifiche
-par plasê che no sedin reindirizaments doplis o no funzionants.
+par plasê che no sedin reindirizaments  [[Special:DoubleRedirects|doplis]] o [[Special:BrokenRedirects|no funzionants]].
 Tu sês responsabil che i leams a continui a mandâ tal puest just.
 
 Note che la pagjine '''no''' sarà movude se e je za une pagjine cul gnûf titul, a mancul che no sedi vueide o un reindirizament e
index ecbfdb0..89b8ea4 100644 (file)
@@ -8,6 +8,7 @@
  * @file
  *
  * @author Geitost
+ * @author Kening Aldgilles
  * @author Maartenvdbent
  * @author Purodha
  * @author Pyt
@@ -169,7 +170,7 @@ $messages = array(
 'tog-enotifminoredits' => 'E-mail my ek by lytse feroarings fan siden op myn folchlist',
 'tog-enotifrevealaddr' => 'Myn e-mailadres sjen litte yn e-mailberjochten',
 'tog-shownumberswatching' => 'It tal brûkers sjen litte dat dizze side folget',
-'tog-oldsig' => 'Hûdige sinjatuerprintallyk:',
+'tog-oldsig' => 'Aktuele sinjatuerprintallyk:',
 'tog-fancysig' => 'Sinjatuer as wikitekst behannelje (sûnder automatyske keppeling)',
 'tog-uselivepreview' => '"live proefbyld" brûke (JavaScript nedich - eksperimenteel)',
 'tog-forceeditsummary' => 'Warskôgje at ik de gearfetting leech lit.',
@@ -245,6 +246,18 @@ $messages = array(
 'oct' => 'okt',
 'nov' => 'nov',
 'dec' => 'des',
+'january-date' => '$1 jannewaris',
+'february-date' => '$1 febrewaris',
+'march-date' => '$1 maart',
+'april-date' => '$1 april',
+'may-date' => '$1 maaie',
+'june-date' => '$1 juny',
+'july-date' => '$1 july',
+'august-date' => '$1 augustus',
+'september-date' => '$1 septimber',
+'october-date' => '$1 oktober',
+'november-date' => '$1 novimber',
+'december-date' => '$1 desimber',
 
 # Categories related messages
 'pagecategories' => '{{PLURAL:$1|Kategory|Kategoryen}}',
@@ -261,6 +274,8 @@ $messages = array(
 'category-file-count' => '{{PLURAL:$2|Dizze kategory befettet de folgjende triem.|Dizze kategory befettet {{PLURAL:$1|de folgjende triem|$1 de folgjende triemmen}}, fan yn totaal $2.}}',
 'category-file-count-limited' => 'Dizze kategory befettet {{PLURAL:$1|de folgjende triem|de folgjende $1 triemmen}}.',
 'listingcontinuesabbrev' => '(ferfolch)',
+'index-category' => 'Yndeksearre siden',
+'noindex-category' => 'Net-yndeksearre siden',
 
 'about' => 'Ynfo',
 'article' => 'Ynhâld side',
@@ -310,6 +325,7 @@ $messages = array(
 'printableversion' => 'Ofdruk-ferzje',
 'permalink' => 'Fêste keppeling',
 'print' => 'Ofdrukke',
+'view' => 'Lêze',
 'edit' => 'Wizigje',
 'create' => 'Oanmeitsje',
 'editthispage' => 'Side bewurkje',
@@ -420,9 +436,11 @@ $1",
 
 # Main script and global functions
 'nosuchaction' => 'Unbekende aksje.',
-'nosuchactiontext' => "De aksje dy't jo oanjoegen fia de URL is net bekind by it Wiki-program",
+'nosuchactiontext' => 'De opdracht yn de URL is ûnjildich.
+Mooglik hasto in typefout makke yn de URL of in ferkearde keppeling folge.
+It soe likegoed in programmatuerflater fan {{SITENAME}} wêze kinne.',
 'nosuchspecialpage' => 'Unbekende side',
-'nospecialpagetext' => "Jo hawwe in Wiki-side opfrege dy't net bekind is by it Wiki-programma.",
+'nospecialpagetext' => "Jo hawwe in Wiki-side opfrege dy't net bekend is by it Wiki-programma.",
 
 # General errors
 'error' => 'Fout',
@@ -455,19 +473,19 @@ Meitsje dêr melding fan by in [[Special:ListUsers/sysop|systeembehearder]] fan
 'unexpected' => 'Hommelse wearde: "$1"="$2".',
 'formerror' => 'Fout: koe formulier net oerlizze',
 'badarticleerror' => 'Dat kin op dizze side net dien wurden.',
-'cannotdelete' => 'Koe de oantsjutte side of it oantsjutte ôfbyld net wiskje. (Faaks hat in oar dat al dien.)',
+'cannotdelete' => 'Koe de oantsjutte side of it oantsjutte ôfbyld "$1" net fuorthelje. (Faaks hat in oar dat al dien.)',
 'badtitle' => 'Misse titel',
 'badtitletext' => 'De opfrege sidetitel wie ûnjildich, leech, of in miskeppele yntertaal of ynterwiki titel.',
-'perfcached' => "Dit is bewarre ynformaasje dy't mooglik ferâldere is. A maximum of {{PLURAL:$1|one result is|$1 results are}} available in the cache.",
-'perfcachedts' => 'De neikommende gegevens komme út de bewarre ynformaasje, dizze is it lêst fernijd op $1. A maximum of {{PLURAL:$4|one result is|$4 results are}} available in the cache.',
+'perfcached' => "Dit is bewarre ynformaasje dy't mooglik ferâldere is. In maksimum fan {{PLURAL:$1|ien resultaat is|$1 resultaten binne}} beskikber yn de cache.",
+'perfcachedts' => 'De neikommende gegevens komme út de bewarre ynformaasje, dizze is it lêst fernijd op $1. In maksimum fan {{PLURAL:$4|ien resultaat is|$4 resultaten binne}} beskikber yn de cache.',
 'querypage-no-updates' => 'Dizze side kin net bywurke wurde. Dizze gegevens wurde net ferfarske.',
 'viewsource' => 'Besjoch de boarne',
 'actionthrottled' => 'Hanneling opkeard',
 'actionthrottledtext' => 'As maatregel tsjin spam is it tal kearen per tiidsienheid beheind dat jo dizze hanneling ferrjochtsje kinne. Jo binne oer de limyt. Besykje it in tal minuten letter wer.',
-'protectedpagetext' => 'Dizze side is befeilige. Bewurkjen is net mûglik.',
+'protectedpagetext' => 'Dizze side is befeilige. Bewurkjen is net mooglik.',
 'viewsourcetext' => 'Jo kinne de boarnetekst fan dizze side besjen en kopiearje:',
-'protectedinterface' => "Dizze side befettet tekst foar berjochten fan 'e software en is befeilige om misbrûk tefoaren te kommen.",
-'editinginterface' => "'''Warskôging;''' Jo bewurkje in side dy't brûkt wurdt troch software. Bewurkings op dizze side beynfloedzje de gebrûksynterface fan elkenien. Oerweagje foar oersettings [//translatewiki.net/wiki/Main_Page?setlang=fy translatewiki.net] te brûken, it oersetprojekt foar MediaWiki.",
+'protectedinterface' => "Dizze side jout systeemteksten fan 'e software en is befeilige tsjin misbrûk. Asto oersettingen foar alle wiki's tafoegje of bewurkje wolst, kinsto [//translatewiki.net/ translatewiki.net] brûke.",
+'editinginterface' => "'''Tink derom;''' Jo bewurkje in side dy't brûkt wurdt foar systeemteksten foar de software. Bewurkings op dizze side beynfloedzje de brûkersynterface fan elkenien. Asto wol oersettingen tafoegje of bewurkje wolst kinsto  [//translatewiki.net/wiki/Main_Page?setlang=fy translatewiki.net] brûke, it oersetprojekt foar MediaWiki.",
 'cascadeprotected' => 'Dizze side is skoattele tsjin wizigjen, om\'t der in ûnderdiel útmakket fan de neikommende {{PLURAL:$1|side|siden}}, dy\'t skoattele {{PLURAL:$1|is|binne}} mei de "ûnderlizzende siden" opsje ynskeakele: $2',
 'namespaceprotected' => "Jo hawwe gjin rjochten om siden yn'e nammerûmte '''$1''' te bewurkjen.",
 'ns-specialprotected' => "Siden yn'e nammerûmte {{ns:special}} kinne net bewurke wurde.",
@@ -482,30 +500,65 @@ De oanfierde reden is ''$2''.",
 # Login and logout pages
 'logouttext' => "'''Jo binne no ôfmeld.'''
 
-Jo kinne de {{SITENAME}} fierders anonym brûke, of jo op 'e <span class='plainlinks'>[$1 nij oanmelde]</span> ûnder deselde of in oare namme.
-Mûglik wurdt noch in tal siden werjûn as wiene Jo oanmeld, oant Jo de cache fan Jo browser leegje.",
+Guon siden kinne noch foar it ljocht komme, krekt as wiesto noch oanmeld. Asto de cache fan dyn webblêder leechhellest feroaret dat wer.",
 'yourname' => 'Jo meidochnamme:',
+'userlogin-yourname' => 'Meidoggersnamme',
+'userlogin-yourname-ph' => 'Jou dyn brûkersnamme',
+'createacct-another-username-ph' => 'Jou dyn brûkersnamme',
 'yourpassword' => 'Jo wachtwurd',
+'userlogin-yourpassword' => 'Wachtwurd',
+'userlogin-yourpassword-ph' => 'Jou dyn wachtwurd',
+'createacct-yourpassword-ph' => 'Jou dyn wachtwurd',
 'yourpasswordagain' => 'Jo wachtwurd (nochris)',
-'remembermypassword' => 'Oare kear fansels oanmelde (for a maximum of $1 {{PLURAL:$1|day|days}})',
+'createacct-yourpasswordagain' => 'Befêstigje wachtwurd',
+'createacct-yourpasswordagain-ph' => 'Befêstigje wachtwurd nochris',
+'remembermypassword' => 'Oare kear fansels oanmelde (maksimaal $1 {{PLURAL:$1|dei|dagen}})',
+'userlogin-remembermypassword' => 'Ynlogd bliuwe',
+'userlogin-signwithsecure' => 'Feilige ferbining brûke',
 'yourdomainname' => 'Jo domein:',
+'password-change-forbidden' => 'Op dizze wiky kinst gjin wachtwurden feroare',
 'externaldberror' => 'Der is in fout by it oanmelden by de database of jo hawwe gjin tastimming om jo ekstern account by te wurkjen.',
 'login' => 'Oanmelde',
 'nav-login-createaccount' => 'Oanmelde',
 'loginprompt' => "Jo moatte 'cookies' oanstean hawwe om yn jo oan te melden by {{SITENAME}}.",
 'userlogin' => 'Oanmelde',
+'userloginnocreate' => 'Ynlogge',
 'logout' => 'Ofmelde',
 'userlogout' => 'Ofmelde',
 'notloggedin' => 'Net oanmelde',
+'userlogin-noaccount' => 'Hasto gjin akkount?',
+'userlogin-joinproject' => 'Meidwaan {{SITENAME}}',
 'nologin' => 'Noch net oanmelden as meidogger? $1.',
 'nologinlink' => 'Meitsje in brûker oan',
 'createaccount' => 'Nije ynstellings oanmeitsje',
 'gotaccount' => "Hawwe jo jo al as meidogger oanmelde? '''$1'''.",
 'gotaccountlink' => 'Oanmelde',
+'userlogin-resetlink' => 'Ynlochdata fergetten?',
+'userlogin-resetpassword-link' => 'Wachtwurd fergetten?',
+'helplogin-url' => 'Help:Oanmelde',
+'createacct-emailrequired' => 'E-mailadres',
+'createacct-emailoptional' => 'E-mailadres (net ferplichte)',
+'createacct-email-ph' => 'E-mailadres ynfiere',
+'createacct-another-email-ph' => 'E-mailadres ynfiere',
 'createaccountmail' => 'troch e-mail',
+'createacct-realname' => 'Echte namme (net ferplichte)',
+'createaccountreason' => 'Reden:',
+'createacct-reason' => 'Reden',
+'createacct-reason-ph' => 'Wêrom makkesto in oare akkount?',
+'createacct-captcha' => 'Feiligenshifking',
+'createacct-imgcaptcha-ph' => 'Nim de tekst fan hjirboppe oer',
+'createacct-submit' => 'Meitsje in akkount',
+'createacct-another-submit' => 'Meitsje in oare akkount',
+'createacct-benefit-heading' => '{{SITENAME}} is makke troch minsken krekt as dy.',
+'createacct-benefit-body1' => '{{PLURAL:$1|bewurking|bewurkings}}',
+'createacct-benefit-body2' => '{{PLURAL:$1|side|siden}}',
+'createacct-benefit-body3' => 'aktive {{PLURAL:$1|skriuwer|skriuwers}}',
 'badretype' => 'De ynfierde wachtwurden binne net lyk.',
-'userexists' => 'Dy meidochnamme wurdt al brûkt. Besykje in oarenien.',
+'userexists' => 'Dy meidoggersnamme wurdt al brûkt. 
+Besykje in oarenien.',
 'loginerror' => 'Oanmeldflater',
+'createacct-error' => 'Flater slein by meitsjen fan akkount',
+'createaccounterror' => 'Koe akkount net meitsje: $1',
 'nocookiesnew' => 'De brûker is oanmakke mar net oanmeld. {{SITENAME}} brûkt cookies foar it oanmelden fan brûkers. Skeakelje dy yn en meld jo dan oan mei jo nije brûkersnamme en wachtwurd.',
 'nocookieslogin' => '{{SITENAME}} brûkt cookies foar it oanmelden fan brûkers. Jo hawwe cookies útskeakele. Skeakelje dy opsje oan en besykje it nochris.',
 'noname' => 'Jo moatte in meidognamme opjaan.',
@@ -567,12 +620,22 @@ Jo moatte efkes wachtsje foar't jo it op'e nij besykje kinne.",
 'resetpass_forbidden' => 'Wachtwurden kinne net feroare wurde',
 'resetpass-no-info' => "Jo moatte oanmeld wêze foar't Jo dizze side brûke kinne.",
 'resetpass-submit-loggedin' => 'Wachtwurd feroarje',
+'resetpass-submit-cancel' => 'Ofbrekke',
 'resetpass-wrong-oldpass' => 'It momintele of tydlike wachtwurd is ûnjildich.
 Mûglik hawwe Jo Jo wachtwurd al feroare of in nij tydlik wachtwurd oanfrege.',
 'resetpass-temp-password' => 'Tydlik wachtwurd:',
 
 # Special:PasswordReset
+'passwordreset-legend' => 'Wachtwurd weromsette',
 'passwordreset-username' => 'Meidoggernamme',
+'passwordreset-domain' => 'Domein:',
+'passwordreset-email' => 'E-mailadres:',
+'passwordreset-emailtitle' => 'Akkountdetails op {{SITENAME}}',
+
+# Special:ChangeEmail
+'changeemail' => 'Feroarje e-mailadres',
+'changeemail-header' => 'Feroarje akkount e-mailadres',
+'changeemail-cancel' => 'Ofbrekke',
 
 # Edit page toolbar
 'bold_sample' => 'Fette tekst',
@@ -699,18 +762,19 @@ Hjirby sizze jo tagelyk ta, dat jo dizze tekst sels skreaun hawwe, of oernommen
 As jo net wolle dat jo teksten yngeand oanpast wurde troch oaren, set se hjir dan net.<br />
 Jo sizze ek ta dat jo de oarspronklike auteur binne fan dit materiaal, of dat jo it kopiearre hawwe út in boarne yn it publike domein, of in soartgelikense frije boarne (sjuch $1 foar details).
 '''BRUK GJIN MATERIAAL DAT BESKERME WURDT TROCH AUTEURSRJOCHT, OF JO MOATTE DER TASTIMMING FOAR HAWWE!'''",
-'longpageerror' => "'''FOUT: de tekst dy't jo tafoege hawwe is $1 kilobyte grut, wat grutter is as it maksimum fan $2 kilobytes.
+'longpageerror' => "'''FOUT: de tekst dy't jo tafoege hawwe is {{PLURAL:$1|ien kilobyte|$1 kilobytes}} grut, wat grutter is as it maksimum fan {{PLURAL:$2|ien kilobyte|$2 kilobytes}}.
 Bewarjen is net mûglik.'''",
 'readonlywarning' => "'''Warskôging: De databank is ôfsletten foar ûnderhâld, dus jo kinne jo bewurkings no net fêstlizze. Bewarje de tekst foar lettere pleatsing yn in teksttriem.'''
 
 In  behearder hat de database blokkearre om de folgjende reden: $1",
-'protectedpagewarning' => "'''Waarskôging: Dizze side is beskerme, dat gewoane brûkers dy net bewurkje kinne.'''",
+'protectedpagewarning' => "'''Warskôging: Dizze side is beskerme, dat gewoane brûkers dy net bewurkje kinne.'''",
 'semiprotectedpagewarning' => "'''Tink derom:''' dizze side is befeilige en kin allinne troch registrearre brûkers bewurke wurde.",
 'cascadeprotectedwarning' => "'''Warskôging:''' Dizze side is skoattele sadat allinnich behearders de side wizigje kinne, om't der in ûnderdiel útmakket fan de neikommende {{PLURAL:\$1|side|siden}}, dy't skoattele binne mei de \"ûnderlizzende siden\" opsje ynskeakele:",
-'titleprotectedwarning' => "'''WARSKÔGING: Dizze side is befeilige, dat allinne inkelde brûkers kinne him oanmeitsje.'''",
-'templatesused' => 'Berjochten brûkt op dizze side:',
-'templatesusedpreview' => 'Yn dit proefbyld sjabloanen:',
-'templatesusedsection' => "Sjabloanen dy't brûkt wurde yn dizze subkop:",
+'titleprotectedwarning' => "'''WARSKÔGING: Dizze side is befeilige. Der binne [[Special:ListGroupRights|spesjale rjochten]] nedich om dizze side meitsje te kinnen.'''
+De lêste lochrigel stiet hjirûnder:",
+'templatesused' => '{{PLURAL:$1|Berjocht|Berjochten}} brûkt op dizze side:',
+'templatesusedpreview' => "{{PLURAL:$1|Sjabloan|Sjabloanen}} dy't yn dizze bewurking brûkt wurde:",
+'templatesusedsection' => "{{PLURAL:$1|Sjabloan|Sjabloanen}} dy't brûkt wurde yn dizze subkop:",
 'template-protected' => '(befeilige)',
 'template-semiprotected' => '(semi-befeilige)',
 'hiddencategories' => 'Dizze side falt yn de folgjende ferburgen
@@ -733,8 +797,10 @@ Der is gjin taljochting beskikber.',
 Hy liket fuorthelle te wezen.',
 'edit-conflict' => 'Bewurkingskonflikt.',
 'edit-no-change' => "Dyn bewurking is is net trochfierd, om 't der gjin feroaring yn 'e tekst oanbrocht is.",
+'postedit-confirmation' => 'Dyn bewurking is fêstlein.',
 'edit-already-exists' => 'De side is net oanmakke.
 Hy bestie al.',
+'defaultmessagetext' => 'Standert berjochttekst',
 
 # Parser/template warnings
 'expensive-parserfunction-warning' => 'Warskôging: Dizze side brûkt tefolle kostbere parserfunksjes.
@@ -1333,6 +1399,8 @@ Klikken op in kolomkop feroaret de sortearring.',
 'listfiles_size' => 'Grutte',
 'listfiles_description' => 'Beskriuwing',
 'listfiles_count' => 'Ferzjes',
+'listfiles-latestversion-yes' => 'Ja',
+'listfiles-latestversion-no' => 'Nee',
 
 # File description page
 'file-anchor-link' => 'Triem',
@@ -2115,6 +2183,10 @@ Alle folgjende links dy't op deselde rigel steane, wurde behannele as útsûnder
 'exif-exposuretime-format' => '$1 sek ($2)',
 'exif-flash' => 'Flits',
 'exif-filesource' => 'Triemboarne',
+'exif-contrast' => 'Kontrast',
+'exif-sharpness' => 'Skerpte',
+'exif-gpstimestamp' => 'GPS-tiid (atoomklok)',
+'exif-gpsspeedref' => 'Snelheidsienheid',
 'exif-gpsdatestamp' => 'GPS-datum',
 
 'exif-unknowndate' => 'Datum ûnbekend',
@@ -2269,4 +2341,14 @@ Wolle jo de side wier op 'e nij skriuwe?",
 'revdelete-unrestricted' => 'hat beheinings foar behearders goedmakke',
 'rightsnone' => '(gjin)',
 
+# Feedback
+'feedback-subject' => 'Underwerp:',
+'feedback-message' => 'Berjocht:',
+'feedback-cancel' => 'Ofbrekke',
+'feedback-submit' => 'Feedback ferstjoere',
+'feedback-close' => 'Dien',
+
+# Search suggestions
+'searchsuggest-search' => 'Sykje',
+
 );
index 51ad206..59bf178 100644 (file)
@@ -1043,8 +1043,8 @@ Velaquí está a última entrada do rexistro de bloqueos, por se quere consultal
 '''Este aínda non foi gardado!'''",
 'sitejspreview' => "'''Lembre que só está vendo a vista previa deste código JavaScript.'''
 '''Este aínda non foi gardado!'''",
-'userinvalidcssjstitle' => "'''Aviso:''' Non hai ningún tema chamado \"\$1\".
-Lembre que as páxinas .css e .js personalizadas utilizan un título en minúsculas, como por exemplo {{ns:user}}:Foo/vector.css no canto de {{ns:user}}:Foo/Vector.css.",
+'userinvalidcssjstitle' => '\'\'\'Aviso:\'\'\' Non hai ningunha aparencia chamada "$1".
+Lembre que as páxinas .css e .js personalizadas utilizan un título en minúsculas, como por exemplo "{{ns:user}}:Foo/vector.css" no canto de "{{ns:user}}:Foo/Vector.css".',
 'updated' => '(Actualizado)',
 'note' => "'''Nota:'''",
 'previewnote' => "'''Lembre que esta é só unha vista previa e que aínda non gardou os seus cambios!'''",
@@ -1178,6 +1178,9 @@ Comprobe a comparación que aparece a continuación para confirmar que isto é o
 'cantcreateaccount-text' => "A creación de contas desde este enderezo IP ('''$1''') foi bloqueada por [[User:$3|$3]].
 
 A razón dada por $3 foi ''$2''",
+'cantcreateaccount-range-text' => "A creación de contas dende direccións IP no rango '''$1''', e que inclúe á súa dirección IP ('''$4'''), foi bloqueada polo usuario [[User:$3|$3]].
+
+A razón dada por $3 foi ''$2''.",
 
 # History pages
 'viewpagelogs' => 'Ver os rexistros desta páxina',
@@ -1524,6 +1527,7 @@ Se escolle dalo utilizarase para atribuírlle o seu traballo.',
 'prefs-tokenwatchlist' => 'Pase',
 'prefs-diffs' => 'Diferenzas',
 'prefs-help-prefershttps' => 'Esta preferencia ha aplicarse no seu vindeiro acceso ao sistema.',
+'prefs-tabs-navigation-hint' => 'Consello: Pode empregar as frechas esquerda e dereita para navegar polas lapelas da lista.',
 
 # User preference: email validation using jQuery
 'email-address-validity-valid' => 'O enderezo de correo electrónico semella válido',
@@ -1710,6 +1714,7 @@ Se escolle dalo utilizarase para atribuírlle o seu traballo.',
 'recentchanges-label-bot' => 'Esta edición foi realizada por un bot',
 'recentchanges-label-unpatrolled' => 'Esta edición aínda non foi comprobada',
 'recentchanges-label-plusminus' => 'O tamaño da páxina variou este número de bytes',
+'recentchanges-legend-heading' => "'''Lenda:'''",
 'recentchanges-legend-newpage' => '(véxase tamén a [[Special:NewPages|lista de páxinas novas]])',
 'recentchanges-legend-plusminus' => "(''±123'')",
 'rcnotefrom' => "A continuación móstranse os cambios feitos desde o '''$3''' ás '''$4''' (móstranse '''$1''' como máximo).",
@@ -2184,6 +2189,7 @@ As entradas <del>riscadas</del> xa foron resoltas.',
 'ninterwikis' => '$1 {{PLURAL:$1|interwiki|interwikis}}',
 'nlinks' => '$1 {{PLURAL:$1|ligazón|ligazóns}}',
 'nmembers' => '$1 {{PLURAL:$1|páxina|páxinas}}',
+'nmemberschanged' => '$1 → $2 {{PLURAL:$2|membro|membros}}',
 'nrevisions' => '$1 {{PLURAL:$1|revisión|revisións}}',
 'nviews' => 'vista {{PLURAL:$1|unha vez|$1 veces}}',
 'nimagelinks' => 'Empregada {{PLURAL:$1|nunha páxina|en $1 páxinas}}',
@@ -2222,6 +2228,7 @@ As entradas <del>riscadas</del> xa foron resoltas.',
 'protectedpages' => 'Páxinas protexidas',
 'protectedpages-indef' => 'Só as proteccións indefinidas',
 'protectedpages-cascade' => 'Só as proteccións en serie',
+'protectedpages-noredirect' => 'Agochar as redireccións',
 'protectedpagesempty' => 'Actualmente non hai ningunha páxina protexida con eses parámetros.',
 'protectedtitles' => 'Títulos protexidos',
 'protectedtitlesempty' => 'Actualmente non hai ningún título protexido con eses parámetros.',
@@ -2500,6 +2507,7 @@ Limitouse a eliminación destas páxinas para previr problemas de funcionamento
 '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}}.
 Ao eliminala pódense provocar problemas de funcionamento nas operacións da base de datos de {{SITENAME}};
 proceda con coidado.',
+'deleting-backlinks-warning' => "'''Atención:''' Outras páxinas ligan á páxina que vostede quere borrar.",
 
 # Rollback
 'rollback' => 'Reverter as edicións',
@@ -3848,7 +3856,7 @@ Por favor, confirme que realmente quere recrear esta páxina.",
 
 # Language selector for translatable SVGs
 'img-lang-default' => '(lingua por defecto)',
-'img-lang-info' => 'Renderizar esta imaxe en $1 $2.',
+'img-lang-info' => 'Renderizar esta imaxe en $1. $2',
 'img-lang-go' => 'Mostrar',
 
 # Table pager
@@ -3952,13 +3960,14 @@ Debería recibir [{{SERVER}}{{SCRIPTPATH}}/COPYING unha copia da licenza públic
 'version-entrypoints-scriptpath' => '[https://www.mediawiki.org/wiki/Manual:$wgScriptPath Ruta das escrituras]',
 
 # Special:Redirect
-'redirect' => 'Redirixir por nome de ficheiro, ID de usuario ou ID de revisión',
+'redirect' => 'Redirixir por nome de ficheiro, ID de usuario, ID de páxina ou ID de revisión',
 '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 dunha revisión) ou unha páxina de usuario (dado o ID dun usuario). Utilización: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revision/328429]], or [[{{#Special:Redirect}}/user/101]].',
+'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). Utilización: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]] ou [[{{#Special:Redirect}}/user/101]].',
 'redirect-submit' => 'Continuar',
 'redirect-lookup' => 'Procurar:',
 'redirect-value' => 'Valor:',
 'redirect-user' => 'ID de usuario',
+'redirect-page' => 'ID de páxina',
 'redirect-revision' => 'Revisión de páxina',
 'redirect-file' => 'Nome de ficheiro',
 'redirect-not-exists' => 'Non se atopou o valor',
@@ -4152,6 +4161,7 @@ En caso contrario, pode empregar o formulario sinxelo inferior. O seu comentario
 'api-error-overwrite' => 'Non está permitido sobrescribir un ficheiro existente.',
 'api-error-stashfailed' => 'Erro interno: O servidor non puido almacenar o ficheiro temporal.',
 'api-error-publishfailed' => 'Erro interno: O servidor non puido publicar o ficheiro temporal.',
+'api-error-stasherror' => 'Houbo un erro mentras se subía o ficheiro a stash.',
 'api-error-timeout' => 'O servidor non respondeu no tempo esperado.',
 'api-error-unclassified' => 'Houbo un erro descoñecido.',
 'api-error-unknown-code' => 'Erro descoñecido: "$1"',
@@ -4201,10 +4211,12 @@ De feito, expande case calquera cousa entre dúas chaves.',
 'expand_templates_input' => 'Texto de entrada:',
 'expand_templates_output' => 'Resultado',
 'expand_templates_xml_output' => 'Saída XML',
+'expand_templates_html_output' => 'Saída HTML en bruto',
 'expand_templates_ok' => 'Aceptar',
 'expand_templates_remove_comments' => 'Eliminar os comentarios',
 'expand_templates_remove_nowiki' => 'Suprimir as etiquetas <nowiki> no resultado',
 'expand_templates_generate_xml' => 'Mostrar as árbores de análise XML',
+'expand_templates_generate_rawhtml' => 'Mostrar o HTML en bruto',
 'expand_templates_preview' => 'Vista previa',
 
 );
index 2a020c3..240f7aa 100644 (file)
@@ -1541,7 +1541,7 @@ HTML નાકું ચકાસો',
 'enhancedrc-history' => 'ઇતિહાસ',
 'recentchanges' => 'તાજા ફેરફારો',
 'recentchanges-legend' => 'હાલમાં થયેલા ફેરફારોના વિકલ્પ',
-'recentchanges-summary' => 'વિàª\95િમાàª\82 àª¤àª¾àª\9cà«\87તરમાàª\82 àª¥àª¯à«\87લા àª«à«\87રફારà«\8b àªªàª° àª\85હિંથી નજર રાખો.',
+'recentchanges-summary' => 'વિàª\95િમાàª\82 àª¤àª¾àª\9cà«\87તરમાàª\82 àª¥àª¯à«\87લા àª«à«\87રફારà«\8b àªªàª° àª\85હà«\80ંથી નજર રાખો.',
 'recentchanges-feed-description' => 'આ ફીડ દ્વારા વિકિમાં થયેલા તાજા ફેરફારો પર ધ્યાન રાખો.',
 'recentchanges-label-newpage' => 'આ ફેરફાર દ્વારા નવું પાનું નિર્મિત થયું',
 'recentchanges-label-minor' => 'આ એક નાનો સુધારો છે.',
@@ -2248,27 +2248,26 @@ $PAGEINTRO $NEWPAGE
 
 ફેરફારોનો સારાંશ: $PAGESUMMARY $PAGEMINOREDIT
 
-સંપાદકનો સંપર્ક :
+સંપાદકનો સંપર્ક:
 ઇ-મેલ: $PAGEEDITOR_EMAIL
 વિકિ: $PAGEEDITOR_WIKI
 
-જ્યાં સુધી તમે લોગઈન થઈ આ પાનાની મુલાકાત નહી લો ત્યાં સુધી તેમાં ભવિષ્યમાં થનાર કોઇ પણ ફેરફારની સૂચના તમને મળશે નહિ.
-તમે તમારી ધ્યાન સૂચિમાં તમે જોયેલા પાના સંબંધી સૂચનાને લાગતા વિલપોમાં ફેરફાર કરી શકો છો.
+જ્યાં સુધી તમે પ્રવેશ કરીને આ પાનાની મુલાકાત નહી લો ત્યાં સુધી તેમાં ભવિષ્યમાં થનાર કોઇ પણ ફેરફારની સૂચના તમને મળશે નહિ. તમે તમારી ધ્યાન સૂચિમાં તમે જોયેલા પાના સંબંધી સૂચનાને લાગતા વિલપોમાં ફેરફાર કરી શકો છો.
 
 
 આપની વિશ્વાસુ {{SITENAME}} સૂચના પ્રણાલી   
+
 --
-email notification settings બદલવા માટે મુલાકાત લો
+ઇમેલ સૂચના પ્રણાલી બદલવા માટે મુલાકાત લો
 {{canonicalurl:{{#special:Preferences}}}}
 
-તમારà«\80 àª§à«\8dયાનસà«\82àª\9aિના  àªµàª¿àª\95à«\8dલà«\8dપ àª\97à«\8bઠવણ માટે મુલાકાત લો
+તમારà«\80 àª§à«\8dયાનસà«\82àª\9aિનà«\80 àªµàª¿àª\95à«\8dલà«\8dપ àª\97à«\8bઠવણà«\80 માટે મુલાકાત લો
 {{canonicalurl:{{#special:EditWatchlist}}}}
 
-ધà«\8dયાનસà«\82àª\9aિમાàª\82થà«\80 àªªàª¾àª¨à«\81àª\82 àª¹àª\9fાવવા àª®à«\81લાàª\95ાત àª²à«\8b  
+ધà«\8dયાનસà«\82àª\9aિમાàª\82થà«\80 àªªàª¾àª¨à«\81àª\82 àª¹àª\9fાવવા àª®àª¾àª\9fà«\87 àª®à«\81લાàª\95ાત àª²à«\8b
 $UNWATCHURL
 
-મંતવ્યો અને વધુ મદદ માટે 
+મંતવ્યો અને વધુ મદદ માટે
 {{canonicalurl:{{MediaWiki:Helppage}}}}',
 'created' => 'બનાવ્યું',
 'changed' => 'બદલ્યું',
index ff13816..4faed8b 100644 (file)
@@ -376,7 +376,7 @@ $messages = array(
 'tog-showtoolbar' => 'הצגת סרגל העריכה',
 'tog-editondblclick' => 'עריכת דפים בלחיצה כפולה',
 'tog-editsection' => 'עריכת פסקאות באמצעות קישורי [עריכה]',
-'tog-editsectiononrightclick' => 'ער×\99×\9bת ×¤×¡×§×\90×\95ת ×¢×\9c ×\99×\93×\99 לחיצה ימנית על כותרות הפסקאות',
+'tog-editsectiononrightclick' => 'ער×\99×\9bת ×¤×¡×§×\90×\95ת ×\91×\90×\9eצע×\95ת לחיצה ימנית על כותרות הפסקאות',
 'tog-showtoc' => 'הצגת תוכן עניינים (עבור דפים עם יותר מ־3 כותרות)',
 'tog-rememberpassword' => 'שמירת הכניסה שלי בדפדפן זה ({{PLURAL:$1|ליום אחד|ליומיים|ל־$1 ימים}} לכל היותר)',
 'tog-watchcreations' => 'מעקב אחרי דפים שיצרתי וקבצים שהעליתי',
@@ -914,7 +914,7 @@ $2',
 אנא המתינו $1 לפני שתנסו שוב.',
 'login-abort-generic' => 'הכניסה לחשבון לא הצליחה - היא הופסקה',
 'loginlanguagelabel' => 'שפה: $1',
-'suspicious-userlogout' => '×\91קשת×\9b×\9d ×\9cצ×\90ת ×\9e×\94×\97ש×\91×\95×\9f × ×\93×\97ת×\94 ×\9b×\99×\95×\95×\9f ×©× ×¨×\90×\94 ×©×\94×\99×\90 × ×©×\9c×\97×\94 ×¢×\9c ידי דפדפן שבור או שרת פרוקסי עם זיכרון מטמון.',
+'suspicious-userlogout' => '×\91קשת×\9a ×\9cצ×\90ת ×\9e×\94×\97ש×\91×\95×\9f × ×\93×\97ת×\94 ×\9b×\99×\95×\95×\9f ×©× ×¨×\90×\94 ×©×\94×\99×\90 × ×©×\9c×\97×\94 ×¢×\9cÖ¾ידי דפדפן שבור או שרת פרוקסי עם זיכרון מטמון.',
 'createacct-another-realname-tip' => 'השם האמיתי הוא אופציונאלי.
 אם תבחרו לספקו, הוא ישמש לייחוס עבודת המשתמש אליו.',
 
@@ -935,13 +935,13 @@ $2',
 'resetpass_submit' => 'הגדרת הסיסמה וכניסה לחשבון',
 'changepassword-success' => 'סיסמתכם שונתה בהצלחה!',
 'resetpass_forbidden' => 'לא ניתן לשנות סיסמאות.',
-'resetpass-no-info' => '×¢×\9c×\99×\9b×\9d להיכנס לחשבון כדי לגשת לדף זה באופן ישיר.',
+'resetpass-no-info' => '×\99ש להיכנס לחשבון כדי לגשת לדף זה באופן ישיר.',
 'resetpass-submit-loggedin' => 'שינוי סיסמה',
 'resetpass-submit-cancel' => 'ביטול',
 'resetpass-wrong-oldpass' => 'הסיסמה הזמנית או הנוכחית אינה תקינה.
-ייתכן שכבר שיניתם את סיסמתכם או שכבר ביקשתם סיסמה זמנית חדשה.',
+ייתכן שכבר שינית את סיסמתך או שכבר ביקשת סיסמה זמנית חדשה.',
 'resetpass-temp-password' => 'סיסמה זמנית:',
-'resetpass-abort-generic' => 'שינוי הסיסמה בוטל על ידי הרחבה.',
+'resetpass-abort-generic' => 'שינוי הסיסמה בוטל על־ידי הרחבה.',
 
 # Special:PasswordReset
 'passwordreset' => 'איפוס סיסמה',
@@ -1056,7 +1056,7 @@ $2
 אינכם יכולים להשתמש בתכונת "שליחת דואר אלקטרוני למשתמש זה" אם לא ציינתם כתובת דוא"ל תקפה ב[[Special:Preferences|העדפות המשתמש שלכם]] או אם נחסמתם משליחת דוא"ל.
 כתובת ה־IP שלכם היא $3, ומספר החסימה שלכם הוא #$5.
 אנא ציינו את כל הפרטים הללו בכל פנייה למפעילי המערכת.',
-'autoblockedtext' => 'כתובת ה־IP שלכם נחסמה באופן אוטומטי כיוון שמשתמש אחר, שנחסם על ידי $1, עשה בה שימוש.
+'autoblockedtext' => 'כתובת ה־IP שלכם נחסמה באופן אוטומטי כיוון שמשתמש אחר, שנחסם על־ידי $1, עשה בה שימוש.
 הסיבה שניתנה לחסימה היא:
 
 :\'\'\'$2\'\'\'
@@ -1065,8 +1065,10 @@ $2
 * פקיעת החסימה: $6
 * החסימה שבוצעה: $7
 
-באפשרותכם ליצור קשר עם $1 או עם כל אחד מ[[{{MediaWiki:Grouppage-sysop}}|מפעילי המערכת]] האחרים כדי לדון על החסימה.
-אינכם יכולים להשתמש בתכונת "שליחת דואר אלקטרוני למשתמש זה" אם לא ציינתם כתובת דוא"ל תקפה ב[[Special:Preferences|העדפות המשתמש שלכם]] או אם נחסמתם משליחת דוא"ל.
+באפשרותכם ליצור קשר עם $1 או עם כל אחד מ[[{{MediaWiki:Grouppage-sysop}}|מפעילי המערכת]] האחרים כדי לדון בחסימה.
+
+באפשרותכם להשתמש בתכונת "{{int:emailuser}}", אלא אם לא ציינתם כתובת דוא"ל תקפה ב[[Special:Preferences|העדפות המשתמש שלכם]] או אם נחסמתם משליחת דוא"ל.
+
 כתובת ה־IP שלכם היא $3, ומספר החסימה שלכם הוא #$5.
 אנא ציינו את כל הפרטים הללו בכל פנייה למפעילי המערכת.',
 'blockednoreason' => 'לא ניתנה סיבה',
@@ -1161,10 +1163,10 @@ $2
 'copyrightwarning2' => "'''שימו לב:''' תורמים אחרים עשויים לערוך או אף להסיר את תרומתכם ל{{grammar:תחילית|{{SITENAME}}}}. אם אינכם רוצים שעבודתכם תהיה זמינה לעריכה על־ידי אחרים, אל תפרסמו אותה פה. כמו־כן, אתם מבטיחים לנו כי כתבתם את הטקסט הזה בעצמכם, או העתקתם אותו ממקור שאינו מוגן בזכויות יוצרים (ראו $1 לפרטים נוספים). '''אל תעשו שימוש בחומר המוגן בזכויות יוצרים ללא רשות!'''",
 'longpageerror' => "'''שגיאה: אורך הטקסט ששלחתם הוא {{PLURAL:$1|קילובייט אחד|$1 קילובייטים}}, והוא ארוך יותר מהאורך המרבי של {{PLURAL:$2|קילובייט אחד|$2 קילובייטים}}.'''
 לא ניתן לשמור אותו.",
-'readonlywarning' => "'''×\90×\96×\94ר×\94: ×\91ס×\99ס ×\94נת×\95× ×\99×\9d × × ×¢×\9c ×\9cצ×\95ר×\9a ×ª×\97×\96×\95ק×\94. ×\91×\96×\9e×\9f ×\96×\94 ×\90×\99 ×\90פשר לשמור את הטקסט הערוך.'''
\91×\90פשר×\95ת×\9b×\9d ×\9c×\94עת×\99ק ×\95×\9c×\94×\93×\91×\99ק ×\90ת ×\94×\98קס×\98 ×\9cת×\95×\9a ×§×\95×\91×¥ ×\98קס×\98 ×\95×\9cש×\9e×\95ר ×\90×\95ת×\95 ×¢×\93 ×©×ª×\99×\92×\9eר ×\94× ×¢×\99×\9c×\94.
+'readonlywarning' => "'''×\90×\96×\94ר×\94: ×\91ס×\99ס ×\94נת×\95× ×\99×\9d × × ×¢×\9c ×\9cצ×\95ר×\9a ×ª×\97×\96×\95ק×\94. ×\91×\96×\9e×\9f ×\96×\94 ×\9c×\90 × ×\99ת×\9f לשמור את הטקסט הערוך.'''
\91×\90פשר×\95ת×\9a ×\9c×\94עת×\99ק ×\95×\9c×\94×\93×\91×\99ק ×\90ת ×\94×\98קס×\98 ×\9cת×\95×\9a ×§×\95×\91×¥ ×\98קס×\98 ×\95×\9cש×\9e×\95ר ×\90×\95ת×\95 ×\9c×\9e×\90×\95×\97ר ×\99×\95תר.
 
\9e× ×\94ל המערכת שנעל את בסיס הנתונים סיפק את ההסבר הבא: $1",
\9eפע×\99ל המערכת שנעל את בסיס הנתונים סיפק את ההסבר הבא: $1",
 'protectedpagewarning' => "'''אזהרה: דף זה מוגן כך שרק מפעילי מערכת יכולים לערוך אותו.'''
 פעולת היומן האחרונה מוצגת להלן:",
 'semiprotectedpagewarning' => "'''הערה:''' דף זה מוגן כך שרק משתמשים רשומים יכולים לערוך אותו.
@@ -1185,8 +1187,8 @@ $2
 'sectioneditnotsupported-title' => 'עריכת פסקאות אינה נתמכת',
 'sectioneditnotsupported-text' => 'עריכת פסקאות אינה נתמכת בדף זה.',
 'permissionserrors' => 'שגיאת הרשאה',
-'permissionserrorstext' => '×\90×\99× ×\9b×\9d ×\9e×\95רש×\99×\9d לבצע פעולה זו, {{PLURAL:$1|מהסיבה הבאה|מהסיבות הבאות}}:',
-'permissionserrorstext-withaction' => '×\90×\99× ×\9b×\9d ×\9e×\95רש×\99×\9d $2, {{PLURAL:$1|×\9e×\94ס×\99×\91×\94 ×\94×\91×\90×\94\9e×\94סיבות הבאות}}:',
+'permissionserrorstext' => '×\90×\99× ×\9a ×\9e×\95רש×\94 לבצע פעולה זו, {{PLURAL:$1|מהסיבה הבאה|מהסיבות הבאות}}:',
+'permissionserrorstext-withaction' => '×\90×\99× ×\9a ×\9e×\95רש×\94 $2, ×\9e×\94{{PLURAL:$1|ס×\99×\91×\94 ×\94×\91×\90×\94|סיבות הבאות}}:',
 'recreate-moveddeleted-warn' => "'''אזהרה: הנכם יוצרים דף חדש שנמחק בעבר.'''
 
 כדאי לשקול אם יהיה זה נכון להמשיך לערוך את הדף.
@@ -1250,6 +1252,9 @@ $2
 'cantcreateaccount-text' => 'אפשרות יצירת החשבונות מכתובת ה־IP הזו (\'\'\'$1\'\'\') נחסמה על־ידי [[User:$3|$3]].
 
 הסיבה שניתנה על־ידי $3 היא "$2".',
+'cantcreateaccount-range-text' => "אפשרות יצירת החשבונות מכתובות IP בתוך הטווח '''\$1''', כולל כתובת ה־IP שלך ('''\$4'''), נחסמה על־ידי [[User:\$3|\$3]].
+
+הסיבה שניתנה על־ידי \$3 היא \"\$2\".",
 
 # History pages
 'viewpagelogs' => 'הצגת יומנים עבור דף זה',
@@ -1317,11 +1322,11 @@ $2
 'rev-showdeleted' => 'הצגה',
 'revisiondelete' => 'מחיקה ושחזור של גרסאות',
 'revdelete-nooldid-title' => 'גרסת מטרה בלתי תקינה',
-'revdelete-nooldid-text' => 'הגרסה או הגרסאות עליהן תבוצע פעולה זו אינן תקינות. ייתכן שלא ציינתם אותן, ייתכן שהגרסה אינה קיימת, וייתכן שאתם מנסים להסתיר את הגרסה הנוכחית.',
-'revdelete-no-file' => 'הקובץ שציינתם אינו קיים.',
+'revdelete-nooldid-text' => 'הגרסה או הגרסאות עליהן תבוצע פעולה זו אינן תקינות. ייתכן שלא ציינת אותן, ייתכן שהגרסה אינה קיימת, וייתכן שהנך מנסה להסתיר את הגרסה הנוכחית.',
+'revdelete-no-file' => 'הקובץ שציינת אינו קיים.',
 'revdelete-show-file-confirm' => 'האם אתם בטוחים שברצונכם לצפות בגרסה המחוקה של הקובץ "<nowiki>$1</nowiki>" מתאריך $3, $2?',
 'revdelete-show-file-submit' => 'כן',
-'revdelete-selected' => "'''{{PLURAL:$2|הגרסה שנבחרה|הגרסאות שנבחרו}} של הדף [[:$1]]:'''",
+'revdelete-selected' => "'''ה{{PLURAL:$2|גרסה שנבחרה|גרסאות שנבחרו}} מתוך הדף [[:$1]]:'''",
 'logdelete-selected' => "'''{{PLURAL:$1|פעולת היומנים שנבחרה|פעולות היומנים שנבחרו}}:'''",
 'revdelete-text' => "'''גרסאות ופעולות יומנים שנמחקו עדיין תופענה בהיסטוריית הדף ובדפי היומנים, אך חלקים מהתוכן שלהן לא יהיה זמין לציבור.'''
 מפעילי מערכת אחרים באתר עדיין יוכלו לגשת לתוכן הנסתר ויוכלו לשחזר אותו שוב דרך הממשק הזה, אלא אם כן תוגדרנה הגבלות נוספות.",
@@ -1356,14 +1361,14 @@ $1",
 'revdelete-hide-current' => 'שגיאה בהסתרת הפריט מתאריך $2, $1: זו הגרסה הנוכחית.
 לא ניתן להסתיר אותה.',
 'revdelete-show-no-access' => 'שגיאה בהצגת הפריט מתאריך $2, $1: פריט זה סומן כ"מוגבל".
\90×\99×\9f ×\9c×\9b×\9d גישה אליו.',
\90×\99×\9f ×\9c×\9a גישה אליו.',
 'revdelete-modify-no-access' => 'שגיאה בשינוי הפריט מתאריך $2, $1: פריט זה סומן כ"מוגבל".
 אין לכם גישה אליו.',
 'revdelete-modify-missing' => 'שגיאה בשינוי פריט מספר $1: הוא אינו נמצא בבסיס הנתונים!',
 'revdelete-no-change' => "'''אזהרה:''' לפריט מתאריך $2, $1 כבר יש את הגדרות ההצגה הנדרשות.",
-'revdelete-concurrent-change' => 'שגיאה בשינוי הפריט מתאריך $2, $1: נראה שמצבו שונה על ידי מישהו אחר בזמן שאתם ניסיתם לשנות אותו.
+'revdelete-concurrent-change' => 'שגיאה בשינוי הפריט מתאריך $2, $1: נראה שמצבו שונה על־ידי מישהו אחר בזמן שאתם ניסיתם לשנות אותו.
 אנא בדקו ביומנים.',
-'revdelete-only-restricted' => 'ש×\92×\99×\90×\94 ×\91×\94סתרת ×\94פר×\99×\98 ×\9eת×\90ר×\99×\9a $2, $1: ×\90×\99×\9f ×\91×\90פשר×\95ת×\9b×\9d ×\9c×\94סת×\99ר ×¤×¨×\98×\99×\9d ×\9eצפ×\99×\99ת ×\9eפע×\99×\9c×\99 ×\9eער×\9bת בלי לבחור גם באחת מאפשרויות ההסתרה האחרות.',
+'revdelete-only-restricted' => 'ש×\92×\99×\90×\94 ×\91×\94סתרת ×\94פר×\99×\98 ×\9eת×\90ר×\99×\9a $2, $1: ×\90×\99×\9f ×\91×\90פשר×\95ת×\9a ×\9c×\94סת×\99ר ×¤×¨×\99×\98×\99×\9d ×\9e×\9eפע×\99×\9c×\99 ×\94×\9eער×\9bת ×\9eבלי לבחור גם באחת מאפשרויות ההסתרה האחרות.',
 'revdelete-reason-dropdown' => '* סיבות מחיקה נפוצות
 ** הפרת זכויות יוצרים
 ** תקציר עריכה או מידע אישי לא הולמים
@@ -1470,7 +1475,7 @@ $1",
 'showingresultsheader' => "{{PLURAL:$5|תוצאה '''$1''' מתוך '''$3'''|תוצאות '''$1 - $2''' מתוך '''$3'''}} עבור '''$4'''",
 'search-nonefound' => 'לא נמצאו תוצאות המתאימות לחיפוש.',
 'powersearch-legend' => 'חיפוש מתקדם',
-'powersearch-ns' => 'חיפוש על פי מרחבי שם:',
+'powersearch-ns' => 'חיפוש על־פי מרחבי שם:',
 'powersearch-redir' => 'הצגת דפי הפניה',
 'powersearch-togglelabel' => 'בחירה:',
 'powersearch-toggleall' => 'הכול',
@@ -1499,7 +1504,7 @@ $1",
 'prefs-watchlist-days' => 'מספר הימים המרבי שיוצגו ברשימת המעקב:',
 'prefs-watchlist-days-max' => 'לכל היותר {{PLURAL:$1|יום אחד|יומיים|$1 ימים}}',
 'prefs-watchlist-edits' => 'מספר העריכות המרבי שיוצגו ברשימת המעקב המורחבת:',
-'prefs-watchlist-edits-max' => '×\9c×\9b×\9c ×\94×\99×\95תר 1000',
+'prefs-watchlist-edits-max' => '×\9eספר ×\9e×\99ר×\91×\99: 1000',
 'prefs-watchlist-token' => 'אסימון לרשימת המעקב:',
 'prefs-misc' => 'שונות',
 'prefs-resetpass' => 'שינוי סיסמה',
@@ -1519,15 +1524,15 @@ $1",
 'recentchangesdays' => 'מספר הימים שיוצגו בדף השינויים האחרונים:',
 'recentchangesdays-max' => 'לכל היותר {{PLURAL:$1|יום אחד|יומיים|$1 ימים}}',
 'recentchangescount' => 'מספר העריכות שיוצגו כברירת מחדל:',
-'prefs-help-recentchangescount' => '×\9b×\95×\9c×\9c ×©×\99× ×\95×\99×\99×\9d ×\90×\97ר×\95× ×\99×\9d, ×\94×\99ס×\98×\95ר×\99×\99ת ×\94×\93×£ ויומנים.',
+'prefs-help-recentchangescount' => '×\9b×\95×\9c×\9c ×\93×£ ×\94ש×\99× ×\95×\99×\99×\9d ×\94×\90×\97ר×\95× ×\99×\9d, ×\93פ×\99 ×\94×\99ס×\98×\95ר×\99×\99ת ×\92רס×\90×\95ת ויומנים.',
 'prefs-help-watchlist-token2' => 'זהו המפתח הסודי של ההזנה של רשימת המעקב שלך.
 כל מי שיודע אותו יוכל לקרוא את רשימת המעקב שלך, לכן אין לשתף אותו.
 [[Special:ResetTokens|אם יש בכך צורך, אפשר לאפס אותו כאן]].',
-'savedprefs' => '×\94×¢×\93פ×\95ת×\99ך נשמרו.',
+'savedprefs' => '×\94×\94×¢×\93פ×\95ת ×©×\9cך נשמרו.',
 'timezonelegend' => 'אזור זמן:',
 'localtime' => 'זמן מקומי:',
 'timezoneuseserverdefault' => 'ברירת המחדל של האתר ($1)',
-'timezoneuseoffset' => '×\90×\97ר (× ×\90 ×¦×\99×\99× ×\95 את ההפרש)',
+'timezoneuseoffset' => '×\90×\97ר (×\99ש ×\9cצ×\99×\99×\9f את ההפרש)',
 'servertime' => 'השעה הנוכחית בשרת:',
 'guesstimezone' => 'קבלה מהדפדפן',
 'timezoneregion-africa' => 'אפריקה',
@@ -1549,7 +1554,7 @@ $1",
 'prefs-custom-css' => 'קובץ CSS מותאם אישית',
 'prefs-custom-js' => 'קובץ JavaScript מותאם אישית',
 'prefs-common-css-js' => 'קובצי CSS/JavaScript משותפים לכל העיצובים:',
-'prefs-reset-intro' => '×\91×\90פשר×\95ת×\9b×\9d ×\9c×\94שת×\9eש ×\91×\93×£ ×\96×\94 ×\9b×\93×\99 ×\9c×\94×\97×\96×\99ר ×\90ת ×\94×\94×¢×\93פ×\95ת ×©×\9c×\9b×\9d להגדרות ברירת המחדל של האתר.
+'prefs-reset-intro' => '×\91×\90פשר×\95ת×\9a ×\9c×\94שת×\9eש ×\91×\93×£ ×\96×\94 ×\9b×\93×\99 ×\9c×\94×\97×\96×\99ר ×\90ת ×\94×\94×¢×\93פ×\95ת ×©×\9c×\9a להגדרות ברירת המחדל של האתר.
 לא ניתן לבטל פעולה זו.',
 'prefs-emailconfirm-label' => 'אימות כתובת דוא"ל:',
 'youremail' => 'דואר אלקטרוני:',
@@ -1562,7 +1567,7 @@ $1",
 'yourvariant' => 'סוג הכתב בשפת התוכן:',
 'prefs-help-variant' => 'סוג הכתב המועדף להצגת דפי התוכן באתר ויקי זה.',
 'yournick' => 'חתימה:',
-'prefs-help-signature' => '×¢×\9c ×\94×\95×\93×¢×\95ת ×\91×\93פ×\99 ×©×\99×\97×\94 ×\99ש ×\9c×\97ת×\95×\9d ×\91×\90×\9eצע×\95ת ×\94×\98קס×\98 "<nowiki>~~~~</nowiki>", ×©×\99×\95×\9eר ×\9c×\97ת×\99×\9e×\94 ×©×\9c×\9b×\9d ואחריה תאריך ושעה.',
+'prefs-help-signature' => '×¢×\9c ×\94×\95×\93×¢×\95ת ×\91×\93פ×\99 ×©×\99×\97×\94 ×\99ש ×\9c×\97ת×\95×\9d ×\91×\90×\9eצע×\95ת ×\94×\98קס×\98 "<nowiki>~~~~</nowiki>", ×©×\99×\95×\9eר ×\9c×\97ת×\99×\9e×\94 ×©×\9c×\9a ואחריה תאריך ושעה.',
 'badsig' => 'חתימה מסוגננת שגויה.
 אנא בדקו את תגיות ה־HTML.',
 'badsiglength' => 'חתימתכם ארוכה מדי.
@@ -1578,8 +1583,8 @@ $1",
 'prefs-help-realname' => 'השם האמיתי הוא אופציונאלי.
 אם תבחרו לספקו, הוא ישמש לייחוס עבודתכם אליכם.',
 'prefs-help-email' => 'כתובת דואר אלקטרוני היא אופציונאלית, אך היא דרושה לאיפוס הסיסמה במקרה שתשכחו את הסיסמה.',
-'prefs-help-email-others' => '×\91×\90פשר×\95ת×\9b×\9d ×\92×\9d ×\9c×\91×\97×\95ר ×\9c×\90פשר ×\9c×\90×\97ר×\99×\9d ×\9c×\99צ×\95ר ×\90ת×\9b×\9d ×§×©×¨ ×\91×\90×\9eצע×\95ת ×\93×\95×\90\9c ×\93ר×\9a ×§×\99ש×\95ר ×\91×\93×£ ×\94×\9eשת×\9eש ×\90×\95 ×\91×\93×£ ×\94ש×\99×\97×\94 ×©×\9c×\9b×\9d.
\9bת×\95×\91ת ×\94×\93×\95×\90\9c ×©×\9c×\9b×\9d ×\9c×\90 ×ª×\99×\97שף ×\9bש×\9eשת×\9eש×\99×\9d ×\90×\97ר×\99×\9d ×\99×\99צר×\95 ×§×©×¨ ×\90×\99ת×\9b×\9d.',
+'prefs-help-email-others' => '×\91×\90פשר×\95ת×\9a ×\92×\9d ×\9c×\91×\97×\95ר ×\9c×\90פשר ×\9c×\90×\97ר×\99×\9d ×\9c×\99צ×\95ר ×\90×\99ת×\9a ×§×©×¨ ×\91×\90×\9eצע×\95ת ×\93×\95×\90\9c ×\93ר×\9a ×§×\99ש×\95ר ×\91×\93×£ ×\94×\9eשת×\9eש ×\90×\95 ×\91×\93×£ ×\94ש×\99×\97×\94 ×©×\9c×\9a.
\9bת×\95×\91ת ×\94×\93×\95×\90\9c ×©×\9c×\9a ×\9c×\90 ×ª×\99×\97שף ×\9bש×\9eשת×\9eש×\99×\9d ×\90×\97ר×\99×\9d ×\99×\99צר×\95 ×§×©×¨ ×\90×\99ת×\9a.',
 'prefs-help-email-required' => 'כתובת דואר אלקטרוני נדרשת לכתיבה באתר.',
 'prefs-info' => 'מידע בסיסי',
 'prefs-i18n' => 'בינאום',
@@ -1667,13 +1672,13 @@ $1",
 'right-suppressredirect' => 'הימנעות מיצירת הפניות מדפי המקור בעת העברת דפים',
 'right-upload' => 'העלאת קבצים',
 'right-reupload' => 'דריסת קבצים קיימים',
-'right-reupload-own' => 'דריסת קבצים קיימים שהועלו על ידי אותו המשתמש',
+'right-reupload-own' => 'דריסת קבצים קיימים שהועלו על־ידי אותו המשתמש',
 'right-reupload-shared' => 'דריסה מקומית של קבצים מאתר קובצי המדיה המשותף',
 'right-upload_by_url' => 'העלאת קובץ מכתובת אינטרנט',
-'right-purge' => 'רענ×\95×\9f ×\96×\99×\9bר×\95×\9f ×\94×\9e×\98×\9e×\95×\9f ×©×\9c ×\94×\90תר ×\9c×\93×£ ×\9eס×\95×\99×\9d ×\9c×\9c×\90 דף אישור',
+'right-purge' => 'רענ×\95×\9f ×\96×\99×\9bר×\95×\9f ×\94×\9e×\98×\9e×\95×\9f ×©×\9c ×\94×\90תר ×\9c×\9c×\90 ×\9e×¢×\91ר ×\9cדף אישור',
 'right-autoconfirmed' => 'עקיפת הגבלת קצב העריכות המבוססת על כתובת IP',
 'right-bot' => 'טיפול בעריכות כאוטומטיות',
-'right-nominornewtalk' => '×\91×\99×\98×\95×\9c ×\94×\95×\93עת ×\94×\94×\95×\93×¢×\95ת ×\94×\97×\93ש×\95ת ×\91עת ×¢×¨×\99×\9b×\94 ×\9eשנ×\99ת ×\91×\93פ×\99 ×©×\99×\97×\94',
+'right-nominornewtalk' => '×\91×\99×\98×\95×\9c ×©×\9c×\99×\97ת ×\94תר×\90×\94 ×¢×\9c ×\94×\95×\93×¢×\94 ×\97×\93ש×\94 ×\9c×\9eשת×\9eש ×\91עת ×¢×¨×\99×\9b×\94 ×\9eשנ×\99ת ×\91×\93×£ ×©×\99×\97ת×\95',
 'right-apihighlimits' => 'שימוש ב־API עם פחות הגבלות',
 'right-writeapi' => 'שימוש ב־API לשינוי דפים',
 'right-delete' => 'מחיקת דפים',
@@ -1691,21 +1696,21 @@ $1",
 'right-hideuser' => 'חסימת שם משתמש תוך הסתרתו מהציבור',
 'right-ipblock-exempt' => 'עקיפת חסימות של כתובת IP, חסימות אוטומטיות וחסימות טווח',
 'right-proxyunbannable' => 'עקיפת חסימות אוטומטיות של שרתי פרוקסי',
-'right-unblockself' => 'ש×\97ר×\95ר ×\97ס×\99×\9e×\94 ×©×\9c ×¢×¦×\9e×\9a',
+'right-unblockself' => 'ש×\97ר×\95ר ×\97ס×\99×\9e×\94 ×©×\9c ×\94×\9eשת×\9eש ×¢×¦×\9e×\95',
 'right-protect' => 'שינוי רמות הגנה ועריכת דפים המוגנים בהגנה מדורגת',
-'right-editprotected' => 'ער×\99×\9bת ×\93פ×\99×\9d ×©מוגנים ברמת "{{int:protect-level-sysop}}"',
-'right-editsemiprotected' => 'ער×\99×\9bת ×\93פ×\99×\9d ×©מוגנים ברמת "{{int:protect-level-autoconfirmed}}"',
+'right-editprotected' => 'ער×\99×\9bת ×\93פ×\99×\9d ×\94מוגנים ברמת "{{int:protect-level-sysop}}"',
+'right-editsemiprotected' => 'ער×\99×\9bת ×\93פ×\99×\9d ×\94מוגנים ברמת "{{int:protect-level-autoconfirmed}}"',
 'right-editinterface' => 'עריכת ממשק המשתמש',
 'right-editusercssjs' => 'עריכת דפי CSS ו־JavaScript של משתמשים אחרים',
-'right-editusercss' => 'ער×\99×\9bת ×\93פ×\99 CSS של משתמשים אחרים',
-'right-edituserjs' => 'ער×\99×\9bת ×\93פי JavaScript של משתמשים אחרים',
-'right-editmyusercss' => 'ער×\99×\9bת ×\93פ×\99 CSS ×©×\9c ×¢×¦×\9e×\9a',
-'right-editmyuserjs' => 'ער×\99×\9bת ×\93פ×\99 JavaScript ×©×\9c ×¢×¦×\9e×\9a',
-'right-viewmywatchlist' => 'צפ×\99×\99×\94 ×\91רש×\99×\9eת ×\94×\9eעק×\91 ×©×\9c ×¢×¦×\9e×\9a',
-'right-editmywatchlist' => 'ער×\99×\9bת ×¨×©×\99×\9eת ×\94×\9eעק×\91 ×©×\9c ×¢×¦×\9e×\9a. ×\99צ×\95×\99×\9f ×©מספר פעולות עדיין יוסיפו דפים גם ללא הרשאה זו.',
-'right-viewmyprivateinfo' => 'צפ×\99×\99×\94 ×\91×\9e×\99×\93×¢ ×\94פר×\98×\99 ×©×\9c ×¢×¦×\9e×\9a (×\9b×\92×\95×\9f: כתובת דוא"ל, שם אמיתי)',
-'right-editmyprivateinfo' => 'ער×\99×\9bת ×\94×\9e×\99×\93×¢ ×\94פר×\98×\99 ×©×\9c ×¢×¦×\9e×\9a (×\9b×\92×\95×\9f: כתובת דוא"ל, שם אמיתי)',
-'right-editmyoptions' => 'ער×\99×\9bת ×\94×\94×¢×\93פ×\95ת ×©×\9c ×¢×¦×\9e×\9a',
+'right-editusercss' => 'ער×\99×\9bת ×\92×\99×\9c×\99×\95× ×\95ת CSS של משתמשים אחרים',
+'right-edituserjs' => 'ער×\99×\9bת ×§×\91צי JavaScript של משתמשים אחרים',
+'right-editmyusercss' => 'ער×\99×\9bת ×\92×\99×\9c×\99×\95× ×\95ת CSS ×©×\9c ×\94×\9eשת×\9eש ×¢×¦×\9e×\95',
+'right-editmyuserjs' => 'ער×\99×\9bת ×§×\91צ×\99 JavaScript ×©×\9c ×\94×\9eשת×\9eש ×¢×¦×\9e×\95',
+'right-viewmywatchlist' => 'צפ×\99×\99×\94 ×\91רש×\99×\9eת ×\94×\9eעק×\91 ×©×\9c ×\94×\9eשת×\9eש ×¢×¦×\9e×\95',
+'right-editmywatchlist' => 'ער×\99×\9bת ×¨×©×\99×\9eת ×\94×\9eעק×\91 ×©×\9c ×\94×\9eשת×\9eש ×¢×¦×\9e×\95מספר פעולות עדיין יוסיפו דפים גם ללא הרשאה זו.',
+'right-viewmyprivateinfo' => 'צפ×\99×\99×\94 ×\91×\9e×\99×\93×¢ ×\94פר×\98×\99 ×©×\9c ×\94×\9eשת×\9eש ×¢×¦×\9e×\95 (×\9b×\92×\95×\9f כתובת דוא"ל, שם אמיתי)',
+'right-editmyprivateinfo' => 'ער×\99×\9bת ×\94×\9e×\99×\93×¢ ×\94פר×\98×\99 ×©×\9c ×\94×\9eשת×\9eש ×¢×¦×\9e×\95 (×\9b×\92×\95×\9f כתובת דוא"ל, שם אמיתי)',
+'right-editmyoptions' => 'ער×\99×\9bת ×\94×\94×¢×\93פ×\95ת ×©×\9c ×\94×\9eשת×\9eש ×¢×¦×\9e×\95',
 'right-rollback' => 'שחזור מהיר של עריכות המשתמש האחרון שערך דף מסוים',
 'right-markbotedits' => 'סימון עריכות משוחזרות כעריכות של בוט',
 'right-noratelimit' => 'עקיפת הגבלת קצב העריכות',
@@ -1713,9 +1718,9 @@ $1",
 'right-importupload' => 'ייבוא דפים באמצעות העלאת קובץ',
 'right-patrol' => 'סימון עריכות של אחרים כבדוקות',
 'right-autopatrol' => 'סימון אוטומטי של עריכות של המשתמש כבדוקות',
-'right-patrolmarks' => 'צפ×\99×\99×\94 ×\91ס×\99×\9e×\95× ×\99 ×¢×¨×\99×\9b×\95ת ×\91×\93×\95ק×\95ת ×\91שינויים האחרונים',
+'right-patrolmarks' => '×\94×\91×\97× ×\94 ×\91×\99×\9f ×¢×¨×\99×\9b×\95ת ×©× ×\91×\93ק×\95 ×\9cער×\99×\9b×\95ת ×©×\98ר×\9d × ×\91×\93ק×\95 ×\91×\93×£ ×\94שינויים האחרונים',
 'right-unwatchedpages' => 'הצגת רשימה של דפים שאינם במעקב',
-'right-mergehistory' => 'מיזוג היסטוריות של דפים',
+'right-mergehistory' => '×\9e×\99×\96×\95×\92 ×\94×\99ס×\98×\95ר×\99×\99ת ×\92רס×\90×\95ת ×©×\9c ×\93פ×\99×\9d',
 'right-userrights' => 'עריכת כל הרשאות המשתמש',
 'right-userrights-interwiki' => 'עריכת הרשאות המשתמש של משתמשים באתרי ויקי אחרים',
 'right-siteadmin' => 'נעילה וביטול נעילה של בסיס הנתונים',
@@ -1783,9 +1788,10 @@ $1",
 'recentchanges-feed-description' => 'ניתן לעקוב אחרי השינויים האחרונים באתר בדף זה.',
 'recentchanges-label-newpage' => 'בעריכה זו נוצר דף חדש',
 'recentchanges-label-minor' => 'זוהי עריכה משנית',
-'recentchanges-label-bot' => 'עריכה זו בוצעה על ידי בוט',
+'recentchanges-label-bot' => 'עריכה זו בוצעה על־ידי בוט',
 'recentchanges-label-unpatrolled' => 'עריכה זו טרם נבדקה',
 'recentchanges-label-plusminus' => 'מספר הבתים שבו השתנה גודל הדף',
+'recentchanges-legend-heading' => "'''מקרא:'''",
 'recentchanges-legend-newpage' => '(ראו גם [[Special:NewPages|רשימת דפים חדשים]])',
 'recentchanges-legend-plusminus' => "(''±123'')",
 'rcnotefrom' => 'להלן <b>$1</b> השינויים האחרונים שבוצעו החל מתאריך <b>$2</b>:',
@@ -2294,6 +2300,7 @@ $1',
 'protectedpages' => 'דפים מוגנים',
 'protectedpages-indef' => 'הגנות לזמן בלתי מוגבל בלבד',
 'protectedpages-cascade' => 'הגנות מדורגות בלבד',
+'protectedpages-noredirect' => 'הסתרת הפניות',
 'protectedpagesempty' => 'אין כרגע דפים מוגנים עם הפרמטרים הללו.',
 'protectedtitles' => 'כותרות מוגנות',
 'protectedtitlesempty' => 'אין כרגע כותרות מוגנות עם הפרמטרים האלה.',
@@ -2329,7 +2336,7 @@ $1',
 'booksources-invalid-isbn' => 'המסת"ב שניתן כנראה אינו תקין; אנא בדקו אם ביצעתם טעויות בהעתקה מהמידע המקורי.',
 
 # Special:Log
-'specialloguserlabel' => 'בוצעו על ידי המשתמש:',
+'specialloguserlabel' => 'בוצעו על־ידי המשתמש:',
 'speciallogtitlelabel' => 'יעד (כותרת או משתמש):',
 'log' => 'יומנים',
 'all-logs-page' => 'כל היומנים הציבוריים',
@@ -2349,7 +2356,7 @@ $1',
 'allarticles' => 'כל הדפים',
 'allinnamespace' => 'כל הדפים (מרחב שם $1)',
 'allpagessubmit' => 'הצגה',
-'allpagesprefix' => 'הדפים ששמם מתחיל ב:',
+'allpagesprefix' => 'הדפים ששמם מתחיל ב:',
 'allpagesbadtitle' => 'כותרת הדף שניתנה הייתה בלתי־תקינה או שהייתה בה קידומת של קישור לשפה אחרת או לוויקי אחר.
 ייתכן שהיא מכילה תו אחד או יותר האסורים לשימוש בכותרות.',
 'allpages-bad-ns' => 'אין מרחב שם בשם "$1".',
@@ -2570,6 +2577,7 @@ $UNWATCHURL
 'delete-edit-reasonlist' => 'עריכת סיבות המחיקה',
 'delete-toobig' => 'דף זה כולל מעל {{PLURAL:$1|גרסה אחת|$1 גרסאות}} בהיסטוריית העריכות שלו. מחיקת דפים כאלה הוגבלה כדי למנוע פגיעה בביצועי האתר.',
 'delete-warning-toobig' => 'דף זה כולל מעל {{PLURAL:$1|גרסה אחת|$1 גרסאות}} בהיסטוריית העריכות שלו. מחיקה שלו עלולה להפריע לפעולות בבסיס הנתונים; אנא שקלו שנית את המחיקה.',
+'deleting-backlinks-warning' => "'''אזהרה:''' דפים אחרים מקשרים לדף שאתם עומדים למחוק.",
 
 # Rollback
 'rollback' => 'שחזור עריכות',
@@ -2618,9 +2626,9 @@ $UNWATCHURL
 'protect-text' => "בדף זה אפשר לראות ולשנות את רמת ההגנה של הדף '''$1'''.",
 'protect-locked-blocked' => "אינכם יכולים לשנות את רמת ההגנה של הדף בעודכם חסומים.
 להלן ההגדרות הנוכחיות עבור הדף '''$1''':",
-'protect-locked-dblock' => "×\90×\99× ×\9b×\9d ×\99×\9b×\95×\9c×\99×\9d ×\9cשנ×\95ת ×\90ת ×¨×\9eת ×\94×\94×\92× ×\94 ×¢×\9c ×\94×\93×£ ×©×\9b×\9f בסיס הנתונים חסום ברגע זה.
+'protect-locked-dblock' => "×\9c×\90 × ×\99ת×\9f ×\9cשנ×\95ת ×\90ת ×¨×\9eת ×\94×\94×\92× ×\94 ×¢×\9c ×\94×\93×£ ×\9e×\9b×\99×\95×\95×\9f ×©בסיס הנתונים חסום ברגע זה.
 להלן ההגדרות הנוכחיות עבור הדף '''$1''':",
-'protect-locked-access' => "×\9c×\9eשת×\9eש ×©×\9c×\9b×\9d אין הרשאה לשנות את רמת ההגנה של הדף.
+'protect-locked-access' => "×\9c×\97ש×\91×\95×\9f ×\94×\9eשת×\9eש ×©×\9c×\9a אין הרשאה לשנות את רמת ההגנה של הדף.
 להלן ההגדרות הנוכחיות עבור הדף '''$1''':",
 'protect-cascadeon' => 'דף זה מוגן כרגע כיוון שהוא מוכלל {{PLURAL:$1|בדף הבא, שמופעלת עליו|בדפים הבאים, שמופעלת עליהם}} הגנה מדורגת. באפשרותכם לשנות את רמת ההגנה על הדף, אך זה לא ישפיע על ההגנה המדורגת.',
 'protect-default' => 'כל המשתמשים מורשים',
@@ -2849,8 +2857,10 @@ $1',
 'autoblocker' => 'נחסמתם באופן אוטומטי משום שאתם חולקים את כתובת ה־IP שלכם עם [[User:$1|$1]].
 הסיבה שניתנה לחסימת $1 היא "\'\'\'$2\'\'\'"',
 'blocklogpage' => 'יומן חסימות',
-'blocklog-showlog' => 'משתמש זה נחסם בעבר. יומן החסימות מוצג למטה:',
-'blocklog-showsuppresslog' => 'משתמש זה נחסם והוסתר בעבר. יומן ההסתרות מוצג למטה:',
+'blocklog-showlog' => 'משתמש זה נחסם בעבר.
+יומן החסימות מוצג להלן:',
+'blocklog-showsuppresslog' => 'משתמש זה נחסם והוסתר בעבר.
+יומן ההסתרות מוצג להלן:',
 'blocklogentry' => 'חסם את [[$1]] למשך $2 $3',
 'reblock-logentry' => 'שינה את הגדרות החסימה של [[$1]] עם זמן פקיעה של $2 $3',
 'blocklogtext' => 'זהו יומן פעולות החסימה והשחרור של משתמשים.
@@ -2868,7 +2878,7 @@ $1',
 'ipb_expiry_invalid' => 'זמן פקיעת החסימה אינו תקין.',
 'ipb_expiry_temp' => 'חסימות הכוללות הסתרת שם משתמש חייבות להיות לזמן בלתי מוגבל.',
 'ipb_hide_invalid' => 'לא ניתן להסתיר שם משתמש זה; ייתכן שבוצעו ממנו יותר מדי עריכות.',
-'ipb_already_blocked' => 'המשתמש "$1" כבר נחסם',
+'ipb_already_blocked' => 'המשתמש "$1" כבר נחסם.',
 'ipb-needreblock' => '$1 כבר נחסם. האם ברצונכם לשנות את הגדרות החסימה?',
 'ipb-otherblocks-header' => '{{PLURAL:$1|חסימה אחרת|חסימות אחרות}}',
 'unblock-hideuser' => 'לא ניתן לשחרר משתמש זה, כיוון ששם המשתמש שלו הוסתר.',
@@ -2879,12 +2889,13 @@ $1',
 'proxyblocker' => 'חוסם פרוקסי',
 'proxyblockreason' => 'כתובת ה־IP שלכם נחסמה משום שהיא כתובת של שרת פרוקסי פתוח.
 אנא צרו קשר עם ספק האינטרנט שלכם או עם התמיכה הטכנית של הארגון שלכם והודיעו להם על בעיית האבטחה החמורה הזאת.',
-'sorbsreason' => 'כתובת ה־IP שלכם רשומה ככתובת פרוקסי פתוחה ב־DNSBL שאתר זה משתמש בו.',
-'sorbs_create_account_reason' => 'כתובת ה־IP שלכם רשומה ככתובת פרוקסי פתוחה ב־DNSBL שאתר זה משתמש בו. אינכם יכולים ליצור חשבון.',
+'sorbsreason' => 'כתובת ה־IP שלך רשומה ככתובת פרוקסי פתוחה ב־DNSBL שאתר {{SITENAME}} משתמש בו.',
+'sorbs_create_account_reason' => 'כתובת ה־IP שלך רשומה ככתובת פרוקסי פתוחה ב־DNSBL שאתר {{SITENAME}} משתמש בו.
+אין באפשרותך ליצור חשבון.',
 'xffblockreason' => 'כתובת IP הנמצאת בכותרת X-Forwarded-For, בין אם שלכם או של שרת פרוקסי שאתם משתמשים בו, נחסמה. סיבת החסימה המקורית הייתה: $1',
 'cant-see-hidden-user' => 'המשתמש שאתם מנסים לחסום כבר נחסם והוסתר. כיוון שאין לכם את ההרשאה לחסימת משתמש והסתרתו, אינכם רשאים לצפות בחסימת המשתמש או לערוך אותה.',
-'ipbblocked' => 'אינכם יכולים לחסום או לשחרר את חסימתם של משתמשים אחרים, כיוון שאתם עצמכם חסומים',
-'ipbnounblockself' => 'אינכם רשאים לשחרר את חסימתכם',
+'ipbblocked' => 'אינכם יכולים לחסום או לשחרר את חסימתם של משתמשים אחרים, כיוון שאתם עצמכם חסומים.',
+'ipbnounblockself' => 'אינכם רשאים לשחרר את חסימתכם.',
 
 # Developer tools
 'lockdb' => 'נעילת בסיס נתונים',
@@ -3302,9 +3313,9 @@ $2',
 'markaspatrolleddiff' => 'סימון השינוי כבדוק',
 'markaspatrolledtext' => 'סימון דף זה כבדוק',
 'markedaspatrolled' => 'השינוי סומן כבדוק',
-'markedaspatrolledtext' => 'השינוי שבחרתם בדף [[:$1]] סומן כבדוק.',
+'markedaspatrolledtext' => 'השינוי שבחרת בדף [[:$1]] סומן כבדוק.',
 'rcpatroldisabled' => 'אפשרות סימון השינויים כבדוקים מבוטלת',
-'rcpatroldisabledtext' => '×\94ת×\9b×\95× ×\94 ×©×\9c ×¡×\99×\9e×\95×\9f ×©×\99× ×\95×\99 ×\9b×\91×\93×\95ק ×\91ש×\99× ×\95×\99×\99×\9d ×\94×\90×\97ר×\95× ×\99×\9d ×\9e×\91×\95×\98×\9cת.',
+'rcpatroldisabledtext' => 'ת×\9b×\95נת ×¡×\99×\9e×\95×\9f ×©×\99× ×\95×\99×\99×\9d ×\9b×\91×\93×\95ק×\99×\9d ×\91×\93×£ ×\94ש×\99× ×\95×\99×\99×\9d ×\94×\90×\97ר×\95× ×\99×\9d ×\91×\95×\98×\9c×\94.',
 'markedaspatrollederror' => 'לא ניתן לסמן כבדוק',
 'markedaspatrollederrortext' => 'עליכם לציין גרסה שתציינו כבדוקה.',
 'markedaspatrollederror-noautopatrol' => 'אינכם מורשים לסמן את השינויים של עצמכם כבדוקים.',
@@ -3917,7 +3928,7 @@ $5
 
 # Language selector for translatable SVGs
 'img-lang-default' => '(שפת ברירת המחדל)',
-'img-lang-info' => 'הצגת תמונה זו בשפה $1 $2.',
+'img-lang-info' => 'הצגת תמונה זו בשפה $1. $2',
 'img-lang-go' => 'הצגה',
 
 # Table pager
@@ -4085,13 +4096,14 @@ $5
 'version-entrypoints-header-url' => 'כתובת',
 
 # Special:Redirect
-'redirect' => 'הפניה לפי שם קובץ, מספר משתמש או מספר גרסה',
+'redirect' => 'הפניה לפי שם קובץ, מספר משתמש, מספר דף או מספר גרסה',
 'redirect-legend' => 'הפניה לקובץ או לדף',
-'redirect-summary' => 'דף מיוחד זה מפנה לקובץ (בהינתן שם הקובץ), לדף (בהינתן מספר גרסה), או לדף משתמש (בהינתן מספר משתמש). דוגמאות לשימוש: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revision/328429]], או [[{{#Special:Redirect}}/user/101]].',
+'redirect-summary' => 'דף מיוחד זה מפנה לקובץ (בהינתן שם הקובץ), לדף (בהינתן מספר גרסה או מספר דף), או לדף משתמש (בהינתן מספר משתמש). דוגמאות לשימוש: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], או [[{{#Special:Redirect}}/user/101]].',
 'redirect-submit' => 'מעבר',
 'redirect-lookup' => 'סוג:',
 'redirect-value' => 'ערך:',
 'redirect-user' => 'מספר משתמש',
+'redirect-page' => 'מספר דף',
 'redirect-revision' => 'גרסת דף',
 'redirect-file' => 'שם קובץ',
 'redirect-not-exists' => 'הערך לא נמצא',
@@ -4334,10 +4346,12 @@ $5
 'expand_templates_input' => 'טקסט הקלט:',
 'expand_templates_output' => 'תוצאה',
 'expand_templates_xml_output' => 'פלט XML',
+'expand_templates_html_output' => 'פלט HTML גולמי',
 'expand_templates_ok' => 'אישור',
 'expand_templates_remove_comments' => 'הסרת הערות',
 'expand_templates_remove_nowiki' => 'הסרת תגי <nowiki> בתוצאה',
 'expand_templates_generate_xml' => 'הצגת עץ הפענוח של XML',
+'expand_templates_generate_rawhtml' => 'הצגת HTML גולמי',
 'expand_templates_preview' => 'תצוגה מקדימה',
 
 );
index e3bfae0..0390568 100644 (file)
@@ -1661,12 +1661,14 @@ Ne smije biti duži od $1 {{PLURAL:$1|znaka|znaka|znakova}}.',
 'recentchanges' => 'Nedavne promjene',
 'recentchanges-legend' => 'Izbornik nedavnih promjena',
 'recentchanges-summary' => 'Na ovoj stranici možete pratiti nedavne promjene u wikiju.',
+'recentchanges-noresult' => 'U zadanom vremenu nema promjena za zadane kriterije.',
 'recentchanges-feed-description' => 'Na ovoj stranici možete pratiti nedavne promjene u wikiju.',
 'recentchanges-label-newpage' => 'Ova izmjena stvorila je novu stranicu',
 'recentchanges-label-minor' => 'Ovo je manja izmjena',
 'recentchanges-label-bot' => 'Ovu izmjenu napravio je bot',
 'recentchanges-label-unpatrolled' => 'Ova izmjena još nije pregledana',
 'recentchanges-label-plusminus' => 'Promjena veličine stranice (u bajtovima)',
+'recentchanges-legend-heading' => "'''Legenda:'''",
 'recentchanges-legend-newpage' => '$1 - nova stranica',
 'rcnotefrom' => 'Slijede promjene od <b>$2</b> (prikazano ih je do <b>$1</b>).',
 'rclistfrom' => 'Prikaži nove promjene počevši od $1',
index 2ca59cc..237c3bf 100644 (file)
@@ -7,6 +7,7 @@
  * @ingroup Language
  * @file
  *
+ * @author Derbeth
  * @author Dundak
  * @author J budissin
  * @author Kaganer
@@ -193,6 +194,7 @@ $messages = array(
 'tog-ccmeonemails' => 'Mi kopije e-mejlkow pósłać, kotrež druhim wužiwarjam pósćelu',
 'tog-diffonly' => 'Jenož rozdźěle pokazać (nic pak zbytny wobsah)',
 'tog-showhiddencats' => 'Schowane kategorije pokazać',
+'tog-noconvertlink' => 'Konwertowanje wotkazoweho titula znjemóžnić',
 'tog-norollbackdiff' => 'Rozdźěl po wróćostajenju zanjechać',
 'tog-useeditwarning' => 'Warnować, hdyž so wobdźěłowanska strona z njeskładowanymi změnami wopušća',
 'tog-prefershttps' => 'Po přizjewjenju přeco wěsty zwisk wužiwać',
@@ -334,7 +336,7 @@ $messages = array(
 'returnto' => 'Wróćo k stronje $1.',
 'tagline' => 'z {{GRAMMAR:genitiw|{{SITENAME}}}}',
 'help' => 'Pomoc',
-'search' => 'pytać',
+'search' => 'Pytać',
 'searchbutton' => 'Pytać',
 'go' => 'Pytać',
 'searcharticle' => 'Pytać',
@@ -997,6 +999,9 @@ Dyrbjała mjenje hač $2 {{PLURAL:$2|wołanje|wołanjej|wołanja|wołanjow}} mě
 'cantcreateaccount-text' => "Wutworjenje wužiwarskeho konta z IP-adresy '''$1''' bu wot [[User:$3|$3]] zablokowane.
 
 Přičina za blokowanje, podata wot $3, je: ''$2''",
+'cantcreateaccount-range-text' => "Załoženje kontow z IP-adresow we wobłuku '''$1'', kotryž twoju IP-adresu wobsahuje ('''$4'''), je so wot [[User:$3|$3]] zablokowało.
+
+Přičina podata wot $3 je ''$2''",
 
 # History pages
 'viewpagelogs' => 'protokole tuteje strony pokazać',
@@ -1525,13 +1530,14 @@ Tuta informacija budźe zjawna.',
 'recentchanges-label-bot' => 'Tuta změna bu přez roboćik přewjedźena',
 'recentchanges-label-unpatrolled' => 'Tuta změnu hišće njebu přepruwowana',
 'recentchanges-label-plusminus' => 'Změnjena wulkosć strony (w bajtach)',
+'recentchanges-legend-heading' => "'''Legenda:'''",
 'recentchanges-legend-newpage' => '(hlej tež [[Special:NewPages|lisćinu nowych stronow]])',
 'recentchanges-legend-plusminus' => "(''±123'')",
 'rcnotefrom' => "Deleka so změny wot '''$2''' pokazuja (hač k '''$1''').",
 'rclistfrom' => 'Nowe změny pokazać, započinajo z $1',
 'rcshowhideminor' => 'snadne změny $1',
 'rcshowhidebots' => 'Boćiki $1',
-'rcshowhideliu' => 'Přizjewjeni wužiwarjo $1',
+'rcshowhideliu' => 'Zregistrowani wužiwarjo $1',
 'rcshowhideanons' => 'Anonymni wužiwarjo $1',
 'rcshowhidepatr' => 'Dohladowane změny $1',
 'rcshowhidemine' => 'moje změny $1',
@@ -2021,6 +2027,7 @@ Kóžda rjadka wobsahuje wotkazy k prěnjemu a druhemu daleposrědkowanju kaž t
 'protectedpages' => 'Škitane strony',
 'protectedpages-indef' => 'Jenož strony z njewobmjezowanym škitom',
 'protectedpages-cascade' => 'Jenož strony z kaskadowym škitom',
+'protectedpages-noredirect' => 'Dalesposrědkowanja schować',
 'protectedpagesempty' => 'Tuchwilu žane.',
 'protectedtitles' => 'Škitane titule',
 'protectedtitlesempty' => 'Žane titule njejsu tuchwilu z tutymi parametrami škitane.',
@@ -2294,6 +2301,7 @@ Prošu potwjerdź, zo maš wotpohlad to činić, zo rozumiš sćěwki a zo to wo
 'delete-edit-reasonlist' => 'Přičiny za wušmórnjenje wobdźěłać',
 'delete-toobig' => 'Tuta strona ma z wjace hač $1 {{PLURAL:$1|wersiju|wersijomaj|wersijemi|wersijemi}} wulke wobdźěłanske stawizny. Wušmórnjenje tajkich stronow bu wobmjezowane, zo by připadne přetorhnjenje {{SITENAME}} wobešło.',
 'delete-warning-toobig' => 'Tuta strona ma z wjace hač $1 {{PLURAL:$1|wersiju|wersijomaj|wersijemi|wersijemi}} wulke wobdźěłanske stawizny. Wušmórnjenje móže operacije datoweje banki {{SITENAME}} přetorhnyć; pokročuj z kedźbliwosću.',
+'deleting-backlinks-warning' => "'''Warnowanje:''' Druhe strony wotkazuja k stronje, kotruž chceš zhašeć.",
 
 # Rollback
 'rollback' => 'Změny cofnyć',
@@ -3577,7 +3585,7 @@ Prošu potwjerdź, zo chceš tutu stronu woprawdźe znowa wutworić.",
 
 # Language selector for translatable SVGs
 'img-lang-default' => '(standardna rěč)',
-'img-lang-info' => 'tutón wobraz w $1 $2 rysować.',
+'img-lang-info' => 'Tutón wobraz w $1 rysować. $2',
 'img-lang-go' => 'Wotpósłać',
 
 # Table pager
@@ -3682,14 +3690,15 @@ Ty měł [{{SERVER}}{{SCRIPTPATH}}/COPYING kopiju licency GNU General Public Lic
 'version-entrypoints-header-url' => 'URL',
 
 # Special:Redirect
-'redirect' => 'Po datajowym mjenje, wužiwarju abo wersijowym ID dale sposrědkować',
+'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 je podaty) abo wužiwarskeje strony (numeriski wužiwarski ID je podaty) dale sposrědkuje. Wužiće:
-[[{{#Special:Redirect}}/file/Přikład.jpg]], [[{{#Special:Redirect}}/revision/328429]] abo [[{{#Special:Redirect}}/user/101]].',
+'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:
+[[{{#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ć:',
 'redirect-value' => 'Hódnota:',
 'redirect-user' => 'ID wužiwarja',
+'redirect-page' => 'ID strony',
 'redirect-revision' => 'Wersija strony',
 'redirect-file' => 'Datajowe mjeno',
 'redirect-not-exists' => 'Hódnota njeje so namakała',
@@ -3928,10 +3937,12 @@ Hewak móžeš slědowacy jednory formular wužiwać. Twój komentar přida so s
 'expand_templates_input' => 'Tekst zapodać:',
 'expand_templates_output' => 'Wuslědk',
 'expand_templates_xml_output' => 'Wudaće XML',
+'expand_templates_html_output' => 'Hrube HTML-wudaće',
 'expand_templates_ok' => 'W porjadku',
 'expand_templates_remove_comments' => 'Komentary wotstronić',
 'expand_templates_remove_nowiki' => 'Taflički <nowiki> we wuslědku potłóčić',
 'expand_templates_generate_xml' => 'Analyzowy štom XML pokazać',
+'expand_templates_generate_rawhtml' => 'Hruby HTML pokazać',
 'expand_templates_preview' => 'Přehlad',
 
 );
index de89fd2..6739043 100644 (file)
@@ -587,8 +587,8 @@ További információkat a [[Special:Version|verzióinformációs lapon]] talál
 'youhavenewmessages' => '$1 a vitalapodon! ($2 külön is megtekintheted.)',
 'youhavenewmessagesfromusers' => '$2 kaptál {{PLURAL:$3|egy|$3}} szerkesztőtől $1!',
 'youhavenewmessagesmanyusers' => '$2 kaptál több szerkesztőtől $1.',
-'newmessageslinkplural' => '{{PLURAL:$1||}}a vitalapodon',
-'newmessagesdifflinkplural' => '{{PLURAL:$1|Új üzenetet|Új üzeneteket}}',
+'newmessageslinkplural' => '{{PLURAL:$1|új üzenet|999=új üzenet}} a vitalapodon',
+'newmessagesdifflinkplural' => '{{PLURAL:$1|változás|999=változás}}',
 'youhavenewmessagesmulti' => 'Új üzenet vár a(z) $1 wikin',
 'editsection' => 'szerkesztés',
 'editold' => 'szerkesztés',
@@ -763,6 +763,8 @@ Ne felejtsd el módosítani a [[Special:Preferences|{{SITENAME}} beállításaid
 'userlogin-resetpassword-link' => 'Elfelejtetted a jelszavad?',
 'helplogin-url' => 'Help:Bejelentkezés',
 'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|Segítség a bejelentkezéshez]]',
+'userlogin-loggedin' => 'Már be vagy jelentkezve mint {{GENDER:$1|$1}}. Ha más néven akarsz belépni, alább megteheted.',
+'userlogin-createanother' => 'Felhasználói fiók létrehozása',
 'createacct-join' => 'Add meg az alábbi információkat.',
 'createacct-another-join' => 'Add meg az új fiók adatait alább.',
 'createacct-emailrequired' => 'E-mail cím',
@@ -809,7 +811,7 @@ Ellenőrizd, hogy helyesen írtad-e be.',
 'passwordtooshort' => 'A jelszónak legalább {{PLURAL:$1|egy|$1}} karakterből kell állnia.',
 'password-name-match' => 'A jelszavadnak különböznie kell a szerkesztőnevedtől.',
 'password-login-forbidden' => 'Ezen felhasználónév és jelszó használata tiltott.',
-'mailmypassword' => 'Új jelszó küldése e-mailben',
+'mailmypassword' => 'Jelszó alaphelyzetbe állítása',
 'passwordremindertitle' => 'Ideiglenes jelszó a(z) {{SITENAME}} wikire',
 'passwordremindertext' => 'Valaki (vélhetően te, a(z) $1 IP-címről) új jelszót kért a(z)
 {{SITENAME}} wikis ($4) felhasználói fiókjához.
@@ -848,6 +850,7 @@ Várj $1, mielőtt újra próbálkozol.',
 'login-abort-generic' => 'A bejelentkezés sikertelen – megszakítva',
 'loginlanguagelabel' => 'Nyelv: $1',
 'suspicious-userlogout' => 'A kijelentkezési kérésed vissza lett utasítva, mert úgy tűnik, hogy egy hibás böngésző vagy gyorsítótárazó proxy küldte.',
+'createacct-another-realname-tip' => 'A valódi nevet nem kötelező megadni, de ha úgy döntesz, hogy megadod, azzal leszel feltüntetve a munkád szerzőjeként.',
 
 # Email sending
 'php-mail-error-unknown' => 'Ismeretlen hiba a PHP mail() függvényében',
@@ -876,7 +879,7 @@ Lehet, hogy már sikeresen megváltoztattad a jelszavad, vagy pedig időközben
 # Special:PasswordReset
 'passwordreset' => 'Jelszó törlése',
 'passwordreset-text-one' => 'A jelszavad alaphelyzetbe állításához töltsd ki az űrlapot.',
-'passwordreset-text-many' => '{{PLURAL:$1|A jelszavad alaphelyzetbe állításához töltsd ki az alábbi mezők egyikét.}}',
+'passwordreset-text-many' => '{{PLURAL:$1|Az átmeneti jelszó elküldéséhez töltsd ki az alábbi mezők egyikét.}}',
 'passwordreset-legend' => 'Új jelszó kérése',
 'passwordreset-disabled' => 'Új jelszó kérése nem engedélyezett ezen a wikin.',
 'passwordreset-emaildisabled' => 'Az e-mail funkció le van tiltva ezen a wikin.',
@@ -1236,17 +1239,17 @@ A(z) {{SITENAME}} adminisztrátorai továbbra is meg tudják tekinteni az elrejt
 'revdelete-confirm' => 'Kérlek erősítsd meg, hogy valóban ezt szeretnéd tenni; megértetted a következményeket, és amit teszel, az összhangban van [[{{MediaWiki:Policy-url}}|az irányelvekkel]].',
 'revdelete-suppress-text' => "Az elrejtés '''csak''' a következő esetekben használható:
 * Illetlen személyes információk
-*: ''otthoni címek és telefonszámok, társadalombiztosítási számok stb.''",
+*: ''otthoni cím, telefonszámok, társadalombiztosítási számok stb.''",
 'revdelete-legend' => 'Korlátozások megadása:',
 'revdelete-hide-text' => 'Változat szövegének elrejtése',
 'revdelete-hide-image' => 'A fájl tartalmának elrejtése',
 'revdelete-hide-name' => 'Művelet és cél elrejtése',
-'revdelete-hide-comment' => 'Összefoglaló elrejtése',
-'revdelete-hide-user' => 'A szerkesztő felhasználónevének/IP-címének elrejtése',
+'revdelete-hide-comment' => 'Szerkesztési összefoglaló',
+'revdelete-hide-user' => 'Szerkesztői név/IP cím',
 'revdelete-hide-restricted' => 'Adatok elrejtése az adminisztrátorok és mindenki más elől',
 'revdelete-radio-same' => '(nincs változtatás)',
-'revdelete-radio-set' => 'Igen',
-'revdelete-radio-unset' => 'Nem',
+'revdelete-radio-set' => 'Rejtett',
+'revdelete-radio-unset' => 'Látható',
 'revdelete-suppress' => 'Adatok elrejtése az adminisztrátorok és a többi felhasználó elől is',
 'revdelete-unsuppress' => 'Korlátozások eltávolítása a visszaállított változatokról',
 'revdelete-log' => 'Ok:',
@@ -1404,7 +1407,7 @@ Ezt általában egy elavult, törölt oldalra mutató laptörténeti hivatkozás
 'prefs-email' => 'Levelezés',
 'prefs-rendering' => 'Lapok megjelenítése',
 'saveprefs' => 'Mentés',
-'restoreprefs' => 'A beállítások alaphelyzetbe állítása',
+'restoreprefs' => 'A beállítások alaphelyzetbe állítása minden szakaszban',
 'prefs-editing' => 'Szerkesztés',
 'rows' => 'Sor',
 'columns' => 'Oszlop',
@@ -1462,8 +1465,8 @@ A műveletet nem lehet visszavonni.',
 'badsig' => 'Érvénytelen aláírás; ellenőrizd a HTML-formázást.',
 'badsiglength' => 'Az aláírásod túl hosszú.
 {{PLURAL:$1|Egy|$1}} karakternél rövidebbnek kell lennie.',
-'yourgender' => 'Nem:',
-'gender-unknown' => 'Nincs megadva',
+'yourgender' => 'Biológiai nem:',
+'gender-unknown' => 'Inkább nem adom meg',
 'gender-male' => 'Férfi',
 'gender-female' => 'Nő',
 'prefs-help-gender' => 'Nem kötelező: a szoftver használja a nemtől függő üzenetek megjelenítéséhez. Az információ mindenki számára látható.',
@@ -1488,6 +1491,7 @@ A műveletet nem lehet visszavonni.',
 'prefs-displaysearchoptions' => 'Megjelenítési beállítások',
 'prefs-displaywatchlist' => 'Megjelenítési beállítások',
 'prefs-diffs' => 'Eltérések (diffek)',
+'prefs-help-prefershttps' => 'A beállítás a legközelebbi belépés után lép érvénybe.',
 
 # User preference: email validation using jQuery
 'email-address-validity-valid' => 'Az e-mail cím érvényesnek tűnik',
@@ -1659,13 +1663,13 @@ A műveletet nem lehet visszavonni.',
 'recentchanges-label-minor' => 'Ez egy apró szerkesztés',
 'recentchanges-label-bot' => 'Ezt a szerkesztést egy bot hajtotta végre',
 'recentchanges-label-unpatrolled' => 'Ezt a szerkesztést még nem ellenőrizték',
-'recentchanges-label-plusminus' => 'Az oldal mérete ennyi bájttal módosult.',
-'recentchanges-legend-newpage' => '$1 – új lap',
+'recentchanges-label-plusminus' => 'Az oldal mérete ennyi bájttal módosult',
+'recentchanges-legend-newpage' => '(lásd még: [[Special:NewPages|Új lapok]])',
 'rcnotefrom' => 'Alább a <b>$2</b> óta történt változtatások láthatóak (<b>$1</b> db).',
 'rclistfrom' => '$1 után történt változtatások megtekintése',
 'rcshowhideminor' => 'apró szerkesztések $1',
 'rcshowhidebots' => 'botok szerkesztéseinek $1',
-'rcshowhideliu' => 'bejelentkezett felhasználók szerkesztéseinek $1',
+'rcshowhideliu' => '$1 bejelentkezett felhasználó',
 'rcshowhideanons' => 'névtelen szerkesztések $1',
 'rcshowhidepatr' => 'ellenőrzött szerkesztések $1',
 'rcshowhidemine' => 'saját szerkesztések $1',
@@ -1835,7 +1839,7 @@ $1',
 'upload-file-error-text' => 'Belső hiba történt egy ideiglenes fájl szerveren történő létrehozásakor.
 Kérjük, hogy lépj kapcsolatba egy  [[Special:ListUsers/sysop|adminisztrátorral]].',
 'upload-misc-error' => 'Ismeretlen feltöltési hiba',
-'upload-misc-error-text' => 'A feltöltés során ismeretlen hiba történt.  Kérjük, ellenőrizd, hogy az URL érvényes-e és hozzáférhető-e, majd próbáld újra.  Ha a probléma továbbra is fennáll, akkor lépj kapcsolatba a [[Special:ListUsers/sysop|adminisztrátorral]].',
+'upload-misc-error-text' => 'A feltöltés során ismeretlen hiba történt.  Kérjük, ellenőrizd, hogy az URL érvényes-e és hozzáférhető-e, majd próbáld újra.  Ha a probléma továbbra is fennáll, akkor lépj kapcsolatba az [[Special:ListUsers/sysop|adminisztrátorral]].',
 'upload-too-many-redirects' => 'Az URL túl sokszor volt átirányítva',
 'upload-unknown-size' => 'Ismeretlen méretű',
 'upload-http-error' => 'HTTP-hiba történt: $1',
@@ -1943,8 +1947,7 @@ Ez a wiki publikus, így a biztonság miatt az img_auth.php ki van kapcsolva.',
 'upload_source_file' => ' (egy fájl a számítógépeden)',
 
 # Special:ListFiles
-'listfiles-summary' => 'Ezen a speciális lapon látható az összes feltöltött fájl.
-Amennyiben a szerkesztő szűrést állított be, úgy csak azok a fájlok jelennek meg, amikor a szerkesztő töltötte fel a legfrissebb verziót.',
+'listfiles-summary' => 'Ezen a speciális lapon látható az összes feltöltött fájl.',
 'listfiles_search_for' => 'Keresés fájl nevére:',
 'imgfile' => 'fájl',
 'listfiles' => 'Fájllista',
@@ -1955,6 +1958,8 @@ Amennyiben a szerkesztő szűrést állított be, úgy csak azok a fájlok jelen
 'listfiles_size' => 'Méret',
 'listfiles_description' => 'Leírás',
 'listfiles_count' => 'Változatok',
+'listfiles-latestversion-yes' => 'Igen',
+'listfiles-latestversion-no' => 'Nem',
 
 # File description page
 'file-anchor-link' => 'Fájl',
@@ -2047,6 +2052,10 @@ Ellenőrizd a meglévő hivatkozásokat, mielőtt törölnéd őket.',
 'randompage' => 'Lap találomra',
 'randompage-nopages' => 'A következő {{PLURAL:$2|névtérben|névterekben}} nincsenek lapok: $1.',
 
+# Random page in category
+'randomincategory' => 'Véletlen lap egy kategóriából',
+'randomincategory-invalidcategory' => '"$1" nem egy érvényes kategória neve.',
+
 # Random redirect
 'randomredirect' => 'Átirányítás találomra',
 'randomredirect-nopages' => 'A(z) „$1” névtérben nincsenek átirányítások.',
@@ -2098,6 +2107,7 @@ Az <del>áthúzott</del> sorok a lista elkészülése óta javítva lettek.',
 'ninterwikis' => '{{PLURAL:$1|egy|$1}} interwiki',
 'nlinks' => '{{PLURAL:$1|egy|$1}} hivatkozás',
 'nmembers' => '{{PLURAL:$1|egy|$1}} elem',
+'nmemberschanged' => '$1 → $2 tag',
 'nrevisions' => '{{PLURAL:$1|egy|$1}} változat',
 'nviews' => '{{PLURAL:$1|egy|$1}} megtekintés',
 'nimagelinks' => '{{PLURAL:$1|Egy|$1}} lapon van használva',
@@ -2316,7 +2326,7 @@ Ezután minden, a lapon vagy annak vitalapján történő változást ott fogsz
 'notvisiblerev' => 'A változat törölve lett',
 'watchlist-details' => 'A vitalapokon kívül {{PLURAL:$1|egy|$1}} lap van a figyelőlistádon.',
 'wlheader-enotif' => 'Az e-mailen keresztül történő értesítés engedélyezve.',
-'wlheader-showupdated' => "Azok a lapok, amelyek megváltoztak, mióta utoljára megnézted őket, '''vastagon''' láthatóak.",
+'wlheader-showupdated' => "Azok a lapok, amelyek megváltoztak, mióta utoljára megnézted őket, '''vastagítva''' láthatók.",
 'watchmethod-recent' => 'a figyelt lapokon belüli legfrissebb szerkesztések',
 'watchmethod-list' => 'a legfrissebb szerkesztésekben található figyelt lapok',
 'watchlistcontains' => 'A figyelőlistádon {{PLURAL:$1|egy|$1}} lap szerepel.',
@@ -2398,9 +2408,11 @@ A legutóbbi törlések listájához lásd a $2 lapot.',
 'deleteotherreason' => 'További indoklás:',
 'deletereasonotherlist' => 'Egyéb indok',
 'deletereason-dropdown' => '*Gyakori törlési okok
-** Szerző kérésére
+** Spam
+** A szerző kérése
 ** Jogsértő
-** Vandalizmus',
+** Vandalizmus
+** Hibás átirányítás',
 'delete-edit-reasonlist' => 'Törlési okok szerkesztése',
 'delete-toobig' => 'Ennek a lapnak a laptörténete több mint {{PLURAL:$1|egy|$1}} változatot őriz. A szervert kímélendő az ilyen lapok törlése nem engedélyezett.',
 'delete-warning-toobig' => 'Ennek a lapnak a laptörténete több mint {{PLURAL:$1|egy|$1}} változatot őriz. Törlése fennakadásokat okozhat a wiki adatbázis-műveleteiben; óvatosan járj el.',
@@ -3087,9 +3099,9 @@ Ez valószínűleg egy olyan link miatt van, ami egy feketelistán lévő oldalr
 'pageinfo-length' => 'Lap hossza (bájtokban)',
 'pageinfo-article-id' => 'Lapazonosító',
 'pageinfo-language' => 'Laptartalom nyelve',
-'pageinfo-robot-policy' => 'Kereső motor státusz',
-'pageinfo-robot-index' => 'Indexelhető',
-'pageinfo-robot-noindex' => 'Nem indexelhető',
+'pageinfo-robot-policy' => 'Indexelés robottal',
+'pageinfo-robot-index' => 'Engedélyezett',
+'pageinfo-robot-noindex' => 'Nem engedélyezett',
 'pageinfo-views' => 'Megtekintések száma',
 'pageinfo-watchers' => 'Figyelők száma',
 'pageinfo-few-watchers' => 'Kevesebb mint $1 szerkesztő figyeli',
@@ -3169,7 +3181,7 @@ A futtatása során kárt tehet a számítógépedben.",
 'svg-long-desc' => 'SVG fájl, névlegesen $1 × $2 képpont, fájlméret: $3',
 'svg-long-desc-animated' => 'Animált SVG fájl, névlegesen $1 × $2 képpont, fájlméret: $3',
 'svg-long-error' => 'Érvénytelen SVG-fájl: $1',
-'show-big-image' => 'A kép nagyfelbontású változata',
+'show-big-image' => 'Eredeti fájl',
 'show-big-image-preview' => 'Az előnézet mérete: $1',
 'show-big-image-other' => 'További {{PLURAL:$2|felbontás|felbontások}}: $1.',
 'show-big-image-size' => '$1 × $2 képpont',
@@ -3198,6 +3210,7 @@ A futtatása során kárt tehet a számítógépedben.",
 'minutes' => '{{PLURAL:$1|egy|$1}} perccel',
 'hours' => '{{PLURAL:$1|egy|$1}} órával',
 'days' => '{{PLURAL:$1|egy|$1}} nappal',
+'weeks' => '{{PLURAL:$1|$1 hét|$1 hét}}',
 'months' => '{{PLURAL:$1|$1 hónap|$1 hónap}}',
 'years' => '{{PLURAL:$1|$1 év|$1 év}}',
 'ago' => '$1 ezelőtt',
@@ -3205,6 +3218,16 @@ A futtatása során kárt tehet a számítógépedben.",
 
 # Human-readable timestamps
 'hours-ago' => '$1 {{PLURAL:$1|órával|órával}} ezelőtt',
+'minutes-ago' => '$1 {{PLURAL: $1|perce|perce}}',
+'seconds-ago' => '$1 {{PLURAL:$1|másodperce|másodperce}}',
+'monday-at' => '$1 (hétfő)',
+'tuesday-at' => '$1 (kedd)',
+'wednesday-at' => '$1 (szerde)',
+'thursday-at' => '$1 (csütörtök)',
+'friday-at' => '$1 (péntek)',
+'saturday-at' => '$1 (szombat)',
+'sunday-at' => '$1 (vasárnap)',
+'yesterday-at' => 'Tegnap $1',
 
 # Bad image list
 'bad_image_list' => 'A formátum a következő:
@@ -3418,7 +3441,7 @@ míg a többi elem a táblázat összecsukása után alapértelmezett esetben re
 'exif-compression-4' => 'CCITT Group 4 fax kódolás',
 
 'exif-copyrighted-true' => 'Szerzői jog által védett',
-'exif-copyrighted-false' => 'Közkincs',
+'exif-copyrighted-false' => 'Szerzői jogi állapot nincs beállítva',
 
 'exif-unknowndate' => 'Ismeretlen dátum',
 
@@ -3716,6 +3739,7 @@ Kérlek erősítsd meg, hogy tényleg újra akarod-e írni a lapot.",
 
 # Separators for various lists, etc.
 'ellipsis' => '…',
+'quotation-marks' => '„$1”',
 
 # Multipage image navigation
 'imgmultipageprev' => '← előző oldal',
@@ -3723,6 +3747,9 @@ Kérlek erősítsd meg, hogy tényleg újra akarod-e írni a lapot.",
 'imgmultigo' => 'Menj',
 'imgmultigoto' => 'Ugrás a(z) $1. oldalra',
 
+# Language selector for translatable SVGs
+'img-lang-default' => '(alapértelmezett nyelv)',
+
 # Table pager
 'ascending_abbrev' => 'növ',
 'descending_abbrev' => 'csökk',
@@ -3817,6 +3844,12 @@ A MediaWikit abban a reményben terjesztjük, hogy hasznos lesz, de GARANCIA NÉ
 'version-entrypoints-header-entrypoint' => 'Belépési pont',
 'version-entrypoints-header-url' => 'URL',
 
+# Special:Redirect
+'redirect-user' => 'Felhasználói azonosító',
+'redirect-revision' => 'Oldal felülvizsgálata',
+'redirect-file' => 'Fájlnév',
+'redirect-not-exists' => 'Érték nem található',
+
 # Special:FileDuplicateSearch
 'fileduplicatesearch' => 'Duplikátumok keresése',
 'fileduplicatesearch-summary' => 'Fájlok duplikátumainak keresése hash értékük alapján.',
@@ -3830,6 +3863,7 @@ A MediaWikit abban a reményben terjesztjük, hogy hasznos lesz, de GARANCIA NÉ
 
 # Special:SpecialPages
 'specialpages' => 'Speciális lapok',
+'specialpages-note-top' => 'Jelmagyarázat',
 'specialpages-note' => '* Mindenki számára elérhető speciális lapok.
 * <span class="mw-specialpagerestricted">Korlátozott hozzáférésű speciális lapok.</span>',
 'specialpages-group-maintenance' => 'Állapotjelentések',
@@ -3868,7 +3902,10 @@ A MediaWikit abban a reményben terjesztjük, hogy hasznos lesz, de GARANCIA NÉ
 'tags-tag' => 'Címke neve',
 'tags-display-header' => 'Megjelenése a listákon',
 'tags-description-header' => 'Teljes leírás',
+'tags-active-header' => 'Aktív?',
 'tags-hitcount-header' => 'Címkézett változtatások',
+'tags-active-yes' => 'Igen',
+'tags-active-no' => 'Nem',
 'tags-edit' => 'szerkesztés',
 'tags-hitcount' => '{{PLURAL:$1|Egy|$1}} változtatás',
 
@@ -3888,6 +3925,7 @@ A MediaWikit abban a reményben terjesztjük, hogy hasznos lesz, de GARANCIA NÉ
 'dberr-problems' => 'Sajnáljuk, de az oldallal technikai problémák vannak.',
 'dberr-again' => 'Várj néhány percet, majd frissítsd az oldalt.',
 'dberr-info' => '(Nem sikerült kapcsolatot létesíteni az adatbázisszerverrel: $1)',
+'dberr-info-hidden' => '(Nem sikerült kapcsolatot létesíteni az adatbázisszerverrel)',
 'dberr-usegoogle' => 'A probléma elmúlásáig próbálhatsz keresni a Google-lel.',
 'dberr-outofdate' => 'Fontos tudnivaló, hogy az oldal tartalmáról készített indexeik elavultak lehetnek.',
 'dberr-cachederror' => 'Lenn a kért oldal gyorsítótárazott változata látható, és lehet, hogy nem teljesen friss.',
@@ -4029,10 +4067,12 @@ Kibontja az elemző függvényeket (pl. <nowiki>{{</nowiki>#language:...}}), és
 'expand_templates_input' => 'Vizsgálandó szöveg',
 'expand_templates_output' => 'Eredmény',
 'expand_templates_xml_output' => 'XML kimenet',
+'expand_templates_html_output' => 'Nyers HTML-kimenet',
 'expand_templates_ok' => 'OK',
 'expand_templates_remove_comments' => 'Megjegyzések eltávolítása',
 'expand_templates_remove_nowiki' => '<nowiki> tagek mellőzése az eredményben',
 'expand_templates_generate_xml' => 'XML elemzési fa mutatása',
+'expand_templates_generate_rawhtml' => 'Nyers HTML megjelenítése',
 'expand_templates_preview' => 'Előnézet',
 
 );
index a61c059..0d59b6a 100644 (file)
@@ -1047,6 +1047,9 @@ Per favor controla le comparation infra pro verificar que tu vole facer isto, e
 'cantcreateaccount-text' => "Le creation de contos desde iste adresse IP ('''$1''') ha essite blocate per [[User:$3|$3]].
 
 Le motivo que $3 dava es ''$2''",
+'cantcreateaccount-range-text' => "Le creation de contos ab le adresses IP in le intervallo '''$1''', le qual include tu adresse IP ('''$4'''), ha essite blocate per [[User:$3|$3]].
+
+Le motivo fornite per $3 es ''$2''",
 
 # History pages
 'viewpagelogs' => 'Vider le entratas del registro pro iste pagina',
@@ -1584,6 +1587,7 @@ Si tu opta pro dar lo, isto essera usate pro dar te attribution pro tu contribut
 'recentchanges-label-bot' => 'Iste modification ha essite effectuate per un robot',
 'recentchanges-label-unpatrolled' => 'Iste modification non ha ancora essite patruliate',
 'recentchanges-label-plusminus' => 'Le dimension del pagina ha cambiate de iste numero de bytes',
+'recentchanges-legend-heading' => "'''Legenda:'''",
 'recentchanges-legend-newpage' => '(vide etiam le [[Special:NewPages|lista de nove paginas]])',
 'recentchanges-legend-plusminus' => "(''±123'')",
 'rcnotefrom' => 'infra es le modificationes a partir de <b>$2</b> (usque a <b>$1</b>).',
@@ -2096,6 +2100,7 @@ Le entratas <del>cancellate</del> ha essite resolvite.',
 'protectedpages' => 'Paginas protegite',
 'protectedpages-indef' => 'Solmente protectiones infinite',
 'protectedpages-cascade' => 'Protectiones in cascada solmente',
+'protectedpages-noredirect' => 'Celar redirectiones',
 'protectedpagesempty' => 'Nulle paginas es actualmente protegite con iste parametros.',
 'protectedtitles' => 'Titulos protegite',
 'protectedtitlesempty' => 'Nulle titulos es actualmente protegite con iste parametros.',
@@ -2378,6 +2383,7 @@ Le deletion de tal paginas ha essite restringite pro impedir le disruption accid
 'delete-warning-toobig' => 'Iste pagina ha un grande historia de modificationes con plus de $1 {{PLURAL:$1|version|versiones}}.
 Le deletion de illo pote disrumper le operationes del base de datos de {{SITENAME}};
 procede con caution.',
+'deleting-backlinks-warning' => "'''Attention:''' Il ha altere paginas con ligamines al pagina que tu es sur le puncto de deler.",
 
 # Rollback
 'rollback' => 'Revocar modificationes',
@@ -3732,7 +3738,7 @@ Per favor confirma que tu realmente vole recrear iste pagina.",
 
 # Language selector for translatable SVGs
 'img-lang-default' => '(lingua predefinite)',
-'img-lang-info' => 'Presentar iste imagine in $1 $2.',
+'img-lang-info' => 'Presentar iste imagine in $1. $2',
 'img-lang-go' => 'Va',
 
 # Table pager
@@ -3833,13 +3839,14 @@ Vos deberea haber recipite [{{SERVER}}{{SCRIPTPATH}}/COPYING un exemplar del Lic
 'version-entrypoints-scriptpath' => '[https://www.mediawiki.org/wiki/Manual:$wgScriptPath Cammino al script]',
 
 # Special:Redirect
-'redirect' => 'Rediriger per nomine de file, ID de usator o ID de version',
+'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-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 a un pagina de usator (si es date un ID de usator numeric). Usage: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revision/328429]] o [[{{#Special:Redirect}}/user/101]].',
+'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:',
 'redirect-value' => 'Valor:',
 'redirect-user' => 'ID de usator',
+'redirect-page' => 'ID del pagina',
 'redirect-revision' => 'Version de pagina',
 'redirect-file' => 'Nomine de file',
 'redirect-not-exists' => 'Valor non trovate',
@@ -4082,10 +4089,12 @@ De facto, illo expande quasi toto inter accolladas duple.',
 'expand_templates_input' => 'Texto de entrata:',
 'expand_templates_output' => 'Resultato',
 'expand_templates_xml_output' => 'Output XML',
+'expand_templates_html_output' => 'Resultato in HTML brute',
 'expand_templates_ok' => 'OK',
 'expand_templates_remove_comments' => 'Eliminar commentos',
 'expand_templates_remove_nowiki' => 'Supprimer le etiquettas <nowiki> in le resultato',
 'expand_templates_generate_xml' => 'Monstrar arbore syntactic XML',
+'expand_templates_generate_rawhtml' => 'Monstrar HTML brute',
 'expand_templates_preview' => 'Previsualisation',
 
 );
index 6cf9413..09e7fb7 100644 (file)
@@ -11,6 +11,7 @@
  * @author Kaganer
  * @author Makuba
  * @author Malafaya
+ * @author Minisarm
  * @author Reedy
  * @author Remember the dot
  * @author Renan
@@ -359,7 +360,7 @@ $messages = array(
 'otherlanguages' => 'Altri lingues',
 'redirectedfrom' => '(Redirectet de $1)',
 'redirectpagesub' => 'Págine de redirecterion',
-'lastmodifiedat' => 'Ti-ci págine ha esser redactet in ultim li $1, clocca $2.',
+'lastmodifiedat' => 'Ti-ci págine esset redactet in ultim li $1, clocca $2.',
 'viewcount' => 'Ti págine ha esset accesset {{PLURAL:$1|un vez|$1 vezes}}.',
 'protectedpage' => 'Un protectet págine',
 'jumpto' => 'Saltar a:',
@@ -640,7 +641,7 @@ Tis argumentes have esset omisset.",
 'next' => 'prox',
 'last' => 'ant',
 'page_first' => 'prim',
-'page_last' => 'ultim',
+'page_last' => 'ultima',
 'histlegend' => "Diferenties de selection: marca li buxes de radio de li revisiones por comparar e batte \"intrar\" o li buton in li funde.<br />
 Legende: '''({{int:cur}})''' = diferenties che ultim revision, '''({{int:last}})''' = diferenties que antecede li revision, '''{{int:minoreditletter}}''' = redaction minori.",
 'history-fieldset-title' => 'Historie de navigation',
index a54b20f..d28d94f 100644 (file)
@@ -32,7 +32,7 @@ $messages = array(
 'tog-editsection' => 'ХӀара дакъа "хувца" яха Ӏинк хьахьокха',
 'tog-editsectiononrightclick' => 'Декъам хувца кертмугӀа аьтта цлицака я (JavaScript)',
 'tog-showtoc' => 'Кортанче хьокха (кхьаннена дукхагӀа кертмугӀанаш йoлa оагӀувна)',
-'tog-rememberpassword' => '(укх $1 {{PLURAL:$1|ден|деношк}}) мара са чувалара/ялара дагалоаца дезаш дац',
+'tog-rememberpassword' => '(укх $1 {{PLURAL:$1|1=ден|деношк}}) мара са чувалара/ялара дагалоаца дезаш дац',
 'tog-watchcreations' => 'Аз яь йола оагӀувнаш теркама дагарле йолач чуяьккха',
 'tog-watchdefault' => 'Аз хийца йола оагӀувнаш теркама дагарле йолач чуяьккха',
 'tog-watchmoves' => 'Аз цӀи хийца йола оагӀувнаш теркама дагарле йолач чуяьккха',
@@ -119,19 +119,19 @@ $messages = array(
 'dec' => 'Чант.',
 
 # Categories related messages
-'pagecategories' => '{{PLURAL:$1|Катаг|Катагаш}}',
+'pagecategories' => '{{PLURAL:$1|1=Катаг|Катагаш}}',
 'category_header' => '"$1" Катагачар оагӀувнаш',
 'subcategories' => 'Чуракатагаш',
 'category-media-header' => '"$1" Катагачар паьлаш',
 'category-empty' => "''Укх катагчоа цхьаккха оагӀувнаш е паьлаш яц.''",
-'hidden-categories' => '{{PLURAL:$1|Къайла катаг|Къайла катагаш}}',
+'hidden-categories' => '{{PLURAL:$1|1=Къайла катаг|Къайла катагаш}}',
 'hidden-category-category' => 'Къайла катагаш',
-'category-subcat-count' => '{{PLURAL:$2|Йола катаг тӀехьара бухкатаг чулоаца.|{{PLURAL:$1|$1 бухкатаг хьахьекха я|$1 бухкатагаш хьахьекха я}} $2 йолачара.}}',
-'category-subcat-count-limited' => 'Укх катагий {{PLURAL:$1|$1 кӀалкатаг|$1 кӀалкатагаш}}.',
-'category-article-count' => '{{PLURAL:$2|Йола цатег цхьа оагӀув мара чулоацац.|{{PLURAL:$1|$1 оагӀув хьахекха я|$1 оагӀувнаш хьахекха я}} укх цатега $2 йолачарах.}}',
-'category-article-count-limited' => 'Укх катагач {{PLURAL:$1|$1 оагӀув|$1 оагӀувнаш|}}.',
-'category-file-count' => '{{PLURAL:$2|Укх цатего ца паьла мара чулоацац.|{{PLURAL:$1|$1 паьла хьахьекха я|$1 паьлаш хьахьекха я}} укх цатегий $2 долачаьрахь.}}',
-'category-file-count-limited' => 'Укх катагач {{PLURAL:$1|$1 паьл|$1 паьлаш}}.',
+'category-subcat-count' => '{{PLURAL:$2|Йола катаг тӀехьара бухкатаг чулоаца.|{{PLURAL:$1|1=$1 бухкатаг хьахьекха я|$1 бухкатагаш хьахьекха я}} $2 йолачара.}}',
+'category-subcat-count-limited' => 'Укх катагий {{PLURAL:$1|1=$1 кӀалкатаг|$1 кӀалкатагаш}}.',
+'category-article-count' => '{{PLURAL:$2|Йола цатег цхьа оагӀув мара чулоацац.|{{PLURAL:$1|1=$1 оагӀув хьахекха я|$1 оагӀувнаш хьахекха я}} укх цатега $2 йолачарах.}}',
+'category-article-count-limited' => 'Укх катагач {{PLURAL:$1|1=$1 оагӀув|$1 оагӀувнаш}}.',
+'category-file-count' => '{{PLURAL:$2|Укх цатего ца паьла мара чулоацац.|{{PLURAL:$1|1=$1 паьла хьахьекха я|$1 паьлаш хьахьекха я}} укх цатегий $2 долачаьрахь.}}',
+'category-file-count-limited' => 'Укх катагач {{PLURAL:$1|1=$1 паьл|$1 паьлаш}}.',
 'listingcontinuesabbrev' => 'дӀахо',
 'index-category' => 'ДIахьожаман оагӀувнаш',
 'noindex-category' => 'ДIахьожаманза оагӀувнаш',
@@ -195,8 +195,8 @@ $messages = array(
 'create-this-page' => 'Ep oагӀув хьае',
 'delete' => 'ДӀадаккха',
 'deletethispage' => 'Ер оагӀув дӀаяьккха',
-'undelete_short' => 'Меттаоттае {{PLURAL:$1|хувцам|$1 хувцамаш}}',
-'viewdeleted_short' => 'БӀаргтасса {{PLURAL:$1|дӀадаьккха хувцам тӀа|$1 дӀадаьккха хувцамаш тӀа}}',
+'undelete_short' => 'Меттаоттае {{PLURAL:$1|1=хувцам|$1 хувцамаш}}',
+'viewdeleted_short' => 'БӀаргтасса {{PLURAL:$1|1=дӀадаьккха хувцам тӀа|$1 дӀадаьккха хувцамаш тӀа}}',
 'protect' => 'Лораде',
 'protect_change' => 'хувца',
 'protectthispage' => 'Лорае ер оагӀув',
@@ -224,7 +224,7 @@ $messages = array(
 'redirectedfrom' => '($1 тӀера хьадейта да)',
 'redirectpagesub' => 'ДӀа-хьа дайта оагӀув',
 'lastmodifiedat' => 'Укх оагӀув тӀехьара  хувцам: $2, $1.',
-'viewcount' => 'Укх оагӀув тӀа бӀаргтасса хиннад {{PLURAL:$1|цхьазза|$1 шозза}}.',
+'viewcount' => 'Укх оагӀув тӀа бӀаргтасса хиннад {{PLURAL:$1|1=цхьазза|$1 шозза}}.',
 'protectedpage' => 'Лорама оагӀув',
 'jumpto' => 'Укхаза дехьа гӀо:',
 'jumptonavigation' => 'никътохкарг',
@@ -254,7 +254,7 @@ $messages = array(
 
 'badaccess' => 'Чуваларa гӀалат',
 'badaccess-group0' => 'Оаш хьадийха дулархIам шун де йишяц.',
-'badaccess-groups' => 'Дахта кхоачашдар {{PLURAL:$2|тоабачара|тоабашкара}} $1 дакъалаьцархой мара де бокъо яц.',
+'badaccess-groups' => 'Дахта кхоачашдар {{PLURAL:$2|1=тоабачара|тоабашкара}} $1 дакъалаьцархой мара де бокъо яц.',
 
 'versionrequired' => '$1 MediaWiki доржам эша',
 'versionrequiredtext' => 'Укх оагӀув бeлха MediaWiki доржамаш эша $1. Хьажа [[Special:Version|version page]].',
@@ -276,7 +276,7 @@ $messages = array(
 'collapsible-expand' => 'хьадоаржаде',
 'thisisdeleted' => '$1 бӀаргтасса е юхаметтаоттаде?',
 'viewdeleted' => '$1 бӀаргтасса?',
-'restorelink' => '{{PLURAL:$1|дӀаяьккха хувцам|$1 дӀаяьккха хувцамаш}}',
+'restorelink' => '{{PLURAL:$1|1=дӀаяьккха хувцам|$1 дӀаяьккха хувцамаш}}',
 'feedlinks' => 'Цу тайпара:',
 'site-rss-feed' => '$1 RSS мугӀ',
 'site-atom-feed' => '$1 Atom мугӀ',
@@ -325,7 +325,7 @@ $messages = array(
 'yourname' => 'Дакъалаьцархочунна цӀи:',
 'yourpassword' => 'КъайладIоагӀа:',
 'yourpasswordagain' => 'КъайладIоагӀа юха Ӏоязаде:',
-'remembermypassword' => '(укх $1 {{PLURAL:$1|ден|деношкахь}}) мара са чувалара/чуялара дагалоаца дезаш дац',
+'remembermypassword' => '(укх $1 {{PLURAL:$1|1=ден|деношкахь}}) мара са чувалара/чуялара дагалоаца дезаш дац',
 'yourdomainname' => 'Шун цӀеноагӀув:',
 'login' => 'Чувала/яла',
 'nav-login-createaccount' => 'ЦӀи яьккха/Ший oагӀув ела',
@@ -420,12 +420,12 @@ $messages = array(
 Наггахь санна шоай яздамаш пурам доацаш мала волашву саго хувца е кхы дола моттиге яздердолаш, безам беци, укхаз Ӏочуцаяздеча, дикаьгӀа да.<br />
 Оаш дош лу, даь дола хувцама да волга/йолга, е оаш пурам долаш Ӏочуяздеш да кхычера меттигара шоай яздамаш/хоамаш.
 '''Яздархой бокъоца лорадеш дола хӀамаш, цара пурам доацаш, Ӏочумаязаде!'''",
-'templatesused' => 'Укх бӀаргоагӀувни оагӀув тӀа лелаяь {{PLURAL:$1|Куцкеп|Куцкепаш}}:',
-'templatesusedpreview' => 'Хьалхе бӀаргтассама оагӀув тӀа леладеш дола {{PLURAL:$1|Куцкеп|Куцкепаш}}:',
+'templatesused' => 'Укх бӀаргоагӀувни оагӀув тӀа лелаяь {{PLURAL:$1|1=Куцкеп|Куцкепаш}}:',
+'templatesusedpreview' => 'Хьалхе бӀаргтассама оагӀув тӀа леладеш дола {{PLURAL:$1|1=Куцкеп|Куцкепаш}}:',
 'template-protected' => '(лорам лаьца)',
 'template-semiprotected' => '(дакъа-лорам)',
-'hiddencategories' => 'Ер оагӀув укх {{PLURAL:$1|къайла цатегаца|къайла цатегашца}} дакъа лоаца:',
-'permissionserrorstext-withaction' => '$2 де бокъо яц {{PLURAL:$1|из бахьан долаш|из бахьанаш долаш}}:',
+'hiddencategories' => 'Ер оагӀув укх {{PLURAL:$1|1=къайла цатегаца|къайла цатегашца}} дакъа лоаца:',
+'permissionserrorstext-withaction' => '$2 де бокъо яц {{PLURAL:$1|1=из бахьан долаш|из бахьанаш долаш}}:',
 'recreate-moveddeleted-warn' => "'''Зем бе! Шо хьалххе дIайоаккхаш хинна оагӀув хьае гӀерта.'''
 
 Хьажа, бокъонцахь езаш йолга.
@@ -495,7 +495,7 @@ $messages = array(
 'lineno' => 'МугI $1:',
 'compareselectedversions' => 'Хьаржа доржамаша тарона тIа хьажа',
 'editundo' => 'юхавала/яла',
-'diff-multi' => '({{PLURAL:$1|$1 юкъара доржам хьахьекха дац|$1 юкъара доржамаш хьахьекха дац}} {{PLURAL:$2|$2 дакъалаьцархочунна|$2 дакъалаьцархоший}})',
+'diff-multi' => '({{PLURAL:$1|1=$1 юкъара доржам хьахьекха дац|$1 юкъара доржамаш хьахьекха дац}} {{PLURAL:$2|1=$2 дакъалаьцархочунна|$2 дакъалаьцархоший}})',
 
 # Search results
 'searchresults' => 'Тохкама гIулакхахилар',
@@ -503,9 +503,9 @@ $messages = array(
 'notextmatches' => 'ОагIувнаша яздамий вIашагIакхетараш дац',
 'prevn' => '{{PLURAL:$1|хьалхйоаг|ар $1|хьалхйоаг|араш $1|хьалхйоаг|араш $1}}',
 'nextn' => '{{PLURAL:$1|тlехьайоагlар $1|тlехьайоагlараш $1|тlехьайоагlараш $1}}',
-'prevn-title' => '{{PLURAL:$1|$1 хьалхара йоазув|$1 хьалхара йоазувнаш}}',
-'nextn-title' => '{{PLURAL:$1|$1 тIехьара йоазув|$1 тIехьара йоазувнаш}}',
-'shown-title' => 'Укх оагIувни $1 {{PLURAL:$1|йоазув|йоазувнаш}} хьахьокха',
+'prevn-title' => '{{PLURAL:$1|1=$1 хьалхара йоазув|$1 хьалхара йоазувнаш}}',
+'nextn-title' => '{{PLURAL:$1|1=$1 тIехьара йоазув|$1 тIехьара йоазувнаш}}',
+'shown-title' => 'Укх оагIувни $1 {{PLURAL:$1|1=йоазув|йоазувнаш}} хьахьокха',
 'viewprevnext' => '($1 {{int:pipe-separator}} $2) ($3) хьажа',
 'searchmenu-exists' => "'''Укх масса-хьахьоадайтамач ер оаг|ув \"[[:\$1]]\" я'''",
 'searchmenu-new' => "'''Укх \"[[:\$1]]\" масса-хьахоадайтамач оагIув хьае!'''",
@@ -519,8 +519,8 @@ $messages = array(
 'searchprofile-images-tooltip' => 'Паьлий лахар',
 'searchprofile-everything-tooltip' => 'Массадола оагIувний лахар (дувцама оагIувнаш чулоацаш)',
 'searchprofile-advanced-tooltip' => 'Iочуязаяь цIераренашках лаха',
-'search-result-size' => ' $1 ({{PLURAL:$2|1 дош|$2 дешаш}})',
-'search-result-category-size' => '{{PLURAL:$1|$1 дакъа|$1 дакъаш}} ({{PLURAL:$2|$2 кIалцатег|$2 кIалцатегаш}}, {{PLURAL:$3|$3 паьла|$3 паьлий|$3 паьлий}})',
+'search-result-size' => ' $1 ({{PLURAL:$2|1=1 дош|$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',
@@ -530,7 +530,7 @@ $messages = array(
 'search-relatedarticle' => 'шоайл дола',
 'searchrelated' => 'гаргара',
 'searchall' => 'деррига',
-'showingresultsheader' => "{{PLURAL:$5|'''$1''' толамче укх '''$3''' долачарах|'''$1 — $2''' толамчаш укх '''$3''' долачарах}} '''$4'''а",
+'showingresultsheader' => "{{PLURAL:$5|1='''$1''' толамче укх '''$3''' долачарах|'''$1 — $2''' толамчаш укх '''$3''' долачарах}} '''$4'''а",
 'search-nonefound' => 'ДIахаттама нийсамаш корадаьдац.',
 'powersearch-legend' => ' Доккха тахкар',
 'powersearch-ns' => ' ЦIерий аренашкахь лахар',
@@ -620,7 +620,7 @@ $messages = array(
 'action-edit' => 'Ер оагIув хувца',
 
 # Recent changes
-'nchanges' => '$1 {{PLURAL:$1|хувцам|хувцамаш}}',
+'nchanges' => '$1 {{PLURAL:$1|1=хувцам|хувцамаш}}',
 'recentchanges' => 'Керда хувцамаш',
 'recentchanges-legend' => 'Керда хувцамий оттамаш',
 'recentchanges-summary' => 'КIалхагIа лоарамий доаламе тIехьара оагIувний хувцамаш дIаязадаь да{{grammar:genitive|{{SITENAME}}}}.',
@@ -695,7 +695,7 @@ $messages = array(
 'filehist-comment' => 'ХIамоалар',
 'filehist-missing' => 'Паьла йоацаш я',
 'imagelinks' => 'Паьлий пайда эца',
-'linkstoimage' => '{{PLURAL:$1|ТIехьайоагIа $1 оагIув Iинк ду|ТIехьайоагIа $1 оагIувнаш Iинкаш ду}} укх паьла тIа:',
+'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чара я, кхыдола хьахьоадайтамача хайрамбе йийш йолаш да.
@@ -729,8 +729,8 @@ $messages = array(
 'withoutinterwiki-submit' => 'Хьахьокха',
 
 # Miscellaneous special pages
-'nbytes' => '$1 {{PLURAL:$1|бIат|бIаташ}}',
-'nmembers' => '$1 {{PLURAL:$1|дакъалаьцархо|дакъалаьцархой}}',
+'nbytes' => '$1 {{PLURAL:$1|1=бIат|бIаташ}}',
+'nmembers' => '$1 {{PLURAL:$1|1=дакъалаьцархо|дакъалаьцархой}}',
 'prefixindex' => 'ОагIувнаший хьалхера цIи хьагойтар',
 'shortpages' => 'Лоаца оагIувнаш',
 'longpages' => 'Доккхий оагIувнаш',
@@ -738,8 +738,8 @@ $messages = array(
 'newpages' => 'Керда оагIувнаш',
 'move' => 'ЦIи хувца',
 'movethispage' => 'Укх оагIува цIи хувца',
-'pager-newer-n' => '{{PLURAL:$1|кеÑ\80дагIа Ð´Ð°Ñ\80а|кеÑ\80дагIа Ð´Ð°Ñ\80аÑ\88|кеÑ\80дагIа Ð´Ð¾Ð»Ð°Ñ\87аÑ\8cÑ\80аÑ\85Ñ\8c}} $1',
-'pager-older-n' => '{{PLURAL:$1|кÑ\8aаÑ\8cнаÑ\80а Ð´Ð°Ñ\80а|кÑ\8aаÑ\8cнаÑ\80а Ð´Ð°Ñ\80аÑ\88|кÑ\8aаÑ\8cнаÑ\80а Ð´Ð¾Ð»aÑ\87аÑ\8cÑ\80аÑ\85Ñ\8c}} $1',
+'pager-newer-n' => '{{PLURAL:$1|кеÑ\80дагIа Ð´Ð°Ñ\80а|кеÑ\80дагIа Ð´Ð¾Ð»Ð°Ñ\87аÑ\8cÑ\80аÑ\85Ñ\8c|кеÑ\80дагIа Ð´Ð°Ñ\80аÑ\88}} $1',
+'pager-older-n' => '{{PLURAL:$1|кÑ\8aаÑ\8cнаÑ\80а Ð´Ð°Ñ\80а|кÑ\8aаÑ\8cнаÑ\80а Ð´Ð¾Ð»aÑ\87аÑ\8cÑ\80аÑ\85Ñ\8c|кÑ\8aаÑ\8cнаÑ\80а Ð´Ð°Ñ\80аÑ\88}} $1',
 
 # Book sources
 'booksources' => 'Китабий гIувам',
@@ -782,7 +782,7 @@ $messages = array(
 'watch' => 'Тохкам бе',
 'watchthispage' => 'Укх оагIува теркам бе',
 'unwatch' => 'Лора ма де',
-'watchlist-details' => 'Шун теркама дагарченгахь йола  $1 {{PLURAL:$1|оагIув|оагIувнаш}}, дувцама оагIувнаш ца лоархIаш.',
+'watchlist-details' => 'Шун теркама дагарченгахь йола  $1 {{PLURAL:$1|1=оагIув|оагIувнаш}}, дувцама оагIувнаш ца лоархIаш.',
 'wlshowlast' => 'Тlехьара $1 сахьаташ $2 денош $3 хьахьокха',
 'watchlist-options' => 'Зем баккха дагарена хувцамаш',
 
@@ -816,7 +816,7 @@ $messages = array(
 'protect_expiry_old' => 'Чакхайоала ха - яха зама я.',
 'protect-text' => "'''$1''' укхаз шоана шоай оагIув лорамлагIа хувца a бIаргтасса a йийш хургья.",
 'protect-locked-access' => "Шун лархIама йоазуви нидза кхоачаш бац оагIувни лорама лагIа хувца. '''$1''' оагIувни дIаоттамаш:",
-'protect-cascadeon' => '{{PLURAL:$1|КIалхахь хьагойташ йола оагIувчу|КIалхахь хьагойташ йола оагIувнашчу}} ер оагIув чуяккха халарахь, лорам Iоттая я, хурхала лорам Iоттая я. Укх оагIувни лорама лагIа хувца йийш йолаш я, амма хурхала лорам хувцлургдац.',
+'protect-cascadeon' => '{{PLURAL:$1|1=КIалхахь хьагойташ йола оагIувчу|КIалхахь хьагойташ йола оагIувнашчу}} ер оагIув чуяккха халарахь, лорам Iоттая я, хурхала лорам Iоттая я. Укх оагIувни лорама лагIа хувца йийш йолаш я, амма хурхала лорам хувцлургдац.',
 'protect-default' => 'Лорамза',
 'protect-fallback' => '"$1" пурам эша',
 'protect-level-autoconfirmed' => 'Керда а, дакъалаьцабоацачаьрахь а лораде',
@@ -871,8 +871,8 @@ $messages = array(
 'isredirect' => 'дIа-хьа оагIув',
 'istemplate' => 'чудаккхар',
 'isimage' => 'паьла Iинк',
-'whatlinkshere-prev' => '{{PLURAL:$1|хьалхайоагIа|хьалхайоагIараш}} $1',
-'whatlinkshere-next' => '{{PLURAL:$1|тIехьайоагIа|тIехьайоагIараш}} $1',
+'whatlinkshere-prev' => '{{PLURAL:$1|1=хьалхайоагIа|хьалхайоагIараш}} $1',
+'whatlinkshere-next' => '{{PLURAL:$1|1=тIехьайоагIа|тIехьайоагIараш}} $1',
 'whatlinkshere-links' => '← Iинкаш',
 'whatlinkshere-hideredirs' => '$1 дIа-хьа чуяьккхамаш',
 'whatlinkshere-hidetrans' => '$1 чуяьккхамаш',
@@ -1123,7 +1123,7 @@ $messages = array(
 'tags-tag' => 'Йоазон цIи',
 'tags-hitcount-header' => 'Белгалаяь хувцамаш',
 'tags-edit' => 'хувца',
-'tags-hitcount' => '$1 {{PLURAL:$1|хувцам|хувцамаш}}',
+'tags-hitcount' => '$1 {{PLURAL:$1|1=хувцам|хувцамаш}}',
 
 # Special:ComparePages
 'compare-page1' => '1. ОагIув',
index fe900e3..20f7fce 100644 (file)
@@ -1620,7 +1620,7 @@ Tölvupóstfang þitt er ekki gefið upp þegar aðrir notendur hafa samband vi
 'recentchanges-feed-description' => 'Hér er hægt að fylgjast með nýlegum breytingum á {{SITENAME}}.',
 'recentchanges-label-newpage' => 'Þessi breyting skapaði nýja síðu',
 'recentchanges-label-minor' => 'Þetta er minniháttar breyting',
-'recentchanges-label-bot' => 'Þessi breytingar var gerð af vélmenni',
+'recentchanges-label-bot' => 'Þessi breyting var gerð af vélmenni',
 'recentchanges-label-unpatrolled' => 'Þessi breyting hefur ekki verið yfirfarin',
 'recentchanges-legend-newpage' => '(sjá einng [[Special:NewPages|lista yfir nýjar síður]])',
 'rcnotefrom' => "Að neðan eru breytingar síðan '''$2''' (allt að '''$1''' sýndar).",
@@ -2011,7 +2011,7 @@ Leitarstrengurinn á að vera á þessu formi: efnistag/myndasnið, t.d. <code>i
 'unusedtemplateswlh' => 'aðrir tenglar',
 
 # Random page
-'randompage' => 'Handahófsvalin grein',
+'randompage' => 'Handahófsvalin síða',
 'randompage-nopages' => 'Það eru engar síður í {{PLURAL:$2|nafnrýminu|nafnrýmunum}}: $1.',
 
 # Random page in category
index 82b42f5..a27c70c 100644 (file)
@@ -944,7 +944,7 @@ Dovresti farlo se le hai accidentalmente condivise con qualcuno o se la tua uten
 'preview' => 'Anteprima',
 'showpreview' => 'Visualizza anteprima',
 'showlivepreview' => "Funzione ''Live preview''",
-'showdiff' => 'Mostra cambiamenti',
+'showdiff' => 'Mostra modifiche',
 'anoneditwarning' => "'''Attenzione:''' Accesso non effettuato. Nella cronologia della pagina verrà registrato il tuo indirizzo IP.",
 'anonpreviewwarning' => "''Non è stato eseguito il login. Salvando la pagina, il proprio indirizzo IP sarà registrato nella cronologia.''",
 'missingsummary' => "'''Attenzione:''' non è stato specificato l'oggetto di questa modifica. Premendo di nuovo \"{{int:savearticle}}\" la modifica verrà salvata con l'oggetto vuoto.",
@@ -1150,6 +1150,9 @@ Controlla le differenze mostrate sotto fra le due versioni per essere certo che
 'cantcreateaccount-text' => "La registrazione è stata bloccata da [[User:$3|$3]] per questo indirizzo IP ('''$1''').
 
 La motivazione del blocco fornita da $3 è la seguente: ''$2''",
+'cantcreateaccount-range-text' => "La registrazione da indirizzi IP nell'intervallo '''$1''', che include il tuo ('''$4'''), è stata bloccata da [[User:$3|$3]].
+
+La motivazione fornita da $3 è ''$2''",
 
 # History pages
 'viewpagelogs' => 'Visualizza i log relativi a questa pagina.',
@@ -1673,6 +1676,7 @@ Il tuo indirizzo non viene rivelato quando gli altri utenti ti contattano.',
 'recentchanges-label-bot' => 'Questa modifica è stata effettuata da un bot',
 'recentchanges-label-unpatrolled' => 'Questa modifica non è stata ancora verificata',
 'recentchanges-label-plusminus' => 'La dimensione della pagina è cambiata di questo numero di byte',
+'recentchanges-legend-heading' => "'''Legenda:'''",
 'recentchanges-legend-newpage' => "(vedi anche [[Special:NewPages|l'elenco delle nuove pagine]])",
 'recentchanges-legend-plusminus' => "(''±123'')",
 'rcnotefrom' => "Di seguito sono elencate le modifiche apportate a partire da '''$2''' (fino a '''$1''').",
@@ -2163,6 +2167,7 @@ I redirect <del>cancellati</del> sono stati corretti.',
 'protectedpages' => 'Pagine protette',
 'protectedpages-indef' => 'Solo protezioni infinite',
 'protectedpages-cascade' => 'Solo protezioni ricorsive',
+'protectedpages-noredirect' => 'Nascondi redirect',
 'protectedpagesempty' => 'Al momento non vi sono pagine protette',
 'protectedtitles' => 'Titoli protetti',
 'protectedtitlesempty' => 'Al momento non esistono titoli protetti con i parametri specificati.',
@@ -2436,6 +2441,7 @@ Consultare il log delle $2 per un elenco delle pagine cancellate di recente.',
 'delete-edit-reasonlist' => 'Modifica i motivi di cancellazione',
 'delete-toobig' => 'La cronologia di questa pagina è molto lunga (oltre $1 {{PLURAL:$1|revisione|revisioni}}). La sua cancellazione è stata limitata per evitare di creare accidentalmente dei problemi di funzionamento al database di {{SITENAME}}.',
 'delete-warning-toobig' => 'La cronologia di questa pagina è molto lunga (oltre $1 {{PLURAL:$1|revisione|revisioni}}). La sua cancellazione può creare dei problemi di funzionamento al database di {{SITENAME}}; procedere con cautela.',
+'deleting-backlinks-warning' => "'''Attenzione:''' altre pagine contengono collegamenti alla pagina che stai per cancellare.",
 
 # Rollback
 'rollback' => 'Annulla le modifiche',
@@ -3757,7 +3763,7 @@ Per favore, conferma che vuoi veramente ricreare questa pagina.",
 
 # Language selector for translatable SVGs
 'img-lang-default' => '(lingua predefinita)',
-'img-lang-info' => 'Converti questa immagine in $1 $2.',
+'img-lang-info' => 'Converti questa immagine in $1. $2',
 'img-lang-go' => 'Vai',
 
 # Table pager
@@ -3866,14 +3872,15 @@ Questo programma deve essere distribuito assieme ad [{{SERVER}}{{SCRIPTPATH}}/CO
 'version-entrypoints-scriptpath' => '[https://www.mediawiki.org/wiki/Manual:$wgScriptPath Percorso script]',
 
 # Special:Redirect
-'redirect' => 'Reindirizzamento da file, utente o ID versione',
+'redirect' => 'Reindirizzamento da file, utente, pagina o versione',
 '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 a un utente (specificando un ID utente numerico).
-Esempi: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revision/328429]], or [[{{#Special:Redirect}}/user/101]].',
+'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) o a un utente (specificando un ID utente numerico).
+Esempi: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], or [[{{#Special:Redirect}}/user/101]].',
 'redirect-submit' => 'Vai',
 'redirect-lookup' => 'Ricerca:',
 'redirect-value' => 'Valore:',
 'redirect-user' => 'ID utente',
+'redirect-page' => 'ID della pagina',
 'redirect-revision' => 'Versione pagina',
 'redirect-file' => 'Nome del file',
 'redirect-not-exists' => 'Valore non trovato',
@@ -4066,6 +4073,7 @@ Esempi: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revi
 'api-error-overwrite' => 'Sovrascrivere un file esistente non è consentito.',
 'api-error-stashfailed' => 'Errore interno: il server non è riuscito a memorizzare il documento temporaneo.',
 'api-error-publishfailed' => 'Errore interno: il server non è riuscito a pubblicare il documento temporaneo.',
+'api-error-stasherror' => 'Si è verificato un errore durante il caricamento del file in stash.',
 'api-error-timeout' => 'Il server non ha risposto entro il tempo previsto.',
 'api-error-unclassified' => 'Si è verificato un errore sconosciuto.',
 'api-error-unknown-code' => 'Errore sconosciuto: "$1"',
@@ -4115,10 +4123,12 @@ vale a dire praticamente tutto ciò che si trova tra doppie parentesi graffe.',
 'expand_templates_input' => 'Testo da espandere:',
 'expand_templates_output' => 'Risultato',
 'expand_templates_xml_output' => 'Output in formato XML',
+'expand_templates_html_output' => 'Risultato HTML',
 'expand_templates_ok' => 'OK',
 'expand_templates_remove_comments' => 'Ignora i commenti',
 'expand_templates_remove_nowiki' => 'Elimina il tag <nowiki> nel risultato',
 'expand_templates_generate_xml' => 'Mostra albero sintattico XML',
+'expand_templates_generate_rawhtml' => 'Mostra HTML',
 'expand_templates_preview' => 'Anteprima',
 
 );
index 224e09b..2b3034c 100644 (file)
@@ -1085,7 +1085,7 @@ $2
 
 $1または他の[[{{MediaWiki:Grouppage-sysop}}|管理者]]にこのブロックについて問い合わせることができます。
 
\81\9fã\81 ã\81\97ã\80\81[[Special:Preferences|å\80\8b人設å®\9a]]ã\81«æ­£ã\81\97ã\81\84ã\83¡ã\83¼ã\83«ã\82¢ã\83\89ã\83¬ã\82¹ã\81\8cç\99»é\8c²ã\81\95ã\82\8cã\81¦ã\81\84ã\81ªã\81\84å ´å\90\88ã\80\81ã\81¾ã\81\9fã\81¯ã\83¡ã\83¼ã\83«é\80\81ä¿¡ã\81\8cã\83\96ã\83­ã\83\83ã\82¯ã\81\95ã\82\8cã\81¦ã\81\84ã\82\8bå ´å\90\88ã\80\81ã\83¡ã\83¼ã\83«é\80\81ä¿¡æ©\9fè\83½ã\81\8c使ã\81\88ないことに注意してください。
\81\9fã\81 ã\81\97ã\80\81[[Special:Preferences|å\80\8b人設å®\9a]]ã\81«æ­£ã\81\97ã\81\84ã\83¡ã\83¼ã\83«ã\82¢ã\83\89ã\83¬ã\82¹ã\81\8cç\99»é\8c²ã\81\95ã\82\8cã\81¦ã\81\84ã\81ªã\81\84å ´å\90\88ã\80\81ã\81¾ã\81\9fã\81¯ã\83¡ã\83¼ã\83«é\80\81ä¿¡ã\81\8cã\83\96ã\83­ã\83\83ã\82¯ã\81\95ã\82\8cã\81¦ã\81\84ã\82\8bå ´å\90\88ã\80\81ã\80\8cã\81\93ã\81®å\88©ç\94¨è\80\85ã\81«ã\83¡ã\83¼ã\83«ã\82\92é\80\81ä¿¡ã\80\8dæ©\9fè\83½ã\82\92使ç\94¨ã\81§ã\81\8dないことに注意してください。
 
 現在ご使用中のIPアドレスは$3 、このブロックIDは#$5です。
 お問い合わせの際は、上記の情報を必ず書いてください。",
@@ -1274,9 +1274,12 @@ $1または他の[[{{MediaWiki:Grouppage-sysop}}|管理者]]にこのブロッ
 
 # Account creation failure
 'cantcreateaccounttitle' => 'アカウントを作成できません',
-'cantcreateaccount-text' => "このIPアドレス('''$1''')からのアカウント作成は[[User:$3|$3]]によってブロックされています。
+'cantcreateaccount-text' => "この IP アドレス ('''$1''') からのアカウント作成は、[[User:$3|$3]] によってブロックされています。
 
-$3が示した理由: ''$2''",
+$3 が示した理由: ''$2''",
+'cantcreateaccount-range-text' => "この IP アドレス ('''$4''') を含む、IP アドレス範囲 '''$1''' からのアカウント作成は、[[User:$3|$3]] によってブロックされています。
+
+$3 が示した理由: ''$2''",
 
 # History pages
 'viewpagelogs' => 'このページの記録を閲覧',
@@ -1817,13 +1820,14 @@ $1 {{PLURAL:$1|文字}}以下である必要があります。',
 'recentchanges-label-bot' => 'ボットによる編集',
 'recentchanges-label-unpatrolled' => '巡回されていない編集',
 'recentchanges-label-plusminus' => 'ページ サイズの増減 (バイト単位)',
+'recentchanges-legend-heading' => "'''凡例:'''",
 'recentchanges-legend-newpage' => '([[Special:NewPages|新しいページ一覧]]も参照)',
 'recentchanges-legend-plusminus' => "(''±123'')",
 'rcnotefrom' => "以下は'''$2'''以降の更新です (最大 '''$1''' 件)。",
 'rclistfrom' => '$1以降の更新を表示する',
 'rcshowhideminor' => '細部の編集を$1',
 'rcshowhidebots' => 'ボットを$1',
-'rcshowhideliu' => 'ログイン利用者を$1',
+'rcshowhideliu' => '登録利用者を$1',
 'rcshowhideanons' => '匿名利用者を$1',
 'rcshowhidepatr' => '巡回された編集を$1',
 'rcshowhidemine' => '自分の編集を$1',
@@ -2340,6 +2344,7 @@ contenttype/subtypeの形式で入力してください (例: <code>image/jpeg</
 'protectedpages' => '保護されているページ',
 'protectedpages-indef' => '無期限保護のみ',
 'protectedpages-cascade' => 'カスケード保護のみ',
+'protectedpages-noredirect' => 'リダイレクトを隠す',
 'protectedpagesempty' => '指定した条件で保護中のページは現在ありません。',
 'protectedtitles' => '作成保護されているページ名',
 'protectedtitlesempty' => 'これらの引数で現在保護されているページはありません。',
@@ -2620,6 +2625,7 @@ $UNWATCHURL
 'delete-warning-toobig' => 'このページには、 $1版を超える編集履歴があります。
 削除すると、{{SITENAME}}のデータベース処理に大きな負荷がかかります。
 十分に注意してください。',
+'deleting-backlinks-warning' => "'''警告:''' 削除しようとしているページは、他のページからリンクされています。",
 
 # Rollback
 'rollback' => '編集を巻き戻し',
@@ -2928,7 +2934,7 @@ $1 のブロックの理由は「''$2''」です。",
 'ipb_expiry_invalid' => '有効期限が無効です。',
 'ipb_expiry_temp' => '利用者名秘匿のブロックは、無期限ブロックになります。',
 'ipb_hide_invalid' => 'このアカウントを秘匿できません。編集回数が非常に多いためだと思われます。',
-'ipb_already_blocked' => '「$1」は既にブロックされています',
+'ipb_already_blocked' => '「$1」は既にブロックされています',
 'ipb-needreblock' => '$1 は既にブロックされています。設定を変更しますか?',
 'ipb-otherblocks-header' => 'その他の{{PLURAL:$1|ブロック}}',
 'unblock-hideuser' => '利用者名が隠されているため、この利用者のブロックを解除できません。',
@@ -2947,8 +2953,8 @@ $1 のブロックの理由は「''$2''」です。",
 'xffblockreason' => 'X-Forwarded-For ヘッダーに含まれている IP アドレスがブロックされています。これはあなたのものか、あなたが利用しているプロキシサーバーのものです。元のブロックの理由は: $1',
 'cant-see-hidden-user' => 'ブロックしようとしている利用者は、既にブロックされ隠されています。
 あなたには hideuser 権限がないため、この利用者のブロックの閲覧/編集はできません。',
-'ipbblocked' => '自分自身をブロックしているため、他の利用者のブロックやブロック解除はできません',
-'ipbnounblockself' => '自分自身のブロックは解除できません',
+'ipbblocked' => 'あなた自身がブロックされているため、他の利用者のブロックやブロック解除はできません。',
+'ipbnounblockself' => 'あなたには自身をブロック解除する権限がありません。',
 
 # Developer tools
 'lockdb' => 'データベースのロック',
@@ -4055,8 +4061,8 @@ $5
 
 # Language selector for translatable SVGs
 'img-lang-default' => '(既定の言語)',
-'img-lang-info' => 'この画像を $1 で $2',
-'img-lang-go' => '描画',
+'img-lang-info' => 'この画像を $1 で描画する。$2',
+'img-lang-go' => '実行',
 
 # Table pager
 'ascending_abbrev' => '昇順',
@@ -4227,13 +4233,14 @@ MediaWikiは、有用であることを期待して配布されていますが
 'version-entrypoints-scriptpath' => '[https://www.mediawiki.org/wiki/Manual:$wgScriptPath/ja スクリプトパス]',
 
 # Special:Redirect
-'redirect' => 'ファイル名、利用者ID、版IDでの転送',
+'redirect' => 'ファイル名、利用者ID、ページID、版IDでの転送',
 'redirect-legend' => 'ファイルまたはページヘの転送',
-'redirect-summary' => 'ã\81\93ã\81®ç\89¹å\88¥ã\83\9aã\83¼ã\82¸ã\81¯ã\80\81ã\83\95ã\82¡ã\82¤ã\83« (ã\83\95ã\82¡ã\82¤ã\83«å\90\8dã\82\92æ\8c\87å®\9a\80\81ã\83\9aã\83¼ã\82¸ (ç\89\88 ID ã\82\92æ\8c\87å®\9a\80\81å\88©ç\94¨è\80\85ã\83\9aã\83¼ã\82¸ (å\88©ç\94¨è\80\85 ID ã\82\92æ\95´æ\95°ã\81§æ\8c\87å®\9a) ã\81«è»¢é\80\81ã\81\95ã\82\8cã\81¾ã\81\99ã\80\82使ç\94¨ä¾\8b: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revision/328429]], or [[{{#Special:Redirect}}/user/101]]',
+'redirect-summary' => 'ã\81\93ã\81®ç\89¹å\88¥ã\83\9aã\83¼ã\82¸ã\81¯ã\80\81ã\83\95ã\82¡ã\82¤ã\83« (ã\83\95ã\82¡ã\82¤ã\83«å\90\8dã\82\92æ\8c\87å®\9a\80\81ã\83\9aã\83¼ã\82¸ (ç\89\88 ID ã\81¾ã\81\9fã\81¯ã\83\9aã\83¼ã\82¸ ID ã\82\92æ\8c\87å®\9a\80\81å\88©ç\94¨è\80\85ã\83\9aã\83¼ã\82¸ (å\88©ç\94¨è\80\85 ID ã\82\92æ\95´æ\95°ã\81§æ\8c\87å®\9a) ã\81«è»¢é\80\81ã\81\95ã\82\8cã\81¾ã\81\99ã\80\82使ç\94¨ä¾\8b: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], [[{{#Special:Redirect}}/user/101]]',
 'redirect-submit' => '実行',
 'redirect-lookup' => '検索の種類:',
 'redirect-value' => '値:',
 'redirect-user' => '利用者 ID',
+'redirect-page' => 'ページ ID',
 'redirect-revision' => 'ページの版 ID',
 'redirect-file' => 'ファイル名',
 'redirect-not-exists' => '値が見つかりません',
@@ -4427,6 +4434,7 @@ MediaWikiは、有用であることを期待して配布されていますが
 'api-error-overwrite' => '既存のファイルへの上書きは許可されていません。',
 'api-error-stashfailed' => '内部エラー: サーバーは一時ファイルを格納できませんでした。',
 'api-error-publishfailed' => '内部エラー: サーバーは一時ファイルを発行できませんでした。',
+'api-error-stasherror' => 'ファイルをスタッシュにアップロードする際にエラーが発生しました。',
 'api-error-timeout' => 'サーバーが決められた時間内に応答しませんでした。',
 'api-error-unclassified' => '不明なエラーが発生しました。',
 'api-error-unknown-code' => '不明なエラー:「$1」',
@@ -4475,10 +4483,12 @@ MediaWikiは、有用であることを期待して配布されていますが
 'expand_templates_input' => '展開するテキスト:',
 'expand_templates_output' => '展開結果',
 'expand_templates_xml_output' => 'XML 出力',
+'expand_templates_html_output' => '出力される HTML ソース',
 'expand_templates_ok' => 'OK',
 'expand_templates_remove_comments' => 'コメントを除去',
 'expand_templates_remove_nowiki' => '結果に含まれる <nowiki> タグを表示しない',
 'expand_templates_generate_xml' => 'XML 構文解析ツリーを表示',
+'expand_templates_generate_rawhtml' => 'HTML ソースを表示',
 'expand_templates_preview' => 'プレビュー',
 
 );
index 3c006eb..14c4d26 100644 (file)
@@ -240,7 +240,7 @@ $1',
 
 # All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage).
 'aboutsite' => 'Habowt {{SITENAME}}',
-'aboutpage' => 'Project: អំពី',
+'aboutpage' => 'Project:About',
 'copyright' => 'Kantent avielobl anda $1.',
 'copyrightpage' => '{{ns:project}}:Kapirait',
 'currentevents' => 'Korant ivent',
index 5905dbb..f36712f 100644 (file)
@@ -258,7 +258,7 @@ $messages = array(
 'articlepage' => 'nDeleng artikel',
 'talk' => 'Dhiskusi',
 'views' => 'Tampilan',
-'toolbox' => 'Kothak piranti',
+'toolbox' => 'Piranti',
 'userpage' => 'Ndeleng kaca panganggo',
 'projectpage' => 'Ndeleng kaca proyèk',
 'imagepage' => 'Deleng kaca berkas',
@@ -1320,7 +1320,7 @@ Alamat layang èlèktronik Sampéyan ora dituduhaké nalika wong liya ngubungi S
 'rclistfrom' => 'Saiki nuduhaké owah-owahan wiwit tanggal $1',
 'rcshowhideminor' => '$1 suntingan sithik',
 'rcshowhidebots' => '$1 bot',
-'rcshowhideliu' => '$1 panganggo mlebu log',
+'rcshowhideliu' => '$1 panganggo sing wis ndaptar',
 'rcshowhideanons' => '$1 panganggo anonim',
 'rcshowhidepatr' => '$1 suntingan sing dipatroli',
 'rcshowhidemine' => '$1 suntinganku',
@@ -2208,7 +2208,7 @@ $1',
 'contributions' => 'Sumbangan {{GENDER:$1|panganggo}}',
 'contributions-title' => 'Kontribusi panganggo kanggo $1',
 'mycontris' => 'Kontribusi',
-'contribsub2' => 'Kanggo $1 ($2)',
+'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é):',
@@ -2784,7 +2784,7 @@ Yèn dilakokaké, sistem Sampéyan bisa kaserang.",
 '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' => 'Résolusi kebak',
+'show-big-image' => 'Berkas 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',
index 8327fac..93edd7f 100644 (file)
@@ -445,8 +445,8 @@ $1',
 'youhavenewmessages' => 'თქვენ გაქვთ $1 ($2).',
 'youhavenewmessagesfromusers' => 'თქვენ გაქვთ $1 {{PLURAL:$3|სხვა მომხმარებლისგან|$3 მომხმარებლებისგან}} ($2).',
 'youhavenewmessagesmanyusers' => 'თქვენ გაქვთ $1 ბევრი მომხმარებლისგან ($2).',
-'newmessageslinkplural' => '{{PLURAL:$1|ახალი შეტყობინება|ახალი შეტყობინება}}',
-'newmessagesdifflinkplural' => 'ბოლო {{PLURAL:$1|ცვლილება|ცვლილება}}',
+'newmessageslinkplural' => '{{PLURAL:$1|ახალი შეტყობინება|999=ახალი შეტყობინება}}',
+'newmessagesdifflinkplural' => 'ბოლო {{PLURAL:$1|ცვლილება|999=ცვლილება}}',
 'youhavenewmessagesmulti' => 'თქვენ გაქვთ ახალი შეტყობინება $1-ზე',
 'editsection' => 'რედაქტირება',
 'editold' => 'რედაქტირება',
@@ -569,7 +569,7 @@ $2',
 'invalidtitle-knownnamespace' => 'დაუშვებელი სათაური სახელთა სივრცე "$2" და ტექსტი "$3"-თან',
 'invalidtitle-unknownnamespace' => 'დაუშვებელი სათაური უცნობი სახელთა სივრცის ნომერი $1 და ტექსტი "$2"-ით',
 'exception-nologin' => 'შესვლა არ განხორციელდა',
-'exception-nologin-text' => 'ამ გვერდის სანახავად ან მოთხოვნილი მოქმედების შესასრულებლად საჭიროა სისტემაში შესვლა.',
+'exception-nologin-text' => 'ამ გვერდის სანახავად ან მოთხოვნილი მოქმედების შესასრულებლად საჭიროა [[Special:Userlogin|სისტემაში შესვლა]].',
 
 # Virus scanner
 'virus-badscanner' => "შეცდომა. ვირუსთა უცნობი სკანერი: ''$1''",
@@ -665,7 +665,7 @@ $2',
 იგი უნდა შეიცავდეს მინიმუმ $1 სიმბოლოს.',
 'password-name-match' => 'შეტანილი პაროლი უნდა განსხვავდებოდეს მომხმარებლის სახელისგან.',
 'password-login-forbidden' => 'ამ მომხმარებლის სახელისა და პაროლის გამოყენება აკრძალულია.',
-'mailmypassword' => 'á\83\90á\83®á\83\90á\83\9aá\83\98 á\83\9eá\83\90á\83 á\83\9dá\83\9aá\83\98á\83¡ á\83\92á\83\90á\83\9bá\83\9dá\83\92á\83\96á\83\90á\83\95á\83\9cა',
+'mailmypassword' => 'á\83\90á\83®á\83\90á\83\9aá\83\98 á\83\9eá\83\90á\83 á\83\9dá\83\9aá\83\98á\83¡ á\83\93á\83\90á\83§á\83\94á\83\9cá\83\94á\83\91ა',
 'passwordremindertitle' => 'ახალი დროებითი პაროლი {{SITENAME}}-თვის',
 'passwordremindertext' => 'ვიღაცამ (შესაძლოა თქვენ, IP მისამართით $1) მოითხოვა
 ახალი პაროლის გაგზავნა {{SITENAME}}-სთვის ($4).
@@ -737,7 +737,7 @@ Please wait $1 before trying again.',
 # Special:PasswordReset
 'passwordreset' => 'პაროლის აღდგენა',
 'passwordreset-text-one' => 'შეავსეთ ეს ფორმა, რათა კვლავ დააყენოთ თქვენი პაროლი.',
-'passwordreset-text-many' => '{{PLURAL:$1|á\83\9eá\83\90á\83 á\83\9dá\83\9aá\83\98á\83¡ á\83\97á\83\90á\83\95á\83\98á\83\93á\83\90á\83\9c á\83\93á\83\90á\83¡á\83\90á\83§á\83\94á\83\9cá\83\94á\83\91á\83\9aად შეავსეთ ერთ-ერთი ველი.}}',
+'passwordreset-text-many' => '{{PLURAL:$1|á\83\94á\83\9a\83¤á\83\9dá\83¡á\83¢á\83\90á\83\96á\83\94 á\83\93á\83 á\83\9dá\83\94á\83\91á\83\98á\83\97á\83\98 á\83\9eá\83\90á\83 á\83\9dá\83\9aá\83\98á\83¡ á\83\9bá\83\98á\83¡á\83\90á\83¦á\83\94á\83\91ად შეავსეთ ერთ-ერთი ველი.}}',
 'passwordreset-legend' => 'პაროლის აღდგენა',
 'passwordreset-disabled' => 'ამ ვიკიში პაროლის კვლავ დაყენების ფუნქცია გამორთულია.',
 'passwordreset-emaildisabled' => 'ამ ვიკიში ელ.ფოსტის ფუნქციები გამორთულია.',
@@ -1054,9 +1054,8 @@ $3 -ემ ამგვარი ახსნა : ''$2''",
 'last' => 'ბოლო',
 'page_first' => 'პირველი',
 'page_last' => 'ბოლო',
-'histlegend' => '*ვერსიის დათვალიერება: დააწკაპუნეთ სასურველი ვერსიის თარიღზე მის დასათვალიერებლად.
-*ვერსიების შედარება: აირჩიეთ სასურველი ვერსიები რადიო-რგოლების მონიშვნით და დააწკაპუნეთ შედარების ღილაკზე.
-*შემოკლებები: (მიმდ.) = სხვაობა მიმდინარე ვერსიასთან, (ბოლო) = სხვაობა წინა ვერსიასთან, მ = მცირე შესწორება.',
+'histlegend' => "ვერსიების შედარება: აირჩიეთ სასურველი ვერსიები რადიო-რგოლების მონიშვნით და დააწკაპუნეთ შედარების ღილაკზე.<br />
+ლეგენდა: '''({{int:cur}})''' = სხვაობა მიმდინარე ვერსიასთან, '''({{int:last}})''' = სხვაობა წინა ვერსიასთან, '''{{int:minoreditletter}}''' = მცირე შესწორება.",
 'history-fieldset-title' => 'დათვალიერების ისტორია',
 'history-show-deleted' => 'მხოლოდ წაშლილი',
 'histfirst' => 'უძველესი',
@@ -1116,11 +1115,10 @@ $3 -ემ ამგვარი ახსნა : ''$2''",
 'revdelete-text' => "'''გვერდებისა და მოქმედებების წაშლილი ნაწილები დარჩება ისტორიაში და ჟურნალებში, მაგრამ მათ ნაწილს ვერ ნახავენ ჩვეულებრივი მომხმარებლები.'''
 პროექტის ადმინისტრატორებს ექნებათ შესაძლებლობა {{SITENAME}}ში დაინახონ ღია და არწაშლილი ნაწილი, და შეძლებენ აღადგინონ იგივე ინტერფეისის მეშვეობით, გარდა იმ შემთხვევებისა, როდესაც დამატებითი შეზღუდვა მოქმედებს.",
 'revdelete-confirm' => 'გთხოვთ დაადასტუროთ, რომ გსურთ ქმედების განხორციელება. ასევე ვიმედოვნებთ, რომ ყველაფერს აკეთებთ  [[{{MediaWiki:Policy-url}}|წესებთან შესაბამისობაში]].',
-'revdelete-suppress-text' => "დამალვა შეიძლება განხორციელდეს მხოლოდ ამ შემთხვევებში:
-
-
-* მიუსადეგი პირადი ინფორმაცია
-*: ''სახლის მისამართი, ტელეფონისა და პასპორტის ნომერი და მისთ. ''",
+'revdelete-suppress-text' => "დამალვა შეიძლება განხორციელდეს '''მხოლოდ''' შემდეგ შემთხვევებში:
+* პოტენციურად ცილისმწამებლური ინფორმაცია
+* უადგილო პირადი ინფორმაცია
+*: ''სახლის მისამართი, ტელეფონის ნომრები, პასპორტის ნომერი და ა.შ.''",
 'revdelete-legend' => 'შეზღუდვის დაყენება',
 'revdelete-hide-text' => 'შეცვლილი ტექსტი',
 'revdelete-hide-image' => 'ფაილის შინაარსის დამალვა',
@@ -1129,8 +1127,8 @@ $3 -ემ ამგვარი ახსნა : ''$2''",
 'revdelete-hide-user' => 'რედაქტორის მომხმარებლის სახელი/IP-მისამართი',
 'revdelete-hide-restricted' => 'დამალეთ მონაცემები ადმინისტრატორთაგან',
 'revdelete-radio-same' => '(არ შეცვალოთ)',
-'revdelete-radio-set' => 'á\83®á\83\98ლული',
-'revdelete-radio-unset' => 'á\83\93á\83\90á\83\9bá\83\90ლული',
+'revdelete-radio-set' => 'á\83\93á\83\90á\83\9bá\83\90ლული',
+'revdelete-radio-unset' => 'á\83®á\83\98ლული',
 'revdelete-suppress' => 'დამალეთ მონაცემები ადმინისტრატორთაგან',
 'revdelete-unsuppress' => 'მოხსენით შეზღუდვა ვერსიების აღდგენისგან',
 'revdelete-log' => 'მიზეზი:',
@@ -1565,7 +1563,7 @@ $1",
 'rclistfrom' => 'ახალი ცვლილებების ჩვენება დაწყებული $1-დან',
 'rcshowhideminor' => 'მცირე რედაქტირების $1',
 'rcshowhidebots' => 'რობოტების  $1',
-'rcshowhideliu' => 'რეგისტრირებული მომხმარებლების $1',
+'rcshowhideliu' => '$1 რეგისტრირებული მომხმარებელი',
 'rcshowhideanons' => 'ანონიმური მომხმარებლების $1',
 'rcshowhidepatr' => 'გაკონტროლებული ცვლილებების $1',
 'rcshowhidemine' => 'ჩემი რედაქტირების $1',
@@ -2157,7 +2155,7 @@ $1',
 შესაძლოა არსებობს [[{{MediaWiki:Listgrouprights-helppage}}|დამატებითი ინფორმაცია]] ინდივიდუალურ უფლებებთან დაკავშირებით.',
 'listgrouprights-key' => 'ლეგენდა:
 * <span class="listgrouprights-granted">მიცემული უფლებები</span>
-* <span class="listgrouprights-revoked">á\83\92á\83\90á\83¬á\83\95ეული უფლებები</span>',
+* <span class="listgrouprights-revoked">á\83©á\83\90á\83\9bá\83\9dá\83 á\83\97á\83\9bეული უფლებები</span>',
 'listgrouprights-group' => 'ჯგუფი',
 'listgrouprights-rights' => 'უფლებები',
 'listgrouprights-helppage' => 'Help:ჯგუფების უფლებები',
@@ -3084,7 +3082,7 @@ $1',
 'svg-long-desc' => 'ფაილი SVG, ნომინალურად $1 × $2 პიქსელი, ფაილის ზომა: $3',
 'svg-long-desc-animated' => 'ანიმირებული SVG ფაილი, ნომინალური $1 × $2 პიქსელი, ფაილის ზომა: $3',
 'svg-long-error' => 'არასწორი SVG ფაილი: $1',
-'show-big-image' => 'á\83¡á\83 á\83£á\83\9aá\83\98 á\83\92á\83\90á\83 á\83©á\83\94á\83\95á\83\90á\83\93á\83\9dá\83\91á\83\90',
+'show-big-image' => 'á\83\97á\83\90á\83\95á\83\93á\83\90á\83\9eá\83\98á\83 á\83\95á\83\94á\83\9aá\83\98 á\83¤á\83\90á\83\98á\83\9aá\83\98',
 'show-big-image-preview' => 'ზომა წინასწარი გადახედვისას: $1.',
 'show-big-image-other' => 'სხვა {{PLURAL:$2|გაფართოება|გაფართოება}}: $1.',
 'show-big-image-size' => '$1 × $2 პიქსელი',
@@ -3827,7 +3825,7 @@ MediaWiki ვრცელდება იმ იმედით, რომ ი
 'version-entrypoints-scriptpath' => '[https://www.mediawiki.org/wiki/Manual:$wgScriptPath გზა სკრიპტისაკენ]',
 
 # Special:Redirect
-'redirect' => 'გადამისამართება ფაილიდან, მომხმარებლიდან ან ვერსიის იდენტიფიკატორიდან',
+'redirect' => 'გადამისამართება ფაილიდან, მომხმარებლიდან, გვერდიდან ან ვერსიის იდენტიფიკატორიდან',
 'redirect-legend' => 'გადამისამართება ფაილზე ან გვერდზე',
 'redirect-submit' => 'მიდი',
 'redirect-lookup' => 'ძიება:',
@@ -3850,8 +3848,9 @@ MediaWiki ვრცელდება იმ იმედით, რომ ი
 
 # Special:SpecialPages
 'specialpages' => 'სპეციალური გვერდები',
+'specialpages-note-top' => 'ლეგენდა',
 'specialpages-note' => '* ჩვეულებრივი სპეცგვერდები.
-* <span class="mw-specialpagerestricted">á\83¡á\83\9eá\83\94á\83ªá\83\92á\83\95á\83\94á\83 á\83\93á\83\94á\83\91á\83\98 á\83¨á\83\94á\83\96á\83¦á\83£á\83\93á\83£á\83\9aá\83\98 á\83\9bá\83\98á\83¡á\83\90á\83¬á\83\95á\83\93á\83\9dá\83\9bá\83\9dá\83\91ით.</span>',
+* <span class="mw-specialpagerestricted">á\83¡á\83\9eá\83\94á\83ªá\83\92á\83\95á\83\94á\83 á\83\93á\83\94á\83\91á\83\98 á\83¨á\83\94á\83\96á\83¦á\83£á\83\93á\83£á\83\9aá\83\98 á\83¬á\83\95á\83\93á\83\9dá\83\9bით.</span>',
 'specialpages-group-maintenance' => 'ტექნიკური მომსახურების ანგარიშები',
 'specialpages-group-other' => 'სხვა სპეციალური გვერდები',
 'specialpages-group-login' => 'შესვლა / რეგისტრაცია',
index 7f02ac3..488ea1e 100644 (file)
@@ -50,12 +50,12 @@ $messages = array(
 'tog-hidepatrolled' => 'Ffer ibeddlen iεessan deg yibeddlen imaynuten',
 'tog-newpageshidepatrolled' => 'Ffer isebtaren iɛessan gar umuɣ n isebtaren imaynuten',
 'tog-extendwatchlist' => 'Ssemɣer umuɣ n uɛessi iwakken ad muqleɣ akk n wayen zemreɣ ad beddleɣ',
-'tog-usenewrc' => 'Sselhu ibeddlen ifessasen (JavaScript)',
+'tog-usenewrc' => 'Ssegrew ibeddlen s usebtar deg ibeddilen imaynuten d umuɣ n uḍfar',
 'tog-numberheadings' => 'Izwal ɣur-sen imḍanen mebla ma serseɣ-iten',
-'tog-showtoolbar' => 'Ssken tanuga n dduzan n ubeddel (JavaScript)',
-'tog-editondblclick' => 'Beddel isebtar mi wekkiɣ snat n tikwal (JavaScript)',
+'tog-showtoolbar' => 'Ssken tafeggagt n ifecka n ubeddel',
+'tog-editondblclick' => 'Beddel isebtar mi wekkiɣ snat n tikwal',
 'tog-editsection' => 'Eǧǧ abeddel n umur s yizdayen [beddel]',
-'tog-editsectiononrightclick' => 'Eǧǧ abeddel n umur mi wekkiɣ ɣef uyeffus<br /> ɣef yizwal n umur (JavaScript)',
+'tog-editsectiononrightclick' => 'Ssermed abeddel n tigezmi s ukliki ayeffus ɣef izwal',
 'tog-showtoc' => 'Ssken agbur (i isebtar i yesɛan kter n 3 izwalen)',
 'tog-rememberpassword' => 'Cfu ɣef yisem n umseqdac inu di uselkim-agi (i afellay n $1 {{PLURAL:$1|ass|ussan}})',
 'tog-watchcreations' => 'Rnu isebtar i xelqeɣ deg wumuɣ n uɛessi inu',
@@ -72,7 +72,7 @@ $messages = array(
 'tog-shownumberswatching' => 'Ssken geddac yellan n yimseqdacen iɛessasen',
 'tog-oldsig' => 'Azmul yellan :',
 'tog-fancysig' => 'ǧǧ azmul am yettili (war azday awurman)',
-'tog-uselivepreview' => 'Sseqdec pre-timeẓriwt taǧiḥbuṭ (JavaScript) (Experimental)',
+'tog-uselivepreview' => 'Sseqdec askan arurad (Experimental)',
 'tog-forceeditsummary' => 'Ini-iyi-d mi sskecmeɣ agzul amecluc',
 'tog-watchlisthideown' => 'Ffer ibeddlen inu seg wumuɣ n uɛessi inu',
 'tog-watchlisthidebots' => 'Ffer ibeddlen n iboṭiyen seg wumuɣ n uɛessi inu',
@@ -85,10 +85,11 @@ $messages = array(
 'tog-showhiddencats' => 'Beqqeḍ taggayin yeffren',
 'tog-norollbackdiff' => 'Ur beqqeḍ ara "diff" ma yella usemmet',
 'tog-useeditwarning' => 'Σeggen iyid mi ara fγaγ seg usebter mebla ma skeslaγ ibeddilen.',
+'tog-prefershttps' => 'Sseqdec yalass tuqqna yettwaḥerzen mi teqqneḍ',
 
 'underline-always' => 'Daymen',
 'underline-never' => 'Abaden',
-'underline-default' => 'Browser/Explorateur ameslugen',
+'underline-default' => 'Azal s lexṣas n iminig neɣ n usentel',
 
 # Font style option in Special:Preferences
 'editfont-style' => 'Aɣanib n tasefsit n taɣzut ubeqqeḍ :',
@@ -112,47 +113,59 @@ $messages = array(
 'thu' => 'Amh',
 'fri' => 'Sem',
 'sat' => 'Sed',
-'january' => 'Yennayer',
-'february' => 'Furar',
-'march' => 'Meɣres',
-'april' => 'Yebrir',
-'may_long' => 'Mayu',
-'june' => 'Yunyu',
-'july' => 'Yulyu',
-'august' => 'Ɣuct',
-'september' => 'Ctamber',
-'october' => 'Tuber',
-'november' => 'Wamber',
-'december' => 'Dujamber',
-'january-gen' => 'Yennayer',
-'february-gen' => 'Furar',
-'march-gen' => 'Meɣres',
-'april-gen' => 'Yebrir',
-'may-gen' => 'Mayu',
-'june-gen' => 'Yunyu',
-'july-gen' => 'Yulyu',
-'august-gen' => 'Ɣuct',
-'september-gen' => 'Ctamber',
-'october-gen' => 'Tuber',
-'november-gen' => 'Wamber',
-'december-gen' => 'Dujamber',
-'jan' => 'Yen',
-'feb' => 'Fur',
-'mar' => 'Meɣ',
-'apr' => 'Yeb',
-'may' => 'May',
-'jun' => 'Yun',
-'jul' => 'Yul',
-'aug' => 'Ɣuc',
-'sep' => 'Cta',
-'oct' => 'Tub',
-'nov' => 'Wam',
-'dec' => 'Duj',
+'january' => 'yennayer',
+'february' => 'furar',
+'march' => 'meɣres',
+'april' => 'yebrir',
+'may_long' => 'Mayyu',
+'june' => 'yunyu',
+'july' => 'yulyu',
+'august' => 'ɣuct',
+'september' => 'ctamber',
+'october' => 'tuber',
+'november' => 'wamber',
+'december' => 'dujamber',
+'january-gen' => 'yennayer',
+'february-gen' => 'furar',
+'march-gen' => 'meɣres',
+'april-gen' => 'yebrir',
+'may-gen' => 'mayyu',
+'june-gen' => 'yunyu',
+'july-gen' => 'yulyu',
+'august-gen' => 'ɣuct',
+'september-gen' => 'ctamber',
+'october-gen' => 'tuber',
+'november-gen' => 'wamber',
+'december-gen' => 'dujamber',
+'jan' => 'yen',
+'feb' => 'fur',
+'mar' => 'meɣ',
+'apr' => 'yeb',
+'may' => 'may',
+'jun' => 'yun',
+'jul' => 'yul',
+'aug' => 'ɣuc',
+'sep' => 'cta',
+'oct' => 'tub',
+'nov' => 'wam',
+'dec' => 'duj',
+'january-date' => '$1 yennayer',
+'february-date' => '$1 fuṛaṛ',
+'march-date' => '$1 meɣres',
+'april-date' => '$1 yebrir',
+'may-date' => '$1 mayyu',
+'june-date' => '$1 yunyu',
+'july-date' => '$1 yulyu',
+'august-date' => '$1 ɣuct',
+'september-date' => '$1 ctamber',
+'october-date' => '$1 tuber',
+'november-date' => '$1 wamber',
+'december-date' => '$1 dujamber',
 
 # Categories related messages
 'pagecategories' => '{{PLURAL:$1|Taggayt|Taggayin}}',
-'category_header' => 'Imagraden deg taggayt "$1"',
-'subcategories' => 'Taggayin tizellumin',
+'category_header' => 'Isebtar deg taggayt "$1"',
+'subcategories' => 'Adutaggayin',
 'category-media-header' => 'Media deg taggayt "$1"',
 'category-empty' => "''Taggayt-agi d tilemt.''",
 'hidden-categories' => '{{PLURAL:$1|Taggayt yeffren|Taggayin yeffren}}',
@@ -173,10 +186,11 @@ $messages = array(
 'newwindow' => '(teldi deg ttaq amaynut)',
 'cancel' => 'Eǧǧ-it am yella',
 'moredotdotdot' => 'Ugar...',
-'mypage' => 'Asebter inu',
-'mytalk' => 'Amyannan inu',
+'morenotlisted' => 'Umuɣ agi ur yella ara d ummid.',
+'mypage' => 'Asebtar',
+'mytalk' => 'Amyannan',
 'anontalk' => 'Amyannan n IP-yagi',
-'navigation' => 'Ẓer isebtar',
+'navigation' => 'Assilel',
 'and' => '&#32;u',
 
 # Cologne Blue skin
@@ -205,6 +219,7 @@ $messages = array(
 'namespaces' => 'Talluntin n isemawen',
 'variants' => 'Tineḍwa',
 
+'navigation-heading' => 'Umuɣ n tunigin',
 'errorpagetitle' => 'Agul',
 'returnto' => 'Uɣal ar $1.',
 'tagline' => 'Seg {{SITENAME}}',
@@ -226,6 +241,7 @@ $messages = array(
 'create-this-page' => 'Snulfu asebter-agi',
 'delete' => 'Mḥu',
 'deletethispage' => 'Mḥu asebter-agi',
+'undeletethispage' => 'Erred asebter agi',
 'undelete_short' => 'Fakk amḥay n {{PLURAL:$1|yiwen ubeddel|$1 yibeddlen}}',
 'viewdeleted_short' => 'Ẓeṛ {{PLURAL:$1|yiwen abeddel yettumḥan|$1 Ibeddlen yettumḥan}}',
 'protect' => 'Ḥrez',
@@ -242,7 +258,7 @@ $messages = array(
 'articlepage' => 'Ẓer ayen yellan deg usebter',
 'talk' => 'Amyannan',
 'views' => 'Tuẓrin',
-'toolbox' => 'Dduzan',
+'toolbox' => 'Ifecka',
 'userpage' => 'Ẓer asebter n wemseqdac',
 'projectpage' => 'Ẓer asebter n usenfar',
 'imagepage' => 'Ẓer asebter n tugna',
@@ -272,7 +288,7 @@ $1',
 # All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage).
 'aboutsite' => 'Awal ɣef {{SITENAME}}',
 'aboutpage' => 'Project:Awal ɣef...',
-'copyright' => 'Tzemreḍ ad twaliḍ ayen yella deg $1.',
+'copyright' => 'Agbur yella ddaw $1 ḥaca ma abdar anemgal.',
 'copyrightpage' => '{{ns:project}}:Izerfanɣel',
 'currentevents' => 'Isallen',
 'currentevents-url' => 'Project:Isallen',
@@ -300,8 +316,8 @@ $1',
 'youhavenewmessages' => 'Ɣur-k $1 ($2).',
 'youhavenewmessagesfromusers' => 'Tesɛiḍ $1 n {{PLURAL:$3|useqdac nniḍen|$3 iseqdacen nniḍen}} ( $2 ).',
 'youhavenewmessagesmanyusers' => 'Tesɛiḍ $1 n aṭas n iseqdacen ($2).',
-'newmessageslinkplural' => '{{PLURAL:$1|izen amaynut|inzan imaynuten}}',
-'newmessagesdifflinkplural' => '{{PLURAL:$1|abeddel aneggaru|ibeddilen ineggura}}',
+'newmessageslinkplural' => '{{PLURAL:$1|izen amaynut|999=inzan imaynuten}}',
+'newmessagesdifflinkplural' => '{{PLURAL:$1|abeddel aneggaru|999=ibeddilen ineggura}}',
 'youhavenewmessagesmulti' => 'Tesɛiḍ iznan imaynuten deg $1',
 'editsection' => 'beddel',
 'editold' => 'beddel',
@@ -349,6 +365,11 @@ $1',
 # General errors
 'error' => 'Agul',
 'databaseerror' => 'Agul n database',
+'databaseerror-text' => 'Tuccḍa n tuttra deg taffa n isefka teḍra-d. Ahat yella afuqes deg useɣẓan.',
+'databaseerror-textcl' => 'Tuccḍa n tuttra deg taffa n isefka teḍra-d.',
+'databaseerror-query' => 'Tuttra : $1',
+'databaseerror-function' => 'Tawuri: $1',
+'databaseerror-error' => 'Tuccḍa: $1',
 'laggedslavemode' => 'Aɣtal: Ahat asebter ur yesɛi ara akk ibeddlen imaynuten.',
 'readonly' => 'Database d tamsekkert',
 'enterlockreason' => 'Ini ayɣer tsekkreḍ database, ini daɣen melmi ara ad ifukk asekker',
@@ -382,6 +403,7 @@ Ahat amdan wayeḍ yemḥa-t.',
 'cannotdelete-title' => 'Ulamek an kkes  asebter « $1 »',
 'delete-hook-aborted' => 'Tukkesa tesemmet s usiɣzef.
 Ulac asefru ɣef wagi.',
+'no-null-revision' => 'Ur nezmer ara ad n-snulfu tacaggart tilemnt tamaynut i usebtar « $1 »',
 'badtitle' => 'Azwel ur yelhi',
 'badtitletext' => 'Asebter i testeqsiḍ fell-as mačči ṣaḥiḥ, d ilem, neɣ yella ugul deg wezday seg wikipedia s tutlayt tayeḍ neɣ deg wezday n wiki nniḍen. Ahat tesɛa asekkil ur yezmir ara ad yettuseqdac deg wezwel.',
 'perfcached' => 'Talɣut deg ukessar seg lkac u waqila mačči d tasiwelt taneggarut. A maximum of {{PLURAL:$1|one result is|$1 results are}} available in the cache.',
@@ -392,7 +414,7 @@ Ulac asefru ɣef wagi.',
 'actionthrottled' => 'Tigawt tesɛa talast',
 'actionthrottledtext' => 'Iwakken an ewwet mgal tira yerkan (SPAM), tigawt agi tesɛa talast n amḍan n tikwalt deg akud awezzlan. talast agi t-ɛedda.
 Ɛred tikkelt nniḍen deg kra n dqiqa.',
-'protectedpagetext' => 'Asebter-agi d amsekker.',
+'protectedpagetext' => 'Asebter-agi yetwaḥrez i uqareɛ n ubeddel neɣ tigawin nniḍen.',
 'viewsourcetext' => 'Tzemreḍ ad twaliḍ u txedmeḍ alsaru n uɣbalu n usebter-agi:',
 'viewyourtext' => 'Tzemṛeḍ ad ẓṛeḍ dɣa ad nɣeleḍ agbur n "ibeddlen inek/inem" deg usebter agi :',
 'protectedinterface' => 'Asebter-agi d amsekker axaṭer yettuseqdac i weḍris n software.',
@@ -402,6 +424,10 @@ $2',
 'namespaceprotected' => "Ur tesɛiḍ ara turagt iwakken ad beddeleḍ isebtar n tallunt n isemawen \"'''\$1'''\".",
 'customcssprotected' => 'Ur tesɛiḍ ara turagt iwakken ad beddeleḍ asebter agi n CSS, acku tesɛa iɣewwaren n yiwen useqdac nniḍen.',
 'customjsprotected' => 'Ur tesɛiḍ ara turagt iwakken ad beddeleḍ asebter agi n Javascript, acku tesɛa iɣewwaren n yiwen useqdac nniḍen.',
+'mycustomcssprotected' => 'Ur tesɛiḍ ara turagt i ubeddel n usebtar agi CSS.',
+'mycustomjsprotected' => 'Ur tesɛiḍ ara turagt i ubeddel n usebtar agi JavaScript.',
+'myprivateinfoprotected' => 'Ur tesɛiḍ ara turagt ad beddeleḍ tilɣa inek(em) tusligtin.',
+'mypreferencesprotected' => 'Ur tesɛiḍ ara turagt ad beddeleḍ iɣewwaren inek(em).',
 'ns-specialprotected' => 'Ur t-zemred ara ad beddeleḍ isebtar usligen',
 'titleprotected' => "Azwel agi yegdel deg usnulfu ɣef [[User:$1|$1]].
 Taɣẓint id yenna : ''$2''",
@@ -411,7 +437,8 @@ Anedbal i tid sekkweṛen yefkad taɣẓint agi : « $3 ».',
 'invalidtitle-knownnamespace' => 'Azwel ur i ɣbel ara s tallunt n isemawen « $2 » dɣa d-uglam « $3 »',
 'invalidtitle-unknownnamespace' => 'Azwel ur i ɣbel ara s uṭṭun n tallunt n isemawen $1 dɣa d-uglam « $2 » warisem',
 'exception-nologin' => 'Ur tekcimeḍ ara',
-'exception-nologin-text' => 'I usebter agi naɣ i tigawt agi, ilaq ad qqeneḍ ɣef wiki agi.',
+'exception-nologin-text' => 'Ilaq ad [[Special:Userlogin|qqeneḍ]] iwakken ad kecmeḍ ar usebtar neɣ tawuri agi.',
+'exception-nologin-text-manual' => '$1 iwakken ad kecmeḍ ar asebtar neɣ tigawt agi.',
 
 # Virus scanner
 'virus-badscanner' => "Yir tawila : anafraḍ n infafaden warisem : ''$1''",
@@ -421,12 +448,24 @@ Anedbal i tid sekkweṛen yefkad taɣẓint agi : « $3 ».',
 # Login and logout pages
 'logouttext' => "'''Tura tesensereḍ.'''
 
-Tzemreḍ ad tesseqdceḍ {{SITENAME}} d udrig, <span class='plainlinks'>[$1 ad tkecmeḍ daɣen]</span> s yisem n wemseqdac inek (neɣ nniḍen).
-Kra n isebtar zemren ad sskanen belli mazal-ik s yisem n wemseqdac inek armi temḥuḍ lkac.",
+Kra n isebtar zemren ad sskanen belli mazal-ik s yisem n wemseqdac inek armi temḥuḍ tazarkatut.",
+'welcomeuser' => 'Anṣuf, $1 !',
+'welcomecreation-msg' => 'Amian inek(em) yesnulfad.
+Tzemreḍ ad beddeleḍ {{SITENAME}} [[Special:Preferences|ismenyifen]] inek(em) ma tebɣiḍ.',
 'yourname' => 'Isem n wemseqdac',
+'userlogin-yourname' => 'Isem n useqdac',
+'userlogin-yourname-ph' => 'Sekcem isem-ik(im) n useqdac',
+'createacct-another-username-ph' => 'Sekcem isem n useqdac',
 'yourpassword' => 'Awal n tbaḍnit',
+'userlogin-yourpassword' => 'Awal n uɛeddi',
+'userlogin-yourpassword-ph' => 'Sekcem awal-ik(im) n uɛeddi',
+'createacct-yourpassword-ph' => 'Sekcem awal n uɛeddi',
 'yourpasswordagain' => 'Ɛiwed ssekcem awal n tbaḍnit',
+'createacct-yourpasswordagain' => 'Sergeg awal n uɛeddi',
+'createacct-yourpasswordagain-ph' => 'Sekcem awal n uɛeddi tikelt nniḍen',
 'remembermypassword' => 'Cfu ɣef wawal n tbaḍnit inu di uselkim-agi (i afellay n $1 {{PLURAL:$1|ass|ussan}})',
+'userlogin-remembermypassword' => 'Eǧǧ taɣimit inu turmidt',
+'userlogin-signwithsecure' => 'Seqdec tuqqna yettwaḥerzen',
 'yourdomainname' => 'Taɣult inek',
 'password-change-forbidden' => 'Ur zemreḍ ara ad beddeleḍ awalen n uɛaddi ɣef uwiki agi.',
 'externaldberror' => 'Yella ugul aberrani n database neɣ ur tettalaseḍ ara ad tbeddleḍ isem an wemseqdac aberrani inek.',
@@ -438,17 +477,42 @@ Kra n isebtar zemren ad sskanen belli mazal-ik s yisem n wemseqdac inek armi tem
 'logout' => 'Ffeɣ',
 'userlogout' => 'Ffeɣ',
 'notloggedin' => 'Ur tekcimeḍ ara',
+'userlogin-noaccount' => 'Ur tesɛiḍ ara amiḍan ?',
+'userlogin-joinproject' => 'Ddukkel ar {{SITENAME}}',
 'nologin' => "Ur tesɛiḍ ara isem n umseqdac? '''$1'''.",
 'nologinlink' => 'Xleq isem n wemseqdac',
 'createaccount' => 'Xleq isem n wemseqdac',
 'gotaccount' => "Tesɛiḍ yagi isem n wemseqdac? '''$1'''.",
 'gotaccountlink' => 'Kcem',
 'userlogin-resetlink' => 'Ettuḍ tilɣa n tuqqna ?',
-'createaccountmail' => 's e-mail',
+'userlogin-resetpassword-link' => 'Ettuḍ awal n uɛaddi ?',
+'helplogin-url' => 'Help:Tuqqna',
+'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|Tallalt i tuqqna]]',
+'userlogin-loggedin' => 'Teqqneḍ yakan am {{GENDER:$1|$1}}. Seqdec tiferkit ddaw-agi iwakken ad teqqneḍ s umiḍan nniḍen.',
+'userlogin-createanother' => 'Snulfud amiḍan nniḍen',
+'createacct-join' => 'Sekcem tilɣa inek(m) ddaw-agi.',
+'createacct-another-join' => 'Sekcem tilɣa n umiḍan amaynut ddaw-agi.',
+'createacct-emailrequired' => 'Tansa email',
+'createacct-emailoptional' => 'Tansa email (axetṛan)',
+'createacct-email-ph' => 'Sekcem tansa email inek(m)',
+'createacct-another-email-ph' => 'Sekcem tansa email',
+'createaccountmail' => 'Seqdec awal n uɛaddi agacuran akudan dɣa ceggeε-it ar tansa email yemlen',
+'createacct-realname' => 'Isem n tidets (axetṛan)',
 'createaccountreason' => 'Ayɣer',
+'createacct-reason' => 'Taɣẓint',
+'createacct-reason-ph' => 'Ayɣer ad snulfuḍ amiḍan nniḍen',
+'createacct-captcha' => 'Asenqed n taɣellist',
+'createacct-imgcaptcha-ph' => 'Sekcem aḍris i tezṛiḍ ddaw-agi',
+'createacct-submit' => 'Snulfud amiḍan inek(m)',
+'createacct-another-submit' => 'Snulfud amiḍan nniḍen',
+'createacct-benefit-heading' => '{{SITENAME}} yetwexdem sɣur medden am kečč/kem.',
+'createacct-benefit-body1' => '{{PLURAL:$1|abeddel|ibeddilen}}',
+'createacct-benefit-body2' => '{{PLURAL:$1|asebter|isebtar}}',
+'createacct-benefit-body3' => '{{PLURAL:$1|atekki amaynut|ittekkiyen imaynuten}}',
 'badretype' => 'Awal n tbaḍnit amezwaru d wis sin mačči d kif-kif.',
 'userexists' => 'Isem n wemseqdac yeddem-as amdan wayeḍ. Fren yiwen nniḍen.',
 'loginerror' => 'Agul n ukcam',
+'createacct-error' => 'Tuccda deg usnulfu n umiḍan',
 'createaccounterror' => 'Ulamek ad nesnulfu amiḍan : $1',
 'nocookiesnew' => 'Isem n wemseqdac-agi yettwaxleq, meɛna ur tekcimeḍ ara. {{SITENAME}} yesseqdac ikukiyen (cookies) iwakken ad tkecmeḍ. Tekseḍ ikukiyen-nni. Eǧǧ-aten, umbeɛd kecm s yisem n wemseqdac akk d wawal n tbaḍnit inek.',
 'nocookieslogin' => '{{SITENAME}} yesseqdac ikukiyen (cookies) iwakken ad tkecmeḍ. Tekseḍ ikukiyen-nni. Eǧǧ-aten iwakken ad tkecmeḍ.',
@@ -467,7 +531,7 @@ Ssenqed tira n yisem-nni, naɣ [[Special:UserLogin/signup|snulfu-d amiḍan amay
 'passwordtooshort' => 'Awal-ik (im) n uɛaddi ilaq ad i sɛu adday {{PLURAL:$1|1 asekkil|$1 isekkilen}}.',
 'password-name-match' => 'Ilaq awal n uɛaddi ad yili imeẓli s-isem n useqdac.',
 'password-login-forbidden' => 'aseqdac agi d awal n uɛaddi agi d-izenbigen.',
-'mailmypassword' => 'Awal n tbaḍnit n e-mail',
+'mailmypassword' => 'Awennez tikkelt nniḍen n awal uɛaddi',
 'passwordremindertitle' => 'Asmekti n wawal n tbaḍnit seg {{SITENAME}}',
 'passwordremindertext' => 'Amdan (waqila d kečč/kem, seg tansa IP $1) yesteqsa iwakken a nazen
 Awal n uɛaddi amaynut i {{SITENAME}} ($4). Awal n uɛaddi i wemseqdac "$2" yuɣal-d tura "$3".
@@ -481,9 +545,8 @@ Lukan mačči d kečč i yesteqsan naɣ tecfiḍ ɣef awal n uɛaddi, tzemreḍ
 G leɛnaya-k, kcem tikelt nniḍen yis-s.',
 'blocked-mailpassword' => 'Tansa n IP inek tɛekkel, ur tezmireḍ ara ad txedmeḍ abeddel,
 ur tezmireḍ ara ad tesɛuḍ awal n tbaḍnit i tettuḍ.',
-'eauthentsent' => 'Yiwen e-mail yettwazen-ak iwakken ad tsenteḍ.
-Qbel kulci, ḍfer ayen yenn-ak deg e-mail,
-iwakken ad tbeyyneḍ belli tansa n email inek.',
+'eauthentsent' => 'Yiwen email yetweceggeε ar tansa id efkeḍ.
+Uqbel ad n-ceggeε email nniḍen, ilaq ad ḍfereḍ ayen yellan deg email dɣa ad sergegeḍ amiḍan agi d win inek(m).',
 'throttled-mailpassword' => 'Asmekti n wawal n uɛaddi yettwazen yagi deg {{PLURAL:$1|asrag agi aneggaru| $1 isragen agi ineggura}}. Asmekti n wawal n uɛaddi yettwazen tikelt kan mkul $1 swayeɛ. deg {{PLURAL:$1|asrag|azilal n $1 isragen}}.',
 'mailerror' => 'Agul asmi yettwazen e-mail: $1',
 'acct_creation_throttle_hit' => 'Amdan i seqdacen tansa IP inek/inem yesnulfud {{PLURAL:$1|yiwen amiḍan|$1 imiḍanen}} deg 24 izragen agi ineggura, negweḍ ar talast n turagt deg azilal agi n wakud.',
@@ -1290,6 +1353,7 @@ Ur ilaq ara ad i sɛu ugar n $1 {{PLURAL:$1|asekkil|isekkilen}}.',
 'recentchanges-label-minor' => 'Wagi d-abeddel amectuḥ',
 'recentchanges-label-bot' => 'D-arubut id yeseqdacen abeddel agi',
 'recentchanges-label-unpatrolled' => 'Abeddel agi mazal yesɛa aselken.',
+'recentchanges-legend-plusminus' => "(''± 123'')",
 'rcnotefrom' => "Deg ukessar llan ibeddlen seg wasmi '''$2''' (ar '''$1''').",
 'rclistfrom' => 'Ssken ibeddlen imaynuten seg $1',
 'rcshowhideminor' => '$1 ibeddlen ifessasen',
@@ -1571,6 +1635,8 @@ Ma aseqdac as yernu tastayt, ala ifuyla s lqem taneggarut id yekter aseqdac nni
 'listfiles_size' => 'Tiddi (bytes/octets)',
 'listfiles_description' => 'Aglam',
 'listfiles_count' => 'Ileqman',
+'listfiles-latestversion-yes' => 'Ih',
+'listfiles-latestversion-no' => 'Ala',
 
 # File description page
 'file-anchor-link' => 'Afaylu',
@@ -1666,6 +1732,9 @@ Ur tettuḍ ara ad selkeneḍ ma ur llan ara izdayen nniḍen ɣer tilɣatin uqb
 'randompage' => 'Asebter menwala',
 'randompage-nopages' => 'Ulac isebtar deg {{PLURAL:$2|tallunt n isemawen|tallunin n isemawen}} : $1.',
 
+# Random page in category
+'randomincategory-selectcategory-submit' => 'Ruḥ',
+
 # Random redirect
 'randomredirect' => 'Asemmimeḍ menwala',
 'randomredirect-nopages' => 'Ulac asebter n alsanamad deg tallunt n isemawen « $1 ».',
@@ -1691,6 +1760,8 @@ Ur tettuḍ ara ad selkeneḍ ma ur llan ara izdayen nniḍen ɣer tilɣatin uqb
 'statistics-users-active-desc' => 'Iseqdacen yesɛan xersum yiwet tigawt seg {{PLURAL:$1|ass agi aneggaru|$1 ussan agi ineggura}}',
 'statistics-mostpopular' => 'isebtar mmeẓren aṭṭas',
 
+'pageswithprop-submit' => 'Ruḥ',
+
 'doubleredirects' => 'Asemmimeḍ yeḍra snat tikwal',
 'doubleredirectstext' => 'Mkull ajerriḍ yesɛa azday ɣer asmimeḍ amezwaru akk d wis sin, ajerriḍ amezwaru n uḍris n usebter wis sin daɣen, iwumi yefkan asmimeḍ ṣaḥiḥ i yessefk ad sɛan isebtar azday ɣur-s.',
 'double-redirect-fixed-move' => 'Alsanamud agi, ɣef ayed asaḍas [[$1]] yetwebeddel isem, yetawi tura ɣer [[$2]].',
@@ -1715,6 +1786,7 @@ Ur tettuḍ ara ad selkeneḍ ma ur llan ara izdayen nniḍen ɣer tilɣatin uqb
 'ninterwikis' => '$1 {{PLURAL:$1|interwiki|interwikis}}',
 'nlinks' => '$1 {{PLURAL:$1|azday|izdayen}}',
 'nmembers' => '$1 {{PLURAL:$1|amaslad|imasladen}}',
+'nmemberschanged' => '$1 → $2 {{PLURAL:$2|amaslad|imasladen}}',
 'nrevisions' => '$1 {{PLURAL:$1|tasiwelt|tisiwal}}',
 'nviews' => '$1 {{PLURAL:$1|timeẓriwt|tuẓrin}}',
 'nimagelinks' => 'Yetseqdec ɣef $1 {{PLURAL:$1|asebter|isebtar}}',
@@ -1745,6 +1817,7 @@ Ur tettuḍ ara ad selkeneḍ ma ur llan ara izdayen nniḍen ɣer tilɣatin uqb
 'mostrevisions' => 'Isebtar i yettubedlen aṭas',
 'prefixindex' => 'Akk isebtaren s yisekkilen imezwura',
 'prefixindex-namespace' => 'Akkw isebtar s adat (tallunt n isemawe $1)',
+'prefixindex-strip' => 'Ekkes azwir deg umuɣ',
 'shortpages' => 'isebtar imecṭuḥen',
 'longpages' => 'Isebtar imeqqranen',
 'deadendpages' => 'isebtar mebla izdayen',
@@ -1859,7 +1932,8 @@ Ineggafen imazdayen : <code>$1</code> (ur d-renu acemma deg unadi inek/inem)',
 'listgrouprights' => 'Izerfan n igrawen n iseqdacen',
 'listgrouprights-summary' => 'Asebter agi yesɛa yiwen umuɣ n igrawen i sengelen deg wiki agi dɣa izerfan n wadduf i qqenen.
 Zemrent ad ilint [[{{MediaWiki:Listgrouprights-helppage}}|tilɣa nniḍen]] ɣef izerfan n yiwen.',
-'listgrouprights-key' => '*<span class="listgrouprights-granted">Izerfan sefkan</span>
+'listgrouprights-key' => 'Aglam :
+*<span class="listgrouprights-granted">Izerfan sefkan</span>
 *<span class="listgrouprights-revoked">Izerfan ekkesen</span>',
 'listgrouprights-group' => 'Agraw',
 'listgrouprights-rights' => 'Izerfan',
@@ -1913,8 +1987,8 @@ Tansa e-mail id ekfeḍ deg [[Special:Preferences|iɣewwaren inek/inem]] ad tban
 'usermessage-editor' => 'Ameskar n unagraw',
 
 # Watchlist
-'watchlist' => 'Umuɣ n uɛessi inu',
-'mywatchlist' => 'Umuɣ n uɛessi inu',
+'watchlist' => 'Umuɣ n uɛessi',
+'mywatchlist' => 'Umuɣ n uɛessi',
 'watchlistfor2' => 'I $1 $2',
 'nowatchlist' => 'Umuɣ n uɛessi inek d ilem.',
 'watchlistanontext' => 'G leɛnaya-k $1 iwakken ad twalaḍ neɣ tbeddleḍ iferdas deg wumuɣ n uɛessi inek.',
@@ -2011,9 +2085,11 @@ Tuɣalin d tadhelt :
 'deleteotherreason' => 'Taɣẓint nniḍen / taɣzint tamarnant :',
 'deletereasonotherlist' => 'Taɣẓint nniḍen',
 'deletereason-dropdown' => '* Tiɣẓinin n umḥu id t-uɣalen aṭas tikkwal
+** Spam
+** Ixṣaren
+** Akukel n Copyright
 ** Asuter n useqdac
-** Akukel n izerfan umeskar
-** Asfata',
+** Azday yerẓan',
 'delete-edit-reasonlist' => 'Beddel tiɣẓinin n umḥu n usebter',
 'delete-toobig' => 'Asebter agi yesɛa amezruy ameqqṛan aṭas n ibeddilen, yugar $1 {{PLURAL:$1|lqem|ileqman}}.
 Amḥu n isebtar am wagi yesɛa akref iwakken {{SITENAME}} ur yesɛu ara arway.',
@@ -2054,7 +2130,7 @@ G leɛnayek wekki ɣef taqeffalt "Back/Précédent" n browser/explorateur inek,
 'protect-unchain-permissions' => 'Kkes aseḍru i aṭas n tixtiṛiyin n usegdel',
 'protect-default' => '(ameslugen)',
 'protect-fallback' => 'Yeḥweǧ atrug « $1 »',
-'protect-level-sysop' => 'Inedbalen kan',
+'protect-level-sysop' => 'Ssireg inedbalen kan',
 'protect-summary-cascade' => 'acercur',
 'protect-expiring' => 'yemmut deg $1 (UTC)',
 'protect-expiring-local' => 'ad i neffeṛ ass n $1',
@@ -2090,6 +2166,7 @@ G leɛnayek wekki ɣef taqeffalt "Back/Précédent" n browser/explorateur inek,
 'viewdeletedpage' => 'Ẓer isebtar yettumḥan',
 'undelete-fieldset-title' => 'Erred ileqman',
 'undeleterevisions' => '$1 {{PLURAL:$1|lqem i ɣbeṛen|ileqman i ɣbeṛen}}',
+'undeletebtn' => 'Err-it',
 'undeletelink' => 'ẓeṛ/uɣaled',
 'undeleteviewlink' => 'ẓeṛ',
 'undeleteinvert' => 'Snegdam ayen textareḍ',
@@ -2161,7 +2238,10 @@ Asekcem aneggaru n useklas n ikyafen yella ddaw agi :',
 'ipadressorusername' => 'Tansa IP neɣ isem n wemseqdac',
 'ipbreason' => 'Ayɣer',
 'ipbsubmit' => 'Ɛekkel amseqdac-agi',
+'ipbother' => 'Tanzagt  nniḍen :',
 'ipboptions' => '2 isragen:2 hours,1 ass:1 day,3 ussan:3 days,1 imalas:1 week,2  imalasen:2 weeks,1 aggur:1 month,3 agguren:3 months,6 agguren:6 months,1 aseggwas:1 year,afdi:infinite',
+'ipbhidename' => 'Ffer isem n useqdac deg ibeddilen d umuγen',
+'ipbwatchuser' => 'Ḍfer isebtar n iseqdacen d idiwenniyen n useqdac agi',
 'badipaddress' => 'Tansa IP mačči d ṣaḥiḥ',
 'ipusubmit' => 'Ekkes akyaf agi',
 'unblocked' => 'Yetwekkes akyaf n [[User:$1|$1]]',
@@ -2210,6 +2290,7 @@ Ur tezmireḍ ara ad snulfuḍ amiḍan.',
 'lockdb' => 'Sekker database',
 
 # Move page
+'move-page' => 'Beddel isem n $1',
 'move-page-legend' => 'Smimeḍ asebter',
 'movepagetext' => "Seqdec tiferkit ddaw agi iwakken ad beddeleḍ isem n usebter, s usiweḍ n akkw amezruy is ɣer isem amaynut. Azwel aqbur ad yuɣal d asebter n usemmime ɣer azwel amaynut. Tzemreḍ ad mucceḍeḍ s uwurman isemmimen amiran i sweṛen ɣer azwel amezwaru. Ma ur tebɣiḍ ara at sexdemeḍ wagi, ilaq ad selkeneḍ akkw [[Special:DoubleRedirects|Asemmimeḍ yeḍran snat tikwal]] naɣ [[Special:BrokenRedirects|asmmimeḍ yerẓan]]. Ilaq ad sɛuḍ talkint belli izdayen tsweṛen ɣer aserken is.
 
@@ -2385,6 +2466,7 @@ Anda tebɣiḍ tesmimeḍ "[[:$1]]" yella yagi. tebɣiḍ ad temḥuḍ iwakken
 'spamprotectiontitle' => 'Aḥraz amgel "Spam"',
 'spamprotectiontext' => "Asebter i tebɣiḍ ad tesmektiḍ iɛekkel-it ''aḥraz mgel \"Spam\"''. Ahat yella wezday aberrani.",
 'spamprotectionmatch' => 'Aḍris-agi ur t-iɛeǧ \'\'"aḥraz mgel "Spam"\'\': $1',
+'spambot_username' => 'Assizdeg n spam sɣur MediaWiki',
 'spam_reverting' => 'Asuɣal i tasiwel taneggarut i ur tesɛi ara izdayen ɣer $1',
 'spam_blanking' => 'Akk tisiwal sɛan izdayen ɣer $1, ad yemḥu',
 
@@ -2398,14 +2480,33 @@ Anda tebɣiḍ tesmimeḍ "[[:$1]]" yella yagi. tebɣiḍ ad temḥuḍ iwakken
 'pageinfo-default-sort' => 'Tasarut n ufran s lexṣas',
 'pageinfo-length' => 'Tiddi n usebter (s itamḍanen)',
 'pageinfo-article-id' => 'Uṭṭun n usebter',
-'pageinfo-robot-policy' => 'Aẓayer n umsadday n unadi',
-'pageinfo-robot-index' => 'Ṭwamatar',
-'pageinfo-robot-noindex' => 'Arṭwamatar',
+'pageinfo-content-model' => 'Talɣa n ugbur n usebtar',
+'pageinfo-robot-policy' => 'Asbeddi sɣur iṛubuten',
+'pageinfo-robot-index' => 'Tessireg',
+'pageinfo-robot-noindex' => 'Tegdel',
 'pageinfo-views' => 'Amḍan n timuɣliwin',
 'pageinfo-watchers' => 'Amḍan n imttekkiyen yesɛan asebter agi deg umuɣ nsen n uɛassi',
+'pageinfo-few-watchers' => 'Kkes-as $1 {{PLURAL:$1|amanay|imanayen}}',
+'pageinfo-redirects-name' => 'Amḍan n izdayen ɣer asebtar agi',
 'pageinfo-subpages-name' => 'Adu-isebtar n usebter agi',
+'pageinfo-firstuser' => 'Ameslal n usebtar',
+'pageinfo-firsttime' => 'Azmez n usnulfu n usebtar',
+'pageinfo-lastuser' => 'Atekki aneggaru',
+'pageinfo-lasttime' => 'Azmez n ubeddel aneggaru',
+'pageinfo-edits' => 'Amḍan aɣrud n ibeddilen',
+'pageinfo-authors' => 'Amḍan aɣrud n imeskaren iwḥiden',
+'pageinfo-recent-edits' => 'Amḍan n ibeddilen imaynuten (deg $1 ineggura)',
+'pageinfo-recent-authors' => 'Amḍan n imeskaren iwḥiden imaynuten',
+'pageinfo-hidden-categories' => '{{PLURAL:$1|Taggayt yeffren|Taggayin yeffren}} ($1)',
+'pageinfo-templates' => '{{PLURAL:$1|Talɣa i seddan|Talɣiwin i seddan}} ($1)',
+'pageinfo-toolboxlink' => 'Tilɣa ɣef usebtar',
+'pageinfo-redirectsto-info' => 'tiɣa',
 'pageinfo-contentpage-yes' => 'Ih',
 'pageinfo-protect-cascading-yes' => 'Ih',
+'pageinfo-category-info' => 'Tilɣa ɣef taggayt',
+'pageinfo-category-pages' => 'Amḍan n isebtar',
+'pageinfo-category-subcats' => 'Amḍan n adutaggayin',
+'pageinfo-category-files' => 'Amḍan n ifuyla',
 
 # Patrolling
 'markaspatrolleddiff' => 'Rcem "yettwassenqden"',
@@ -2438,10 +2539,16 @@ Lukan a t-tesseqdceḍ yezmer ad yexsser aselkim inek/inem.",
 'file-nohires' => 'Ulac resolution i tameqqrant fell-as.',
 'svg-long-desc' => 'Afaylu SVG, tabadut n $1 × $2 pixel, lqedd : $3',
 'show-big-image' => 'Resolution tameqqrant',
+'file-info-png-looped' => 'deg taglult',
+'file-info-png-repeat' => 'yetwurar {{PLURAL:$1|tikelt|tikwal}}',
+'file-info-png-frames' => '$1 {{PLURAL:$1|tugna|tugniwin}}',
+'file-no-thumb-animation' => "'''Tamawt : Ɣef ljal n tilisa titiknitin, tugniwin n ufaylu agi ur sɛunt ara amray.'''",
+'file-no-thumb-animation-gif' => "'''Tamawt : Ɣef ljal n tilisa titiknitin, tugniwin n ifuyla GIF deg tabadut tameqṛant am ttagi ur sɛunt ara amray.'''",
 
 # Special:NewFiles
 'newimages' => 'Umuɣ n ifayluwen imaynuten',
 'imagelisttext' => "Deg ukessar yella wumuɣ n '''$1''' {{PLURAL:$1|ufaylu|yifayluwen}} $2.",
+'newimages-summary' => 'Asebtar agi uslig yebeqqeḍ ifuyla ineggura i kteren.',
 'newimages-legend' => 'Tastayt',
 'newimages-label' => 'Isem n ufaylu (naɣ aḥric ines) :',
 'showhidebots' => '($1 iṛubuten)',
@@ -2455,6 +2562,9 @@ Lukan a t-tesseqdceḍ yezmer ad yexsser aselkim inek/inem.",
 'minutes' => '{{PLURAL:$1|$1 tamrect|$1 timercin}}',
 'hours' => '{{PLURAL:$1|$1 asrag|$1 isragen}}',
 'days' => '{{PLURAL:$1|$1 ass|$1 ussan}}',
+'weeks' => '{{PLURAL:$1|$1 imalas|$1 imalasen}}',
+'months' => '{{PLURAL:$1|$1 aggur|$1 agguren}}',
+'years' => '{{PLURAL:$1|$1 aseggwas|$1 iseggwasen}}',
 'ago' => '$1 aya',
 'just-now' => 'Tura kan',
 
@@ -2543,7 +2653,11 @@ Izdayen nniḍen ɣef yiwen ajerriḍ llan d tisuraf, am isebtar ɣef anta tugna
 'exif-exposuretime-format' => '$1 tas ($2 tas)',
 'exif-fnumber' => 'Alday',
 'exif-exposureprogram' => 'Ahil n timzikent',
+'exif-spectralsensitivity' => 'Aḥalfu n uylal',
+'exif-isospeedratings' => 'Aḥalfu ISO',
+'exif-shutterspeedvalue' => 'Azzal n urjal n APEX',
 'exif-aperturevalue' => 'Alday n APEX',
+'exif-brightnessvalue' => 'Asaddi APEX',
 'exif-exposurebiasvalue' => 'Aseɣti n timzikent',
 'exif-maxaperturevalue' => 'Alday afellay',
 'exif-subjectdistance' => 'Ameccaq n usentel',
@@ -2561,6 +2675,7 @@ Izdayen nniḍen ɣef yiwen ajerriḍ llan d tisuraf, am isebtar ɣef anta tugna
 'exif-sensingmethod' => 'Tawsit n umaṭṭaf',
 'exif-filesource' => 'Aɣbal n ufaylu',
 'exif-scenetype' => 'Tawsit n usayes',
+'exif-customrendered' => 'Agmuḍ asagan',
 'exif-worldregiondest' => 'Timnaḍin n umaḍal yebeqqeḍen',
 'exif-countrydest' => 'Timura yebeqqeḍen',
 'exif-countrycodedest' => 'Tangalt n tamurt yebeqqeḍen',
index da96acc..30fec09 100644 (file)
@@ -368,10 +368,10 @@ $messages = array(
 'tog-extendwatchlist' => 'Бақылау тізімді ұлғайту (барлық жарамды өзгерістерді көрсету)',
 'tog-usenewrc' => 'Кеңейтілген жуықтағы өзгерістер (JavaScript)',
 'tog-numberheadings' => 'Мазмұн тақырыптарын автоматты нөмірлеу',
-'tog-showtoolbar' => 'Өңдеу құралдары орналасқан аспаптар жақтауын көрсету (JavaScript-ті қажет етеді)',
-'tog-editondblclick' => 'Қос шерту арқылы бетті өңдеу (JavaScript)',
+'tog-showtoolbar' => 'Өңдеу құралдарын көрсету',
+'tog-editondblclick' => 'Қос шерту арқылы бетті өңдеу',
 'tog-editsection' => 'Бөлімдерді [өңдеу] сілтемесімен өңдеуін қос',
-'tog-editsectiononrightclick' => 'Бөлім тақырыбын оң нұқумен өңдеуін қос (JavaScript)',
+'tog-editsectiononrightclick' => 'Бөлім тақырыбын оң нұқумен бөлім өңдеуін қосу',
 'tog-showtoc' => 'Мазмұнын көрсету (3-тен астам бөлімі болған жағдайда ғана)',
 'tog-rememberpassword' => 'Тіркелгімді осы браузерде ұмытпа (ең көбі $1 {{PLURAL:$1|күн|күн}})',
 'tog-watchcreations' => 'Мен бастаған беттерді бақылау тізіміне қос',
@@ -388,7 +388,7 @@ $messages = array(
 'tog-shownumberswatching' => 'Бақылап тұрған қатысушылардың санын көрсет',
 'tog-oldsig' => 'Ағымдағы қолтаңбаңыз:',
 'tog-fancysig' => 'Қолтаңбаны уикимәтін ретінде қарастыру (автоматты сілтеме қойылмайды)',
-'tog-uselivepreview' => 'Тура қарап шығуды қолдану (JavaScript) (Сынақтама)',
+'tog-uselivepreview' => 'Тура қарап шығуды қолдану (сынақтық)',
 'tog-forceeditsummary' => 'Өңдеменің қысқаша мазмұндамасы бос қалғанда маған ескерт',
 'tog-watchlisthideown' => 'Өңдемелерімді бақылау тізімінен жасыр',
 'tog-watchlisthidebots' => 'Бот өңдемелерін бақылау тізімінен жасыр',
@@ -808,6 +808,8 @@ $2',
 'userlogin-resetpassword-link' => 'Құпия сөздіңізді ұмыттыңыз ба?',
 'helplogin-url' => 'Help:Тіркелу',
 'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|Тіркелуге көмек]]',
+'userlogin-loggedin' => '{{GENDER:$1|$1}} ретінде әлдеқашан кіргенсіз.
+Төмендегі пішінді басқа қатысушы кіруі ретінде қолданыңыз.',
 'userlogin-createanother' => 'Басқа тіркелгі жасау',
 'createacct-join' => 'Төменге өзіңіз туралы ақпарат енгізіңіз.',
 'createacct-another-join' => 'Төменге жаңа тіркелгі туралы ақпарат енгізіңіз.',
@@ -1098,7 +1100,7 @@ IP-мекенжайыңыз бұл беттің түзету тарихында
 Егер жазуыңыздың еркін өңделуін қаламасаңыз, мында жарияламауыңыз жөн.<br />
 Тағы да, бұл мағлұмат өзіңіз жазғаныңызға, не қоғам қазынасынан немесе сондай ашық қорлардан көшірілгеніне бізге уәде бересіз (көбірек ақпарат үшін $1 қужатын қараңыз).
 '''АВТОРЛЫҚ ҚҰҚЫҚПЕН ҚОРҒАУҒАН МАҒЛҰМАТТЫ РҰҚСАТСЫЗ ЖАРИЯЛАМАҢЫЗ!'''",
-'longpageerror' => "'''ҚАТЕЛІК: Сақтамақ мәтініңіздін мөлшері — {{PLURAL:$1|килобайт|$1 килобайт}}, ең көбі {{PLURAL:$2|килобайт|$2 килобайт}} KB рұқсат етілген мөлшерінен асқан.
+'longpageerror' => "'''ҚАТЕЛІК: Сақтамақ мәтініңіздін мөлшері {{PLURAL:$1|килобайт|$1 килобайт}}, ең көбі {{PLURAL:$2|килобайт|$2 килобайт}} рұқсат етілген мөлшерінен асқан.
 Бұл сақталмайды.'''",
 'readonlywarning' => "'''ЕСКЕТУ: Дерекқор баптау үшін құлыпталған, сондықтан дәл қазір өңдемеңізді сақтай алмайсыз.
 Кейін қолдану үшін мәтінді қойып алып және қойып, мәтін файлына сақтауңызға болады.''' 
@@ -1189,10 +1191,9 @@ $3 келтірілген себебі: ''$2''",
 'last' => 'соң.',
 'page_first' => 'алғашқысына',
 'page_last' => 'соңғысына',
-'histlegend' => "</span><br /><span style=\"white-space:nowrap;\">Сыртқы құралдар: [http://vs.aka-online.de/cgi-bin/wppagehiststat.pl?lang=kk.wikipedia&page={{FULLPAGENAMEE}} Өңдеу статистикасы] '''·'''</span> <span style=\"white-space:nowrap;\">[http://wikipedia.ramselehof.de/wikiblame.php?lang=kk&article={{FULLPAGENAMEE}} Өзгеріс тарихын іздеу] '''·'''</span> <span style=\"white-space:nowrap;\">[//toolserver.org/~daniel/WikiSense/Contributors.php?wikilang=kk&wikifam=.wikipedia.org&grouped=on&page={{FULLPAGENAMEE}} Үлестер статистикасы] '''·'''</span> <span style=\"white-space:nowrap;\">[http://toolserver.org/~snottywong/usersearch.html?page={{FULLPAGENAMEE}} Қатысушы өңдемелері] '''·'''</span> <span style=\"white-space:nowrap;\">[//toolserver.org/~mzmcbride/cgi-bin/watcher.py?db=kkwiki_p&titles={{FULLPAGENAMEE}} Көрушілер саны] '''·'''</span> <span style=\"white-space:nowrap;\">[http://stats.grok.se/kk/latest/{{FULLPAGENAMEE}} Бетің қаралу статистикасы] '''·'''</span> Тағы қараңыз: <span style=\"white-space:nowrap;\">[{{fullurl:{{FULLPAGENAMEE}}|action=info}} бет туралы мәліметтер]</span>
-----
-Айырмасын бөлектеу: салыстырмақ нұсқаларының қосу көздерін белгілеп <Enter> пернесін басыңыз, немесе төмендегі батырманы нұқыңыз.<br />
-Шартты белгілер: <span style=\"white-space:nowrap;\">(ағым.) = ағымдық нұсқамен айырмасы, <span style=\"white-space:nowrap;\">(соң.) = алдыңғы нұсқамен айырмасы, </span> <span style=\"white-space:nowrap;\">&nbsp; '''ш''' = [[Уикипедия:Шағын өңдеме|шағын өңдеме]], → = [[Help:Бөлім#Бөлімін өңдеу|бөлімін өңдеу]]</span></div>",
+'histlegend' => 'Айырмасын бөлектеу: салыстырмақ нұсқаларының қосу көздерін белгілеп <Enter> пернесін басыңыз, немесе төмендегі батырманы нұқыңыз.<br />
+Шартты белгілер: (ағым.) = ағымдық нұсқамен айырмасы,
+(соң.) = алдыңғы нұсқамен айырмасы, ш = шағын өңдеме',
 'history-fieldset-title' => 'Тарихынан іздеу',
 'history-show-deleted' => 'Жойылғанын ғана көрсету',
 'histfirst' => 'Ең ескісіне',
@@ -1347,7 +1348,7 @@ $1",
 'showingresultsheader' => "«'''$4'''» үшін {{PLURAL:$5|тек '''$1''' нәтиже табылды|табылған '''$3''' нәтиженің '''$1—$2''' аралығы көрсетілген}}",
 'search-nonefound' => 'Сұрауға сәйкес нәтижелер табылмады.',
 'powersearch-legend' => 'Кеңейтілген іздеу',
-'powersearch-ns' => 'Ð\9cÑ\8bна ÐµÑ\81Ñ\96м Ð°Ñ\8fлаÑ\80Ð´а іздеу:',
+'powersearch-ns' => 'Ð\90Ñ\82аÑ\83 ÐºÐµÒ£Ñ\96Ñ\81Ñ\82Ñ\96кÑ\82еÑ\80Ñ\96 Ð±Ð¾Ð¹Ñ\8bнÑ\88а іздеу:',
 'powersearch-redir' => 'Айдатуларды тізімдеу',
 'powersearch-togglelabel' => 'Белгілеу:',
 'powersearch-toggleall' => 'Барлығы',
@@ -1643,12 +1644,14 @@ $1",
 'recentchanges-label-bot' => 'Бұл өңдемені бот жасады.',
 'recentchanges-label-unpatrolled' => 'Бұл өңдеме әлі тексеруден өтпеді.',
 'recentchanges-label-plusminus' => 'Байт бойынша беттің өзгеріс мөлшері',
+'recentchanges-legend-heading' => "'''Шартты белгілер:'''",
 'recentchanges-legend-newpage' => 'қ. [[Special:NewPages|бөлек бетте]]',
+'recentchanges-legend-plusminus' => "(''±123'')",
 'rcnotefrom' => "Төменде '''$2''' кезінен бергі ('''$1''' жеткенше дейін) өзгерістер көрсетіледі.",
 'rclistfrom' => '$1 кезінен бергі жаңа өзгерістерді көрсет.',
 'rcshowhideminor' => 'Шағын өңдемелерді $1',
 'rcshowhidebots' => 'Боттарды $1',
-'rcshowhideliu' => 'Ð\9aÑ\96Ñ\80гендерді $1',
+'rcshowhideliu' => 'ТÑ\96Ñ\80келгендерді $1',
 'rcshowhideanons' => 'Кірмегендерді $1',
 'rcshowhidepatr' => 'Зерттелген өңдемелерді $1',
 'rcshowhidemine' => 'Өңдемелерімді $1',
@@ -1992,6 +1995,7 @@ URL дұрыс екендігін және торап істеп тұрғаны
 'ninterwikis' => '$1 {{PLURAL:$1|интеруики|интеруикилер}}',
 'nlinks' => '$1 {{PLURAL:$1|сілтеме|сілтемелер}}',
 'nmembers' => '$1 {{PLURAL:$1|мүше|мүше}}',
+'nmemberschanged' => '$1 → $2 {{PLURAL:$2|мүше|мүше}}',
 'nrevisions' => '$1 {{PLURAL:$1|түзету|түзету}}',
 'nviews' => '$1 {{PLURAL:$1|қаралу|қаралу}}',
 'nimagelinks' => '$1 {{PLURAL:$1|бетінде|беттерінде}} қолданылады',
@@ -2196,7 +2200,7 @@ URL дұрыс екендігін және торап істеп тұрғаны
 'notvisiblerev' => 'Түзету жойылды',
 'watchlist-details' => 'Тізіміңізде $1 бет бар (талқылау беттері саналмайды).',
 'wlheader-enotif' => 'Ескерту хат жіберуі қосылған.',
-'wlheader-showupdated' => "Соңғы келіп-кетуіңізден бері өзгертілген беттерді '''жуан''' қаріпімен көрсет",
+'wlheader-showupdated' => "Соңғы келіп-кетуіңізден бері өзгертілген беттер '''жуан''' қаріпімен көрсетіледі.",
 'watchmethod-recent' => 'бақылаулы беттер үшін жуықтағы өзгерістерді тексеру',
 'watchmethod-list' => 'жуықтағы өзгерістер үшін бақылаулы беттерді тексеру',
 'watchlistcontains' => 'Бақылау тізіміңізде $1 бет бар.',
@@ -2287,6 +2291,7 @@ $NEWPAGE
 'delete-warning-toobig' => 'Бұл бетте үлкен өңдеу тарихы бар, $1 {{PLURAL:$1|түзетуден|түзетуден}} астам.
 Бұның жоюы {{SITENAME}} торабындағы дерекқор әрекеттерді үзіп тастауын мүмкін;
 бұны абайлап өткізіңіз.',
+'deleting-backlinks-warning' => "'''Ескерту:''' Сіз жоймақшы болған мақалаға басқа беттерден сілтенген.",
 
 # Rollback
 'rollback' => 'Өңдемелерді шегіндіру',
@@ -2724,6 +2729,7 @@ MediaWiki жүйесінің [[{{#special:Import}}|сырттан алу бет
 'allmessages-filter-unmodified' => 'Өзгертілмегендер',
 'allmessages-filter-all' => 'Барлығы',
 'allmessages-filter-modified' => 'Өзгертілгендер',
+'allmessages-prefix' => 'Префикс бойынша сүзгі',
 'allmessages-language' => 'Тілі:',
 'allmessages-filter-submit' => 'Өту',
 
@@ -2982,7 +2988,7 @@ $1',
 'svg-long-desc' => 'SVG файлы, кесімді $1 × $2 нүкте, файл мөлшері: $3',
 'svg-long-desc-animated' => 'SVG қозғалысты файлы, кесімді $1 × $2 нүкте, файл өлшемі: $3',
 'svg-long-error' => 'жарамсыз SVG файлы: $1',
-'show-big-image' => 'Ð\96оÒ\93аÑ\80Ñ\8b Ð°Ð¶Ñ\8bÑ\80аÑ\82Ñ\8bлÑ\8bмдÑ\8b',
+'show-big-image' => 'ТүпнұÑ\81Ò\9bа Ñ\84айл',
 'show-big-image-preview' => 'Бұл қарап шығудағы өлшемі: $1.',
 'show-big-image-other' => 'Басқа {{PLURAL:$2|ажыратылымдық|ажыратылымдық}}: $1.',
 'show-big-image-size' => '$1 × $2 нүкте',
@@ -3345,6 +3351,7 @@ $1',
 
 'exif-ycbcrpositioning-1' => 'Орталықты',
 
+'exif-dc-contributor' => 'Үлескерлер',
 'exif-dc-date' => 'Күн(дер)',
 'exif-dc-publisher' => 'Жариялаушы',
 'exif-dc-relation' => 'Қатысты медиа',
@@ -3442,6 +3449,7 @@ $5
 # Separators for various lists, etc.
 'semicolon-separator' => ';',
 'colon-separator' => ':&#32;',
+'quotation-marks' => '"$1"',
 
 # Multipage image navigation
 'imgmultipageprev' => '← алдыңғы бетке',
@@ -3450,6 +3458,7 @@ $5
 'imgmultigoto' => '$1 бетіне өту',
 
 # Language selector for translatable SVGs
+'img-lang-default' => '(әдепкі тіл)',
 'img-lang-go' => 'Өту',
 
 # Table pager
@@ -3472,6 +3481,7 @@ $5
 
 # Size units
 'size-bytes' => '$1 байт',
+'size-kilobytes' => '$1 КБ',
 
 # Live preview
 'livepreview-loading' => 'Жүктеуде…',
@@ -3719,6 +3729,9 @@ $5
 'duration-millennia' => '$1 {{PLURAL:$1|мың жылдық|мың жылдық}}',
 
 # Limit report
+'limitreport-cputime-value' => '$1 {{PLURAL:$1|секунт|секунт}}',
+'limitreport-walltime' => 'Нақты уақытта қолданылуы',
+'limitreport-walltime-value' => '$1 {{PLURAL:$1|секунт|секунт}}',
 'limitreport-postexpandincludesize-value' => '$1/$2 {{PLURAL:$1|байт|байт}}',
 'limitreport-templateargumentsize-value' => '$1/$2 {{PLURAL:$2|байт|байт}}',
 
index 16ef550..2e6a7c2 100644 (file)
@@ -10,7 +10,9 @@
  * @author Albamhandae
  * @author Altostratus
  * @author Chanhee
+ * @author ChongDae
  * @author Chulki Lee
+ * @author Clockoon
  * @author Cwt96
  * @author Devunt
  * @author Ficell
  * @author LFM
  * @author Mintz0223
  * @author Pi.C.Noizecehx
+ * @author Priviet
  * @author PuzzletChung
  * @author TheAlpha for knowledge
  * @author ToePeu
+ * @author Yjs5497
  * @author Yknok29
  * @author לערי ריינהארט
  * @author 관인생략
@@ -545,7 +549,7 @@ $messages = array(
 'history' => '문서 역사',
 'history_short' => '역사',
 'updatedmarker' => '마지막으로 방문한 뒤 바뀜',
-'printableversion' => '인쇄용 문서',
+'printableversion' => '인쇄용 ',
 'permalink' => '고유 링크',
 'print' => '인쇄',
 'view' => '보기',
@@ -805,7 +809,7 @@ $2',
 'userlogin-noaccount' => '계정이 없나요?',
 'userlogin-joinproject' => '{{SITENAME}}에 가입하세요',
 'nologin' => '계정이 없나요? $1.',
-'nologinlink' => 'ê³\84ì \95ì\9d\84 ë§\8cë\93¤ê¸°',
+'nologinlink' => 'ê³\84ì \95ì\9d\84 ë§\8cë\93\9cì\84¸ì\9a\94',
 'createaccount' => '계정 만들기',
 'gotaccount' => '계정이 이미 있다면, $1.',
 'gotaccountlink' => '로그인하세요',
@@ -1254,6 +1258,9 @@ $2개 보다 적게 {{PLURAL:$2|써야}} 하지만 {{PLURAL:$1|지금은 $1개
 'cantcreateaccount-text' => "현재 아이피 주소('''$1''')는 [[User:$3|$3]] 사용자에 의해 계정 만들기가 차단되었습니다.
 
 차단 이유는 다음과 같습니다: $2",
+'cantcreateaccount-range-text' => "당신의 IP 주소('''\$4''')가 속해 있는 '''\$1''' 대역에서의 계정 생성을 [[User:\$3|\$3]] 사용자가 차단하였습니다.
+
+\$3 사용자가 제시한 이유는 \"\$2\"입니다.",
 
 # History pages
 'viewpagelogs' => '이 문서의 기록 보기',
@@ -1471,7 +1478,7 @@ $1",
 'searchall' => '모두',
 'showingresults' => "'''$2'''번 부터의 {{PLURAL:$1|결과 '''1'''개|결과 '''$1'''개}}입니다.",
 'showingresultsnum' => "'''$2'''번 부터의 {{PLURAL:$3|결과 '''1'''개|결과 '''$3'''개}} 입니다.",
-'showingresultsheader' => "'''$4''' ê²\80ì\83\89ì\96´ì\97\90 ë\8c\80í\95\98ì\97¬ {{PLURAL:$5|ê²°ê³¼ '''$3'''ê°\9c ì¤\91 '''$1'''ê°\9c|ê²°ê³¼ '''$3'''ê°\9c ì¤\91 '''$1 - $2'''ë²\88째}}를 ë³´ì\97¬ ì£¼ê³  ì\9e\88ì\8aµë\8b\88ë\8b¤",
+'showingresultsheader' => "'''$4''' ê²\80ì\83\89ì\96´ì\97\90 ë\8c\80í\95\9c {{PLURAL:$5|ê²°ê³¼ '''$3'''ê°\9c ì¤\91 '''$1'''ê°\9c|ê²°ê³¼ '''$3'''ê°\9c ì¤\91 '''$1 - $2'''ë²\88째}}",
 'search-nonefound' => '검색어와 일치하는 결과가 없습니다.',
 'powersearch-legend' => '고급 검색',
 'powersearch-ns' => '다음 이름공간에서 검색:',
@@ -1785,17 +1792,19 @@ HTML 태그를 확인하세요.',
 'recentchanges-summary' => '위키의 최근 바뀜이 나와 있습니다.',
 'recentchanges-noresult' => '지정한 조건과 일치하는 주어진 기간 동안 바뀜이 없습니다.',
 'recentchanges-feed-description' => '위키의 최근 바뀜이 나와 있습니다.',
-'recentchanges-label-newpage' => '새로운 문서',
+'recentchanges-label-newpage' => '새 문서',
 'recentchanges-label-minor' => '사소한 편집',
 'recentchanges-label-bot' => '봇의 편집',
 'recentchanges-label-unpatrolled' => '아직 검토하지 않은 편집',
 'recentchanges-label-plusminus' => '바이트로 표기된 바뀐 문서 크기',
-'recentchanges-legend-newpage' => '([[Special:NewPages|새 문서의 목록]]도 참고하세요)',
+'recentchanges-legend-heading' => "'''범례:'''",
+'recentchanges-legend-newpage' => '([[Special:NewPages|새 문서 목록]]도 보세요)',
+'recentchanges-legend-plusminus' => "(''±123'')",
 'rcnotefrom' => "다음은 '''$2'''에서부터 바뀐 문서 '''$1'''개입니다.",
 'rclistfrom' => '$1 이래로 새로 바뀐 문서 보기',
 'rcshowhideminor' => '사소한 편집을 $1',
 'rcshowhidebots' => '봇을 $1',
-'rcshowhideliu' => '등록 사용자를 $1',
+'rcshowhideliu' => '등록 사용자를 $1',
 'rcshowhideanons' => '익명 사용자를 $1',
 'rcshowhidepatr' => '검토된 편집을 $1',
 'rcshowhidemine' => '내 편집을 $1',
@@ -2492,7 +2501,7 @@ URL이 맞고 해당 웹사이트가 작동하는지 확인해주세요.',
 'notvisiblerev' => '이 판은 삭제되었습니다.',
 'watchlist-details' => '토론을 제외하고 {{PLURAL:$1|문서 $1개}}를 주시하고 있습니다.',
 'wlheader-enotif' => '이메일 알림 기능이 활성화되었습니다.',
-'wlheader-showupdated' => "ë§\88ì§\80ë§\89ì\9c¼ë¡\9c ë°©ë¬¸í\95\9c ì\9d´í\9b\84ì\97\90 ë°\94ë\80\90 ë¬¸ì\84\9cë\8a\94 '''êµµì\9d\80 ê¸\80ì\94¨'''ë¡\9c ë³´ì\97¬ì§\91니다.",
+'wlheader-showupdated' => "ë§\88ì§\80ë§\89ì\9c¼ë¡\9c ë°©ë¬¸í\95\9c ì\9d´í\9b\84ì\97\90 ë°\94ë\80\90 ë¬¸ì\84\9cë\8a\94 '''êµµì\9d\80 ê¸\80ì\94¨'''ë¡\9c ë³´ì\9e\85니다.",
 'watchmethod-recent' => '주시된 문서를 확인하고자 최근 편집을 확인',
 'watchmethod-list' => '최근 편집을 확인하고자 주시된 문서 확인',
 'watchlistcontains' => '{{PLURAL:$1|문서 $1개}}를 주시하고 있습니다.',
@@ -2785,7 +2794,7 @@ $1',
 'whatlinkshere-next' => '{{PLURAL:$1|다음|다음 $1개}}',
 'whatlinkshere-links' => '← 가리키는 문서 목록',
 'whatlinkshere-hideredirs' => '넘겨주기를 $1',
-'whatlinkshere-hidetrans' => '틀을 $1',
+'whatlinkshere-hidetrans' => '끼워넣기를 $1',
 'whatlinkshere-hidelinks' => '링크를 $1',
 'whatlinkshere-hideimages' => '파일 링크를 $1',
 'whatlinkshere-filters' => '필터',
@@ -3129,7 +3138,7 @@ $2',
 'import-error-interwiki' => '"$1" 문서는 제목이 바깥 링크(인터위키)용으로 할당되어 있기 때문에 가져오지 않습니다.',
 'import-error-special' => '"$1" 문서는 특수 문서에 속해 있기 때문에 가져오지 않습니다.',
 'import-error-invalid' => '"$1" 문서는 제목이 잘못되었기 때문에 가져오지 않습니다.',
-'import-error-unserialize' => '"$1" 문서의 $2 판이 일렬적이지 않습니다. $3 콘텐츠 모델을 사용하여 $4 형식으로 일렬화되도록 판을 보고했습니다.',
+'import-error-unserialize' => '"$1" 문서의 $2 판이 일렬적이지 않습니다. $3 내용 모델을 사용하여 $4 형식으로 일렬화되도록 판을 보고했습니다.',
 'import-options-wrong' => '잘못된 {{PLURAL:$2|선택 사항}}: <nowiki>$1</nowiki>',
 'import-rootpage-invalid' => '주어진 루트 문서는 잘못된 제목입니다.',
 'import-rootpage-nosubpage' => '루트 문서의 "$1" 이름공간은 하위 문서를 허용하지 않습니다.',
@@ -3195,7 +3204,7 @@ $2',
 'tooltip-t-emailuser' => '이 사용자에게 이메일 보내기',
 'tooltip-t-upload' => '파일 올리기',
 'tooltip-t-specialpages' => '모든 특수 문서의 목록',
-'tooltip-t-print' => '이 문서의 인쇄용 버전',
+'tooltip-t-print' => '이 문서의 인쇄용 ',
 'tooltip-t-permalink' => '문서의 이 판에 대한 고유링크',
 'tooltip-ca-nstab-main' => '본문 보기',
 'tooltip-ca-nstab-user' => '사용자 문서 보기',
@@ -3221,7 +3230,7 @@ $2',
 'tooltip-undo' => '"편집 취소" 기능을 사용하면 이 편집이 되돌려지고 차이 보기 기능이 미리 보기 형식으로 나타납니다. 편집 요약에 이 편집을 왜 되돌리는지에 대한 이유를 쓸 수 있습니다.',
 'tooltip-preferences-save' => '환경 설정 저장하기',
 'tooltip-summary' => '짧은 요약을 적어주세요',
-'interlanguage-link-title' => '$2 - $1',
+'interlanguage-link-title' => '$1 – $2',
 
 # Stylesheets
 'common.css' => '/* 이 CSS 설정은 모든 스킨에 동일하게 적용됩니다 */',
@@ -3286,7 +3295,7 @@ $2',
 'pageinfo-length' => '문서 길이 (바이트)',
 'pageinfo-article-id' => '문서 ID',
 'pageinfo-language' => '문서 내용 언어',
-'pageinfo-content-model' => '문서 콘텐츠 모델',
+'pageinfo-content-model' => '문서 내용 모델',
 'pageinfo-robot-policy' => '로봇에 의한 색인',
 'pageinfo-robot-index' => '허용됨',
 'pageinfo-robot-noindex' => '불허됨',
@@ -4064,13 +4073,14 @@ $5
 'version-entrypoints-scriptpath' => '[https://www.mediawiki.org/wiki/Manual:$wgScriptPath 스크립트 경로]',
 
 # Special:Redirect
-'redirect' => '파일, 사용자나 판 ID별 넘겨주기',
+'redirect' => '파일, 사용자, 문서나 판 ID로 넘겨주기',
 'redirect-legend' => '파일이나 문서로 넘겨주기',
-'redirect-summary' => 'ì\9d´ í\8a¹ì\88\98 ë¬¸ì\84\9cë\8a\94 í\8c\8cì\9d¼(í\8c\8cì\9d¼ ì\9d´ë¦\84ì\9d\84 ì§\80ì \95), ë¬¸ì\84\9c\8c\90 ID를 ì§\80ì \95\82\98 ì\82¬ì\9a©ì\9e\90 ë¬¸ì\84\9c\82¬ì\9a©ì\9e\90 ID를 ì \95ì\88\98ë¡\9c ì§\80ì \95)ë¡\9c ë\84\98겨ì¤\8dë\8b\88ë\8b¤. ì\82¬ì\9a©ë²\95: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revision/328429]], í\98¹ì\9d\80 [[{{#Special:Redirect}}/user/101]].',
+'redirect-summary' => 'ì\9d´ í\8a¹ì\88\98 ë¬¸ì\84\9cë\8a\94 í\8c\8cì\9d¼(í\8c\8cì\9d¼ ì\9d´ë¦\84ì\9d´ ì£¼ì\96´ì§\90), ë¬¸ì\84\9c\8c\90 IDë\82\98 ë¬¸ì\84\9c IDê°\80 ì£¼ì\96´ì§\90\82\98 ì\82¬ì\9a©ì\9e\90 ë¬¸ì\84\9c\88«ì\9e\90ë¡\9c í\91\9cì\8b\9cë\90\9c ì\82¬ì\9a©ì\9e\90 IDê°\80 ì£¼ì\96´ì§\90)ë¡\9c ë\84\98겨ì¤\8dë\8b\88ë\8b¤. ì\82¬ì\9a©ë²\95: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], ë\98\90ë\8a\94 [[{{#Special:Redirect}}/user/101]].',
 'redirect-submit' => '보기',
 'redirect-lookup' => '찾을 종류:',
 'redirect-value' => '값:',
 'redirect-user' => '사용자 ID',
+'redirect-page' => '문서 ID',
 'redirect-revision' => '문서 판',
 'redirect-file' => '파일 이름',
 'redirect-not-exists' => '값을 찾을 수 없습니다',
@@ -4312,10 +4322,12 @@ $5
 'expand_templates_input' => '전개할 내용:',
 'expand_templates_output' => '결과',
 'expand_templates_xml_output' => 'XML 출력',
+'expand_templates_html_output' => '원본 HTML 출력',
 'expand_templates_ok' => '확인',
 'expand_templates_remove_comments' => '주석 제거',
 'expand_templates_remove_nowiki' => '결과에서 <nowiki> 태그를 숨기기',
 'expand_templates_generate_xml' => 'XML 구문 트리 보기',
+'expand_templates_generate_rawhtml' => '원본 HTML 보이기',
 'expand_templates_preview' => '미리 보기',
 
 );
index 51cf21f..94720b8 100644 (file)
@@ -124,7 +124,7 @@ $messages = array(
 'tog-editsection' => 'Хар бёлюмге «тюрлендир» джибериуню кёргюз',
 'tog-editsectiononrightclick' => 'Бёлюмлени бёлюм башлыкъгъа басханлай тюрлендириу бетин ач',
 'tog-showtoc' => 'Башларын кёргюз (3-ден кёб бёлюм башлыгъы болгъан бетлеге)',
-'tog-rememberpassword' => 'Бу компьютерде мени тергеў джазыўуму сакъла (эм кёб $1 {{PLURAL:$1|кюн|кюн}})',
+'tog-rememberpassword' => 'Бу компьютерде мени тергеў джазыўуму сакъла (эм кёб $1 {{PLURAL:$1|1=кюн|кюн}})',
 'tog-watchcreations' => 'Мен къурагъан (башлагъан) бетлени эм мен джюклеген файлланы кёзюмде тургъан тизмеме къош',
 'tog-watchdefault' => 'Мен тюрлендирген бетлени эм файлланы кёзюмде тургъан тизмеме къош',
 'tog-watchmoves' => 'Мен атларын ауушдургъан бетлени эм файлланы кёзюмде тургъан тизмеме къош',
@@ -229,16 +229,16 @@ $messages = array(
 'december-date' => '$1 декабрь',
 
 # Categories related messages
-'pagecategories' => '{{PLURAL:$1|Категория|Категорияла}}',
+'pagecategories' => '{{PLURAL:$1|1=Категория|Категорияла}}',
 'category_header' => '«$1» категориядагъы бетле',
 'subcategories' => 'Тюбкатегорияла',
 'category-media-header' => '«$1» категориядагъы файлла',
 'category-empty' => "''Бу категория бусагъатда бошду.''",
-'hidden-categories' => '{{PLURAL:$1|Джашырылгъан категория|Джашырылгъан категорияла}}',
+'hidden-categories' => '{{PLURAL:$1|1=Джашырылгъан категория|Джашырылгъан категорияла}}',
 'hidden-category-category' => 'Джашыртын категорияла',
-'category-subcat-count' => '{{PLURAL:$2|Бу категориягъа къуру баргъан тюбкатегория киреди.|$2 тюбкатегориядан $1 киреди бу категориягъа.}}',
+'category-subcat-count' => '{{PLURAL:$2|1=Бу категориягъа къуру баргъан тюбкатегория киреди.|$2 тюбкатегориядан $1 киреди бу категориягъа.}}',
 'category-subcat-count-limited' => 'Бу категорияда {{PLURAL:$1|$1 тюбкатегория}} барды.',
-'category-article-count' => '{{PLURAL:$2|Бу категорияда къуру бир бет барды.|Бу категориядагъы $2 бетден $1 кёргюзюлгенди.}}',
+'category-article-count' => '{{PLURAL:$2|1=Бу категорияда къуру бир бет барды.|Бу категориядагъы $2 бетден $1 кёргюзюлгенди.}}',
 'category-article-count-limited' => 'Бу категорияда {{PLURAL:$1|$1 бет}} барды.',
 'category-file-count' => '{{PLURAL:$2|Бу категорияда къуру бир файл барды.|Категориядагъы $2 файлдан {{PLURAL:$1|$1 файлы кёргюзюлгенди}}.}}',
 'category-file-count-limited' => 'Бу категория да {{PLURAL:$1|$1 файл}} барды.',
@@ -308,7 +308,7 @@ $messages = array(
 'delete' => 'Кетер',
 'deletethispage' => 'Бу бетни кетер',
 'undelete_short' => '$1 {{PLURAL:$1|тюрлендириуню}} къайтар',
-'viewdeleted_short' => '{{PLURAL:$1|1|$1}} кетерилген тюрлендириуге къарау',
+'viewdeleted_short' => '{{PLURAL:$1|1=1|$1}} кетерилген тюрлендириуге къарау',
 'protect' => 'Джакъла',
 'protect_change' => 'тюрлендир',
 'protectthispage' => 'Бу бетни джакъла',
@@ -336,7 +336,7 @@ $messages = array(
 'redirectedfrom' => '(«$1» бетден джиберилгенди)',
 'redirectpagesub' => 'Башха бетге джибериучю бет',
 'lastmodifiedat' => 'Бу бетни ахыр тюрленнгени: $2, $1.',
-'viewcount' => 'Бу бетге {{PLURAL:$1|1|$1}} кере киргендиле.',
+'viewcount' => 'Бу бетге {{PLURAL:$1|1=1|$1}} кере киргендиле.',
 'protectedpage' => 'Джакъланнган бет',
 'jumpto' => 'Бери кёчерге:',
 'jumptonavigation' => 'навигация',
@@ -371,7 +371,7 @@ $1',
 
 'badaccess' => 'Кириуню халаты',
 'badaccess-group0' => 'Сизни соргъан амалны этерге эркинлигигиз джокъду.',
-'badaccess-groups' => 'Сиз соргъан амалны къуру $1 {{PLURAL:$2|группаны|группаланы}} къошулуучуларыны этерге мадарлары барды.',
+'badaccess-groups' => 'Сиз соргъан амалны къуру $1 {{PLURAL:$2|1=группаны|группаланы}} къошулуучуларыны этерге мадарлары барды.',
 
 'versionrequired' => 'MediaWiki-ни $1 версиясы керекди',
 'versionrequiredtext' => 'Бу бетде ишлер ючюн MediaWiki-ни $1 версиясы керекди.  [[Special:Version|Хайырладырылгъан программаны версияларыны юсюнден информациягъа]] къара.',
@@ -379,9 +379,9 @@ $1',
 'ok' => 'ОК',
 'retrievedfrom' => 'Чыкъгъаны — «$1»',
 'youhavenewmessages' => 'Сизге $1 келдиле ($2).',
-'youhavenewmessagesfromusers' => '{{PLURAL:$3|Башха бир къошулуучудан|$3 къошулуучудан}} сеннге $1 келди ($2).',
+'youhavenewmessagesfromusers' => '{{PLURAL:$3|1=Башха бир къошулуучудан|$3 къошулуучудан}} сеннге $1 келди ($2).',
 'youhavenewmessagesmanyusers' => 'Талай къошулуучудан $1 барды. ($2)',
-'newmessageslinkplural' => '{{PLURAL:$1|джангы билдириу|джангы билдириуле}}',
+'newmessageslinkplural' => '{{PLURAL:$1|1=джангы билдириу|джангы билдириуле}}',
 'newmessagesdifflinkplural' => 'ахыр {{PLURAL:$1|тюрлениу}}',
 'youhavenewmessagesmulti' => '$1 бетде джангы билдириуле бардыла.',
 'editsection' => 'тюрлендир',
@@ -397,7 +397,7 @@ $1',
 'collapsible-expand' => 'кёргюз',
 'thisisdeleted' => '$1 къараргъа неда къайтарыргъа (тургъузтургъа)?',
 'viewdeleted' => '$1 къараймыса?',
-'restorelink' => 'кетерилген {{PLURAL:$1|1|$1}} тюрлендириу',
+'restorelink' => 'кетерилген {{PLURAL:$1|1=1|$1}} тюрлендириу',
 'feedlinks' => 'Бу кёрюмде:',
 'feed-invalid' => 'Джазылыу каналны типи терсди.',
 'feed-unavailable' => 'Синдикация лентала табылынмайла бусагъатда',
@@ -469,7 +469,7 @@ $1',
 'badtitle' => 'Джарамагъан ат',
 'badtitletext' => 'Сорулгъан бетни аты терсди, бошду, неда интервики аты терс джазылгъанды. Келишмеген (хайырланыргъа болмагъан) символла хайырланыргъада боллукъдула атында.',
 'perfcached' => 'Бу информация кэшден алыннганды, ахыр тюрлениулени кёргюзмезге боллукъду. Кэшде максимум {{PLURAL:$1|джазыу}} сакъланады.',
-'perfcachedts' => 'Бу кэшден алыннган информацияды, ахыр кере ол $1 джангыртылыннганды. Кэшде эм кёбю бла  {{PLURAL:$4|джазыу|джазыу}} сакъланады.',
+'perfcachedts' => 'Бу кэшден алыннган информацияды, ахыр кере ол $1 джангыртылыннганды. Кэшде эм кёбю бла  {{PLURAL:$4|1=джазыу|джазыу}} сакъланады.',
 'querypage-no-updates' => 'Бу бетни бусагъатда джангыртыргъа болмайды.
 Мында келтирилген информация къабыл этилинник тюйюлдю.',
 'viewsource' => 'Къарау',
@@ -482,7 +482,7 @@ $1',
 'protectedinterface' => 'Бу бетде программаны интерфейс билдириую барды.
 Бютеу викиледе да бу билдириуню кёчюрмесин къошар неда тюрлендирир ючюн MediaWiki-ни локализациясыны сайты [//translatewiki.net/ translatewiki.net]-ни хайырландырыгъыз.',
 'editinginterface' => "'''Эс бёл:''' Сен системаны интерфейс бетин тюрлендире тураса. Бу, викини башха къошулуучуларына да тиерик затды. Кёчюрюр ючюн неда кёчюрмелени тюрлендирир ючюн, MediaWiki-ни локализация этиу проекти [//translatewiki.net/ translatewiki.net]-ни хайырландырыгъыз.",
-'cascadeprotected' => 'Бу бет тюрлениуледен джакъланыбды, ол каскадлы джакълау къабыл этилиннген  {{PLURAL:$1|бетге|бетлеге}} киргени ючюндю:
+'cascadeprotected' => 'Бу бет тюрлениуледен джакъланыбды, ол каскадлы джакълау къабыл этилиннген  {{PLURAL:$1|1=бетге|бетлеге}} киргени ючюндю:
 $2',
 'namespaceprotected' => '«$1» ат аламда бетлени тюрлендирирге эркинлигигиз джокъду.',
 'customcssprotected' => 'Бу CSS-бетни тюрлендирирге эркинлигигиз джокъду, бу бетде башха къошулуучуну энчи джарашдырыулары барды.',
@@ -521,7 +521,7 @@ $2',
 'yourpasswordagain' => 'Паролну джангыдан джаз:',
 'createacct-yourpasswordagain' => 'Паролну бегит',
 'createacct-yourpasswordagain-ph' => 'Паролну энтда бир кере джаз',
-'remembermypassword' => 'Бу компьютерде мени тергеў джазыўуму унутма (эм кёб $1 {{PLURAL:$1|кюн|кюн}})',
+'remembermypassword' => 'Бу компьютерде мени тергеў джазыўуму унутма (эм кёб $1 {{PLURAL:$1|1=кюн|кюн}})',
 'userlogin-remembermypassword' => 'Системада туруу',
 'userlogin-signwithsecure' => 'Джакъланнган байлам',
 'yourdomainname' => 'Сизни доменигиз:',
@@ -598,7 +598,7 @@ $2',
 Паролну алгъандан сора, джангыдан киригиз системагъа.',
 'blocked-mailpassword' => 'Сизни IP-адресигиз блокланыб турады, аны бла паролну къайтарыу функцияда.',
 'eauthentsent' => 'Джазылгъан электрон почтагъа адресни тюрлениуюн бегитирге соруу джиберилгенди. Письмода бу сизни электрон почтагъызны адреси болгъанын бегитир ючюн не этерге керек болгъаны да чертилгенди.',
-'throttled-mailpassword' => 'Паролну билдириу амал {{PLURAL:$1|ахыр $1 сагъатны}} ичинде бир кере хайырланылгъанды.
+'throttled-mailpassword' => 'Паролну билдириу амал {{PLURAL:$1|1=ахыр $1 сагъатны}} ичинде бир кере хайырланылгъанды.
 Джорукъдан чыгъыудан сакъланыр ючюн $1 {{PLURAL:$1|сагъатны}} ичинде къуру бир билдириу алыргъа болады.',
 'mailerror' => 'Почта джибериу хата: $1',
 'acct_creation_throttle_hit' => 'Кюн бла кечеге сизни IP-адресигизден {{PLURAL:$1|$1 тергеу джазыу (аккаунт)}} къуралгъанды. Бу амал энди бусагъатда джабыкъды.',
@@ -825,21 +825,21 @@ $2',
 Башхала сизни текстлеригизни тюрлендиргенлерин излемей эсегиз, былайгъа салмагъыз.<br />
 Сиз дагъыда этген къошакъларыгъызны автору болгъаныгъызны неда информацияны чыкъгъан джери эркин джаяргъа эм тюрлендирирге къойгъанын аны бегитесиз (къарагъыз: $1).
 '''ЭРКИНЛИКСИЗ АВТОР ХАКЪ БЛА ДЖАКЪЛАННГАН МАТЕРИАЛЛА САЛМАГЪЫЗ БЫЛАЙГЪА!'''",
-'longpageerror' => "'''ХАЛАТ: сиз сакълатхан текстни  {{PLURAL:$1|бир килобайт|$1 килобайт}} ёлчеми барды, ол {{PLURAL:$2|бир килобайт|$2 килобайт}} чекден кёбдю. Бет сакъланныкъ тюлдю.'''",
+'longpageerror' => "'''ХАЛАТ: сиз сакълатхан текстни  {{PLURAL:$1|1=бир килобайт|$1 килобайт}} ёлчеми барды, ол {{PLURAL:$2|1=бир килобайт|$2 килобайт}} чекден кёбдю. Бет сакъланныкъ тюлдю.'''",
 'readonlywarning' => "'''Эсгертиу. Кереклилерин тындырыу ишле себебли, билгилени базасы бусагъатда киритленибди. Ол себебден тюрлениулеригизни бусагъатда сакълаталлыкъ тюлсюз.''' Джазгъанларыгъызны башха бир текст файлда сакълаб, кечирек къошаргъа боллукъсуз. Киритлеген администратор бу билдириуню къойгъанды: $1",
 'protectedpagewarning' => "'''Эсгертиу: бу бет тюрлениуледен джакъланыбды, къуру администарторла тюрлендирелликдиле'''
 Тюбюнде, билги ючюн  журналдагъы ахыр джазыу берилгенди:",
 'semiprotectedpagewarning' => "'''Эсгертиу:''' бу бетни джангыз регистрация этген къошулуучула тюрлендирелликдиле.
 Тюбюнде, билги ючюн журналны ахыр джазыуу берилгенди:",
-'cascadeprotectedwarning' => "'''Эсгертиу:''' Бу бетни къуру Администраторла къауумдагъы къошулуучула тюрлендирирге боллукъду. Каскад джакълау {{PLURAL:$1|бетде|бетде}} хайырланнганы себебли:",
+'cascadeprotectedwarning' => "'''Эсгертиу:''' Бу бетни къуру Администраторла къауумдагъы къошулуучула тюрлендирирге боллукъду. Каскад джакълау {{PLURAL:$1|1=бетде|бетде}} хайырланнганы себебли:",
 'titleprotectedwarning' => "'''Эсгертиу: Бу бет джакъланыбды. Джангыз [[Special:ListGroupRights|энчи хакълары]] болгъанла текстни салыргъа боллукъдула.'''
 Тюбюнде, билги ючюн журналдан ахыр джазыу берилгенди:",
-'templatesused' => 'Бу бетде хайырланылгъан {{PLURAL:$1|шаблон|шаблонла}}:',
-'templatesusedpreview' => 'Ал къаралыучу бетде хайырланнган {{PLURAL:$1|шаблон|шаблонла}}:',
-'templatesusedsection' => 'Бу бетде хайырланнган {{PLURAL:$1|шаблон|шаблонла}}:',
+'templatesused' => 'Бу бетде хайырланылгъан {{PLURAL:$1|1=шаблон|шаблонла}}:',
+'templatesusedpreview' => 'Ал къаралыучу бетде хайырланнган {{PLURAL:$1|1=шаблон|шаблонла}}:',
+'templatesusedsection' => 'Бу бетде хайырланнган {{PLURAL:$1|1=шаблон|шаблонла}}:',
 'template-protected' => '(джакъланнган)',
 'template-semiprotected' => '(джарты джакъланыбды)',
-'hiddencategories' => 'Бу бет $1 {{PLURAL:$1|1 джашырылыннган категориягъа|$1 джашырылыннган категориялагъа}} киреди:',
+'hiddencategories' => 'Бу бет $1 {{PLURAL:$1|1=1 джашырылыннган категориягъа|$1 джашырылыннган категориялагъа}} киреди:',
 'edittools' => '<!-- Былайда орналгъан текст тюрлениу эмда джюклениу формада кёрюннюкдю. -->',
 'nocreatetext' => 'Бу сайтда джангы бет къуралыу тыйылгъанды.
 Ызына къайтыб болгъан бетни тюрлендирирге боллукъсуз, [[Special:UserLogin|системагъа кесигизни танытыргъа неда джангы тергеу джазыу (аккаунт) къураргъа]].',
@@ -847,8 +847,8 @@ $2',
 'sectioneditnotsupported-title' => 'Бёлюмлени тюрлендирир мадар джокъду.',
 'sectioneditnotsupported-text' => 'Бу бетде бёлюмлени тюрлендирирге болмайды.',
 'permissionserrors' => 'Эркинликлени халатлары',
-'permissionserrorstext' => 'Былайдагъы {{PLURAL:$1|чурум|чурумла}} ючюн, буну этерге хакъыгъыз джокъду:',
-'permissionserrorstext-withaction' => "«'''$2'''» этерге амалыгъыз джокъду. {{PLURAL:$1|Чуруму|Чурумлары}}:",
+'permissionserrorstext' => 'Былайдагъы {{PLURAL:$1|1=чурум|чурумла}} ючюн, буну этерге хакъыгъыз джокъду:',
+'permissionserrorstext-withaction' => "«'''$2'''» этерге амалыгъыз джокъду. {{PLURAL:$1|1=Чуруму|Чурумлары}}:",
 'recreate-moveddeleted-warn' => "'''Эс бёлюгюз! Сиз алгъын кетерилген бетни джангыдан къураргъа излейсиз'''
 
 Бетни джангыдан къураргъа кереклигине сагъыш этигиз.
@@ -880,7 +880,7 @@ $2',
 
 # Parser/template warnings
 'expensive-parserfunction-warning' => "'''Эсгериу:''' Бу бетде асыры кёб къайнакълы функция барды.
-Бу $2 чакъырыудан аз болургъа керекди, бусагъатда {{PLURAL:$1|1 чакъырыу барды|$1 чакъырыу барды}}.",
+Бу $2 чакъырыудан аз болургъа керекди, бусагъатда {{PLURAL:$1|1=1 чакъырыу барды|$1 чакъырыу барды}}.",
 'expensive-parserfunction-category' => 'Асыры кёб къайнакълы функциялары болгъан бетле',
 'post-expand-template-inclusion-warning' => "'''Эсгериу:''' къошулгъан шаблонланы ёлчеми асыры уллуду.
 Бир-бир шаблонла бетге къошуллукъ тюлдюле.",
@@ -932,7 +932,7 @@ $3 джанындан берилген сылтау: ''$2''",
 'history-show-deleted' => 'Къуру кетерилгенле',
 'histfirst' => 'Эм эски',
 'histlast' => 'Эм джангы',
-'historysize' => '($1 {{PLURAL:$1|байт|байт}})',
+'historysize' => '($1 {{PLURAL:$1|1=байт|байт}})',
 'historyempty' => '(бош)',
 
 # Revision feed
@@ -981,8 +981,8 @@ $3 джанындан берилген сылтау: ''$2''",
 'revdelete-no-file' => 'Белгиленнген файл джокъду.',
 'revdelete-show-file-confirm' => '«<nowiki>$1</nowiki>» файлны $2 $3 датада кетерилген версиясына къараргъа излегенигизге ишексизмисиз?',
 'revdelete-show-file-submit' => 'Хоу',
-'revdelete-selected' => "'''[[:$1]] бетни {{PLURAL:$2|Сайланнган версия|сайланнган версиялары}}:'''",
-'logdelete-selected' => "'''Журналны {{PLURAL:$1|Сайланнган джазыу|сайланнган джазыулары}}:'''",
+'revdelete-selected' => "'''[[:$1]] бетни {{PLURAL:$2|1=Сайланнган версия|сайланнган версиялары}}:'''",
+'logdelete-selected' => "'''Журналны {{PLURAL:$1|1=Сайланнган джазыу|сайланнган джазыулары}}:'''",
 'revdelete-text' => "'''Кетерилге версияла бла болуула алкъын бетни тарихи бла журналлада кёрюннюкдю, алай а бир кесеги тюз кириучюледен джашырыллыкъды.'''
 {{SITENAME}} сайтдагъы башха администраторла джашырылгъан ичге кирирге эмда аны ызына салыргъа боллукъдула.",
 'revdelete-confirm' => 'Тилейбиз, буну этерге излегенигизни, эсеблерин ангылагъаныгъызны, эм буну [[{{MediaWiki:Policy-url}}|джорукълагъа]] кёре этгенигизни билдиригиз.',
@@ -1002,7 +1002,7 @@ $3 джанындан берилген сылтау: ''$2''",
 'revdelete-suppress' => 'Администраторладан да джашыра тур билгилени',
 'revdelete-unsuppress' => 'Ызына къайтарылгъан версияладан тыйгъычланы кетер',
 'revdelete-log' => 'Чурум:',
-'revdelete-submit' => '{{PLURAL:$1|Сайланнган версия|Сайланнган версиялада}} хайырлан',
+'revdelete-submit' => '{{PLURAL:$1|1=Сайланнган версия|Сайланнган версиялада}} хайырлан',
 'revdelete-success' => "'''Версияны кёрюнюую джетишимли тюрлендирилгенди'''",
 'revdelete-failure' => "'''Версияны кёрюнюую тюрленеллик тюлдю'''
 $1",
@@ -1052,7 +1052,7 @@ $1",
 'mergehistory-go' => 'Бирлешиннген тюрлендириулени кёргюз',
 'mergehistory-submit' => 'Тюрлениулени бирлештир',
 'mergehistory-empty' => 'Бирлешдирир ючюн тюрлениуле табылмагъандыла',
-'mergehistory-success' => '[[:$1]] бетни $3 {{PLURAL:$3|тюрлендириую|тюрлендириую}} тыйыншлы [[:$2]] ичинде бирлешдирилди.',
+'mergehistory-success' => '[[:$1]] бетни $3 {{PLURAL:$3|1=тюрлендириую|тюрлендириую}} тыйыншлы [[:$2]] ичинде бирлешдирилди.',
 'mergehistory-fail' => 'Бетлине тарихлери бирлешемеди, тилейбиз бетни эмда заманны параметрлерин джангыдан сынагъыз.',
 'mergehistory-no-source' => '$1 тамал бет джокъду',
 'mergehistory-no-destination' => '$1 нюзюр бет джокъду',
@@ -1078,9 +1078,9 @@ $1",
 'compareselectedversions' => 'Сайланнган версияланы тенглешдириу',
 'showhideselectedversions' => 'Сайланнган версияланы кёргюз/джашыр',
 'editundo' => 'ызына алыу',
-'diff-multi' => '({{PLURAL:$2|Бир къошулуучу|$2 къошулуучу}} этген {{PLURAL:$1|$1 аралыкъ тюрлениу|$1 аралыкъ тюрлениу}} кёргюзюлмегенди)',
-'diff-multi-manyusers' => '($2 къошулуучудан кёб {{PLURAL:$2|Бир къошулуучу|къошулуучу}} этген {{PLURAL:$1|бир аралыкъ тюрлениу|$1 аралыкъ тюрлениу}} кёргюзюлмегенди)',
-'difference-missing-revision' => 'Бу тенглешдириу ($1) ючюн {{PLURAL:$2|$2 версия}} {{PLURAL:$2|табылмады}}.
+'diff-multi' => '({{PLURAL:$2|1=Бир къошулуучу|$2 къошулуучу}} этген {{PLURAL:$1|1=$1 аралыкъ тюрлениу|$1 аралыкъ тюрлениу}} кёргюзюлмегенди)',
+'diff-multi-manyusers' => '($2 къошулуучудан кёб {{PLURAL:$2|1=Бир къошулуучу|къошулуучу}} этген {{PLURAL:$1|1=бир аралыкъ тюрлениу|$1 аралыкъ тюрлениу}} кёргюзюлмегенди)',
+'difference-missing-revision' => 'Бу тенглешдириу ($1) ючюн {{PLURAL:$2|1=$2 версия}} {{PLURAL:$2|табылмады}}.
 
 
 Бу, эскирген джибериу бла кетерилген бетни версияларын тенглешдириуге кёчген сагъатда кёбюсюне болады.
@@ -1095,8 +1095,8 @@ $1",
 'notextmatches' => 'Бетлени текстлеринде бирчалыкъ джокъду',
 'prevn' => 'алдагъы {{PLURAL:$1|$1}}',
 'nextn' => 'эндиги {{PLURAL:$1|$1}}',
-'prevn-title' => 'Алдагъы $1 {{PLURAL:$1|эсеб|эсеб}}',
-'nextn-title' => 'Артдагъы $1 {{PLURAL:$1|эсеб|эсеб}}',
+'prevn-title' => 'Алдагъы $1 {{PLURAL:$1|1=эсеб|эсеб}}',
+'nextn-title' => 'Артдагъы $1 {{PLURAL:$1|1=эсеб|эсеб}}',
 'shown-title' => 'Бетде $1 {{PLURAL:$1|джазыуну}} кёргюз',
 'viewprevnext' => 'Къара: ($1 {{int:pipe-separator}} $2) ($3)',
 'searchmenu-exists' => "'''Бу викиде «[[:$1]]» бет барды'''",
@@ -1112,7 +1112,7 @@ $1",
 'searchprofile-everything-tooltip' => 'Бютеу бетледе изле (сюзюу бетледе да)',
 'searchprofile-advanced-tooltip' => 'Энчи ат аланладада изле',
 'search-result-size' => '$1 ({{PLURAL:$2|$2 сёз}})',
-'search-result-category-size' => '{{PLURAL:$1|1 элемент|$1 элемент}} ({{PLURAL:$2|1 тюбкатегория|$2 тюбкатегория}}, {{PLURAL:$3|1 файл|$3 файл}})',
+'search-result-category-size' => '{{PLURAL:$1|1=1 элемент|$1 элемент}} ({{PLURAL:$2|1=1 тюбкатегория|$2 тюбкатегория}}, {{PLURAL:$3|1=1 файл|$3 файл}})',
 'search-result-score' => 'Келишиулюк: $1%',
 'search-redirect' => '(Джиберилиниу $1)',
 'search-section' => '($1 бёлюм)',
@@ -1124,9 +1124,9 @@ $1",
 'searcheverything-enable' => 'Атланы бютеу аламларында изле',
 'searchrelated' => 'бейламлы',
 'searchall' => 'бютеу',
-'showingresults' => 'Тюбюрек №&nbsp;<strong>$2</strong> башлаб <strong>$1</strong> {{PLURAL:$1|эсеб|эсебле}} {{PLURAL:$1|кёргюзюлгенди|кёргюзюлгендиле}}.',
-'showingresultsnum' => 'Тюбюрек №&nbsp;<strong>$2</strong> башлаб <strong>$3</strong> {{PLURAL:$3|эсеб|эсебле}} {{PLURAL:$3|кёргюзюлгенди|кёргюзюлгендиле}}.',
-'showingresultsheader' => "'''$4''' ючюн {{PLURAL:$5|'''$3''' эсебден '''$1'''|'''$1 — $2''' арасы '''$3''' эсеб}}",
+'showingresults' => 'Тюбюрек №&nbsp;<strong>$2</strong> башлаб <strong>$1</strong> {{PLURAL:$1|1=эсеб|эсебле}} {{PLURAL:$1|1=кёргюзюлгенди|кёргюзюлгендиле}}.',
+'showingresultsnum' => 'Тюбюрек №&nbsp;<strong>$2</strong> башлаб <strong>$3</strong> {{PLURAL:$3|1=эсеб|эсебле}} {{PLURAL:$3|1=кёргюзюлгенди|кёргюзюлгендиле}}.',
+'showingresultsheader' => "'''$4''' ючюн {{PLURAL:$5|1='''$3''' эсебден '''$1'''|'''$1 — $2''' арасы '''$3''' эсеб}}",
 'search-nonefound' => 'Соруу бла келишген эсеб джокъду',
 'powersearch-legend' => 'Кенг излеу',
 'powersearch-ns' => 'Атла аламда излеу:',
@@ -1153,7 +1153,7 @@ $1",
 'prefs-rc' => 'Ахыр тюрлениуле',
 'prefs-watchlist' => 'Кёзде тургъан тизме',
 'prefs-watchlist-days' => 'Кёзде тургъан тизмеде кёргюзюллюк кюнлени саны:',
-'prefs-watchlist-days-max' => 'Максимум $1 {{PLURAL:$1|кюн|кюн}}',
+'prefs-watchlist-days-max' => 'Максимум $1 {{PLURAL:$1|1=кюн|кюн}}',
 'prefs-watchlist-edits' => 'Кёзде тургъан тизмени кенглешдирилген вариантында кёргюзюллюк тюрлениулени саны:',
 'prefs-watchlist-edits-max' => 'Максимум саны:1000',
 'prefs-watchlist-token' => 'Кёзде тургъан тизмени токени:',
@@ -1173,7 +1173,7 @@ $1",
 'stub-threshold' => '<a href="#" class="stub">Стаблагъа джибериуню</a> формат этер ючюн марда (байтлада):',
 'stub-threshold-disabled' => 'Джукъланыбды',
 'recentchangesdays' => 'Ахыр тюрлениуледе кёргюзюллюк кюнле:',
-'recentchangesdays-max' => '(максимум $1 {{PLURAL:$1|кюн|кюн}})',
+'recentchangesdays-max' => '(максимум $1 {{PLURAL:$1|1=кюн|кюн}})',
 'recentchangescount' => 'Тынгылау бла кёргюзюллюк тюрлениулени саны:',
 'prefs-help-recentchangescount' => 'Бу, ахыр тюрлениулени, бетни тарихлерин эмда журналланы ичине къошады.',
 'savedprefs' => 'Джарашдырыуларыгъыз сакъландыла.',
@@ -1208,7 +1208,7 @@ $1",
 'youremail' => 'Электрон почта:',
 'username' => '{{GENDER:$1|Къошулуучу ат}}:',
 'uid' => '{{GENDER:$1|Къошулуучуну}} коду:',
-'prefs-memberingroups' => '{{PLURAL:$1|Группаны|Группаланы}} {{GENDER:$2|члени}}:',
+'prefs-memberingroups' => '{{PLURAL:$1|1=Группаны|Группаланы}} {{GENDER:$2|члени}}:',
 'prefs-memberingroups-type' => '$1',
 'prefs-registration' => 'Регистрацияны этилген заманы:',
 'prefs-registration-date-time' => '$1',
@@ -1221,7 +1221,7 @@ $1",
 'badsig' => 'Джараусуз къол салыныу.
 HTML теглени осмакълагъыз.',
 'badsiglength' => 'Къол салыуугъуз бек узунду.
-$1 {{PLURAL:$1|символдан|символладан}} кеб болургъа болмайды.',
+$1 {{PLURAL:$1|1=символдан|символладан}} кеб болургъа болмайды.',
 'yourgender' => 'Эркиши/Тиширыу:',
 'gender-unknown' => 'Белгиленмегенди',
 'gender-male' => 'эркиши',
@@ -1409,7 +1409,7 @@ $1 {{PLURAL:$1|символдан|символладан}} кеб болургъ
 'action-sendemail' => 'E-mail джибериу',
 
 # Recent changes
-'nchanges' => '$1 {{PLURAL:$1|тюрлениу|тюрлениу}}',
+'nchanges' => '$1 {{PLURAL:$1|1=тюрлениу|тюрлениу}}',
 'recentchanges' => 'Ахыр тюрлениуле',
 'recentchanges-legend' => 'Ахыр тюрлениулени джарашдырыулары',
 'recentchanges-summary' => 'Тюбюнде, Википедияда этилген ахыр тюрлениуле хронология бла тизилиб турадыла.',
@@ -1500,9 +1500,9 @@ $1 {{PLURAL:$1|символдан|символладан}} кеб болургъ
 'filetype-badmime' => '«$1» MIME типли файлланы джюклениуюне эркинлик берлимейди.',
 'filetype-bad-ie-mime' => 'Internet Explorer, буну эркинлик берилмеген эмда потенциал заран берлик «$1» файл тип кибик таныгъаны ючюн бу файл джюклениллик тюлдю.',
 'filetype-unwanted-type' => "'''\".\$1\"''' изленмеген файл типиди.
-Изленнген {{PLURAL:\$3|файл тип|файл типле}} \$2.",
-'filetype-banned-type' => "'''«.$1»''' — {{PLURAL:$4|джасакъланнган файл типди|джасакъланнган файл типледиле}}.
-Эркинлик берилген {{PLURAL:$3|файл тип|файл типле}}: $2.",
+Изленнген {{PLURAL:\$3|1=файл тип|файл типле}} \$2.",
+'filetype-banned-type' => "'''«.$1»''' — {{PLURAL:$4|1=джасакъланнган файл типди|джасакъланнган файл типледиле}}.
+Эркинлик берилген {{PLURAL:$3|1=файл тип|файл типле}}: $2.",
 'filetype-missing' => 'Файлны кенглешиуу джокъду (сёз ючюн, «.jpg» кибик)',
 'empty-file' => 'Сиз ийген файл бошду.',
 'file-too-large' => 'Сиз ийген файл асыры уллуду.',
@@ -1540,7 +1540,7 @@ $1 {{PLURAL:$1|символдан|символладан}} кеб болургъ
 Файлыгъызны джангыдан джюклерге излей эсегиз, ызына къайтыб джангы ат хайырланыгъыз. [[File:$1|thumb|center|$1]]',
 'fileexists-shared-forbidden' => 'Быллай атлы файл файлланы сакълауну джеринде барды.
 Дагъыда файлыгъызны джюклерге излей эсегиз, ызына къайтыб джангы ат хайырланыгыз. [[File:$1|thumb|center|$1]]',
-'file-exists-duplicate' => 'Бу файл эндиги {{PLURAL:$1|файлны|файлланы}} дубликатыды:',
+'file-exists-duplicate' => 'Бу файл эндиги {{PLURAL:$1|1=файлны|файлланы}} дубликатыды:',
 'file-deleted-duplicate' => 'Бу файлны ушашы болгъан башха файл ([[:$1]]) алгъаракъ кетерилгенди. Бу файлны джангыдан джюклерни аллы бла файлны кетериуюню тарихи бла танышыгъыз.',
 'uploadwarning' => 'Эсгертиу',
 'uploadwarning-text' => 'Файлны тюбюрекде келтирилген ачыкълауун тюрлендиригиз да джангыдан кёрюгюз.',
@@ -1618,7 +1618,7 @@ URL-адрес тюз болгъанын осмакълагъыз эмда дж
 'backend-fail-closetemp' => 'Болджаллы файлны джабалмайды.',
 'backend-fail-read' => '«$1» файлны окъуялмады.',
 'backend-fail-create' => '«$1» файлны джазалмады.',
-'backend-fail-maxsize' => 'Ёлчеми {{PLURAL:$2|бир байт|$2 байт}}дан кёб болгъаны себебли «$1» файл джазылмады.',
+'backend-fail-maxsize' => 'Ёлчеми {{PLURAL:$2|1=бир байт|$2 байт}}дан кёб болгъаны себебли «$1» файл джазылмады.',
 
 # Special:UploadStash
 'uploadstash' => 'Джашыртын джюклеу',
@@ -1702,14 +1702,14 @@ URL-ни тюз , сайтны ачыкъ болгъанына ишексиз б
 'filehist-comment' => 'Эсгериу',
 'filehist-missing' => 'Файл джокъду',
 'imagelinks' => 'Файлны хайырланыуу',
-'linkstoimage' => 'Бу файлгъа {{PLURAL:$1|бет|$1 бет}} джибередиле:',
+'linkstoimage' => 'Бу файлгъа {{PLURAL:$1|1=бет|$1 бет}} джибередиле:',
 'linkstoimage-more' => '$1 дегенден артыкъ {{PLURAL:$1|бет}} бу файлгъа джибериу береди.
 Бу тизмеде бу файлгъа {{PLURAL:$1|къуру $1 джибериу}} кёргюзюледи.
 [[Special:WhatLinksHere/$2|Толу тизме]] да барды.',
 'nolinkstoimage' => 'Бу файлгъа джиберген бет джокъду.',
 'morelinkstoimage' => 'Бу файлгъа [[Special:WhatLinksHere/$1|къалгъан джибериулеге]] къара.',
 'linkstoimage-redirect' => '$1 (файл редирект) $2',
-'duplicatesoffile' => '{{PLURAL:$1|файл|$1 файл}}, бу файлны дубликатыды ([[Special:FileDuplicateSearch/$2|анданда кёб ангылатыу]]):',
+'duplicatesoffile' => '{{PLURAL:$1|1=файл|$1 файл}}, бу файлны дубликатыды ([[Special:FileDuplicateSearch/$2|анданда кёб ангылатыу]]):',
 'sharedupload' => 'Бу файл $1денди эм башха проектледе хайырландыргъа боллукъду.',
 'sharedupload-desc-there' => 'Бу файл $1 базадан башха проектледе хайырландырыргъа боллукъду.
 Андан кёб билги ючюн [$2 файлны ангылатыу бетге] къарагъыз.',
@@ -1770,7 +1770,7 @@ URL-ни тюз , сайтны ачыкъ болгъанына ишексиз б
 
 # Random page
 'randompage' => 'Эсде болмагъан бет',
-'randompage-nopages' => '{{PLURAL:$2|Ат аланында|Ат аланында}} чырт бир бет джокъду: $1.',
+'randompage-nopages' => '{{PLURAL:$2|1=Ат аланында|Ат аланында}} чырт бир бет джокъду: $1.',
 
 # Random redirect
 'randomredirect' => 'Сакъланмагъан джибериу',
@@ -1794,7 +1794,7 @@ URL-ни тюз , сайтны ачыкъ болгъанына ишексиз б
 'statistics-views-peredit' => 'Тюрлендириуге къарауну саны',
 'statistics-users' => 'Регистрация этилген [[Special:ListUsers|къошулуучула]]',
 'statistics-users-active' => 'Актив къошулуучула',
-'statistics-users-active-desc' => 'Ахыр {{PLURAL:$1|1 кюнде|$1 кюнде}} ишлеме этген къошулуучула',
+'statistics-users-active-desc' => 'Ахыр {{PLURAL:$1|1=1 кюнде|$1 кюнде}} ишлеме этген къошулуучула',
 'statistics-mostpopular' => 'Эм кёб къаралгъан бетле',
 
 'pageswithprop-submit' => 'Таб',
@@ -1820,13 +1820,13 @@ URL-ни тюз , сайтны ачыкъ болгъанына ишексиз б
 
 # Miscellaneous special pages
 'nbytes' => '$1 {{PLURAL:$1|байт}}',
-'ncategories' => '$1 {{PLURAL:$1|категория|категорияла}}',
-'nlinks' => '$1 {{PLURAL:$1|джибериу|джибериу}}',
+'ncategories' => '$1 {{PLURAL:$1|1=категория|категорияла}}',
+'nlinks' => '$1 {{PLURAL:$1|1=джибериу|джибериу}}',
 'nmembers' => '$1 {{PLURAL:$1|объект}}',
-'nrevisions' => '$1 {{PLURAL:$1|версия|версия}}',
-'nviews' => '$1 {{PLURAL:$1|къарау|къарау}}',
-'nimagelinks' => '$1 {{PLURAL:$1|бетде|бетде}} хайырланады',
-'ntransclusions' => '$1 {{PLURAL:$1|бетде|бетде}} хайырланады',
+'nrevisions' => '$1 {{PLURAL:$1|1=версия|версия}}',
+'nviews' => '$1 {{PLURAL:$1|1=къарау|къарау}}',
+'nimagelinks' => '$1 {{PLURAL:$1|1=бетде|бетде}} хайырланады',
+'ntransclusions' => '$1 {{PLURAL:$1|1=бетде|бетде}} хайырланады',
 'specialpage-empty' => 'Сорма эсеб келтирмеди.',
 'lonelypages' => 'Ёксюз бетле',
 'lonelypagestext' => 'Тюбюндеги бетлеге {{SITENAME}} сайтдагъы башха бетледен джибериу берилмегенди неда ала башха бетлеге къошулмагъандыла.',
@@ -1862,7 +1862,7 @@ URL-ни тюз , сайтны ачыкъ болгъанына ишексиз б
 'listusers' => 'Къошулуучуланы тизмеси',
 'listusers-editsonly' => 'Къуру тюрлендириу этген къошлуучуланы кёргюз',
 'listusers-creationsort' => 'Къуралгъан заманына кёре сафла',
-'usereditcount' => '$1 {{PLURAL:$1|тюрлендириу|тюрлендириу}}',
+'usereditcount' => '$1 {{PLURAL:$1|1=тюрлендириу|тюрлендириу}}',
 'usercreated' => '$1 $2 заманда {{GENDER:$3|регистрацияны ётгенди}}',
 'newpages' => 'Джангы бетле',
 'newpages-username' => 'Къошулуучуну аты:',
@@ -1876,8 +1876,8 @@ URL-ни тюз , сайтны ачыкъ болгъанына ишексиз б
 'notargettext' => 'Бу функцияны ишлетир ючюн нюзюр бетни неда къошулуучуну белгилемегенсиз.',
 'nopagetitle' => 'Быллай нюзюр бет джокъду',
 'nopagetext' => 'Белгиленнген нюзюр бет джокъду.',
-'pager-newer-n' => '{{PLURAL:$1|1 джангыракъ|$1 джангыракъ}}',
-'pager-older-n' => '{{PLURAL:$1|1 эскирек|$1 эскирек}}',
+'pager-newer-n' => '{{PLURAL:$1|1=1 джангыракъ|$1 джангыракъ}}',
+'pager-older-n' => '{{PLURAL:$1|1=1 эскирек|$1 эскирек}}',
 'suppress' => 'Джашырыу',
 
 # Book sources
@@ -1918,7 +1918,7 @@ URL-ни тюз , сайтны ачыкъ болгъанына ишексиз б
 
 # Special:Categories
 'categories' => 'Категорияла',
-'categoriespagetext' => 'Ызындан келген {{PLURAL:$1|категория|категорияла}} бет неда медия-файл тутадыла.
+'categoriespagetext' => 'Ызындан келген {{PLURAL:$1|1=категория|категорияла}} бет неда медия-файл тутадыла.
 [[Special:UnusedCategories|Хайырланмагъан категорияла]] былайда кёргюзюлмегендиле.
 Дагъыда [[Special:WantedCategories|изленнген категорияла]] гъакъарагъыз.',
 'categoriesfrom' => 'Бу бла башланнган категорияланы кёргюз:',
@@ -1949,8 +1949,8 @@ URL-ни тюз , сайтны ачыкъ болгъанына ишексиз б
 
 # Special:ActiveUsers
 'activeusers' => 'Актив къошулуучуланы тизмеси',
-'activeusers-intro' => 'Бу, ахыр $1 {{PLURAL:$1|кюнде|кюнде}} къаллайда болсун ишлетме кёргюзген къошлуучуланы тизмесиди.',
-'activeusers-count' => 'Ахыр {{PLURAL:$3|кюнде|$3 кюнде}} $1 {{PLURAL:$1|тюрлендириу|тюрлендириу}}',
+'activeusers-intro' => 'Бу, ахыр $1 {{PLURAL:$1|1=кюнде|кюнде}} къаллайда болсун ишлетме кёргюзген къошлуучуланы тизмесиди.',
+'activeusers-count' => 'Ахыр {{PLURAL:$3|1=кюнде|$3 кюнде}} $1 {{PLURAL:$1|1=тюрлендириу|тюрлендириу}}',
 'activeusers-from' => 'Бу бла башланнган къошлуучуланы кёргюз:',
 'activeusers-hidebots' => 'Ботланы джашыр',
 'activeusers-hidesysops' => 'Администраторланы джашыр',
@@ -1968,12 +1968,12 @@ URL-ни тюз , сайтны ачыкъ болгъанына ишексиз б
 'listgrouprights-members' => '(къауумну тизмеси)',
 'listgrouprights-right-display' => '<span class="listgrouprights-granted">$1 <code>($2)</code></span>',
 'listgrouprights-right-revoked' => '<span class="listgrouprights-revoked">$1 <code>($2)</code></span>',
-'listgrouprights-addgroup' => '{{PLURAL:$2|Къауум|Къауум}} къошаргъа боллукъду: $1',
-'listgrouprights-removegroup' => 'бу {{PLURAL:$2|къауумдан|къауумладан}} къыстаргъа боллукъду: $1',
+'listgrouprights-addgroup' => '{{PLURAL:$2|1=Къауум|Къауум}} къошаргъа боллукъду: $1',
+'listgrouprights-removegroup' => 'бу {{PLURAL:$2|1=къауумдан|къауумладан}} къыстаргъа боллукъду: $1',
 'listgrouprights-addgroup-all' => 'Бютеу къауумлагъа къошаргъа боллукъду',
 'listgrouprights-removegroup-all' => 'бютеу къауумладан къыстаргъа боллукъду',
-'listgrouprights-addgroup-self' => 'кесини тергеу джазыууна {{PLURAL:$2|къауум|къауумла}} къошаллыкъды: $1',
-'listgrouprights-removegroup-self' => 'кесини тергеу джазыуундан {{PLURAL:$2|къауум|къауумланы}} къораталлыкъды: $1',
+'listgrouprights-addgroup-self' => 'кесини тергеу джазыууна {{PLURAL:$2|1=къауум|къауумла}} къошаллыкъды: $1',
+'listgrouprights-removegroup-self' => 'кесини тергеу джазыуундан {{PLURAL:$2|1=къауум|къауумланы}} къораталлыкъды: $1',
 'listgrouprights-addgroup-self-all' => 'Бютеу къауумланы кесини тергеу джазыууна къошаллыкъды',
 'listgrouprights-removegroup-self-all' => 'Кесини тергеу джазыуундан бютеу къауумланы къораталлыкъды',
 
@@ -2032,12 +2032,12 @@ URL-ни тюз , сайтны ачыкъ болгъанына ишексиз б
 'unwatchthispage' => 'Кёзде тутууну тохтат',
 'notanarticle' => 'Статья тюлдю',
 'notvisiblerev' => 'Версия кетерилгенди',
-'watchlist-details' => 'Кёзюгюзде тургъан тизмегизде, сюзюу бетлери саналмай {{PLURAL:$1|$1 бет|$1 бет}} барды.',
+'watchlist-details' => 'Кёзюгюзде тургъан тизмегизде, сюзюу бетлери саналмай {{PLURAL:$1|1=$1 бет|$1 бет}} барды.',
 'wlheader-enotif' => 'Эл. почта бла хапар бериу джандырылыбды.',
 'wlheader-showupdated' => "Ахыр кириуюгюзден сора бетни тюрлениулери '''къалын''' джазыу бла кёргюзюлгенди.",
 'watchmethod-recent' => 'кёзде тургъан бетледе этилген ахыр тюрлениуле кёрюу',
 'watchmethod-list' => 'кёзде тургъан бетледе этилген ахыр тюрлениуле кёрюу',
-'watchlistcontains' => 'Кёзюгюзде тургъан тизмегизде $1 {{PLURAL:$1|бет|бет}} барды.',
+'watchlistcontains' => 'Кёзюгюзде тургъан тизмегизде $1 {{PLURAL:$1|1=бет|бет}} барды.',
 'iteminvalidname' => "'$1' элемент бла проблемала, джараусуз ат...",
 'wlnote' => "Тюбюндеди кёргюзюлгенди: ахыр '''$2''' сагъатха этилген ахыр '''$1''' тюрлениу, $3 $4 заманнга дери.",
 'wlshowlast' => 'Арт $1 сагъат $2 кюннге $3 кёргюз',
@@ -2091,7 +2091,7 @@ $UNWATCHURL
 'exblank' => 'бет бош эди',
 'delete-confirm' => '«$1» — кетериу',
 'delete-legend' => 'Кетер',
-'historywarning' => "'''Эсгериу:''' кетериле тургъан бетни $1 {{PLURAL:$1|версиялы|версиялы}} тарихи барды:",
+'historywarning' => "'''Эсгериу:''' кетериле тургъан бетни $1 {{PLURAL:$1|1=версиялы|версиялы}} тарихи барды:",
 'confirmdeletetext' => 'Сиз бетни (неда суратны) бютеу тюрлениу тарихи бла толу кетерирге соргъансыз.
 Алай этерге керти излегенигизни эм  [[{{MediaWiki:Policy-url}}кетериу политика]] бёлюмде ачыкъланнган джорукъла бла этгенигизни, бегитигиз.',
 'actioncomplete' => 'Этим толтурулду',
@@ -2110,9 +2110,9 @@ $UNWATCHURL
 ** Автор хакъланы бузуу
 ** Вандализм',
 'delete-edit-reasonlist' => 'Чурумланы тизмесин тюрлендир',
-'delete-toobig' => 'Бу бетни, $1 {{PLURAL:$1|версияла|версияла}} бла бек узун тарихи барды.
+'delete-toobig' => 'Бу бетни, $1 {{PLURAL:$1|1=версияла|версияла}} бла бек узун тарихи барды.
 Быллай бетлени кетерилиую, {{SITENAME}} сайтны бузмаз ючюн чекленгенди.',
-'delete-warning-toobig' => 'Бу бетни уллу тюрлендириу тарихи барды, $1 {{PLURAL:$1|версиядан|версиядан}} артыкъ.
+'delete-warning-toobig' => 'Бу бетни уллу тюрлендириу тарихи барды, $1 {{PLURAL:$1|1=версиядан|версиядан}} артыкъ.
 Буну кетериу {{SITENAME}} ишлеулени асхатыргъа боллукъду;
 эсгере андан ары ишлегиз.',
 
@@ -2161,7 +2161,7 @@ $2 тюрлендирген алгъаракъ версиясына къайты
 'protect-locked-dblock' => "Актив билги базаны киритленнгени себебли, коъруулау параметрлени тюрлендиреллик тюлсюз.
 '''$1''' бет ючюн бусагъатдагъы параметрле:",
 'protect-locked-access' => "Сизге хакъ джетмейди бетни джакълау дараджасын тюрлендирирге. '''$1''' бетни бусагъатдагъы джакълау джарашдырыулары:",
-'protect-cascadeon' => 'Бу бет {{PLURAL:$1|тюбюнде белгиленнген бетге|тюбюнде белгиленнген бетлеге}} къошулгъаны ючюн джакъланыбды. Ол {{PLURAL:$1|бетде|бетледе}} каскадлы джакълау салыныб турады. Сиз бу бетни джакълау дараджасын тюрлендирирге боллукъсуз, алай а ол каскад джакълауну тюрледирлик тюлдю.',
+'protect-cascadeon' => 'Бу бет {{PLURAL:$1|1=тюбюнде белгиленнген бетге|тюбюнде белгиленнген бетлеге}} къошулгъаны ючюн джакъланыбды. Ол {{PLURAL:$1|1=бетде|бетледе}} каскадлы джакълау салыныб турады. Сиз бу бетни джакълау дараджасын тюрлендирирге боллукъсуз, алай а ол каскад джакълауну тюрледирлик тюлдю.',
 'protect-default' => 'Джакълаусуз',
 'protect-fallback' => '«$1» эркинлик керекди',
 'protect-level-autoconfirmed' => 'Джангы эм регистрация этмеген къошулуучуладан джакъла',
@@ -2206,11 +2206,11 @@ $2 тюрлендирген алгъаракъ версиясына къайты
 'undeletepage' => 'Кетерилген бетлени къара эмда ызына къайтар.',
 'undeletepagetitle' => "'''Тюбюнде [[:$1|$1]] бетни кетерилген версиялары кёрюннгенди'''.",
 'viewdeletedpage' => 'Кетерилген бетлеге къара',
-'undeletepagetext' => 'Тюбюндеги {{PLURAL:$1|бет|$1 бет}} кетерилгенди, алай а алкъыр архивдеди эм ызына къайтарыр мадар барды.
+'undeletepagetext' => 'Тюбюндеги {{PLURAL:$1|1=бет|$1 бет}} кетерилгенди, алай а алкъыр архивдеди эм ызына къайтарыр мадар барды.
 Архив кёзюулю ариуланыргъа болады.',
 'undelete-fieldset-title' => 'Версияны ызына джюкле',
 'undeleteextrahelp' => "Бетле бла бирге тарихини ызына къайтарыр ючюн бютеу белгилени бош къоюгъузда '''Ызына къайтар''' тиекден басыгъыз. Бетни тарихини башха-башха къайтарыр ючюн къайтарыргъа излеген тюрлендириулени белгилеб '''Ызына къайтар''' тиекден басыгъыз. Сайланнган белгилени эм комментарийлени кетерир ючюн '''Ариула''' тиекден басыгъыз.",
-'undeleterevisions' => '$1 {{PLURAL:$1|версия|версия}} архив этилди',
+'undeleterevisions' => '$1 {{PLURAL:$1|1=версия|версия}} архив этилди',
 'undeletehistory' => 'Сиз бетни ызына къайтарсагъыз, аны тюрлендириу тарихи да ызына къайтады.
 Кетерилгенден сора ол ат бла джангы бет къуралса, ызына къайтхан версияла джангы версиланы аллында тюрлендириуню тарихинде чыгъарыкъдыла.',
 'undeleterevdel' => 'Ызына къайтарыу, ахыр версияны неда файлны бузаргъа болса, тохтатыллыкъды.
@@ -2225,9 +2225,9 @@ $2 тюрлендирген алгъаракъ версиясына къайты
 'undeleteviewlink' => 'кёргюз',
 'undeleteinvert' => 'Сайлауну ызына бур',
 'undeletecomment' => 'Чурум:',
-'undeletedrevisions' => '$1 {{PLURAL:$1|тюрлендириу|тюрлендириу}} ызына къайтарылды',
-'undeletedrevisions-files' => '{{PLURAL:$1|1 версия|$1 версия}} бла {{PLURAL:$2|1 файл|$2 файл}} ызына къайтарылды',
-'undeletedfiles' => '{{PLURAL:$1|1 файл|$1 файл}} ызына къайтарылды',
+'undeletedrevisions' => '$1 {{PLURAL:$1|1=тюрлендириу|тюрлендириу}} ызына къайтарылды',
+'undeletedrevisions-files' => '{{PLURAL:$1|1=1 версия|$1 версия}} бла {{PLURAL:$2|1=1 файл|$2 файл}} ызына къайтарылды',
+'undeletedfiles' => '{{PLURAL:$1|1=1 файл|$1 файл}} ызына къайтарылды',
 'cannotundelete' => 'Бетни неда медианы сизден алгъа башха къошулуучу ызына къайтаргъаны себебли сизини ызына къайтарыу ишлемигиз джараусузду.',
 'undeletedpage' => "'''$1 бет ызына къайтарылды '''
 
@@ -2291,8 +2291,8 @@ $1',
 'isredirect' => 'джибериу бет',
 'istemplate' => 'къошуу',
 'isimage' => 'файлгъа джибериу',
-'whatlinkshere-prev' => '{{PLURAL:$1|алдагъы|алдагъы $1}}',
-'whatlinkshere-next' => '{{PLURAL:$1|эндиги|эндиги $1}}',
+'whatlinkshere-prev' => '{{PLURAL:$1|1=алдагъы|алдагъы $1}}',
+'whatlinkshere-next' => '{{PLURAL:$1|1=эндиги|эндиги $1}}',
 'whatlinkshere-links' => '← джибериуле',
 'whatlinkshere-hideredirs' => 'джибериуле $1',
 'whatlinkshere-hidetrans' => 'Къошулуулары $1',
@@ -2351,7 +2351,7 @@ $1',
 'blocklist-reason' => 'Чурум',
 'ipblocklist-submit' => 'Таб',
 'ipblocklist-localblock' => 'Локал блокга салыу',
-'ipblocklist-otherblocks' => 'Башха {{PLURAL:$1|блокга салыу|блокга салыула}}',
+'ipblocklist-otherblocks' => 'Башха {{PLURAL:$1|1=блокга салыу|блокга салыула}}',
 'infiniteblock' => 'Болджалсыз блокга салыу',
 'expiringblock' => '$1 $2 бошаллыкъды',
 'anononlyblock' => 'къуру анонимле',
@@ -2391,7 +2391,7 @@ $1',
 'ipb_hide_invalid' => 'Бу тергеу джазыуну джашырыр мадар джокъду; асыры кёб тюрлендириу болургъа болур.',
 'ipb_already_blocked' => '«$1» блокга салыныбды',
 'ipb-needreblock' => '$1 алайсызда тыйылыбды. Джарашдырыуланы тюрлендирирге излеймисиз?',
-'ipb-otherblocks-header' => 'Башха {{PLURAL:$1|блок|блокла}}',
+'ipb-otherblocks-header' => 'Башха {{PLURAL:$1|1=блок|блокла}}',
 'ipb_cant_unblock' => 'Халат: Блок ID $1 табылмагъанды.
 Блок къоратылгъан болур.',
 'ipb_blocked_as_range' => 'Халат: $1 IP-адрес ачыкъдан тыйылмагъаны себебли, блокдан чыгъараллыкъ тюлсюз.
@@ -2480,11 +2480,11 @@ $1',
 'movepage-page-exists' => '$1 статья алайсызда барды эмда автомат халда джангыдан джазылалмаз.',
 'movepage-page-moved' => '$1 бет $2 бетге атын ауушдурду.',
 'movepage-page-unmoved' => '$1 бет $2 бетге атын ауушдуралмаз.',
-'movepage-max-pages' => 'Эм кёб $1 {{PLURAL:$1|бет|бет}} атын тюрлендирди эм андан асламы автомат халда атын тюрлендирелмез.',
+'movepage-max-pages' => 'Эм кёб $1 {{PLURAL:$1|бет}} атын тюрлендирди эм андан асламы автомат халда атын тюрлендирелмез.',
 'movelogpage' => 'Атла тюрлениуню журналы',
 'movelogpagetext' => 'Тюбюнде болгъан тизме аты тюрлендирилген бетлени кёргюзеди.',
-'movesubpage' => '{{PLURAL:$1|Subpage|Бет тюбле}}',
-'movesubpagetext' => 'Бу бетни тюбюнде кёргюзюлген $1 {{PLURAL:$1|бет тюбю|бет тюбю}} барды.',
+'movesubpage' => '{{PLURAL:$1|1=Subpage|Бет тюбле}}',
+'movesubpagetext' => 'Бу бетни тюбюнде кёргюзюлген $1 {{PLURAL:$1|1=бет тюбю|бет тюбю}} барды.',
 'movenosubpage' => 'Бу бетни тюб бети джокъду.',
 'movereason' => 'Чурум:',
 'revertmove' => 'ызына къайтыу',
@@ -2577,9 +2577,9 @@ MediaWiki локализациясына юлюш къошаргъа излей
 'import-comment' => 'Эсгериу:',
 'importtext' => 'Бетни къайнакъ викиден [[Special:Export|адырны хайырландырыб]] эскпорт этигиз. Файлны дискде сакълагъыз эм былайгъа джюклегиз.',
 'importstart' => 'Файлла импорт этиле турадыла...',
-'import-revision-count' => '$1 {{PLURAL:$1|версия|версия}}',
+'import-revision-count' => '$1 {{PLURAL:$1|1=версия|версия}}',
 'importnopages' => 'Импорт этиллик бет джокъду',
-'imported-log-entries' => 'Журналны {{PLURAL:$1|джазыуу|джазыуу}} импорт этилинди.',
+'imported-log-entries' => 'Журналны {{PLURAL:$1|1=джазыуу|джазыуу}} импорт этилинди.',
 'importfailed' => '$1 импорту джетишимсиз бошалды',
 'importunknownsource' => 'Билинмеген импорт къайнакъ типи',
 'importcantopen' => 'Импорт этилген файл ачылалмады',
@@ -2607,9 +2607,9 @@ MediaWiki локализациясына юлюш къошаргъа излей
 'importlogpage' => 'Импортну журналы',
 'importlogpagetext' => 'Башха викиледен бетлени тюрлендириу тарихин администраторланы импорт этиую.',
 'import-logentry-upload' => '[[$1]] файл джюклениую бла импорт этилди',
-'import-logentry-upload-detail' => '$1 {{PLURAL:$1|версия|версия}}',
+'import-logentry-upload-detail' => '$1 {{PLURAL:$1|1=версия|версия}}',
 'import-logentry-interwiki' => '$1 трансвикиленди',
-'import-logentry-interwiki-detail' => '$2 бетден  $1 {{PLURAL:$1|весрия|версия}}',
+'import-logentry-interwiki-detail' => '$2 бетден  $1 {{PLURAL:$1|1=весрия|версия}}',
 
 # JavaScriptTest
 'javascripttest' => 'JavaScript тинтилиую',
@@ -2688,14 +2688,14 @@ MediaWiki локализациясына юлюш къошаргъа излей
 'notacceptable' => 'Бу вики-сервер сизни браузеригиз излеген форматда билгиле берелмейди.',
 
 # Attribution
-'anonymous' => 'сайтны аноним {{PLURAL:$1|къошулуучулары|къошулуучулары}}',
+'anonymous' => 'сайтны аноним {{PLURAL:$1|1=къошулуучулары|къошулуучулары}}',
 'siteuser' => '{{SITENAME}} къошулуучу $1',
 'anonuser' => '{{SITENAME}} аноним къошулуучу $1',
 'lastmodifiedatby' => 'Бет эм ахыр $3 джанындан $2, $1 заманда тюрлендирилгенди.',
 'othercontribs' => '$1 джанындан этилген ишге тамалланады.',
 'others' => 'башхала',
-'siteusers' => '{{SITENAME}} {{PLURAL:$2|къошулуучу|къошулуучула}} $1',
-'anonusers' => '{{SITENAME}} аноним {{PLURAL:$2|къошулуучу|къошулуучула}} $1',
+'siteusers' => '{{SITENAME}} {{PLURAL:$2|1=къошулуучу|къошулуучула}} $1',
+'anonusers' => '{{SITENAME}} аноним {{PLURAL:$2|1=къошулуучу|къошулуучула}} $1',
 'creditspage' => 'Бетни кредитлери',
 'nocredits' => 'Бу къошулуучу ючюн кредит билги джокъду.',
 
@@ -2778,7 +2778,7 @@ $1',
 'imagemaxsize' => "Суратны ёлчемини чеги:<br />''(файлны ангылытыу бетле ючюн)''",
 'thumbsize' => 'Гитче ёлчем:',
 'widthheight' => '$1 × $2',
-'widthheightpage' => '$1 × $2, $3 {{PLURAL:$3|бет|бет}}',
+'widthheightpage' => '$1 × $2, $3 {{PLURAL:$3|1=бет|бет}}',
 'file-info' => 'файлны ёлчеми: $1, MIME типи: $2',
 'file-info-size' => '$1 × $2 пиксель, файлны ёлчеми: $3, MIME типи: $4',
 'file-nohires' => 'Мындан ары ачыкъланнган версиясы джокъду',
@@ -2787,14 +2787,14 @@ $1',
 'show-big-image-preview' => 'Ал къарауда уллулугъу: $1.',
 'show-big-image-size' => '$1 × $2 пиксель',
 'file-info-gif-looped' => 'тогъайланнганды',
-'file-info-gif-frames' => '$1 {{PLURAL:$1|фрейм|фрейм}}',
+'file-info-gif-frames' => '$1 {{PLURAL:$1|1=фрейм|фрейм}}',
 'file-info-png-looped' => 'тогъайланнганды',
-'file-info-png-repeat' => '$1 {{PLURAL:$1|кере|кере}} ойнатылды',
-'file-info-png-frames' => '$1 {{PLURAL:$1|фрейм|фрейм}}',
+'file-info-png-repeat' => '$1 {{PLURAL:$1|1=кере|кере}} ойнатылды',
+'file-info-png-frames' => '$1 {{PLURAL:$1|1=фрейм|фрейм}}',
 
 # Special:NewFiles
 'newimages' => 'Джангы файлланы галереясы',
-'imagelisttext' => "Тюбюрекде $2 кёре тизилген '''$1''' {{PLURAL:$1|файл|файл}} кёрюнеди.",
+'imagelisttext' => "Тюбюрекде $2 кёре тизилген '''$1''' {{PLURAL:$1|1=файл|файл}} кёрюнеди.",
 'newimages-summary' => 'Бу къуллукъ бет, кёб болмай джюкленнген файлланы кёргюзеди.',
 'newimages-legend' => 'Фильтр',
 'newimages-label' => 'Файлны аты (неда кесеги):',
@@ -2805,10 +2805,10 @@ $1',
 'sp-newimages-showfrom' => '$1, $2 замандан башлаб джангы файлланы кёргюз',
 
 # Video information, used by Language::formatTimePeriod() to format lengths in the above messages
-'seconds' => '{{PLURAL:$1|$1 секунд|$1 секунд}}',
-'minutes' => '{{PLURAL:$1|$1 минут|$1 минут}}',
-'hours' => '{{PLURAL:$1|$1 сагъат|$1 сагъат}}',
-'days' => '{{PLURAL:$1|$1 кюн|$1 кюн}}',
+'seconds' => '{{PLURAL:$1|1=$1 секунд|$1 секунд}}',
+'minutes' => '{{PLURAL:$1|1=$1 минут|$1 минут}}',
+'hours' => '{{PLURAL:$1|1=$1 сагъат|$1 сагъат}}',
+'days' => '{{PLURAL:$1|1=$1 кюн|$1 кюн}}',
 'weeks' => '{{PLURAL:$1|ыйыкъ}}',
 'months' => '{{PLURAL:$1|ай}}',
 'years' => '{{PLURAL:$1|джыл}}',
@@ -3161,8 +3161,8 @@ $1',
 'exif-gpslongitude-w' => 'Кюнбатыш узунлукъ',
 
 # Pseudotags used for GPSAltitudeRef
-'exif-gpsaltitude-above-sealevel' => '$1 {{PLURAL:$1|метрге|метрге}} тенгизден мийик',
-'exif-gpsaltitude-below-sealevel' => '$1 {{PLURAL:$1|метрге|метрге}} тенгизден алаша',
+'exif-gpsaltitude-above-sealevel' => '$1 {{PLURAL:$1|1=метрге|метрге}} тенгизден мийик',
+'exif-gpsaltitude-below-sealevel' => '$1 {{PLURAL:$1|1=метрге|метрге}} тенгизден алаша',
 
 'exif-gpsstatus-a' => 'Ёлчелеу бошалмагъанды',
 'exif-gpsstatus-v' => 'Ёлчелеу бошалгъанды',
@@ -3353,11 +3353,11 @@ $5
 Нормал ал къарауну хайырланыгъыз.',
 
 # Friendlier slave lag warnings
-'lag-warn-normal' => '$1 {{PLURAL:$1|секундан|секундан}} джангы тюрлендириуле бу тизмеде кёрюнмезге боллукъдула.',
-'lag-warn-high' => 'Билги базаны сервериндеги бек кечигиу себебли, $1 {{PLURAL:$1|секундан|секундан}} джангы тюрлендириуле бу тизмеде кёрюнмей къалыргъа болур.',
+'lag-warn-normal' => '$1 {{PLURAL:$1|1=секундан|секундан}} джангы тюрлендириуле бу тизмеде кёрюнмезге боллукъдула.',
+'lag-warn-high' => 'Билги базаны сервериндеги бек кечигиу себебли, $1 {{PLURAL:$1|1=секундан|секундан}} джангы тюрлендириуле бу тизмеде кёрюнмей къалыргъа болур.',
 
 # Watchlist editor
-'watchlistedit-numitems' => 'Кёзде тургъан тизмеде {{PLURAL:$1|1 джазылгъан|$1 джазылгъан}} барды, сюзюу бетлени тышында.',
+'watchlistedit-numitems' => 'Кёзде тургъан тизмеде {{PLURAL:$1|1=1 джазылгъан|$1 джазылгъан}} барды, сюзюу бетлени тышында.',
 'watchlistedit-noitems' => 'Кёзюгюзде тургъан тизмегизде бир джазылгъан да джокъду.',
 'watchlistedit-normal-title' => 'Чынчыкълау спизокню тюрлендир',
 'watchlistedit-normal-legend' => 'Кёзюгюзде тургъан тизмегизден джазылгъанланы кетериу',
@@ -3365,7 +3365,7 @@ $5
 Джазылгъанланы кетерир ючюн, къатындагъы тёртгюлчюкде белгилеб, «{{int:Watchlistedit-normal-submit}}» тиекден басыгъыз.
 Сиз дагъыда [[Special:EditWatchlist/raw|тизмени текст кибик тюрлендирирге]] боллукъсуз.',
 'watchlistedit-normal-submit' => 'Башлыкъланы кетер',
-'watchlistedit-normal-done' => '{{PLURAL:$1|1 джазылгъан|$1 джазылгъан}}, кёзюгюзде тургъан тизмегизден кетерилди:',
+'watchlistedit-normal-done' => '{{PLURAL:$1|1=1 джазылгъан|$1 джазылгъан}}, кёзюгюзде тургъан тизмегизден кетерилди:',
 'watchlistedit-raw-title' => 'Кёзде тургъан «чий» тизмени тюрлендир',
 'watchlistedit-raw-legend' => 'Кёзде тургъан «чий» тизмени тюрлендир',
 'watchlistedit-raw-explain' => 'Кёзюгюзде тургъан тизмегиздеги бетле тюбюнде кёрюнедиле. Хар тизгинде бир башлыкъ болады, бетлени къошуб неда кетериб тизмени тюрлендирирге боллукъсуз.
@@ -3374,8 +3374,8 @@ $5
 'watchlistedit-raw-titles' => 'Башлыкъла:',
 'watchlistedit-raw-submit' => 'Кёзде тургъан тизмени сакъла',
 'watchlistedit-raw-done' => 'Кёзюгюзде тургъан тизмегиз сакъланнганды.',
-'watchlistedit-raw-added' => '{{PLURAL:$1|1 башлыкъ|$1 башлыкъ}} къошулду:',
-'watchlistedit-raw-removed' => '{{PLURAL:$1|1 башлыкъ|$1 башлыкъ}} кетерилди:',
+'watchlistedit-raw-added' => '{{PLURAL:$1|1=1 башлыкъ|$1 башлыкъ}} къошулду:',
+'watchlistedit-raw-removed' => '{{PLURAL:$1|1=1 башлыкъ|$1 башлыкъ}} кетерилди:',
 
 # Watchlist editing tools
 'watchlisttools-view' => 'Тизмеден бетледе тюрлениуле',
@@ -3478,7 +3478,7 @@ MediaWiki хайырлы боллукъду деген умут бла джай
 'fileduplicatesearch-submit' => 'Таб',
 'fileduplicatesearch-info' => '$1 × $2 пиксель<br />Файлны ёлчеми: $3<br />MIME-тип: $4',
 'fileduplicatesearch-result-1' => '«$1» файлны келишген дубликаты джокъду',
-'fileduplicatesearch-result-n' => '«$1» файлны {{PLURAL:$2|1 келишген дубликатыi|$2 келишген дубликаты}} барды.',
+'fileduplicatesearch-result-n' => '«$1» файлны {{PLURAL:$2|1=1 келишген дубликатыi|$2 келишген дубликаты}} барды.',
 'fileduplicatesearch-noresults' => '«$1» деген файл табылмады.',
 
 # Special:SpecialPages
@@ -3524,7 +3524,7 @@ MediaWiki хайырлы боллукъду деген умут бла джай
 'tags-description-header' => 'Магъананы толу ангылтыуу',
 'tags-hitcount-header' => 'Белгиленнген тюрлендириуле',
 'tags-edit' => 'тюрлендир',
-'tags-hitcount' => '$1 {{PLURAL:$1|тюрлениу|тюрлениу}}',
+'tags-hitcount' => '$1 {{PLURAL:$1|1=тюрлениу|тюрлениу}}',
 
 # Special:ComparePages
 'comparepages' => 'Бетлени тенглешдир',
@@ -3602,13 +3602,13 @@ MediaWiki хайырлы боллукъду деген умут бла джай
 
 # API errors
 'api-error-badtoken' => 'Ич халат: терс токен.',
-'api-error-duplicate-popup-title' => ' {{PLURAL:$1|Файлны|Файлны}} дубликаты',
+'api-error-duplicate-popup-title' => ' {{PLURAL:$1|1=Файлны|Файлны}} дубликаты',
 'api-error-empty-file' => 'Сиз ийген файлны ичи бошду.',
 'api-error-emptypage' => 'Ичи бош болгъан джангы бетле къураргъа болмайды.',
 'api-error-file-too-large' => 'Сиз ийген файл асыры уллуду.',
 'api-error-filename-tooshort' => 'Файлны аты асыры къысхады.',
 'api-error-filetype-banned' => 'Быллай типли файлла джасакъланыбдыла.',
-'api-error-filetype-banned-type' => '$1 — {{PLURAL:$4|джасакъланнган файл типди|джасакъланнган файл типледиле}}. {{PLURAL:$3|Эркинлик берилген файл тип —|Эркинлик берилген файл типле:}} $2.',
+'api-error-filetype-banned-type' => '$1 — {{PLURAL:$4|1=джасакъланнган файл типди|джасакъланнган файл типледиле}}. {{PLURAL:$3|1=Эркинлик берилген файл тип —|Эркинлик берилген файл типле:}} $2.',
 'api-error-filetype-missing' => 'Файлны кенгериую джокъду.',
 'api-error-hookaborted' => 'Сиз теджеген тюрлендириуню кенгертиуню сюзюучю джасакълагъанды.',
 'api-error-illegal-filename' => 'Джарамагъан файл ат.',
index 6cc9b00..a434f7d 100644 (file)
@@ -676,7 +676,7 @@ Wann De wells, künnts De Ding [[Special:Preferences|Enschtällonge aanpaße]].'
 'userlogin-resetpassword-link' => 'Paßwoot verjäße?',
 'helplogin-url' => 'Help:Övver et Enlogge',
 'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|Hölp bem Enlogge]]',
-'userlogin-loggedin' => 'Do bes ald als {{GENDER:$2|Metmaacher|Metmaacherėn|Metmaacher|Metmaacherėn|Metmaacher}} $1 enjelogg. Met heh dämm Fommolaa kanns De jäz onger enem ander Nahme enlogge.',
+'userlogin-loggedin' => 'Do bes ald als {{GENDER:$1|Metmaacher|Metmaacherėn|Metmaacher|Metmaacherėn|Metmaacher}} [[User:$1]] enjelogg. Met heh dämm Fommolaa kanns De jäz onger enem andere Nahme enlogge.',
 'userlogin-createanother' => 'Donn ene zohsäzlejje Zohjang aanlääje',
 'createacct-join' => 'Jiv Ding Daate en:',
 'createacct-another-join' => 'Maach de nüüdeje Aanjaabe för dä neue Zohjaang.',
@@ -1712,7 +1712,7 @@ dat dänne ehr Daate topaktoell sin,
 'rclistfrom' => 'Zeich de Änderunge vum $1 aan',
 'rcshowhideminor' => '$1 klein Mini-Änderunge',
 'rcshowhidebots' => '$1 de Bots ehr Änderunge',
-'rcshowhideliu' => '$1 de aanjemeldte Metmaacher ehr Änderunge',
+'rcshowhideliu' => 'De aanjemeldte Metmaacher ehr Änderunge: $1',
 'rcshowhideanons' => '$1 de namenlose Metmaacher ehr Änderunge',
 'rcshowhidepatr' => '$1 de nohjeluurte Änderunge',
 'rcshowhidemine' => '$1 ming eije Änderunge',
index 0e07ccc..a7d1d84 100644 (file)
@@ -1121,6 +1121,7 @@ Si vis id dare, opera tua tibi ascribentur.',
 'recentchanges-label-minor' => 'Haec est recensio minor',
 'recentchanges-label-bot' => 'Hanc recensionem automaton fecit',
 'recentchanges-label-unpatrolled' => 'Haec recensio nondum est examinata',
+'recentchanges-label-plusminus' => 'Magnitudo paginae per istam copiam octetorum mutata est',
 'recentchanges-legend-newpage' => '(vide etiam [[Special:NewPages|indicem paginarum novarum]])',
 'rcnotefrom' => "Subter sunt '''$1''' nuperrime mutata in proxima '''$2''' die.",
 'rclistfrom' => 'Monstrare mutata nova incipiens ab $1',
index 64dd0c6..3449838 100644 (file)
@@ -10,6 +10,7 @@
  * @author ILVI
  * @author Jewbask
  * @author Maor X
+ * @author Menachem.Moreira
  * @author Remember the dot
  * @author Runningfridgesrule
  * @author Taichi
@@ -183,16 +184,16 @@ $messages = array(
 # User preference toggles
 'tog-underline' => 'Suliñar los atamientos:',
 'tog-justify' => 'Arrimar los paraggrafos de dos vandas',
-'tog-hideminor' => 'Esconder los trocamientos chiquiticos en la hoja de los "trocamientos freskos"',
+'tog-hideminor' => 'Esconder los trocamientos chikos en la hoja de los "trocamientos freskos"',
 'tog-hidepatrolled' => 'Esconder los trocamientos surveyados en la hoja de los "trocamientos freskos"',
 'tog-newpageshidepatrolled' => 'Esconder las hojas surveyadas de la lista de las hojas muevas',
 'tog-extendwatchlist' => 'Anchar mi lista de akavidamiento afín de àmostrar todos los trocamientos, no sólo los muevos',
 'tog-usenewrc' => 'Usar el modo adelantado (JavaScript es menester)',
 'tog-numberheadings' => 'Numerotar otomatika mente los títůlos de los kapítůlos',
-'tog-showtoolbar' => 'Àmostrar el chibuk de aparatos (JavaScript es menester)',
-'tog-editondblclick' => 'Trocar las hojas con doble klik (JavaScript es menester)',
+'tog-showtoolbar' => 'Àmostrar el chibuk de aparatos',
+'tog-editondblclick' => 'Trocar las pajinas con doble klik',
 'tog-editsection' => 'Ofrir la possibilidad de trocar los kapítůlos con el atamiento [trocar]',
-'tog-editsectiononrightclick' => 'Pueder trocar los kapítůlos, en pizando el botón derecho del ratón encima el títůlo (JavaScript es menester)',
+'tog-editsectiononrightclick' => 'Pueder trocar los kapítůlos, en pizando el botón derecho del ratón encima el títůlo',
 'tog-showtoc' => 'Àmostrar el cuadro de contènidos (para las hojas que tienen más de 3 títůlos de capítůlo)',
 'tog-rememberpassword' => 'Acordarse de mi entrada en este navigador (a lo más muńcho $1 {{PLURAL:$1|día|días}})',
 'tog-watchcreations' => 'Akavidar las hojas que crîo',
@@ -209,7 +210,7 @@ $messages = array(
 'tog-shownumberswatching' => 'Àmostrar el kadhar de usadores que están akavidando las hojas',
 'tog-oldsig' => 'La firma presente',
 'tog-fancysig' => 'Tratar la firma como un vikiteksto (sin un atamiento otomatiko)',
-'tog-uselivepreview' => 'Usar el "previsteo bivo" (JavaScript es menester) (eksperimental)',
+'tog-uselivepreview' => 'Usar el "previsteo bivo" (eksperimental)',
 'tog-forceeditsummary' => 'Avizarme cuando dexo el somaryo vazío',
 'tog-watchlisthideown' => 'Esconder mis trocamientos en mi lista de akavidamiento',
 'tog-watchlisthidebots' => 'Esconder trocamientos de bot en mi lista de akavidamiento',
@@ -221,6 +222,7 @@ $messages = array(
 'tog-diffonly' => 'No amostrar el contenido de la hoja debaxo las diffes (diferencias entre los trocamientos)',
 'tog-showhiddencats' => 'Amostrar las katēggorías escondidas',
 'tog-norollbackdiff' => 'No amostrar la diff doeśpués de aboltar',
+'tog-useeditwarning' => 'Avirteme kuando desho la pajina sin guardar los kambios',
 
 'underline-always' => 'Siempre',
 'underline-never' => 'Nunca',
@@ -248,10 +250,10 @@ $messages = array(
 'thu' => 'Juğ',
 'fri' => 'Vie',
 'sat' => 'Shab',
-'january' => 'Enero',
+'january' => 'Jenero',
 'february' => 'Hevrero',
 'march' => 'Março',
-'april' => 'Abril',
+'april' => 'Avril',
 'may_long' => 'Mayo',
 'june' => 'Juño',
 'july' => 'Jullo',
@@ -284,6 +286,18 @@ $messages = array(
 'oct' => 'Och',
 'nov' => 'Nov',
 'dec' => 'Dez',
+'january-date' => 'Jenero $1',
+'february-date' => 'Fevrero $1',
+'march-date' => 'Marso $1',
+'april-date' => 'Avril $1',
+'may-date' => 'Mayo $1',
+'june-date' => 'Junio $1',
+'july-date' => 'Djulio $1',
+'august-date' => 'Agosto $1',
+'september-date' => 'Sietembre $1',
+'october-date' => 'Oktubre $1',
+'november-date' => 'Noviembre $1',
+'december-date' => 'Disiembre $1',
 
 # Categories related messages
 'pagecategories' => '{{PLURAL:$1|Kateggoría|Kateggorías}}',
@@ -308,12 +322,13 @@ $messages = array(
 'article' => 'Artícůlo de contenido',
 'newwindow' => '(Se avre en una mueva ventana)',
 'cancel' => 'Anular',
-'moredotdotdot' => 'Más...',
-'mypage' => 'Mi hoja',
+'moredotdotdot' => 'Mas...',
+'morenotlisted' => 'Esta lista no esta kompleta',
+'mypage' => 'Pajina',
 'mytalk' => 'Mi diskusyon',
 'anontalk' => 'Diskusyón para este adresso de IP',
 'navigation' => 'Navigación',
-'and' => '&#32;y',
+'and' => '&#32;i',
 
 # Cologne Blue skin
 'qbfind' => 'Topar',
@@ -341,12 +356,13 @@ $messages = array(
 'namespaces' => 'Espacios de nombres',
 'variants' => 'Formas diferentes',
 
+'navigation-heading' => 'Menu de navigasyon',
 'errorpagetitle' => 'Yerro',
 'returnto' => 'Tornar a $1.',
 'tagline' => 'De {{SITENAME}}',
 'help' => 'Ayudo',
-'search' => 'Busca',
-'searchbutton' => 'Busca',
+'search' => 'Bushkar',
+'searchbutton' => 'Bushkar',
 'go' => 'Vate',
 'searcharticle' => 'Vate',
 'history' => 'La îstoria de la hoja',
@@ -378,7 +394,7 @@ $messages = array(
 'articlepage' => 'Ver el artícůlo de contenido',
 'talk' => 'Diskusyón',
 'views' => 'Vistas',
-'toolbox' => 'Cuadro de aparates',
+'toolbox' => 'Aparatos',
 'userpage' => 'Ver la hoja del usador',
 'projectpage' => 'Ver la hoja del projeto',
 'imagepage' => 'Ver la hoja de la dosya',
@@ -394,10 +410,11 @@ $messages = array(
 'protectedpage' => 'Hoja guardada',
 'jumpto' => 'Salta a:',
 'jumptonavigation' => 'navigación',
-'jumptosearch' => 'búsquida',
+'jumptosearch' => 'bushkar',
+'pool-errorunknown' => 'Yerro deskonosido',
 
 # All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage).
-'aboutsite' => 'Encima de la {{SITENAME}}',
+'aboutsite' => 'Encima de {{SITENAME}}',
 'aboutpage' => 'Project:Encima de',
 'copyright' => 'El contenido se puede topar debaxo de la <i>$1</i>',
 'copyrightpage' => '{{ns:project}}:Derechos de autor',
@@ -419,7 +436,7 @@ $messages = array(
 
 'ok' => 'DE ACORDDO',
 'retrievedfrom' => 'Acòjido del adhresso "$1"',
-'youhavenewmessages' => 'Tienes $1 ($2).',
+'youhavenewmessages' => '{{PLURAL:$3|Tienes}} $1 ($2).',
 'youhavenewmessagesmulti' => 'Tienes messajes nuevos en $1',
 'editsection' => 'troca',
 'editold' => 'troca',
@@ -432,14 +449,15 @@ $messages = array(
 'hidetoc' => 'esconder',
 'thisisdeleted' => 'Ver o restorar $1?',
 'viewdeleted' => 'Desea ver $1?',
+'feedlinks' => 'Kanal:',
 'site-rss-feed' => 'Fuente de RSS de $1',
 'site-atom-feed' => 'Alimentela de Atom de $1',
 'page-rss-feed' => '"$1" Fuente RSS',
 'page-atom-feed' => '"$1" Subscripción Atom',
-'red-link-title' => '$1 (esta hoja no egziste)',
+'red-link-title' => '$1 (la hoja no egziste)',
 
 # Short words for each namespace, by default used in the namespace tab in monobook
-'nstab-main' => 'Hoja',
+'nstab-main' => 'Pajina',
 'nstab-user' => 'Hoja de empleador',
 'nstab-media' => 'Hoja de Meddia',
 'nstab-special' => 'Hoja especial',
@@ -456,6 +474,9 @@ $messages = array(
 # General errors
 'error' => 'Yerro',
 'databaseerror' => 'Yerro de la Databasa',
+'databaseerror-query' => 'Demanda: $1',
+'databaseerror-function' => 'Fonksyon: $1',
+'databaseerror-error' => 'Yerro: $1',
 'missing-article' => 'La basa de dados no topó el teksto de la hoja llamada "$1" $2.
 
 En lo mas muncho, esto se cavsa de un "dif" anakróniko ou de un atamiento a la istoria de una hoja que se efaçó.
@@ -471,9 +492,17 @@ Puede ser que contiene uno o más caracteres que no se pueden usar en los títul
 'viewsource' => 'Ver su manadero',
 
 # Login and logout pages
+'welcomeuser' => 'Bienvinidos, $1',
 'yourname' => 'Su nombre de usuario',
+'userlogin-yourname' => 'Nombre de usuario',
+'userlogin-yourname-ph' => 'Eskrive tu nombre de usuario',
+'createacct-another-username-ph' => 'Eskrive el nombre de usuario',
 'yourpassword' => 'Parola',
+'userlogin-yourpassword' => 'Kontrasenya',
+'userlogin-yourpassword-ph' => 'Eskriva tu kontrasenya',
+'createacct-yourpassword-ph' => 'Eskriva una kontrasenya',
 'yourpasswordagain' => 'Entra de muevo la parola',
+'createacct-yourpasswordagain-ph' => 'Eskrive la kontrasenya de muevo',
 'remembermypassword' => 'Acórdate de mi entrada de usador en este bilgisayar/orddênador (por un maksimum de {{PLURAL:$1|día|días}})',
 'login' => 'Entrar',
 'nav-login-createaccount' => 'Entrar / Criar un cuento',
@@ -481,17 +510,31 @@ Puede ser que contiene uno o más caracteres que no se pueden usar en los títul
 'userlogin' => 'Entrar / Registrarse',
 'logout' => 'Salir',
 'userlogout' => 'Salir',
+'userlogin-noaccount' => 'No tiene un kuento?',
+'userlogin-joinproject' => 'Abonar {{SITENAME}}',
 'nologin' => "¿No tienes un cuento? '''$1'''.",
 'nologinlink' => 'Crea un cuento',
 'createaccount' => 'Crea un nuevo cuento',
 'gotaccount' => "¿Ya tienes un cuento? '''$1'''.",
 'gotaccountlink' => 'Entrar',
 'userlogin-resetlink' => 'Olvidates tus detalyos de akseso?',
+'userlogin-resetpassword-link' => 'Olvidaste tu kontrasenya?',
+'userlogin-createanother' => 'Krear otro kuento',
+'createacct-join' => 'Eskrive abasho tu informasyon',
+'createacct-emailrequired' => 'Adreso de korreo elektroniko',
+'createacct-email-ph' => 'Eskrive tu adreso de korreo elektroniko',
+'createacct-another-email-ph' => 'Eskrive el adreso de korreo elektronico',
 'createaccountmail' => 'por una letra electrónica',
+'createaccountreason' => 'Razon:',
+'createacct-reason' => 'Razon',
+'createacct-submit' => 'Krear tu cuento',
+'createacct-another-submit' => 'Krear otro kuento',
+'createacct-benefit-body2' => '{{PLURAL:$1|pajina|pajinas}}',
 'userexists' => 'El nombre que entrates ya se usa.
 Si puede ser, escoge un otro nombre.',
 'createaccounterror' => 'No se pudo crear el cuento: $1',
 'mailmypassword' => 'Embiar una nueva koddiche por e-mail',
+'mailerror' => 'Falta al embiar korreo: $1',
 'emailconfirmlink' => 'Confirma su adderesso de letra electrónica',
 'accountcreated' => 'Cuento creado',
 'accountcreatedtext' => 'El cuento del usuario para $1 fue creado.',
@@ -509,9 +552,18 @@ Si puede ser, escoge un otro nombre.',
 'passwordreset-email' => 'Adresso de letral:',
 
 # Special:ChangeEmail
+'changeemail' => 'Kambiar adreso de korreo elektroniko',
+'changeemail-header' => 'Kambiar adreso de korreo elektroniko de kuento',
+'changeemail-oldemail' => 'Adreso de korreo elektroniko aktual:',
+'changeemail-newemail' => 'Muevo adreso de korreo elektroniko:',
+'changeemail-none' => '(dinguno)',
+'changeemail-password' => 'Tu kontrasenya en {{SITENAME}}:',
 'changeemail-submit' => 'Trocar letral',
 'changeemail-cancel' => 'Anular',
 
+# Special:ResetTokens
+'resettokens-token-label' => '$1(valor aktual: $2)',
+
 # Edit page toolbar
 'bold_sample' => 'Teksto gordo',
 'bold_tip' => 'Teksto gordo',
@@ -546,12 +598,13 @@ Tu adresso de IP va ser enrejjistrado en la istoria de la hoja.",
 'blockedtitle' => 'El usador está blokeado',
 'blockednoreason' => 'La razόn no se diό',
 'whitelistedittext' => 'Tienes que $1 para pueder trocar artículos.',
+'nosuchsectiontitle' => 'No se puede topar seksyon',
 'loginreqtitle' => 'Entrar es menester',
 'loginreqlink' => 'entrar',
 'loginreqpagetext' => 'Tienes que $1 para pueder ver otras hojas.',
 'accmailtitle' => 'La kontrasenya ha sido embiada.',
 'accmailtext' => 'La kontrasenya para "$1" se ha embiado a $2.',
-'newarticle' => '(Nuevo)',
+'newarticle' => '(Muevo)',
 'newarticletext' => 'Arrivates a una hoja que daínda no egziste.
 Para crear esta hoja, empeça a escribir en la caxa de abaxo. Mira [[{{MediaWiki:Helppage}}|la hoja de ayudo]] para saber más.
 Si venites aquí por yerro, torna a la hoja de antes.',
@@ -584,6 +637,13 @@ Kale ke penses si es menesterozo editar esta oja.
 El enrejistro de efassado i taxireado para esta oja puede ser meldado aki:",
 'moveddeleted-notice' => "Esta ója fue efassada.
 El ''log'' de efassado i taxireado de la ója es amostrado abasho para dar referensia.",
+'edit-already-exists' => 'No se puede krear una pajina mueva.
+Ya egziste.',
+'defaultmessagetext' => 'Teksto de mesaje predeterminado',
+
+# Content models
+'content-model-wikitext' => 'vikiteksto',
+'content-model-css' => 'CSS',
 
 # Parser/template warnings
 'post-expand-template-inclusion-warning' => "'''Avizo:''' La contenencia de xablon está muy grande.
@@ -593,6 +653,9 @@ Algunos xablones no van á ser comprendidos.",
 Este o estos kampos no van ser amostrados",
 'post-expand-template-argument-category' => 'Ojas ke tienen xablones kon parametros no uzados',
 
+# Account creation failure
+'cantcreateaccounttitle' => 'No se puede krear el kuento',
+
 # History pages
 'viewpagelogs' => 'Ver los registros de esta hoja',
 'currentrev' => "Enderechamiento d'al cavo",
@@ -612,8 +675,8 @@ Leyenda: (act) = diferencias con la versión actual,
 (prev) = diferencias con la versión previa, M = edición menor",
 'history-fieldset-title' => 'Buscar en la istoria',
 'history-show-deleted' => 'Sólamente efassado',
-'histfirst' => 'Primeras',
-'histlast' => 'De alcabo',
+'histfirst' => 'Lo mas antiko',
+'histlast' => 'Lo mas muevo',
 'historysize' => '({{PLURAL:$1|1 byte|$1 bytes}})',
 'historyempty' => '(vazío)',
 
@@ -624,17 +687,20 @@ Leyenda: (act) = diferencias con la versión actual,
 # Revision deletion
 'rev-delundel' => 'mostra/esconde',
 'rev-showdeleted' => 'mostra',
-'revdelete-show-file-submit' => 'Sí',
+'revdelete-show-file-submit' => 'Si',
+'revdelete-hide-image' => 'Eskonder el kontenido de archivo',
+'revdelete-hide-user' => 'Nombre de usuario/adreso de IP del Redaktor',
 'revdelete-radio-same' => '(no troques)',
-'revdelete-radio-set' => '',
+'revdelete-radio-set' => 'Eskondido',
 'revdelete-radio-unset' => 'No',
-'revdelete-log' => 'Razón:',
+'revdelete-log' => 'Razon:',
 'revdel-restore' => 'troca la visibilitá',
 'pagehist' => 'La storia de la hoja',
+'revdelete-otherreason' => 'Otro razon/razon adisiyonal',
 'revdelete-reasonotherlist' => 'Otra razón',
 
 # History merging
-'mergehistory-reason' => 'Razón:',
+'mergehistory-reason' => 'Razon:',
 
 # Merge log
 'revertmerge' => 'Apartar',
@@ -675,7 +741,7 @@ Leyenda: (act) = diferencias con la versión actual,
 'search-suggest' => 'Quijites dezir: $1',
 'search-interwiki-caption' => 'Proyectos hermanos',
 'search-interwiki-default' => 'Los resultados de $1:',
-'search-interwiki-more' => '(más)',
+'search-interwiki-more' => '(mas)',
 'searchrelated' => 'lisionado',
 'searchall' => 'todos',
 'showingresultsheader' => "{{PLURAL:$5|Resultado '''$1''' de '''$3'''|Resultados '''$1-$2''' de '''$3'''}} para '''$4'''",
@@ -684,6 +750,7 @@ Leyenda: (act) = diferencias con la versión actual,
 'powersearch-ns' => 'Busca en los espacios de nombres:',
 'powersearch-redir' => 'Mostra las redirecciones',
 'powersearch-toggleall' => 'Todos',
+'powersearch-togglenone' => 'dingun',
 'search-external' => 'Búsqueda eksterna',
 
 # Preferences page
@@ -691,39 +758,72 @@ Leyenda: (act) = diferencias con la versión actual,
 'mypreferences' => 'Las mis preferensias',
 'prefs-skin' => 'Vista',
 'skin-preview' => 'Previstear',
+'prefs-datetime' => 'Data i ora',
+'prefs-user-pages' => 'Pajinas de usuario',
+'prefs-personal' => 'Profil de usuario',
 'prefs-rc' => 'Los Trocamientos de Alcabo',
 'prefs-watchlist' => 'Lista de los Trocamientos Preferidos',
 'prefs-watchlist-days' => 'El número de los días a mostrar en la lista de los trocamientos preferidos:',
-'prefs-watchlist-days-max' => '$1 {{PLURAL:$1|días|días}} a lo más muncho',
+'prefs-watchlist-days-max' => '$1 {{PLURAL:$1|diya|diyas}} a lo más muncho',
 'prefs-resetpass' => 'Trocar la parola',
+'prefs-changeemail' => 'Kambiar adreso de korreo elektroniko',
 'prefs-rendering' => 'Vista',
 'saveprefs' => 'Enrejistrar',
+'searchresultshead' => 'Bushkar',
 'timezoneregion-africa' => 'África',
 'timezoneregion-america' => 'América',
 'timezoneregion-antarctica' => 'Antárctica',
+'timezoneregion-arctic' => 'Artiko',
 'timezoneregion-asia' => 'Asia',
+'timezoneregion-atlantic' => 'Oseano Atlantiko',
 'timezoneregion-australia' => 'Ostralia',
 'timezoneregion-europe' => 'Europa',
+'timezoneregion-indian' => 'Oseano Indiko',
+'timezoneregion-pacific' => 'Oseano Pasifiko',
+'prefs-searchoptions' => 'Bushkar',
 'prefs-files' => 'Dosyas',
-'youremail' => 'El adderesso de tu letra electrόnica:',
-'username' => 'Nombre de usuario:',
+'youremail' => 'Korreo elektroniko:',
+'username' => '{{GENDER:$1|Nombre de usuario}}:',
 'yourrealname' => 'Nombre verdadero:',
-'yourlanguage' => 'Lingua:',
+'yourlanguage' => 'Lengua:',
 'yournick' => 'Firma mueva:',
-'email' => 'Letral',
+'gender-unknown' => 'Prefiero no dezir',
+'gender-male' => 'El redakto pajinas de viki',
+'gender-female' => 'Eya redakto pajinas de viki',
+'email' => 'Korreo elektroniko',
 'prefs-help-email' => 'El adreso de e-posta es menester para alimpiar la tu parola, si la olvidates',
 'prefs-help-email-others' => 'Endemas puedes eskojer si keres dar pueder a otros usadores de azer kontakto kon ti por modre de e-posta, a  traverso de un atamiento en tus ojas de usador i de diskusyon.',
+'prefs-i18n' => 'Internasionalisasyion',
 'prefs-signature' => 'Firma',
+'prefs-editor' => 'Redaktor',
+
+# User rights
+'userrights-groupsmember' => 'Miembro de:',
+'userrights-reason' => 'Razon:',
 
 # Groups
+'group' => 'Grupo:',
 'group-user' => 'Usadorers',
+'group-bot' => 'Bots',
 'group-sysop' => 'Administradores',
+'group-bureaucrat' => 'Burokratos',
 'group-all' => '(todos)',
 
+'group-user-member' => '{{GENDER:$1|usuario}}',
+'group-bot-member' => '{{GENDER:$1|bot}}',
+'group-bureaucrat-member' => '{{GENDER:$1|burokrato}}',
+
+'grouppage-user' => '{{ns:project}}:Usuarios',
+'grouppage-bot' => '{{ns:project}}:Bots',
 'grouppage-sysop' => '{{ns:project}}:Administradores',
+'grouppage-bureaucrat' => '{{ns:project}}:Burokratos',
 
 # Rights
+'right-read' => 'Meldar pajinas',
 'right-edit' => 'Trocar las hojas',
+'right-createpage' => 'Krear pajinas (ke no son pajinas de diskusyon)',
+'right-createtalk' => 'Krear pajinas de diskusyon',
+'right-createaccount' => 'Krear muevos kuentos de usuarios',
 'right-minoredit' => 'Marcar trocamientos como "chiquiticos"',
 'right-delete' => 'Efassar hojas',
 
@@ -737,10 +837,15 @@ Leyenda: (act) = diferencias con la versión actual,
 'action-read' => 'meldar esta hoja',
 'action-edit' => 'trocar esta hoja',
 'action-createpage' => 'crear hojas',
+'action-createtalk' => 'Krear pajinas de diskusyon',
+'action-createaccount' => 'Krear este kuento de usuario',
+'action-minoredit' => 'sinyalar este kambio komo chiko',
 'action-delete' => 'efassar esta hoja',
+'action-sendemail' => 'embiar korreo elektronikos',
 
 # Recent changes
 'nchanges' => '$1 {{PLURAL:$1|trocamiento|trocamientos}}',
+'enhancedrc-history' => 'istoria',
 'recentchanges' => 'Trocamientos freskos',
 'recentchanges-legend' => 'Opciones encima de los trocamientos frescos',
 'recentchanges-summary' => 'Perseguid en esta hoja, los trocamientos de alcabo realizados en la Viki.',
@@ -749,11 +854,12 @@ Leyenda: (act) = diferencias con la versión actual,
 'recentchanges-label-minor' => 'Esta es un trocamiento chiquitico',
 'recentchanges-label-bot' => 'Este trokamiento fue echo por un bot',
 'recentchanges-label-unpatrolled' => 'Estre trokamiento no esta akavidado',
+'recentchanges-legend-plusminus' => "(''±123'')",
 'rcnotefrom' => "Debasho se amostran los trokamientos desde '''$2''' (amostrados fina <b>$1</b>)",
 'rclistfrom' => 'Mostra los trocamientos nuevos empeçando desde $1',
 'rcshowhideminor' => '$1 trocamientos chiquiticos',
 'rcshowhidebots' => '$1 bots',
-'rcshowhideliu' => '$1 empleadores enrējjistrados',
+'rcshowhideliu' => '$1 usuarios enrējjistrados',
 'rcshowhideanons' => '$1 empleadores anonimes',
 'rcshowhidepatr' => '$1 trokamientos akavidados',
 'rcshowhidemine' => '$1 mis ediciones',
@@ -765,7 +871,8 @@ Leyenda: (act) = diferencias con la versión actual,
 'minoreditletter' => 'ch',
 'newpageletter' => 'N',
 'boteditletter' => 'b',
-'rc-enhanced-expand' => 'Mostra los detalyos (cale JavaScript)',
+'rc_categories_any' => 'Kualkyer',
+'rc-enhanced-expand' => 'Mostra los detalyos',
 'rc-enhanced-hide' => 'Guarda los detalyos',
 
 # Recent changes linked
@@ -781,16 +888,28 @@ Las hojas en tu [[Special:Watchlist|lista de akavidamiento]] son escritas '''con
 # Upload
 'upload' => 'Suvir una dosya',
 'uploadlogpage' => 'Subidas de arxivos',
+'filename' => 'Nombre de archivo',
 'filedesc' => 'Somario',
+'filereuploadsummary' => 'Kambios de archivo:',
+'filename-tooshort' => 'El nombre del archivo es muy kurto.',
+'savefile' => 'Guardar archivo',
 'uploadedimage' => 'subió «[[$1]]»',
 
+# File backend
+'backend-fail-notexists' => 'El archivo $1 no egziste.',
+'backend-fail-alreadyexists' => 'El archivo "$1" ya egziste.',
+
 'license' => 'Lesensia:',
 'license-header' => 'Lesensiamyénto',
 
 # Special:ListFiles
+'imgfile' => 'archivo',
+'listfiles_date' => 'Data',
 'listfiles_name' => 'Nombre',
 'listfiles_user' => 'Usuario',
 'listfiles_size' => 'Boy',
+'listfiles-latestversion-yes' => 'Si',
+'listfiles-latestversion-no' => 'No',
 
 # File description page
 'file-anchor-link' => 'Archivo',
@@ -812,19 +931,47 @@ Las hojas en tu [[Special:Watchlist|lista de akavidamiento]] son escritas '''con
 'sharedupload-desc-here' => 'Esta hoja es de $1 y puede ser usado por otros projetos.
 La descripción en su [$2 hoja de descripción del arxivo] está amostrada debaxo.',
 'uploadnewversion-linktext' => 'Subir una nueva versión de este arxivo',
+'shared-repo-from' => 'de $1',
+
+# File reversion
+'filerevert-comment' => 'Razon:',
+
+# File deletion
+'filedelete-comment' => 'Razon:',
+'filedelete-nofile' => "'''$1''' no egziste.",
+'filedelete-otherreason' => 'Otra razon/razon adisiyonal',
+'filedelete-reason-otherlist' => 'Otra razon',
+
+# MIME search
+'mimesearch' => 'bushkida por MIME',
+'download' => 'deskargar',
 
 # Random page
 'randompage' => 'Hoja por asardo',
 
+# Random page in category
+'randomincategory-selectcategory-submit' => 'Ir',
+
 # Statistics
 'statistics' => 'Estatísticas',
+'statistics-articles' => 'Pajinas de kontenido',
+'statistics-pages' => 'Pajinas',
+
+'pageswithprop-submit' => 'Ir',
+
+'brokenredirects-edit' => 'trocar',
+
+'withoutinterwiki-submit' => 'Amostrar',
 
 # Miscellaneous special pages
 'nbytes' => '$1 {{PLURAL:$1|bayt|baytes}}',
 'nmembers' => '$1 {{PLURAL:$1|miembro|miembros}}',
 'prefixindex' => 'Todas las hojas con prefixo',
+'shortpages' => 'Pajinas kurtas',
+'longpages' => 'Pajinas largas',
 'usercreated' => '{{GENDER:$3|Enrejistrado|Enrejistrada}} el $1 a las $2',
 'newpages' => 'Hojas muevas',
+'newpages-username' => 'Nombre de usuario:',
 'ancientpages' => 'Artikolos mas viejos',
 'move' => 'taxirea',
 'movethispage' => 'Tashirea esta hoja',
@@ -832,7 +979,7 @@ La descripción en su [$2 hoja de descripción del arxivo] está amostrada debax
 'pager-older-n' => '{{PLURAL:$1|1 de antes|$1 de antes}}',
 
 # Book sources
-'booksources' => 'Fuentes de libros',
+'booksources' => 'Fuentes de livros',
 'booksources-search-legend' => 'Buscar fuentes de libros',
 'booksources-go' => 'Yir',
 
@@ -842,10 +989,11 @@ La descripción en su [$2 hoja de descripción del arxivo] está amostrada debax
 # Special:AllPages
 'allpages' => 'Todas las hojas',
 'alphaindexline' => '$1 a $2',
+'nextpage' => 'La sigiente pajina ($1)',
 'prevpage' => 'Hoja de antés ($1)',
 'allpagesfrom' => 'Mostrar hojas que empecen por:',
 'allpagesto' => 'Mostrar hojas escapadas con:',
-'allarticles' => 'Todos los artikolos',
+'allarticles' => 'Todas las pajinas',
 'allinnamespace' => 'Todas las pajinas (espasio $1)',
 'allpagessubmit' => 'Àmostrar la lista',
 
@@ -855,14 +1003,36 @@ La descripción en su [$2 hoja de descripción del arxivo] está amostrada debax
 'special-categories-sort-abc' => 'ordenar alefbeticamente',
 
 # Special:LinkSearch
-'linksearch' => 'Linkes eksternos',
+'linksearch' => 'Bushkida de enlases eksternos',
+'linksearch-ok' => 'Bushkar',
 'linksearch-line' => 'Atamiento para $1 en la ója $2',
 
+# Special:ListUsers
+'listusers-submit' => 'Amostrar',
+
+# Special:ActiveUsers
+'activeusers-hidebots' => 'Eskonder bots',
+'activeusers-noresult' => 'No se toparon usuario.',
+
 # Special:ListGroupRights
+'listgrouprights' => 'Derechos del grupo de usuario',
+'listgrouprights-group' => 'Grupo',
+'listgrouprights-rights' => 'Derechos',
+'listgrouprights-helppage' => 'Ayudo:Derechos de grupo',
 'listgrouprights-members' => '(ver los miembros de este grupo)',
 
 # Email user
-'emailuser' => 'Embia e-mail a este usuario',
+'emailuser' => 'Embia korreo elektroniko a este usuario',
+'emailuser-title-target' => 'Embiar un korreo elektroniko a {{Gender:$1|este usuario|esta usuaria}}',
+'emailuser-title-notarget' => 'Embiar un korreo elektroniko a un usuario',
+'emailpage' => 'Embiar un korreo elektroniko a un usuario',
+'defemailsubject' => 'Korreo elektroniko del usuario "$1" de {{SITENAME}}',
+'emailusername' => 'Nombre de usuario:',
+'emailfrom' => 'De:',
+'emailto' => 'Para:',
+'emailsubject' => 'Sujeto:',
+'emailmessage' => 'Mesaje:',
+'emailsend' => 'Embiar',
 
 # Watchlist
 'watchlist' => 'Lista de akavidamiento',
@@ -883,6 +1053,8 @@ Cuando queres eliminar la hoja de tu lista de escogidas, piza «Dexar de cudiar
 'watching' => 'Cudiando...',
 'unwatching' => 'Dexando de cudiar...',
 
+'enotif_impersonal_salutation' => '{{SITENAME}} usuario',
+
 # Delete
 'deletepage' => 'Efassar esta hoja',
 'confirmdeletetext' => 'Estás al punto de efassar una hoja
@@ -895,7 +1067,7 @@ resultados, i que lo estás haziendo de acorddo con las [[{{MediaWiki:Policy-url
 Mira $2 para un registro de los efassados nuevos.',
 'dellogpage' => 'Registro de efassados',
 'deletecomment' => 'Razón:',
-'deleteotherreason' => 'Otra razón:',
+'deleteotherreason' => 'Otra razon/razon adisiyonal:',
 'deletereasonotherlist' => 'Otra razón',
 'deletereason-dropdown' => '* Motivos generales de efassamientos
 ** La demanda del criador de la hoja
@@ -910,7 +1082,7 @@ Mira $2 para un registro de los efassados nuevos.',
 'protectedarticle' => 'guardó «[[$1]]»',
 'modifiedarticleprotection' => 'trocó el nivel de protección de «[[$1]]»',
 'prot_1movedto2' => '[[$1]] trasladado a [[$2]]',
-'protectcomment' => 'Razón:',
+'protectcomment' => 'Razon:',
 'protectexpiry' => 'Escapa:',
 'protect_expiry_invalid' => 'Tiempo de escapación yerrado.',
 'protect_expiry_old' => 'El tiempo de escapación está en el passado.',
@@ -926,12 +1098,20 @@ A continuación se mostran las opciones actuales de la hoja '''$1''':",
 'protect-expiring' => 'caduca el $1 (UTC)',
 'protect-cascade' => 'Protección en cascada - guardar todas las hojas incluidas en ésta.',
 'protect-cantedit' => 'No puedes trocar el nivel de protección porque no tienes permissión para hazer ediciones.',
+'protect-otherreason' => 'Otra razon/razon adisiyonal',
+'protect-otherreason-op' => 'Otra razon',
 'restriction-type' => 'Permiso:',
 'restriction-level' => 'Nivel de restricción:',
 
+# Restrictions (nouns)
+'restriction-create' => 'Krear',
+
 # Undelete
 'undeletelink' => 've/trae atrás',
 'undeleteviewlink' => 've',
+'undeletecomment' => 'Razon:',
+'undelete-search-submit' => 'Bushkar',
+'undelete-show-file-submit' => 'Si',
 
 # Namespace form on various pages
 'namespace' => 'Espacio de nombres:',
@@ -942,10 +1122,10 @@ A continuación se mostran las opciones actuales de la hoja '''$1''':",
 'contributions' => 'Ajustamientos {{GENDER:$1|del usador|de la usadora}}',
 'contributions-title' => 'Ajustamientos {{GENDER:$1|del usuario|de la usuaria}} $1',
 'mycontris' => 'Mis dados',
-'contribsub2' => '$1 ($2)',
+'contribsub2' => 'Para {{GENDER:$3|$1}}($2)',
 'uctop' => '(última modificación)',
 'month' => 'Desde el mes (i antes):',
-'year' => 'Desde el año (i antes):',
+'year' => 'Desde el anyo (i antes):',
 
 'sp-contributions-newbies' => 'Mostrar solo las ajustamientos de los usuarios nuevos',
 'sp-contributions-blocklog' => 'registro de bloqueos',
@@ -953,14 +1133,14 @@ A continuación se mostran las opciones actuales de la hoja '''$1''':",
 'sp-contributions-logs' => 'enrejistros',
 'sp-contributions-talk' => 'Diskusyón',
 'sp-contributions-search' => 'Buscar ajustamientos',
-'sp-contributions-username' => 'Dirección IP o nombre de usuario:',
+'sp-contributions-username' => 'Adreso de IP o nombre de usuario:',
 'sp-contributions-toponly' => "Amostrar solo revisiones d'alkavo",
-'sp-contributions-submit' => 'Buscar',
+'sp-contributions-submit' => 'Bushkar',
 
 # What links here
 'whatlinkshere' => 'Atamientos a esta hoja',
 'whatlinkshere-title' => 'Hojas que dan link a "$1"',
-'whatlinkshere-page' => 'Hoja:',
+'whatlinkshere-page' => 'Pajina:',
 'linkshere' => "Las hojas venideras dan link a '''[[:$1]]''':",
 'nolinkshere' => "Dinguna ója tiene atamientos kon '''[[:$1]]'''",
 'isredirect' => 'Hoja redirigida',
@@ -977,16 +1157,21 @@ A continuación se mostran las opciones actuales de la hoja '''$1''':",
 
 # Block/unblock
 'blockip' => 'Bloquear usuario',
-'ipboptions' => '2 oras:2 hours,1 día:1 day,3 días:3 days,1 semana:1 week,2 semanas:2 weeks,1 mes:1 month,3 meses:3 months,6 meses:6 months,1 año:1 year,para siempre:infinite',
+'ipbreason' => 'Razon:',
+'ipboptions' => '2 oras:2 hours,1 día:1 day,3 días:3 days,1 semana:1 week,2 semanas:2 weeks,1 mes:1 month,3 meses:3 months,6 meses:6 months,1 anyo:1 year,para siempre:infinite',
 'ipblocklist' => 'Usadores bloqueados',
+'blocklist-reason' => 'Razon',
+'ipblocklist-submit' => 'Bushkar',
 'blocklink' => 'bloka',
 'unblocklink' => 'quita el bloko',
 'change-blocklink' => 'troca el bloko',
 'contribslink' => 'donos',
+'emaillink' => 'embiar korreo elektroniko',
 'blocklogpage' => 'Bloqueos de usuarios',
 'blocklogentry' => 'bloqueó a [[$1]] $3 durante un tiempo de $2',
 'unblocklogentry' => 'desbloqueó a "$1"',
 'block-log-flags-nocreate' => 'desactivada la creación de cuentos',
+'block-log-flags-hiddenname' => 'nombre de usuario eskondido',
 
 # Move page
 'movepagetext' => "Usando el formulario venidero se va renombrar una hoja, quitando todo su istoria a su nuevo nombre.
@@ -1017,22 +1202,29 @@ En estos casos, va deber trasladar manualmente el contenido de la hoja de diskus
 Si puede ser, escoge otro nombre.',
 'movetalk' => 'Renombrar la hoja de diskussión también, si es possible.',
 'movelogpage' => 'Registro de traslados',
-'movereason' => 'Razón:',
+'movereason' => 'Razon:',
 'revertmove' => 'abolta',
 
 # Export
 'export' => 'Eksportar las hojas',
+'export-download' => 'Guardar komo archivo',
 
 # Namespace 8 related
 'allmessages' => 'Mesajes del sistema',
 'allmessagesname' => 'Nombre',
 'allmessagesdefault' => 'Teksto por defekto',
 'allmessagescurrent' => 'Teksto aktual',
+'allmessages-filter-all' => 'Todos',
+'allmessages-language' => 'Lengua:',
+'allmessages-filter-submit' => 'Ir',
 
 # Thumbnails
 'thumbnail-more' => 'Engrandece',
 'thumbnail_error' => 'Yerro kriando la imej chika: $1',
 
+# Special:Import
+'import-upload-filename' => 'Nombre de archivo:',
+
 # Tooltip help for the actions
 'tooltip-pt-userpage' => 'Tu hoja de usador',
 'tooltip-pt-mytalk' => 'Tu hoja de diskusyón',
@@ -1052,9 +1244,9 @@ Puedes ver su manadero',
 'tooltip-ca-move' => 'Taxirea (renombra) esta hoja',
 'tooltip-ca-watch' => 'Ajustar esta hoja a tu lista de akavidamientos',
 'tooltip-ca-unwatch' => 'Quita esta hoja de tu lista de escogidos',
-'tooltip-search' => 'Busca en {{SITENAME}}',
+'tooltip-search' => 'Bushkar en {{SITENAME}}',
 'tooltip-search-go' => 'Si ay una hoja con este nombre egzakto, vate allá.',
-'tooltip-search-fulltext' => 'Busca este teksto en las hojas',
+'tooltip-search-fulltext' => 'Bushka este teksto en las hojas',
 'tooltip-p-logo' => 'Vate a la primera hoja',
 'tooltip-n-mainpage' => 'Vate a la primera hoja',
 'tooltip-n-mainpage-description' => 'Vate a la primera hoja',
@@ -1093,6 +1285,10 @@ Puedes ver su manadero',
 # Attribution
 'anonymous' => '{{PLURAL:$1|Uzuario anonimo|Uzuarios anonimos}} de {{SITENAME}}',
 
+# Info page
+'pageinfo-contentpage-yes' => 'Si',
+'pageinfo-protect-cascading-yes' => 'Si',
+
 # Browsing diffs
 'previousdiff' => '← Trocamiento más antiguo',
 'nextdiff' => 'Edición más nueva →',
@@ -1103,6 +1299,35 @@ Puedes ver su manadero',
 'svg-long-desc' => 'arxivo SVG, nominalmente $1 × $2 píkseles, boy del arxivo: $3',
 'show-big-image' => 'Resolución original',
 
+# Special:NewFiles
+'showhidebots' => '($1 bots)',
+'ilsubmit' => 'Bushkar',
+'bydate' => 'por data',
+
+# Video information, used by Language::formatTimePeriod() to format lengths in the above messages
+'seconds' => '{{PLURAL:$1|$1 segundo|$1 segundos}}',
+'minutes' => '{{PLURAL:$1|$1 minuto|$1 minutos}}',
+'hours' => '{{PLURAL:$1|$1 ora|$1 oras}}',
+'days' => '{{PLURAL:$1|$1 diya|$1 diyas}}',
+'weeks' => '{{PLURAL:$1|$1 semana|$1 semanas}}',
+'months' => '{{PLURAL:$1|$1 mez|$1 mezes}}',
+'years' => '{{PLURAL:$1|$1 anyo|$1 anyos}}',
+'ago' => 'aze $1',
+'just-now' => 'endagora',
+
+# Human-readable timestamps
+'hours-ago' => 'aze $1{{PLURAL:$1|ora|oras}}',
+'minutes-ago' => 'aze {{PLURAL:$1|minuto|minutos}}',
+'seconds-ago' => 'aze {{PLURAL:$1|segundo|segundos}}',
+'monday-at' => 'El lunes a la $1',
+'tuesday-at' => 'El martes a la $1',
+'wednesday-at' => 'El mierkoles a la $1',
+'thursday-at' => 'El djuves a la $1',
+'friday-at' => 'El viernes a la $1',
+'saturday-at' => 'El shabat a la $1',
+'sunday-at' => 'El alhad a la $1',
+'yesterday-at' => 'Ayer a la $1',
+
 # Bad image list
 'bad_image_list' => 'El formato es ansina:
 
@@ -1132,9 +1357,15 @@ Los otros campos se van a guardar por defecto.
 * gpsaltitude',
 
 # Exif tags
+'exif-artist' => 'Otor',
 'exif-filesource' => 'Manadéro de archivo',
 'exif-gpstimestamp' => 'Tiémpo GPS (óra atómica)',
 'exif-gpsdatestamp' => 'Dáta GPS',
+'exif-languagecode' => 'Lengua',
+
+'exif-copyrighted-true' => 'Kon derechos del otor',
+
+'exif-exposureprogram-1' => 'Giya',
 
 'exif-meteringmode-255' => 'Otro',
 
@@ -1153,6 +1384,7 @@ Los otros campos se van a guardar por defecto.
 
 'exif-iimcategory-hth' => 'Salud',
 'exif-iimcategory-lab' => 'Lavoro',
+'exif-iimcategory-sci' => 'Sensiya i teknolojiya',
 
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'todos',
@@ -1160,10 +1392,10 @@ Los otros campos se van a guardar por defecto.
 'monthsall' => '(todos)',
 
 # Email address confirmation
-'confirmemail' => 'Konfirmar direksion e-pósta',
+'confirmemail' => 'Konfirmar adreso de korreo elektronika',
 'confirmemail_send' => 'Embiar el kodigo de konfirmasion.',
 'confirmemail_sent' => 'Konfirmasion de pósta embiada.',
-'confirmemail_success' => 'Su direksion de pósta a sido konfirmada. Agóra puedes registrarse e kolaborar en el wiki.',
+'confirmemail_success' => 'Su adreso de korreo elektronika a sido konfirmada. Agóra puedes registrarse e kolaborar en el wiki.',
 
 # Delete conflict
 'recreate' => 'Krear de muevo',
@@ -1171,6 +1403,13 @@ Los otros campos se van a guardar por defecto.
 # action=purge
 'confirm_purge_button' => 'Akseptár',
 
+# action=watch/unwatch
+'confirm-watch-button' => "D'akodro",
+'confirm-unwatch-button' => "D'akodro",
+
+# Separators for various lists, etc.
+'quotation-marks' => '"$1"',
+
 # Multipage image navigation
 'imgmultipageprev' => '← pajina anterior',
 'imgmultipagenext' => 'siguiente pajina →',
@@ -1186,7 +1425,7 @@ Los otros campos se van a guardar por defecto.
 
 # Auto-summaries
 'autoredircomment' => 'Redireksionado a [[$1]]',
-'autosumm-new' => 'Pajina mueva: $1',
+'autosumm-new' => 'Pajina kreado con "$1"',
 
 # Live preview
 'livepreview-loading' => 'Cargando...',
@@ -1207,9 +1446,10 @@ Los otros campos se van a guardar por defecto.
 'version-version' => '(Versión $1)',
 'version-poweredby-others' => 'otros',
 'version-software-version' => 'Versión',
+'version-entrypoints-header-url' => 'URL',
 
 # Special:FileDuplicateSearch
-'fileduplicatesearch-submit' => 'Buscar',
+'fileduplicatesearch-submit' => 'Bushkar',
 
 # Special:SpecialPages
 'specialpages' => 'Hojas especiales',
@@ -1228,6 +1468,7 @@ Los otros campos se van a guardar por defecto.
 # Special:Tags
 'tag-filter' => 'Filtro de [[Special:Tags|etiquetas]]:',
 'tag-filter-submit' => 'Filtro',
+'tags-active-yes' => 'Si',
 'tags-edit' => 'trocar',
 
 # Special:ComparePages
@@ -1239,13 +1480,35 @@ Los otros campos se van a guardar por defecto.
 
 # HTML forms
 'htmlform-selectorother-other' => 'Otro',
+'htmlform-yes' => 'Si',
 
 # New logging system
 'logentry-newusers-autocreate' => 'El cuento $1 fue crîado otomatika mente',
+'rightsnone' => '(dinguno)',
 
 # Feedback
 'feedback-subject' => 'Sujeto',
 'feedback-message' => 'Messaje',
 'feedback-cancel' => 'Anular',
 
+# Search suggestions
+'searchsuggest-search' => 'Bushkar',
+
+# Durations
+'duration-seconds' => '$1{{PLURAL:$1|segundo|segundos}}',
+'duration-minutes' => '$1{{PLURAL:$1|minuto|minutos}}',
+'duration-hours' => '$1{{PLURAL:$1|ora|oras}}',
+'duration-days' => '$1{{PLURAL:$1|diya|diyas}}',
+'duration-weeks' => '$1{{PLURAL:$1|semana|semanas}}',
+'duration-years' => '$1{{PLURAL:$1|anyo|anyos}}',
+'duration-decades' => '$1{{PLURAL:$1|syekolo|syekolos}}',
+'duration-centuries' => '$1{{PLURAL:$1|syekolo|syekolos}}',
+
+# Limit report
+'limitreport-cputime-value' => '$1{{PLURAL:$1|segundo|segundos}}',
+'limitreport-walltime-value' => '$1{{PLURAL:$1|segundo|segundos}}',
+
+# Special:ExpandTemplates
+'expand_templates_ok' => "D'akodro",
+
 );
index 73de12c..f175126 100644 (file)
@@ -1401,6 +1401,7 @@ Dës Informatioun ass ëffentlech.",
 'prefs-tokenwatchlist' => 'Token',
 'prefs-diffs' => 'Ënnerscheeder',
 'prefs-help-prefershttps' => 'Dës Astellung gëtt déi nächste Kéier wierksam wou Dir Iech ageloggt.',
+'prefs-tabs-navigation-hint' => "Tipp: Dir kënnt d'Feiler no lénks an no riets benotze fir tëscht den Tabs an der Lëscht vun den Tabs ze navigéieren.",
 
 # User preference: email validation using jQuery
 'email-address-validity-valid' => "D'E-Mail-Adress schéngt valabel ze sinn",
@@ -1587,6 +1588,7 @@ Dës Informatioun ass ëffentlech.",
 'recentchanges-label-bot' => 'Dës Ännerung gouf vun engem Bot gemaacht',
 'recentchanges-label-unpatrolled' => 'Dës Ännerung gouf nach net nogekuckt',
 'recentchanges-label-plusminus' => "D'Gréisst vun der Säit huet sech ëm déi Zuel vu Bytes geännert",
+'recentchanges-legend-heading' => "'''Legend:'''",
 'recentchanges-legend-newpage' => '(kuckt och [[Special:NewPages|Lëscht vun den neie Säiten]])',
 'recentchanges-legend-plusminus' => "''(±123)''",
 'rcnotefrom' => "Ugewise ginn d'Ännerunge vum '''$2''' un (maximal '''$1''' Ännerunge gi gewisen).",
@@ -2035,6 +2037,7 @@ An all Rei sti Linken zur éischter an zweeter Viruleedung, souwéi d\'Zil vun d
 'ninterwikis' => '$1 {{PLURAL:$1|Interwiki-Link|Interwiki-Linken}}',
 'nlinks' => '$1 {{PLURAL:$1|Link|Linken}}',
 'nmembers' => '$1 {{PLURAL:$1|Member|Memberen}}',
+'nmemberschanged' => '$1 → $2 {{PLURAL:$2|Member|Memberen}}',
 'nrevisions' => '$1 {{PLURAL:$1|Versioun|Versiounen}}',
 'nviews' => '$1 {{PLURAL:$1|Offro|Offroen}}',
 'nimagelinks' => 'Benotzt op {{PLURAL:$1|enger Säit|$1 Säiten}}',
@@ -2072,12 +2075,14 @@ An all Rei sti Linken zur éischter an zweeter Viruleedung, souwéi d\'Zil vun d
 'protectedpages' => 'Gespaart Säiten',
 'protectedpages-indef' => 'Nëmme onbegrenzt-gespaarte Säite weisen',
 'protectedpages-cascade' => 'Nëmme Säiten déi duerch Kaskade gespaart sinn',
+'protectedpages-noredirect' => 'Viruleedunge verstoppen',
 'protectedpagesempty' => 'Elo si keng Säite mat dëse Parameteren gespaart.',
 'protectedtitles' => 'Gespaarten Titel',
 'protectedtitlesempty' => 'Zur Zäit si mat de Parameteren déi Dir uginn hutt keng Säite fir neit Uleeë gespaart.',
 'listusers' => 'Benotzerlëscht',
 'listusers-editsonly' => 'Nëmme Benotzer mat Ännerunge weisen',
 'listusers-creationsort' => 'Nom Datum vum Uleeën zortéieren',
+'listusers-desc' => 'Vu grouss op kleng zortéieren',
 'usereditcount' => '$1 {{PLURAL:$1|Ännerung|Ännerungen}}',
 'usercreated' => "{{GENDER:$3|De(n)|D'}} $1 ëm $2 Auer ugeluecht",
 'newpages' => 'Nei Säiten',
@@ -2351,6 +2356,7 @@ D'Läsche vu sou Säite gouf limitéiert fir ongewollte Stéierungen op {{SITENA
 'delete-warning-toobig' => "Dës Säit huet eng laang Versiounsgeschicht, méi wéi $1 {{PLURAL:$1|Versioun|Versiounen}}.
 D'Läschen dovu kann zu Stéierungen am Fonctionnement vun {{SITENAME}} féieren;
 dës Aktioun soll mat Virsiicht gemaach ginn.",
+'deleting-backlinks-warning' => "'''Opgepasst:''' Aner Säite linken op d'Säit déi Dir am Gaang sidd ze läschen.",
 
 # Rollback
 'rollback' => 'Ännerungen zrécksetzen',
@@ -3654,7 +3660,7 @@ Dëse Confirmatiounscode leeft den $4 of.',
 
 # Language selector for translatable SVGs
 'img-lang-default' => '(Standard-Sprooch)',
-'img-lang-info' => 'Dëst Bild op $1$ $2 renderen.',
+'img-lang-info' => 'Dëst Bild op $1 renderen. $2',
 'img-lang-go' => 'Lass',
 
 # Table pager
@@ -3753,14 +3759,15 @@ Dir misst eng [{{SERVER}}{{SCRIPTPATH}}/COPYING Kopie vun der GNU General Public
 'version-entrypoints-header-url' => 'URL',
 
 # Special:Redirect
-'redirect' => 'Viruleedung duerch e Fichier, Benotzer oder Versiouns-ID',
+'redirect' => 'Viruleedung duerch e Fichier, e Benotzer, eng Säit oder eng Versiouns-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) oder eng Benotzersäit (numeresch Benotzeridentifikatioun uginn).
-Gebrauch: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revision/328429]], oder [[{{#Special:Redirect}}/user/101]].',
+Gebrauch: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], oder [[{{#Special:Redirect}}/user/101]].',
 'redirect-submit' => 'Lass',
 'redirect-lookup' => 'Nosichen:',
 'redirect-value' => 'Wäert:',
 'redirect-user' => 'Benotzernummer',
+'redirect-page' => 'ID (Nummer) vun der Säit',
 'redirect-revision' => 'Versioun vun der Säit',
 'redirect-file' => 'Numm vum Fichier',
 'redirect-not-exists' => 'Wäert net fonnt',
@@ -4000,6 +4007,7 @@ Faktesch alles wat tëscht duebelen Accolade steet gëtt ausgewäert.',
 'expand_templates_remove_comments' => 'Bemierkunge läschen',
 'expand_templates_remove_nowiki' => '<nowiki>-Taggen am Resultat suppriméieren',
 'expand_templates_generate_xml' => "Weis d'Struktur vum XML",
+'expand_templates_generate_rawhtml' => 'HTML-Format weisen',
 'expand_templates_preview' => 'Kucken ouni ofzespäicheren',
 
 );
index 2ba3520..3004e2b 100644 (file)
@@ -72,7 +72,7 @@ $messages = array(
 'tog-editsection' => 'Пай [дуьзар хъувун] патал элячӀун къалура',
 'tog-editsectiononrightclick' => 'Пайдин кьилинцӀардиз эрчӀи патан тӀампӀ авуна пайдин дуьзар хъувуниз мумкинвал гун (JavaScript герекзава)',
 'tog-showtoc' => 'Къенеавайбурун сиягь къалурун (3-й гзаф кьилинцӀарар авай ччинар патал)',
-'tog-rememberpassword' => 'И браузерда зи логин рикӀел хуьхь (лап гзаф $1 {{PLURAL:$1|югъ|йикъар}})',
+'tog-rememberpassword' => 'И браузерда зи логин рикӀел хуьхь (лап гзаф $1 {{PLURAL:$1|1=югъ|йикъар}})',
 'tog-watchcreations' => 'За туькӀуьрнавай ччинар зи гуьзетунин сиягьдиз алава авун',
 'tog-watchdefault' => 'За дуьзар хъувунвай ччинар зи гуьзетунин сиягьдиз алава авун',
 'tog-watchmoves' => 'За тӀвар эхцигай ччинар зи гуьзетунин сиягьдиз алава авун',
@@ -149,19 +149,19 @@ $messages = array(
 'dec' => 'дек',
 
 # Categories related messages
-'pagecategories' => '{{PLURAL:$1|Категория|Категорияр}}',
-'category_header' => '"$1" категориядин ччинар',
+'pagecategories' => '{{PLURAL:$1|1=Категория|Категорияр}}',
+'category_header' => '«$1» категориядин ччинар',
 'subcategories' => 'агъакатегорияр',
 'category-media-header' => '"$1" категориядин медиа',
 'category-empty' => "''Алай чӀава и категория ичӀи я.\"",
-'hidden-categories' => '{{PLURAL:$1|Чуьнуьхай категория|Чуьнуьхай категорияр}}',
+'hidden-categories' => '{{PLURAL:$1|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|И категорияда анжах гуьгъуьна авайди ччин ава |$2-кай къалурнавай {{PLURAL:$1|ччин|$1 ччин}} гьа а категориядин ччин я}}',
-'category-article-count-limited' => 'И категорияда {{PLURAL:$1|ччин|$1 ччин}} ава.',
-'category-file-count' => '{{PLURAL:$2|И категорияда анжах гуьгъуьна авайди файл ава |$2-кай къалурнавай {{PLURAL:$1|файл|$1 файлар}} гьа а категориядин файл я}}',
-'category-file-count-limited' => 'И категорияда {{PLURAL:$1|файл|$1 файлар}} ава.',
+'category-subcat-count' => '{{PLURAL:$2|И категорияда анжах гуьгъуьна авай подкатегория ава.|$2-кай {{PLURAL:$1|1=агъакатегория|$1 агъакатегорияр}} къалурнава }}',
+'category-subcat-count-limited' => 'И категорияда {{PLURAL:$1|1=агъакатегория|$1 агъакатегорияр}} ава.',
+'category-article-count' => '{{PLURAL:$2|И категорияда анжах гуьгъуьна авайди ччин ава |$2-кай къалурнавай {{PLURAL:$1|1=ччин|$1 ччин}} гьа а категориядин ччин я}}',
+'category-article-count-limited' => 'И категорияда {{PLURAL:$1|1=ччин|$1 ччин}} ава.',
+'category-file-count' => '{{PLURAL:$2|И категорияда анжах гуьгъуьна авайди файл ава |$2-кай къалурнавай {{PLURAL:$1|1=файл|$1 файлар}} гьа а категориядин файл я}}',
+'category-file-count-limited' => 'И категорияда {{PLURAL:$1|1=файл|$1 файлар}} ава.',
 'listingcontinuesabbrev' => '(кьатӀ)',
 'index-category' => 'Индексавунвай ччинар',
 'noindex-category' => 'Индекстежезвай ччин',
@@ -225,8 +225,8 @@ $messages = array(
 'create-this-page' => 'И ччин туькӀуьрун',
 'delete' => 'Алудун',
 'deletethispage' => 'И ччин алудун',
-'undelete_short' => '$1 {{PLURAL:$1|дуьзар хъувун|дуьзар хъувунар}} туьхкӀуьрун',
-'viewdeleted_short' => '{{PLURAL:$1|дуьзар хъувуниз|$1 дуьзар хъувунриз}} килигун',
+'undelete_short' => '$1 {{PLURAL:$1|1=дуьзар хъувун|дуьзар хъувунар}} туьхкӀуьрун',
+'viewdeleted_short' => '{{PLURAL:$1|1=дуьзар хъувуниз|$1 дуьзар хъувунриз}} килигун',
 'protect' => 'Xуьн',
 'protect_change' => 'масакӀа авун',
 'protectthispage' => 'И ччин блокарун',
@@ -352,7 +352,7 @@ $messages = array(
 'yourname' => 'Уртахдин тӀвар',
 'yourpassword' => 'Парол',
 'yourpasswordagain' => 'Парол кхьин хъувун:',
-'remembermypassword' => 'И браузерда зи логин рикӀел хуьхь (лап гзаф $1 {{PLURAL:$1|югъ|йикъар}})',
+'remembermypassword' => 'И браузерда зи логин рикӀел хуьхь (лап гзаф $1 {{PLURAL:$1|1=югъ|йикъар}})',
 'yourdomainname' => 'Куь домен',
 'login' => 'Гьахьун',
 'nav-login-createaccount' => 'Гьахьун/аккаунт туькӀуьрун',
@@ -374,7 +374,7 @@ $messages = array(
 'createaccounterror' => 'И аккаунт туькӀуьриз мумкин ттуш: $1',
 'loginsuccesstitle' => 'Агалкьунралди гьахьун',
 'wrongpasswordempty' => 'Тавакъу ийида, ичӀи тушир парол ттур.',
-'mailmypassword' => 'ЦÓ\80ийи Ð¿Ð°Ñ\80ол Ñ\8d-мейлдиз ÐºÑ\8aаÑ\87ун',
+'mailmypassword' => 'Ð\9fаÑ\80ол Ð°Ð»Ñ\83дна Ð³Ð°Ð´Ñ\80ун',
 'mailerror' => 'Чар ракъурунин гъалатӀ: $1',
 'emailconfirmlink' => 'Куь электрон почтунин адрес тестикьун.',
 'accountcreated' => 'Аккаунт туькӀуьрнава',
@@ -469,13 +469,13 @@ $messages = array(
 Квез куьне кхьенвайбур азаддаказ чкIун ва гьар са кас  патахъай дуьзар хъувун кIанзавачтIа, а кхьенвайбур иниз эцигмир.<br />
 ГЬакIни, куьне тестикьзава хьи, кутазвай алавайрин автор кьун я, я тахьайтIа, куьне а алаваяр чпин къенеавайбур азад чкIунни дегишун ихтияр гузвай чешмедикай ччин къачунва.<br />
 '''АВТОРДИН ИХТИЯР ХУЬЗВАЙ МАЛУМАТАР ИХТИЯР ГАЛАЧИЗ ЭЦИГМИР!'''",
-'templatesused' => 'И ччина кардик кутунвай {{PLURAL:$1|Чешне|Чешнеяр}}:',
-'templatesusedpreview' => '{{PLURAL:$1|Шаблон|Шаблонар}},илемишзавай дуьз клигунра:',
+'templatesused' => 'И ччина кардик кутунвай {{PLURAL:$1|1=Чешне|Чешнеяр}}:',
+'templatesusedpreview' => '{{PLURAL:$1|1=Шаблон|Шаблонар}},илемишзавай дуьз клигунра:',
 'template-protected' => '(хвенвай)',
 'template-semiprotected' => '(са кьадар хвенва)',
 'hiddencategories' => 'И ччин {{PLURAL: $1 | чуьнуьхай категориядиз | $1 чуьнуьхай категорийриз}} талукь я:',
 'permissionserrors' => 'ГЬахьнин гъалатlар',
-'permissionserrorstext-withaction' => 'Квез и {{PLURAL:$1|себебдалди|себебралди}} $2 йиз ихтияр авайд туш:',
+'permissionserrorstext-withaction' => 'Квез и {{PLURAL:$1|1=себебдалди|себебралди}} $2 йиз ихтияр авайд туш:',
 'recreate-moveddeleted-warn' => "'''Дикъет! Куьне виликда алуднавай ччин туьхкlуьриз алахъзава.'''
 Квевай и ччинин туьхкlуьрунин гереквилиз килигиз тIалабзава.
 Агъадихъ и ччинин алудун ва тIвар эхцигунин журнал къалурнава.",
@@ -521,7 +521,7 @@ $messages = array(
 
 # Revision deletion
 'rev-deleted-comment' => 'Дуьзар хъувунин тегьерар кхьин алуднава',
-'rev-deleted-user' => '(иштиракчидин тIвар алуднава)',
+'rev-deleted-user' => '(уртахдин тӀвар алуднава)',
 'rev-deleted-event' => '(къейд алуднава)',
 'rev-delundel' => 'къалурун/кIевирун',
 'rev-showdeleted' => 'къалурун',
@@ -557,7 +557,7 @@ $messages = array(
 'lineno' => 'ЦIар $1:',
 'compareselectedversions' => 'Хкягъай жуьреяр гекъигун',
 'editundo' => 'гьич авун',
-'diff-multi' => '({{PLURAL:$2|Са уртах|$2 уртахар}} патал авунвай {{PLURAL:$1|са арадин жуьре|$1 арадин жуьреяр}} къалурнавач)',
+'diff-multi' => '({{PLURAL:$2|1=Са уртах|$2 уртахар}} патал авунвай {{PLURAL:$1|1=са арадин жуьре|$1 арадин жуьреяр}} къалурнавач)',
 
 # Search results
 'searchresults' => 'Къекъуьнрин нетижаяр',
@@ -567,12 +567,12 @@ $messages = array(
 'notextmatches' => 'Авач чарчин кьил матчар',
 'prevn' => 'Вилик фейи  {{PLURAL:$1|$1}}',
 'nextn' => 'Гуьгъуьнин {{PLURAL:$1|$1}}',
-'prevn-title' => 'Вилик фейи  $1 {{PLURAL:$1|нетижа|нетижаяр}}',
-'nextn-title' => 'КЪведай $1 {{PLURAL:$1|нетижа|нетижаяр}}',
-'shown-title' => 'Ччина $1 {{PLURAL:$1|нетижа|нетижа}} къалурун',
+'prevn-title' => 'Вилик фейи  $1 {{PLURAL:$1|1=нетижа|нетижаяр}}',
+'nextn-title' => 'КЪведай $1 {{PLURAL:$1|1=нетижа|нетижаяр}}',
+'shown-title' => 'Ччина $1 {{PLURAL:$1|1=нетижа|нетижа}} къалурун',
 'viewprevnext' => 'Килигун ($1 {{int:pipe-separator}} $2) ($3)',
 'searchmenu-exists' => "'''И вики-проектда \"[[:\$1]]\" тlвар алай ччин ава.'''",
-'searchmenu-new' => "'''И вики-проектда \"[[:\$1]]\" ччин туькlуьрун !'''",
+'searchmenu-new' => "'''И вики-проектда «[[:$1]]» ччин туькӀуьрун!'''",
 'searchprofile-articles' => 'Асул ччинар',
 'searchprofile-project' => 'Куьмек гунин ва проектдин ччинар',
 'searchprofile-images' => 'Мультимедиа',
@@ -583,8 +583,8 @@ $messages = array(
 'searchprofile-images-tooltip' => 'Файлар жугъура',
 'searchprofile-everything-tooltip' => 'Вири ччинра къекъуьгъ (веревирдрин ччинар кваз)',
 'searchprofile-advanced-tooltip' => 'Ганвай тlварарин генгвилера къекъуьгъ',
-'search-result-size' => '$1 ({{PLURAL:$2|1 гаф|$2 гаф}})',
-'search-result-category-size' => '{{PLURAL:$1|1 элемент|$1 элементар}} ({{PLURAL:$2|1 агъакатегория|$2 агъакатегорияр}}, {{PLURAL:$3|1 файл|$3 файлар}})',
+'search-result-size' => '$1 ({{PLURAL:$2|1=1 гаф|$2 гаф}})',
+'search-result-category-size' => '{{PLURAL:$1|1=1 элемент|$1 элементар}} ({{PLURAL:$2|1=1 агъакатегория|$2 агъакатегорияр}}, {{PLURAL:$3|1=1 файл|$3 файлар}})',
 'search-redirect' => '(рахкъурун $1)',
 'search-section' => '(пай $1)',
 'search-suggest' => 'Мумкин я хьи, куьне им фикирда кьуна: $1',
@@ -594,7 +594,7 @@ $messages = array(
 'search-relatedarticle' => 'Галкlанавай',
 'searchrelated' => 'Галкlанавай',
 'searchall' => 'вири',
-'showingresultsheader' => "'''$4'''  патал {{PLURAL:$5|'''$3''' - кай  '''$1''' нетижа|'''$3''' - кай  '''$1 - $2''' нетижаяр}}",
+'showingresultsheader' => "'''$4'''  патал {{PLURAL:$5|1='''$3''' - кай  '''$1''' нетижа|'''$3''' - кай  '''$1 - $2''' нетижаяр}}",
 'search-nonefound' => 'Тlалабдив кьадай са нетижани жагъанвач.',
 'powersearch-legend' => 'Гегьенш жугъурун',
 'powersearch-ns' => 'Жугъурун тlварарин генгвилера:',
@@ -613,7 +613,7 @@ $messages = array(
 'prefs-beta' => 'Бета-мумкинвилер',
 'prefs-datetime' => 'Нумра ва вахт',
 'prefs-labs' => 'Экспериментдин мумкинвилер',
-'prefs-personal' => 'Ð\98Ñ\88Ñ\82иÑ\80акÑ\87идин профил',
+'prefs-personal' => 'УÑ\80Ñ\82аÑ\85дин профил',
 'prefs-rc' => 'Mукьвара хьайи дегишвилер',
 'prefs-watchlist' => 'Гуьзетунин сиягь',
 'prefs-watchlist-edits-max' => 'Максимум кьадар: 1000',
@@ -720,7 +720,7 @@ $messages = array(
 'action-undelete' => 'и ччин туькIуьр хъувун',
 
 # Recent changes
-'nchanges' => '$1 {{PLURAL:$1|масакIавал|масакIавилер}}',
+'nchanges' => '$1 {{PLURAL:$1|1=масакIавал|масакIавилер}}',
 'recentchanges' => 'Mукьвара хьайи масакӀавилер',
 'recentchanges-legend' => 'Цlийи масакIавилерин низамарунар',
 'recentchanges-summary' => 'Викида хьанвай эхиримжи масакIавилер и ччина гуьзетун',
@@ -781,7 +781,7 @@ $messages = array(
 'upload-options' => 'Ппарунин шартIар',
 'watchthisupload' => 'И файл гуьзетун',
 
-'upload-file-error' => 'КЪенепатан гъалатI',
+'upload-file-error' => 'Къенепатан гъалатӀ',
 'upload-unknown-size' => 'Тийижир кьадар',
 
 # Special:UploadStash
@@ -869,11 +869,11 @@ $messages = array(
 'brokenredirects-edit' => 'дегишарун',
 'brokenredirects-delete' => 'алудун',
 
-'withoutinterwiki-submit' => 'КЪалурун',
+'withoutinterwiki-submit' => 'Къалурун',
 
 # Miscellaneous special pages
-'nbytes' => '$1 {{PLURAL:$1|байт|байтар}}',
-'nmembers' => '$1 {{PLURAL:$1|уьзви|уьзвияр}}',
+'nbytes' => '$1 {{PLURAL:$1|1=байт|байтар}}',
+'nmembers' => '$1 {{PLURAL:$1|1=уьзви|уьзвияр}}',
 'lonelypages' => 'Eтим xъувун',
 'prefixindex' => 'Префикс галай вири ччинар',
 'shortpages' => 'Куьруь хъувун',
@@ -882,12 +882,12 @@ $messages = array(
 'listusers' => 'Уртахрин сиягь',
 'usercreated' => '{{GENDER:$3|Created}} идав $1 идал $2',
 'newpages' => 'ЦӀийи ччинар',
-'newpages-username' => 'Ð\98Ñ\88Ñ\82иÑ\80акÑ\87идин Ñ\82lвар',
+'newpages-username' => 'УÑ\80Ñ\82аÑ\85дин Ñ\82Ó\80вар',
 'ancientpages' => 'виридалайни цIуру ччинар',
-'move' => 'ТIвар эхцигун',
+'move' => 'ТӀвар эхцигун',
 'movethispage' => 'Юзун и хъувун',
-'pager-newer-n' => '{{PLURAL:$1|мадни цIийи 1|мадни цIийи $1}}',
-'pager-older-n' => '{{PLURAL:$1|мадни цIуру 1|мадни цIуру $1}}',
+'pager-newer-n' => '{{PLURAL:$1|1=мадни цIийи 1|мадни цIийи $1}}',
+'pager-older-n' => '{{PLURAL:$1|1=мадни цIуру 1|мадни цIуру $1}}',
 'suppress' => 'Чуьнуьхун',
 
 # Book sources
@@ -939,12 +939,13 @@ $messages = array(
 'watchlist' => 'Зи вилив хуьнин сиягь',
 'mywatchlist' => 'Вилив хуьнин сиягь',
 'watchlistfor2' => '$1 $2 патал',
-'addedwatchtext' => "Чар \"[[:\$1]]\" тун хъувунай куьн [[Special:Watchlist|watchlist]].                                                                                                             Къвезмай дегишунар и чарчел ва галкlанавай чарчихъ ихтилатар жеда инна, ахъатдава \"сакlус яцlу''''' инна [[Special:RecentChanges|list of recent changes]] гьам кьизил авун.",
-'removedwatchtext' => 'Чар "[[:$1]]" Идай чlурнай [[Special:Watchlist|ахтармишунин цlарар]].',
+'addedwatchtext' => 'Чар «[[:$1]]» тун хъувунай куьн [[Special:Watchlist|watchlist]].
+Къвезмай дегишунар и чарчел ва галкӀанавай чарчихъ ихтилатар жеда инна, ахъатдава «сакӀус яцӀу» инна веревирд авун гьам кьизил авун.',
+'removedwatchtext' => 'Чар «[[:$1]]» идай чӀурнай [[Special:Watchlist|ахтармишунин цӀарар]].',
 'watch' => 'Вилив хуьн',
 'watchthispage' => 'Гелкъуьн и хъувун',
 'unwatch' => 'Вилив хуьмир',
-'watchlist-details' => 'Куь вилив хуьнин сиягьда {{PLURAL:$1|$1 ччин|$1 ччин}} авайди я, веревирдрин ччинар квачиз.',
+'watchlist-details' => 'Куь вилив хуьнин сиягьда {{PLURAL:$1|1=$1 ччин|$1 ччин}} авайди я, веревирдрин ччинар квачиз.',
 'wlshowlast' => 'Эхиримжи $1 сят $2 югъ $3 къалура',
 'watchlist-options' => 'Вилив хуьнин сиягьдин низамарунар',
 
@@ -986,7 +987,7 @@ $messages = array(
 'protect_expiry_old' => 'Вахтун кьадар алатай заманда.',
 'protect-text' => "Квевай клигайтlа ва дегишарайтlа жеза хуьнин къайда чарчин '''$1'''.",
 'protect-locked-access' => "Квез ахтияр авач дегишариз чарчин хуьн къайда.                                                                                                                             Ингье физвай туькlуьрунар чарчиз '''$1''':",
-'protect-cascadeon' => 'Хуьн авун чарар къараул ийизвай алай вахтунда, гьама ктуна{{PLURAL:$1|чар, гьама|чарар, гьабур}} галай галай хуьн куькlуьрна.Куьвай жеза дегишариз хуьнин кьадар чарчин, гьама кядач галай галай хуьнив.',
+'protect-cascadeon' => 'Хуьн авун чарар къараул ийизвай алай вахтунда, гьама ктуна{{PLURAL:$1|1=чар, гьама|чарар, гьабур}} галай галай хуьн куькlуьрна.Куьвай жеза дегишариз хуьнин кьадар чарчин, гьама кядач галай галай хуьнив.',
 'protect-default' => ' Эхтияр гуз вири ишлемишчийриз',
 'protect-fallback' => 'Тlалабун "$1" эхтияр',
 'protect-level-autoconfirmed' => 'Къаб цlийи ва кхьитунавай ишлемишчияр',
@@ -1025,7 +1026,7 @@ $messages = array(
 'contributions-title' => '$1 уртахди кутур крар',
 'mycontris' => 'Кутур кар',
 'contribsub2' => '($1)-ин кутур пай  ($2)',
-'uctop' => '(вини кьил)',
+'uctop' => 'алай',
 'month' => ' Вацралай (ва адалай вилик)',
 'year' => 'Иисалай (ва адалай вилик):',
 
@@ -1048,8 +1049,8 @@ $messages = array(
 'isredirect' => 'Рахкъурунин ччин',
 'istemplate' => 'кутун',
 'isimage' => 'Файлдин элячlун',
-'whatlinkshere-prev' => '{{PLURAL:$1|вилик фейи|вилик фейи $1}}',
-'whatlinkshere-next' => '{{PLURAL:$1|гуьгъуьнин|гуьгъуьнин $1}}',
+'whatlinkshere-prev' => '{{PLURAL:$1|1=вилик фейи|вилик фейи $1}}',
+'whatlinkshere-next' => '{{PLURAL:$1|1=гуьгъуьнин|гуьгъуьнин $1}}',
 'whatlinkshere-links' => '← элячlунар',
 'whatlinkshere-hideredirs' => '$1 рахкъурунар',
 'whatlinkshere-hidetrans' => '$1 кутунар',
@@ -1077,7 +1078,7 @@ $messages = array(
 'block-log-flags-nocreate' => 'Аккаунт туькIуьрдай изинар авач',
 
 # Move page
-'move-page' => '$1 тIвар эхцигун',
+'move-page' => '$1 тӀвар эхцигун',
 'move-page-legend' => 'Юзун хъувун',
 'movepagetext' => "Ишлемишиз кlеневай къаб,чарчин тlар дегишариp, кьиспесдин  чка дегишарун, цlийи тlар авун.
 Иски тlарцlи ракъурда цlийи тlарцlел.
@@ -1093,17 +1094,17 @@ $messages = array(
 Буюр, килиг , куьне фикирзатlа вуч жезатlа, кхьин хъийидади.",
 'movepagetalktext' => "Ухшар авай чарар ихтилатдин, фида масса чкадал вуч вичиз ибур галаз''',амма:'''                                                                               *Эчlи чар ихтилатдин ава цlийи тlар алаз, ва                                                                                                                                           *Куьне иляйда пайдах кlеникай                                                                                                                                                                                  Гьа вахтунда, куьне чка дегишар авун или санал авуна чар гъилелди, кlанда",
 'movearticle' => 'Юзун хъувун:',
-'newtitle' => 'Цlийи тlарцlихъ:',
+'newtitle' => 'ЦӀийи тӀвар:',
 'move-watch' => 'Гелкъуьн и хъувун',
 'movepagebtn' => 'Юзун хъувун',
 'pagemovedsub' => 'Рахъурун хьана',
 'movepage-moved' => '\'\'"$1" рахъурнай "$2"\'\'\'',
 'articleexists' => 'Ахьтин тlар алай чар ава, амма тlар, куьне хкянай дуьз туш.Башуьсте, масса тlар хкяй.',
 'movetalk' => 'Югъун,галкlана рахун',
-'movelogpage' => 'Тlвар эхцигунрин журнал',
+'movelogpage' => 'ТӀвар эхцигунрин журнал',
 'movereason' => 'Фагьум:',
 'revertmove' => 'Рахкъурун',
-'delete_and_move' => 'Алудун ва тIвар эхцигун',
+'delete_and_move' => 'Алудун ва тӀвар эхцигун',
 
 # Export
 'export' => 'Ччинрин экспорт',
@@ -1141,7 +1142,7 @@ $messages = array(
 'tooltip-ca-history' => 'И ччинин алатай масакIавилерин журнал',
 'tooltip-ca-protect' => 'И ччин хуьн',
 'tooltip-ca-delete' => 'И ччин алудун',
-'tooltip-ca-move' => 'Ччиндин тIвар масакIа авун',
+'tooltip-ca-move' => 'Ччиндин тӀвар масакӀа авун',
 'tooltip-ca-watch' => 'И ччин куь вилив хуьнин сиягьдиз алава авун',
 'tooltip-ca-unwatch' => 'И ччин куь вилив хуьнин сиягьдай къахчун',
 'tooltip-search' => '{{SITENAME}} къекъуьн',
@@ -1279,7 +1280,7 @@ Cиягьда авай анжах (* лишандихъ галаз эгечIза
 'watchlistedit-normal-title' => 'Гуьзетунин сиягь дуьзар хъувун',
 'watchlistedit-raw-title' => 'Гуьзетунин сиягь текст хьиз дуьзар хъувун',
 'watchlistedit-raw-legend' => 'Гуьзетунин сиягь текст хьиз дуьзар хъувун',
-'watchlistedit-raw-titles' => 'КЬилинцIарар:',
+'watchlistedit-raw-titles' => 'КьилинцӀарар:',
 'watchlistedit-raw-submit' => 'Гуьзетунин сиягь цIийи хъувун',
 
 # Watchlist editing tools
index dc5f5d9..17f006f 100644 (file)
@@ -7,6 +7,7 @@
  * @ingroup Language
  * @file
  *
+ * @author Bonevarluri
  * @author Mogoeilor
  */
 
@@ -35,14 +36,26 @@ $messages = array(
 'tog-minordefault' => 'همه ویرایشتیا کؤچک نه وا پیش فرض بیئن نشو دار کو.',
 'tog-previewontop' => 'پیش سیل نه دما جعوه ویرایشت نشو بیئه',
 'tog-previewonfirst' => 'پیش سیل نه د اولین ویرایشت نشو بیئه',
+'tog-enotifwatchlistpages' => 'اوسه که یه گل بلگه یا فایلی د سیل برگ مه آلشت بوئه منه وا ایمیل خور کو',
 'tog-enotifusertalkpages' => 'وختی که بلگه گپسن کارور آلشت پیدا کرد منه وا ایمیل خور کو',
+'tog-enotifminoredits' => 'همچنو اوسه که ویرایشتیا کؤچکی د بلگیا یا فایلیا انجوم بوئه منه خور کو',
+'tog-enotifrevealaddr' => 'نشونی ایمیل منه د ایمیل اشگار نشو بیه',
 'tog-shownumberswatching' => 'انازه کاروریایی که د حالت دیئنن نشو بیه',
 'tog-oldsig' => 'امضايی هيئش:',
+'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-useeditwarning' => 'وختی که آلشتیا ذخیره نبیه د بلگه ویرایشت وه جا می نم خورم کو',
+'tog-prefershttps' => 'همیشه وختی که مه وامئن هئم د ارتواط امن استفاده کو',
 
 'underline-always' => 'هميشه',
 'underline-never' => 'هيژوخت',
@@ -127,7 +140,8 @@ $messages = array(
 'category-empty' => 'ای دسه واقعن شومل هیژ بلگه ای یا رسانه ای نی',
 'hidden-categories' => '{{PLURAL:$1|دسته قام بيه|دسته يا قام بيه}}',
 'hidden-category-category' => 'دسه یا قام بیه',
-'category-subcat-count' => '{{جمی:$2|ای دسه شومل بلگه نهاییه .| {{جمی:$1| بلگه هئ|$1 بلگیا هئن}} د ای زیردسه, خارج د $2 کل.}}',
+'category-subcat-count' => '{{جمی:$2|ای دسه فقط زیر دسه دینداگر هان دش .|ای دسه {{جمی:$1| زیردسه|$1 زیردسه یا}}هئ , خارج د $2 کل.}}',
+'category-subcat-count-limited' => 'ای دسه وا دمال {{جمی:$1|زیردسه|$1زیردسه یا}} بوئه',
 'category-article-count' => '{{جمی:$2|ای دسه شومل بلگه نهاییه .| {{جمی:$1| بلگه هئ|$1 بلگیا هئن}} د ای دسه, خارج د $2 کل.}}',
 'listingcontinuesabbrev' => 'دماله',
 'index-category' => 'بلگيا سيائه دار',
@@ -227,6 +241,8 @@ $messages = array(
 'jumpto' => 'پئرستن د',
 'jumptonavigation' => 'ناوگشتن',
 'jumptosearch' => 'پی جوری',
+'pool-timeout' => 'وخت سی تیه وه ره منن سی قلف بیئن تموم بی',
+'pool-queuefull' => 'ذخیره گی گرتن پر بیه',
 'pool-errorunknown' => 'خطا ناشناس',
 
 # All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage).
@@ -249,15 +265,20 @@ $messages = array(
 
 'badaccess' => 'خطا :اجازه بئیر',
 'badaccess-group0' => 'شما اجازه انجوم کاری که حاستیت نارین',
+'badaccess-groups' => 'ای کاری که شما هاستیته سی کاروریا د  {{جمی:$2|گرو|یکی د گرویا}}: $1 مئدود بیه',
 
 'versionrequired' => 'یه نسقه د نیازمنیا ویکی رسانه
 $1',
+'versionrequiredtext' => 'نسقه $1 ویکی مدیا سی استفاده د ای بلگه لازم هئی .
+وه نه بوینیت [[ویجه:نسقه|نسقه بلگه]].',
 
 'ok' => 'خوئه',
 'retrievedfrom' => 'بازيافته د"$1"',
 'youhavenewmessages' => 'شما داريت $1($2)',
+'youhavenewmessagesfromusers' => '{{جمی:$4|شما }} $1 د {{جمی:$3|کارور هنی|$3 کاروریا}}داریتو($2).',
 'youhavenewmessagesmanyusers' => 'شما $1 د خيلی كاروريا داريت ($2).',
-'newmessagesdifflinkplural' => 'آخر {{PLURAL:$1|change|changes}}',
+'newmessageslinkplural' => '{{جمی:$1|یه گل پیغوم تازه|999=پیغوم ئل تازه}}',
+'newmessagesdifflinkplural' => 'آخر {{جمی:$1|آلشت|آلشتیا}}',
 'youhavenewmessagesmulti' => 'شما یه گل پیغوم تازه د $1 داریتو',
 'editsection' => 'ويرايشت',
 'editold' => 'ويرايشت',
@@ -272,6 +293,7 @@ $1',
 'collapsible-expand' => 'وا كردن',
 'thisisdeleted' => 'دیئن یا ورگنين $1?',
 'viewdeleted' => 'دیئن$1?',
+'restorelink' => '{{جمی:$1|یه گل ویرایشت پاک بیه|$1 ویرایشتیا پاک بیه}}',
 'feedlinks' => 'غذا دهنه:',
 'feed-invalid' => 'نوع مشترک بین خورحو نامعتور',
 'site-rss-feed' => 'خورخو RSS سی $1',
@@ -308,32 +330,41 @@ $1',
 'databaseerror-error' => 'خطا: $1',
 'laggedslavemode' => 'زنهار:بلگه شايت شومل روزامديا تازه باو نبوئه',
 'readonly' => 'جاگه دونسمنيا بسه بيه',
+'enterlockreason' => 'دلیل قلف کردن نه بنیست،یه وختی سی وا کردن قلف د ویر داشتویت.',
 'missing-article' => 'پاگا داده نتونه بلگه ای با پیدا بکه بجوره.که نومش $1 و $2 هئ.
 معمولند یه سی یه که فرخ ویرگار رئته دش بیه پاک بیه.',
 'missingarticle-rev' => '(دوواره ديئن#: $1)',
 'missingarticle-diff' => '(فرخ: $1، $2)',
 'internalerror' => 'خطا داخلی',
 'internalerror_info' => 'خطا داخلی:$1',
+'fileappenderrorread' => 'نبوئه $1 نه اوسه که پیوست بوئه بحونیت.',
+'fileappenderror' => 'نبوئه فایل $1 د $2 پیوست بوئه',
 'filecopyerror' => 'نبوئه فایل $1 د $2 کپی بوئه',
 'filerenameerror' => 'نبوئه فایل $1 د $2 نوم آلشت بوئه',
 'filedeleteerror' => 'نبوئه فایل $1 پاک بوئه',
+'directorycreateerror' => 'نبوئه سردسه $1 راس بوئه.',
 'filenotfound' => 'نتونیت فایل $1 پیدا بکید',
+'fileexistserror' => 'نبوئه د فایل "$1" بنیسید:فایل هئیش',
+'unexpected' => 'ارزایشت ناحاسته: "$1"="$2".',
 'formerror' => 'خطا:نبوئه فرم وه مو بئيت',
+'badarticleerror' => 'ای انجوم دئنی د ای بلگه انجوم نگره.',
 'cannotdelete-title' => 'نبوئه بلگه $1 حذف بو',
 'badtitle' => 'موضو گن',
 'badtitletext' => 'عنوان بلگه حاسته بیه معتور نی،یا  یه گل مئن زونی یا مئن ویکی عنوان غلطه.
 یه شایت شومل یکی با یا بیشتر کاراکتریا نبوئه سی ای موضوعیا استفاده بوئن',
 'viewsource' => 'سرچشمه نه بوينيت',
 'viewsource-title' => 'سرچشمه $1 بوينيت',
+'actionthrottled' => 'عمل جلوگئری بیه',
 'mycustomcssprotected' => 'شما حق ناریت ای بلگه سی اس اس نه ویرایشت بکید',
 'mycustomjsprotected' => 'شما حق ناریت ای بلگه جاوا اسکریپت نه ویرایشت بکید',
 'myprivateinfoprotected' => 'شما حق ناریت دونسمنیا خصوصی نه ویرایشت بکید',
 'mypreferencesprotected' => 'شما حق ناریت ویجگی یا هنی تونه ویرایشت بکید',
 'ns-specialprotected' => 'بلگیا ویجه نتونن ویرایشت بوئن',
 'exception-nologin' => 'نبوئه وارد بوئيد',
+'exception-nologin-text-manual' => 'خواهشمنیدم که $1 تونسه بوئه د ای بلگه دسرسی داشتوه یا کاری انجوم بیئه.',
 
 # Virus scanner
-'virus-scanfailed' => 'زل گشتن شکست حرد',
+'virus-scanfailed' => 'زل بیئن شکست حرد($1)',
 'virus-unknownscanner' => 'ويروس كش ناآشگار',
 
 # Login and logout pages
@@ -370,8 +401,9 @@ $1',
 'gotaccount' => 'ایسنی حساو کاروری داریتو؟$1',
 'gotaccountlink' => 'اومائن',
 'userlogin-resetlink' => 'جزییات وامین اومائن تونه د ویر بردیته',
-'userlogin-resetpassword-link' => 'Ù\87Ù\86Û\8c Ø±Ù\85ز Ù\88ارد Ø¨Ù\83Ù\8aد',
+'userlogin-resetpassword-link' => 'پاسÙ\88رد Ø¯ Ù\88Û\8cرتÙ\88 Ø±Ø¦ØªÙ\87Ø\9f',
 'helplogin-url' => 'هومياری:د حالت اومائن د سيستم',
+'userlogin-helplink' => '[[{{مدیاویکی:هومیاری وامئن اومائن-یو آر ال}}|هومیاری وا مئن اومائن]]',
 'userlogin-createanother' => 'يه گل حساوهنی راست بكيد',
 'createacct-join' => 'دونسمنيا دباره خوتونه د هار وارد بكيد',
 'createacct-another-join' => 'دونسمنیا یه گل حساو د هار وارد بکید',
@@ -388,14 +420,18 @@ $1',
 'createacct-submit' => 'حساو خوتونه راس بكيد',
 'createacct-another-submit' => 'يه گل حساوهنی راست بكيد',
 'createacct-benefit-heading' => '{{نوم مالگه}} وه دس خلکی چی شما راس بیه.',
-'createacct-benefit-body1' => '{{جمی:$1|ویرایشت|ویرایشتا}}',
-'createacct-benefit-body2' => '{{جمی:$1|بلگه|بلگیا}}',
+'createacct-benefit-body1' => '{{جمی:$1|ویرایشت|ویرایشتیا}}',
+'createacct-benefit-body2' => '{{جمی:$1|بلگه|بلگه یا}}',
+'createacct-benefit-body3' => 'تازه{{جمی:$1|هومیار|هومیارا}}',
 'badretype' => 'پاسوردی که شما دئیته مطاوقت ناره',
 'userexists' => 'کارور نوم که وارد بیه د ایسه استفاده بوئه.
 لطف بکید یه گل نوم هنی انتخاو بکید',
 'loginerror' => 'خطا اومائن د سيستم',
 'createacct-error' => 'خطا راس كردن حساو',
 'createaccounterror' => 'نبوئه حساو راس بكيد:$1',
+'nocookiesnew' => 'حساو کاروری راس بی،اما شما وامئن نیامایئته.{{نوم مالگه}} د کوکیا سی اومائن د سیستم کاروریا استفاده می که.کوکیا شما د کار افتائه.لطفن وا کارشو بونیت، اوسه وا نوم کاروری تازه و پسورد هنی بیایت وا مئن.',
+'nocookieslogin' => '{{نوم مالگه}} د کوکیا سی وامئن اومائن کاروریا استفاده می که. کوکیا شما د کار افتائه.
+لطف بکید د کارشو بونیت و دوواره تلاش بکید.',
 'noname' => 'شما یه گل نوم کاروری خو ناریت',
 'loginsuccesstitle' => 'اومائن د سيستم موفق بی',
 'loginsuccess' => 'شما ایسه وارد بیته {{SITENAME}} د دعنوان "$1".\'',
@@ -409,12 +445,13 @@ $1',
 'passwordtooshort' => 'پاسورد با حداقل  {{PLURAL:$1|1 character|$1 characters}}          با',
 'password-name-match' => 'پاسوردتو با د نوم کاروریتو فرخ داشتوه',
 'password-login-forbidden' => 'وه کار گرتن ای پاسوردو نوم کاروری ممنو بیه.',
-'mailmypassword' => 'رÙ\85ز Ù\87Ù\86Û\8c Ù\86Ù\87 Ø§Ù\8aÙ\85Ù\8aÙ\84 Ø¨Ù\83Ù\8aد',
+'mailmypassword' => 'د Ù\86Û\88 Ù\88ارد Ù\83ردÙ\86 Ø±Ù\85ز',
 'passwordremindertitle' => 'پاسورد موقت تازه سی {{SITENAME}}',
 'noemail' => 'هیچ نشونی ایمیلی سی کارور $1 ضفط نبیه.',
 'noemailcreate' => 'شما باید یه نشونی نومه معتور فراهم بکید',
 'mailerror' => 'خطا داره کل موئه:$1',
 'emailconfirmlink' => 'نشونی ايملتو نه محكم بكيد',
+'cannotchangeemail' => 'نشونی ایمیل حساو نتونه د ای ویکی آلشت بوئه.',
 'emaildisabled' => 'ای مالگه نتونه ایمیل بفرسنه',
 'accountcreated' => 'حساو راس بی',
 'createaccount-title' => 'حساو راس کرده سی  {{SITENAME}}',
@@ -451,6 +488,7 @@ $1',
 # Special:ChangeEmail
 'changeemail' => 'ایمیل تو نه آلشت بکید',
 'changeemail-header' => 'ایمیل حساوتونه آلشت بکید',
+'changeemail-no-info' => 'شما با بیایت د سیستم تا د ای بلگه دسرسی داشتویت',
 'changeemail-oldemail' => 'نشونی ایمیل تازه باو:',
 'changeemail-newemail' => 'نشونی ایمیل تازه',
 'changeemail-none' => '(هيش كوم)',
@@ -458,6 +496,15 @@ $1',
 'changeemail-submit' => 'آلشت کردن ایمیل',
 'changeemail-cancel' => 'رد كردن',
 
+# Special:ResetTokens
+'resettokens' => 'تازه کردن نشونه یا',
+'resettokens-no-tokens' => 'هیژ نشونه ای سی تازه کردن نئ.',
+'resettokens-legend' => 'تازه کردن نشونه یا',
+'resettokens-tokens' => 'نشونه یا:',
+'resettokens-token-label' => '$1 (ارزشت تازه: $2)',
+'resettokens-done' => 'نشونه یا تازه بیه.',
+'resettokens-resetbutton' => 'نشونه یا انتخاو بیه تازه بوئن',
+
 # Edit page toolbar
 'bold_sample' => 'متن توپر بيه',
 'bold_tip' => 'متن توپر بيه',
@@ -495,6 +542,7 @@ $1',
 'nosuchsectiontitle' => 'نبوئه بشخ پیدا بوئه',
 'loginreqtitle' => 'وامین اومائن لازمه',
 'loginreqlink' => 'اومائن',
+'loginreqpagetext' => '$1 لطف بکید بلگه یا هنی نه بوینیت',
 'accmailtitle' => 'پاسورد کل بی',
 'newarticle' => 'تازه',
 'newarticletext' => 'شما وادما هوم پیوندی هئیت که وجود ناره.
@@ -559,6 +607,8 @@ $1',
 'last' => 'دمايی',
 'page_first' => 'اولی',
 'page_last' => 'آخر',
+'histlegend' => "انتخاو فرخدار:جعویا رادیو نه سی دوواره دیئن و وارسی نشو دار بکید و یا ری رئتن کلیک بکید .<br />
+شرح نوشته: '''({{int:cur}})''' = وا آخری دوواره دیئن فرخ داره '''({{ int:last}})'''= وا دواره دیئن انجوم دئنی فرخ داره  '''{{int:minoreditletter}}''' =ویرایشت کؤچک.",
 'history-fieldset-title' => 'ویرگار مرور ون',
 'history-show-deleted' => 'فقط پاك بيه',
 'histfirst' => 'قديمي تري',
@@ -571,6 +621,7 @@ $1',
 $2',
 
 # Revision deletion
+'rev-deleted-user' => '(نوم کاروری جا وه جا بیه)',
 'rev-delundel' => 'آلشت وضئيت ديئن',
 'rev-showdeleted' => 'نشو دائن',
 'revdelete-show-file-submit' => 'هری',
@@ -610,7 +661,7 @@ $2',
 'nextn' => 'نيايی {{PLURAL:$1|$1}}',
 'prevn-title' => 'پيشتر $1 {{PLURAL:$1|نتيجه|نتيجيا}}',
 'nextn-title' => 'نيايی $1 {{PLURAL:$1|نتيجه|نتيجيا}}',
-'shown-title' => 'Ù\86Ø´Ù\88Ù\86 Ø¯Ø§Ø¦Ù\86 $1 {{PLURAL:$1|Ù\86تÙ\8aجÙ\87\86تÙ\8aجÙ\87}} Ø³Û\8c Ù\87Ù\85Ù\87 بلگه',
+'shown-title' => 'Ù\86Ø´Ù\88Ù\86 Ø¯Ø¦Ù\86 $1 {{PLURAL:$1|Ù\86تÙ\8aجÙ\87\86تÙ\8aجÙ\87}} Ø³Û\8c Ù\87ر بلگه',
 'viewprevnext' => 'ديئن ($1 {{int:pipe-separator}} $2) ($3)',
 'searchmenu-exists' => "'''ایچه بلگه ای هئ وه نوم\"[[:\$1]]\" که ها د ای ویکی'''",
 'searchmenu-new' => "'''ای بلگه نه راس كو \"[[:\$1]]\" د ای  ويكي!'''",
@@ -683,10 +734,17 @@ $2',
 'yourrealname' => 'نوم راستكی:',
 'yourlanguage' => 'زون:',
 'yournick' => 'امضا تازه:',
+'gender-unknown' => 'مه میهام چی یی نموئم',
+'gender-male' => 'وه(پیا) بلگه یا ویکی نه ویرایشت می که',
+'gender-female' => 'وه(زئنه)بلگه یا ویکی نه ویرایشت می که',
 'email' => 'پیومک برقی',
 'prefs-help-email' => 'نشونی ایمیل اختیاری هئ.اما سی بازجست پاسورد دش نیاز بوئه.شما باید پاسوردتونه د ویر بوریت',
 'prefs-help-email-others' => 'شما می تونید سی پیوند گرتن تو وا نهایین ایمیل مئن یه هوم پیوند د بلگه کاروری یا بلگه چک چنه تو انتخاو بکید.
 نشونی ایمیلتو وختی که کاروریا هنی وا تو پیوند می گرن دیار نی.',
+'prefs-help-email-required' => 'نشونی ایمیل لازم هئ.',
+'prefs-info' => 'دونسمنیا اولیه',
+'prefs-i18n' => 'جهون ولاتمنی',
+'prefs-signature' => 'امضا',
 'prefs-editor' => 'ويرايشتگر',
 'prefs-preview' => 'پیش سیل',
 'prefs-diffs' => 'فرخیا',
@@ -698,6 +756,8 @@ $2',
 'saveusergroups' => 'ذخیره کرد گرویا کاروری',
 'userrights-groupsmember' => 'اندوم:',
 'userrights-reason' => 'دليل:',
+'userrights-changeable-col' => 'گرویایی که شما تونیت ویرایشت بکید',
+'userrights-unchangeable-col' => 'گرویایی که شما نتونیت ویرایشت بکید',
 
 # Groups
 'group' => 'گرو',
@@ -708,9 +768,15 @@ $2',
 'group-bureaucrat' => 'بروکراتیا',
 'group-all' => '(همه)',
 
+'group-user-member' => '{{جنس:$1|کارور}}',
+'group-bot-member' => '{{حنس:$1|بوت}}',
+'group-sysop-member' => '{{جنس:$1|مدیر}}',
+'group-bureaucrat-member' => '{{جنس:$1|بروکرات}}',
+
 # Rights
 'right-read' => 'حنن بلگیا',
 'right-edit' => 'ویرایشت بلگیا',
+'right-delete' => 'بلگیا نه پاک کو',
 
 # Special:Log/newusers
 'newuserlogpage' => 'راس بیه وا کارور',
@@ -739,7 +805,7 @@ $2',
 'rclistfrom' => 'آلشتیا تازه ایی که وا $1 شرو بیه نشونش بئه',
 'rcshowhideminor' => 'ويرايشتيا کؤچک $1',
 'rcshowhidebots' => '$1 رواتيا یا بوتيا',
-'rcshowhideliu' => '$1 کارورياداخل بيه',
+'rcshowhideliu' => '$1 کاروريا ثوت نام کرده',
 'rcshowhideanons' => '$1 کاروريا ناشناس',
 'rcshowhidepatr' => '$1 ویرایشتیا تیه پرس بیه',
 'rcshowhidemine' => 'ويرايشتيا مه$1',
@@ -766,6 +832,9 @@ $2',
 
 # Upload
 'upload' => 'بلم گير كردن فايلا',
+'uploadbtn' => 'سوار کردن فایل',
+'uploadnologin' => 'وارد نبیه',
+'uploaderror' => 'خطا د سوار کردن',
 'uploadlogpage' => 'سوارکرد',
 'filename' => 'نوم فایل',
 'filedesc' => 'چكسته',
@@ -857,6 +926,9 @@ $2',
 'booksources-search-legend' => 'پی جوری سی سرچشمه یا کتاو',
 'booksources-go' => 'رو',
 
+# Special:Log
+'log' => 'نیسنن رخ ونیا',
+
 # Special:AllPages
 'allpages' => 'همه بلگيا',
 'alphaindexline' => '$1 د
@@ -919,6 +991,7 @@ $2',
 'sp-contributions-newbies' => 'فقط هومیاری یایی که د حساو تازه بیه نشون بئه',
 'sp-contributions-blocklog' => 'قلف',
 'sp-contributions-uploads' => 'سواركرديا',
+'sp-contributions-logs' => 'نیسنن رخ ونیا',
 'sp-contributions-talk' => 'چك چنه',
 'sp-contributions-search' => 'سی هومیاریا پی جور با',
 'sp-contributions-username' => 'نوم نشون آی پی يا نوم كاروری:',
@@ -1024,6 +1097,7 @@ $2',
 'tooltip-rollback' => '"ورگشتن" لرستن د حالت اول  سی ای بلگه  که سی  يه كه هومياری  نيايی اصلاح بيه وا يه پورنسن',
 'tooltip-undo' => 'انجوم نگرتن ای ویرایشت ورگن و همه فرمیا ویرایشت تانه که حالت پیش سیل واکو.یه اجازه میئه سی اضاف کردن یه دلیل د چکسته.',
 'tooltip-summary' => 'يه چكسته كؤچك وارد بكيد',
+'interlanguage-link-title' => '$1-$2',
 
 # Browsing diffs
 'previousdiff' => '← ويرايشت كۈهنه تر',
@@ -1033,7 +1107,7 @@ $2',
 'file-info-size' => '$1 × $2 پیکسل, انازه فایل: $3, MIME نوع: $4',
 'file-nohires' => 'عسك ون بالاتري دش ني',
 'svg-long-desc' => 'اس وی جی فايل.نومنا $1 $2 پيكسل',
-'show-big-image' => 'تموم رخ ون',
+'show-big-image' => 'فایل اصلی',
 
 # Bad image list
 'bad_image_list' => 'دونسمنديانه وه ای شلگ وارد بكيت:
index 133060d..5fb9199 100644 (file)
@@ -30,6 +30,7 @@
  * @author Urhixidur
  * @author Vilius2001
  * @author Vpovilaitis
+ * @author Xabier Armendaritz
  * @author לערי ריינהארט
  */
 
@@ -282,7 +283,7 @@ $messages = array(
 'mar' => 'kov',
 'apr' => 'bal',
 'may' => 'geg',
-'jun' => 'bir',
+'jun' => 'Eka',
 'jul' => 'lie',
 'aug' => 'rgp',
 'sep' => 'rgs',
index bbc051f..fc16e97 100644 (file)
@@ -877,16 +877,24 @@ Sīkāku informāciju var atrast [{{fullurl:{{#Special:Log}}/delete|page={{FULLP
 'rev-suppressed-no-diff' => "Tu nevari aplūkot šīs izmaiņas, jo viena no versijām ir '''dzēsta'''.",
 'rev-delundel' => 'rādīt/slēpt',
 'rev-showdeleted' => 'parādīt',
-'revisiondelete' => 'Dzēst / atjaunot versijas',
+'revisiondelete' => 'Dzēst/atjaunot versijas',
 'revdelete-nooldid-title' => 'Nederīga mērķa versija',
 'revdelete-no-file' => 'Norādītais fails neeksistē.',
 'revdelete-show-file-submit' => 'Jā',
+'revdelete-selected' => "'''[[:$1]] {{PLURAL:$2|izvēlētā versija|izvēlētās versijas}}:'''",
+'logdelete-selected' => "'''{{PLURAL:$1|Izvēlētais reģistra ieraksts|Izvēlētie reģistra ieraksti}}:'''",
+'revdelete-text' => "'''Lapu hronoloģijā un reģistros izdzēstās versijas vēl joprojām būs redzamas, tomēr daļa informācijas nebūs pieejama publiski.''' Citi {{SITENAME}} administratori varēs apskatīt spēlto saturu un varēs to atslēpt, ja vien nav papildu ierobežojumi.",
+'revdelete-confirm' => 'Lūdzu apstiprini, ka Tu zini, ko dari, Tu apzinies sekas, tāpat Tu to dari saskaņā ar vadlīnijām.',
+'revdelete-suppress-text' => "Paslēpšanu izmantot vienīgi šādos gadījumos:
+* potenciāli apmelojoša informācija
+* nepiemērotā personīgā informācija
+*: ''mājas adrese, telefona numuri u.c.''",
 'revdelete-legend' => 'Uzstādīt redzamības ierobežojumus',
-'revdelete-hide-text' => 'Paslēpt versijas tekstu',
+'revdelete-hide-text' => 'Versijas teksts',
 'revdelete-hide-image' => 'Paslēpt faila saturu',
 'revdelete-hide-name' => 'Paslēpt darbību un tās objektu',
-'revdelete-hide-comment' => 'Paslēpt kopsavilkumu',
-'revdelete-hide-user' => 'Paslēpt autora lietotājvārdu/IP adresi',
+'revdelete-hide-comment' => 'Kopsavilkums',
+'revdelete-hide-user' => 'Autora lietotājvārds/IP adrese',
 'revdelete-hide-restricted' => 'Paslēpt datus arī no administratoriem',
 'revdelete-radio-same' => '(nemainīt)',
 'revdelete-radio-set' => 'Jā',
@@ -903,11 +911,12 @@ $1",
 $1",
 'revdel-restore' => 'mainīt redzamību',
 'pagehist' => 'Lapas vēsture',
-'deletedhist' => 'Vēsture dzēsta',
+'deletedhist' => 'Dzēstā vēsture',
 'revdelete-modify-missing' => 'Kļūda, mainot vienumu ar ID $1: tas ir pazudis no datubāzes!',
 'revdelete-reason-dropdown' => '*Biežākie dzēšanas iemesli
 ** autortiesību pārkāpums
 ** nepiemērota personīgā informācija
+** nepiemērots lietotāja vārds
 ** potenciāli apmelojoša informācija',
 'revdelete-otherreason' => 'Cits/papildu iemesls:',
 'revdelete-reasonotherlist' => 'Cits iemesls',
@@ -1273,6 +1282,7 @@ Ja tu izvēlies to norādīt, tas tiks izmantots, lai identificētu tavu darbu (
 'recentchanges-label-bot' => 'Šī ir bota veikta izmaiņa',
 'recentchanges-label-unpatrolled' => 'Šis labojums vēl nav pārbaudīts',
 'recentchanges-label-plusminus' => 'Par tik baitiem tika izmainīts lapas izmērs',
+'recentchanges-legend-heading' => "'''Apzīmējumi:'''",
 'recentchanges-legend-newpage' => '(skatīt arī [[Special:NewPages|jaunās lapas]])',
 'rcnotefrom' => "Šobrīd redzamas izmaiņas kopš '''$2''' (parādītas ne vairāk par '''$1''').",
 'rclistfrom' => 'Parādīt jaunas izmaiņas kopš $1',
@@ -2073,7 +2083,7 @@ $1',
 'sp-contributions-newbies' => 'Rādīt jauno lietotāju devumu',
 'sp-contributions-newbies-sub' => 'Jaunie lietotāji',
 'sp-contributions-blocklog' => 'Bloķēšanas reģistrs',
-'sp-contributions-deleted' => 'Izdzēstais lietotāju devums',
+'sp-contributions-deleted' => 'Izdzēstais lietotāja devums',
 'sp-contributions-uploads' => 'augšupielādes',
 'sp-contributions-logs' => 'reģistri',
 'sp-contributions-talk' => 'diskusija',
@@ -2399,9 +2409,9 @@ Lūdzu, mēģiniet vēlreiz.',
 'tooltip-pt-anonuserpage' => 'Manas IP adreses lietotāja lapa',
 'tooltip-pt-mytalk' => 'Tava diskusiju lapa',
 'tooltip-pt-anontalk' => 'Diskusija par labojumiem, kas izdarīti no šīs IP adreses',
-'tooltip-pt-preferences' => 'Mani uzstādījumi',
-'tooltip-pt-watchlist' => 'Manis uzraudzītās lapas.',
-'tooltip-pt-mycontris' => 'Tavi ieguldījumi',
+'tooltip-pt-preferences' => 'Tavas izvēles',
+'tooltip-pt-watchlist' => 'Tevis uzraudzītās lapas',
+'tooltip-pt-mycontris' => 'Tavs devums',
 'tooltip-pt-login' => 'Aicinām tevi ieiet {{grammar:lokatīvs|{{SITENAME}}}}, tomēr tas nav obligāti.',
 'tooltip-pt-anonlogin' => 'Aicinām tevi ieiet {{grammar:lokatīvs|{{SITENAME}}}}, tomēr tas nav obligāti.',
 'tooltip-pt-logout' => 'Iziet',
@@ -3065,6 +3075,7 @@ Var arī lietot [[Special:EditWatchlist|standarta izmainīšanas lapu]].',
 
 # Special:SpecialPages
 'specialpages' => 'Īpašās lapas',
+'specialpages-note-top' => 'Apzīmējumi',
 'specialpages-note' => '* Normālas īpašās lapas.
 * <span class="mw-specialpagerestricted">Ierobežotas pieejas īpašās lapas.</span>
 * <span class="mw-specialpagecached">Iekešotās īpašās lapas.</span>',
index 7b29d86..6e7b69f 100644 (file)
@@ -1866,7 +1866,7 @@ ity wiki ity dia no-regler-na ho sarababem-bahoaka.",
 'license' => 'Lisansy:',
 'license-header' => "Navoaka tambanin'ny lisansy",
 'nolicense' => 'Tsy misy safidy',
-'license-nopreview' => '(Topi-maso tsy misy)',
+'license-nopreview' => '(Tsy misy topi-maso)',
 'upload_source_url' => " (URL misy ary azo vangian'ny daholobe)",
 'upload_source_file' => " (rakitra eo amin'ny milinao)",
 
@@ -3043,7 +3043,7 @@ Raha alefanao ilay izy, mety ho simban'io renifango io ny solosainao.",
 'file-info' => 'Haben-drakitra : $1, karazana MIME : $2',
 'file-info-size' => "$1 × $2 teboka, haben'ilay rakitra : $3, endrika MIME : $4",
 'file-info-size-pages' => '$1 × $2 teboka, haben-drakitra : $3, karazana MIME $4, pejy $5 {{PLURAL:}}',
-'file-nohires' => "Tsy misy sary ngeza non'io",
+'file-nohires' => 'Tsy misy sary lehiba noho io.',
 'svg-long-desc' => 'rakitra SVG, habe $1 × $2 teboka, habe : $3',
 'svg-long-error' => 'Rakitra SVG tsy ekena : $1',
 'show-big-image' => "Hijery ny tena haben'ny sary",
index 35a1502..e5b3886 100644 (file)
@@ -105,7 +105,7 @@ $messages = array(
 'tog-numberheadings' => 'Вуймутым автоматик йӧн дене радамлаш',
 'tog-showtoolbar' => 'Тӧрлатымаш ӱзгараҥам ончыкташ',
 'tog-showtoc' => 'Вуймут радамым ончыкташ (3 деч шуко вуймутан лаштык-влаклан)',
-'tog-rememberpassword' => 'Тиде компьютерышто мыйын шолыпмутым шарнаш (эн шуко $1 {{PLURAL:$1|кечылын|кечылан}})',
+'tog-rememberpassword' => 'Тиде компьютерышто мыйын шолыпмутым шарнаш (эн шуко $1 {{PLURAL:$1|1=кечылын|кечылан}})',
 'tog-watchcreations' => 'Мыйын ыштыме лаштык-влакым эскерыме лӱмерыш ешараш',
 'tog-watchdefault' => 'Мыйын тӧрлатыме лаштык-влакым эскерыме лӱмерыш ешараш',
 'tog-watchmoves' => 'Мыйын лӱмым вашталтыме лаштык-влакым эскерыме лӱмерыш ешараш',
@@ -180,16 +180,16 @@ $messages = array(
 'dec' => 'Теле',
 
 # Categories related messages
-'pagecategories' => '{{PLURAL:$1|Категорий|Категорий}}',
+'pagecategories' => '{{PLURAL:$1|1=Категорий|Категорий}}',
 'category_header' => '"$1" категорийыште лаштык-влак',
 'subcategories' => 'Ӱлылкатегорий-влак',
 'category-media-header' => '"$1" категорийыште файл-влак',
 'category-empty' => "''Ты жаплан тиде категорийыште нимоат уке.''",
-'hidden-categories' => '{{PLURAL:$1|Шылтыме категорий|Шылтыме категорий-влак}}',
+'hidden-categories' => '{{PLURAL:$1|1=Шылтыме категорий|Шылтыме категорий-влак}}',
 'hidden-category-category' => 'Шылтымо категорий-влак',
-'category-subcat-count' => '{{PLURAL:$2|Тиде категорийыш ик ӱлылкатегорий гына пура.|{{PLURAL:$1|Тыгай $1 ӱлылкатегорий|Тыгане $1 ӱлылкатегорий-влак}} тиде категорийыште, чыла $2.}}',
-'category-article-count' => '{{PLURAL:$2|Тиде категорийыш ик лаштык гына пура.|{{PLURAL:$1|Тыгай $1 лаштык|Тыгане $1 лаштык-влак}} тиде категорийыште, чыла $2.}}',
-'category-file-count' => '{{PLURAL:$2|Тиде категорийыш ик лаштык гына пура.|{{PLURAL:$1|$1 лаштык|$1 лаштык}} тиде категорийыште, чылажге $2.}}',
+'category-subcat-count' => '{{PLURAL:$2|Тиде категорийыш ик ӱлылкатегорий гына пура.|{{PLURAL:$1|1=Тыгай $1 ӱлылкатегорий|Тыгане $1 ӱлылкатегорий-влак}} тиде категорийыште, чыла $2.}}',
+'category-article-count' => '{{PLURAL:$2|Тиде категорийыш ик лаштык гына пура.|{{PLURAL:$1|1=Тыгай $1 лаштык|Тыгане $1 лаштык-влак}} тиде категорийыште, чыла $2.}}',
+'category-file-count' => '{{PLURAL:$2|Тиде категорийыш ик лаштык гына пура.|{{PLURAL:$1|1=$1 лаштык|$1 лаштык}} тиде категорийыште, чылажге $2.}}',
 'listingcontinuesabbrev' => '(умбакыжым)',
 'noindex-category' => 'Шотыш налдыме лаштык-влак',
 
@@ -258,7 +258,7 @@ $messages = array(
 'talk' => 'Каҥашымаш',
 'views' => 'Ончалаш',
 'toolbox' => 'Ӱзгар-влак',
-'userpage' => 'Пайдаланышын лаштыкым ончалаш',
+'userpage' => 'Ð\9fайдаланÑ\8bÑ\88Ñ\8bн Ð»Ð°Ñ\88Ñ\82Ñ\8bкÑ\88Ñ\8bм Ð¾Ð½Ñ\87алаÑ\88',
 'imagepage' => 'Файлын лаштыкым ончалаш',
 'templatepage' => 'Ямдылыкын лаштыкым ончалаш',
 'viewhelppage' => 'Полыш лаштыкым ончалаш',
@@ -360,7 +360,7 @@ $messages = array(
 'yourpasswordagain' => 'Шолыпмутым угыч пуртымаш:',
 'createacct-yourpasswordagain' => 'Шолыпмутым пеҥгыдемде',
 'createacct-yourpasswordagain-ph' => 'Шолыпмутым угыч пурто',
-'remembermypassword' => 'Тиде компьютерыште мыйым шарнаш (эн шуко $1 {{PLURAL:$1|кечылан|кечылан}})',
+'remembermypassword' => 'Тиде компьютерыште мыйым шарнаш (эн шуко $1 {{PLURAL:$1|1=кечылан|кечылан}})',
 'yourdomainname' => 'Тендан домен:',
 'login' => 'Шке денет палдаре',
 'nav-login-createaccount' => 'Пураш/Регистрацийым эрте',
@@ -387,7 +387,7 @@ $messages = array(
 Эше ик гана ыштен ончо.',
 'wrongpasswordempty' => 'Тый яра шолыпмутым пуртенат.
 Эше ик гана ыштен ончо.',
-'passwordtooshort' => 'Шолыпмут {{PLURAL:$1|1 символ|$1 символ}} деч шагал огыл лийшаш.',
+'passwordtooshort' => 'Шолыпмут {{PLURAL:$1|1=1 символ|$1 символ}} деч шагал огыл лийшаш.',
 'mailmypassword' => 'У шолыпмутым колташ',
 'passwordremindertitle' => '{{SITENAME}} сайтлан жаплан ыштыме у шолыпмут',
 'passwordremindertext' => '{{SITENAME}} сайтлан ($4) $1 IP адрес гыч ала кӧ (але тый шкеак) у шолыпмутым йодын. "$2" пайдаланышылан жаплан ыштыме у шолыпмутым ыштыме да "$3" электрон адресыш колтымо. Тидым тый йодынат гын, системыш у шолыпмут дене пуро.
@@ -461,12 +461,12 @@ $messages = array(
 Возыметым нигӧлан пайдаланаш, тӧрлаташ ынет пу гын тышке тудым ит шыҥдаре.<br />
 Тыгак текстым шке возымо але тудым эрыкан вер гыч налме шотышто мутым пуэт.<br />
 '''АВТОР АЛЕ ТУДЫН ПРАВАМ АРАЛЫШЕ-ВЛАК ДЕЧ ЙОДДЕ МАТЕРИАЛЫМ ИТ ШЫҤДАРЕ!'''",
-'templatesused' => 'Тиде лаштыкыште кучылтмо {{PLURAL:$1|ямдылык|ямдылык-влак}}:',
-'templatesusedpreview' => 'Тиде лаштыкыште кучылтмо {{PLURAL:$1|ямыдылык|ямдылык-влак}}:',
+'templatesused' => 'Тиде лаштыкыште кучылтмо {{PLURAL:$1|1=ямдылык|ямдылык-влак}}:',
+'templatesusedpreview' => 'Тиде лаштыкыште кучылтмо {{PLURAL:$1|1=ямыдылык|ямдылык-влак}}:',
 'template-protected' => '(тӧрлаташ чарыме)',
 'template-semiprotected' => '(верын аралыме)',
-'hiddencategories' => 'Тиде лаштык $1 {{PLURAL:$1|шылтыме категорийыш|шылтыме категорийыш}} лектеш:',
-'permissionserrorstext-withaction' => "Тыйын '''$2''' кертмашет шагал. Тиде {{PLURAL:$1|амал ден|амал дене}}:",
+'hiddencategories' => 'Тиде лаштык $1 {{PLURAL:$1|1=шылтыме категорийыш|шылтыме категорийыш}} лектеш:',
+'permissionserrorstext-withaction' => "Тыйын '''$2''' кертмашет шагал. Тиде {{PLURAL:$1|1=амал ден|амал дене}}:",
 'recreate-moveddeleted-warn' => "'''Йолташ, тиде лаштыкым тиддеч ончыч шӧреныт.''' Тудым илаҥдарыме деч ончыч, тыгай лаштык кӱлешак мо - тергыман. Ӱлнырак шӧрымаш да лӱм вашталтымаш журнал-влакым шергал лекташ лиеш.",
 'moveddeleted-notice' => 'Тиде лаштык шӧралтын.
 Лаштыклан шӧрымӧ да кусарыме нерген журнал ӱлнӧ ончыктымо.',
@@ -519,7 +519,7 @@ $messages = array(
 'lineno' => '$1 корно:',
 'compareselectedversions' => 'Ойырымо версий-влакым таҥастараш',
 'editundo' => 'чараш',
-'diff-multi' => '({{PLURAL:$1|не показана $1 промежуточная версия|не показаны $1 промежуточные версии|не показаны $1 промежуточных версий}} {{PLURAL:$2|$2 участника|$2 участников}})',
+'diff-multi' => '({{PLURAL:$1|не показана $1 промежуточная версия|не показаны $1 промежуточных версий|не показаны $1 промежуточные версии}} {{PLURAL:$2|1=$2 участника|$2 участников}})',
 
 # Search results
 'searchresults' => 'Кычалын мумо',
@@ -529,7 +529,7 @@ $messages = array(
 'nextn' => 'весе {{PLURAL:$1|$1}}',
 'prevn-title' => 'Кодшо $1 {{PLURAL:$1|результат}}',
 'nextn-title' => 'Весе $1 {{PLURAL:$1|результат}}',
-'shown-title' => 'Лаштыкыште $1 {{PLURAL:$1|возымаш|возымашым}} ончыкташ',
+'shown-title' => 'Лаштыкыште $1 {{PLURAL:$1|1=возымаш|возымашым}} ончыкташ',
 'viewprevnext' => 'Ончал ($1 {{int:pipe-separator}} $2) ($3)',
 'searchmenu-new' => "'''Тиде вики-проектыште «[[:$1]]» лӱман лаштыкым ышташ!'''",
 'searchprofile-articles' => 'Возымо лаштык-влак',
@@ -542,8 +542,8 @@ $messages = array(
 'searchprofile-images-tooltip' => 'Файл-влакым кычалмаш',
 'searchprofile-everything-tooltip' => 'Чыла лаштык-влакыште кычалаш (каҥашымаш лаштык-влакыштат)',
 'searchprofile-advanced-tooltip' => 'Искать в заданных пространствах имён',
-'search-result-size' => '$1 ({{PLURAL:$2|$2 мут|$2 мут}})',
-'search-result-category-size' => '$1 {{PLURAL:$1|вхождение|вхождения|вхождений}} ($2 {{PLURAL:$2|подкатегория|подкатегории|подкатегорий}}, $3 {{PLURAL:$3|файл|файла|файлов}}).',
+'search-result-size' => '$1 ({{PLURAL:$2|1=$2 мут|$2 мут}})',
+'search-result-category-size' => '$1 {{PLURAL:$1|вхождение|вхождений|вхождения}} ($2 {{PLURAL:$2|подкатегория|подкатегорий|подкатегории}}, $3 {{PLURAL:$3|файл|файлов|файла}}).',
 'search-redirect' => '($1 вес вере колтымаш)',
 'search-section' => '(ужаш $1)',
 'search-suggest' => 'Але те $1 возынеда ыле',
@@ -552,7 +552,7 @@ $messages = array(
 'search-interwiki-more' => '(эше)',
 'searchrelated' => 'кылдалтше',
 'searchall' => 'чыла',
-'showingresultsheader' => "'''$4'''лан {{PLURAL:$5|'''$3''' гыч '''$1''' результат|'''$3''' гыч '''$1 - $2''' результат}}",
+'showingresultsheader' => "'''$4'''лан {{PLURAL:$5|1='''$3''' гыч '''$1''' результат|'''$3''' гыч '''$1 - $2''' результат}}",
 'search-nonefound' => 'Тыйын йодышет почеш нимо муалтын огыл',
 'powersearch-legend' => 'Сайынрак кычалаш',
 'powersearch-ns' => 'Кычалаш тиде лӱм-влакын кумдыкышт-влакыште:',
@@ -602,7 +602,7 @@ $messages = array(
 'youremail' => 'Электрон почто:',
 'username' => '{{GENDER:$1|Пайдаланышын лӱмжӧ|Пайдаланышын лӱмжӧ}}:',
 'uid' => '{{GENDER:$1|Пайдаланышын}} ID-же:',
-'prefs-memberingroups' => '{{PLURAL:$1|Тӱшкаште шогышо|Тӱшка-влакыште шогышо}}:',
+'prefs-memberingroups' => '{{PLURAL:$1|1=Тӱшкаште шогышо|Тӱшка-влакыште шогышо}}:',
 'yourrealname' => 'Чын лӱмжӧ:',
 'yourlanguage' => 'Йылме:',
 'yournick' => 'Кидпале:',
@@ -703,7 +703,7 @@ $messages = array(
 'filehist-filesize' => 'Файлын кугытшо',
 'filehist-comment' => 'Файл нерген:',
 'imagelinks' => 'Файлым кучылтмаш',
-'linkstoimage' => 'Тиде {{PLURAL:$1|$1 лаштык саде файл дене кылдалтын|$1 лаштык-влак саде файл дене кылдалтыныт}}:',
+'linkstoimage' => 'Тиде {{PLURAL:$1|1=$1 лаштык саде файл дене кылдалтын|$1 лаштык-влак саде файл дене кылдалтыныт}}:',
 'nolinkstoimage' => 'Тиде файл дене кылдалтше ик лаштыкат уке.',
 'sharedupload' => 'Тиде файлын верже: $1, туге гынат, тудым моло веренат кучылташ лиеш.',
 'uploadnewversion-linktext' => 'Тиде файлын у тӱрлыкшым пурташ',
@@ -737,7 +737,7 @@ $messages = array(
 'statistics-views-peredit' => 'Ик тӧрлатымашлан ончымо',
 'statistics-users' => 'Регистрацийым эртыше [[Special:ListUsers|пайдаланыше-влак]]',
 'statistics-users-active' => 'Чӱчкыдын пайдаланыше-влак',
-'statistics-users-active-desc' => 'Пытартыш {{PLURAL:$1|кечыште|$1 кечыште}} иктаж-мом ыштыше пайдаланыше-влак',
+'statistics-users-active-desc' => 'Пытартыш {{PLURAL:$1|1=кечыште|$1 кечыште}} иктаж-мом ыштыше пайдаланыше-влак',
 'statistics-mostpopular' => 'Эн чӱчкыдын ончымо лаштык-влак',
 
 'brokenredirects' => 'Пудыртымо вес вере колтымаш-влак',
@@ -747,9 +747,9 @@ $messages = array(
 'withoutinterwiki-submit' => 'ончыкташ',
 
 # Miscellaneous special pages
-'nbytes' => '$1 {{PLURAL:$1|байт|байт}}',
-'nmembers' => '$1 {{PLURAL:$1|лаштык|лаштык-влак}}',
-'nviews' => '$1 {{PLURAL:$1|ончымо|ончымо-влак}}',
+'nbytes' => '$1 {{PLURAL:$1|1=байт|байт}}',
+'nmembers' => '$1 {{PLURAL:$1|1=лаштык|лаштык-влак}}',
+'nviews' => '$1 {{PLURAL:$1|1=ончымо|ончымо-влак}}',
 'lonelypages' => 'Тулык лаштык-влак',
 'wantedcategories' => 'Ыштыман категорий-влак',
 'wantedpages' => 'Ыштышаш лаштык-влак',
@@ -764,8 +764,8 @@ $messages = array(
 'newpages-username' => 'Пайдаланышын лӱмжӧ:',
 'move' => 'Кусараш',
 'movethispage' => 'Тиде лаштыкым кусараш',
-'pager-newer-n' => '{{PLURAL:$1|вес|вес}}',
-'pager-older-n' => '{{PLURAL:$1|ончычсо|ончычсо}}',
+'pager-newer-n' => '{{PLURAL:$1|1=вес|вес}}',
+'pager-older-n' => '{{PLURAL:$1|1=ончычсо|ончычсо}}',
 
 # Book sources
 'booksources' => 'Негызым пыштыше кнага-влак',
@@ -800,7 +800,7 @@ $messages = array(
 
 # Special:ActiveUsers
 'activeusers' => 'Чӱчкыдын пайдаланыше-влак',
-'activeusers-count' => 'Пытартыш $3 {{PLURAL:$3|кечыште|кечылаште}} $1 {{PLURAL:$1|тӧрлатымаш|тӧрлатымаш-влак}}',
+'activeusers-count' => 'Пытартыш $3 {{PLURAL:$3|1=кечыште|кечылаште}} $1 {{PLURAL:$1|1=тӧрлатымаш|тӧрлатымаш-влак}}',
 'activeusers-hidebots' => 'Бот-влакым шылташ',
 'activeusers-hidesysops' => 'Сайтвиктарыше-влакым шылташ',
 
@@ -822,7 +822,7 @@ $messages = array(
 'unwatch' => 'Эскерыман огыл',
 'unwatchthispage' => 'Эскерымым чарнаш',
 'watchlist-details' => 'Эскерымаш лӱмерыштет $1 {{PLURAL:$1|лаштык}}, каҥашымаш лаштык-влакым шотлыде',
-'watchlistcontains' => 'Тыйын лӱмерыште $1 {{PLURAL:$1|лаштык|лаштык}}.',
+'watchlistcontains' => 'Тыйын лӱмерыште $1 {{PLURAL:$1|1=лаштык|лаштык}}.',
 'wlshowlast' => 'Пытартыш $1 шагат $2 кечылан $3 ончыкташ',
 'watchlist-options' => 'Эскерыме лӱмерын келыштарымаш',
 
@@ -914,8 +914,8 @@ $messages = array(
 'isredirect' => 'вес вере колтышо лаштык',
 'istemplate' => 'пуртымаш',
 'isimage' => 'файллан кылвер',
-'whatlinkshere-prev' => '{{PLURAL:$1|ончычсо|$1 ончычсо}}',
-'whatlinkshere-next' => '{{PLURAL:$1|вес|$1 вес}}',
+'whatlinkshere-prev' => '{{PLURAL:$1|1=ончычсо|$1 ончычсо}}',
+'whatlinkshere-next' => '{{PLURAL:$1|1=вес|$1 вес}}',
 'whatlinkshere-links' => '← кылвер-влак',
 'whatlinkshere-hideredirs' => 'вес вере колтымаш-влакым $1',
 'whatlinkshere-hidetrans' => 'пуртымашым $1',
@@ -996,7 +996,7 @@ $messages = array(
 'tooltip-ca-addsection' => 'У ужашым тӱҥалаш',
 'tooltip-ca-viewsource' => 'Тиде лаштыкым аралыме.
 Тый тудын тӱҥалтыш текстшым ончалын кертат.',
-'tooltip-ca-history' => 'Ð\9bаÑ\88Ñ\82Ñ\8bкÑ\8bм ондаксе тӧрлатымаш',
+'tooltip-ca-history' => 'Ð\9bаÑ\88Ñ\82Ñ\8bкÑ\8bн ондаксе тӧрлатымаш',
 'tooltip-ca-protect' => 'Тиде лаштыкым тӧрлатымаш деч аралаш',
 'tooltip-ca-delete' => 'Тиде лаштыкым шӧраш',
 'tooltip-ca-move' => 'Тиде лаштыкым кусараш',
@@ -1045,7 +1045,7 @@ $messages = array(
 'nextdiff' => 'Вес тӧрлатымаш →',
 
 # Media information
-'widthheightpage' => '$1 × $2, $3 {{PLURAL:$3|лаштык|лаштык}}',
+'widthheightpage' => '$1 × $2, $3 {{PLURAL:$3|1=лаштык|лаштык}}',
 'file-info-size' => '$1 × $2 пиксел, файлын кугытшо: $3, MIME-тип: $4',
 'file-nohires' => 'Кугурак чаплык уке.',
 'svg-long-desc' => 'SVG файл, шкенжын кугытшо: $1 × $2 пиксел, файлын кугытшо: $3',
index e98345f..6319255 100644 (file)
@@ -1252,6 +1252,9 @@ $2
 'cantcreateaccount-text' => "Создавањето на корисничка сметка од оваа IP-адреса ('''$1''') е блокирано од страна на [[User:$3|$3]].
 
 Образложението дадено од страна на $3 е ''$2''",
+'cantcreateaccount-range-text' => "Создавањето на сметки од IP-адреси во опсегот '''$1''' каде спаѓа вашата IP-адреса ('''$4''') е блокирано од корисникот [[User:$3|$3]].
+
+$3 ја наведе следнава причина: ''$2''",
 
 # History pages
 'viewpagelogs' => 'Преглед на дневници за оваа страница',
@@ -1783,6 +1786,7 @@ $1",
 'recentchanges-label-bot' => 'Ова уредување е направено од бот',
 'recentchanges-label-unpatrolled' => 'Ова уредување сè уште не е испатролирано',
 'recentchanges-label-plusminus' => 'Промена на големината на страницата во бајти',
+'recentchanges-legend-heading' => "'''Легенда:'''",
 'recentchanges-legend-newpage' => '(погл. и [[Special:NewPages|списокот на нови страници]])',
 'recentchanges-legend-plusminus' => "(''±123'')",
 'rcnotefrom' => 'Подолу се промените од <b>$2</b> (се прикажуваат до <b>$1</b>).',
@@ -2298,6 +2302,7 @@ $1',
 'protectedpages' => 'Заштитени страници',
 'protectedpages-indef' => 'Само бесконечни заштити',
 'protectedpages-cascade' => 'Само каскадни заштити',
+'protectedpages-noredirect' => 'Скриј пренасочувања',
 'protectedpagesempty' => 'Во моментов нема заштитени страници со параметрите кои ги зададовте.',
 'protectedtitles' => 'Заштитени наслови',
 'protectedtitlesempty' => 'Во овој момент нема заштитени наслови кои ги задоволуваат наведените критериуми.',
@@ -2578,6 +2583,7 @@ $UNWATCHURL
 'delete-warning-toobig' => 'Оваа страница има долга историја на уредување, преку $1 {{PLURAL:$1|ревизија|ревизии}}.
 Бришењето може да предизвика проблеми при работењето на базата на податоци на {{SITENAME}};
 продолжете доколку сте сигруни дека треба тоа да го сторите.',
+'deleting-backlinks-warning' => "'''Предупредување:''' До страницата што сакате да ја избришете водат други страници.",
 
 # Rollback
 'rollback' => 'Отповикај промени',
@@ -4007,7 +4013,7 @@ $5
 
 # Language selector for translatable SVGs
 'img-lang-default' => '(стандарден јазик)',
-'img-lang-info' => 'Испиши ја сликата на $1 $2.',
+'img-lang-info' => 'Испиши ја сликата на $1. $2',
 'img-lang-go' => 'Прикажи',
 
 # Table pager
@@ -4192,13 +4198,14 @@ $5
 'version-entrypoints-scriptpath' => '[https://www.mediawiki.org/wiki/Manual:$wgScriptPath?uselang=mk Скрипта]',
 
 # Special:Redirect
-'redirect' => 'Ð\9fÑ\80енаÑ\81оÑ\87Ñ\83ваÑ\9aе Ð¿Ð¾ Ð¿Ð¾Ð´Ð°Ñ\82оÑ\82ека, корисник или назнака на ревизија',
+'redirect' => 'Ð\9fÑ\80енаÑ\81оÑ\87Ñ\83ваÑ\9aе Ð¿Ð¾ Ð¿Ð¾Ð´Ð°Ñ\82оÑ\82еки, корисник или назнака на ревизија',
 'redirect-legend' => 'Пренасочување кон податотека или страница',
-'redirect-summary' => 'Оваа специјална страница пренасочува кон податотека (се задава името), страница (се задава назнаката на ревизијата) или корисничка странца (се задава бројчената назнака на корисникот). Употреба: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revision/328429]] или [[{{#Special:Redirect}}/user/101]].',
+'redirect-summary' => 'Оваа специјална страница пренасочува кон податотека (се задава името), страница (се задава назнаката на ревизијата или страницата) или корисничка странца (се задава бројчената назнака на корисникот). Употреба: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revision/328429]] или [[{{#Special:Redirect}}/user/101]].',
 'redirect-submit' => 'Оди',
 'redirect-lookup' => 'Пребарај:',
 'redirect-value' => 'Вредност:',
 'redirect-user' => 'Корисничка назнака',
+'redirect-page' => 'Назнака на страницата',
 'redirect-revision' => 'Ревизија на страницата',
 'redirect-file' => 'Име на податотека',
 'redirect-not-exists' => 'Вредноста не е најдена',
@@ -4391,6 +4398,7 @@ $5
 'api-error-overwrite' => 'Презапишувањето врз постоечки податотеки не е дозволено.',
 'api-error-stashfailed' => 'Внатрешна грешка: Опслужувачот не успеа да ја складира привремената податотека.',
 'api-error-publishfailed' => 'Внатрешна грешка: Опслужувачот не успеа да ја објави привремената податотека.',
+'api-error-stasherror' => 'Се јави грешка при подигањето на податотеката во складот.',
 'api-error-timeout' => 'Опслужувачот не одговори во очекуваното време.',
 'api-error-unclassified' => 'Се појави непозната грешка.',
 'api-error-unknown-code' => 'Непозната грешка: „$1“',
@@ -4440,10 +4448,12 @@ $5
 'expand_templates_input' => 'Влезен текст:',
 'expand_templates_output' => 'Извод',
 'expand_templates_xml_output' => 'XML излез',
+'expand_templates_html_output' => 'Сиров HTML-извод',
 'expand_templates_ok' => 'ОК',
 'expand_templates_remove_comments' => 'Отстрани коментари',
 'expand_templates_remove_nowiki' => 'Притаи <nowiki> ознаки во резултатот',
 'expand_templates_generate_xml' => 'Прикажи XML дрво на парсирање',
+'expand_templates_generate_rawhtml' => 'Прикажувај сиров HTML',
 'expand_templates_preview' => 'Преглед',
 
 );
index 2f3e651..246d506 100644 (file)
@@ -1204,6 +1204,9 @@ $1 ആണ് ഈ തടയൽ നടത്തിയത്. ''$2'' എന്ന
 'cantcreateaccount-text' => "ഈ ഐ.പി. ('''$1''') വിലാസത്തിൽ നിന്നു അംഗത്വം സൃഷ്ടിക്കുന്നത് [[User:$3|$3]] നിരോധിച്ചിരിക്കുന്നു.
 
 $3 അതിനു കാണിച്ചിരിക്കുന്ന കാരണം ''$2'' ആണ്‌.",
+'cantcreateaccount-range-text' => "താങ്കളുടെ ഐ.പി. വിലാസം ('''$4''') ഉൾപ്പെടുന്ന '''$1''' എന്ന പരിധിയിലെ ഐ.പി. വിലാസങ്ങളിൽ നിന്ന് അംഗത്വമെടുക്കുന്നത് [[User:$3|$3]] തടഞ്ഞിരിക്കുകയാണ്.
+
+$3 നൽകിയിരിക്കുന്ന കാരണം ''$2'' എന്നാണ്",
 
 # History pages
 'viewpagelogs' => 'ഈ താളുമായി ബന്ധപ്പെട്ട രേഖകൾ കാണുക',
@@ -1549,6 +1552,7 @@ $1",
 'prefs-tokenwatchlist' => 'ചീട്ട്',
 'prefs-diffs' => 'വ്യത്യാസങ്ങൾ',
 'prefs-help-prefershttps' => 'താങ്കൾ അടുത്ത പ്രാവശ്യം പ്രവേശിക്കുമ്പോൾ ഇവ ഫലത്തിൽ വരുന്നതാണ്.',
+'prefs-tabs-navigation-hint' => 'സൂചന: ടാബുകളുടെ പട്ടികയിലെ ടാബുകളിലൂടെ നീങ്ങാൻ ഇടത്തും വലത്തും ആരോ കീകൾ ഉപയോഗിക്കാവുന്നതാണ്.',
 
 # User preference: email validation using jQuery
 'email-address-validity-valid' => 'സാധുതയുള്ളതെന്ന് തോന്നുന്നു',
@@ -1736,12 +1740,13 @@ $1",
 'recentchanges-label-bot' => 'ഇത് യന്ത്രം ചെയ്ത തിരുത്താണ്',
 'recentchanges-label-unpatrolled' => 'ഇതുവരെ റോന്തുചുറ്റപ്പെടാത്ത തിരുത്ത്',
 'recentchanges-label-plusminus' => 'താളിന്റെ വലിപ്പം ഇത്രയും ബൈറ്റുകൾ മാറിയിരിക്കുന്നു',
+'recentchanges-legend-heading' => "'''സൂചന:'''",
 'recentchanges-legend-newpage' => '([[Special:NewPages|പുതിയ താളുകളുടെ പട്ടികയും]] കാണുക)',
 'rcnotefrom' => '<b>$2</b> മുതലുള്ള മാറ്റങ്ങൾ (<b>$1</b> എണ്ണം വരെ കാണാം).',
 'rclistfrom' => '$1 മുതലുള്ള മാറ്റങ്ങൾ പ്രദർശിപ്പിക്കുക',
 'rcshowhideminor' => 'ചെറുതിരുത്തലുകൾ $1',
 'rcshowhidebots' => 'യന്ത്രങ്ങളെ $1',
-'rcshowhideliu' => 'à´ªàµ\8dà´°à´µàµ\87ശിà´\9aàµ\8dà´\9aിട്ടുള്ളവരെ $1',
+'rcshowhideliu' => 'à´\85à´\82à´\97à´¤àµ\8dവമàµ\86à´\9fàµ\81à´¤àµ\8dà´¤ിട്ടുള്ളവരെ $1',
 'rcshowhideanons' => 'അജ്ഞാത ഉപയോക്താക്കളെ $1',
 'rcshowhidepatr' => 'റോന്തു ചുറ്റിയ മാറ്റങ്ങൾ $1',
 'rcshowhidemine' => 'എന്റെ തിരുത്തലുകൾ $1',
@@ -2187,6 +2192,7 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization കാണുക.',
 'ninterwikis' => '{{PLURAL:$1|ഒരു അന്തർവിക്കി|$1 അന്തർവിക്കികൾ}}',
 'nlinks' => '{{PLURAL:$1|ഒരു കണ്ണി|$1 കണ്ണികൾ}}',
 'nmembers' => '{{PLURAL:$1|ഒരു അംഗം|$1 അംഗങ്ങൾ}}',
+'nmemberschanged' => '$1 → {{PLURAL:$2|ഒരു അംഗം|$2 അംഗങ്ങൾ}}',
 'nrevisions' => '{{PLURAL:$1|ഒരു പതിപ്പ്|$1 പതിപ്പുകൾ}}',
 'nviews' => '{{PLURAL:$1|ഒരു സന്ദർശനം|$1 സന്ദർശനങ്ങൾ}}',
 'nimagelinks' => '{{PLURAL:$1|ഒരു താളിൽ|$1 താളുകളിൽ}} ഉപയോഗിച്ചിരിക്കുന്നു',
@@ -2425,7 +2431,7 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization കാണുക.',
 'enotif_reset' => 'എല്ലാ താളുകളും സന്ദർശിച്ചതായി രേഖപ്പെടുത്തുക',
 'enotif_impersonal_salutation' => '{{SITENAME}} ഉപയോക്താവ്',
 'enotif_subject_deleted' => '{{SITENAME}} സംരംഭത്തിലെ $1 എന്ന താൾ {{gender:$2|$2}} മായ്ച്ചിരിക്കുന്നു',
-'enotif_subject_created' => '{{SITENAME}} സംരംഭത്തിl $1 എന്ന താൾ {{gender:$2|$2}} സൃഷ്ടിച്ചിരിക്കുന്നു',
+'enotif_subject_created' => '{{SITENAME}} സംരംഭത്തി $1 എന്ന താൾ {{gender:$2|$2}} സൃഷ്ടിച്ചിരിക്കുന്നു',
 'enotif_subject_moved' => '{{SITENAME}} സംരംഭത്തിലെ $1 എന്ന താൾ {{gender:$2|$2}} മാറ്റിയിരിക്കുന്നു',
 'enotif_subject_restored' => '{{SITENAME}} സംരംഭത്തിലെ $1 എന്ന താൾ {{gender:$2|$2}} പുനഃസ്ഥാപിച്ചിരിക്കുന്നു',
 'enotif_subject_changed' => '{{SITENAME}} സംരംഭത്തിലെ $1 എന്ന താളിൽ {{gender:$2|$2}} മാറ്റം വരുത്തിയിരിക്കുന്നു',
@@ -3827,7 +3833,7 @@ $5
 
 # Language selector for translatable SVGs
 'img-lang-default' => '(സ്വതേ വേണ്ട ഭാഷ)',
-'img-lang-info' => 'à´\88 à´\9aà´¿à´¤àµ\8dà´°à´\82 à´\87à´\99àµ\8dà´\99à´¨àµ\86 $1 à´\95ാണിà´\95àµ\8dà´\95àµ\81à´\95 $2.',
+'img-lang-info' => 'à´\88 à´\9aà´¿à´¤àµ\8dà´°à´\82 à´\88 à´­à´¾à´·à´¯à´¿àµ½ à´\95ാണിà´\95àµ\8dà´\95àµ\81à´\95: $1. $2',
 'img-lang-go' => 'പോകൂ',
 
 # Table pager
@@ -3939,13 +3945,14 @@ $5
 'version-entrypoints-scriptpath' => '[https://www.mediawiki.org/wiki/Manual:$wgScriptPath സ്ക്രിപ്റ്റ് പഥം]',
 
 # Special:Redirect
-'redirect' => 'പ്രമാണത്താൽ, ഉപയോക്താവിനാൽ അഥവാ നാൾപ്പതിപ്പ് ഐ.ഡി. ചെയ്യുന്ന തിരിച്ചുവിടൽ',
+'redirect' => 'പ്രമാണത്താൽ, ഉപയോക്താവിനാൽ, താളിനാൽ അഥവാ നാൾപ്പതിപ്പ് ഐ.ഡി.യാൽ ചെയ്യുന്ന തിരിച്ചുവിടൽ',
 'redirect-legend' => 'ഒരു പ്രമാണത്തിലോട്ടോ താളിലോട്ടോ ഉള്ള തിരിച്ചുവിടൽ',
-'redirect-summary' => 'ഈ പ്രത്യേക താൾ ഒരു പ്രമാണത്തിലേയ്ക്കോ (പ്രമാണത്തിന്റെ പേര് തന്നിട്ടുണ്ട്), ഒരു താളിലേയ്ക്കോ (നാൾപ്പതിപ്പിന്റെ ഐഡി തന്നിട്ടുണ്ട്), അല്ലെങ്കിൽ ഒരു ഉപയോക്തൃതാളിലേയ്ക്കോ (ഉപയോക്താവിന്റെ സംഖ്യാ ഐ.ഡി. തന്നിട്ടുണ്ട്) തിരിച്ചുവിടുന്നു. ഉപയോഗം Usage: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revision/328429]], അല്ലെങ്കിൽ [[{{#Special:Redirect}}/user/101]].',
+'redirect-summary' => 'ഈ പ്രത്യേക താൾ ഒരു പ്രമാണത്തിലേയ്ക്കോ (പ്രമാണത്തിന്റെ പേര് തന്നിട്ടുണ്ട്), ഒരു താളിലേയ്ക്കോ (നാൾപ്പതിപ്പിന്റെ ഐ.ഡി. അല്ലെങ്കിൽ താൾ തന്നിട്ടുണ്ട്), അല്ലെങ്കിൽ ഒരു ഉപയോക്തൃതാളിലേയ്ക്കോ (ഉപയോക്താവിന്റെ സംഖ്യാ ഐ.ഡി. തന്നിട്ടുണ്ട്) തിരിച്ചുവിടുന്നു. ഉപയോഗം: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]],  [[{{#Special:Redirect}}/revision/328429]], അല്ലെങ്കിൽ [[{{#Special:Redirect}}/user/101]].',
 'redirect-submit' => 'പോകൂ',
 'redirect-lookup' => 'തേടുക:',
 'redirect-value' => 'വില:',
 'redirect-user' => 'ഉപയോക്തൃ ഐ.ഡി.',
+'redirect-page' => 'താളിന്റെ ഐ.ഡി.',
 'redirect-revision' => 'താളിന്റെ നാൾപ്പതിപ്പ്',
 'redirect-file' => 'പ്രമാണത്തിന്റെ പേര്',
 'redirect-not-exists' => 'വില കണ്ടെത്താൻ കഴിഞ്ഞില്ല',
@@ -4187,10 +4194,12 @@ $5
 'expand_templates_input' => 'ഇൻപുട്ട് ടെക്സ്റ്റ്:',
 'expand_templates_output' => 'ഫലം',
 'expand_templates_xml_output' => 'എക്സ്.എം.എൽ. ഔട്ട്പുട്ട്',
+'expand_templates_html_output' => 'അസംസ്കൃത എച്ച്.റ്റി.എം.എൽ. ഔട്ട്പുട്ട്',
 'expand_templates_ok' => 'ശരി',
 'expand_templates_remove_comments' => 'അഭിപ്രായങ്ങൾ ഒഴിവാക്കുക',
 'expand_templates_remove_nowiki' => 'ഫലങ്ങളിലെ <nowiki> റ്റാഗുകൾ ഒതുക്കുക',
 'expand_templates_generate_xml' => 'എക്സ്.എം.എൽ. പാഴ്‌സർ ട്രീ പ്രദർശിപ്പിക്കുക',
+'expand_templates_generate_rawhtml' => 'അസംസ്കൃത എച്ച്.റ്റി.എം.എൽ. പ്രദർശിപ്പിക്കുക',
 'expand_templates_preview' => 'എങ്ങനെയുണ്ടെന്നു കാണുക',
 
 );
index da938aa..d686649 100644 (file)
@@ -473,8 +473,8 @@ $1',
 'youhavenewmessages' => 'Anda mempunyai $1 ($2).',
 'youhavenewmessagesfromusers' => 'Anda menerima $1 daripada {{PLURAL:$3|seorang|$3 orang}} pengguna lain ($2).',
 'youhavenewmessagesmanyusers' => 'Anda menerima $1 daripada ramai pengguna ($2).',
-'newmessageslinkplural' => '{{PLURAL:$1|pesanan|pesanan-pesanan}} baru',
-'newmessagesdifflinkplural' => '{{PLURAL:$1|perubahan|perubahan-perubahan}} terkini',
+'newmessageslinkplural' => '{{PLURAL:$1|satu pesanan|999=beberapa pesanan}} baru',
+'newmessagesdifflinkplural' => '{{PLURAL:$1|perubahan|999=beberapa perubahan}} terkini',
 'youhavenewmessagesmulti' => 'Anda telah menerima pesanan baru pada $1',
 'editsection' => 'sunting',
 'editold' => 'sunting',
@@ -600,7 +600,8 @@ Pentadbir yang menguncinya memberikan penjelasan yang berikut: "$3".',
 'invalidtitle-knownnamespace' => 'Tajuk tidak sah dengan ruang nama "$2" dan teks "$3"',
 'invalidtitle-unknownnamespace' => 'Tajuk tidak sah dengan nombor ruang nama tidak dikenali $1 dan teks "$2"',
 'exception-nologin' => 'Belum log masuk',
-'exception-nologin-text' => 'Halaman atau tindakan ini memerlukan anda untuk log masuk ke dalam wiki ini.',
+'exception-nologin-text' => 'Sila [[Special:Userlogin|log masuk]] untuk dapat mengakses halaman atau tindakan ini.',
+'exception-nologin-text-manual' => 'Sila $1 untuk dapat mengakses halaman atau tindakan ini.',
 
 # Virus scanner
 'virus-badscanner' => "Konfigurasi rosak: pengimbas virus yang tidak diketahui: ''$1''",
@@ -647,9 +648,11 @@ Jangan lupa untuk mengubah [[Special:Preferences|keutamaan anda di {{SITENAME}}]
 'gotaccount' => "Sudah mempunyai akaun? '''$1'''.",
 'gotaccountlink' => 'Log masuk',
 'userlogin-resetlink' => 'Lupa nama pengguna/kata laluan anda?',
-'userlogin-resetpassword-link' => 'Reset kata laluan anda',
+'userlogin-resetpassword-link' => 'Lupa kata laluan anda?',
 'helplogin-url' => 'Help:Log masuk',
 'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|Bantuan untuk log masuk]]',
+'userlogin-loggedin' => 'Anda sudah log masuk sebagai {{GENDER:$1|$1}}. Gunakan borang di bawah untuk log masuk sebagai pengguna lain.',
+'userlogin-createanother' => 'Buka satu lagi akaun',
 'createacct-join' => 'Isikan keterangan anda di bawah.',
 'createacct-another-join' => 'Masukkan maklumat akaun baru di bawah.',
 'createacct-emailrequired' => 'Alamat e-mel',
@@ -704,17 +707,15 @@ e-mel yang didaftarkan oleh "$1".
 Sila log masuk semula setelah anda menerima e-mel tersebut.',
 'blocked-mailpassword' => 'Alamat IP anda telah disekat daripada sebarang penyuntingan, oleh itu, untuk
 mengelak penyalahgunaan, anda tidak dibenarkan menggunakan ciri pemulihan kata laluan.',
-'eauthentsent' => 'Sebuah e-mel pengesahan telah dikirim kepada alamat e-mel tersebut.
-Sebelum e-emel lain boleh dikirim kepada alamat tersebut, anda perlu mengikuti segala arahan dalam e-mel tersebut
-untuk membuktikan bahawa alamat tersebut memang milik anda.',
+'eauthentsent' => 'Sepucuk e-mel pengesahan telah dikirim kepada alamat e-mel yang dinyatakan.
+Sebelum e-mel lain boleh dikirim kepada alamat tersebut, anda perlu mematuhi arahan-arahan pada e-mel pengesahan tersebut untuk mengesahkan bahawa alamat tersebut benar-benar kepunyaan anda.',
 'throttled-mailpassword' => 'E-mel set semula kata laluan telah dihantar dalam tempoh $1 jam yang lalu.
 Untuk mencegah salah guna, hanya sepucuk e-mel set semula kata laluan dihantar setiap {{PLURAL:$1|jam|$1 jam}}.',
 'mailerror' => 'Ralat ketika mengirim e-mel: $1',
 'acct_creation_throttle_hit' => 'Pengunjung wiki ini yang menggunakan alamat IP anda telah membuka sebanyak $1 akaun semenjak sehari lepas, iaitu merupakan had maksimum yang dibenarkan dalam tempoh tersebut.
 Akibatknya, pengunjung dari alamat IP ini tidak boleh membuka akaun lagi pada masa sekarang.',
 'emailauthenticated' => 'Alamat e-mel anda telah disahkan pada $2, $3.',
-'emailnotauthenticated' => 'Alamat e-mel anda belum disahkan. Oleh itu,
-e-mel bagi ciri-ciri berikut tidak boleh dikirim.',
+'emailnotauthenticated' => 'Alamat e-mel anda belum disahkan. Oleh itu, e-mel tidak boleh dikirim bagi ciri-ciri berikut.',
 'noemailprefs' => 'Anda perlu menetapkan alamat e-mel terlebih dahulu untuk menggunakan ciri-ciri ini.',
 'emailconfirmlink' => 'Sahkan alamat e-mel anda.',
 'invalidemailaddress' => 'Alamat e-mel tersebut tidak boleh diterima kerana ia tidak sah. Sila masukkan alamat e-mel yang betul atau kosongkan sahaja ruangan tersebut.',
@@ -764,7 +765,7 @@ Anda mungkin telah pun berjaya menukar kata laluan anda atau meminta kata laluan
 # Special:PasswordReset
 'passwordreset' => 'Set semula kata laluan',
 'passwordreset-text-one' => 'Lengkapkan borang ini untuk mengeset semula kata laluan anda.',
-'passwordreset-text-many' => '{{PLURAL:$1|Isi salah satu ruangan untuk mengeset semula kata laluan anda.}}',
+'passwordreset-text-many' => '{{PLURAL:$1|Isi salah satu ruangan berikut untuk menerima kata laluan sementara melalui e-mel.}}',
 'passwordreset-legend' => 'Set semula kata laluan',
 'passwordreset-disabled' => 'Ciri set semula kata laluan telah dimatikan di wiki ini.',
 'passwordreset-emaildisabled' => 'Ciri-ciri e-mel telah dipadamkan di wiki ini.',
@@ -1055,6 +1056,9 @@ Argumen-argumen ini telah ditinggalkan.',
 'cantcreateaccounttitle' => 'Akaun tidak dapat dibuka',
 'cantcreateaccount-text' => "Pembukaan akaun daripada alamat IP ini (<b>$1</b>) telah disekat oleh [[User:$3|$3]].
 
+Sebab yang diberikan oleh $3 ialah ''$2''",
+'cantcreateaccount-range-text' => "Pembukaan akaun dari alamat-alamat IP dalam julat '''$1''', termasuk alamat IP anda ('''$4'''), telah disekat oleh [[User:$3|$3]].
+
 Sebab yang diberikan oleh $3 ialah ''$2''",
 
 # History pages
@@ -1133,19 +1137,20 @@ Anda boleh melihat perbezaan ini; butiran boleh didapati di [{{fullurl:{{#Specia
 'revdelete-text' => "'''Semakan dan peristiwa yang dihapuskan akan tetap muncul dalam sejarah laman dan log, tetapi kandungannya tidak boleh diakses awam.'''
 Pentadbir {{SITENAME}} boleh melihat kandungan tersebut dan menyahhapuskannya semula melalui laman ini melainkan mempunyai batasan.",
 'revdelete-confirm' => 'Sila sahkan bahawa anda bertujuan melakukan ini, bahawa anda faham akibatnya, dan anda melakukannya menurut [[{{MediaWiki:Policy-url}}| polisi]].',
-'revdelete-suppress-text' => "Pembatasan ini '''hanya''' untuk digunakan dalam kes-kes berikut:
-* Maklumat peribadi tidak sesuai
+'revdelete-suppress-text' => "Sekatan seharusnya digunakan '''hanya''' untuk kes-kes berikut:
+* maklumat yang mungkin berunsur fitnah
+* maklumat peribadi tidak sesuai
 *: ''alamat rumah dan nombor telefon, nombor keselamatan sosial, dsbg.''",
 'revdelete-legend' => 'Tetapkan batasan:',
-'revdelete-hide-text' => 'Sembunyikan teks semakan',
+'revdelete-hide-text' => 'Teks semakan',
 'revdelete-hide-image' => 'Sembunyikan kandungan fail',
 'revdelete-hide-name' => 'Sembunyikan tindakan dan sasaran',
-'revdelete-hide-comment' => 'Sembunyikan komen suntingan',
-'revdelete-hide-user' => 'Sembunyikan nama pengguna/IP penyunting',
+'revdelete-hide-comment' => 'Ringkasan suntingan',
+'revdelete-hide-user' => 'Nama pengguna/IP penyunting',
 'revdelete-hide-restricted' => 'Sekat data daripada penyelia dan pengguna lain',
 'revdelete-radio-same' => '(jangan tukar)',
-'revdelete-radio-set' => 'Ya',
-'revdelete-radio-unset' => 'Tidak',
+'revdelete-radio-set' => 'Tersembunyi',
+'revdelete-radio-unset' => 'Kelihatan',
 'revdelete-suppress' => 'Sekat data daripada semua pengguna, termasuk penyelia',
 'revdelete-unsuppress' => 'Buang batasan pada semakan yang dipulihkan',
 'revdelete-log' => 'Sebab:',
@@ -1585,12 +1590,14 @@ Tindakan ini tidak boleh dibatalkan.',
 'recentchanges-label-minor' => 'Ini ialah suntingan kecil',
 'recentchanges-label-bot' => 'Suntingan ini dilakukan oleh bot',
 'recentchanges-label-unpatrolled' => 'Suntingan ini belum dirondai',
-'recentchanges-legend-newpage' => '$1 - laman baru',
+'recentchanges-label-plusminus' => 'Saiz halaman telah berubah sebanyak jumlah bait ini',
+'recentchanges-legend-heading' => "'''Petunjuk:'''",
+'recentchanges-legend-newpage' => '(lihat juga [[Special:NewPages|senarai halaman baru]])',
 'rcnotefrom' => 'Yang berikut ialah semua perubahan sejak <b>$2</b> (sehingga <b>$1</b>).',
 'rclistfrom' => 'Papar perubahan sejak $1',
 'rcshowhideminor' => '$1 suntingan kecil',
 'rcshowhidebots' => '$1 bot',
-'rcshowhideliu' => '$1 pengguna log masuk',
+'rcshowhideliu' => '$1 pengguna berdaftar',
 'rcshowhideanons' => '$1 pengguna tanpa nama',
 'rcshowhidepatr' => '$1 suntingan dirondai',
 'rcshowhidemine' => '$1 suntingan saya',
@@ -2304,9 +2311,9 @@ Hubungi penyunting:
 mel: $PAGEEDITOR_EMAIL
 wiki: $PAGEEDITOR_WIKI
 
-Tiada lagi pemberitahuan lanjut sekiranya terdapat suntingan selanjutnya melainkan anda mengunjungi halaman berkenaan. Anda juga boleh menetapkan semula tanda-tanda pemberitahuan untuk kesemua halaman dalam senarai pantau anda.
+Tiada lagi pemberitahuan lanjut sekiranya terdapat kegiatan selanjutnya melainkan anda mengunjungi halaman berkenaan apabila log masuk. Anda juga boleh menetapkan semula tanda-tanda pemberitahuan untuk kesemua halaman dalam senarai pantau anda.
 
-                        Sistem pemberitahuan {{SITENAME}} yang mesra
+Sistem pemberitahuan {{SITENAME}} yang mesra
 
 --
 Untuk mengubah tetapan pemberitahuan melalui e-mel anda, kunjungi
@@ -2348,12 +2355,15 @@ Sila lihat $2 untuk rekod penghapusan terkini.',
 'deleteotherreason' => 'Sebab lain/tambahan:',
 'deletereasonotherlist' => 'Sebab lain',
 'deletereason-dropdown' => '* Sebab-sebab lazim
-** Permintaan pengarang
+** Spam
+** Vandalisme
 ** Melanggar hak cipta
-** Vandalisme',
+** Permintaan pengarang
+** Lencongan terputus',
 'delete-edit-reasonlist' => 'Ubah sebab-sebab hapus',
 'delete-toobig' => 'Laman ini mempunyai sejarah yang besar, iaitu melebihi $1 jumlah semakan. Oleh itu, laman ini dilindungi daripada dihapuskan untuk mengelak kerosakan di {{SITENAME}} yang tidak disengajakan.',
 'delete-warning-toobig' => 'Laman ini mempunyai sejarah yang besar, iaitu melebihi $1 jumlah semakan. Menghapuskannya boleh mengganggu perjalanan pangkalan data {{SITENAME}}. Sila berhati-hati.',
+'deleting-backlinks-warning' => "'''Amaran:''' Terdapat halaman-halaman lain yang berpaut pada halaman yang hendak anda hapus itu.",
 
 # Rollback
 'rollback' => 'Undurkan suntingan.',
@@ -3007,7 +3017,8 @@ Simpan dalam komputer anda dan muat naiknya di sini.',
 'spam_reverting' => 'Membalikkan kepada versi terakhir yang tidak mengandungi pautan ke $1',
 'spam_blanking' => 'Mengosongkan semua semakan yang mengandungi pautan ke $1',
 'spam_deleting' => 'Menghapuskan semua semakan yang mengandungi pautan ke $1',
-'simpleantispam-label' => "Pemeriksaan anti-spam. '''JANGAN''' isi ruangan ini!",
+'simpleantispam-label' => "Pemeriksaan anti-spam.
+'''JANGAN''' isi ruangan ini!",
 
 # Info page
 'pageinfo-title' => 'Maklumat untuk "$1"',
@@ -3021,6 +3032,7 @@ Simpan dalam komputer anda dan muat naiknya di sini.',
 'pageinfo-length' => 'Kepanjangan halaman (bait)',
 'pageinfo-article-id' => 'ID halaman',
 'pageinfo-language' => 'Bahasa isi kandungan halaman',
+'pageinfo-content-model' => 'Model kandungan halaman',
 'pageinfo-robot-policy' => 'Indeks oleh robot',
 'pageinfo-robot-index' => 'Dibenarkan',
 'pageinfo-robot-noindex' => 'Tidak dibenarkan',
@@ -3672,6 +3684,8 @@ Sila sahkan bahawa anda mahu mencipta semula laman ini.",
 
 # Language selector for translatable SVGs
 'img-lang-default' => '(bahasa azali)',
+'img-lang-info' => 'Paparkan gambar ini dalam $1. $2',
+'img-lang-go' => 'Jalan',
 
 # Table pager
 'ascending_abbrev' => 'menaik',
@@ -3784,13 +3798,14 @@ Anda patut telah menerima [{{SERVER}}{{SCRIPTPATH}}/COPYING sebuah salinan bagi
 'version-entrypoints-scriptpath' => '[https://www.mediawiki.org/wiki/Manual:$wgScriptPath Laluan skrip]',
 
 # Special:Redirect
-'redirect' => 'Lencongkan mengikut fail, ID pengguna atau ID semakan',
+'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 halaman pengguna (dengan ID pengguna berangka).',
+'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:',
 'redirect-value' => 'Nilai:',
 'redirect-user' => 'ID Pengguna',
+'redirect-page' => 'ID halaman',
 'redirect-revision' => 'Semakan halaman',
 'redirect-file' => 'Nama fail',
 'redirect-not-exists' => 'Nilai tidak dijumpai',
@@ -3808,9 +3823,9 @@ Anda patut telah menerima [{{SERVER}}{{SCRIPTPATH}}/COPYING sebuah salinan bagi
 
 # Special:SpecialPages
 'specialpages' => 'Laman khas',
+'specialpages-note-top' => 'Petunjuk',
 'specialpages-note' => '* Laman khas biasa.
-* <span class="mw-specialpagerestricted">Laman khas terhad.</span>
-* <span class="mw-specialpagecached">Laman khas tercache (mungkin lapuk).</span>',
+* <span class="mw-specialpagerestricted">Laman khas terhad.</span>',
 'specialpages-group-maintenance' => 'Laporan penyenggaraan',
 'specialpages-group-other' => 'Laman khas lain',
 'specialpages-group-login' => 'Log masuk / buka akaun',
@@ -3848,7 +3863,10 @@ Anda patut telah menerima [{{SERVER}}{{SCRIPTPATH}}/COPYING sebuah salinan bagi
 'tags-tag' => 'Nama label',
 'tags-display-header' => 'Rupa dalam senarai perubahan',
 'tags-description-header' => 'Keterangan makna',
+'tags-active-header' => 'Aktif?',
 'tags-hitcount-header' => 'Perubahan',
+'tags-active-yes' => 'Ya',
+'tags-active-no' => 'Tidak',
 'tags-edit' => 'sunting',
 'tags-hitcount' => '$1 perubahan',
 
@@ -4030,10 +4048,12 @@ Sebenarnya, ia mengembangkan segalanya dalam tanda kurung panah berganda.',
 'expand_templates_input' => 'Teks input:',
 'expand_templates_output' => 'Hasil',
 'expand_templates_xml_output' => 'Output XML',
+'expand_templates_html_output' => 'Output HTML mentah',
 'expand_templates_ok' => 'OK',
 'expand_templates_remove_comments' => 'Buang ulasan',
 'expand_templates_remove_nowiki' => 'Sekat tag <nowiki> dalam hasil',
 'expand_templates_generate_xml' => 'Papar pepohon hurai XML',
+'expand_templates_generate_rawhtml' => 'Paparkan HTML mentah',
 'expand_templates_preview' => 'Pralihat',
 
 );
index 37bb7e0..cf6ab2e 100644 (file)
@@ -200,7 +200,7 @@ $messages = array(
 'tog-editsection' => 'Невтемс сюлмавома пенть «витемс» эрьва секциянтень-пельксэнтень',
 'tog-editsectiononrightclick' => 'Витнемс секциятнень-пелькстнэнь, лепштямс сёрмадовксонть лемензэ лангс чеерень витьёнсе повнесэ',
 'tog-showtoc' => 'Невтемс сёрмадовкспотмокс (лопатненень, конатнесэ 3-до ламо сёрмадовкст)',
-'tog-rememberpassword' => 'Ледстемс совамо валом те бравзерсэнть (сех кувать $1 {{PLURAL:$1|чи|чить}})',
+'tog-rememberpassword' => 'Ледстемс совамо валом те бравзерсэнть (сех кувать $1 {{PLURAL:$1|1=чи|чить}})',
 'tog-watchcreations' => 'Совавтомс ванома лемрисьмезэнь монь теевть лопатнень ды сень, мезе йовкстан',
 'tog-watchdefault' => 'Совавтомс монь витевть лопатнень ванома лемрисьмезэнь',
 'tog-watchmoves' => 'Совавтомс монь одов лемдявт лопатнень-керьмазтнэнь ванома лемрисьмезэнь',
@@ -303,19 +303,19 @@ $messages = array(
 'december-date' => 'Ацамков $1',
 
 # Categories related messages
-'pagecategories' => '{{PLURAL:$1|Категория|Категорият}}',
+'pagecategories' => '{{PLURAL:$1|1=Категория|Категорият}}',
 'category_header' => '"$1" категориясонть лопатне',
 'subcategories' => 'Алкскатегорият',
 'category-media-header' => '"$1" категориясонть медиясь',
 'category-empty' => "''Те категориясонть арасть лопат-медият.''",
-'hidden-categories' => '{{PLURAL:$1|Кекшень категория|Кекшень категорият}}',
+'hidden-categories' => '{{PLURAL:$1|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-subcat-count' => '{{PLURAL:$2|Те категориясонть вейкине явкс категория.|Те категориясонть  {{PLURAL:$1|1=явкс категория|$1 явкс категорият}}, $2 -тнень эйстэ.}}',
+'category-subcat-count-limited' => 'Те категориясонть {{PLURAL:$1|1=алкс категория|$1 алкс категорият}}.',
+'category-article-count' => '{{PLURAL:$2|Те категориясонть вейкине лопась вана косо.|{{PLURAL:$1|1=Те лопась кандови|$1 Не лопатне кандовить}} те категориянтень, категориясонть лопатнеде весемезэ $2.}}',
+'category-article-count-limited' => '{{PLURAL:$1|1=Те лопась|$1 Не лопатне}} те категориясонть.',
+'category-file-count' => '{{PLURAL:$2|Те категориясонть вейкине файлась вана косо.|{{PLURAL:$1|1=Те файлась кандови|$1 Не файлатне кандовить}} те категориянтень, категориясонть файлатнеде весемезэ $2.}}',
+'category-file-count-limited' => '{{PLURAL:$1|1=Те файлась|$1 Не файлатне}} вановиця категориянтень кандови.',
 'listingcontinuesabbrev' => 'поладксозо моли',
 'index-category' => 'Индекс марто лопатне',
 'noindex-category' => 'Индекстэме лопатне',
@@ -380,8 +380,8 @@ $messages = array(
 'delete' => 'Нардамс',
 'deletethispage' => 'Нардамс те лопанть',
 'undeletethispage' => 'Вельмевтемс мекев те лопанть',
-'undelete_short' => 'Велявтомс нардазенть {{PLURAL:$1|вейке витнема-петнема|$1 витнемат-петнемат}}',
-'viewdeleted_short' => 'Ваномс {{PLURAL:$1|нардазь вейке витнема-петнема|нардазь $1 витнемат-петнемат}}',
+'undelete_short' => 'Велявтомс нардазенть {{PLURAL:$1|1=вейке витнема-петнема|$1 витнемат-петнемат}}',
+'viewdeleted_short' => 'Ваномс {{PLURAL:$1|1=нардазь вейке витнема-петнема|нардазь $1 витнемат-петнемат}}',
 'protect' => 'Аравтомс прянь ванстомас',
 'protect_change' => 'полавтомс',
 'protectthispage' => 'Аравтомс те лопанть ванстомас',
@@ -409,7 +409,7 @@ $messages = array(
 'redirectedfrom' => '(Ютавтозь $1 вельде)',
 'redirectpagesub' => 'Лиясто ютавтозь лопа',
 'lastmodifiedat' => 'Те лопанть меельседе витнезь-петнезь $2, $1.',
-'viewcount' => 'Те лопантень совасть {{PLURAL:$1|весть|$1-ксть}}.',
+'viewcount' => 'Те лопантень совасть {{PLURAL:$1|1=весть|$1-ксть}}.',
 'protectedpage' => 'Те лопась ванстомасо',
 'jumpto' => 'Тёкадемс тей:',
 'jumptonavigation' => 'Новигациясь-лездамось',
@@ -442,7 +442,7 @@ $1',
 
 'badaccess' => 'Меревемань асатыкс',
 'badaccess-group0' => 'Тонеть а мерить теемс мезе вешить.',
-'badaccess-groups' => 'Тевтеемась, конань вешить, тееви ансяк «$1» {{PLURAL:$2|куронь|куротнень}} теицятненень.',
+'badaccess-groups' => 'Тевтеемась, конань вешить, тееви ансяк «$1» {{PLURAL:$2|1=куронь|куротнень}} теицятненень.',
 
 'versionrequired' => 'МедияВикинь $1 версиясь эряви',
 'versionrequiredtext' => 'МедияВикинь $1 версиясь эряви те лопанть тевс нолдамга.
@@ -465,7 +465,7 @@ $1',
 'collapsible-expand' => 'Келейгавтомс',
 'thisisdeleted' => '$1-нть ваномс эли велявтомс мекев?',
 'viewdeleted' => 'Ванномс $1?',
-'restorelink' => '{{PLURAL:$1|нардазь вейке витнема-петнема|нардазь $1 витнемат-петнемат}}',
+'restorelink' => '{{PLURAL:$1|1=нардазь вейке витнема-петнема|нардазь $1 витнемат-петнемат}}',
 'feedlinks' => 'Максовкс:',
 'feed-invalid' => 'А маштови сёрмадстома каналонть сортозо.',
 'site-rss-feed' => 'RSS-нть максовкс $1 -нть кисэ',
@@ -550,7 +550,7 @@ $1',
 'yourpasswordagain' => 'Омбоцеде сёрмадык кирдицянь леметь:',
 'createacct-yourpasswordagain' => 'Кемекстык салававалонть',
 'createacct-yourpasswordagain-ph' => 'Совавтык салававалонть одов',
-'remembermypassword' => 'Ледстемс совамом те бравзерсэнть (сех кувать $1 {{PLURAL:$1|чи|чить}})',
+'remembermypassword' => 'Ледстемс совамом те бравзерсэнть (сех кувать $1 {{PLURAL:$1|1=чи|чить}})',
 'userlogin-remembermypassword' => 'Кирдемизь совавтозекс',
 'userlogin-signwithsecure' => 'Нолдак тевс ванстозь сюлмавкс',
 'yourdomainname' => 'Эсеть доменэть:',
@@ -579,7 +579,7 @@ $1',
 'createacct-submit' => 'Шкик совамотаркат',
 'createacct-another-submit' => 'Шкак од совамотарка',
 'createacct-benefit-heading' => '«{{SITENAME}}» сайтэнть теизь тонь кондямо ломанть.',
-'createacct-benefit-body2' => '{{PLURAL:$1|лопа|лопат}}',
+'createacct-benefit-body2' => '{{PLURAL:$1|1=лопа|лопат}}',
 'badretype' => 'Сёрмадыть салава валот кавксть: сынь аволь вейкеть.',
 'userexists' => 'Те лемесь уш саезь.
 Арсека эстеть лия, инеськеть.',
@@ -599,7 +599,7 @@ $1',
 'login-userblocked' => 'Те теицясь аравтозь саймас. Совамонзо а мерить.',
 'wrongpassword' => 'Аволь истя сёрмадык совамо валот. Варчыка одов.',
 'wrongpasswordempty' => 'Салавань валот кадовсь апак сёрмадо. Сёрмадыка одов.',
-'passwordtooshort' => 'Совамо валонть кувалмозо  {{PLURAL:$1|улезэ 1 тешкс| улезт $1 тешкст}}, аволь седе аламо.',
+'passwordtooshort' => 'Совамо валонть кувалмозо  {{PLURAL:$1|1=улезэ 1 тешкс| улезт $1 тешкст}}, аволь седе аламо.',
 'password-name-match' => 'Салава валонтень эряви явовомс теицянь леметь эйстэ.',
 'password-login-forbidden' => 'Те теицянь лемесь ды салававалось а мерить нолдамс тевс.',
 'mailmypassword' => 'Кучт е-сёрмасо од салававал',
@@ -608,7 +608,7 @@ $1',
 кедьстэнек кучомс теицянь од совамо вал {{SITENAME}} ($4) сайтс совамга.<br />
 Теицянтень "$2" кучозь нурькине шкань совамо вал, конась  ней "$3".<br />
 Бути те тон ульнить, сави ней совамс ды кочкамс од совамо вал эстеть.<br />
-Нурькине шкань совамо валот нолдави тевс {{PLURAL:$5|вейке чи|$5 чить}}.
+Нурькине шкань совамо валот нолдави тевс {{PLURAL:$5|1=вейке чи|$5 чить}}.
 
 Бути аволь тон вешицясь, эли мелезэть ледстик совамо валонть, иля яво мель те пачтямнэнтень. Нолдык тевс мельсэ аштицянть - мельс ледстязенть.',
 'noemail' => '"$1" теицянть арась е-сёрмапаргозо.',
@@ -617,7 +617,7 @@ $1',
 Инеськеть, кодак валось пачкоди, совака одов.',
 'eauthentsent' => 'Электрононь сёрмапаргозот кучозь кемекстамонь е-сёрмине.<br /> Сонзэ эйсэ сёрмадозь мезе кода теемс. Ансяк седе мейле, зярдо невтик, сёрмапаргось алкукс эсеть, карматано кучомо лия сёрмат.',
 'mailerror' => 'Е-сёрма кучомсто ильведькс: $1',
-'acct_creation_throttle_hit' => 'Те викисэ тонь IP адресстэть совасть теицят, конат теисть {{PLURAL:$1|1 сёрмадовкс|$1 сёрмадовкст}} меельсе чынть перть, седе ламо полавтомат а мерить теемс истя зняронь шкань перть.
+'acct_creation_throttle_hit' => 'Те викисэ тонь IP адресстэть совасть теицят, конат теисть {{PLURAL:$1|1=1 сёрмадовкс|$1 сёрмадовкст}} меельсе чынть перть, седе ламо полавтомат а мерить теемс истя зняронь шкань перть.
 Тень кисэ, те   IP адресэнть коряс седе тов а маштови теемс-шкамс од сёрмадовкст, зярс.',
 'emailauthenticated' => 'Е-сёрмапаргот кемекстазель $2 чистэ $3 цяссто.',
 'emailconfirmlink' => 'Кемекстык е-сёрмапаргот',
@@ -748,16 +748,16 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
 '''ИЛЯ МАКСО ВАНСТОНЬ ВИДЕЧИСЭ ЛОМАНЕНЬ ВАЖОДЕМАНТЬ АПАК КЕВКСТНЕ!'''",
 'titleprotectedwarning' => "'''ВАНОК:  Те лопась сёлгозь, сонзэ шкамга-теемга [[Special:ListGroupRights|башка видечыть]] эрявить.'''
 Журналонь меельсе сёрмадовксось максозь ало, эрявиндеряй сонзэ ваномс.",
-'templatesused' => 'Те лопасонть тевс нолдазь {{PLURAL:$1|лопа парцун|лопа парцунт}}:',
-'templatesusedpreview' => 'Те икелькс вановкссонть тевс нолдазь  {{PLURAL:$1|лопа парцун|лопа парцунт}}:',
-'templatesusedsection' => 'Те пелькссэнть тевс нолдазь {{PLURAL:$1|лопа парцунось|лопа парцунтнэ}}:',
+'templatesused' => 'Те лопасонть тевс нолдазь {{PLURAL:$1|1=лопа парцун|лопа парцунт}}:',
+'templatesusedpreview' => 'Те икелькс вановкссонть тевс нолдазь  {{PLURAL:$1|1=лопа парцун|лопа парцунт}}:',
+'templatesusedsection' => 'Те пелькссэнть тевс нолдазь {{PLURAL:$1|1=лопа парцунось|лопа парцунтнэ}}:',
 'template-protected' => '(ванстозь)',
 'template-semiprotected' => '(пельс ванстозь)',
-'hiddencategories' => 'Те лопась совавтови {{PLURAL:$1|кекшень 1 категорияс|кекшень $1 категорияс}}:',
+'hiddencategories' => 'Те лопась совавтови {{PLURAL:$1|1=кекшень 1 категорияс|кекшень $1 категорияс}}:',
 'nocreatetext' => 'Те {{SITENAME}} лопасонть пирязь од лопань теемась. Тонь ули мелеть велявтомс удалов ды  питнемензе-витнемензе улиця лопанть, али [[Special:UserLogin|совамс али теемс од совама]].',
 'nocreate-loggedin' => 'Тонеть а мерить теемс-шкамс од лопат.',
-'permissionserrorstext' => 'Тонеть а мерить теемс тень, вана {{PLURAL:$1|тувталось|тувталтнэ}}:',
-'permissionserrorstext-withaction' => 'Тонеть а мерить теемс $2, {{PLURAL:$1|тувталось|тувталтнэ}} вана:',
+'permissionserrorstext' => 'Тонеть а мерить теемс тень, вана {{PLURAL:$1|1=тувталось|тувталтнэ}}:',
+'permissionserrorstext-withaction' => 'Тонеть а мерить теемс $2, {{PLURAL:$1|1=тувталось|тувталтнэ}} вана:',
 'recreate-moveddeleted-warn' => "'''Ванок: Вельмевтят лопа, кона нардазель.'''
 
 Васня арьсек, эряви - а эряви полалемс ды витнемс-петнемс те лопанть.
@@ -800,7 +800,7 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
 'history-show-deleted' => 'Ансяк нардазь',
 'histfirst' => 'весемеде умонь',
 'histlast' => 'Меельце',
-'historysize' => '({{PLURAL:$1|1 байт|$1 байтт}})',
+'historysize' => '({{PLURAL:$1|1=1 байт|$1 байтт}})',
 'historyempty' => '(чаво)',
 
 # Revision feed
@@ -818,7 +818,7 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
 'revisiondelete' => 'Нардамс/вельмевтемс лиякстомтоматнень',
 'revdelete-show-file-confirm' => 'Алкукс ули мелеть ваномс «<nowiki>$1</nowiki>» керьмазонть нардазь ревизиянзо, конась саезь $2-нть эйстэ ды ашти тесэ $3?',
 'revdelete-show-file-submit' => 'Ули',
-'revdelete-selected' => "'''[[:$1]]-нь {{PLURAL:$2|Кочкань лиякстомтомась|Кочкань лиякстомтоматне}}:'''",
+'revdelete-selected' => "'''[[:$1]]-нь {{PLURAL:$2|1=Кочкань лиякстомтомась|Кочкань лиякстомтоматне}}:'''",
 'revdelete-legend' => 'Аравтомс неявомачынь петне',
 'revdelete-hide-text' => 'Кекшемс лиякстомтомань текстэнть',
 'revdelete-hide-image' => 'Кекшемс мезе файлатнесэ',
@@ -827,7 +827,7 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
 'revdelete-hide-user' => 'Кекшемс витницянть-петницянть теиця лемензэ/IP-нзэ',
 'revdelete-radio-same' => '(иляк лиякстомто)',
 'revdelete-log' => 'Тувталось:',
-'revdelete-submit' => 'Аравтомс кочказь {{PLURAL:$1|лиякстомтомантень|лиякстомтоматненень}}',
+'revdelete-submit' => 'Аравтомс кочказь {{PLURAL:$1|1=лиякстомтомантень|лиякстомтоматненень}}',
 'revdel-restore' => 'Полавтомс неявомачынзэ',
 'pagehist' => 'Лопанть икелькс умазо',
 'deletedhist' => 'Нардань икелькс умазо',
@@ -861,7 +861,7 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
 'lineno' => 'Киксэсь $1:',
 'compareselectedversions' => 'Кочказь версиятнень аравтомс карадо-каршо',
 'editundo' => 'Велявтомс мекев мезе витнинь-петнинь',
-'diff-multi' => '↓({{PLURAL:$2|Вейке совицясь тейсь {{PLURAL:$1|юткине версия, конась|$1 юткине версият, конатне}}|$2 совицят тейсть {{PLURAL:$1| юткине версия, конась|$1 юткине версият, конатне}}}} апак невте.)',
+'diff-multi' => '↓({{PLURAL:$2|Вейке совицясь тейсь {{PLURAL:$1|1=юткине версия, конась|$1 юткине версият, конатне}}|$2 совицят тейсть {{PLURAL:$1|1= юткине версия, конась|$1 юткине версият, конатне}}}} апак невте.)',
 
 # Search results
 'searchresults' => 'Мезе муевсь',
@@ -871,9 +871,9 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
 'notextmatches' => 'Лопанть сёрмадсткэнзэ марто вейтьс прамот арасть',
 'prevn' => 'седе икелень {{PLURAL:$1|$1}}',
 'nextn' => 'сы {{PLURAL:$1|$1}}',
-'prevn-title' => 'Седе икелень $1 {{PLURAL:$1|савкс|савкст}}',
-'nextn-title' => 'Седе меелень $1 {{PLURAL:$1|савкс|савкст}}',
-'shown-title' => 'Невтть лопазонзо $1 {{PLURAL:$1|савкс|савкст}}',
+'prevn-title' => 'Седе икелень $1 {{PLURAL:$1|1=савкс|савкст}}',
+'nextn-title' => 'Седе меелень $1 {{PLURAL:$1|1=савкс|савкст}}',
+'shown-title' => 'Невтть лопазонзо $1 {{PLURAL:$1|1=савкс|савкст}}',
 'viewprevnext' => 'Ванномс ($1 {{int:pipe-separator}} $2) ($3)',
 'searchmenu-exists' => "'''Те викисэнть ули \"[[\$1]]\" лем марто лопа'''",
 'searchmenu-new' => "'''Шкик \"[[:\$1]]\" лопанть те викисэнть!'''",
@@ -887,8 +887,8 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
 'searchprofile-images-tooltip' => 'Вешнемс файлат',
 'searchprofile-everything-tooltip' => 'Вешнемс весе лопатнева (кортнема лопатневаяк)',
 'searchprofile-advanced-tooltip' => 'Вешнемс башка теезь лемпотмотнестэ',
-'search-result-size' => '$1 ({{PLURAL:$2|1 вал|$2 валт}})',
-'search-result-category-size' => '{{PLURAL:$1|1 совицязо|$1 совицянзо}} ({{PLURAL:$2|1 явкскатегориязо|$2 явкскатегориянзо}}, {{PLURAL:$3|1 файла|$3 файлат}})',
+'search-result-size' => '$1 ({{PLURAL:$2|1=1 вал|$2 валт}})',
+'search-result-category-size' => '{{PLURAL:$1|1=1 совицязо|$1 совицянзо}} ({{PLURAL:$2|1=1 явкскатегориязо|$2 явкскатегориянзо}}, {{PLURAL:$3|1=1 файла|$3 файлат}})',
 'search-redirect' => '(йутавтт $1-с)',
 'search-section' => '(пелькс $1)',
 'search-suggest' => 'Истя мерикскелить: $1',
@@ -899,7 +899,7 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
 'searcheverything-enable' => 'Вешнемс весе лем потмотнестэ',
 'searchrelated' => 'малавикс',
 'searchall' => 'весе',
-'showingresultsheader' => "{{PLURAL:$5|муевсь '''$1''' вана '''$3'''-тнень эйстэ|муевсть '''$1 - $2''' '''$3'''-тнень эйстэ}} '''$4''' вешнеманть лангс",
+'showingresultsheader' => "{{PLURAL:$5|1=муевсь '''$1''' вана '''$3'''-тнень эйстэ|муевсть '''$1 - $2''' '''$3'''-тнень эйстэ}} '''$4''' вешнеманть лангс",
 'search-nonefound' => 'Те вешнема лангс мезеяк эзь муеве.',
 'powersearch-legend' => 'Седе келейстэ вешнема',
 'powersearch-ns' => 'Вешнемс не лемпотмотнестэ:',
@@ -922,7 +922,7 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
 'prefs-personal' => 'Теицядо',
 'prefs-rc' => 'Чиень полавтнемат-лиякстомтомат',
 'prefs-watchlist' => 'Ванома лемрисьме',
-'prefs-watchlist-days-max' => 'Весемеде куватьс $1 {{PLURAL:$1|чис|чис}}',
+'prefs-watchlist-days-max' => 'Весемеде куватьс $1 {{PLURAL:$1|1=чис|чис}}',
 'prefs-watchlist-edits-max' => 'Весемеде покш цётось: 1000',
 'prefs-misc' => 'Минеть-сюнот',
 'prefs-resetpass' => 'Салавань валонь полавтома',
@@ -938,7 +938,7 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
 'searchresultshead' => 'Вешнема',
 'resultsperpage' => 'Зяроксть вастневи ве лопасо:',
 'recentchangesdays' => 'Зяро чить невтемс чиень полавтнематнесэ-лиякстомтоматнесэ:',
-'recentchangesdays-max' => 'Весемеде куватьс $1 {{PLURAL:$1|чис|чис}}',
+'recentchangesdays-max' => 'Весемеде куватьс $1 {{PLURAL:$1|1=чис|чис}}',
 'recentchangescount' => 'Васень аравтоматнень коряс зяро витнемат-петнемат невтемс:',
 'prefs-help-recentchangescount' => 'Тезэнь совавтозь чиень полавтнемат-лиякстомтомат, лопань лувт-путовкст, журналт.',
 'timezonelegend' => 'Шкань зонась:',
@@ -967,7 +967,7 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
 'yourlanguage' => 'Келесь:',
 'yournick' => 'Кедень путома:',
 'badsiglength' => 'Кедень путомат пек кувака.
-Эйсэнзэ иляст уле $1 -до ламо {{PLURAL:$1|тешкст|тешкст}}.',
+Эйсэнзэ иляст уле $1 -до ламо {{PLURAL:$1|1=тешкст|тешкст}}.',
 'yourgender' => 'Сыметь (цёрань-тейтерень):',
 'gender-unknown' => 'А меревлинь',
 'gender-male' => 'Сон витни-петни викилопатнесэ',
@@ -1081,7 +1081,7 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
 'action-sendemail' => 'кучомс е-сёрмат',
 
 # Recent changes
-'nchanges' => '$1 {{PLURAL:$1|полавтнема|полавтнемат}}',
+'nchanges' => '$1 {{PLURAL:$1|1=полавтнема|полавтнемат}}',
 'recentchanges' => 'Чыяконь полавтнемат-лиякстомтомат',
 'recentchanges-legend' => 'Улконь полавтнематнень аравтнемаст',
 'recentchanges-summary' => '',
@@ -1149,7 +1149,7 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
 'file-thumbnail-no' => "Файланть лемезэ ушодови  <strong>$1</strong>.
 Сонсь маряви вишкалгавтозь фотокуво, покшолмазо ''(кенжешка)''.
 Улиндеряй файланть покш верзиязо, йовкстыка сонзэ  - арась, полавтыка тетень лемензэ.",
-'file-exists-duplicate' => 'Те кавонзавкс файла вана {{PLURAL:$1|те файланть|неть файлатнень}} эйстэ:',
+'file-exists-duplicate' => 'Те кавонзавкс файла вана {{PLURAL:$1|1=те файланть|неть файлатнень}} эйстэ:',
 'uploadwarning' => 'Совавтомадо кардамонь пачтямо',
 'savefile' => 'Ванстомс файланть',
 'uploadedimage' => 'йовкстазь "[[$1]]"',
@@ -1228,7 +1228,7 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
 'filehist-comment' => 'Мельполадкс',
 'filehist-missing' => 'Файлась арась',
 'imagelinks' => 'Ков файлась нолдави тевс',
-'linkstoimage' => 'Те файланть марто сюлмавозь вана {{PLURAL:$1|истямо сюлмавома пене|$1 истят сюлмавома пенеть}}:',
+'linkstoimage' => 'Те файланть марто сюлмавозь вана {{PLURAL:$1|1=истямо сюлмавома пене|$1 истят сюлмавома пенеть}}:',
 'nolinkstoimage' => 'Арась вейкеяк лопа, кона сюлмавови те файланть марто.',
 'sharedupload' => 'Те файлась саезь "$1" файлань пусмосто, сон нолдави тевс лия проектсэяк.',
 'sharedupload-desc-here' => 'Те файлась сась истямо $1 таркасто, паряк сон нолдави тевс лия проектсэ.
@@ -1273,7 +1273,7 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
 
 # Random page
 'randompage' => 'Кодамо понгсь лопа',
-'randompage-nopages' => '{{PLURAL:$2|Те лем потмосо|Не лем потмотнесэ}}: $1 лопат арасть.',
+'randompage-nopages' => '{{PLURAL:$2|1=Те лем потмосо|Не лем потмотнесэ}}: $1 лопат арасть.',
 
 # Random redirect
 'randomredirect' => 'Апак фатя ёнксось',
@@ -1309,12 +1309,12 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
 'fewestrevisions' => 'Лопат, конатнесэ весемеде аламо лиякстомтомат',
 
 # Miscellaneous special pages
-'nbytes' => '$1 {{PLURAL:$1|байт|байтт}}',
-'ncategories' => '$1 {{PLURAL:$1|категория|категорият}}',
-'nlinks' => '$1 {{PLURAL:$1|невтевкс|невтевкст|невтевкснедэ}}',
-'nmembers' => '$1 {{PLURAL:$1|теиця|теицятне}}',
-'nrevisions' => '$1 {{PLURAL:$1|лиякстомтома|лиякстомтомат}}',
-'nviews' => '$1 {{PLURAL:$1|ванома потмо|ванома потмот}}',
+'nbytes' => '$1 {{PLURAL:$1|1=байт|байтт}}',
+'ncategories' => '$1 {{PLURAL:$1|1=категория|категорият}}',
+'nlinks' => '$1 {{PLURAL:$1|невтевкс|невтевкснедэ|невтевкст}}',
+'nmembers' => '$1 {{PLURAL:$1|1=теиця|теицятне}}',
+'nrevisions' => '$1 {{PLURAL:$1|1=лиякстомтома|лиякстомтомат}}',
+'nviews' => '$1 {{PLURAL:$1|1=ванома потмо|ванома потмот}}',
 'lonelypages' => 'Лопаурозкэть',
 'uncategorizedpages' => 'Категориявтомо лопат',
 'uncategorizedcategories' => 'Категориявтомо категорият',
@@ -1344,7 +1344,7 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
 'listusers' => 'Теицят-кить',
 'listusers-editsonly' => 'Невтемс ансяк витнема-петнема марто совийтнень-лисийтнень',
 'listusers-creationsort' => 'Аравтомс мельга мельцек шкамо чинь коряс',
-'usereditcount' => '$1 {{PLURAL:$1|витнема-петнема|витнемат-петнемат}}',
+'usereditcount' => '$1 {{PLURAL:$1|1=витнема-петнема|витнемат-петнемат}}',
 'usercreated' => '{{GENDER:$3|Шказь}} on $1 чистэ $2 шкасто',
 'newpages' => 'Од лопат',
 'newpages-username' => 'Теицянь лем:',
@@ -1354,8 +1354,8 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
 'notargettitle' => 'Совавтома лопа арась',
 'nopagetitle' => 'Истямо вешема лопа арась',
 'nopagetext' => 'Истямо лопа, конань вешить, арась.',
-'pager-newer-n' => '{{PLURAL:$1|седе од 1|седе одт $1}}',
-'pager-older-n' => '{{PLURAL:$1|седе ташто 1|седе таштт $1}}',
+'pager-newer-n' => '{{PLURAL:$1|1=седе од 1|седе одт $1}}',
+'pager-older-n' => '{{PLURAL:$1|1=седе ташто 1|седе таштт $1}}',
 'suppress' => 'А ванома',
 
 # Book sources
@@ -1385,7 +1385,7 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
 
 # Special:Categories
 'categories' => 'Категорият',
-'categoriespagetext' => '{{PLURAL:$1|Те категориясонть|Не категориятнесэ}} улить лопат эли медият.
+'categoriespagetext' => '{{PLURAL:$1|1=Те категориясонть|Не категориятнесэ}} улить лопат эли медият.
 [[Special:UnusedCategories|тевс апак нолда категориятне]] тесэ а невтевить.
 Истяжо ванытя [[Special:WantedCategories|вешень категориятнень]].',
 'special-categories-sort-count' => 'аравтомс цётонь коряс',
@@ -1452,7 +1452,7 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
 'unwatch' => 'А ванстнемс тень мельга',
 'unwatchthispage' => 'Лоткамс ванстомадонзо',
 'notvisiblerev' => 'Лиякстомтомась нардазь',
-'watchlist-details' => 'Ванома лемрисьмесэть {{PLURAL:$1|$1 лопа|$1 лопат}}, апак лово кортнема лопатнень.',
+'watchlist-details' => 'Ванома лемрисьмесэть {{PLURAL:$1|1=$1 лопа|$1 лопат}}, апак лово кортнема лопатнень.',
 'wlshowlast' => 'Невтемс мельсе $1 цяст $2 чить $3',
 'watchlist-options' => 'Ванома потмонь аравтнемат',
 
@@ -1475,7 +1475,7 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
 'exblank' => 'лопась чаволь',
 'delete-confirm' => 'Нардамс "$1"',
 'delete-legend' => 'Нардамс',
-'historywarning' => 'Ванок: Лопанть, конань нардамонзо пурнат,  лиякстомтомань икелькс $1 {{PLURAL:$1|умазо|уманзо}}:',
+'historywarning' => 'Ванок: Лопанть, конань нардамонзо пурнат,  лиякстомтомань икелькс $1 {{PLURAL:$1|1=умазо|уманзо}}:',
 'confirmdeletetext' => 'Кундыть нардамо лопа (эли невтевкс-артовкс) вейтьсэ лиякстомтоматнеде икелькс уманзо марто.<br />
 Инеськеть,  кемекстык, эсеть мелеть коряс тень тейсак, алкукс содат, мезе лияды теде мейле, ды алкукс теят тень видечинть (правилатьнень) коряс, конат сёрмадозь [[{{MediaWiki:Policy-url}}]].',
 'actioncomplete' => 'Тевень теемась топавтовсь',
@@ -1513,7 +1513,7 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
 'protect_expiry_old' => 'Прядома  шкась амаштовикс.',
 'protect-text' => "Тесэ тынь вансынк ды лиякстомсынк ванстоманть покшолманзо лопаньте '''$1'''.",
 'protect-locked-access' => "Кирдицянь совамо таркат а максы видечи лиякстомтомс лопанть ванстома лувонзо. Тесэ вана лопанть уликс путовксонзо-аравтоманзо '''$1''':",
-'protect-cascadeon' => 'Те лопась ванстозь,  сон путозь {{PLURAL:$1|невтезезь ало лопаньте, конаньте|невтезезь ало лопатьнене конатьнене}}-те путозь каскадонь ванстомась. Тынь лиякставсынк те ванстома сэренть, ансяк те кодаяк а полавсы каскадонь ванстоманть.',
+'protect-cascadeon' => 'Те лопась ванстозь,  сон путозь {{PLURAL:$1|1=невтезезь ало лопаньте, конаньте|невтезезь ало лопатьнене конатьнене}}-те путозь каскадонь ванстомась. Тынь лиякставсынк те ванстома сэренть, ансяк те кодаяк а полавсы каскадонь ванстоманть.',
 'protect-default' => 'Весе теицятненень маштови',
 'protect-fallback' => 'Вешеви ве мельс прамось «$1»-нть',
 'protect-level-autoconfirmed' => 'Саймас аравтомс од ды апак сёрмадстово теицятнень',
@@ -1553,9 +1553,9 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
 'undeleteviewlink' => 'ваномс',
 'undeleteinvert' => 'Кочказень таркас апаконь кочкамо',
 'undeletecomment' => 'Тувталось:',
-'undeletedrevisions' => '{{PLURAL:$1|1 лиякстомтома|$1 лиякстомтомат}} вельмевтезь',
-'undeletedrevisions-files' => '{{PLURAL:$1|1 лиякстомтома|$1 лиякстомтомат}} ды {{PLURAL:$2|1 файла|$2 файлат}} вельмевтезь',
-'undeletedfiles' => '{{PLURAL:$1|1 файла|$1 файлат}} вельмевтезь',
+'undeletedrevisions' => '{{PLURAL:$1|1=1 лиякстомтома|$1 лиякстомтомат}} вельмевтезь',
+'undeletedrevisions-files' => '{{PLURAL:$1|1=1 лиякстомтома|$1 лиякстомтомат}} ды {{PLURAL:$2|1=1 файла|$2 файлат}} вельмевтезь',
+'undeletedfiles' => '{{PLURAL:$1|1=1 файла|$1 файлат}} вельмевтезь',
 'undelete-search-box' => 'Вешнемс нардань лопатнень йутксто',
 'undelete-search-prefix' => 'Невтемс лопат тестэ саезь:',
 'undelete-search-submit' => 'Вешнэмс',
@@ -1597,10 +1597,10 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
 'isredirect' => 'Лиякс витнинк-петнинк лопанть',
 'istemplate' => 'совавтомс',
 'isimage' => 'файлань сюлмавома пене',
-'whatlinkshere-prev' => '{{PLURAL:$1|икеле|седе икелень $1}}',
-'whatlinkshere-next' => '{{PLURAL:$1|сыця|сы $1}}',
+'whatlinkshere-prev' => '{{PLURAL:$1|1=икеле|седе икелень $1}}',
+'whatlinkshere-next' => '{{PLURAL:$1|1=сыця|сы $1}}',
 'whatlinkshere-links' => '← сюлмавомапеть',
-'whatlinkshere-hideredirs' => '$1 {{PLURAL:$1|тарка йутавты|таркат йутавтыть}} тей',
+'whatlinkshere-hideredirs' => '$1 {{PLURAL:$1|1=тарка йутавты|таркат йутавтыть}} тей',
 'whatlinkshere-hidetrans' => '$1 сюлмавозь пелькстнэнь',
 'whatlinkshere-hidelinks' => '$1 сюлмавома петь',
 'whatlinkshere-hideimages' => '$1 файланть сюлмавомапензэ',
@@ -1690,8 +1690,8 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
 'movepage-page-moved' => '"$1" лопась печтевтезь "$2"-с.',
 'movepage-page-unmoved' => 'Лопа $1 эзь печтевтеве $2 лопас.',
 'movelogpage' => 'Печтевтемань журнал',
-'movesubpage' => '{{PLURAL:$1|Алкслопа|Алкслопа}}',
-'movesubpagetext' => 'Те лопасонть ало невтеви $1 {{PLURAL:$1|алкслопа|алкслопа}}.',
+'movesubpage' => '{{PLURAL:$1|1=Алкслопа|Алкслопа}}',
+'movesubpagetext' => 'Те лопасонть ало невтеви $1 {{PLURAL:$1|1=алкслопа|алкслопа}}.',
 'movenosubpage' => 'Те лопасонть алкслопат арасть.',
 'movereason' => 'Тувталось:',
 'revertmove' => 'велявтодо',
@@ -1739,7 +1739,7 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
 'import-upload-filename' => 'Файла лемесь:',
 'import-comment' => 'Арсемат-мельть:',
 'importstart' => 'Лопатне совавтовить...',
-'import-revision-count' => '$1 {{PLURAL:$1|лиякстомтома|лиякстомтомат}}',
+'import-revision-count' => '$1 {{PLURAL:$1|1=лиякстомтома|лиякстомтомат}}',
 'importnopages' => 'Ёвкстамс лопат арасть',
 'importfailed' => 'Совавтома тевесь эзь лисе: <nowiki>$1</nowiki>',
 'importcantopen' => 'Совавтозь файлась эзь панжово',
@@ -1752,7 +1752,7 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
 
 # Import log
 'importlogpage' => 'Импортонть журналось',
-'import-logentry-upload-detail' => '$1 {{PLURAL:$1|лиякстомтома|лиякстомтомат}}',
+'import-logentry-upload-detail' => '$1 {{PLURAL:$1|1=лиякстомтома|лиякстомтомат}}',
 
 # Tooltip help for the actions
 'tooltip-pt-userpage' => 'Теицянь лопат',
@@ -1817,12 +1817,12 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
 'tooltip-summary' => 'Сёрмадт нурькинестэ совавтозденть',
 
 # Attribution
-'anonymous' => '{{SITENAME}} сайтэнть лемтеме {{PLURAL:$1|теицязо|теицянзо}}',
+'anonymous' => '{{SITENAME}} сайтэнть лемтеме {{PLURAL:$1|1=теицязо|теицянзо}}',
 'siteuser' => '{{SITENAME}}-нь теиця $1',
 'lastmodifiedatby' => 'Меельседе те лопанть полавтызе $3 $2, $1.',
 'othercontribs' => '$1-нь важодеманзо лангс нежедезь.',
 'others' => 'лият',
-'siteusers' => '{{SITENAME}} сайтэнть {{PLURAL:$2|теицязо|теицянзо}} $1',
+'siteusers' => '{{SITENAME}} сайтэнть {{PLURAL:$2|1=теицязо|теицянзо}} $1',
 'creditspage' => 'Лопасонть кинь путовксонзо',
 
 # Spam protection
@@ -1861,7 +1861,7 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
 
 # Media information
 'thumbsize' => 'Кенжешканть покшолмазо:',
-'widthheightpage' => '$1 × $2, {{PLURAL:$3|лопа|$3 лопат}}',
+'widthheightpage' => '$1 × $2, {{PLURAL:$3|1=лопа|$3 лопат}}',
 'file-info' => 'файлонть-путовксонть сталмозо: $1, MIME типезе: $2',
 'file-info-size' => '$1 × $2 пиксельть, файлонть-путовксонть сталмозо: $3, MIME типезе: $4',
 'file-nohires' => 'Арась версия покш разрешения марто.',
@@ -2131,13 +2131,13 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
 # Watchlist editor
 'watchlistedit-normal-title' => 'Витнемс-петнемс ванстома лопанть',
 'watchlistedit-normal-submit' => 'Нардамс конякстнэнь',
-'watchlistedit-normal-done' => '{{PLURAL:$1|1 конякс|$1 конякст}} нардазь ваномань лопастот:',
+'watchlistedit-normal-done' => '{{PLURAL:$1|1=1 конякс|$1 конякст}} нардазь ваномань лопастот:',
 'watchlistedit-raw-title' => 'Витнеме-петнеме верек ваномалопанть',
 'watchlistedit-raw-legend' => 'Витнеме-петнеме верек ваномалопанть',
 'watchlistedit-raw-titles' => 'Конякст:',
 'watchlistedit-raw-submit' => 'Мезе мельга ванстнят, спискаст одкстомтомс',
-'watchlistedit-raw-added' => 'Поладозь {{PLURAL:$1|1 конякс|$1 конякст}}:',
-'watchlistedit-raw-removed' => '{{PLURAL:$1|1 конякс нардазь|$1 конякст нардазь}}:',
+'watchlistedit-raw-added' => 'Поладозь {{PLURAL:$1|1=1 конякс|$1 конякст}}:',
+'watchlistedit-raw-removed' => '{{PLURAL:$1|1=1 конякс нардазь|$1 конякст нардазь}}:',
 
 # Watchlist editing tools
 'watchlisttools-view' => 'Лиякстоматьне лопатнесэ потмоксстонть',
@@ -2222,15 +2222,15 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
 'api-error-unknownerror' => 'Апак содань ильведевкс: «$1».',
 
 # Durations
-'duration-seconds' => '$1 {{PLURAL:$1|секунда|секундат}}',
-'duration-minutes' => '$1 {{PLURAL:$1|минут|минутт}}',
-'duration-hours' => '$1 {{PLURAL:$1|цяс|цяст}}',
-'duration-days' => '$1 {{PLURAL:$1|чи|чить}}',
-'duration-weeks' => '$1 {{PLURAL:$1|тарго|таргот}}',
-'duration-years' => '$1 {{PLURAL:$1|ие|иеть}}',
-'duration-decades' => '$1 {{PLURAL:$1|кеменьие|кеменьиеть}}',
-'duration-centuries' => '$1 {{PLURAL:$1|пинге|пингеть}}',
-'duration-millennia' => '$1 {{PLURAL:$1|тёжтьие|тёжтьиеть}}',
+'duration-seconds' => '$1 {{PLURAL:$1|1=секунда|секундат}}',
+'duration-minutes' => '$1 {{PLURAL:$1|1=минут|минутт}}',
+'duration-hours' => '$1 {{PLURAL:$1|1=цяс|цяст}}',
+'duration-days' => '$1 {{PLURAL:$1|1=чи|чить}}',
+'duration-weeks' => '$1 {{PLURAL:$1|1=тарго|таргот}}',
+'duration-years' => '$1 {{PLURAL:$1|1=ие|иеть}}',
+'duration-decades' => '$1 {{PLURAL:$1|1=кеменьие|кеменьиеть}}',
+'duration-centuries' => '$1 {{PLURAL:$1|1=пинге|пингеть}}',
+'duration-millennia' => '$1 {{PLURAL:$1|1=тёжтьие|тёжтьиеть}}',
 
 # Special:ExpandTemplates
 'expand_templates_preview' => 'Васнянь неевтезэ',
index 26dec78..58e5da3 100644 (file)
@@ -85,9 +85,9 @@ $messages = array(
 'tog-hidepatrolled' => 'Motlàtìs tlapîpialli tlayèktlàlilistli ìpan welok tlapảtlalistli',
 'tog-newpageshidepatrolled' => 'Mokintlàtis tlapîpialtlaìxtlapaltìn ìwikpa ìtlapòpòwaltekpànal in yâyankuik tlaìxtlapaltìn',
 'tog-extendwatchlist' => 'Mìxmảnas in tlapòpòwaltekpàntlachialli ìka mỏtas nochi in tlapảtlalistli, âmò in san okachi yankuik.',
-'tog-usenewrc' => 'Colōloāz in tlapatlaiztli īca yancuīc tlapatlaliztli īhuān in tlachiyaliztli tlapōhualāmatl (monequi JavaScript)',
-'tog-showtoolbar' => 'Tiquittāz in tlein motequitiltia tlapatlaliztechcopa (JavaScript)',
-'tog-editondblclick' => 'Tiquimpatlāz zāzaniltin ōme clicca (JavaScript)',
+'tog-usenewrc' => 'Quimolōloāz in tlapatlaliztli yancuīc tlapatlaliztli āmapan īhuān in tlachiyaliztli tlapōhualāmapan (monequi JavaScript)',
+'tog-showtoolbar' => 'Motlaīxtlatīz in tlachihchīhualōni pāntli',
+'tog-editondblclick' => 'Tiquimpatlāz in zāzaniltin intlā ōme tiquimpachoa',
 'tog-showtoc' => 'Tiquittāz in tlein cah zāzotlahcuilōlco',
 'tog-rememberpassword' => 'Ticpiyāz moMotlatequitiltilīltōca īhuān motlahtōlichtacāyo inīn chīuhpōhualhuazco (īxquich {{PLURAL:$1|tōnalli}})',
 'tog-watchcreations' => 'Moaquiāz in āmatl mā niquinyōcoya īhuān in tlahcuilōlli mā niquinquetza īpan notlachiyaliz',
@@ -257,7 +257,7 @@ $messages = array(
 'articlepage' => 'Xiquittaz in tlahcuilōlli',
 'talk' => 'tēixnāmiquiliztli',
 'views' => 'Tlachiyaliztli',
-'toolbox' => 'In tlein motequitiltia',
+'toolbox' => 'Tlachihchīhualōni',
 'userpage' => 'Xiquitta tlatequitiltilīlli zāzanilli',
 'projectpage' => 'Xiquitta tlachīhualiztli zāzanilli',
 'imagepage' => 'Tiquittaz in zāzanilli īāma',
@@ -279,7 +279,7 @@ $messages = array(
 # All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage).
 'aboutsite' => 'Ītechcopa {{SITENAME}}',
 'aboutpage' => 'Project:Ītechcopa',
-'copyright' => 'Tlahcuilōltzin cah yōllōxoxouhqui īpan $1',
+'copyright' => 'In tlahcuilōlli cah tlacēcencāhuani īpan $1 tel ahmo intlā īcuepca motēnēhua.',
 'copyrightpage' => '{{ns:project}}:Tlachīhualōni ītlapiyaliz',
 'currentevents' => 'Āxcāncāyōtl',
 'currentevents-url' => 'Project:Āxcāncāyōtl',
@@ -390,7 +390,7 @@ Hueliz quimpiya tlahtōl tlein ahmo mohuelītih motequitiltia tōcāpan.',
 'createaccount' => 'Ticchīhuāz cē cuentah',
 'gotaccount' => "¿Ye ticpiya cē cuentah? '''$1'''.",
 'gotaccountlink' => 'Ximocalaqui',
-'createaccountmail' => 'Ticnemītīz ahmo cemihcac zāzoichtacātlahtōlli nō moēhualtīz in maltzinteyōtl netitlanizyeyāntli',
+'createaccountmail' => 'Ticnemītīz ahmo cemihcac zāzoichtacātlahtōlli nō in tiquēhualtīz in maltzinteyōtl nonetitlanizyeyān',
 'createaccountreason' => 'Tlèka:',
 'badretype' => 'Ahneneuhqui motlahtōlichtacāyo.',
 'userexists' => 'In tlatequitiltilīltōcāitl in ōquipehpen ye ia.
index ea3a794..1c80f65 100644 (file)
@@ -430,8 +430,8 @@ Putite cuntinuà a ausà {{SITENAME}} comme n'utente senza nomme, o si nò putit
 'rev-delundel' => 'faje vedé/annascunne',
 'rev-showdeleted' => 'faje vedé',
 'revdelete-show-file-submit' => 'Sì',
-'revdelete-radio-set' => '',
-'revdelete-radio-unset' => 'No',
+'revdelete-radio-set' => 'Nasconde',
+'revdelete-radio-unset' => 'Faje vedé',
 'revdel-restore' => 'càgna visiblità',
 
 # Diffs
index 96f38cb..8c28e7f 100644 (file)
@@ -26,6 +26,7 @@
  * @author Jeblad
  * @author Jsoby
  * @author Jóna Þórunn
+ * @author Kjetil r
  * @author Kph
  * @author Kph-no
  * @author Laaknor
@@ -537,7 +538,7 @@ $messages = array(
 'projectpage' => 'Vis prosjektside',
 'imagepage' => 'Vis filside',
 'mediawikipage' => 'Vis beskjedside',
-'templatepage' => 'Vis mal',
+'templatepage' => 'Vis malside',
 'viewhelppage' => 'Vis hjelpeside',
 'categorypage' => 'Vis kategoriside',
 'viewtalkpage' => 'Vis diskusjon',
@@ -570,8 +571,8 @@ $1',
 'disclaimerpage' => 'Project:Generelle forbehold',
 'edithelp' => 'Redigeringshjelp',
 'helppage' => 'Help:Innhold',
-'mainpage' => 'Hovedside',
-'mainpage-description' => 'Hovedside',
+'mainpage' => 'Forside',
+'mainpage-description' => 'Forside',
 'policy-url' => 'Project:Retningslinjer',
 'portal' => 'Prosjektportal',
 'portal-url' => 'Project:Prosjektportal',
@@ -582,8 +583,8 @@ $1',
 'badaccess-group0' => 'Du har ikke tilgang til å utføre handlingen du prøvde på.',
 'badaccess-groups' => 'Handlingen du prøvde å utføre kan kun utføres av brukere i {{PLURAL:$2|gruppa|gruppene}} $1.',
 
-'versionrequired' => 'Versjon $1 av MediaWiki er påkrevd',
-'versionrequiredtext' => 'Versjon $1 av MediaWiki er nødvendig for å bruke denne siden. Se [[Special:Version|versjonsiden]]',
+'versionrequired' => 'MediaWiki-versjon $1 er påkrevd',
+'versionrequiredtext' => 'MediaWiki-versjon $1 er nødvendig for å bruke denne siden. Se [[Special:Version|versjonsiden]]',
 
 'ok' => 'OK',
 'retrievedfrom' => 'Hentet fra «$1»',
@@ -645,11 +646,11 @@ En liste over gyldige spesialsider finnes på [[Special:SpecialPages|{{int:speci
 'databaseerror' => 'Databasefeil',
 'databaseerror-text' => 'En feil skjedde med en databasespørring.
 Dette kan være et tegn på feil med programvaren.',
-'databaseerror-textcl' => 'En feil skjedde med et databasespørring.',
+'databaseerror-textcl' => 'En feil skjedde med en databasespørring.',
 'databaseerror-query' => 'Spørring: $1',
 'databaseerror-function' => 'Funksjon: $1',
 'databaseerror-error' => 'Feil: $1',
-'laggedslavemode' => 'Advarsel: Dette kan være en eldre versjon av siden.',
+'laggedslavemode' => "'''Advarsel:''' Dette kan være en eldre versjon av siden.",
 'readonly' => 'Databasen er skrivebeskyttet',
 'enterlockreason' => 'Skriv en begrunnelse for skrivebeskyttelsen, inkludert et estimat for når den blir opphevet',
 'readonlytext' => 'Databasen er for øyeblikket skrivebeskyttet, sannsynligvis på grunn av rutinemessig vedlikehold.
@@ -696,8 +697,8 @@ Den inneholder kanskje ett eller flere tegn som ikke kan brukes i titler.',
 'protectedpagetext' => 'Denne siden har blitt låst for endringer.',
 'viewsourcetext' => 'Du kan se og kopiere kilden til denne siden:',
 'viewyourtext' => "Du kan se og kopiere kilden til '''dine endringer''' på denne siden:",
-'protectedinterface' => 'Denne siden fremskaffer brukergrensesnittekst for programvaren, og er låst for å hindre misbruk.',
-'editinginterface' => "'''Advarsel:''' Du redigerer en side som brukes for å fremskaffe grensesnittekst for programvaren.
+'protectedinterface' => 'Denne siden kontrollerer brukergrensesnittekst for programvaren, og er låst for å hindre misbruk.',
+'editinginterface' => "'''Advarsel:''' Du redigerer en side som brukes til å kontrollere grensesnittekst for programvaren.
 Endringer av denne siden vil påvirke hvordan grensesnittet vil se ut for andre brukere.
 For oversettelser er det best om du bruker [//translatewiki.net/wiki/Main_Page?setlang=nb translatewiki.net], prosjektet for oversettelse av MediaWiki.",
 'cascadeprotected' => 'Denne siden er låst for redigering fordi den inkluderes på følgende sider som har dypbeskyttelse slått på:<!--{{PLURAL:$1}}-->
@@ -722,14 +723,14 @@ Administrators nærmere begrunnelse: «$3».',
 'exception-nologin-text-manual' => 'Du må $1 for å få tilgang til denne siden eller handlingen.',
 
 # Virus scanner
-'virus-badscanner' => "Dårlig konfigurasjon: Ukjent virusskanner: ''$1''",
+'virus-badscanner' => "Feilkonfigurasjon: Ukjent virusskanner: ''$1''",
 'virus-scanfailed' => 'skanning mislyktes (kode $1)',
 'virus-unknownscanner' => 'ukjent antivirusprogram:',
 
 # Login and logout pages
 'logouttext' => "'''Du er nå logget ut.'''
 
-Vær oppmerksom på at noen sider kan fortsette å dukke opp som om du fortsatt var innlogget, helt til du nullstiller nettleserens cache.",
+Vær oppmerksom på at noen sider kan fortsette å dukke opp som om du fortsatt var innlogget, helt til du nullstiller nettleserens mellomlager (cache).",
 'welcomeuser' => 'Velkommen, $1!',
 'welcomecreation-msg' => 'Kontoen din har blitt opprettet.
 Ikke glem å endre [[Special:Preferences|innstillingene dine]] på {{SITENAME}}.',
@@ -943,7 +944,7 @@ Og du burde gjøre det hvis du har avslørt nøklene for noen.',
 'resettokens-legend' => 'Nullstill merker',
 'resettokens-tokens' => 'Merker:',
 'resettokens-token-label' => '$1 (aktuell verdi: $2)',
-'resettokens-watchlist-token' => 'Webmatenøkkel (Atom/RSS) for [[Special:Watchlist|endringer av sider på din overvåkningsliste]',
+'resettokens-watchlist-token' => 'Webmatenøkkel (Atom/RSS) for [[Special:Watchlist|endringer av sider på din overvåkningsliste]]',
 'resettokens-done' => 'Nullstilling av merker.',
 'resettokens-resetbutton' => 'Nullstill valgte merker',
 
@@ -1726,7 +1727,7 @@ Informasjonen vil være offentlig.',
 'rclistfrom' => 'Vis nye endringer med start fra $1',
 'rcshowhideminor' => '$1 mindre endringer',
 'rcshowhidebots' => '$1 roboter',
-'rcshowhideliu' => '$1 innloggede brukere',
+'rcshowhideliu' => '$1 registrerte brukere',
 'rcshowhideanons' => '$1 anonyme brukere',
 'rcshowhidepatr' => '$1 patruljerte endringer',
 'rcshowhidemine' => '$1 mine endringer',
@@ -2116,7 +2117,7 @@ Kanskje du vil redigere beskrivelsen på dens [$2 filbeskrivelsesside].',
 # Random page in category
 'randomincategory' => 'Tilfeldig side innenfor kategorien',
 'randomincategory-invalidcategory' => '«$1» er ikke et gyldig kategorinavn.',
-'randomincategory-nopages' => 'Det finnes ingen sider i [[:Kategori:$1]]-kategorien.',
+'randomincategory-nopages' => 'Det finnes ingen sider i [[:Kategori:$1|$1]]-kategorien.',
 'randomincategory-selectcategory' => 'Hent en tilfeldig side fra kategori: $1 $2.',
 'randomincategory-selectcategory-submit' => 'Start',
 
@@ -2440,8 +2441,7 @@ Kontakt brukeren:
 e-post: $PAGEEDITOR_EMAIL
 wiki: $PAGEEDITOR_WIKI
 
-Det vil ikke komme flere varsler om endringer på denne siden med mindre du besøker den.
-Du kan også fjerne varslingsflagg for alle overvåkede sider i overvåkningslisten din.
+Det vil ikke komme flere varsler om endringer på denne siden med mindre du besøker den mens du er innlogget. Du kan også fjerne varslingsflagg for alle overvåkede sider i overvåkningslisten din.
 
              Ditt vennlige varslingssystem for {{SITENAME}}
 
@@ -2506,7 +2506,8 @@ Se $2 for en oversikt over de siste slettingene.',
 Den siste redigeringen ble foretatt av [[User:$3|$3]] ([[User talk:$3|diskusjon]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).',
 'editcomment' => "Redigeringskommentaren var: «''$1''»",
 'revertpage' => 'Tilbakestilte endring av [[Special:Contributions/$2|$2]] ([[User talk:$2|diskusjon]]) til siste versjon av [[User:$1|$1]]',
-'revertpage-nouser' => 'Tilbakestilte endringer av (fjernet brukernavn) til siste versjon av [[User:$1|$1]]',
+'revertpage-nouser' => 'Tilbakestilt endringer av skjult bruker til siste versjon av
+{{GENDER:$1|[[Bruker:$1|$1]]}}',
 'rollback-success' => 'Tilbakestilte endringer av $1; endret til siste versjon av $2.',
 
 # Edit tokens
@@ -2640,7 +2641,7 @@ $1',
 'contributions' => '{{GENDER:$1|Brukerbidrag}}',
 'contributions-title' => 'Brukerbidrag av $1',
 'mycontris' => 'Bidrag',
-'contribsub2' => 'For $1 ($2)',
+'contribsub2' => 'For {{GENDER:$3|$1}} ($2)',
 'nocontribs' => 'Ingen endringer er funnet som passer disse kriteriene.',
 'uctop' => '(siste)',
 'month' => 'Fra måned (og tidligere):',
@@ -3153,6 +3154,7 @@ Dette er sannsynligvis forårsaket av en lenke til et svartelistet eksternt nett
 'pageinfo-length' => 'Sidelengde (i bytes)',
 'pageinfo-article-id' => 'Side-ID',
 'pageinfo-language' => 'Språk for sideinnholdet',
+'pageinfo-content-model' => 'Modell for sideinnhold',
 'pageinfo-robot-policy' => 'Bot-indeksering',
 'pageinfo-robot-index' => 'Tillatt',
 'pageinfo-robot-noindex' => 'Ikke tillatt',
@@ -3238,7 +3240,7 @@ Ved å åpne den kan systemet ditt kompromitteres.",
 'svg-long-desc' => 'SVG-fil, standardstørrelse $1 × $2 piksler, filstørrelse: $3',
 'svg-long-desc-animated' => 'Animert SVG-fil, standardstørrelse $1 × $2 piksler, filstørrelse: $3',
 'svg-long-error' => 'Ugyldig SVG-fil: $1',
-'show-big-image' => 'Full oppløsning',
+'show-big-image' => 'Opprinnelig fil',
 'show-big-image-preview' => 'Størrelse på denne forhåndsvisningen: $1.',
 'show-big-image-other' => '{{PLURAL:$2|Annen oppløsning|Andre oppløsninger}}: $1.',
 'show-big-image-size' => '$1 × $2 piksler',
@@ -3796,6 +3798,11 @@ Denne bekreftelseskoden utløper $4.',
 'imgmultigo' => 'Gå!',
 'imgmultigoto' => 'Gå til siden $1',
 
+# Language selector for translatable SVGs
+'img-lang-default' => '(standardspråk)',
+'img-lang-info' => 'Fremstill dette bildet i $1 $2.',
+'img-lang-go' => 'Start',
+
 # Table pager
 'ascending_abbrev' => 'stig.',
 'descending_abbrev' => 'synk.',
@@ -3925,7 +3932,8 @@ Du skal ha mottatt [{{SERVER}}{{SCRIPTPATH}}/COPYING en kopi av GNU General Publ
 # Special:Redirect
 'redirect' => 'Omdiriger via filnavn, bruker, eller versjonsid',
 'redirect-legend' => 'Omdiriger til en fil eller side',
-'redirect-summary' => 'Denne spesialsiden omdirigerer til en fil (hvis den gis et filnavn), en side (hvis den gis et versjonsnummer), eller en brukerside (hvis den gis en nummerisk brukerid).',
+'redirect-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).
+Eksempler:[[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revision/328429]], or [[{{#Special:Redirect}}/user/101]].',
 'redirect-submit' => 'Gå',
 'redirect-lookup' => 'Oppslag:',
 'redirect-value' => 'Verdi:',
@@ -3947,9 +3955,9 @@ Du skal ha mottatt [{{SERVER}}{{SCRIPTPATH}}/COPYING en kopi av GNU General Publ
 
 # Special:SpecialPages
 'specialpages' => 'Spesialsider',
+'specialpages-note-top' => 'Tegnforklaring',
 'specialpages-note' => '* Normale spesialsider.
-* <span class="mw-specialpagerestricted">Spesialsider med begrenset tilgang.</span>
-* <span class="mw-specialpagecached">Spesialsider som oppdateres periodisk (kan være foreldede).</span>',
+* <span class="mw-specialpagerestricted">Spesialsider med begrenset tilgang.</span>',
 'specialpages-group-maintenance' => 'Vedlikeholdsrapporter',
 'specialpages-group-other' => 'Andre spesialsider',
 'specialpages-group-login' => 'Innlogging / opprette bruker',
@@ -3987,7 +3995,10 @@ Du skal ha mottatt [{{SERVER}}{{SCRIPTPATH}}/COPYING en kopi av GNU General Publ
 'tags-tag' => 'Taggnavn',
 'tags-display-header' => 'Utseende på endringslister',
 'tags-description-header' => 'Fullstendig betydning',
+'tags-active-header' => 'Aktive?',
 'tags-hitcount-header' => 'Taggede endringer',
+'tags-active-yes' => 'Ja',
+'tags-active-no' => 'Nei',
 'tags-edit' => 'rediger',
 'tags-hitcount' => '{{PLURAL:$1|én endring|$1 endringer}}',
 
@@ -4007,6 +4018,7 @@ Du skal ha mottatt [{{SERVER}}{{SCRIPTPATH}}/COPYING en kopi av GNU General Publ
 'dberr-problems' => 'Siden har tekniske problemer.',
 'dberr-again' => 'Prøv å oppdatere siden om noen minutter.',
 'dberr-info' => '(Kan ikke kontakte databasetjeneren: $1)',
+'dberr-info-hidden' => '(Får ikke kontakt med databasetjeneren)',
 'dberr-usegoogle' => 'Du kan prøve å søke via Google imens.',
 'dberr-outofdate' => 'Merk at deres indeks over våre sider kan være utdatert.',
 'dberr-cachederror' => 'Følgende er en mellomlagret kopi av den etterspurte siden, og kan være foreldet.',
@@ -4150,9 +4162,10 @@ Om det ikke er tilfellet, kan du bruke det enkle skjemaet som du finner under. K
 'limitreport-walltime-value' => '$1 {{PLURAL:$1|sekund|sekunder}}',
 'limitreport-ppvisitednodes' => 'Nodebesøkstelling for preprosessor',
 'limitreport-ppgeneratednodes' => 'Preprosessor-generert nodetall',
-'limitreport-postexpandincludesize-value' => '$1/$2 byte',
+'limitreport-postexpandincludesize' => 'Inkludert størrelse etter utvidelse',
+'limitreport-postexpandincludesize-value' => '$1/$2 {{PLURAL:$2|byte|bytes}}',
 'limitreport-templateargumentsize' => 'Malargument-størrelse',
-'limitreport-templateargumentsize-value' => '$1/$2 byte',
+'limitreport-templateargumentsize-value' => '$1/$2 {{PLURAL:$2|byte|bytes}}',
 'limitreport-expansiondepth' => 'Største ekspansjonsdybde',
 'limitreport-expensivefunctioncount' => 'Antall kostbare parserfunksjoner',
 
index 2fcb6dd..4b319af 100644 (file)
@@ -1279,6 +1279,9 @@ Controleer voor het opslaan of het resultaat gewenst is.',
 'cantcreateaccount-text' => "Registreren vanaf dit IP-adres ('''$1''') is geblokkeerd door [[User:$3|$3]].
 
 De door $3 opgegeven reden is ''$2''",
+'cantcreateaccount-range-text' => 'Het aanmaken van gebruikers vanaf IP-adressen in de reeks <strong>$1</strong> is niet mogelijk doordat dit is ingesteld door [[User:$3|$3]]. Uw IP-adres $4 bevindt zich in deze reeks.
+
+De reden voor de blokkade is <em>$2</em>',
 
 # History pages
 'viewpagelogs' => 'Logboek voor deze pagina bekijken',
@@ -1817,13 +1820,14 @@ Als u deze opgeeft, kan deze naam gebruikt worden om u erkenning te geven voor u
 'recentchanges-label-bot' => 'Deze bewerking is uitgevoerd door een bot',
 'recentchanges-label-unpatrolled' => 'Deze bewerking is nog niet gecontroleerd',
 'recentchanges-label-plusminus' => 'Deze paginagrootte is met dit aantal bytes gewijzigd',
+'recentchanges-legend-heading' => "'''Legenda:'''",
 'recentchanges-legend-newpage' => "Zie ook de [[Special:NewPages|Lijst met nieuwe pagina's]].",
 'recentchanges-legend-plusminus' => "(''±123'')",
 'rcnotefrom' => "Wijzigingen sinds '''$2''' (met een maximum van '''$1''' wijzigingen).",
 'rclistfrom' => 'Wijzigingen bekijken vanaf $1',
 'rcshowhideminor' => 'Kleine wijzigingen $1',
 'rcshowhidebots' => 'bots $1',
-'rcshowhideliu' => 'aangemelde gebruikers $1',
+'rcshowhideliu' => 'geregistreerde gebruikers $1',
 'rcshowhideanons' => 'anonieme gebruikers $1',
 'rcshowhidepatr' => 'gecontroleerde bewerkingen $1',
 'rcshowhidemine' => 'mijn bewerkingen $1',
@@ -2300,6 +2304,7 @@ Meestal is de laatste pagina het eigenlijke doel, waar de eerste pagina naar zou
 'ninterwikis' => '$1 {{PLURAL:$1|interwikikoppeling|interwikikoppelingen}}',
 'nlinks' => '$1 {{PLURAL:$1|koppeling|koppelingen}}',
 'nmembers' => '$1 {{PLURAL:$1|item|items}}',
+'nmemberschanged' => '$1 → $2 {{PLURAL:$2|lid|leden}}',
 'nrevisions' => '$1 {{PLURAL:$1|versie|versies}}',
 'nviews' => '{{PLURAL:$1|1 keer|$1 keer}} bekeken',
 'nimagelinks' => "Gebruikt op {{PLURAL:$1|één pagina|$1 pagina's}}",
@@ -3333,11 +3338,11 @@ Vul dit veld '''NIET''' in!",
 'pageinfo-firstuser' => 'Gebruiker die de pagina heeft aangemaakt',
 'pageinfo-firsttime' => 'Datum waarop de pagina is aangemaakt',
 'pageinfo-lastuser' => 'Laatste bewerker',
-'pageinfo-lasttime' => 'Datum van laatste bewerking',
-'pageinfo-edits' => 'Totaal aantal bewerkingen',
-'pageinfo-authors' => 'Totaal aantal verschillende auteurs',
-'pageinfo-recent-edits' => 'Recent aantal bewerkingen (binnen de afgelopen $1).',
-'pageinfo-recent-authors' => 'Recent aantal verschillende auteurs',
+'pageinfo-lasttime' => 'Laatste bewerking',
+'pageinfo-edits' => 'Aantal bewerkingen',
+'pageinfo-authors' => 'Auteurs totaal',
+'pageinfo-recent-edits' => 'Recente bewerkingen (binnen de afgelopen $1)',
+'pageinfo-recent-authors' => 'Recente auteurs',
 'pageinfo-magic-words' => '{{PLURAL:$1|Magisch woord|Magische woorden}} ($1)',
 'pageinfo-hidden-categories' => 'Verborgen {{PLURAL:$1|categorie|categorieën}} ($1)',
 'pageinfo-templates' => '{{PLURAL:$1|Gebruikt sjabloon|Gebruikte sjablonen}} ($1)',
@@ -3979,7 +3984,7 @@ Bevestig dat u de pagina opnieuw wilt aanmaken.',
 
 # Language selector for translatable SVGs
 'img-lang-default' => '(standaard taal)',
-'img-lang-info' => 'Deze afbeeldingen renderen in de taal $1 $2',
+'img-lang-info' => 'Deze afbeeldingen renderen in de taal $1. $2',
 'img-lang-go' => 'OK',
 
 # Table pager
@@ -4100,13 +4105,14 @@ Samen met dit programma hoort u een [{{SERVER}}{{SCRIPTPATH}}/COPYING kopie van
 'version-entrypoints-scriptpath' => '[https://www.mediawiki.org/wiki/Manual:$wgScriptPath Script path]',
 
 # Special:Redirect
-'redirect' => 'Doorverwijzen op bestandsnaam, gebruikersnummer of versienummer',
+'redirect' => 'Doorverwijzen op bestandsnaam, gebruikersnummer, paginanummer, of versienummer',
 '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 versienummer wordt opgegeven) of een gebruikerspagina (als een gebruikersnummer wordt opgegeven). Gebruik: [[{{#Special:Redirect}}/file/Voorbeeld.jpg]], [[{{#Special:Redirect}}/revision/328429]] of [[{{#Special:Redirect}}/user/101]].',
+'redirect-summary' => 'Deze speciale pagina verwijst door naar een bestand (als een bestandsnaam wordt opgegeven), een pagina (als een paginanummer of versienummer wordt opgegeven) of een gebruikerspagina (als een gebruikersnummer wordt opgegeven). Gebruik: [[{{#Special:Redirect}}/file/Voorbeeld.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]] of [[{{#Special:Redirect}}/user/101]].',
 'redirect-submit' => 'OK',
 'redirect-lookup' => 'Opzoeken:',
 'redirect-value' => 'Waarde:',
 'redirect-user' => 'Gebruikersnummer',
+'redirect-page' => 'Pagina-ID',
 'redirect-revision' => 'Paginaversie',
 'redirect-file' => 'Bestandsnaam',
 'redirect-not-exists' => 'Waarde niet gevonden',
@@ -4349,10 +4355,12 @@ Vrijwel alle tekst tussen dubbele accolades wordt gesubstitueerd.',
 'expand_templates_input' => 'Invoertekst:',
 'expand_templates_output' => 'Resultaat',
 'expand_templates_xml_output' => 'XML-uitvoer',
+'expand_templates_html_output' => 'Ruwe HTML',
 'expand_templates_ok' => 'OK',
 'expand_templates_remove_comments' => 'Opmerkingen verwijderen',
 'expand_templates_remove_nowiki' => 'Tags <nowiki> in resultaat onderdrukken',
 'expand_templates_generate_xml' => 'XML-parserboom bekijken',
+'expand_templates_generate_rawhtml' => 'Ruwe HTML weergeven',
 'expand_templates_preview' => 'Voorvertoning',
 
 );
index 6b2eefd..b8cc532 100644 (file)
@@ -644,6 +644,7 @@ Dette kan òg skuldast ein feil i programvara som er nytta av {{SITENAME}}.',
 # General errors
 'error' => 'Feil',
 'databaseerror' => 'Databasefeil',
+'databaseerror-error' => 'Feil: $1',
 'laggedslavemode' => 'Åtvaring: Det er mogleg at sida ikkje er heilt oppdatert.',
 'readonly' => 'Databasen er skriveverna',
 'enterlockreason' => 'Skriv ein grunn for vernet, inkludert eit overslag for kva tid det vil bli oppheva',
@@ -806,7 +807,7 @@ Brukarnamn skil mellom stor og liten bokstav. Sjekk at du har skrive brukarnamet
 'passwordtooshort' => 'Passord må innehalda minst {{PLURAL:$1|eitt teikn|$1 teikn}}.',
 'password-name-match' => 'Passordet ditt lyt vera noko anna enn brukarnamnet ditt.',
 'password-login-forbidden' => 'Bruk av dette brukarnamnet og passordet er vorte forbode.',
-'mailmypassword' => 'Send nytt passord',
+'mailmypassword' => 'Attendestill passord',
 'passwordremindertitle' => 'Nytt passord til {{SITENAME}}',
 'passwordremindertext' => 'Nokon (truleg du, frå IP-adressa $1) bad oss sende deg eit nytt passord til {{SITENAME}} ($4). Eit mellombels passord for «$2» er oppretta, og er sett til «$3». Om det var det du ville, må du logge inn
 og velje eit nytt passord no.
@@ -1652,12 +1653,13 @@ Denne informasjonen vil vera offentleg.',
 'recentchanges-label-bot' => 'Endringa vart gjord av ein robot',
 'recentchanges-label-unpatrolled' => 'Endringa er ikkje patruljert enno',
 'recentchanges-label-plusminus' => 'Storleiken til sida vart endra med så mange byte',
+'recentchanges-legend-heading' => "'''Tyding:'''",
 'recentchanges-legend-newpage' => '(sjå dessutan [[Special:NewPages|lista over nye sider]])',
 'rcnotefrom' => "Nedanfor vert opp til '''$1''' endringar sidan  ''' $2''' viste.",
 'rclistfrom' => 'Vis nye endringar sidan $1',
 'rcshowhideminor' => '$1 småplukk',
 'rcshowhidebots' => '$1 robotar',
-'rcshowhideliu' => '$1 innlogga brukarar',
+'rcshowhideliu' => '$1 registrerte brukarar',
 'rcshowhideanons' => '$1 anonyme brukarar',
 'rcshowhidepatr' => '$1 godkjende endringar',
 'rcshowhidemine' => '$1 endringane mine',
index e9db6b7..a7410e3 100644 (file)
@@ -397,18 +397,18 @@ $messages = array(
 'oct' => "d'oct",
 'nov' => 'de nov',
 'dec' => 'de dec',
-'january-date' => '$1 genièr',
-'february-date' => '$1 febrièr',
-'march-date' => '$1 març',
-'april-date' => '$1 abril',
-'may-date' => '$1 mai',
-'june-date' => '$1 junh',
-'july-date' => '$1 julhet',
-'august-date' => '$1 agost',
-'september-date' => '$1 setembre',
-'october-date' => '$1 octobre',
-'november-date' => '$1 novembre',
-'december-date' => '$1 decembre',
+'january-date' => '$1 de genièr',
+'february-date' => '$1 de febrièr',
+'march-date' => '$1 de març',
+'april-date' => "$1 d'abril",
+'may-date' => '$1 de mai',
+'june-date' => '$1 de junh',
+'july-date' => '$1 de julhet',
+'august-date' => "$1 d'agost",
+'september-date' => '$1 de setembre',
+'october-date' => "$1 d'octobre",
+'november-date' => '$1 de novembre',
+'december-date' => '$1 de decembre',
 
 # Categories related messages
 'pagecategories' => '{{PLURAL:$1|Categoria|Categorias}}',
@@ -786,7 +786,7 @@ Verificatz qu'avètz plan ortografiat lo nom, o [[Special:UserLogin/signup|creat
 'passwordtooshort' => 'Vòstre senhal deu conténer al mens {{PLURAL:$1|1 caractèr|$1 caractèrs}}.',
 'password-name-match' => 'Vòstre senhal deu èsser diferent de vòstre nom d’utilizaire.',
 'password-login-forbidden' => "L'usatge d'aquestes nom d'utilizaire e senhal es pas autorisat",
-'mailmypassword' => 'Mandar un senhal novèl per corrièr electronic',
+'mailmypassword' => 'Reïnicializar lo senhal',
 'passwordremindertitle' => 'Senhal temporari novèl sus {{SITENAME}}',
 'passwordremindertext' => "Qualqu'un (probablament vos, amb l'adreça IP $1) a demandat un senhal novèl
 per {{SITENAME}} ($4). Un senhal temporari es estat creat per
@@ -1143,6 +1143,7 @@ D'unas inclusions seràn pas efectuadas.",
 'cantcreateaccount-text' => "La creacion de compte dempuèi aquesta adreça IP ('''$1''') es estada blocada per [[User:$3|$3]].
 
 La rason balhada per $3 èra ''$2''.",
+'cantcreateaccount-range-text' => "La creacion de compte dempuèi las adressas IP  '''$1''', que la vòstra n'es ('''$4''') es estada blocada per [[User:$3|$3]].",
 
 # History pages
 'viewpagelogs' => 'Vejatz las operacions per aquesta pagina',
@@ -1671,7 +1672,8 @@ Tanben podètz causir de permetre a d’autres de vos contactar per vòstra pagi
 'recentchanges-label-minor' => 'Aqueste cambiament es menor',
 'recentchanges-label-bot' => 'Aqueste cambiament es estat efectuat per un bòt.',
 'recentchanges-label-unpatrolled' => 'Aqueste cambiament es pas estat verificat encara.',
-'recentchanges-legend-newpage' => '$1 - pagina novèla',
+'recentchanges-legend-heading' => "'''Legenda :'''",
+'recentchanges-legend-newpage' => '(veire tanben la [[Special:NewPages|lista de las paginas novèlas]]).',
 'rcnotefrom' => "Vaquí los cambiaments efectuats dempuèi lo '''$2''' ('''$1''' al maximum).",
 'rclistfrom' => 'Afichar las modificacions novèlas dempuèi lo $1.',
 'rcshowhideminor' => '$1 los cambiaments menors',
@@ -2154,6 +2156,7 @@ Las entradas <del>barradas</del> son estadas resolgudas.',
 'protectedpages' => 'Paginas protegidas',
 'protectedpages-indef' => 'Unicament las proteccions permanentas',
 'protectedpages-cascade' => 'Unicament las proteccions en cascada',
+'protectedpages-noredirect' => 'Amagar las redireccions',
 'protectedpagesempty' => 'Cap de pagina es pas protegida actualament.',
 'protectedtitles' => 'Títols protegits',
 'protectedtitlesempty' => 'Cap de títol es pas actualament protegit amb aquestes paramètres.',
@@ -3725,6 +3728,11 @@ Confirmatz que desiratz tornar crear aqueste article.",
 'imgmultigo' => 'Accedir !',
 'imgmultigoto' => 'Anar a la pagina $1',
 
+# Language selector for translatable SVGs
+'img-lang-default' => '(lenga per defaut)',
+'img-lang-info' => 'Afichar aqueste imatge en $1 $2.',
+'img-lang-go' => 'Amodar',
+
 # Table pager
 'ascending_abbrev' => 'creissent',
 'descending_abbrev' => 'descreissent',
@@ -3824,6 +3832,7 @@ Ensajatz la previsualizacion normala.',
 'redirect-lookup' => 'Recèrca :',
 'redirect-value' => 'Valor :',
 'redirect-user' => "ID de l'utilizaire",
+'redirect-page' => 'ID de pagina',
 'redirect-revision' => 'Revision de la pagina',
 'redirect-file' => 'Nom del fichièr',
 'redirect-not-exists' => 'Valor pas trobada',
@@ -3841,9 +3850,9 @@ Ensajatz la previsualizacion normala.',
 
 # Special:SpecialPages
 'specialpages' => 'Paginas especialas',
+'specialpages-note-top' => 'Legenda',
 'specialpages-note' => '* Paginas especialas normalas.
-* <span class="mw-specialpagerestricted">Paginas especialas restrenchas.</span>
-* <span class="mw-specialpagecached">Paginas especialas solament en escondedor (poirián èsser obsolètas).</span>',
+* <span class="mw-specialpagerestricted">Paginas especialas restrenchas.</span>',
 'specialpages-group-maintenance' => 'Rapòrts de mantenença',
 'specialpages-group-other' => 'Autras paginas especialas',
 'specialpages-group-login' => "S'identificar / s'inscriure",
@@ -4059,10 +4068,12 @@ Ensajatz la previsualizacion normala.',
 'expand_templates_input' => 'Picatz vòstre tèxte aicí :',
 'expand_templates_output' => 'Visualizatz lo resultat :',
 'expand_templates_xml_output' => 'Sortida XML',
+'expand_templates_html_output' => 'Sortida en HTML sens filtrar',
 'expand_templates_ok' => "D'acòrdi",
 'expand_templates_remove_comments' => 'Suprimir los comentaris.',
 'expand_templates_remove_nowiki' => 'Suprimís los marcadors <nowiki> dins lo resultat',
 'expand_templates_generate_xml' => "Veire l'arborescéncia XML",
+'expand_templates_generate_rawhtml' => 'Afichar lo HTML brut',
 'expand_templates_preview' => 'Previsualizacion',
 
 );
index 2a8e264..ddf68de 100644 (file)
@@ -17,6 +17,7 @@
  * @author Jimidar
  * @author Kaganer
  * @author Raj Singh
+ * @author Satdeep gill
  * @author Saurabh123
  * @author Sukh
  * @author Surinder.wadhawan
@@ -403,7 +404,7 @@ $messages = array(
 'articlepage' => 'ਸਮੱਗਰੀ ਸਫ਼ਾ ਵੇਖੋ',
 'talk' => 'ਚਰਚਾ',
 'views' => 'ਵਿਊ',
-'toolbox' => 'ਸੰਦ ਬਕਸਾ',
+'toolbox' => 'ਸੰਦ',
 'userpage' => 'ਵਰਤੋਂਕਾਰ ਸਫ਼ਾ ਵੇਖੋ',
 'projectpage' => 'ਪ੍ਰੋਜੈਕਟ ਸਫ਼ਾ ਵੇਖੋ',
 'imagepage' => 'ਫਾਇਲ ਸਫ਼ਾ ਵੇਖੋ',
@@ -513,6 +514,8 @@ $1',
 # General errors
 'error' => 'ਗ਼ਲਤੀ',
 'databaseerror' => 'ਡਾਟਾਬੇਸ ਗਲਤੀ',
+'databaseerror-query' => 'ਪੁੱਛ-ਗਿੱਛ: $1',
+'databaseerror-function' => 'ਕਰਤੱਵ: $1',
 'databaseerror-error' => 'ਦੋਸ਼: $1',
 'laggedslavemode' => "'''ਖ਼ਬਰਦਾਰ:''' ਹੋ ਸਕਦਾ ਹੈ ਸਫ਼ੇ ਵਿਚ ਤਾਜ਼ਾ ਤਬਦੀਲੀਆਂ ਸ਼ਾਮਲ ਨਾ ਹੋਣ।",
 'readonly' => 'ਡਾਟਾਬੇਸ ਨੂੰ ਤਾਲ਼ਾ ਲੱਗਿਆ ਹੋਇਆ ਹੈ',
@@ -1962,7 +1965,7 @@ $1|ਤਬਦੀਲੀ ਹੋਈ|'''$1''' ਤਬਦੀਲੀਆਂ ਹੋਈਆ
 'contributions' => '{{GENDER:$1|ਮੈਂਬਰ}} ਯੋਗਦਾਨ',
 'contributions-title' => '$1 ਲਈ ਵਰਤੋਂਕਾਰ ਯੋਗਦਾਨ',
 'mycontris' => 'ਯੋਗਦਾਨ',
-'contribsub2' => '$1 ($2) ਲਈ',
+'contribsub2' => '{{GENDER:$3|$1}} ($2) ਲਈ',
 'uctop' => '(ਮੌਜੂਦਾ)',
 'month' => 'ਇਸ (ਅਤੇ ਪਿਛਲੇ) ਮਹੀਨੇ ਤੋਂ :',
 'year' => 'ਇਸ (ਅਤੇ ਪਿਛਲੇ) ਸਾਲ ਤੋਂ :',
index a310be8..780fc59 100644 (file)
@@ -40,6 +40,7 @@
  * @author Odder
  * @author Odie2
  * @author Olgak85
+ * @author Peter Bowman
  * @author Przemub
  * @author Reedy
  * @author Remedios44
@@ -439,7 +440,7 @@ $messages = array(
 'subcategories' => 'Podkategorie',
 'category-media-header' => 'Pliki w kategorii „$1”',
 'category-empty' => "''Obecnie w tej kategorii brak stron oraz plików.''",
-'hidden-categories' => '{{PLURAL:$1|Ukryta kategoria|Ukryte kategorie}}',
+'hidden-categories' => '{{PLURAL:$1|Ukryta kategoria|Ukryte kategorie|Ukrytych kategorii}}',
 'hidden-category-category' => 'Ukryte kategorie',
 'category-subcat-count' => '{{PLURAL:$2|Ta kategoria ma tylko jedną podkategorię.|Poniżej wyświetlono $1 spośród wszystkich $2 podkategorii tej kategorii.}}',
 'category-subcat-count-limited' => 'Ta kategoria ma {{PLURAL:$1|1 podkategorię|$1 podkategorie|$1 podkategorii}}.',
@@ -1197,6 +1198,9 @@ Argument ten będzie pominięty.',
 'cantcreateaccounttitle' => 'Nie można utworzyć konta',
 'cantcreateaccount-text' => "Tworzenie konta z tego adresu IP ('''$1''') zostało zablokowane przez [[User:$3|$3]].
 
+Podany przez $3 powód to ''$2''",
+'cantcreateaccount-range-text' => "Tworzenie konta z adresów IP w zakresie '''$1''', który zawiera i twój adres IP ('''$4'''), zostało zablokowane przez [[User:$3|$3]].
+
 Podany przez $3 powód to ''$2''",
 
 # History pages
@@ -1728,12 +1732,14 @@ Jeśli zdecydujesz się je podać, zostaną użyte, by udokumentować Twoje auto
 'recentchanges-label-bot' => 'Ta edycja została wykonana przez bota',
 'recentchanges-label-unpatrolled' => 'Ta edycja nie została jeszcze sprawdzona',
 'recentchanges-label-plusminus' => 'Zmieniony rozmiar strony (liczba bajtów)',
+'recentchanges-legend-heading' => "'''Legenda:'''",
 'recentchanges-legend-newpage' => '(zobacz też [[Special:NewPages|listę nowych stron]])',
+'recentchanges-legend-plusminus' => "(''±123'')",
 'rcnotefrom' => "Poniżej pokazano zmiany wykonane po '''$2''' (nie więcej niż '''$1''' pozycji).",
 'rclistfrom' => 'Pokaż nowe zmiany od $1',
 'rcshowhideminor' => '$1 drobne zmiany',
 'rcshowhidebots' => '$1 boty',
-'rcshowhideliu' => '$1 zalogowanych',
+'rcshowhideliu' => '$1 zarejestrowanych',
 'rcshowhideanons' => '$1 anonimowych',
 'rcshowhidepatr' => '$1 sprawdzone',
 'rcshowhidemine' => '$1 moje edycje',
@@ -3868,6 +3874,7 @@ Czy na pewno chcesz ją ponownie utworzyć?",
 
 # Language selector for translatable SVGs
 'img-lang-default' => '(język domyślny)',
+'img-lang-info' => 'Wyświetl tę ilustrację w $1. $2',
 'img-lang-go' => 'Dalej',
 
 # Table pager
@@ -4010,13 +4017,14 @@ Powinieneś otrzymać [{{SERVER}}{{SCRIPTPATH}}/COPYING kopię licencji GNU Gene
 'version-entrypoints-header-url' => 'URL',
 
 # Special:Redirect
-'redirect' => 'Przekierowanie według pliku, użytkownika albo identyfikatora wersji',
+'redirect' => 'Przekierowanie według pliku, użytkownika, strony lub identyfikatora wersji',
 'redirect-legend' => 'Przekieruj do pliku lub strony',
-'redirect-summary' => 'Ta strona specjalna przekierowuje do: pliku (o podanej nazwie), do strony (o podanym numerze wersji) 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) 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-submit' => 'Przejdź',
 'redirect-lookup' => 'Wyszukaj:',
 'redirect-value' => 'Wartość:',
 'redirect-user' => 'ID użytkownika',
+'redirect-page' => 'Identyfikator strony',
 'redirect-revision' => 'Wersja strony',
 'redirect-file' => 'Nazwa pliku',
 'redirect-not-exists' => 'Nie znaleziono wartości',
@@ -4259,10 +4267,12 @@ W zasadzie rozwijane jest prawie wszystko w podwójnych nawiasach klamrowych.',
 'expand_templates_input' => 'Tekst wejściowy',
 'expand_templates_output' => 'Rezultat',
 'expand_templates_xml_output' => 'wynik w formacie XML',
+'expand_templates_html_output' => 'Wyświetlanie surowego HTML',
 'expand_templates_ok' => 'OK',
 'expand_templates_remove_comments' => 'Usuń komentarze',
 'expand_templates_remove_nowiki' => 'Ukrywaj w wyniku znaczniki <nowiki>',
 'expand_templates_generate_xml' => 'Pokaż drzewo analizatora składni w formacie XML',
+'expand_templates_generate_rawhtml' => 'Pokaż surowy HTML',
 'expand_templates_preview' => 'Podgląd',
 
 );
index a30111d..ad9fb20 100644 (file)
@@ -912,6 +912,9 @@ Costi paràmeter a son stàit ignorà.",
 'cantcreateaccount-text' => "La cression ëd cont neuv a parte da st'adrëssa IP-sì ('''$1''') a l'é stàita blocà da [[User:$3|$3]].
 
 La rason butà da $3 për ël blocagi a l'é stàita: ''$2''",
+'cantcreateaccount-range-text' => "La creassion ëd cont da l'adrëssa IP ant l'antërval '''$1''', ch'a comprend soa adrëssa IP ('''$4'''), a l'é stàita blocà da [[User:$3|$3]].
+
+La rason dàita da $3 a l'é ''$2''",
 
 # History pages
 'viewpagelogs' => 'Smon ij registr dë sta pàgina-sì',
@@ -1445,6 +1448,7 @@ Costa anformassion a sarà pùblica.",
 'recentchanges-label-bot' => "Sa modìfica a l'é stàita fàita da un trigomiro",
 'recentchanges-label-unpatrolled' => "Sta modìfica-sì a l'é pa ancó stàita verificà",
 'recentchanges-label-plusminus' => "La taja dla pàgina a l'é cangià d'un nùmer ëd bytes",
+'recentchanges-legend-heading' => "'''Legend:'''",
 'recentchanges-legend-newpage' => '(vëdde ëdcò [[Special:NewPages|lista dle pàgine neuve]])',
 'recentchanges-legend-plusminus' => "(''±123'')",
 'rcnotefrom' => ' Ambelessì sota a-i é la lista dle modìfiche da <b>$2</b> (fin-a a <b>$1</b>).',
@@ -2230,6 +2234,7 @@ Lë scancelassion ëd pàgine parèj a l'é stàita limità për evité ch'as fa
 'delete-warning-toobig' => "Sta pàgina-sì a l'ha na stòria motobin longa, bele pì che $1 {{PLURAL:$1|revision|revision}}.
 A scancelela as peul fesse darmagi a j'operassion dla base ëd dat ëd {{SITENAME}};
 ch'a daga da ment a lòn ch'a fa.",
+'deleting-backlinks-warning' => "'''Avis:''' D'àutre pàgine a l'han na liura a la pàgina che chiel a veul ëscancelé.",
 
 # Rollback
 'rollback' => 'Gavé via le modìfiche',
@@ -3020,6 +3025,7 @@ An fasend-lo marcé ansima a sò ordinator chiel a podrìa porteje ëd dann a s
 'just-now' => 'pròpi adess',
 
 # Human-readable timestamps
+'hours-ago' => '$1 {{PLURAL:$1|ora|ore}} fa',
 'minutes-ago' => '$1 {{PLURAL:$1|minuta|minute}} fa',
 'seconds-ago' => '$1 {{PLURAL:$1second}} fa',
 'monday-at' => 'Lùn-es a $1',
@@ -3562,7 +3568,7 @@ Për piasì, che an conferma che da bon a veul torna creélo.",
 
 # Language selector for translatable SVGs
 'img-lang-default' => '(lenga predefinìa)',
-'img-lang-info' => 'Rende costa plancia an $1 $2.',
+'img-lang-info' => 'Rende costa plancia an $1. $2',
 'img-lang-go' => 'Andé',
 
 # Table pager
@@ -3682,13 +3688,14 @@ A dovrìa avèj arseivù [{{SERVER}}{{SCRIPTPATH}}/COPYING na còpia dla Licensa
 'version-entrypoints-articlepath' => '[https://www.mediawiki.org/wiki/Manual:$wgArticlePath Senté d\'artìcol]',
 
 # Special:Redirect
-'redirect' => 'Ridirigiù da archivi, utent o ID ëd revision',
+'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àita n'ID a la revision) 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]], or [[{{#Special:Redirect}}/user/101]].",
+'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:',
 'redirect-value' => 'Valor:',
 'redirect-user' => "ID dl'utent",
+'redirect-page' => 'Identificativ ëd la pàgina',
 'redirect-revision' => 'Revision ëd la pàgina',
 'redirect-file' => "Nòm ëd l'archivi",
 'redirect-not-exists' => 'Valor nen trovà',
@@ -3931,10 +3938,12 @@ An efet, a espand praticament tut lòn ch'a-i é antrames dle grafe dobie.",
 'expand_templates_input' => 'Test da analisé:',
 'expand_templates_output' => 'Arzultà',
 'expand_templates_xml_output' => 'Output an XML',
+'expand_templates_html_output' => 'Surtìa an HTML sempi',
 'expand_templates_ok' => 'Bin parèj',
 'expand_templates_remove_comments' => 'Gava via ij coment',
 'expand_templates_remove_nowiki' => "Gava ij tag <nowiki> ant l'arzultà",
 'expand_templates_generate_xml' => "Mosta l'erbo ëd parse XML",
+'expand_templates_generate_rawhtml' => "Smon-e l'HTML sempi",
 'expand_templates_preview' => 'Preuva',
 
 );
index c4c3a57..29fd728 100644 (file)
@@ -484,6 +484,7 @@ $1',
 # General errors
 'error' => 'تېروتنه',
 'databaseerror' => 'د ډاټابېز تېروتنه',
+'databaseerror-error' => 'تېروتنه: $1',
 'laggedslavemode' => "'''گواښنه:''' په دې مخ کې کېدای شي تازه اوسمهالېدنې نه وي.",
 'readonly' => 'توکبنسټ تړل شوی',
 'enterlockreason' => 'د بنديز يو سبب وليکۍ، او همداراز د بنديز د ليرې کېدلو يوه اټکليزه نېټه هم څرگنده کړۍ',
@@ -583,7 +584,8 @@ $1',
 'gotaccount' => 'آيا وار دمخې يو گڼون لری؟ $1.',
 'gotaccountlink' => 'ننوتل',
 'userlogin-resetlink' => 'د ننوتلو مالومات مو هېر شوي؟',
-'userlogin-resetpassword-link' => 'پټنوم مو بياپرځايول',
+'userlogin-resetpassword-link' => 'پټنوم مو هېر شوی؟',
+'userlogin-createanother' => 'بل گڼون جوړول',
 'createacct-join' => 'خپل مالومات لاندې ورکړۍ',
 'createacct-emailrequired' => 'برېښليک پته',
 'createacct-emailoptional' => 'برېښليک پته (اختياري)',
@@ -605,7 +607,7 @@ $1',
 'badretype' => 'دا پټنوم چې تاسې ليکلی د مخکني پټنوم سره ورته نه دی.',
 'userexists' => 'کوم کارن نوم چې تاسې ورکړی هغه بل چا کارولی.
 لطفاً يو بل نوم وټاکۍ.',
-'loginerror' => 'د Ù\86Ù\86Ù\88تÙ\86Û\90 ستونزه',
+'loginerror' => 'د Ù\86Ù\86Ù\88تÙ\84Ù\88 ستونزه',
 'createacct-error' => 'د گڼون جوړېدنې ستونزه',
 'createaccounterror' => 'گڼون مو جوړ نه شو: $1',
 'nocookiesnew' => 'ستاسې گڼون جوړ شو، خو تاسې لا غونډال ته نه ياست ورننوتلي.
@@ -629,7 +631,7 @@ $1',
 'passwordtooshort' => 'بايد چې پټنوم مو لږ تر لږه {{PLURAL:$1|1 توری|$1 توري}} وي.',
 'password-name-match' => 'ستاسې پټنوم بايد ستاسې د کارن-نوم سره توپير ولري.',
 'password-login-forbidden' => 'د دې کارن-نوم او پټنوم په کارېدنې بنديز دی.',
-'mailmypassword' => 'Ù\86Ù\88Û\8c Ù¾Ù¼Ù\86Ù\88Ù\85 Ø¨Ø±Û\90Ú\9aÙ\84Ù\8aÚ© Ú©ول',
+'mailmypassword' => 'پټÙ\86Ù\88Ù\85 Ø¨Ù\8aاپرÚ\81اÙ\8aول',
 'passwordremindertitle' => 'د {{SITENAME}} لپاره نوی لنډمهاله پټنوم',
 'passwordremindertext' => 'يو چا (کېدای شي چې تاسې پخپله، د $1 IP پتې نه)
 د {{SITENAME}} ($4) وېبځي لپاره د يوه نوي پټنوم د ورلېږلو غوښتنه کړې.
@@ -643,8 +645,8 @@ $1',
 'passwordsent' => 'د "$1" لپاره يو نوی پټنوم د اړونده کارن برېښليک پتې ته ولېږل شو.
 لطفاً کله چې پټنوم مو ترلاسه کړ نو بيا غونډال ته ننوځۍ.',
 'blocked-mailpassword' => 'ستاسې په IP پتې بنديز لگېدلی او تاسې نه شی کولای چې ليکنې وکړی، په همدې توگه تاسې نه شی کولای چې د پټنوم د پرځای کولو کړنې وکاروی دا ددې لپاره چې د وراني مخنيوی وشي.',
-'eauthentsent' => 'ستاسې ورکړ شوې برېښليک پتې ته مو يو تاييدي برېښليک درولېږه.
-تر دې دمخه چې ستاسې گڼون ته کوم بل برېښليک درولېږو، پکار ده چې تاسې په برېښليک کې درلېږل شوې لارښوونې پلي کړی او ددې پخلی وکړی چې همدا گڼون په رښتيا ستاسې خپل دی.',
+'eauthentsent' => 'ستاسې برېښليک پتې ته مو يو تاييدي برېښليک درولېږه.
+تر دې دمخه چې ستاسې گڼون ته کوم بل برېښليک درولېږو، بايد تاسې په برېښليک کې درلېږل شوې لارښوونې پلي کړی او د دې پخلی وکړی چې همدا گڼون په رښتيا ستاسې خپل دی.',
 'mailerror' => 'د برېښليک د لېږلو ستونزه: $1',
 'acct_creation_throttle_hit' => 'د همدې ويکي کارنانو په وروستيو ورځو کې ستاسې د IP پتې په کارولو سره {{PLURAL:$1|1 گڼون|$1 گڼونونه}} جوړ کړي، چې دا په همدې مودې کې د گڼونونو د جوړولو تر ټولو ډېر شمېر دی چې اجازه يې ورکړ شوې.
 نو په همدې خاطر د اوس لپاره د همدې IP پتې کارنان نه شي کولای چې نور گڼونونه جوړ کړي.',
@@ -821,7 +823,7 @@ $1',
 'creating' => '$1 جوړېدنې کې دی',
 'editingsection' => '$1 (برخه) په سمېدنې کې دی',
 'editingcomment' => 'د $1 سمون (نوې برخه)',
-'editconflict' => 'په سمادولو کې خنډ: $1',
+'editconflict' => 'په سمولو کې خنډ: $1',
 'yourtext' => 'ستاسې متن',
 'storedversion' => 'زېرمه شوې مخکتنه',
 'yourdiff' => 'توپيرونه',
@@ -1091,7 +1093,7 @@ $1',
 'prefs-registration' => 'د نومليکنې وخت:',
 'yourrealname' => 'اصلي نوم:',
 'yourlanguage' => 'ژبه:',
-'yournick' => 'کورنی نوم:',
+'yournick' => 'نوی لاسليک:',
 'badsiglength' => 'ستاسو لاسليک ډېر اوږد دی.
 بايد چې لاسليک مو له $1 {{PLURAL:$1|توري|تورو}} نه لږ وي.',
 'yourgender' => 'څنگه غواړۍ ځان څرگند کړۍ؟',
@@ -1116,7 +1118,7 @@ $1',
 'prefs-advancedrendering' => 'پرمختللې خوښنې',
 'prefs-advancedsearchoptions' => 'پرمختللې خوښنې',
 'prefs-advancedwatchlist' => 'پرمختللې خوښنې',
-'prefs-displayrc' => 'د Ú\9aکارÛ\90دÙ\86Û\90 خوښنې',
+'prefs-displayrc' => 'د Ú\9aکارÛ\90دÙ\88 خوښنې',
 'prefs-displaysearchoptions' => 'د ښکارېدنې خوښنې',
 'prefs-displaywatchlist' => 'د ښکارېدنې خوښنې',
 'prefs-diffs' => 'توپيرونه',
@@ -1128,7 +1130,7 @@ $1',
 # User rights
 'userrights' => 'د کارن رښتو سمبالښت',
 'userrights-lookup-user' => 'کارن ډلې سمبالول',
-'userrights-user-editname' => 'يو کارن نوم وليکۍ:',
+'userrights-user-editname' => 'يو کارن نوم ورکړئ:',
 'editusergroup' => 'کارن ډلې سمول',
 'editinguser' => "د '''[[کارن:$1|$1]]''' کارن رښتې بدلول $2",
 'userrights-editusergroup' => 'کارن ډلې سمول',
@@ -1189,11 +1191,14 @@ $1',
 'right-block' => 'پر نورو کارنانو د سمون د آسانتياوؤ بنديز لگول',
 'right-blockemail' => 'پر يوه کارن د برېښليک لېږلو بنديز لگول',
 'right-hideuser' => 'پر يوه کارن-نوم بنديز لگول او له خلکو نه يې پټول',
-'right-protect' => 'د ژغورنې کچه بدلول او ژغورلي مخونه سمول',
+'right-protect' => 'د Ú\98غÙ\88رÙ\86Û\90 Ú©Ú\86Ù\87 Ø¨Ø¯Ù\84Ù\88Ù\84 Ø§Ù\88 Ú\81Ù\88Ú\93اÙ\88بÛ\90زÙ\87 Ú\98غÙ\88رÙ\84Ù\8a Ù\85Ø®Ù\88Ù\86Ù\87 Ø³Ù\85Ù\88Ù\84',
 'right-editinterface' => 'د کارن ليدنمخ سمول',
 'right-editusercssjs' => 'د نورو کارنانو د CSS او JS (جاوا سکرېپټ) دوتنې سمول',
 'right-editusercss' => 'د نورو کارنانو د CSS دوتنې سمول',
 'right-edituserjs' => 'د نورو کارنانو د JS (جاوا سکرېپټ) دوتنې سمول',
+'right-viewmywatchlist' => 'خپل کتنلړ کتل',
+'right-editmyprivateinfo' => 'خپل شخصي مالومات سمول (بېلگه. برېښليک پته، آرنوم)',
+'right-editmyoptions' => 'خپل غوره توبونه سمول',
 'right-unwatchedpages' => 'د ناکتلو مخونو يو لړليک کتل',
 'right-userrights' => 'د کارن ټولې رښتې سمول',
 'right-userrights-interwiki' => 'په نورو ويکي گانو د نورو کارنانو  کارن-رښتې سمول',
@@ -1233,9 +1238,12 @@ $1',
 'action-userrights-interwiki' => 'په نورو ويکي گانو د کارنانو رښتې سمول',
 'action-siteadmin' => 'توکبنسټ کولپول يا نه کولپول',
 'action-sendemail' => 'برېښليکونه لېږل',
+'action-editmyprivateinfo' => 'خپل شخصي مالومات سمول',
 
 # Recent changes
 'nchanges' => '$1 {{PLURAL:$1|بدلون|بدلونونه}}',
+'enhancedrc-since-last-visit' => '$1 {{PLURAL:$1|له وروستنۍ کتنې راپدېخوا}}',
+'enhancedrc-history' => 'پېښليک',
 'recentchanges' => 'وروستي بدلونونه',
 'recentchanges-legend' => 'د ورستي بدلونو خوښنې',
 'recentchanges-summary' => 'په دې مخ د ويکي ترټولو تازه وروستي بدلونونه وڅارۍ.',
@@ -1250,7 +1258,7 @@ $1',
 'rclistfrom' => 'هغه نوي بدلونونه ښکاره کول چې له $1 نه پيلېږي',
 'rcshowhideminor' => 'وړې سمونې $1',
 'rcshowhidebots' => 'روباټ $1',
-'rcshowhideliu' => 'غÙ\88Ù\86Ú\89اÙ\84 Ú©Û\90 Ù\86Ù\86Ù\88تي کارنان $1',
+'rcshowhideliu' => 'ثبت Ø´Ù\88ي کارنان $1',
 'rcshowhideanons' => 'بې نومه کارنان $1',
 'rcshowhidepatr' => '$1 څارلې سمونې',
 'rcshowhidemine' => 'زما سمونې $1',
@@ -1386,7 +1394,7 @@ $1',
 
 # Special:ListFiles
 'listfiles-summary' => 'همدا ځانگړی مخ ټولې پورته شوې دوتنې ښکاره کوي.',
-'listfiles_search_for' => 'د Ø§Ù\86Ú\81Ù\88ر Ø¯ Ù\86Ù\88Ù\85 Ù\84Ù¼Ù\88Ù\86:',
+'listfiles_search_for' => 'د Ø±Ø³Ù\86Û\8d Ù\86Ù\88Ù\85 Ù¾Ù\84Ù¼Ù\86Ù\87:',
 'imgfile' => 'دوتنه',
 'listfiles' => 'د دوتنو لړليک',
 'listfiles_thumb' => 'بټنوک',
@@ -1396,6 +1404,7 @@ $1',
 'listfiles_size' => 'کچه (بايټونه)',
 'listfiles_description' => 'څرگندونه',
 'listfiles_count' => 'بڼې',
+'listfiles-latestversion' => 'اوسنۍ بڼه',
 'listfiles-latestversion-yes' => 'هو',
 'listfiles-latestversion-no' => 'نه',
 
@@ -1469,6 +1478,7 @@ $1',
 'randompage-nopages' => 'په لانديني {{PLURAL:$2|نوم-تشيال|نوم-تشيالونو}} کې هېڅ کوم مخ نشته: $1.',
 
 # Random page in category
+'randomincategory' => 'په وېشنيزه کې ناټاکلی مخ',
 'randomincategory-selectcategory' => 'يو ناټاکلی مخ له وېشنيزې موندل: $1 $2.',
 'randomincategory-selectcategory-submit' => 'ورځه',
 
@@ -1495,6 +1505,9 @@ $1',
 'statistics-users-active-desc' => 'هغه کارنان چې په {{PLURAL:$1|وروستۍ ورځ|وروستيو $1 ورځو}} کې فعاله ونډه لرلې',
 'statistics-mostpopular' => 'ډېر کتل شوي مخونه',
 
+'pageswithprop' => 'د مخ ځانتياو څخه برخمن مخونه',
+'pageswithprop-legend' => 'د مخ ځانتياو څخه برخمن مخونه',
+'pageswithprop-prop' => 'د ځانتيا نوم:',
 'pageswithprop-submit' => 'ورځه',
 
 'doubleredirects' => 'دوه ځلي ورگرځېدنې',
@@ -1559,9 +1572,10 @@ $1',
 'newpages-username' => 'کارن-نوم:',
 'ancientpages' => 'تر ټولو زاړه مخونه',
 'move' => 'لېږدول',
-'movethispage' => 'دا Ù\85Ø® Ù\88Ù\84Û\90Ú\96دÙ\88Ù\87',
+'movethispage' => 'دا Ù\85Ø® Ù\84Û\90Ú\96دÙ\88Ù\84',
 'unusedimagestext' => 'دا لاندينۍ دوتنې په هېڅ کوم مخ کې نه دي ټومبېدلي. لطفاً په پام کې وساتۍ چې نور وېبځايونه به د دغو دوتنو له يو دوتنې سره يو راسن يو آر ال (URL) ولري او لا تر اوسه به دوتنه د فعالې کارېدنې سره سره دلته پرته وي.',
 'notargettitle' => 'بې موخې',
+'nopagetitle' => 'داسې کوم مخ نشته',
 'pager-newer-n' => '{{PLURAL:$1|نوی 1|نوي $1}}',
 'pager-older-n' => '{{PLURAL:$1|زوړ 1|زاړه $1}}',
 'suppress' => 'څارن',
@@ -1651,7 +1665,7 @@ $1',
 'listgrouprights-removegroup-self-all' => 'خپل گڼون نه ټولې ډلې ليري کول',
 
 # Email user
-'mailnologin' => 'هېڅ کومه لېږل شوې پته نشته',
+'mailnologin' => 'د لېږلو پته نشته',
 'emailuser' => 'کارن ته برېښليک لېږل',
 'emailuser-title-target' => 'دې {{GENDER:$1|کارن}} ته برېښليک لېږل',
 'emailuser-title-notarget' => 'کارن ته برېښليک لېږل',
@@ -1672,7 +1686,7 @@ $1',
 'emailmessage' => 'پيغام:',
 'emailsend' => 'لېږل',
 'emailccme' => 'زما د پيغام يوه بېلگه دې ماته هم برېښليک شي.',
-'emailccsubject' => '$1 ته ستاسو د پيغام لمېسه: $2',
+'emailccsubject' => '$1 ته ستاسې د پيغام لمېسه: $2',
 'emailsent' => 'برېښليک مو ولېږل شو',
 'emailsenttext' => 'ستاسې برېښليکي پيغام ولېږل شو.',
 'emailuserfooter' => 'دا برېښليک د $1 لخوا $2 ته د {{SITENAME}} په وېبځي کې د "کارن ته برېښليک لېږل" د کړنې په مرسته لېږل شوی.',
@@ -1701,7 +1715,7 @@ $1',
 'notanarticle' => 'يو منځپانګيز مخ نه دی',
 'watchlist-details' => 'ستاسې کتنلړ کې {{PLURAL:$1|$1 مخ دی|$1 مخونه دي}}، د خبرو اترو مخونه مو پکې نه دي شمېرلي.',
 'wlheader-enotif' => 'برېښليک خبرونه چارنه شوې.',
-'wlheader-showupdated' => "هغه مخونه چې وروستی ځل ستاسو د کتلو نه وروسته بدلون موندلی په '''روڼ''' ليک نښه شوي.",
+'wlheader-showupdated' => "هغه مخونه چې ستاسې د کتلو نه وروسته بدلون موندلی په '''روڼ''' ليک په نښه شوي.",
 'watchlistcontains' => 'ستاسې کتنلړ $1 {{PLURAL:$1|مخ|مخونه}} لري.',
 'iteminvalidname' => "د '$1' توکي سره ستونزه، ناسم نوم ...",
 'wlnote' => "دلته لاندې {{PLURAL:$1|وروستی بدلون دی|وروستي '''$1''' بدلونونه دي}} چې په {{PLURAL:$2|تېر ساعت|تېرو '''$2''' ساعتونو}} کې تر $3 نېټې او $4 بجو پېښ شوي.",
@@ -1797,7 +1811,7 @@ $UNWATCHURL  نه ليدنه وکړۍ
 'movedarticleprotection' => 'د ژغورنې امستنې له "[[$2]]" څخه "[[$1]]" ته ولېږدېدې',
 'protect-title' => 'د "$1" لپاره د ژغورنې کچه بدلول',
 'prot_1movedto2' => '[[$1]]، [[$2]] ته ولېږدېده',
-'protect-legend' => 'د ژغورلو پخلی کول',
+'protect-legend' => 'ژغورنه تاييدول',
 'protectcomment' => 'سبب:',
 'protectexpiry' => 'د پای نېټه:',
 'protect_expiry_invalid' => 'د پای وخت ناسم دی.',
@@ -1861,7 +1875,7 @@ $UNWATCHURL  نه ليدنه وکړۍ
 'undeletedfiles' => '{{PLURAL:$1|1 دوتنه بيازېرمه شوه|$1 دوتنې بيازېرمه شوې}}',
 'undelete-header' => 'د وروستيو ړنگو شوو مخونو لپاره [[Special:Log/delete|د ړنگولو يادښت]] وگورۍ.',
 'undelete-search-box' => 'ړنگ شوي مخونه لټول',
-'undelete-search-prefix' => 'Ù\87غÙ\87 Ù\85Ø®Ù\88Ù\86Ù\87 Ú\9aکارÙ\87 Ú©Ú\93Ù\87 Ú\86Û\90 Ù¾Û\90لېږي په:',
+'undelete-search-prefix' => 'Ù\87غÙ\87 Ù\85Ø®Ù\88Ù\86Ù\87 Ú\86Û\90 Ù¾Ù\8aلېږي په:',
 'undelete-search-submit' => 'پلټل',
 'undelete-show-file-submit' => 'هو',
 
@@ -1875,7 +1889,7 @@ $UNWATCHURL  نه ليدنه وکړۍ
 'contributions' => '{{GENDER:$1|کارن}} ونډې',
 'contributions-title' => 'د $1 کارن ونډې',
 'mycontris' => 'ونډې',
-'contribsub2' => 'د $1 لپاره ($2)',
+'contribsub2' => 'د {{GENDER:$3|$1}} لپاره ($2)',
 'nocontribs' => 'دې شرطونو سره سم بدلونونه و نه موندل شول.',
 'uctop' => '(اوسنی)',
 'month' => 'له مياشتې د (او پخواني):',
@@ -1883,11 +1897,13 @@ $UNWATCHURL  نه ليدنه وکړۍ
 
 'sp-contributions-newbies' => 'د نوو گڼونونو ونډې ښکاره کول',
 'sp-contributions-newbies-sub' => 'د نوو گڼونونو لپاره',
+'sp-contributions-newbies-title' => 'د نويو گڼونونو لپاره د کارن ونډې',
 'sp-contributions-blocklog' => 'د بنديز يادښت',
 'sp-contributions-deleted' => 'ړنگېدلې کارن ونډې',
 'sp-contributions-uploads' => 'پورته کېدنې',
 'sp-contributions-logs' => 'يادښتونه',
 'sp-contributions-talk' => 'خبرې اترې',
+'sp-contributions-userrights' => 'د کارن رښتو سمبالښت',
 'sp-contributions-blocked-notice' => 'دم مهال په دې کارن بنديز لگېدلی.
 د بنديز يادښت تازه مالومات په لاندې توگه دي:',
 'sp-contributions-search' => 'د ونډو پلټنه',
@@ -2035,7 +2051,7 @@ $UNWATCHURL  نه ليدنه وکړۍ
 'movenotallowedfile' => 'تاسې د دوتنو د لېږدولو پرېښله نلرۍ.',
 'cant-move-user-page' => 'تاسې د کارن مخونو د لېږدولو پرېښله نلرۍ (د څېرمه مخونو نه پرته).',
 'cant-move-to-user-page' => 'تاسې د يو کارن مخ ته د يوه بل مخ د لېږدولو پرېښله نلرۍ (د يو کارن د څېرمه مخ نه پرته).',
-'newtitle' => 'Ù\8aÙ\88 Ù\86Ù\88Ù\8a Ø³Ø±Ù\84Ù\8aÚ© ØªÙ\87:',
+'newtitle' => 'نوي سرليک ته:',
 'move-watch' => 'همدا مخ کتل',
 'movepagebtn' => 'مخ لېږدول',
 'pagemovedsub' => 'لېږدول په برياليتوب سره ترسره شوه',
@@ -2098,6 +2114,7 @@ $UNWATCHURL  نه ليدنه وکړۍ
 'import-upload-filename' => 'د دوتنې نوم:',
 'import-comment' => 'تبصره:',
 'import-revision-count' => '$1 {{PLURAL:$1|بڼه|بڼې}}',
+'importnotext' => 'تش او يا بې متنه مخ',
 
 # Import log
 'importlogpage' => 'د واردولو يادښت',
@@ -2155,7 +2172,7 @@ $UNWATCHURL  نه ليدنه وکړۍ
 'tooltip-ca-nstab-image' => 'د دوتنې مخ کتل',
 'tooltip-ca-nstab-mediawiki' => 'د غونډال پيغامونه کتل',
 'tooltip-ca-nstab-template' => 'کينډۍ کتل',
-'tooltip-ca-nstab-help' => 'د لارښود مخ کتل',
+'tooltip-ca-nstab-help' => 'لارښود مخ کتل',
 'tooltip-ca-nstab-category' => 'د وېشنيزې مخ ښکاره کول',
 'tooltip-minoredit' => 'دا لکه يوه وړه سمونه په نښه کوي[alt-i]',
 'tooltip-save' => 'ستاسې بدلونونه خوندي کوي',
@@ -2163,6 +2180,8 @@ $UNWATCHURL  نه ليدنه وکړۍ
 'tooltip-diff' => 'دا هغه بدلونونه چې تاسې په متن کې ترسره کړي، ښکاره کوي. [alt-v]',
 'tooltip-compareselectedversions' => 'د همدې مخ د دوو ټاکل شويو بڼو تر مېنځ توپيرونه وگورۍ.',
 'tooltip-watch' => 'دا مخ ستاسې کتنلړ کې ورگډوي [alt-w]',
+'tooltip-watchlistedit-normal-submit' => 'سرليکونه غورځول',
+'tooltip-watchlistedit-raw-submit' => 'کتنلړ اوسمهالول',
 'tooltip-upload' => 'د پورته کولو پيل',
 'tooltip-rollback' => 'په همدې مخ کې "په شابېول" د وروستني ونډوال سمون (سمونونه) په يوه کلېک په څټ ورګرځوي.',
 'tooltip-undo' => '"ناکړ" همدا سمون پر شا گرځوي او د سمون کړکۍ د مخکتنې په بڼه پرانيزي.
@@ -2196,9 +2215,9 @@ $UNWATCHURL  نه ليدنه وکړۍ
 'pageinfo-length' => 'مخ اوږدوالی (په بايټونو)',
 'pageinfo-article-id' => 'د مخ پېژند',
 'pageinfo-language' => 'د مخ د مېنځپانگې ژبه',
-'pageinfo-robot-policy' => 'د پلټن ماشين دريځ',
-'pageinfo-robot-index' => 'Ù\84Ù\8aÚ©Ù\84Ú\93Ù\88Ú\93',
-'pageinfo-robot-noindex' => 'Ù\84Ù\8aÚ©Ù\84Ú\93Ù\88Ú\93 Ù\86Ù\87',
+'pageinfo-robot-policy' => 'ليکلړ اوډنه د روباټونو لخوا',
+'pageinfo-robot-index' => 'پرÛ\90Ú\9aÙ\84',
+'pageinfo-robot-noindex' => 'Ù\86اپرÛ\90Ú\9aÙ\84',
 'pageinfo-views' => 'د کتنو شمېر',
 'pageinfo-watchers' => 'د مخ د کتونکو شمېر',
 'pageinfo-redirects-name' => 'دې مخ ته د ورگرځونو شمېر',
@@ -2212,6 +2231,9 @@ $UNWATCHURL  نه ليدنه وکړۍ
 'pageinfo-contentpage' => 'مېنځپانگيز مخ کې شمېرل شوی',
 'pageinfo-contentpage-yes' => 'هو',
 'pageinfo-protect-cascading-yes' => 'هو',
+'pageinfo-category-info' => 'د وېشنيزې مالومات',
+'pageinfo-category-pages' => 'د مخونو شمېر',
+'pageinfo-category-subcats' => 'د څېرمه وېشنيزو شمېر',
 'pageinfo-category-files' => 'د دوتنو شمېر',
 
 # Skin names
@@ -2238,10 +2260,13 @@ $1',
 # Media information
 'thumbsize' => 'د بټنوک کچه:',
 'widthheightpage' => '$1 × $2, $3 {{PLURAL:$3|مخ|مخونه}}',
+'file-info' => 'د دوتنې کچه: $1, MIME ډول: $2',
 'file-info-size' => '$1 × $2 پېکسل, د دوتنې کچه: $3, MIME بڼه: $4',
 'file-nohires' => 'تر دې کچې لوړې بېلن نښې نشته.',
 'svg-long-desc' => 'SVG دوتنه، نومېنلي $1 × $2 پېکسل، د دوتنې کچه: $3',
-'show-big-image' => 'بشپړ بېلن نښې',
+'show-big-image' => 'آرنۍ دوتنه',
+'show-big-image-preview' => 'د همدې ليدنې کچه: $1.',
+'show-big-image-size' => '$1 × $2 پېکسل',
 'file-info-gif-frames' => '$1 {{PLURAL:$1|چوکاټ|چوکاټونه}}',
 'file-info-png-repeat' => '$1 {{PLURAL:$1|ځل|ځله}} وغږېده',
 'file-info-png-frames' => '$1 {{PLURAL:$1|چوکاټ|چوکاټونه}}',
@@ -2264,11 +2289,18 @@ $1',
 'minutes' => '{{PLURAL:$1|$1 دقيقه|$1 دقيقې}}',
 'hours' => '{{PLURAL:$1|$1 ساعت|$1 ساعتونه}}',
 'days' => '{{PLURAL:$1|$1 ورځ|$1 ورځې}}',
+'weeks' => '{{PLURAL:$1|$1 اونۍ|$1 اونۍ}}',
 'months' => '{{PLURAL:$1|$1 مياشت|$1 مياشتې}}',
 'years' => '{{PLURAL:$1|$1 کال|$1 کالونه}}',
 'ago' => '$1 دمخه',
 'just-now' => 'همدا اوس',
 
+# Human-readable timestamps
+'hours-ago' => '$1 {{PLURAL:$1|گړۍ|گړۍ}} دمخه',
+'minutes-ago' => '$1 {{PLURAL:$1|دقيقه|دقيقې}} دمخه',
+'seconds-ago' => '$1 {{PLURAL:$1|ثانيه|ثانيې}} دمخه',
+'monday-at' => 'Monday at $1',
+
 # Bad image list
 'bad_image_list' => 'بڼه يې په لاندې توگه ده:
 
@@ -2301,6 +2333,7 @@ $1',
 # Exif tags
 'exif-imagewidth' => 'سوروالی',
 'exif-imagelength' => 'لوړوالی',
+'exif-stripoffsets' => 'د انځور مالوماتځی',
 'exif-datetime' => 'د دوتنې د بدلون وخت او نېټه',
 'exif-imagedescription' => 'انځور سرليک',
 'exif-make' => 'د کامرې جوړونکی',
@@ -2358,7 +2391,7 @@ $1',
 'exif-copyrighted-true' => 'په رښتو سمبال',
 'exif-copyrighted-false' => 'د خپراوي د رښتو دريځ نه دی ټاکل شوی',
 
-'exif-unknowndate' => 'نامالومه نېټه',
+'exif-unknowndate' => 'ناڅرگنده نېټه',
 
 'exif-orientation-1' => 'نورمال',
 
@@ -2471,7 +2504,7 @@ $1',
 'monthsall' => 'ټول',
 
 # Email address confirmation
-'confirmemail' => 'د Ø¨Ø±Û\90Ú\9aÙ\84Ù\8aÚ© Ù¾ØªÛ\90 Ù¾Ø®Ù\84Û\8c Ù\88Ú©Ú\93Û\8c',
+'confirmemail' => 'برÛ\90Ú\9aÙ\84Ù\8aÚ© Ù¾ØªÙ\87 ØªØ§Ù\8aÙ\8aدÙ\88Ù\84',
 'confirmemail_noemail' => 'تاسې يوه سمه برېښليک پته نه ده ثبته کړې مهرباني وکړی [[Special:Preferences|د کارن غوره توبونه]] مو بدل کړۍ.',
 'confirmemail_send' => 'يو تاييدي کوډ لېږل',
 'confirmemail_sent' => 'تاييدي برېښليک ولېږل شو.',
@@ -2501,7 +2534,7 @@ $5
 
 # action=purge
 'confirm_purge_button' => 'ښه',
-'confirm-purge-top' => 'په رښتيا د همدې مخ حافظه سپينول غواړۍ؟',
+'confirm-purge-top' => 'آيا د همدې مخ حافظه سپينول غواړۍ؟',
 
 # action=watch/unwatch
 'confirm-watch-button' => 'ښه',
@@ -2518,6 +2551,10 @@ $5
 'imgmultigo' => 'ورځه!',
 'imgmultigoto' => 'د $1 مخ ته ورځه',
 
+# Language selector for translatable SVGs
+'img-lang-default' => '(تلواليزه ژبه)',
+'img-lang-go' => 'ورځه',
+
 # Table pager
 'ascending_abbrev' => 'ختند',
 'descending_abbrev' => 'مخښکته',
@@ -2533,7 +2570,7 @@ $5
 # Auto-summaries
 'autosumm-blank' => 'مخ تش شو',
 'autosumm-replace' => "دا مخ د '$1' پرځای راوستل",
-'autoredircomment' => '[[$1]] ته وګرځولی شو',
+'autoredircomment' => '[[$1]] ته وروگرځېده',
 'autosumm-new' => 'د "$1" تورو مخ جوړ شو',
 
 # Size units
@@ -2618,6 +2655,8 @@ $5
 'version-specialpages' => 'ځانگړي مخونه',
 'version-skins' => 'پوښۍ',
 'version-other' => 'بل',
+'version-hooks' => 'کونډۍ',
+'version-hook-name' => 'کونډۍ نوم',
 'version-version' => '(بڼه $1)',
 'version-license' => 'منښتليک',
 'version-poweredby-credits' => "دا ويکي د '''[https://www.mediawiki.org/ مېډياويکي]''' په سېک چلېږي، ټولې رښتې خوندي دي © 2001-$1 $2.",
@@ -2631,6 +2670,14 @@ $5
 'version-software-product' => 'اېبره',
 'version-software-version' => 'بڼه',
 
+# Special:Redirect
+'redirect-submit' => 'ورځه',
+'redirect-value' => 'ارزښت:',
+'redirect-user' => 'کارن پېژند',
+'redirect-page' => 'د مخ پېژند',
+'redirect-file' => 'د دوتنې نوم',
+'redirect-not-exists' => 'ارزښت و نه موندل شو',
+
 # Special:FileDuplicateSearch
 'fileduplicatesearch' => 'د دوه گونو دوتنو پلټنه',
 'fileduplicatesearch-legend' => 'د دوه گونو دوتنو پلټنه',
@@ -2643,8 +2690,7 @@ $5
 # Special:SpecialPages
 'specialpages' => 'ځانگړي مخونه',
 'specialpages-note' => '* نورماله ځانگړي مخونه.
-* <strong class="mw-specialpagerestricted">محدوده ځانگړي مخونه.</strong>
-* <span class="mw-specialpagecached">رانيولي ځانگړي مخونه (کېدای شي منسوخ شوی وي).</span>',
+* <strong class="mw-specialpagerestricted">محدوده ځانگړي مخونه.</strong>',
 'specialpages-group-maintenance' => 'د څارنې راپورونه',
 'specialpages-group-other' => 'نور ځانگړي مخونه',
 'specialpages-group-login' => 'ننوتل / گڼون جوړول',
@@ -2755,6 +2801,13 @@ $5
 'duration-centuries' => '$1 {{PLURAL:$1|پېړۍ|پېړۍ}}',
 'duration-millennia' => '$1 {{PLURAL:$1|زرمه|زرمې}}',
 
+# Limit report
+'limitreport-cputime' => 'سي پي يو وخت کارېدنه',
+'limitreport-cputime-value' => '$1 {{PLURAL:$1|ثانيه|ثانيې}}',
+'limitreport-walltime' => 'اصلي وخت کارېدنه',
+'limitreport-walltime-value' => '$1 {{PLURAL:$1|ثانيه|ثانيې}}',
+'limitreport-postexpandincludesize-value' => '$1/$2 {{PLURAL:$2|بايټ|بايټونه}}',
+
 # Special:ExpandTemplates
 'expandtemplates' => 'کينډۍ غځول',
 'expand_templates_input' => 'ځايونکی متن:',
index d63e4d9..d32d6d4 100644 (file)
@@ -330,7 +330,7 @@ $messages = array(
 'tog-numberheadings' => 'Auto-numerar cabeçalhos',
 'tog-showtoolbar' => 'Mostrar barra de edição',
 'tog-editondblclick' => 'Editar páginas quando houver um clique duplo',
-'tog-editsection' => 'Possibilitar a edição de seções com links [editar]',
+'tog-editsection' => 'Possibilitar a edição de secções com links [editar]',
 'tog-editsectiononrightclick' => 'Possibilitar a edição de seções por clique com o botão direito no título da seção',
 'tog-showtoc' => 'Mostrar índice (para páginas com mais de três seções)',
 'tog-rememberpassword' => 'Recordar os meus dados neste browser (no máximo, durante $1 {{PLURAL:$1|dia|dias}})',
@@ -602,7 +602,7 @@ Consulte a página da [[Special:Version|versão do sistema]].',
 'viewsourceold' => 'ver código-fonte',
 'editlink' => 'editar',
 'viewsourcelink' => 'ver código-fonte',
-'editsectionhint' => 'Editar seção: $1',
+'editsectionhint' => 'Editar secção: $1',
 'toc' => 'Índice',
 'showtoc' => 'mostrar',
 'hidetoc' => 'esconder',
@@ -705,14 +705,14 @@ Por enquanto, os dados aqui presentes não poderão ser atualizados.',
 'editinginterface' => "'''Aviso:''' Está a editar uma página usada para fornecer texto de interface ao software. Alterações a esta página afetarão a aparência da interface de utilizador para os outros utilizadores. Para traduções, considere utilizar a [//translatewiki.net/wiki/Main_Page?setlang=pt translatewiki.net], um projeto destinado à tradução do MediaWiki.",
 'cascadeprotected' => 'Esta página foi protegida contra edições por estar incluída {{PLURAL:$1|na página listada|nas páginas listadas}} a seguir, ({{PLURAL:$1|página essa que está protegida|páginas essas que estão protegidas}} com a opção de proteção "em cascata" ativada):
 $2',
-'namespaceprotected' => "Não possui permissão para editar páginas no espaço nominal '''$1'''.",
-'customcssprotected' => 'Não tem permissões para editar esta página de CSS porque ela contém as configurações pessoais de outro utilizador.',
-'customjsprotected' => 'Não tem permissões para editar esta página de JavaScript porque ela contém as configurações pessoais de outro utilizador.',
+'namespaceprotected' => "Não tem permissão para editar páginas no espaço nominal '''$1'''.",
+'customcssprotected' => 'Não tem permissão para editar esta página de CSS porque esta contém as configurações pessoais de outro utilizador.',
+'customjsprotected' => 'Não tem permissão para editar esta página de JavaScript porque esta contém as configurações pessoais de outro utilizador.',
 'mycustomcssprotected' => 'Não tem permissão para editar esta página de CSS.',
 'mycustomjsprotected' => 'Não tem permissão para editar esta página de JavaScript.',
-'myprivateinfoprotected' => 'Você não tem permissão para editar sua informação privada.',
-'mypreferencesprotected' => 'Você não tem permissão para editar as suas preferências.',
-'ns-specialprotected' => 'Não é possível editar páginas especiais',
+'myprivateinfoprotected' => 'Não tem permissão para editar a sua informação privada.',
+'mypreferencesprotected' => 'Não tem permissão para editar as suas preferências.',
+'ns-specialprotected' => 'Não é possível editar páginas especiais.',
 'titleprotected' => 'Este título foi protegido contra criação por [[User:$1|$1]].
 A justificação foi "\'\'$2\'\'".',
 'filereadonlyerror' => 'Não é possível modificar o ficheiro "$1" porque o repositório de ficheiros "$2" está em modo de leitura.
@@ -1025,7 +1025,7 @@ Inclua todos os detalhes acima em quaisquer contactos relacionados com este bloq
 'confirmedittext' => 'Precisa de confirmar o seu endereço de correio electrónico antes de começar a editar páginas.
 Introduza e valide o endereço através das [[Special:Preferences|preferências do utilizador]], por favor.',
 'nosuchsectiontitle' => 'Não foi possível encontrar a seção',
-'nosuchsectiontext' => 'Tentou editar uma seção que não existe.
+'nosuchsectiontext' => 'Tentou editar uma secção que não existe.
 Ela pode ter sido movida ou removida enquanto estava a ver a página.',
 'loginreqtitle' => 'Autenticação necessária',
 'loginreqlink' => 'autenticar-se',
@@ -1093,8 +1093,8 @@ Isso acontece ocasionalmente quando se usa um serviço de proxy anonimizador mal
 'edit_form_incomplete' => "'''Algumas partes do formulário de edição não chegaram ao servidor; verifique que a sua edição continua intacta e tente novamente, por favor.'''",
 'editing' => 'A editar $1',
 'creating' => 'A criar $1',
-'editingsection' => 'A editar $1 (seção)',
-'editingcomment' => 'A editar $1 (nova seção)',
+'editingsection' => 'A editar $1 (secção)',
+'editingcomment' => 'A editar $1 (nova secção)',
 'editconflict' => 'Conflito de edição: $1',
 'explainconflict' => "A página foi alterada por alguém desde que começou a editá-la.
 A caixa de texto abaixo mostra o texto existente neste momento.
@@ -1103,9 +1103,9 @@ Terá de reintegrar as suas mudanças no texto da caixa abaixo.
 '''Só''' o texto desta caixa será gravado quando clicar \"{{int:savearticle}}\".",
 'yourtext' => 'O seu texto',
 'storedversion' => 'Versão guardada',
-'nonunicodebrowser' => "'''Aviso: O seu browser não é compatível com as especificações Unicode.
-Foi ativado um sistema de edição alternativo que lhe permite editar as páginas com segurança: os caracteres não-ASCII aparecerão na caixa de edição no formato de códigos hexadecimais.'''",
-'editingold' => "'''Aviso: Está a editar uma revisão desatualizada desta página.'''
+'nonunicodebrowser' => "'''Aviso: O seu navegador não é compatível com as especificações Unicode.
+Foi activado um sistema de edição alternativo que lhe permite editar as páginas com segurança: os caracteres não-ASCII aparecerão na caixa de edição no formato de códigos hexadecimais.'''",
+'editingold' => "'''Aviso: Está a editar uma revisão desactualizada desta página.'''
 Se gravar, todas as mudanças feitas a partir desta revisão serão perdidas.",
 'yourdiff' => 'Diferenças',
 'copyrightwarning' => "Note, por favor, que todas as suas contribuições na {{SITENAME}} são consideradas publicadas nos termos da licença $2 (consulte $1 para mais detalhes).
@@ -1746,7 +1746,8 @@ Se optar por revelá-lo, ele será utilizado para atribuir-lhe crédito pelo seu
 'recentchanges-label-bot' => 'Esta edição foi feita por um robô',
 'recentchanges-label-unpatrolled' => 'Esta edição ainda não foi patrulhada',
 'recentchanges-label-plusminus' => 'Alteração no tamanho da página, em bytes',
-'recentchanges-legend-newpage' => '(ver também a [[Special:NewPages|lista de páginas novas]])',
+'recentchanges-legend-heading' => "'''Legenda:'''",
+'recentchanges-legend-newpage' => '([[Special:NewPages|lista de páginas novas]])',
 'rcnotefrom' => 'Abaixo estão as mudanças desde <b>$2</b> (mostradas até <b>$1</b>).',
 'rclistfrom' => 'Mostrar as novas mudanças a partir das $1',
 'rcshowhideminor' => '$1 edições menores',
@@ -3872,7 +3873,7 @@ Confirme que deseja realmente recriar esta página, por favor.",
 
 # Language selector for translatable SVGs
 'img-lang-default' => '(língua padrão)',
-'img-lang-info' => 'Renderizar essa imagem em $1 $2.',
+'img-lang-info' => 'Renderizar essa imagem em $1. $2',
 'img-lang-go' => 'Ir',
 
 # Table pager
@@ -3973,9 +3974,9 @@ Em conjunto com este programa deve ter recebido [{{SERVER}}{{SCRIPTPATH}}/COPYIN
 'version-entrypoints-header-url' => 'URL',
 
 # Special:Redirect
-'redirect' => 'Redirecionar pelo ID do ficheiro, utilizador ou revisão',
+'redirect' => 'Redireccionar pelo ID do ficheiro, utilizador ou revisão',
 'redirect-legend' => 'Redirecionar para um ficheiro ou página',
-'redirect-summary' => 'Esta página especial redireciona a um ficheiro (dado o nome do ficheiro), a uma página (dado um ID de revisão) ou a uma página de utilizador (dado o ID do utilizador). Utilização: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revision/328429]] ou [[{{#Special:Redirect}}/user/101]].',
+'redirect-summary' => 'Esta página especial redirecciona a um ficheiro (dado o nome do ficheiro), a uma página (dado um ID de revisão) ou a uma página de utilizador (dado o ID do utilizador). Utilização: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revision/328429]] ou [[{{#Special:Redirect}}/user/101]].',
 'redirect-submit' => 'Ir',
 'redirect-lookup' => 'Pesquisa:',
 'redirect-value' => 'Valor:',
index b1d651e..3dde622 100644 (file)
@@ -59,6 +59,7 @@
  * @author Raylton P. Sousa
  * @author Rodrigo Calanca Nishino
  * @author Rodrigo Padula
+ * @author Rodrigo codignoli
  * @author Sir Lestaty de Lioncourt
  * @author Teles
  * @author TheGabrielZaum
@@ -1738,7 +1739,9 @@ Caso decida fornecê-lo, este será utilizado para dar-lhe crédito pelo seu tra
 'recentchanges-label-bot' => 'Esta edição foi feita por um robô',
 'recentchanges-label-unpatrolled' => 'Esta edição ainda não foi patrulhada',
 'recentchanges-label-plusminus' => 'Alteração no tamanho da página, em bytes',
+'recentchanges-legend-heading' => "'''Legenda''':",
 'recentchanges-legend-newpage' => '(veja também a [[Special:NewPages|lista de páginas novas]])',
+'recentchanges-legend-plusminus' => "(''±123'')",
 'rcnotefrom' => "Seguem as alterações desde as '''$4''' de '''$3''' (limitadas a '''$1''').",
 'rclistfrom' => 'Mostrar as novas alterações a partir das $1',
 'rcshowhideminor' => '$1 edições menores',
@@ -2210,8 +2213,9 @@ Entradas <del>riscadas</del> foram resolvidas.',
 'nbytes' => '$1 {{PLURAL:$1|byte|bytes}}',
 'ncategories' => '$1 {{PLURAL:$1|categoria|categorias}}',
 'ninterwikis' => '$1 {{PLURAL:$1|interwiki|Interwikis}}',
-'nlinks' => '$1 {{PLURAL:$1|linque|linques}}',
+'nlinks' => '$1 {{PLURAL:$1|link|links}}',
 'nmembers' => '$1 {{PLURAL:$1|membro|membros}}',
+'nmemberschanged' => '$2{{PLURAL:$2|membro|membros}}',
 'nrevisions' => '$1 {{PLURAL:$1|revisão|revisões}}',
 'nviews' => '$1 {{PLURAL:$1|visita|visitas}}',
 'nimagelinks' => 'Utilizada em $1 {{PLURAL:$1|página|páginas}}',
@@ -3843,6 +3847,9 @@ Por favor, confirme que realmente deseja recriar esta página.",
 'confirm-unwatch-button' => 'OK',
 'confirm-unwatch-top' => 'Remover esta página das páginas vigiadas?',
 
+# Separators for various lists, etc.
+'quotation-marks' => '$1',
+
 # Multipage image navigation
 'imgmultipageprev' => '← página anterior',
 'imgmultipagenext' => 'próxima página →',
@@ -3975,6 +3982,7 @@ Em conjunto com este programa deve ter recebido [{{SERVER}}{{SCRIPTPATH}}/COPYIN
 
 # Special:SpecialPages
 'specialpages' => 'Páginas especiais',
+'specialpages-note-top' => 'Legenda',
 'specialpages-note' => '* Páginas especiais normais.
 * <span class="mw-specialpagerestricted">Páginas especiais restritas.</span>',
 'specialpages-group-maintenance' => 'Relatórios de manutenção',
index 9ae5a0f..dde287d 100644 (file)
  * @author PhiLiP
  * @author Piangpha
  * @author Platonides
+ * @author PleaseStand
  * @author Prima klasy4na
  * @author Prometheus.pyrphoros
  * @author Psubhashish
@@ -1479,6 +1480,7 @@ Parameters:
 Parameters:
 * $1 - (Optional) username, for GENDER support',
 'wrongpassword' => 'Used as error message when the provided password is wrong.
+This message is used in html.
 {{Identical|Please try again}}',
 'wrongpasswordempty' => 'Error message displayed when entering a blank password.
 {{Identical|Please try again}}',
@@ -1571,7 +1573,8 @@ Parameters:
 ** {{msg-mw|Duration-seconds}}
 
 This is a protection against robots trying to find the password by trying lots of them.
-The number of attempts and waiting time are configured via [[mw:Manual:$wgPasswordAttemptThrottle|$wgPasswordAttemptThrottle]].',
+The number of attempts and waiting time are configured via [[mw:Manual:$wgPasswordAttemptThrottle|$wgPasswordAttemptThrottle]].
+This message is used in html.',
 'login-abort-generic' => 'The generic unsuccessful login message is used unless otherwise specified by hook writers',
 'loginlanguagelabel' => 'Used on [[Special:UserLogin]] if $wgLoginLanguageSelector is true. Parameters:
 * $1 - a pipe-separated list built from the names that appear in the message {{msg-mw|Loginlanguagelinks}}.
@@ -1791,7 +1794,8 @@ See also:
 See also:
 * {{msg-mw|Showdiff}}
 * {{msg-mw|Accesskey-diff}}
-* {{msg-mw|Tooltip-diff}}',
+* {{msg-mw|Tooltip-diff}}
+{{Identical|Show change}}',
 'anoneditwarning' => 'Shown when editing a page anonymously.
 See also:
 * {{msg-mw|Sf autoedit anoneditwarning}}
@@ -2262,10 +2266,17 @@ See also:
 
 # Account creation failure
 'cantcreateaccounttitle' => 'Used as title of the error message {{msg-mw|Cantcreateaccount-text}}.',
-'cantcreateaccount-text' => 'Used as error message, with the title {{msg-mw|cantcreateaccounttitle}}.
+'cantcreateaccount-text' => 'Used as error message, with the title {{msg-mw|Cantcreateaccounttitle}}.
 * $1 - target IP address
-* $2 - reason or {{msg-mw|blockednoreason}}
-* $3 - username',
+* $2 - reason or {{msg-mw|Blockednoreason}}
+* $3 - username
+See also:
+* {{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}}.
+* $1 - target IP range
+* $2 - reason or {{msg-mw|Blockednoreason}}
+* $3 - username
+* $4 - current user's IP address",
 
 # History pages
 'viewpagelogs' => 'Link displayed in history of pages',
@@ -3592,6 +3603,8 @@ See also:
 'recentchanges-label-plusminus' => 'Legend item for plus/minus.
 
 Preceded by legend example {{msg-mw|Recentchanges-legend-plusminus}}.',
+'recentchanges-legend-heading' => 'Used as a heading for legend box on [[Special:RecentChanges]] and [[Special:Watchlist]].
+{{Identical|Legend}}',
 'recentchanges-legend-newpage' => 'Used as legend in [[Special:RecentChanges]]. Preceded by {{msg-mw|Recentchanges-label-newpage}}.',
 'recentchanges-legend-plusminus' => 'A plus/minus sign with a number for the legend.',
 'rcnotefrom' => 'This message is displayed at [[Special:RecentChanges]] when viewing recentchanges from some specific time.
@@ -4028,7 +4041,14 @@ This message is followed by the gallery of the duplicate files.
 Parameters:
 * $1 - number of duplicate files',
 'file-deleted-duplicate' => 'Used in [[Special:Upload]. Parameters:
-* $1 - page title of the file',
+* $1 - page title of the file
+
+See also:
+* {{msg-mw|file-deleted-duplicate-notitle}}',
+'file-deleted-duplicate-notitle' => 'Used in [[Special:Upload] when the title of the deleted duplicate is not available.
+
+See also:
+* {{msg-mw|file-deleted-duplicate}}',
 'uploadwarning' => 'Used as section header in [[Special:Upload]].',
 'uploadwarning-text' => 'Used in [[Special:Upload]].',
 'savefile' => 'When uploading a file',
@@ -4929,6 +4949,8 @@ See the following search results:
 'protectedpages' => '{{doc-special|ProtectedPages}}',
 'protectedpages-indef' => 'Option in [[Special:ProtectedPages]]',
 'protectedpages-cascade' => 'Option in [[Special:ProtectedPages]]',
+'protectedpages-noredirect' => 'Option in [[Special:ProtectedPages]].
+{{Identical|Hide redirect}}',
 'protectedpagesempty' => 'Used in [[Special:ProtectedPages]], when there are no protected pages with the specified parameters.',
 'protectedtitles' => '{{doc-special|ProtectedTitles}}',
 'protectedtitlesempty' => 'Used on [[Special:ProtectedTitles]]. This text appears if the list of protected titles is empty. See the [[mw:Project:Protected_titles|help page on MediaWiki]] for more information.',
@@ -5061,7 +5083,8 @@ See also:
 'allpagesbadtitle' => 'Used in [[Special:AllPages]], [[Special:PrefixIndex]] and [[Special:RecentChangesLinked]].',
 'allpages-bad-ns' => 'Used as error message. Parameters:
 * $1 - namespace name, other than "Main" namespace',
-'allpages-hide-redirects' => 'Label for a checkbox. If the checkbox is checked redirects will not be shown in the list. Used in [[Special:PrefixIndex]] and [[Special:Allpages]].',
+'allpages-hide-redirects' => 'Label for a checkbox. If the checkbox is checked redirects will not be shown in the list. Used in [[Special:PrefixIndex]] and [[Special:Allpages]].
+{{Identical|Hide redirect}}',
 
 # SpecialCachedPage
 'cachedspecial-viewing-cached-ttl' => 'Message notifying they are watching a cached page. $1 is a duration (ie "1 hour and 30 minutes")',
@@ -5586,6 +5609,7 @@ See also:
 * $1 - the upper limit of number of revisions
 See also:
 * {{msg-mw|Delete-toobig}}',
+'deleting-backlinks-warning' => 'A warning shown when a page that is being deleted has links to it.',
 
 # Rollback
 'rollback' => '{{Identical|Rollback}}',
@@ -6221,7 +6245,7 @@ See also:
 'block' => '{{doc-special|Block}}
 {{Identical|Block user}}',
 'unblock' => '{{doc-special|Unblock}}',
-'blockip' => 'The title of the special page [[Special:BlockIP]].
+'blockip' => 'Used as the text of a link in the sidebar toolbox. Clicking this link takes you to [[Special:Block]], with a relevant username or IP address (e.g. "Username" on [[User talk:Username]], [[Special:Contributions/Username]], etc.) already filled in.
 
 {{Identical|Block user}}',
 'blockip-legend' => 'Legend/Header for the fieldset around the input form of [[Special:Block]].
@@ -7986,7 +8010,8 @@ The label and the input box are always hidden.',
 'pageinfo-display-title' => 'The title that is displayed when the page is viewed.',
 'pageinfo-default-sort' => 'The key by which the page is sorted in categories by default.',
 'pageinfo-length' => 'The length of the page, in bytes.',
-'pageinfo-article-id' => 'The numeric identifier of the page.',
+'pageinfo-article-id' => 'The numeric identifier of the page.
+{{Identical|Page ID}}',
 'pageinfo-language' => 'Language in which the page content is written.',
 'pageinfo-content-model' => 'The model in which the page content is written.
 
@@ -8011,7 +8036,8 @@ Preceded by the label {{msg-mw|Pageinfo-robot-policy}}.',
 'pageinfo-few-watchers' => 'Message displayed when there are fewer than $wgUnwatchedPageThreshold watchers. $1 is the value of $wgUnwatchedPageThreshold.',
 'pageinfo-redirects-name' => 'Header of the row in the first table of the info action.
 
-Followed by the number of redirects to the page.
+Followed by {{msg-mw|Pageinfo-redirects-value}}.
+
 Used as link text. The link points to "{{int:Whatlinkshere-title}}" page ([[Special:WhatLinksHere]]).
 
 See example: [{{canonicalurl:Main page|action=info}} Main page?action=info]',
@@ -8020,7 +8046,8 @@ Parameters:
 * $1 - the number of redirects to the page',
 'pageinfo-subpages-name' => 'Header of the row in the first table of the info action.
 
-Followed by the number of subpages of the page.
+Followed by {{msg-mw|Pageinfo-subpages-value}}.
+
 Used as link text. The link points to the "{{int:Prefixindex}}" page ([[Special:PrefixIndex]]).
 
 See example: [{{canonicalurl:Main page|action=info}} Main page?action=info]',
@@ -9962,7 +9989,7 @@ A short description of the script path entry point. Links to the mediawiki.org d
 
 # Special:Redirect
 'redirect' => "{{doc-special|Redirect}}
-This means \"Redirect by file'''name''', user '''ID''', or revision ID\".",
+This means \"Redirect by file'''name''', user '''ID''', page '''ID''', or revision ID\".",
 'redirect-legend' => 'Legend of fieldset around input box in [[Special:Redirect]]',
 'redirect-summary' => 'Shown at top of [[Special:Redirect]]',
 'redirect-submit' => 'Button label in [[Special:Redirect]].
@@ -9971,12 +9998,15 @@ This means \"Redirect by file'''name''', user '''ID''', or revision ID\".",
 
 Followed by the select box which has the following options:
 * {{msg-mw|Redirect-user}}
+* {{msg-mw|Redirect-page}}
 * {{msg-mw|Redirect-revision}}
 * {{msg-mw|Redirect-file}}',
 'redirect-value' => 'Second field label in [[Special:Redirect]]
 {{Identical|Value}}',
 'redirect-user' => 'Description of lookup type for [[Special:Redirect]].
 {{Identical|User ID}}',
+'redirect-page' => 'Description of lookup type for [[Special:Redirect]].
+{{Identical|Page ID}}',
 'redirect-revision' => "Description of lookup type for [[Special:Redirect]].
 
 This means \"Page revision '''ID'''\".",
@@ -10031,7 +10061,7 @@ See also:
 'specialpages-group-media' => '{{doc-special-group|like=[[Special:FilePath]], [[Special:MIMESearch]] and [[Special:Upload]]}}',
 'specialpages-group-users' => '{{doc-special-group|like=[[Special:ActiveUsers]], [[Special:Contributions]] and [[Special:ListGroupRights]]}}',
 'specialpages-group-highuse' => '{{doc-special-group|like=[[Special:MostCategories]], [[Special:MostLinked]] and [[Special:MostRevisions]]}}',
-'specialpages-group-pages' => '{{doc-special-group|like=[[Special:AllPages]], [[Special:PrefixIndex]], [[Special:Categories]], 
+'specialpages-group-pages' => '{{doc-special-group|like=[[Special:AllPages]], [[Special:PrefixIndex]], [[Special:Categories]],
 [[Special:Disambiguations]], etc}}',
 'specialpages-group-pagetools' => '{{doc-special-group|like=[[Special:MovePage]], [[Special:Undelete]], [[Special:WhatLinksHere]], [[Special:Export]] etc}}',
 'specialpages-group-wiki' => '{{doc-special-group|like=[[Special:Version]], [[Special:Statistics]], [[Special:LockDB]], etc}}',
@@ -10420,6 +10450,7 @@ See also:
 'api-error-overwrite' => 'API error message that can be used for client side localisation of API errors.',
 'api-error-stashfailed' => 'API error message that can be used for client side localisation of API errors.',
 'api-error-publishfailed' => 'API error message that can be used for client side localisation of API errors.',
+'api-error-stasherror' => 'API error message that can be used for client side localisation of API errors.',
 'api-error-timeout' => 'API error message that can be used for client side localisation of API errors.',
 'api-error-unclassified' => 'API error message that can be used for client side localisation of API errors.',
 'api-error-unknown-code' => 'API error message that can be used for client side localisation of API errors.
@@ -10537,6 +10568,7 @@ For more information, see [[mw:Extension:ExpandTemplates]]',
 'expand_templates_input' => '{{Identical|Input text}}',
 'expand_templates_output' => '{{Identical|Result}}',
 'expand_templates_xml_output' => 'Used as HTML <code><nowiki><h2></nowiki></code> heading.',
+'expand_templates_html_output' => 'Used as HTML <code><nowiki><h2></nowiki></code> heading.',
 'expand_templates_ok' => '{{Identical|OK}}',
 'expand_templates_remove_comments' => 'Check box to tell [[mw:Extension:ExpandTemplates]] to not show comments in the expanded template.',
 'expand_templates_remove_nowiki' => "Option on [[Special:Expandtemplates]]
@@ -10558,6 +10590,7 @@ Ticked:
 test
 </pre>",
 'expand_templates_generate_xml' => 'Used as checkbox label.',
+'expand_templates_generate_rawhtml' => 'Used as checkbox label.',
 'expand_templates_preview' => '{{Identical|Preview}}',
 
 );
index 0c10e93..09424e7 100644 (file)
@@ -3386,7 +3386,7 @@ Conferma per plaschair che ti vuls propi crear danovamain quest artitgel.",
 
 # action=purge
 'confirm_purge_button' => 'ok',
-'confirm-purge-top' => 'Stizzar il cache da questa pagina?',
+'confirm-purge-top' => 'Svidar il cache da questa pagina?',
 'confirm-purge-bottom' => 'Svida il cache dad ina pagina e sforza da mussar la versiun actuala.',
 
 # action=watch/unwatch
index 08f90f3..588999c 100644 (file)
@@ -25,6 +25,7 @@
  * @author Silviubogan
  * @author Stelistcristi
  * @author Strainu
+ * @author TTO
  * @author Urhixidur
  * @author לערי ריינהארט
  */
@@ -300,18 +301,18 @@ $messages = array(
 'tog-underline' => 'Sublinierea legăturilor:',
 'tog-justify' => 'Aranjează justificat paragrafele',
 'tog-hideminor' => 'Ascunde modificările minore în schimbări recente',
-'tog-hidepatrolled' => 'Ascunde în schimbări recente editările patrulate',
+'tog-hidepatrolled' => 'Ascunde modificările patrulate în schimbări recente',
 'tog-newpageshidepatrolled' => 'Ascunde paginile patrulate din lista de pagini noi',
 'tog-extendwatchlist' => 'Extinde lista de articole urmărite pentru a arăta toate schimbările efectuate, nu doar pe cele mai recente',
 'tog-usenewrc' => 'Grupează modificările după pagină în cadrul schimbărilor recente și listei paginilor urmărite',
 'tog-numberheadings' => 'Numerotează automat secțiunile',
 'tog-showtoolbar' => 'Afișează bara de unelte pentru modificare',
-'tog-editondblclick' => 'Activează modificarea paginii prin dublu clic',
+'tog-editondblclick' => 'Modifică paginile prin dublu clic',
 'tog-editsection' => 'Activează modificarea secțiunilor prin legăturile [modifică]',
 'tog-editsectiononrightclick' => 'Activează modificarea secţiunilor prin clic dreapta pe titlul secțiunii',
 'tog-showtoc' => 'Arată cuprinsul (pentru paginile cu mai mult de 3 paragrafe cu titlu)',
 'tog-rememberpassword' => 'Autentificare automată de la acest navigator (expiră după $1 {{PLURAL:$1|zi|zile|de zile}})',
-'tog-watchcreations' => 'Adaugă paginile pe care le creez și fișierele pe care le încarc la lista mea de urmărire',
+'tog-watchcreations' => 'Adaugă paginile pe care le creez și fișierele pe care le încarc la lista mea de pagini urmărite',
 'tog-watchdefault' => 'Adaugă paginile și fișierele pe care le modific la lista mea de urmărire',
 'tog-watchmoves' => 'Adaugă paginile și fișierele pe care le redenumesc la lista mea de urmărire',
 'tog-watchdeletion' => 'Adaugă paginile și fișierele pe care le șterg la lista mea de urmărire',
@@ -699,7 +700,7 @@ Motivul invocat este ''$2''.",
 Administratorul care a efectuat blocarea a furnizat explicația: „$3”.',
 'invalidtitle-knownnamespace' => 'Titlu invalid cu spațiul de nume „$2” și textul „$3”',
 'invalidtitle-unknownnamespace' => 'Titlu invalid cu numărul spațiului de nume $1 necunoscut și textul „$2”',
-'exception-nologin' => 'Neautentificat{{GENDER:||ă}}.',
+'exception-nologin' => 'Neautentificat{{GENDER:||ă}}',
 'exception-nologin-text' => 'Vă rugăm să vă [[Special:Userlogin|autentificați]] pentru a accesa această pagină sau acțiune.',
 'exception-nologin-text-manual' => 'Vă rugăm să vă $1 pentru a accesa această pagină sau acțiune.',
 
@@ -1173,6 +1174,9 @@ Acsete argumente au fost omise.',
 'cantcreateaccounttitle' => 'Crearea contului nu poate fi realizată',
 'cantcreateaccount-text' => "Crearea de conturi de la această adresă IP ('''$1''') a fost blocată de [[User:$3|$3]].
 
+Motivul invocat de $3 este ''$2''",
+'cantcreateaccount-range-text' => "Crearea de conturi de la adresele IP din gama '''$1''', care o include și pe a dumneavoastră ('''$4'''), a fost blocată de [[User:$3|$3]].
+
 Motivul invocat de $3 este ''$2''",
 
 # History pages
@@ -1188,8 +1192,8 @@ Motivul invocat de $3 este ''$2''",
 'cur' => 'actuală',
 'next' => 'următoarea',
 'last' => 'prec',
-'page_first' => 'prim',
-'page_last' => 'ultim',
+'page_first' => 'prima',
+'page_last' => 'ultima',
 'histlegend' => 'Legendă: (actuală) = diferențe față de versiunea curentă,
 (prec) = diferențe față de versiunea precedentă, M = modificare minoră',
 'history-fieldset-title' => 'Răsfoire istoric',
@@ -1704,13 +1708,14 @@ Dacă decideți furnizarea sa, acesta va fi folosit pentru a vă atribui munca.'
 'recentchanges-label-bot' => 'Această modificare a fost efectuată de un robot',
 'recentchanges-label-unpatrolled' => 'Această modificare nu a fost încă verificată',
 'recentchanges-label-plusminus' => 'Dimensiunea paginii s-a modificat corespunzător acestui număr de octeți',
+'recentchanges-legend-heading' => "'''Legendă:'''",
 'recentchanges-legend-newpage' => '(vedeți și [[Special:NewPages|lista cu pagini noi]])',
 'recentchanges-legend-plusminus' => "(''±123'')",
 'rcnotefrom' => 'Dedesubt sunt modificările de la <b>$2</b> (maxim <b>$1</b> de modificări sunt afișate - schimbă numărul maxim de linii alegând altă valoare mai jos).',
 'rclistfrom' => 'Se arată modificările începând cu $1',
 'rcshowhideminor' => '$1 modificările minore',
 'rcshowhidebots' => '$1 roboții',
-'rcshowhideliu' => '$1 utilizatorii autentificați',
+'rcshowhideliu' => '$1 utilizatorii înregistrați',
 'rcshowhideanons' => '$1 utilizatorii anonimi',
 'rcshowhidepatr' => '$1 modificările patrulate',
 'rcshowhidemine' => '$1 contribuțiile mele',
@@ -2082,9 +2087,7 @@ Această pagină specială permite căutarea fișierelor în funcție de tipul M
 * Imagini animate : <code>image/gif</code>
 * Fișiere sunet : <code>audio/ogg</code>, <code>audio/x-ogg</code>
 * Fișiere video : <code>video/ogg</code>, <code>video/x-ogg</code>
-* Fișiere PDF : <code>application/pdf</code>
-
-Lista tipurilor MIME recunoscute de MediaWiki poate fi găsită la [http://svn.wikimedia.org/viewvc/mediawiki/trunk/phase3/includes/mime.types?view=markup fișiere mime.types].',
+* Fișiere PDF : <code>application/pdf</code>',
 'mimetype' => 'Tip MIME:',
 'download' => 'descarcă',
 
@@ -2207,8 +2210,9 @@ Intrările <del>tăiate</del> au fost rezolvate.',
 'deadendpages' => 'Pagini fără legături',
 'deadendpagestext' => 'Următoarele pagini nu se leagă de alte pagini din acestă wiki.',
 'protectedpages' => 'Pagini protejate',
-'protectedpages-indef' => 'Doar protecțiile pe termen nelimitat',
+'protectedpages-indef' => 'Doar protejări pe termen nelimitat',
 'protectedpages-cascade' => 'Doar protejări în cascadă',
+'protectedpages-noredirect' => 'Ascunde redirecționările',
 'protectedpagesempty' => 'Nu există pagini protejate',
 'protectedtitles' => 'Titluri protejate',
 'protectedtitlesempty' => 'Nu există titluri protejate cu acești parametri.',
@@ -2483,6 +2487,7 @@ Accesați $2 pentru o listă cu elementele recent șterse.',
 'delete-warning-toobig' => 'Această pagină are un istoric al modificărilor mult prea mare, cu mai mult de $1 {{PLURAL:$1|versiune|versiuni|de versiuni}}.
 Ștergerea sa poate afecta baza de date a sitului {{SITENAME}};
 acționați cu precauție.',
+'deleting-backlinks-warning' => "'''Atenție:''' Alte pagini se leagă de pagina pe care doriți să o ștergeți.",
 
 # Rollback
 'rollback' => 'Editări de revenire',
@@ -3812,7 +3817,7 @@ Vă rugăm să confirmați faptul că într-adevăr doriți să recreați acest
 # Language selector for translatable SVGs
 'img-lang-opt' => '$2 ($1)',
 'img-lang-default' => '(limba implicită)',
-'img-lang-info' => 'Randează această imagine în $1 $2.',
+'img-lang-info' => 'Randează această imagine în $1. $2',
 'img-lang-go' => 'Du-te',
 
 # Table pager
@@ -3911,13 +3916,14 @@ MediaWiki este distribuit în speranța că va fi folositor, dar FĂRĂ VREO GAR
 'version-entrypoints-header-url' => 'URL',
 
 # Special:Redirect
-'redirect' => 'Redirecționare după fișier, utilizator sau ID-ul versiunii',
+'redirect' => 'Redirecționare după fișier, utilizator, ID-ul paginii sau al versiunii',
 '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 o pagină de utilizator (dat fiind un ID numeric al utilizatorului). Utilizare: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revision/328429]] sau [[{{#Special:Redirect}}/user/101]].',
+'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:',
 'redirect-value' => 'Valoare:',
 'redirect-user' => 'ID utilizator',
+'redirect-page' => 'ID pagină',
 'redirect-revision' => 'Versiune de pagină',
 'redirect-file' => 'Nume de fișier',
 'redirect-not-exists' => 'Valoarea nu a fot găsită',
@@ -4156,10 +4162,12 @@ MediaWiki este distribuit în speranța că va fi folositor, dar FĂRĂ VREO GAR
 'expand_templates_input' => 'Introduceți textul aici:',
 'expand_templates_output' => 'Rezultat',
 'expand_templates_xml_output' => 'Ieșire XML',
+'expand_templates_html_output' => 'Ieșire HTML brut',
 'expand_templates_ok' => 'OK',
 'expand_templates_remove_comments' => 'Elimină comentariile',
 'expand_templates_remove_nowiki' => 'Suprimă etichetele <nowiki> în rezultat',
 'expand_templates_generate_xml' => 'Arată arborele de analiză XML',
+'expand_templates_generate_rawhtml' => 'Arată HTML brut',
 'expand_templates_preview' => 'Previzualizare',
 
 );
index df9ef8c..dbdca3d 100644 (file)
@@ -26,6 +26,7 @@
  * @author Biathlon
  * @author Bouron
  * @author Chilin
+ * @author Cinemantique
  * @author Claymore
  * @author Comp1089
  * @author Cryptocoryne
@@ -70,6 +71,7 @@
  * @author Matma Rex
  * @author MaxBioHazard
  * @author MaxSem
+ * @author Milicevic01
  * @author NBS
  * @author Nemo bis
  * @author Okras
@@ -453,7 +455,7 @@ $messages = array(
 'tog-editsection' => 'Показывать ссылку «править» для каждой секции',
 'tog-editsectiononrightclick' => 'Править секции при правом щелчке мышью на заголовке',
 'tog-showtoc' => 'Показывать оглавление (для страниц более чем с 3 заголовками)',
-'tog-rememberpassword' => 'Помнить мою учётную запись в этом браузере (не более $1 {{PLURAL:$1|дня|дней|дней}})',
+'tog-rememberpassword' => 'Помнить мою учётную запись в этом браузере (не более $1 {{PLURAL:$1|дня|дней}})',
 'tog-watchcreations' => 'Добавлять в список наблюдения созданные мной страницы и загруженные мной файлы',
 'tog-watchdefault' => 'Добавлять в список наблюдения изменённые мной страницы и описания файлов',
 'tog-watchmoves' => 'Добавлять в список наблюдения переименованные мной страницы и файлы',
@@ -560,19 +562,19 @@ $messages = array(
 'december-date' => 'Декабрь $1',
 
 # Categories related messages
-'pagecategories' => '{{PLURAL:$1|Категория|Категории}}',
+'pagecategories' => '{{PLURAL:$1|1=Категория|Категории}}',
 'category_header' => 'Страницы в категории «$1»',
 'subcategories' => 'Подкатегории',
 'category-media-header' => 'Файлы в категории «$1»',
 'category-empty' => "''Эта категория в данный момент пуста.''",
-'hidden-categories' => '{{PLURAL:$1|Скрытая категория|Скрытые категории}}',
+'hidden-categories' => '{{PLURAL:$1|1=Скрытая категория|Скрытые категории}}',
 'hidden-category-category' => 'Скрытые категории',
-'category-subcat-count' => '{{PLURAL:$2|Эта категория содержит только следующую подкатегорию.|Эта категория содержит $1 {{PLURAL:$1|подкатегорию|подкатегории}} из $2 всего.}}',
-'category-subcat-count-limited' => 'Ð\92 Ñ\8dÑ\82ой ÐºÐ°Ñ\82егоÑ\80ии {{PLURAL:$1|$1 Ð¿Ð¾Ð´ÐºÐ°Ñ\82егоÑ\80иÑ\8f|$1 Ð¿Ð¾Ð´ÐºÐ°Ñ\82егоÑ\80ии|$1 Ð¿Ð¾Ð´ÐºÐ°Ñ\82егоÑ\80ий}}.',
-'category-article-count' => '{{#ifeq:$2|1|Эта категория содержит только следующую страницу.|Эта категория содержит следующ{{PLURAL:$1|ую $1 страницу|ие $1 страницы|ие $1 страниц}} из $2.}}',
-'category-article-count-limited' => 'В этой категории {{PLURAL:$1|$1 страница|$1 страницы|$1 страниц}}.',
-'category-file-count' => '{{#ifeq:$2|1|Эта категория содержит только один файл.|Следующ{{PLURAL:$1|ий $1 файл|ие $1 файла|ие $1 файлов}} из $2 имеющ{{PLURAL:$2|его|их}}ся принадлеж{{PLURAL: ит|ат}} к этой категории.}}',
-'category-file-count-limited' => 'Ð\92 Ñ\8dÑ\82ой ÐºÐ°Ñ\82егоÑ\80ии {{PLURAL:$1|$1 Ñ\84айл|$1 Ñ\84айла|$1 Ñ\84айлов}}.',
+'category-subcat-count' => '{{PLURAL:$2|Эта категория содержит только следующую подкатегорию.|Эта категория содержит $1 {{PLURAL:$1|1=подкатегорию|подкатегории}} из $2 всего.}}',
+'category-subcat-count-limited' => 'Ð\92 Ñ\8dÑ\82ой ÐºÐ°Ñ\82егоÑ\80ии {{PLURAL:$1|$1 Ð¿Ð¾Ð´ÐºÐ°Ñ\82егоÑ\80иÑ\8f|$1 Ð¿Ð¾Ð´ÐºÐ°Ñ\82егоÑ\80ий|$1 Ð¿Ð¾Ð´ÐºÐ°Ñ\82егоÑ\80ии}}.',
+'category-article-count' => '{{PLURAL:$2|Эта категория содержит единственную страницу.|{{PLURAL:$1|Показана $1 страница|Показано $1 страниц|Показаны $1 страницы}} из $2, {{PLURAL:$2|находящейся|находящихся|находящихся}} в данной категории.}}',
+'category-article-count-limited' => 'В этой категории {{PLURAL:$1|$1 страница|$1 страниц|$1 страницы|1=только одна страница}}.',
+'category-file-count' => '{{PLURAL:$2|Эта категория содержит единственный файл.|{{PLURAL:$1|Показан $1 файл|Показано $1 файлов|Показаны $1 файла}} из $2, {{PLURAL:$2|находящегося|находящихся|находящихся}} в данной категории.}}',
+'category-file-count-limited' => 'Ð\92 Ñ\8dÑ\82ой ÐºÐ°Ñ\82егоÑ\80ии {{PLURAL:$1|$1 Ñ\84айл|$1 Ñ\84айлов|$1 Ñ\84айла|1=Ñ\82олÑ\8cко Ð¾Ð´Ð¸Ð½ Ñ\84айл}}.',
 'listingcontinuesabbrev' => '(продолжение)',
 'index-category' => 'Индексируемые страницы',
 'noindex-category' => 'Неиндексируемые страницы',
@@ -639,8 +641,8 @@ $messages = array(
 'delete' => 'Удалить',
 'deletethispage' => 'Удалить эту страницу',
 'undeletethispage' => 'Восстановить эту страницу',
-'undelete_short' => 'Восстановить $1 {{PLURAL:$1|правку|правки|правок}}',
-'viewdeleted_short' => 'Просмотр $1 {{PLURAL:$1|удалённой правки|удалённых правок|удалённых правок}}',
+'undelete_short' => 'Восстановить {{PLURAL:$1|$1 правку|$1 правок|$1 правки|1=правку}}',
+'viewdeleted_short' => 'Просмотр {{PLURAL:$1|$1 удалённой правки|$1 удалённых правок|удалённой правки}}',
 'protect' => 'Защитить',
 'protect_change' => 'изменить',
 'protectthispage' => 'Защитить эту страницу',
@@ -668,7 +670,7 @@ $messages = array(
 'redirectedfrom' => '(перенаправлено с «$1»)',
 'redirectpagesub' => 'Страница-перенаправление',
 'lastmodifiedat' => 'Последнее изменение этой страницы: $2, $1.',
-'viewcount' => 'К этой странице обращались $1 {{PLURAL:$1|раз|раза|раз}}.',
+'viewcount' => 'К этой странице обращались $1 {{PLURAL:$1|раз|раз|раза}}.',
 'protectedpage' => 'Защищённая страница',
 'jumpto' => 'Перейти к:',
 'jumptonavigation' => 'навигация',
@@ -703,7 +705,7 @@ $1',
 
 'badaccess' => 'Ошибка доступа',
 'badaccess-group0' => 'Вы не можете выполнять запрошенное действие.',
-'badaccess-groups' => 'Запрошенное действие могут выполнять только участники из {{PLURAL:$2|группы|групп}} «$1».',
+'badaccess-groups' => 'Запрошенное действие могут выполнять только участники {{PLURAL:$2|1=из группы «$1»|одной из следующих групп: $1}}',
 
 'versionrequired' => 'Требуется MediaWiki версии $1',
 'versionrequiredtext' => 'Для работы с этой страницей требуется MediaWiki версии $1. См. [[Special:Version|информацию об программном обеспечении]].',
@@ -712,10 +714,10 @@ $1',
 'pagetitle' => '$1 — {{SITENAME}}',
 'retrievedfrom' => 'Источник — «$1»',
 'youhavenewmessages' => 'Вы получили $1 ($2).',
-'youhavenewmessagesfromusers' => 'Вы получили $1 от {{PLURAL:$3|$3 участника|$3 участников}} ($2).',
+'youhavenewmessagesfromusers' => 'Вы получили $1 от $3 {{PLURAL:$3|участника|участников}} ($2).',
 'youhavenewmessagesmanyusers' => 'Вы получили $1 от множества пользователей ($2).',
-'newmessageslinkplural' => '{{PLURAL:$1|новое сообщение|999=новые сообщения}}',
-'newmessagesdifflinkplural' => '{{PLURAL:$1|последнее изменение|999=последние изменения}}',
+'newmessageslinkplural' => '{{PLURAL:$1|новое сообщение|новые сообщения}}',
+'newmessagesdifflinkplural' => '{{PLURAL:$1|последнее изменение|последние изменения}}',
 'youhavenewmessagesmulti' => 'Вы получили новые сообщения на $1',
 'editsection' => 'править',
 'editold' => 'править',
@@ -730,7 +732,7 @@ $1',
 'collapsible-expand' => 'развернуть',
 'thisisdeleted' => 'Просмотреть или восстановить $1?',
 'viewdeleted' => 'Просмотреть $1?',
-'restorelink' => '{{PLURAL:$1|$1 удалённую правку|$1 удалённые правки|$1 удалённых правок}}',
+'restorelink' => '{{PLURAL:$1|$1 удалённую правку|$1 удалённых правок|$1 удалённые правки|1=удалённую правку}}',
 'feedlinks' => 'В виде:',
 'feed-invalid' => 'Неправильный тип канала для подписки.',
 'feed-unavailable' => 'Ленты синдикации недоступны',
@@ -808,8 +810,8 @@ $1',
 'no-null-revision' => 'Не удалось создать новую нулевую правку для страницы «$1»',
 'badtitle' => 'Недопустимое название',
 'badtitletext' => 'Запрашиваемое название страницы неправильно, пусто, либо неверно указано межъязыковое или интервики название. Возможно, в названии используются недопустимые символы.',
-'perfcached' => 'Следующие данные взяты из кэша и могут не учитывать последних изменений. В кэше хранится не более $1 {{PLURAL:$1|записи|записей|записей}}.',
-'perfcachedts' => 'Следующие данные взяты из кэша, последний раз он обновлялся в $1. В кэше хранится не более $4 {{PLURAL:$4|записи|записей|записей}}.',
+'perfcached' => 'Следующие данные взяты из кэша и могут не учитывать последних изменений. В кэше хранится не более $1 {{PLURAL:$1|записи|записей}}.',
+'perfcachedts' => 'Следующие данные взяты из кэша, последний раз он обновлялся в $1. В кэше хранится не более $4 {{PLURAL:$4|записи|записей}}.',
 'querypage-no-updates' => 'Обновление этой страницы сейчас отключено.
 Представленные здесь данные не будут обновляться.',
 'viewsource' => 'Просмотр',
@@ -824,7 +826,7 @@ $1',
 'editinginterface' => "'''Внимание:''' Вы редактируете страницу, содержащую текст интерфейса программного обеспечения.
 Её изменение повлияет на внешний вид интерфейса для других пользователей этой вики.
 Чтобы добавить или изменить перевод этого сообщения, пожалуйста, используйте сайт локализации MediaWiki [//translatewiki.net/ translatewiki.net].",
-'cascadeprotected' => 'Страница защищена от изменений, поскольку она включена в {{PLURAL:$1|следующую страницу, для которой|следующие страницы, для которых}} включена каскадная защита:
+'cascadeprotected' => 'Страница защищена от изменений, поскольку она включена в {{PLURAL:$1|1=следующую страницу, для которой|следующие страницы, для которых}} включена каскадная защита:
 $2',
 'namespaceprotected' => 'У вас нет разрешения редактировать страницы в пространстве имён «$1».',
 'customcssprotected' => 'У вас нет разрешения редактировать эту CSS-страницу, так как она содержит личные настройки другого участника.',
@@ -868,7 +870,7 @@ $2',
 'yourpasswordagain' => 'Повторный набор пароля:',
 'createacct-yourpasswordagain' => 'Подтвердите пароль',
 'createacct-yourpasswordagain-ph' => 'Введите пароль еще раз',
-'remembermypassword' => 'Помнить мою учётную запись на этом компьютере (не более $1 {{PLURAL:$1|дня|дней|дней}})',
+'remembermypassword' => 'Помнить мою учётную запись на этом компьютере (не более $1 {{PLURAL:$1|дня|дней}})',
 'userlogin-remembermypassword' => 'Оставаться в системе',
 'userlogin-signwithsecure' => 'Защищённое соединение',
 'yourdomainname' => 'Ваш домен:',
@@ -911,10 +913,10 @@ $2',
 'createacct-imgcaptcha-ph' => 'Введите текст, который вы видите выше',
 'createacct-submit' => 'Создать учётную запись',
 'createacct-another-submit' => 'Создать ещё одну учётную запись',
-'createacct-benefit-heading' => '{{SITENAME}} создана такими же людьми, как вы.',
-'createacct-benefit-body1' => '{{PLURAL:$1|пÑ\80авка|пÑ\80авки|пÑ\80авок}}',
-'createacct-benefit-body2' => '{{PLURAL:$1|статья|статьи|статей}}',
-'createacct-benefit-body3' => '{{PLURAL:$1|Ñ\83Ñ\87аÑ\81Ñ\82ник|Ñ\83Ñ\87аÑ\81Ñ\82ника|Ñ\83Ñ\87аÑ\81Ñ\82ников}} за последнее время',
+'createacct-benefit-heading' => '{{SITENAME}} создают такие же люди, как вы.',
+'createacct-benefit-body1' => '{{PLURAL:$1|пÑ\80авка|пÑ\80авок|пÑ\80авки}}',
+'createacct-benefit-body2' => '{{PLURAL:$1|статья|статей|статьи}}',
+'createacct-benefit-body3' => '{{PLURAL:$1|Ñ\83Ñ\87аÑ\81Ñ\82ник|Ñ\83Ñ\87аÑ\81Ñ\82ников|Ñ\83Ñ\87аÑ\81Ñ\82ника}} за последнее время',
 'badretype' => 'Введённые вами пароли не совпадают.',
 'userexists' => 'Введённое имя участника уже используется.
 Пожалуйста, выберите другое имя.',
@@ -936,7 +938,7 @@ $2',
 'login-userblocked' => 'Этот участник заблокирован. Вход в систему не разрешён.',
 'wrongpassword' => 'Введённый вами пароль неверен. Попробуйте ещё раз.',
 'wrongpasswordempty' => 'Пожалуйста, введите непустой пароль.',
-'passwordtooshort' => 'Пароль должен состоять не менее чем из $1 {{PLURAL:$1|символа|символов|символов}}.',
+'passwordtooshort' => 'Пароль должен состоять не менее чем из $1 {{PLURAL:$1|символа|символов}}.',
 'password-name-match' => 'Введённый пароль должен отличаться от имени участника.',
 'password-login-forbidden' => 'Использование этого имени участника и пароля запрещено.',
 'mailmypassword' => 'Сбросить пароль',
@@ -945,7 +947,7 @@ $2',
 новый пароль для {{grammar:genitive|{{SITENAME}}}} ($4). Для участника $2
 создан временный пароль: $3. Если это был ваш запрос,
 вам следует представиться системе и выбрать новый пароль.
-Ваш временный пароль будет действовать в течение $5 {{PLURAL:$5|дня|дней|дней}}.
+Ваш временный пароль будет действовать в течение $5 {{PLURAL:$5|дня|дней}}.
 
 Если вы не посылали запроса на смену пароля, или если вы уже вспомнили свой пароль,
 и не желаете его менять, вы можете проигнорировать данное сообщение и
@@ -958,10 +960,10 @@ $2',
 'blocked-mailpassword' => 'Редактирование с вашего IP-адреса запрещено, поэтому заблокирована и функция восстановления пароля.',
 'eauthentsent' => 'На указанный адрес электронной почты отправлено письмо. 
 Чтоб получать письма в дальнейшем, следуйте изложенным там инструкциям для подтверждения того, что этот адрес действительно принадлежит вам.',
-'throttled-mailpassword' => 'Функция напоминания пароля уже использовалась в течение {{PLURAL:$1|последнего часа|последних $1 часов}}.
-Для предотвращения злоупотреблений, разрешено запрашивать не более одного напоминания за $1 {{PLURAL:$1|час|часа|часов}}.',
+'throttled-mailpassword' => 'Функция напоминания пароля уже использовалась в течение {{PLURAL:$1|1=последнего часа|последних $1 часов}}.
+Для предотвращения злоупотреблений, разрешено запрашивать не более одного напоминания {{PLURAL:$1|за $1 час|за $1 часов|за $1 часа|1=в час}}.',
 'mailerror' => 'Ошибка при отправке почты: $1',
-'acct_creation_throttle_hit' => 'За сутки с вашего IP-адреса {{PLURAL:$1|была создана $1 учётная запись участника|было создано $1 учётных записей участников|было создано $1 учётных записей участников}}, что является пределом для данного отрезка времени.
+'acct_creation_throttle_hit' => 'За сутки с вашего IP-адреса {{PLURAL:$1|была создана $1 учётная запись участника|было создано $1 учётных записей участников|1=уже была создана учётная запись участника}}, что является пределом для данного отрезка времени.
 Таким образом, пользователи, обладающие данным IP-адресом, в данный момент больше не могут создавать новых учётных записей.',
 'emailauthenticated' => 'Ваш адрес электронной почты подтверждён $2 в $3.',
 'emailnotauthenticated' => 'Ваш адрес электронной почты ещё не был подтверждён.
@@ -1016,7 +1018,7 @@ $2',
 # Special:PasswordReset
 'passwordreset' => 'Сброс пароля',
 'passwordreset-text-one' => 'Заполните эту форму, чтобы сбросить свой пароль.',
-'passwordreset-text-many' => '{{PLURAL:$1|Ð\97аполниÑ\82е Ð¾Ð´Ð½Ð¾ Ð¸Ð· Ð¿Ð¾Ð»ÐµÐ¹ Ð´Ð»Ñ\8f Ð¿Ð¾Ð»Ñ\83Ñ\87ениÑ\8f Ð²Ñ\80еменного Ð¿Ð°Ñ\80олÑ\8f Ð½Ð° e-mail.}}',
+'passwordreset-text-many' => '{{PLURAL:$1|Ð\97аполниÑ\82е Ð¾Ð´Ð½Ð¾ Ð¸Ð· Ð¿Ð¾Ð»ÐµÐ¹ Ð´Ð»Ñ\8f Ð¿Ð¾Ð»Ñ\83Ñ\87ениÑ\8f Ð²Ñ\80еменного Ð¿Ð°Ñ\80олÑ\8f Ð¿Ð¾ Ñ\8dлекÑ\82Ñ\80онной Ð¿Ð¾Ñ\87Ñ\82е.}}',
 'passwordreset-legend' => 'Сбросить пароль',
 'passwordreset-disabled' => 'Сбросы пароля отключены на этой вики.',
 'passwordreset-emaildisabled' => 'Функции электронной почты отключены в этой вики.',
@@ -1027,20 +1029,20 @@ $2',
 'passwordreset-email' => 'Адрес электронной почты:',
 'passwordreset-emailtitle' => 'Сведения об учётной записи {{SITENAME}}',
 'passwordreset-emailtext-ip' => 'Кто-то (возможно, вы, с IP-адреса $1) запросил сброс пароля к вашей учётной записи в проекте {{SITENAME}} ($4).
-С этим адресом электронной почты {{PLURAL:$3|связана следующая учётная запись|связаны следующие учётные записи}}:
+С этим адресом электронной почты {{PLURAL:$3|1=связана следующая учётная запись|связаны следующие учётные записи}}:
 
 $2
 
-{{PLURAL:$3|Этот временный пароль будет|Эти временные пароли будут}} действовать {{PLURAL:$5|$5 день|$5 дня|$5 дней}}.
+{{PLURAL:$3|1=Этот временный пароль будет|Эти временные пароли будут}} действовать {{PLURAL:$5|$5 день|$5 дней|$5 дня}}.
 Вы должны представиться системе и выбрать новый пароль. 
 Если вы не делали этого запроса, или вспомнили свой исходный пароль и не желаете его менять, 
 то можете проигнорировать это сообщение и продолжить использовать свой старый пароль.',
 'passwordreset-emailtext-user' => 'Участник $1 из проекта {{SITENAME}} запросил сброс пароля для вашей учётной записи в проекте {{SITENAME}} ($4).
-С этим адресом электронной почты {{PLURAL:$3|связана следующая учётная запись|связаны следующие учётные записи}}:
+С этим адресом электронной почты {{PLURAL:$3|1=связана следующая учётная запись|связаны следующие учётные записи}}:
 
 $2
 
-{{PLURAL:$3|Этот временный пароль будет|Эти временные пароли будут}} действовать {{PLURAL:$5|$5 день|$5 дня|$5 дней}}.
+{{PLURAL:$3|1=Этот временный пароль будет|Эти временные пароли будут}} действовать {{PLURAL:$5|$5 день|$5 дней|$5 дня}}.
 Вы должны представиться системе и выбрать новый пароль.
 Если вы не делали этого запроса или вспомнили свой исходный пароль и не желаете его менять, 
 то можете проигнорировать это сообщение и продолжить использовать свой старый пароль.',
@@ -1236,7 +1238,7 @@ $2
 Если вы не хотите, чтобы кто-либо изменял ваши тексты, не помещайте их сюда.<br />
 Вы также подтверждаете, что являетесь автором вносимых дополнений, или скопировали их из источника, допускающего свободное распространение и изменение своего содержимого (см. $1).
 '''НЕ РАЗМЕЩАЙТЕ БЕЗ РАЗРЕШЕНИЯ ОХРАНЯЕМЫЕ АВТОРСКИМ ПРАВОМ МАТЕРИАЛЫ!'''",
-'longpageerror' => "'''ОШИБКА: записываемый вами текст имеет размер {{PLURAL:$1|$1 килобайт|$1 килобайта|$1 килобайт}}, что больше, чем установленный предел в {{PLURAL:$2|$2 килобайт|$2 килобайта|$2 килобайт}}. Страница не может быть сохранена.'''",
+'longpageerror' => "'''ОШИБКА: записываемый вами текст имеет размер {{PLURAL:$1|$1 килобайт|$1 килобайт|$1 килобайта}}, что больше, чем установленный предел в {{PLURAL:$2|$2 килобайт|$2 килобайт|$2 килобайта}}. Страница не может быть сохранена.'''",
 'readonlywarning' => "'''Предупреждение. База данных заблокирована в связи с процедурами обслуживания, поэтому вы не можете записать ваши изменения прямо сейчас.'''
 Возможно, вам следует скопировать этот текст в текстовый файл, чтобы сохранить его на будущее.
 
@@ -1245,15 +1247,15 @@ $2
 Ниже для справки приведена последняя запись журнала:",
 'semiprotectedpagewarning' => "'''Замечание.''' Эта страница была защищена; редактировать её могут только зарегистрированные участники.
 Ниже для справки приведена последняя запись журнала:",
-'cascadeprotectedwarning' => "'''Предупреждение:''' Данную страницу могут редактировать только участники группы «Администраторы», поскольку она включена {{PLURAL:$1|в следующую страницу, для которой|в следующие страницы, для которых}} включена каскадная защита:",
+'cascadeprotectedwarning' => "'''Предупреждение:''' Данную страницу могут редактировать только участники группы «Администраторы», поскольку она включена {{PLURAL:$1|1=в следующую страницу, для которой|в следующие страницы, для которых}} включена каскадная защита:",
 'titleprotectedwarning' => "'''Предупреждение.  Это название защищено. Создать эту страницу могут только участники с [[Special:ListGroupRights|соответствующими правами]].'''
 Ниже для справки приведена последняя запись журнала:",
-'templatesused' => '{{PLURAL:$1|Шаблон, использованный|Шаблоны, использованные}} на этой странице:',
-'templatesusedpreview' => '{{PLURAL:$1|Шаблон, используемый|Шаблоны, используемые}} в предпросматриваемой странице:',
-'templatesusedsection' => '{{PLURAL:$1|Шаблон, используемый|Шаблоны, использованные}} в этом разделе:',
+'templatesused' => '{{PLURAL:$1|1=Шаблон, использованный|Шаблоны, использованные}} на этой странице:',
+'templatesusedpreview' => '{{PLURAL:$1|1=Шаблон, используемый|Шаблоны, используемые}} в предпросматриваемой странице:',
+'templatesusedsection' => '{{PLURAL:$1|1=Шаблон, используемый|Шаблоны, использованные}} в этом разделе:',
 'template-protected' => '(защищено)',
 'template-semiprotected' => '(частично защищено)',
-'hiddencategories' => 'Эта страница относится к $1 {{PLURAL:$1|скрытой категории|скрытым категориям}}:',
+'hiddencategories' => 'Эта страница относится к $1 {{PLURAL:$1|1=скрытой категории|скрытым категориям}}:',
 'edittools' => '<!-- Расположенный здесь текст будет показываться под формой редактирования и формой загрузки. -->',
 'nocreatetext' => 'На этом сайте ограничена возможность создания новых страниц.
 Вы можете вернуться назад и отредактировать существующую страницу, [[Special:UserLogin|представиться системе или создать новую учётную запись]].',
@@ -1261,8 +1263,8 @@ $2
 'sectioneditnotsupported-title' => 'Редактирование разделов не поддерживается',
 'sectioneditnotsupported-text' => 'На этой странице не поддерживается редактирование разделов',
 'permissionserrors' => 'Ошибка прав доступа',
-'permissionserrorstext' => 'У вас нет прав на выполнение этой операции по {{PLURAL:$1|следующей причине|следующим причинам}}:',
-'permissionserrorstext-withaction' => 'У вас нет прав на $2 по {{PLURAL:$1|следующей причине|следующим причинам}}:',
+'permissionserrorstext' => 'У вас нет прав на выполнение этой операции по {{PLURAL:$1|1=следующей причине|следующим причинам}}:',
+'permissionserrorstext-withaction' => 'У вас нет прав на $2 по {{PLURAL:$1|1=следующей причине|следующим причинам}}:',
 'recreate-moveddeleted-warn' => "'''Внимание. Вы пытаетесь воссоздать страницу, которая ранее удалялась.'''
 
 Проверьте, действительно ли вам нужно воссоздавать эту страницу.
@@ -1295,7 +1297,7 @@ $2
 # Parser/template warnings
 'expensive-parserfunction-warning' => "'''Внимание!''' Эта страница содержит слишком много вызовов ресурсоёмких функций.
 
-Должно быть не более $2 {{PLURAL:$2|вызова|вызовов}}, в то время как сейчас здесь $1 {{PLURAL:$1|вызов|вызова|вызовов}}.",
+Должно быть не более $2 {{PLURAL:$2|1=вызова|вызовов}}, в то время как сейчас здесь $1 {{PLURAL:$1|вызов|вызовов|вызова}}.",
 'expensive-parserfunction-category' => 'Страницы со слишком большим количеством вызовов ресурсоёмких функций',
 'post-expand-template-inclusion-warning' => 'Предупреждение: суммарный размер включаемых шаблонов слишком велик.
 Некоторые шаблоны не будут включены.',
@@ -1326,6 +1328,7 @@ $2
 'cantcreateaccount-text' => "Создание учётных записей с этого IP-адреса ('''$1''') было заблокировано {{GENDER:$3|участником|участницей|}} [[User:$3|$3]].
 
 $3 {{GENDER:$3|указал|указала}} следующую причину: ''$2''.",
+'cantcreateaccount-range-text' => 'Было запрещено создание учётных записей из диапазона IP-адресов $1, включающего ваш IP-адрес $4. Запрет наложил [[User:$3|$3]].',
 
 # History pages
 'viewpagelogs' => 'Показать журналы для этой страницы',
@@ -1348,7 +1351,7 @@ $3 {{GENDER:$3|указал|указала}} следующую причину:
 'history-show-deleted' => 'Только удалённые',
 'histfirst' => 'старейшие',
 'histlast' => 'новейшие',
-'historysize' => '($1 {{PLURAL:$1|байт|байта|байт}})',
+'historysize' => '($1 {{PLURAL:$1|байт|байт|байта}})',
 'historyempty' => '(пусто)',
 
 # Revision feed
@@ -1397,8 +1400,8 @@ $3 {{GENDER:$3|указал|указала}} следующую причину:
 'revdelete-no-file' => 'Указанный файл не существует.',
 'revdelete-show-file-confirm' => 'Вы уверены, что вы хотите просмотреть удалённую версию файла «<nowiki>$1</nowiki>» от $2, $3?',
 'revdelete-show-file-submit' => 'Да',
-'revdelete-selected' => "'''{{PLURAL:$2|Выбранная версия|Выбранные версии}} страницы [[:$1]]:'''",
-'logdelete-selected' => "'''{{PLURAL:$1|Выбранная запись|Выбранные записи}} журнала:'''",
+'revdelete-selected' => "'''{{PLURAL:$2|1=Выбранная версия|Выбранные версии}} страницы [[:$1]]:'''",
+'logdelete-selected' => "'''{{PLURAL:$1|1=Выбранная запись|Выбранные записи}} журнала:'''",
 'revdelete-text' => "'''Удалённые версии страниц и события будут показываться в истории страницы и журналах, но часть их содержания будет недоступна обычным посетителям.'''
 Администраторы проекта {{SITENAME}} будут иметь доступ к скрытому содержанию и смогут восстановить его через этот же интерфейс, за исключением случаев, когда установлено дополнительное ограничение.",
 'revdelete-confirm' => 'Пожалуйста, подтвердите, что вы действительно желаете совершить это действие, осознаёте последствия, делаете это в соответствии с [[{{MediaWiki:Policy-url}}|правилами]].',
@@ -1419,7 +1422,7 @@ $3 {{GENDER:$3|указал|указала}} следующую причину:
 'revdelete-suppress' => 'Скрывать данные также и от администраторов',
 'revdelete-unsuppress' => 'Снять ограничения с восстановленных версий',
 'revdelete-log' => 'Причина:',
-'revdelete-submit' => 'Применить к {{PLURAL:$1|выбранной версии|выбранным версиям}}',
+'revdelete-submit' => 'Применить к {{PLURAL:$1|1=выбранной версии|выбранным версиям}}',
 'revdelete-success' => "'''Видимость версии успешно изменена.'''",
 'revdelete-failure' => "'''Видимость версии не может быть изменена:'''
 $1",
@@ -1467,7 +1470,7 @@ $1",
 'mergehistory-go' => 'Показать объединяемые правки',
 'mergehistory-submit' => 'Объединить правки',
 'mergehistory-empty' => 'Не найдены правки для объединения.',
-'mergehistory-success' => '$3 {{PLURAL:$3|пÑ\80авка|пÑ\80авки|пÑ\80авок}} из [[:$1]] успешно {{PLURAL:$3|перенесена|перенесены|перенесены}} в [[:$2]].',
+'mergehistory-success' => '$3 {{PLURAL:$3|пÑ\80авка|пÑ\80авок|пÑ\80авки}} из [[:$1]] успешно {{PLURAL:$3|перенесена|перенесены|перенесены}} в [[:$2]].',
 'mergehistory-fail' => 'Не удалось произвести объединение историй страниц, пожалуйста, проверьте параметры страницы и времени.',
 'mergehistory-no-source' => 'Исходная страница «$1» не существует.',
 'mergehistory-no-destination' => 'Целевая страница «$1» не существует.',
@@ -1494,9 +1497,9 @@ $1",
 'showhideselectedversions' => 'Показать/скрыть выбранные версии',
 'editundo' => 'отменить',
 'diff-empty' => '(нет различий)',
-'diff-multi' => '({{PLURAL:$1|не показана $1 промежуточная версия|не показаны $1 промежуточные версии|не показаны $1 промежуточных версий}} {{PLURAL:$2|$2 участника|$2 участников}})',
-'diff-multi-manyusers' => '(не {{PLURAL:$1|показана $1 промежуточная версия|показаны $1 промежуточные версии|показаны $1 промежуточных версий}}, сделанные более чем $2 {{PLURAL:$2|участником|участниками}})',
-'difference-missing-revision' => '{{PLURAL:$2|$2 Ð²ÐµÑ\80Ñ\81иÑ\8f|$2 Ð²ÐµÑ\80Ñ\81ии|$2 Ð²ÐµÑ\80Ñ\81ий}} Ð´Ð»Ñ\8f Ñ\8dÑ\82ого Ñ\81Ñ\80авнениÑ\8f ($1) {{PLURAL:$2|не обнаружена|не обнаружены}}.
+'diff-multi' => '({{PLURAL:$1|не показана $1 промежуточная версия|не показаны $1 промежуточных версий|не показаны $1 промежуточные версии}} {{PLURAL:$2|1=$2 участника|$2 участников}})',
+'diff-multi-manyusers' => '(не {{PLURAL:$1|показана $1 промежуточная версия|показаны $1 промежуточных версий|показаны $1 промежуточные версии}}, сделанные более чем $2 {{PLURAL:$2|1=участником|участниками}})',
+'difference-missing-revision' => '{{PLURAL:$2|$2 Ð²ÐµÑ\80Ñ\81иÑ\8f|$2 Ð²ÐµÑ\80Ñ\81ий|$2 Ð²ÐµÑ\80Ñ\81ии}} Ð´Ð»Ñ\8f Ñ\8dÑ\82ого Ñ\81Ñ\80авнениÑ\8f ($1) {{PLURAL:$2|1=не обнаружена|не обнаружены}}.
 
 Это обычно бывает, если перейти по устаревшей ссылке сравнения версий для страницы, которая была удалена.
 Подробности могут быть в [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} журнале удалений].',
@@ -1508,11 +1511,11 @@ $1",
 'titlematches' => 'Совпадения в названиях страниц',
 'textmatches' => 'Совпадения в текстах страниц',
 'notextmatches' => 'Нет совпадений в текстах страниц',
-'prevn' => '{{PLURAL:$1|предыдущая|предыдущие}} $1',
+'prevn' => '{{PLURAL:$1|1=предыдущая|предыдущие}} $1',
 'nextn' => '{{PLURAL:$1|следующая|следующие|следующие}} $1',
-'prevn-title' => '{{PLURAL:$1|Ð\9fÑ\80едÑ\8bдÑ\83Ñ\89аÑ\8f $1 Ð·Ð°Ð¿Ð¸Ñ\81Ñ\8c\9fÑ\80едÑ\8bдÑ\83Ñ\89ие $1 Ð·Ð°Ð¿Ð¸Ñ\81и|Ð\9fÑ\80едÑ\8bдÑ\83Ñ\89ие $1 Ð·Ð°Ð¿Ð¸Ñ\81ей}}',
-'nextn-title' => '{{PLURAL:$1|СледÑ\83Ñ\8eÑ\89аÑ\8f $1 Ð·Ð°Ð¿Ð¸Ñ\81Ñ\8c|СледÑ\83Ñ\8eÑ\89ие $1 Ð·Ð°Ð¿Ð¸Ñ\81и|СледÑ\83Ñ\8eÑ\89ие $1 Ð·Ð°Ð¿Ð¸Ñ\81ей}}',
-'shown-title' => 'Ð\9fоказÑ\8bваÑ\82Ñ\8c $1 {{PLURAL:$1|запиÑ\81Ñ\8c|запиÑ\81и|запиÑ\81ей}} на странице',
+'prevn-title' => '{{PLURAL:$1|Ð\9fÑ\80едÑ\8bдÑ\83Ñ\89аÑ\8f $1 Ð·Ð°Ð¿Ð¸Ñ\81Ñ\8c\9fÑ\80едÑ\8bдÑ\83Ñ\89ие $1 Ð·Ð°Ð¿Ð¸Ñ\81ей|Ð\9fÑ\80едÑ\8bдÑ\83Ñ\89ие $1 Ð·Ð°Ð¿Ð¸Ñ\81и}}',
+'nextn-title' => '{{PLURAL:$1|СледÑ\83Ñ\8eÑ\89аÑ\8f $1 Ð·Ð°Ð¿Ð¸Ñ\81Ñ\8c|СледÑ\83Ñ\8eÑ\89ие $1 Ð·Ð°Ð¿Ð¸Ñ\81ей|СледÑ\83Ñ\8eÑ\89ие $1 Ð·Ð°Ð¿Ð¸Ñ\81и}}',
+'shown-title' => 'Ð\9fоказÑ\8bваÑ\82Ñ\8c $1 {{PLURAL:$1|запиÑ\81Ñ\8c|запиÑ\81ей|запиÑ\81и}} на странице',
 'viewprevnext' => 'Просмотреть ($1 {{int:pipe-separator}} $2) ($3)',
 'searchmenu-exists' => "'''В этой вики есть страница «[[:$1]]»'''",
 'searchmenu-new' => "'''Создать страницу «[[:$1]]» в этом вики-проекте!'''",
@@ -1526,8 +1529,8 @@ $1",
 'searchprofile-images-tooltip' => 'Поиск файлов',
 'searchprofile-everything-tooltip' => 'Поиск на всех страницах (включая страницы обсуждений)',
 'searchprofile-advanced-tooltip' => 'Искать в заданных пространствах имён',
-'search-result-size' => '$1 ({{PLURAL:$2|$2 слово|$2 слова|$2 слов}})',
-'search-result-category-size' => '$1 {{PLURAL:$1|вхождение|вхождения|вхождений}} ($2 {{PLURAL:$2|подкатегория|подкатегории|подкатегорий}}, $3 {{PLURAL:$3|файл|файла|файлов}}).',
+'search-result-size' => '$1 ({{PLURAL:$2|$2 слово|$2 слов|$2 слова}})',
+'search-result-category-size' => '$1 {{PLURAL:$1|вхождение|вхождений|вхождения}} ($2 {{PLURAL:$2|подкатегория|подкатегорий|подкатегории}}, $3 {{PLURAL:$3|файл|файлов|файла}}).',
 'search-result-score' => 'Релевантность: $1%.',
 'search-redirect' => '(перенаправление с $1)',
 'search-section' => '(раздел «$1»)',
@@ -1539,9 +1542,9 @@ $1",
 'searcheverything-enable' => 'Поиск по всем пространствам имён',
 'searchrelated' => 'связанный',
 'searchall' => 'все',
-'showingresults' => "Ниже показаны до '''$1''' {{PLURAL:$1|результата|результатов}}, начиная с №'''$2'''.",
-'showingresultsnum' => "Ниже {{PLURAL:$3|показан|показаны|показаны}} '''$3''' {{PLURAL:$3|результат|результата|результатов}}, начиная с №'''$2'''.",
-'showingresultsheader' => "{{PLURAL:$5|Результат '''$1''' из '''$3'''|Результаты '''$1—$2''' из '''$3'''}} для «'''$4'''»",
+'showingresults' => "Ниже показаны до '''$1''' {{PLURAL:$1|1=результата|результатов}}, начиная с № '''$2'''.",
+'showingresultsnum' => "Ниже {{PLURAL:$3|1=показан|показаны}} '''$3''' {{PLURAL:$3|результат|результатов|результата}}, начиная с № '''$2'''.",
+'showingresultsheader' => "{{PLURAL:$5|1=Результат '''$1''' из '''$3'''|Результаты '''$1—$2''' из '''$3'''}} для «'''$4'''»",
 'search-nonefound' => 'Соответствий запросу не найдено.',
 'powersearch-legend' => 'Расширенный поиск',
 'powersearch-ns' => 'Поиск в пространствах имён:',
@@ -1569,7 +1572,7 @@ $1",
 'prefs-rc' => 'Свежие правки',
 'prefs-watchlist' => 'Список наблюдения',
 'prefs-watchlist-days' => 'Количество дней:',
-'prefs-watchlist-days-max' => 'Не более $1 {{PLURAL:$1|дня|дней}}',
+'prefs-watchlist-days-max' => 'Не более $1 {{PLURAL:$1|1=дня|дней}}',
 'prefs-watchlist-edits' => 'Максимальное количество правок, отображаемых в расширенном списке наблюдения:',
 'prefs-watchlist-edits-max' => 'Наибольшее значение: 1000',
 'prefs-watchlist-token' => 'Токен списка наблюдения:',
@@ -1626,7 +1629,7 @@ $1",
 'youremail' => 'Электронная почта:',
 'username' => '{{GENDER:$1|Имя участника|Имя участницы}}:',
 'uid' => 'Код {{GENDER:$1|участника|участницы}}:',
-'prefs-memberingroups' => '{{GENDER:$2|Член|Член}} {{PLURAL:$1|группы|групп}}:',
+'prefs-memberingroups' => '{{GENDER:$2|Член|Член}} {{PLURAL:$1|1=группы|групп}}:',
 'prefs-registration' => 'Время регистрации:',
 'yourrealname' => 'Настоящее имя:',
 'yourlanguage' => 'Язык интерфейса:',
@@ -1842,7 +1845,7 @@ $1",
 'action-editmyprivateinfo' => 'редактирование вашей частной информации',
 
 # Recent changes
-'nchanges' => '$1 {{PLURAL:$1|изменение|изменения|изменений}}',
+'nchanges' => '$1 {{PLURAL:$1|изменение|изменений|изменения}}',
 'enhancedrc-since-last-visit' => '$1 {{PLURAL:$1|с последнего посещения}}',
 'enhancedrc-history' => 'история',
 'recentchanges' => 'Свежие правки',
@@ -1855,6 +1858,7 @@ $1",
 'recentchanges-label-bot' => 'Эта правка сделана ботом',
 'recentchanges-label-unpatrolled' => 'Эта правку ещё никем не патрулировалась',
 'recentchanges-label-plusminus' => 'Размер страницы изменился на данное количество байт',
+'recentchanges-legend-heading' => "'''Легенда:'''",
 'recentchanges-legend-newpage' => '(см. также [[Special:NewPages|список новых страниц]])',
 'recentchanges-legend-plusminus' => "(''±123'')",
 'rcnotefrom' => "Ниже перечислены изменения с '''$2''' (не более '''$1''').",
@@ -1874,10 +1878,10 @@ $1",
 'newpageletter' => 'Н',
 'boteditletter' => 'б',
 'unpatrolledletter' => '!',
-'number_of_watching_users_pageview' => '[$1 {{PLURAL:$1|наблÑ\8eдаÑ\8eÑ\89ий Ñ\83Ñ\87аÑ\81Ñ\82ник|наблÑ\8eдаÑ\8eÑ\89иÑ\85 Ñ\83Ñ\87аÑ\81Ñ\82ника|наблÑ\8eдаÑ\8eÑ\89иÑ\85 Ñ\83Ñ\87аÑ\81Ñ\82ников}}]',
+'number_of_watching_users_pageview' => '[$1 {{PLURAL:$1|наблÑ\8eдаÑ\8eÑ\89ий Ñ\83Ñ\87аÑ\81Ñ\82ник|наблÑ\8eдаÑ\8eÑ\89иÑ\85 Ñ\83Ñ\87аÑ\81Ñ\82ников|наблÑ\8eдаÑ\8eÑ\89иÑ\85 Ñ\83Ñ\87аÑ\81Ñ\82ника}}]',
 'rc_categories' => 'Только из категорий (разделитель «|»)',
 'rc_categories_any' => 'Любой',
-'rc-change-size-new' => 'Размер после изменения: $1 {{PLURAL:$1|байт|байта|байт}}',
+'rc-change-size-new' => 'Размер после изменения: $1 {{PLURAL:$1|байт|байт|байта}}',
 'newsectionsummary' => '/* $1 */ новая тема',
 'rc-enhanced-expand' => 'Показать подробности',
 'rc-enhanced-hide' => 'Скрыть подробности',
@@ -1937,9 +1941,9 @@ $1",
 'filetype-badmime' => 'Файлы, имеющие MIME-тип «$1», не могут быть загружены.',
 'filetype-bad-ie-mime' => 'Невозможно загрузить этот файл, так как Internet Explorer будет определять его как «$1», то есть неразрешённым и потенциально опасным типом файла.',
 'filetype-unwanted-type' => "'''\".\$1\"''' — нежелательный тип файла.
-{{PLURAL:\$3|Предпочтительным типом файла является|Предпочтительные типы файлов:}} \$2.",
-'filetype-banned-type' => "'''«.$1»''' — {{PLURAL:$4|запрещённый тип файла|запрещённые типы файлов}}.
-{{PLURAL:$3|Разрешённым типом файла является|Разрешённые типы файлов:}} $2.",
+{{PLURAL:\$3|1=Предпочтительным типом файла является|Предпочтительные типы файлов:}} \$2.",
+'filetype-banned-type' => "'''«.$1»''' — {{PLURAL:$4|1=запрещённый тип файла|запрещённые типы файлов}}.
+{{PLURAL:$3|1=Разрешённым типом файла является|Разрешённые типы файлов:}} $2.",
 'filetype-missing' => 'Отсутствует расширение у файла (например, «.jpg»).',
 'empty-file' => 'Отправленный вами файл пуст.',
 'file-too-large' => 'Отправленный вами файл слишком велик.',
@@ -1976,7 +1980,7 @@ $1",
 Если всё равно хотите загрузить данный файл, пожалуйста, вернитесь назад и загрузите его под другим именем. [[File:$1|thumb|center|$1]]',
 'fileexists-shared-forbidden' => 'Файл с этим именем уже существует в общем хранилище файлов.
 Если вы всё-таки хотите загрузить этот файл, пожалуйста, вернитесь назад и измените имя файла. [[File:$1|thumb|center|$1]]',
-'file-exists-duplicate' => 'Этот файл является дубликатом {{PLURAL:$1|следующего файла|следующих файлов}}:',
+'file-exists-duplicate' => 'Этот файл является дубликатом {{PLURAL:$1|1=следующего файла|следующих файлов}}:',
 'file-deleted-duplicate' => 'Подобный файл ([[:$1]]) уже удалялся. Пожалуйста, ознакомьтесь с историей удаления файла, прежде чем загружать его снова.',
 'uploadwarning' => 'Предупреждение',
 'uploadwarning-text' => 'Пожалуйста, измените представленное ниже описание файла и попробуйте ещё раз.',
@@ -2055,13 +2059,13 @@ $1',
 'backend-fail-closetemp' => 'Не удаётся закрыть временный файл.',
 'backend-fail-read' => 'Не удалось прочитать файл $1.',
 'backend-fail-create' => 'Не удалось записать файл $1.',
-'backend-fail-maxsize' => 'Не удалось записать файл $1, так как его размер превышает {{PLURAL:$2|$2 байт|$2 байта|$2 байт}}.',
+'backend-fail-maxsize' => 'Не удалось записать файл $1, так как его размер превышает {{PLURAL:$2|$2 байт|$2 байт|$2 байта}}.',
 'backend-fail-readonly' => 'Хранилище «$1» сейчас находится в режиме «только чтение». Причина: «$2»',
 'backend-fail-synced' => 'Файл «$1» находится в несогласованном состоянии во внутреннем хранилище',
 'backend-fail-connect' => 'Не удалось подключиться к хранилищу «$1».',
 'backend-fail-internal' => 'Произошла неизвестная ошибка в хранилище «$1».',
 'backend-fail-contenttype' => 'Не удалось определить тип содержимого файла, чтобы сохранить его в «$1».',
-'backend-fail-batchsize' => 'Хранилище получило блок из $1 {{PLURAL:$1|файловой операции|файловых операций|файловых операций}}, ограничение составляет $2 {{PLURAL:$1|операцию|операции|файловых операций}}.',
+'backend-fail-batchsize' => 'Хранилище получило блок из $1 {{PLURAL:$1|файловой операции|файловых операций}}, ограничение составляет $2 {{PLURAL:$1|файловую операцию|файловых операций|файловых операции}}.',
 'backend-fail-usable' => 'Не удалось прочитать или записать файл «$1» из-за нехватки прав или отсутствия нужных папок.',
 
 # File journal errors
@@ -2174,14 +2178,14 @@ $1',
 'filehist-comment' => 'Примечание',
 'filehist-missing' => 'Файл отсутствует',
 'imagelinks' => 'Использование файла',
-'linkstoimage' => '{{PLURAL:$1|Следующая $1 страница ссылается|Следующие $1 страницы ссылаются|Следующие $1 страниц ссылаются}} на данный файл:',
-'linkstoimage-more' => 'Более $1 {{PLURAL:$1|страницы|страниц|страниц}} ссылаются на этот файл.
\92 Ð´Ð°Ð½Ð½Ð¾Ð¼ Ñ\81пиÑ\81ке {{PLURAL:$1|пÑ\80едÑ\81Ñ\82авлена Ñ\82олÑ\8cко $1 Ñ\81Ñ\81Ñ\8bлка|пÑ\80едÑ\81Ñ\82авленÑ\8b Ñ\82олÑ\8cко $1 Ñ\81Ñ\81Ñ\8bлки|пÑ\80едÑ\81Ñ\82авленÑ\8b Ñ\82олÑ\8cко $1 Ñ\81Ñ\81Ñ\8bлок}} на этот файл.
+'linkstoimage' => '{{PLURAL:$1|Следующая $1 страница ссылается|Следующие $1 страниц ссылаются|Следующие $1 страницы ссылаются}} на данный файл:',
+'linkstoimage-more' => 'Более $1 {{PLURAL:$1|страницы|страниц}} ссылаются на этот файл.
\92 Ð´Ð°Ð½Ð½Ð¾Ð¼ Ñ\81пиÑ\81ке {{PLURAL:$1|пÑ\80едÑ\81Ñ\82авлена Ñ\82олÑ\8cко $1 Ñ\81Ñ\81Ñ\8bлка|пÑ\80едÑ\81Ñ\82авленÑ\8b Ñ\82олÑ\8cко $1 Ñ\81Ñ\81Ñ\8bлок|пÑ\80едÑ\81Ñ\82авленÑ\8b Ñ\82олÑ\8cко $1 Ñ\81Ñ\81Ñ\8bлки}} на этот файл.
 Доступен также [[Special:WhatLinksHere/$2|полный список]].',
 'nolinkstoimage' => 'Нет страниц, ссылающихся на данный файл.',
 'morelinkstoimage' => 'Просмотреть [[Special:WhatLinksHere/$1|остальные ссылки]] на этот файл.',
 'linkstoimage-redirect' => '$1 (файловое перенаправление) $2',
-'duplicatesoffile' => '{{PLURAL:$1|Следующий $1 файл является дубликатом|Следующие $1 файла являются дубликатами|Следующие $1 файлов являются дубликатами}} этого файла ([[Special:FileDuplicateSearch/$2|подробности]]):',
+'duplicatesoffile' => '{{PLURAL:$1|Следующий файл является дубликатом|Следующие $1 файлов являются дубликатами|Следующие $1 файла являются дубликатами}} этого файла ([[Special:FileDuplicateSearch/$2|подробности]]):',
 'sharedupload' => 'Этот файл из $1 и может использоваться в других проектах.',
 'sharedupload-desc-there' => 'Этот файл из $1 и может использоваться в других проектах.
 Дополнительную информацию можно найти на [$2 странице описания файла].',
@@ -2249,7 +2253,7 @@ $1',
 
 # Random page
 'randompage' => 'Случайная статья',
-'randompage-nopages' => 'В {{PLURAL:$2|следующем пространстве имён отсутствуют страницы|следующих пространствах имён нет страниц}}: $1.',
+'randompage-nopages' => 'В {{PLURAL:$2|1=следующем пространстве имён отсутствуют страницы|следующих пространствах имён нет страниц}}: $1.',
 
 # Random page in category
 'randomincategory' => 'Случайная страница в категории',
@@ -2280,7 +2284,7 @@ $1',
 'statistics-views-peredit' => 'Просмотров на правку',
 'statistics-users' => 'Зарегистрированные [[Special:ListUsers|участники]]',
 'statistics-users-active' => 'Активные участники',
-'statistics-users-active-desc' => 'Участники, совершившие какое-либо действие за {{PLURAL:$1|последний $1 день|последние $1 дня|последние $1 дней}}',
+'statistics-users-active-desc' => 'Участники, совершившие какое-либо действие за {{PLURAL:$1|последний $1 день|последние $1 дней|последние $1 дня}}',
 'statistics-mostpopular' => 'Наиболее часто просматриваемые страницы',
 
 'pageswithprop' => 'Страницы с переопределёнными свойствами',
@@ -2312,16 +2316,16 @@ $1',
 'fewestrevisions' => 'Страницы с наименьшим количеством версий',
 
 # Miscellaneous special pages
-'nbytes' => '$1 {{PLURAL:$1|байÑ\82|байÑ\82а|байÑ\82}}',
-'ncategories' => '$1 {{PLURAL:$1|каÑ\82егоÑ\80иÑ\8f|каÑ\82егоÑ\80ии|каÑ\82егоÑ\80ий}}',
-'ninterwikis' => '$1 {{PLURAL:$1|инÑ\82еÑ\80вики-Ñ\81Ñ\81Ñ\8bлка|инÑ\82еÑ\80вики-Ñ\81Ñ\81Ñ\8bлки|инÑ\82еÑ\80вики-Ñ\81Ñ\81Ñ\8bлок}}',
-'nlinks' => '$1 {{PLURAL:$1|Ñ\81Ñ\81Ñ\8bлка|Ñ\81Ñ\81Ñ\8bлки|Ñ\81Ñ\81Ñ\8bлок}}',
-'nmembers' => '$1 {{PLURAL:$1|обÑ\8aекÑ\82|обÑ\8aекÑ\82а|обÑ\8aекÑ\82ов}}',
-'nmemberschanged' => '$1 → $2 объект{{PLURAL:$2||а|ов}}',
-'nrevisions' => '$1 {{PLURAL:$1|веÑ\80Ñ\81иÑ\8f|веÑ\80Ñ\81ии|веÑ\80Ñ\81ий}}',
-'nviews' => '$1 {{PLURAL:$1|пÑ\80оÑ\81моÑ\82Ñ\80|пÑ\80оÑ\81моÑ\82Ñ\80а|пÑ\80оÑ\81моÑ\82Ñ\80ов}}',
-'nimagelinks' => 'Используется на $1 {{PLURAL:$1|странице|страницах|страницах}}',
-'ntransclusions' => 'используется на $1 {{PLURAL:$1|странице|страницах|страницах}}',
+'nbytes' => '$1 {{PLURAL:$1|байÑ\82|байÑ\82ов|байÑ\82а}}',
+'ncategories' => '$1 {{PLURAL:$1|каÑ\82егоÑ\80иÑ\8f|каÑ\82егоÑ\80ий|каÑ\82егоÑ\80ии}}',
+'ninterwikis' => '$1 {{PLURAL:$1|инÑ\82еÑ\80вики-Ñ\81Ñ\81Ñ\8bлка|инÑ\82еÑ\80вики-Ñ\81Ñ\81Ñ\8bлок|инÑ\82еÑ\80вики-Ñ\81Ñ\81Ñ\8bлки}}',
+'nlinks' => '$1 {{PLURAL:$1|Ñ\81Ñ\81Ñ\8bлка|Ñ\81Ñ\81Ñ\8bлок|Ñ\81Ñ\81Ñ\8bлки}}',
+'nmembers' => '$1 {{PLURAL:$1|обÑ\8aекÑ\82|обÑ\8aекÑ\82ов|обÑ\8aекÑ\82а}}',
+'nmemberschanged' => '$1 → $2 {{PLURAL:$2|объект|объектов|объекта}}',
+'nrevisions' => '$1 {{PLURAL:$1|веÑ\80Ñ\81иÑ\8f|веÑ\80Ñ\81ий|веÑ\80Ñ\81ии}}',
+'nviews' => '$1 {{PLURAL:$1|пÑ\80оÑ\81моÑ\82Ñ\80|пÑ\80оÑ\81моÑ\82Ñ\80ов|пÑ\80оÑ\81моÑ\82Ñ\80а}}',
+'nimagelinks' => 'Используется на $1 {{PLURAL:$1|странице|страницах}}',
+'ntransclusions' => 'используется на $1 {{PLURAL:$1|странице|страницах}}',
 'specialpage-empty' => 'Запрос не дал результатов.',
 'lonelypages' => 'Страницы-сироты',
 'lonelypagestext' => 'На следующие страницы нет ссылок с других страниц {{grammar:genitive|{{SITENAME}}}}, и они не включаются в другие страницы.',
@@ -2363,7 +2367,7 @@ $1',
 'listusers-editsonly' => 'Показать только тех участников, кто сделал хотя бы одну правку',
 'listusers-creationsort' => 'Упорядочить по дате создания',
 'listusers-desc' => 'Сортировать по убыванию',
-'usereditcount' => '$1 {{PLURAL:$1|пÑ\80авка|пÑ\80авки|пÑ\80авок}}',
+'usereditcount' => '$1 {{PLURAL:$1|пÑ\80авка|пÑ\80авок|пÑ\80авки}}',
 'usercreated' => '{{GENDER:$3|зарегистрировался|зарегистрировалась}} $1 в $2',
 'newpages' => 'Новые страницы',
 'newpages-username' => 'Участник:',
@@ -2377,8 +2381,8 @@ $1',
 'notargettext' => 'Вы не указали целевую страницу или участника для этого действия.',
 'nopagetitle' => 'Нет такой целевой страницы',
 'nopagetext' => 'Указанной целевой страницы не существует.',
-'pager-newer-n' => '$1 {{PLURAL:$1|более новая|более новые|более новых}}',
-'pager-older-n' => '$1 {{PLURAL:$1|более старая|более старые|более старых}}',
+'pager-newer-n' => '$1 более {{PLURAL:$1|новая|новых|новые}}',
+'pager-older-n' => '$1 более {{PLURAL:$1|старая|старых|старые}}',
 'suppress' => 'Сокрытие',
 'querypage-disabled' => 'Эта спецстраница отключена для повышения производительности.',
 
@@ -2423,7 +2427,7 @@ $1',
 
 # Special:Categories
 'categories' => 'Категории',
-'categoriespagetext' => '{{PLURAL:$1|Следующая категория содержит|Следующие категории содержат}} страницы или медиа-файлы.
+'categoriespagetext' => '{{PLURAL:$1|1=Следующая категория содержит|Следующие категории содержат}} страницы или медиа-файлы.
 Здесь не показаны [[Special:UnusedCategories|неиспользуемые категории]].
 См. также [[Special:WantedCategories|список требуемых категорий]].',
 'categoriesfrom' => 'Показать категории, начинающиеся с:',
@@ -2442,7 +2446,7 @@ $1',
 'linksearch-ok' => 'Найти',
 'linksearch-text' => 'Можно использовать подстановочные символы, например, <code>*.wikipedia.org</code>.
 Необходим по крайней мере домен верхнего уровня, например <code>*.org</code><br />
-Поддерживаемые {{PLURAL:$2|протокол|протоколы}}: <code>$1</code> (по умолчанию подставляется http://, если протокол явно не задан).',
+Поддерживаемые {{PLURAL:$2|1=протокол|протоколы}}: <code>$1</code> (по умолчанию подставляется http://, если протокол явно не задан).',
 'linksearch-line' => 'Ссылка на $1 из $2',
 'linksearch-error' => 'Подстановочные символы могут использоваться только в начале адресов.',
 
@@ -2454,8 +2458,8 @@ $1',
 
 # Special:ActiveUsers
 'activeusers' => 'Список активных участников',
-'activeusers-intro' => 'Это список участников, совершавших какие-либо действия за {{PLURAL:$1|последний $1 день|последние $1 дня|последние $1 дней}}.',
-'activeusers-count' => '$1 {{PLURAL:$1|пÑ\80авка|пÑ\80авки|пÑ\80авок}} Ð·Ð° {{PLURAL:$3|$3 Ð¿Ð¾Ñ\81ледний Ð´ÐµÐ½Ñ\8c|поÑ\81ледние $3 Ð´Ð½Ñ\8f|поÑ\81ледние $3 Ð´Ð½ÐµÐ¹}}',
+'activeusers-intro' => 'Это список участников, совершавших какие-либо действия за {{PLURAL:$1|последний $1 день|последние $1 дней|последние $1 дня}}.',
+'activeusers-count' => '$1 {{PLURAL:$1|пÑ\80авка|пÑ\80авок|пÑ\80авки}} Ð·Ð° {{PLURAL:$3|$3 Ð¿Ð¾Ñ\81ледний Ð´ÐµÐ½Ñ\8c|поÑ\81ледние $3 Ð´Ð½ÐµÐ¹|поÑ\81ледние $3 Ð´Ð½Ñ\8f}}',
 'activeusers-from' => 'Показать участников, начиная с:',
 'activeusers-hidebots' => 'Скрыть ботов',
 'activeusers-hidesysops' => 'Скрыть администраторов',
@@ -2474,12 +2478,12 @@ $1',
 'listgrouprights-members' => '(список участников)',
 'listgrouprights-right-display' => '<span class="listgrouprights-granted">$1 (<code>$2</code>)</span>',
 'listgrouprights-right-revoked' => '<span class="listgrouprights-revoked">$1 (<code>$2</code>)</span>',
-'listgrouprights-addgroup' => 'может добавлять в {{PLURAL:$2|группу|группы}}: $1',
-'listgrouprights-removegroup' => 'может исключать из {{PLURAL:$2|группы|групп}}: $1',
+'listgrouprights-addgroup' => 'может добавлять в {{PLURAL:$2|1=группу|группы}}: $1',
+'listgrouprights-removegroup' => 'может исключать из {{PLURAL:$2|1=группы|групп}}: $1',
 'listgrouprights-addgroup-all' => 'может добавлять во все группы',
 'listgrouprights-removegroup-all' => 'может исключать из всех групп',
-'listgrouprights-addgroup-self' => 'может добавить {{PLURAL:$2|группу|группы}} к своей учётной записи: $1',
-'listgrouprights-removegroup-self' => 'может удалить {{PLURAL:$2|группу|группы}} со своей учётной записи: $1',
+'listgrouprights-addgroup-self' => 'может добавить {{PLURAL:$2|1=группу|группы}} к своей учётной записи: $1',
+'listgrouprights-removegroup-self' => 'может удалить {{PLURAL:$2|1=группу|группы}} со своей учётной записи: $1',
 'listgrouprights-addgroup-self-all' => 'Может добавлять все группы к своей учётной записи',
 'listgrouprights-removegroup-self-all' => 'может удалять все группы со своей учётной записи',
 
@@ -2539,14 +2543,14 @@ $1',
 'unwatchthispage' => 'Прекратить наблюдение',
 'notanarticle' => 'Не статья',
 'notvisiblerev' => 'Версия была удалена',
-'watchlist-details' => 'В вашем списке наблюдения $1 {{PLURAL:$1|страница|страницы|страниц}}, не считая страниц обсуждения.',
+'watchlist-details' => 'В вашем списке наблюдения $1 {{PLURAL:$1|страница|страниц|страницы}}, не считая страниц обсуждения.',
 'wlheader-enotif' => 'Уведомления по эл. почте включены.',
 'wlheader-showupdated' => "Страницы, изменившиеся с вашего последнего их посещения, выделены '''жирным''' шрифтом.",
 'watchmethod-recent' => 'просмотр последних изменений для наблюдаемых страниц',
 'watchmethod-list' => 'просмотр наблюдаемых страниц для последних изменений',
-'watchlistcontains' => 'Ваш список наблюдения содержит $1 {{PLURAL:$1|страница|страницы|страниц}}.',
+'watchlistcontains' => 'Ваш список наблюдения содержит $1 {{PLURAL:$1|страница|страниц|страницы}}.',
 'iteminvalidname' => 'Проблема с элементом «$1», недопустимое название…',
-'wlnote' => "Ниже {{PLURAL:$1|показано последнее $1 изменение|показаны последние $1 изменения|показаны последние $1 изменений}} за {{PLURAL:$2|последний|последние|последние}} '''$2''' {{plural:$2|час|часа|часов}}, на момент времени $3 $4.",
+'wlnote' => "Ниже {{PLURAL:$1|показано последнее $1 изменение|показаны последние $1 изменений|показаны последние $1 изменения}} за {{PLURAL:$2|последний|последние|последние}} '''$2''' {{PLURAL:$2|час|часов|часа}}, на момент времени $3 $4.",
 'wlshowlast' => 'Показать за последние $1 часов $2 дней $3',
 'watchlist-options' => 'Настройки списка наблюдения',
 
@@ -2634,13 +2638,14 @@ $UNWATCHURL
 'delete-warning-toobig' => 'У этой страницы очень длинная история изменений, более $1 {{PLURAL:$1|версии|версий|версий}}.
 Её удаление может привести к нарушению нормальной работы базы данных сайта {{SITENAME}};
 действуйте с осторожностью.',
+'deleting-backlinks-warning' => "'''Предупреждение.''' Некоторые другие страницы ссылаются на данную удаляемую страницу.",
 
 # Rollback
 'rollback' => 'Откатить изменения',
 'rollback_short' => 'Откат',
 'rollbacklink' => 'откатить',
-'rollbacklinkcount' => 'оÑ\82каÑ\82иÑ\82Ñ\8c $1 {{PLURAL:$1|пÑ\80авкÑ\83|пÑ\80авки|пÑ\80авок}}',
-'rollbacklinkcount-morethan' => 'оÑ\82каÑ\82иÑ\82Ñ\8c Ð±Ð¾Ð»Ñ\8cÑ\88е, Ñ\87ем $1 {{PLURAL:$1|пÑ\80авкÑ\83|пÑ\80авки|пÑ\80авок}}',
+'rollbacklinkcount' => 'оÑ\82каÑ\82иÑ\82Ñ\8c $1 {{PLURAL:$1|пÑ\80авкÑ\83|пÑ\80авок|пÑ\80авки}}',
+'rollbacklinkcount-morethan' => 'оÑ\82каÑ\82иÑ\82Ñ\8c Ð±Ð¾Ð»Ñ\8cÑ\88е, Ñ\87ем $1 {{PLURAL:$1|пÑ\80авкÑ\83|пÑ\80авок|пÑ\80авки}}',
 'rollbackfailed' => 'Ошибка при совершении отката',
 'cantrollback' => 'Невозможно откатить изменения. Последний, кто вносил изменения, является единственным автором этой страницы.',
 'alreadyrolled' => 'Невозможно откатить последние изменения страницы «[[:$1]]», совершённые [[User:$2|$2]] ([[User talk:$2|обсуждение]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]),
@@ -2685,7 +2690,7 @@ $UNWATCHURL
 'protect-locked-dblock' => "Уровень защиты не может быть изменён, так как основная база данных временно заблокирована.
 Текущие установки для страницы '''$1''':",
 'protect-locked-access' => "У вашей учётной записи недостаточно прав для изменения уровня защиты страницы. Текущие установки для страницы '''$1''':",
-'protect-cascadeon' => 'Эта страница защищена в связи с тем, что она включена {{PLURAL:$1|в указанную ниже страницу, на которую|в нижеследующие страницы, на которые}} установлена каскадная защита. Вы можете изменить уровень защиты этой страницы, но это не повлияет на каскадную защиту.',
+'protect-cascadeon' => 'Эта страница защищена в связи с тем, что она включена {{PLURAL:$1|1=в указанную ниже страницу, на которую|в нижеследующие страницы, на которые}} установлена каскадная защита. Вы можете изменить уровень защиты этой страницы, но это не повлияет на каскадную защиту.',
 'protect-default' => 'Без защиты',
 'protect-fallback' => 'Разрешено только участникам с правами «$1»',
 'protect-level-autoconfirmed' => 'Разрешено только автоподтверждённым участникам',
@@ -2730,12 +2735,12 @@ $UNWATCHURL
 'undeletepage' => 'Просмотр и восстановление удалённых страниц',
 'undeletepagetitle' => "'''Ниже перечислены удалённые версии страницы [[:$1]]'''.",
 'viewdeletedpage' => 'Просмотр удалённых страниц',
-'undeletepagetext' => '{{PLURAL:$1|Следующая $1 страница была удалена|Следующие $1 страницы были удалены|Следующие $1 страниц были удалены}}, однако {{PLURAL:$1|она всё ещё находится в архиве и поэтому может быть восстановлена|они всё ещё находятся в архиве и поэтому могут быть восстановлены}}.
+'undeletepagetext' => '{{PLURAL:$1|Следующая $1 страница была удалена|Следующие $1 страниц были удалены|Следующие $1 страницы были удалены}}, однако {{PLURAL:$1|1=она всё ещё находится в архиве и поэтому может быть восстановлена|они всё ещё находятся в архиве и поэтому могут быть восстановлены}}.
 Архив может периодически очищаться.',
 'undelete-fieldset-title' => 'Восстановить версии',
 'undeleteextrahelp' => "Для полного восстановления истории страницы оставьте все отметки пустыми и нажмите '''«{{int:undeletebtn}}»'''.
 Для частичного восстановления отметьте те версии страницы, которые нужно восстановить, и нажмите '''«{{int:undeletebtn}}»'''.",
-'undeleterevisions' => 'в Ð°Ñ\80Ñ\85иве $1 {{PLURAL:$1|веÑ\80Ñ\81иÑ\8f|веÑ\80Ñ\81ии|веÑ\80Ñ\81ий}}',
+'undeleterevisions' => 'в Ð°Ñ\80Ñ\85иве $1 {{PLURAL:$1|веÑ\80Ñ\81иÑ\8f|веÑ\80Ñ\81ий|веÑ\80Ñ\81ии}}',
 'undeletehistory' => 'При восстановлении страницы восстанавливается и её история правок.
 Если после удаления была создана новая страница с тем же названием, то восстановленные версии появятся в истории правок перед новыми версиями.',
 'undeleterevdel' => 'Восстановление не будет произведено, если оно приведёт к частичному удалению последней версии страницы или файла.
@@ -2749,9 +2754,9 @@ $UNWATCHURL
 'undeleteviewlink' => 'просмотреть',
 'undeleteinvert' => 'Обратить выделение',
 'undeletecomment' => 'Причина:',
-'undeletedrevisions' => '$1 {{PLURAL:$1|изменение|изменения|изменений}} восстановлено',
-'undeletedrevisions-files' => '$1 {{PLURAL:$1|веÑ\80Ñ\81иÑ\8f|веÑ\80Ñ\81ии|веÑ\80Ñ\81ий}} Ð¸ $2 {{PLURAL:$2|Ñ\84айл|Ñ\84айла|Ñ\84айлов}} восстановлено',
-'undeletedfiles' => '$1 {{PLURAL:$1|Ñ\84айл Ð²Ð¾Ñ\81Ñ\81Ñ\82ановлен|Ñ\84айла Ð²Ð¾Ñ\81Ñ\81Ñ\82ановлено|Ñ\84айлов восстановлено}}',
+'undeletedrevisions' => '$1 {{PLURAL:$1|изменение|изменений|изменения}} восстановлено',
+'undeletedrevisions-files' => '$1 {{PLURAL:$1|веÑ\80Ñ\81иÑ\8f|веÑ\80Ñ\81ий|веÑ\80Ñ\81ии}} Ð¸ $2 {{PLURAL:$2|Ñ\84айл|Ñ\84айлов|Ñ\84айла}} восстановлено',
+'undeletedfiles' => '$1 {{PLURAL:$1|Ñ\84айл Ð²Ð¾Ñ\81Ñ\81Ñ\82ановлен|Ñ\84айлов Ð²Ð¾Ñ\81Ñ\81Ñ\82ановлено|Ñ\84айла восстановлено}}',
 'cannotundelete' => 'Ошибка восстановления:
 $1',
 'undeletedpage' => "'''Страница «$1» была восстановлена.'''
@@ -2820,8 +2825,8 @@ $1',
 'isredirect' => 'страница-перенаправление',
 'istemplate' => 'включение',
 'isimage' => 'файловая ссылка',
-'whatlinkshere-prev' => '{{PLURAL:$1|предыдущая|предыдущие}} $1',
-'whatlinkshere-next' => '{{PLURAL:$1|следующая|следующие}} $1',
+'whatlinkshere-prev' => '{{PLURAL:$1|1=предыдущая|предыдущие}} $1',
+'whatlinkshere-next' => '{{PLURAL:$1|1=следующая|следующие}} $1',
 'whatlinkshere-links' => '← ссылки',
 'whatlinkshere-hideredirs' => '$1 перенаправления',
 'whatlinkshere-hidetrans' => '$1 включения',
@@ -2893,7 +2898,7 @@ $1',
 'blocklist-reason' => 'Причина',
 'ipblocklist-submit' => 'Найти',
 'ipblocklist-localblock' => 'Локальная блокировка',
-'ipblocklist-otherblocks' => '{{PLURAL:$1|Другая блокировка|Другие блокировки}}',
+'ipblocklist-otherblocks' => '{{PLURAL:$1|1=Другая блокировка|Другие блокировки}}',
 'infiniteblock' => 'бессрочно',
 'expiringblock' => 'завершится $1 в $2',
 'anononlyblock' => 'только анонимов',
@@ -2931,7 +2936,7 @@ $1',
 'ipb_hide_invalid' => 'Невозможно скрыть учётную запись, возможно, с неё сделано слишком много правок.',
 'ipb_already_blocked' => '«$1» уже заблокирован.',
 'ipb-needreblock' => '$1 уже {{GENDER:$1|заблокирован|заблокирована}}. Хотите изменить параметры блокировки?',
-'ipb-otherblocks-header' => '{{PLURAL:$1|Другая блокировка|Другие блокировки}}',
+'ipb-otherblocks-header' => '{{PLURAL:$1|1=Другая блокировка|Другие блокировки}}',
 'unblock-hideuser' => 'Вы не можете разблокировать этого участника, так как его имя было скрыто.',
 'ipb_cant_unblock' => 'Ошибка: не найдена блокировка $1. Возможно, она уже была снята.',
 'ipb_blocked_as_range' => 'Ошибка: IP-адрес $1 был заблокирован не напрямую и не может быть разблокирован. Однако, он принадлежит к заблокированному диапазону $2, который можно разблокировать.',
@@ -3027,11 +3032,11 @@ $1',
 'movepage-page-exists' => 'Страница $1 уже существует и не может быть автоматически перезаписана.',
 'movepage-page-moved' => 'Страница $1 была переименована в $2.',
 'movepage-page-unmoved' => 'Страница $1 не может быть переименована в $2.',
-'movepage-max-pages' => '$1 {{PLURAL:$1|страница была переименована|страницы было переименовано|страниц было переименовано}} — это максимум, больше страниц нельзя переименовать автоматически.',
+'movepage-max-pages' => '$1 {{PLURAL:$1|страница была переименована|страниц было переименовано|страницы было переименовано}} — это максимум, больше страниц нельзя переименовать автоматически.',
 'movelogpage' => 'Журнал переименований',
 'movelogpagetext' => 'Ниже представлен список переименованных страниц.',
-'movesubpage' => '{{PLURAL:$1|Подстраница|Подстраницы}}',
-'movesubpagetext' => 'У этой страницы $1 {{PLURAL:$1|подстраница|подстраницы|подстраниц}}.',
+'movesubpage' => '{{PLURAL:$1|1=Подстраница|Подстраницы}}',
+'movesubpagetext' => 'У этой страницы $1 {{PLURAL:$1|подстраница|подстраниц|подстраницы}}.',
 'movenosubpage' => 'У этой страницы нет подстраниц.',
 'movereason' => 'Причина:',
 'revertmove' => 'возврат',
@@ -3133,9 +3138,9 @@ $2',
 'import-comment' => 'Примечание:',
 'importtext' => 'Пожалуйста, экспортируйте страницу из исходной вики, используя [[Special:Export|соответствующий инструмент]]. Сохраните файл на диск, а затем загрузите его сюда.',
 'importstart' => 'Импортирование страниц…',
-'import-revision-count' => '$1 {{PLURAL:$1|веÑ\80Ñ\81иÑ\8f|веÑ\80Ñ\81ии|веÑ\80Ñ\81ий}}',
+'import-revision-count' => '$1 {{PLURAL:$1|веÑ\80Ñ\81иÑ\8f|веÑ\80Ñ\81ий|веÑ\80Ñ\81ии}}',
 'importnopages' => 'Нет страниц для импортирования.',
-'imported-log-entries' => '{{PLURAL:$1|Ð\98мпоÑ\80Ñ\82иÑ\80ована $1 Ð·Ð°Ð¿Ð¸Ñ\81Ñ\8c\98мпоÑ\80Ñ\82иÑ\80овано $1 Ð·Ð°Ð¿Ð¸Ñ\81и|Ð\98мпоÑ\80Ñ\82иÑ\80овано $1 Ð·Ð°Ð¿Ð¸Ñ\81ей}} журнала.',
+'imported-log-entries' => '{{PLURAL:$1|Ð\98мпоÑ\80Ñ\82иÑ\80ована $1 Ð·Ð°Ð¿Ð¸Ñ\81Ñ\8c\98мпоÑ\80Ñ\82иÑ\80овано $1 Ð·Ð°Ð¿Ð¸Ñ\81ей|Ð\98мпоÑ\80Ñ\82иÑ\80овано $1 Ð·Ð°Ð¿Ð¸Ñ\81и}} журнала.',
 'importfailed' => 'Не удалось импортировать: $1',
 'importunknownsource' => 'Неизвестный тип импортируемой страницы',
 'importcantopen' => 'Невозможно открыть импортируемый файл',
@@ -3161,7 +3166,7 @@ $2',
 'import-error-special' => 'Страница «$1» не была импортирована, так как она относится к особому пространству имён, не позволяющему создавать страницы.',
 'import-error-invalid' => 'Страница «$1» не была импортирована из-за недопустимого названия.',
 'import-error-unserialize' => 'Версия $2 страницы «$1» не может быть структурирована (десериализована). Получено сообщение, что в этой версии использована модель содержимого $3,  сериализуемая в формате $4.',
-'import-options-wrong' => '{{PLURAL:$2|Неверная опция|Неверные опции}}: <nowiki>$1</nowiki>',
+'import-options-wrong' => '{{PLURAL:$2|1=Неверная опция|Неверные опции}}: <nowiki>$1</nowiki>',
 'import-rootpage-invalid' => 'Указанное название корневой страницы некорректно.',
 'import-rootpage-nosubpage' => 'В пространстве имён указанной корневой страницы «$1» подстраницы запрещены.',
 
@@ -3169,9 +3174,9 @@ $2',
 'importlogpage' => 'Журнал импорта',
 'importlogpagetext' => 'Импортирование администраторами страниц с историей изменений из других вики.',
 'import-logentry-upload' => '«[[$1]]» — импорт из файла',
-'import-logentry-upload-detail' => '$1 {{PLURAL:$1|веÑ\80Ñ\81иÑ\8f|веÑ\80Ñ\81ии|веÑ\80Ñ\81ий}}',
+'import-logentry-upload-detail' => '$1 {{PLURAL:$1|веÑ\80Ñ\81иÑ\8f|веÑ\80Ñ\81ий|веÑ\80Ñ\81ии}}',
 'import-logentry-interwiki' => '«$1» — межвики импорт',
-'import-logentry-interwiki-detail' => '$1 {{PLURAL:$1|веÑ\80Ñ\81иÑ\8f|веÑ\80Ñ\81ии|веÑ\80Ñ\81ий}} из $2',
+'import-logentry-interwiki-detail' => '$1 {{PLURAL:$1|веÑ\80Ñ\81иÑ\8f|веÑ\80Ñ\81ий|веÑ\80Ñ\81ии}} из $2',
 
 # JavaScriptTest
 'javascripttest' => 'Проверка JavaScript',
@@ -3282,14 +3287,14 @@ $2',
 The wiki server can't provide data in a format your client can read.",
 
 # Attribution
-'anonymous' => '{{PLURAL:$1|Анонимный участник|Анонимные участники}} {{grammar:genitive|{{SITENAME}}}}',
+'anonymous' => '{{PLURAL:$1|1=Анонимный участник|Анонимные участники}} {{grammar:genitive|{{SITENAME}}}}',
 'siteuser' => '{{GENDER:$2|участник|участница}} {{grammar:genitive|{{SITENAME}}}} $1',
 'anonuser' => 'анонимный участник {{grammar:genitive|{{SITENAME}}}} $1',
 'lastmodifiedatby' => 'Эта страница последний раз была изменена $1 в $2, автор изменения — $3.',
 'othercontribs' => 'В создании приняли участие: $1.',
 'others' => 'другие',
-'siteusers' => '{{PLURAL:$2|участник|участники}} {{grammar:genitive|{{SITENAME}}}} $1',
-'anonusers' => '{{PLURAL:$2|анонимный участник|анонимные участники}} {{grammar:genitive|{{SITENAME}}}} $1',
+'siteusers' => '{{PLURAL:$2|1=участник|участники}} {{grammar:genitive|{{SITENAME}}}} $1',
+'anonusers' => '{{PLURAL:$2|1=анонимный участник|анонимные участники}} {{grammar:genitive|{{SITENAME}}}} $1',
 'creditspage' => 'Благодарности',
 'nocredits' => 'Нет списка участников для этой статьи',
 
@@ -3323,11 +3328,11 @@ The wiki server can't provide data in a format your client can read.",
 'pageinfo-robot-noindex' => 'Не разрешено',
 'pageinfo-views' => 'Количество просмотров',
 'pageinfo-watchers' => 'Число наблюдающих',
-'pageinfo-few-watchers' => 'Менее $1 {{PLURAL:$1|следящего|следящих}}',
+'pageinfo-few-watchers' => 'Менее $1 {{PLURAL:$1|1=следящего|следящих}}',
 'pageinfo-redirects-name' => 'Количество перенаправлений на эту страницу',
 'pageinfo-redirects-value' => '$1',
 'pageinfo-subpages-name' => 'Подстраницы данной страницы',
-'pageinfo-subpages-value' => '$1 ($2 {{PLURAL:$2|перенаправление|перенаправления|перенаправлений}}; $3 {{PLURAL:$3|обычная|обычные|обычных}})',
+'pageinfo-subpages-value' => '$1 ($2 {{PLURAL:$2|перенаправление|перенаправлений|перенаправления}}; $3 {{PLURAL:$3|обычная|обычных|обычные}})',
 'pageinfo-firstuser' => 'Создатель страницы',
 'pageinfo-firsttime' => 'Дата создания страницы',
 'pageinfo-lastuser' => 'Последний редактор',
@@ -3336,10 +3341,10 @@ The wiki server can't provide data in a format your client can read.",
 'pageinfo-authors' => 'Общее число различных авторов',
 'pageinfo-recent-edits' => 'Правок за последнее время (в течение $1)',
 'pageinfo-recent-authors' => 'Уникальных авторов за последнее время',
-'pageinfo-magic-words' => '{{PLURAL:$1|Магическое слово|Магические слова}} ($1)',
-'pageinfo-hidden-categories' => '{{PLURAL:$1|Скрытая категория|Скрытых категорий}} ($1)',
-'pageinfo-templates' => '{{PLURAL:$1|Шаблон|Шаблонов}} ($1)',
-'pageinfo-transclusions' => '{{PLURAL:$1|Включаемые страницы|Включаемых страниц}} ($1)',
+'pageinfo-magic-words' => '{{PLURAL:$1|1=Магическое слово|Магические слова}} ($1)',
+'pageinfo-hidden-categories' => '{{PLURAL:$1|1=Скрытая категория|Скрытых категорий}} ($1)',
+'pageinfo-templates' => '{{PLURAL:$1|1=Шаблон|Шаблонов}} ($1)',
+'pageinfo-transclusions' => '{{PLURAL:$1|1=Включаемые страницы|Включаемых страниц}} ($1)',
 'pageinfo-toolboxlink' => 'Сведения о странице',
 'pageinfo-redirectsto' => 'Перенаправление',
 'pageinfo-redirectsto-info' => 'сведения',
@@ -3397,23 +3402,23 @@ $1',
 'imagemaxsize' => "Ограничение на размер изображения:<br />''(для страницы описания файла)''",
 'thumbsize' => 'Размер уменьшенной версии изображения:',
 'widthheight' => '$1 × $2',
-'widthheightpage' => '$1 × $2, $3 {{PLURAL:$3|страница|страницы|страниц}}',
+'widthheightpage' => '$1 × $2, $3 {{PLURAL:$3|страница|страниц|страницы}}',
 'file-info' => 'размер файла: $1, MIME-тип: $2',
-'file-info-size' => '$1 × $2 {{PLURAL:$2|пиксель|пикселя|пикселей}}, размер файла: $3, MIME-тип: $4',
-'file-info-size-pages' => '$1 × $2 пикселей, размер файла: $3, MIME-тип: $4, $5 {{PLURAL:$5|страница|страницы|страниц}}',
+'file-info-size' => '$1 × $2 {{PLURAL:$2|пиксель|пикселей|пикселя}}, размер файла: $3, MIME-тип: $4',
+'file-info-size-pages' => '$1 × $2 пикселей, размер файла: $3, MIME-тип: $4, $5 {{PLURAL:$5|страница|страниц|страницы}}',
 'file-nohires' => 'Нет версии с бо́льшим разрешением.',
-'svg-long-desc' => 'SVG-файл, номинально $1 × $2 {{PLURAL:$2|пиксель|пикселя|пикселей}}, размер файла: $3',
-'svg-long-desc-animated' => 'Анимированный SVG-файл, номинально $1 × $2 {{PLURAL:$2|пиксель|пикселя|пикселей}}, размер файла: $3',
+'svg-long-desc' => 'SVG-файл, номинально $1 × $2 {{PLURAL:$2|пиксель|пикселей|пикселя}}, размер файла: $3',
+'svg-long-desc-animated' => 'Анимированный SVG-файл, номинально $1 × $2 {{PLURAL:$2|пиксель|пикселей|пикселя}}, размер файла: $3',
 'svg-long-error' => 'неправильный SVG-файл: $1',
 'show-big-image' => 'Исходный файл',
 'show-big-image-preview' => 'Размер при предпросмотре: $1.',
-'show-big-image-other' => '{{PLURAL:$2|Другое разрешение|Другие разрешения}}: $1.',
+'show-big-image-other' => '{{PLURAL:$2|1=Другое разрешение|Другие разрешения}}: $1.',
 'show-big-image-size' => '$1 × $2 пикселей',
 'file-info-gif-looped' => 'закольцованный',
-'file-info-gif-frames' => '$1 {{PLURAL:$1|Ñ\84Ñ\80ейм|Ñ\84Ñ\80ейма|Ñ\84Ñ\80еймов}}',
+'file-info-gif-frames' => '$1 {{PLURAL:$1|Ñ\84Ñ\80ейм|Ñ\84Ñ\80еймов|Ñ\84Ñ\80ейма}}',
 'file-info-png-looped' => 'закольцованный',
-'file-info-png-repeat' => 'проигрывается $1 {{PLURAL:$1|раз|раза|раз}}',
-'file-info-png-frames' => '$1 {{PLURAL:$1|кадÑ\80|кадÑ\80а|кадÑ\80ов}}',
+'file-info-png-repeat' => 'проигрывается $1 {{PLURAL:$1|раз|раз|раза}}',
+'file-info-png-frames' => '$1 {{PLURAL:$1|кадÑ\80|кадÑ\80ов|кадÑ\80а}}',
 'file-no-thumb-animation' => "'''Примечание. По техническим причинам миниатюры этого файла не будет анимироваться.'''",
 'file-no-thumb-animation-gif' => "'''Примечание. По техническим причинам миниатюры подобных GIF-изображений высокого разрешения не анимируются.'''",
 
@@ -3435,20 +3440,20 @@ $1',
 'minutes-abbrev' => '$1 м',
 'hours-abbrev' => '$1 ч',
 'days-abbrev' => '$1 д',
-'seconds' => '{{PLURAL:$1|$1 секунда|$1 секунды|$1 секунд}}',
-'minutes' => '{{PLURAL:$1|$1 минута|$1 минуты|$1 минут}}',
-'hours' => '{{PLURAL:$1|$1 Ñ\87аÑ\81|$1 Ñ\87аÑ\81а|$1 Ñ\87аÑ\81ов}}',
-'days' => '{{PLURAL:$1|$1 день|$1 дня|$1 дней}}',
-'weeks' => '{{PLURAL:$1|$1 неделя|$1 недели|$1 недель}}',
-'months' => '{{PLURAL:$1|$1 Ð¼ÐµÑ\81Ñ\8fÑ\86|$1 Ð¼ÐµÑ\81Ñ\8fÑ\86а|$1 Ð¼ÐµÑ\81Ñ\8fÑ\86ев}}',
-'years' => '{{PLURAL:$1|$1 Ð³Ð¾Ð´|$1 Ð³Ð¾Ð´Ð°|$1 Ð»ÐµÑ\82}}',
+'seconds' => '{{PLURAL:$1|$1 секунда|$1 секунд|$1 секунды}}',
+'minutes' => '{{PLURAL:$1|$1 минута|$1 минут|$1 минуты}}',
+'hours' => '{{PLURAL:$1|$1 Ñ\87аÑ\81|$1 Ñ\87аÑ\81ов|$1 Ñ\87аÑ\81а}}',
+'days' => '{{PLURAL:$1|$1 день|$1 дней|$1 дня}}',
+'weeks' => '{{PLURAL:$1|$1 неделя|$1 недель|$1 недели}}',
+'months' => '{{PLURAL:$1|$1 Ð¼ÐµÑ\81Ñ\8fÑ\86|$1 Ð¼ÐµÑ\81Ñ\8fÑ\86ев|$1 Ð¼ÐµÑ\81Ñ\8fÑ\86а}}',
+'years' => '{{PLURAL:$1|$1 Ð³Ð¾Ð´|$1 Ð»ÐµÑ\82|$1 Ð³Ð¾Ð´Ð°}}',
 'ago' => '$1 назад',
 'just-now' => 'только что',
 
 # Human-readable timestamps
-'hours-ago' => '$1 {{PLURAL:$1|Ñ\87аÑ\81\87аÑ\81а|Ñ\87аÑ\81ов}} назад',
-'minutes-ago' => '$1 {{PLURAL:$1|минуту|минуты|минут}} назад',
-'seconds-ago' => '$1 {{PLURAL:$1|секунду|секунды|секунд}} назад',
+'hours-ago' => '$1 {{PLURAL:$1|Ñ\87аÑ\81\87аÑ\81ов|Ñ\87аÑ\81а}} назад',
+'minutes-ago' => '$1 {{PLURAL:$1|минуту|минут|минуты}} назад',
+'seconds-ago' => '$1 {{PLURAL:$1|секунду|секунд|секунды}} назад',
 'monday-at' => 'в понедельник в $1',
 'tuesday-at' => 'во вторник в $1',
 'wednesday-at' => 'в среду в $1',
@@ -3704,7 +3709,7 @@ $1',
 'exif-exposureprogram-7' => 'Портретный режим (для снимков на близком расстоянии, с фоном не в фокусе)',
 'exif-exposureprogram-8' => 'Пейзажный режим (для пейзажных снимков, с фоном в фокусе)',
 
-'exif-subjectdistance-value' => '$1 {{PLURAL:$1|меÑ\82Ñ\80|меÑ\82Ñ\80а|меÑ\82Ñ\80ов}}',
+'exif-subjectdistance-value' => '$1 {{PLURAL:$1|меÑ\82Ñ\80|меÑ\82Ñ\80ов|меÑ\82Ñ\80а}}',
 
 'exif-meteringmode-0' => 'Неизвестно',
 'exif-meteringmode-1' => 'Средний',
@@ -3806,8 +3811,8 @@ $1',
 'exif-gpslongitude-w' => 'западной долготы',
 
 # Pseudotags used for GPSAltitudeRef
-'exif-gpsaltitude-above-sealevel' => '$1 {{PLURAL:$1|меÑ\82Ñ\80|меÑ\82Ñ\80а|меÑ\82Ñ\80ов}} над уровнем моря',
-'exif-gpsaltitude-below-sealevel' => '$1 {{PLURAL:$1|меÑ\82Ñ\80|меÑ\82Ñ\80а|меÑ\82Ñ\80ов}} ниже уровня моря',
+'exif-gpsaltitude-above-sealevel' => '$1 {{PLURAL:$1|меÑ\82Ñ\80|меÑ\82Ñ\80ов|меÑ\82Ñ\80а}} над уровнем моря',
+'exif-gpsaltitude-below-sealevel' => '$1 {{PLURAL:$1|меÑ\82Ñ\80|меÑ\82Ñ\80ов|меÑ\82Ñ\80а}} ниже уровня моря',
 
 'exif-gpsstatus-a' => 'Измерение не закончено',
 'exif-gpsstatus-v' => 'Готов к передаче данных',
@@ -3994,8 +3999,8 @@ $5
 
 # Language selector for translatable SVGs
 'img-lang-default' => '(язык по умолчанию)',
-'img-lang-info' => 'Преобразовать это изображение на $1 $2.',
-'img-lang-go' => 'Перейти',
+'img-lang-info' => 'Показать это изображение на языке $1 $2',
+'img-lang-go' => 'Применить',
 
 # Table pager
 'ascending_abbrev' => 'возр',
@@ -4035,11 +4040,11 @@ $5
 'livepreview-error' => 'Не удалось установить соединение: $1 «$2». Попробуйте воспользоваться обычным предпросмотром.',
 
 # Friendlier slave lag warnings
-'lag-warn-normal' => 'Изменения, сделанные менее чем $1 {{PLURAL:$1|секунду|секунды|секунд}} назад, могут быть не показаны в этом списке.',
-'lag-warn-high' => 'Из-за большого отставания в синхронизации серверов баз данных изменения, сделанные менее чем $1 {{PLURAL:$1|секунду|секунды|секунд}} назад, могут быть не показаны в этом списке.',
+'lag-warn-normal' => 'Изменения, сделанные менее чем $1 {{PLURAL:$1|секунду|секунд|секунды}} назад, могут быть не показаны в этом списке.',
+'lag-warn-high' => 'Из-за большого отставания в синхронизации серверов баз данных изменения, сделанные менее чем $1 {{PLURAL:$1|секунду|секунд|секунды}} назад, могут быть не показаны в этом списке.',
 
 # Watchlist editor
-'watchlistedit-numitems' => 'Ð\92аÑ\88 Ñ\81пиÑ\81ок Ð½Ð°Ð±Ð»Ñ\8eдениÑ\8f Ñ\81одеÑ\80жиÑ\82 $1 {{PLURAL:$1|запиÑ\81Ñ\8c|запиÑ\81и|запиÑ\81ей}}, не считая страниц обсуждений.',
+'watchlistedit-numitems' => 'Ð\92аÑ\88 Ñ\81пиÑ\81ок Ð½Ð°Ð±Ð»Ñ\8eдениÑ\8f Ñ\81одеÑ\80жиÑ\82 $1 {{PLURAL:$1|запиÑ\81Ñ\8c|запиÑ\81ей|запиÑ\81и}}, не считая страниц обсуждений.',
 'watchlistedit-noitems' => 'Ваш список наблюдения не содержит записей.',
 'watchlistedit-normal-title' => 'Изменение списка наблюдения',
 'watchlistedit-normal-legend' => 'Удаление записей из списка наблюдения',
@@ -4047,7 +4052,7 @@ $5
 Для удаления записей отметьте соответствующие позиции и нажмите кнопку «{{int:Watchlistedit-normal-submit}}».
 Вы также можете [[Special:EditWatchlist/raw|править список как текст]].',
 'watchlistedit-normal-submit' => 'Удалить записи',
-'watchlistedit-normal-done' => 'Ð\98з Ð²Ð°Ñ\88его Ñ\81пиÑ\81ка Ð½Ð°Ð±Ð»Ñ\8eдениÑ\8f {{PLURAL:$1|бÑ\8bла Ñ\83далена|бÑ\8bли Ñ\83даленÑ\8b|бÑ\8bло Ñ\83далено}} $1 {{PLURAL:$1|запиÑ\81Ñ\8c|запиÑ\81и|запиÑ\81ей}}:',
+'watchlistedit-normal-done' => 'Ð\98з Ð²Ð°Ñ\88его Ñ\81пиÑ\81ка Ð½Ð°Ð±Ð»Ñ\8eдениÑ\8f {{PLURAL:$1|бÑ\8bла Ñ\83далена|бÑ\8bло Ñ\83далено|бÑ\8bли Ñ\83даленÑ\8b}} $1 {{PLURAL:$1|запиÑ\81Ñ\8c|запиÑ\81ей|запиÑ\81и}}:',
 'watchlistedit-raw-title' => 'Редактирование списка наблюдения как текста',
 'watchlistedit-raw-legend' => 'Редактирование списка наблюдения',
 'watchlistedit-raw-explain' => 'Ниже перечислены страницы, находящиеся в вашем списке наблюдения. Вы можете изменять этот список, добавляя и удаляя из него строки с названиями, по одному названию на строке.
@@ -4056,8 +4061,8 @@ $5
 'watchlistedit-raw-titles' => 'Записи:',
 'watchlistedit-raw-submit' => 'Сохранить список',
 'watchlistedit-raw-done' => 'Ваш список наблюдения сохранён.',
-'watchlistedit-raw-added' => '{{PLURAL:$1|Ð\91Ñ\8bла Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð°|Ð\91Ñ\8bли Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ñ\8b\91Ñ\8bло Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¾}} $1 {{PLURAL:$1|запиÑ\81Ñ\8c|запиÑ\81и|запиÑ\81ей}}:',
-'watchlistedit-raw-removed' => '{{PLURAL:$1|Ð\91Ñ\8bла Ñ\83далена|Ð\91Ñ\8bли Ñ\83даленÑ\8b\91Ñ\8bло Ñ\83далено}} $1 {{PLURAL:$1|запиÑ\81Ñ\8c|запиÑ\81и|запиÑ\81ей}}:',
+'watchlistedit-raw-added' => '{{PLURAL:$1|Ð\91Ñ\8bла Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð°|Ð\91Ñ\8bло Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¾|Ð\91Ñ\8bли Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ñ\8b}} $1 {{PLURAL:$1|запиÑ\81Ñ\8c|запиÑ\81ей|запиÑ\81и}}:',
+'watchlistedit-raw-removed' => '{{PLURAL:$1|Ð\91Ñ\8bла Ñ\83далена|Ð\91Ñ\8bло Ñ\83далено|Ð\91Ñ\8bли Ñ\83даленÑ\8b}} $1 {{PLURAL:$1|запиÑ\81Ñ\8c|запиÑ\81ей|запиÑ\81и}}:',
 
 # Watchlist editing tools
 'watchlisttools-view' => 'Изменения на страницах из списка',
@@ -4165,7 +4170,7 @@ MediaWiki распространяется в надежде, что она бу
 'version-entrypoints-scriptpath' => '[https://www.mediawiki.org/wiki/Manual:$wgScriptPath Путь к скрипту]',
 
 # Special:Redirect
-'redirect' => 'Перенаправление с файла, участника или идентификатора версии',
+'redirect' => 'Перенаправление с файла, участника, страницы или идентификатора версии',
 'redirect-legend' => 'Перенаправление на файл или страницу',
 'redirect-summary' => 'Эта специальная страница перенаправляет на файл (с имени файла), страницу (с идентификатора версии) или страницу участника (с числового идентификатора участника).
 Использование: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revision/328429]] или [[{{#Special:Redirect}}/user/101]].',
@@ -4183,9 +4188,9 @@ MediaWiki распространяется в надежде, что она бу
 'fileduplicatesearch-legend' => 'Поиск дубликатов',
 'fileduplicatesearch-filename' => 'Имя файла:',
 'fileduplicatesearch-submit' => 'Найти',
-'fileduplicatesearch-info' => '$1 × $2 {{PLURAL:$2|пиксель|пикселя|пикселей}}<br />Размер файла: $3<br />MIME-тип: $4',
+'fileduplicatesearch-info' => '$1 × $2 {{PLURAL:$2|пиксель|пикселей|пикселя}}<br />Размер файла: $3<br />MIME-тип: $4',
 'fileduplicatesearch-result-1' => 'Файл «$1» не имеет идентичных дубликатов.',
-'fileduplicatesearch-result-n' => 'Файл Â«$1» Ð¸Ð¼ÐµÐµÑ\82 $2 {{PLURAL:$2|иденÑ\82иÑ\87нÑ\8bй Ð´Ñ\83бликаÑ\82|иденÑ\82иÑ\87нÑ\8bÑ\85 Ð´Ñ\83бликаÑ\82а|иденÑ\82иÑ\87нÑ\8bÑ\85 Ð´Ñ\83бликаÑ\82ов}}.',
+'fileduplicatesearch-result-n' => 'Файл Â«$1» Ð¸Ð¼ÐµÐµÑ\82 $2 {{PLURAL:$2|иденÑ\82иÑ\87нÑ\8bй Ð´Ñ\83бликаÑ\82|иденÑ\82иÑ\87нÑ\8bÑ\85 Ð´Ñ\83бликаÑ\82ов|иденÑ\82иÑ\87нÑ\8bÑ\85 Ð´Ñ\83бликаÑ\82а}}.',
 'fileduplicatesearch-noresults' => 'Не найден файл с именем «$1».',
 
 # Special:SpecialPages
@@ -4224,7 +4229,7 @@ MediaWiki распространяется в надежде, что она бу
 'tags' => 'Действующие метки изменений',
 'tag-filter' => 'Фильтр [[Special:Tags|меток]]:',
 'tag-filter-submit' => 'Отфильтровать',
-'tag-list-wrapper' => '([[Special:Tags|{{PLURAL:$1|Метка|Метки}}]]: $2)',
+'tag-list-wrapper' => '([[Special:Tags|{{PLURAL:$1|1=Метка|Метки}}]]: $2)',
 'tags-title' => 'Метки',
 'tags-intro' => 'На этой странице приведён список меток, которыми программное обеспечение отмечает правки, а также значения этих меток.',
 'tags-tag' => 'Имя метки',
@@ -4235,7 +4240,7 @@ MediaWiki распространяется в надежде, что она бу
 'tags-active-yes' => 'Да',
 'tags-active-no' => 'Нет',
 'tags-edit' => 'править',
-'tags-hitcount' => '$1 {{PLURAL:$1|изменение|изменения|изменений}}',
+'tags-hitcount' => '$1 {{PLURAL:$1|изменение|изменений|изменения}}',
 
 # Special:ComparePages
 'comparepages' => 'Сравнение страниц',
@@ -4280,13 +4285,13 @@ MediaWiki распространяется в надежде, что она бу
 # New logging system
 'logentry-delete-delete' => '$1 {{GENDER:$2|удалил|удалила}} страницу $3',
 'logentry-delete-restore' => '$1 {{GENDER:$2|восстановил|восстановила}} страницу $3',
-'logentry-delete-event' => '$1 {{GENDER:$2|изменил|изменила}} видимость {{PLURAL:$5|$5 записи|$5 записей}} журнала на $3: $4',
-'logentry-delete-revision' => '$1 {{GENDER:$2|изменил|изменила}} видимость {{PLURAL:$5|$5 версии|$5 версий}} на странице $3: $4',
+'logentry-delete-event' => '$1 {{GENDER:$2|изменил|изменила}} видимость {{PLURAL:$5|1=$5 записи|$5 записей}} журнала на $3: $4',
+'logentry-delete-revision' => '$1 {{GENDER:$2|изменил|изменила}} видимость {{PLURAL:$5|1=$5 версии|$5 версий}} на странице $3: $4',
 'logentry-delete-event-legacy' => '$1 {{GENDER:$2|изменил|изменила}} видимость записей журнала $3',
 'logentry-delete-revision-legacy' => '$1 {{GENDER:$2|изменил|изменила}} видимость версий на странице $3',
 'logentry-suppress-delete' => '$1 {{GENDER:$2|подавил|подавила}} страницу $3',
-'logentry-suppress-event' => '$1 скрытно {{GENDER:$2|изменил|изменила}} видимость {{PLURAL:$5|$5 записи|$5 записей}} журнала на $3: $4',
-'logentry-suppress-revision' => '$1 скрытно {{GENDER:$2|изменил|изменила}} видимость {{PLURAL:$5|$5 версии|$5 версий}} на странице $3: $4',
+'logentry-suppress-event' => '$1 скрытно {{GENDER:$2|изменил|изменила}} видимость {{PLURAL:$5|1=$5 записи|$5 записей}} журнала на $3: $4',
+'logentry-suppress-revision' => '$1 скрытно {{GENDER:$2|изменил|изменила}} видимость {{PLURAL:$5|1=$5 версии|$5 версий}} на странице $3: $4',
 'logentry-suppress-event-legacy' => '$1 скрытно {{GENDER:$2|изменил|изменила}} видимость записей журнала $3',
 'logentry-suppress-revision-legacy' => '$1 скрытно {{GENDER:$2|изменил|изменила}} видимость версий на странице $3',
 'revdelete-content-hid' => 'содержание скрыто',
@@ -4337,10 +4342,10 @@ MediaWiki распространяется в надежде, что она бу
 'api-error-badaccess-groups' => 'Вам не разрешено загружать файлы в эту вики.',
 'api-error-badtoken' => 'Внутренняя ошибка:  некорректный токен.',
 'api-error-copyuploaddisabled' => 'Загрузка по URL-адресу отключена на этом сервере.',
-'api-error-duplicate' => 'Уже {{PLURAL:$1|существует  [$2 другой файл]|существуют [$2 другие файлы]}} с таким же содержимым',
-'api-error-duplicate-archive' => 'Раньше на сайте {{PLURAL:$1|уже был [$2 файл]|были [$2 файлы]}} с точно таким же содержанием, но {{PLURAL:$1|он был удалён|они были удалены}}.',
-'api-error-duplicate-archive-popup-title' => 'Дубликаты {{PLURAL:$1|файла|файлов}}, которые уже были удалены.',
-'api-error-duplicate-popup-title' => 'Дубликат {{PLURAL:$1|файла|файлов}}',
+'api-error-duplicate' => 'Уже {{PLURAL:$1|1=существует [$2 другой файл]|существуют [$2 другие файлы]}} с таким же содержимым',
+'api-error-duplicate-archive' => 'Раньше на сайте {{PLURAL:$1|1=уже был [$2 файл]|были [$2 файлы]}} с точно таким же содержанием, но {{PLURAL:$1|1=он был удалён|они были удалены}}.',
+'api-error-duplicate-archive-popup-title' => 'Дубликаты {{PLURAL:$1|1=файла|файлов}}, которые уже были удалены.',
+'api-error-duplicate-popup-title' => 'Дубликат {{PLURAL:$1|1=файла|файлов}}',
 'api-error-empty-file' => 'Отправленный вами файл пуст.',
 'api-error-emptypage' => 'Не допускается создание новых пустых страниц.',
 'api-error-fetchfileerror' => 'Внутренняя ошибка: что-то пошло не так при получении файла.',
@@ -4349,7 +4354,7 @@ MediaWiki распространяется в надежде, что она бу
 'api-error-file-too-large' => 'Отправленный вами файл слишком велик.',
 'api-error-filename-tooshort' => 'Слишком короткое имя файла.',
 'api-error-filetype-banned' => 'Этот тип файлов запрещён.',
-'api-error-filetype-banned-type' => '$1 — {{PLURAL:$4|запрещённый тип файла|запрещённые типы файлов}}. {{PLURAL:$3|Разрешённый тип файлов —|Разрешённые типы файлов:}} $2.',
+'api-error-filetype-banned-type' => '$1 — {{PLURAL:$4|1=запрещённый тип файла|запрещённые типы файлов}}. {{PLURAL:$3|1=Разрешённый тип файлов —|Разрешённые типы файлов:}} $2.',
 'api-error-filetype-missing' => 'У этого файла отсутствует расширение.',
 'api-error-hookaborted' => 'Изменение, которые вы пытались сделать, прервано обработчиком расширения.',
 'api-error-http' => 'Внутренняя ошибка: не удаётся подключиться к серверу.',
@@ -4376,31 +4381,31 @@ MediaWiki распространяется в надежде, что она бу
 'api-error-verification-error' => 'Возможно, этот файл повреждён или имеет неправильное расширение.',
 
 # Durations
-'duration-seconds' => '$1 {{PLURAL:$1|секунда|секунды|секунд}}',
-'duration-minutes' => '$1 {{PLURAL:$1|минута|минуты|минут}}',
-'duration-hours' => '$1 {{PLURAL:$1|Ñ\87аÑ\81\87аÑ\81а|Ñ\87аÑ\81ов}}',
-'duration-days' => '$1 {{PLURAL:$1|день|дня|дней}}',
-'duration-weeks' => '$1 {{PLURAL:$1|неделя|недели|недель}}',
-'duration-years' => '$1 {{PLURAL:$1|год|года|леÑ\82}}',
-'duration-decades' => '$1 {{PLURAL:$1|десятилетие|десятилетия|десятилетий}}',
-'duration-centuries' => '$1 {{PLURAL:$1|век|века|веков}}',
-'duration-millennia' => '$1 {{PLURAL:$1|тысячелетие|тысячелетия|тысячелетий}}',
+'duration-seconds' => '$1 {{PLURAL:$1|секунда|секунд|секунды}}',
+'duration-minutes' => '$1 {{PLURAL:$1|минута|минут|минуты}}',
+'duration-hours' => '$1 {{PLURAL:$1|Ñ\87аÑ\81\87аÑ\81ов|Ñ\87аÑ\81а}}',
+'duration-days' => '$1 {{PLURAL:$1|день|дней|дня}}',
+'duration-weeks' => '$1 {{PLURAL:$1|неделя|недель|недели}}',
+'duration-years' => '$1 {{PLURAL:$1|год|леÑ\82|года}}',
+'duration-decades' => '$1 {{PLURAL:$1|десятилетие|десятилетий|десятилетия}}',
+'duration-centuries' => '$1 {{PLURAL:$1|век|веков|века}}',
+'duration-millennia' => '$1 {{PLURAL:$1|тысячелетие|тысячелетий|тысячелетия}}',
 
 # Image rotation
-'rotate-comment' => 'Ð\98зобÑ\80ажение Ð¿Ð¾Ð²Ñ\91Ñ\80нÑ\83Ñ\82о Ð½Ð° $1 Ð³Ñ\80адÑ\83Ñ\81{{PLURAL:$1||а|ов}} по часовой стрелке',
+'rotate-comment' => 'Ð\98зобÑ\80ажение Ð¿Ð¾Ð²Ñ\91Ñ\80нÑ\83Ñ\82о Ð½Ð° $1 Ð³Ñ\80адÑ\83Ñ\81{{PLURAL:$1||ов|а}} по часовой стрелке',
 
 # Limit report
 'limitreport-title' => 'Данные анализатора:',
 'limitreport-cputime' => 'Использование времени процессора',
-'limitreport-cputime-value' => '$1 {{PLURAL:$1|секунда|секунды|секунд}}',
+'limitreport-cputime-value' => '$1 {{PLURAL:$1|секунда|секунд|секунды}}',
 'limitreport-walltime' => 'Использование в режиме реального времени',
-'limitreport-walltime-value' => '$1 {{PLURAL:$1|секунда|секунды|секунд}}',
+'limitreport-walltime-value' => '$1 {{PLURAL:$1|секунда|секунд|секунды}}',
 'limitreport-ppvisitednodes' => 'Количество узлов, посещённых препроцессором',
 'limitreport-ppgeneratednodes' => 'Количество сгенерированных препроцессором узлов',
 'limitreport-postexpandincludesize' => 'Размер раскрытых включений',
-'limitreport-postexpandincludesize-value' => '$1/$2 {{PLURAL:$2|байÑ\82|байÑ\82а|байÑ\82ов}}',
+'limitreport-postexpandincludesize-value' => '$1/$2 {{PLURAL:$2|байÑ\82|байÑ\82ов|байÑ\82а}}',
 'limitreport-templateargumentsize' => 'Размер аргумента шаблона',
-'limitreport-templateargumentsize-value' => '$1/$2 {{PLURAL:$2|байÑ\82|байÑ\82а|байÑ\82ов}}',
+'limitreport-templateargumentsize-value' => '$1/$2 {{PLURAL:$2|байÑ\82|байÑ\82ов|байÑ\82а}}',
 'limitreport-expansiondepth' => 'Наибольшая глубина расширения',
 'limitreport-expensivefunctioncount' => 'Количество «дорогих» функций анализатора',
 
index e7c0045..8067903 100644 (file)
@@ -10,6 +10,7 @@
  * @author Antofa
  * @author Cornelia
  * @author Felis
+ * @author Jun Misugi
  * @author Kaganer
  */
 
@@ -116,7 +117,7 @@ $messages = array(
 'tog-editsection' => 'Mudìfigga di li sezzioni attrabessu lu cullegamentu [mudifigga]',
 'tog-editsectiononrightclick' => "Mudìfigga di li sezzioni attrabessu lu clic dresthu i' lu tìturu (nezzessàriu JavaScript)",
 'tog-showtoc' => "Musthra l'indizi pa li pàgini cun più di 3 sezzioni",
-'tog-rememberpassword' => "Ammenta la paràura d'órdhini (nezzessàriu azzittà li cookie) (for a maximum of $1 {{PLURAL:$1|day|days}})",
+'tog-rememberpassword' => "Ammenta la paràura d'órdhini (nezzessàriu azzittà li cookie) (for a maximum of $1 {{PLURAL:$1|dì|dì}})",
 'tog-watchcreations' => "Aggiungi li pàgini criaddi a l'abbaidaddi ippiziari",
 'tog-watchdefault' => "Aggiungi li pàgini mudìfiggaddi a l'abbaidaddi ippiziari",
 'tog-watchmoves' => "Aggiungi li pàgini ippusthaddi a l'abbaidaddi ippiziari",
@@ -129,6 +130,7 @@ $messages = array(
 'tog-enotifminoredits' => 'Signàrami pa postha erettrònica puru li mudìfigghi minori',
 'tog-enotifrevealaddr' => "Rivera lu me' indirizzu di postha erettrònica i' l'imbasciaddi d'avvisu",
 'tog-shownumberswatching' => "Musthra lu nùmaru d'utenti ch'àni la pàgina abbaidadda",
+'tog-oldsig' => 'Fimma esisthenti',
 'tog-fancysig' => "Interpreta i cumandi wiki i' la fimma (chena cullegaumentu otomatiggu)",
 'tog-uselivepreview' => "Attiba la funzioni ''Live preview'' (dumanda JavaScript; ippirimintari)",
 'tog-forceeditsummary' => "Dumanda cunfèimma si l'oggettu di la mudìfigga è bioddu",
@@ -195,6 +197,18 @@ $messages = array(
 'oct' => 'SAini',
 'nov' => 'SAndria',
 'dec' => 'Nad',
+'january-date' => '$1 Ginnagiu',
+'february-date' => '$1 Fribagiu',
+'march-date' => '$1 Matzu',
+'april-date' => '$1 Abriri',
+'may-date' => '$1 Maggiu',
+'june-date' => '$1 Làmpada',
+'july-date' => '$1 Tríura',
+'august-date' => '$1 Aosthu',
+'september-date' => '$1 Cabbidanni',
+'october-date' => '$1 Santuaini',
+'november-date' => "$1 Sant'Andria",
+'december-date' => '$1 Naddari',
 
 # Categories related messages
 'pagecategories' => '{{PLURAL:$1|Categuria|Categuri}}',
@@ -205,13 +219,14 @@ $messages = array(
 'hidden-categories' => '{{PLURAL:$1|Categuria cuadda|Categuri cuaddi}}',
 'hidden-category-category' => 'Categuri cuaddi',
 'category-subcat-count' => "{{PLURAL:$2|Chistha categuria cunteni un'unica sottocateguria, indicadda inogghi.|Chistha categuria cunteni {{PLURAL:$1|la sottocateguria indicadda|li $1 sottocategurì indicaddi}} inogghi, i' un tutari di $2.}}",
-'category-article-count' => "{{PLURAL:$2|Chistha categuria cunteni un'unica pagina, indicadda inogghi.|Chistha categuria cunteni {{PLURAL:$1|la pagina indicadda|li $1 pagini indicaddi}} inogghi, i' un tutari di $2.}}",
+'category-article-count' => "{{PLURAL:$2|Chistha categuria cunteni un'única pàgina, indicadda inogghi.|Chistha categuria cunteni {{PLURAL:$1|la pàgina indicadda|li $1 pàgini indicaddi}} inogghi, i' un tutari di $2.}}",
+'category-file-count' => "{{PLURAL:$2|Chistha categuria cunteni unu únicu file, indicaddu inogghi.|{{PLURAL:$1|Lu file sighenti è|$1 Li file sighenti so}} inogghi, i' un tutari di $2.}}",
 'listingcontinuesabbrev' => '(séguiddu)',
 
 'about' => 'Infuimmazioni',
 'article' => 'Pagina',
 'newwindow' => "(s'abbri in d'unu nobu balchoni)",
-'cancel' => 'Annulla',
+'cancel' => 'Annullà',
 'moredotdotdot' => 'Althru...',
 'mypage' => 'La mea pàgina',
 'mytalk' => "Li me' dischussioni",
@@ -229,11 +244,18 @@ $messages = array(
 'faqpage' => 'Project:FAQ (infuimmazioni e aggiuddu)',
 
 # Vector skin
+'vector-action-addsection' => 'Aggiungì oggettu',
 'vector-action-delete' => 'Canzella',
 'vector-action-move' => 'Ippustha',
+'vector-action-protect' => 'Pruteggì',
 'vector-view-create' => 'Cria',
 'vector-view-edit' => 'Mudifigga',
+'vector-view-history' => 'Vèdi isthòria',
 'vector-view-view' => 'Leggi',
+'vector-view-viewsource' => 'Vèdi fonti',
+'actions' => 'Azioni',
+'namespaces' => 'Tipi di pàgina:',
+'variants' => 'Varianti',
 
 'errorpagetitle' => 'Errori',
 'returnto' => 'Turra a $1.',
@@ -268,7 +290,7 @@ $messages = array(
 'personaltools' => 'Isthrumenti passunari',
 'postcomment' => 'Noba sezzioni',
 'articlepage' => 'Vedi la bozi',
-'talk' => 'dischussioni',
+'talk' => 'Dischussioni',
 'views' => 'Vìsiti',
 'toolbox' => 'Isthrumenti',
 'userpage' => 'Visuarizza la pàgina utenti',
@@ -319,7 +341,7 @@ $messages = array(
 'retrievedfrom' => 'Buggaddu da "$1"',
 'youhavenewmessages' => 'Ài $1 ($2).',
 'youhavenewmessagesmulti' => 'Ài nobi imbasciaddi i $1',
-'editsection' => 'mudifigga',
+'editsection' => 'Mudìfigga',
 'editold' => 'mudifigga',
 'viewsourceold' => "visuarizza l'orìgini",
 'editlink' => 'mudifigga',
@@ -414,7 +436,7 @@ Zerthuni pàgini pudìani continuà a apparì cumenti si la iscidda nò fùssia
 'yourname' => 'Innòmu utenti',
 'yourpassword' => "Paràura d'órdhini",
 'yourpasswordagain' => "Ripeti la paràura d'órdhini",
-'remembermypassword' => "Ammenta la paràura d'órdhini (for a maximum of $1 {{PLURAL:$1|day|days}})",
+'remembermypassword' => "Ammenta la me' paràura d'órdhini in chisthu nabiggadori (par un màssimu di $1 {{PLURAL:$1|dì|dì}})",
 'yourdomainname' => 'Ippizzificà lu dumìniu',
 'externaldberror' => "S'è verifiggaddu un errori cu lu server di autentificazioni esthernu, oppuru nò si diponi di l'autorizazioni nezzessàri pa aggiornà la propria registhrazioni estherna.",
 'login' => 'Intra',
@@ -425,10 +447,11 @@ Zerthuni pàgini pudìani continuà a apparì cumenti si la iscidda nò fùssia
 'userlogout' => 'Esci',
 'notloggedin' => 'Intradda no effettuadda',
 'nologin' => "No ài una registhrazioni? '''$1'''.",
-'nologinlink' => 'Crèara abà',
+'nologinlink' => 'Crea una noba registhrazioni',
 'createaccount' => 'Crea una noba registhrazioni',
 'gotaccount' => "Ài già'na registhrazioni? '''$1'''.",
 'gotaccountlink' => 'Intra',
+'userlogin-resetlink' => "Hai immintiggaddu li minuddi d'intradda?",
 'createaccountmail' => 'via postha erettrònica',
 'badretype' => "Li paràuri d'órdhini insiriddi nò cuinzidhini tra èddi.",
 'userexists' => "L'innòmu utenti insiriddu è già utirizaddu. Pa pazieri chirria un'innòmu utenti dibessu.",
@@ -515,7 +538,7 @@ Pa cumprità la registhrazioni è nezzessàriu impusthà una noba paràura d'ór
 'subject' => 'Tìturu:',
 'minoredit' => 'Chistha è una mudìfigga minori',
 'watchthis' => "Aggiungi a l'abbaidaddi ippiziari",
-'savearticle' => 'Saivva la pagina',
+'savearticle' => 'Saivvà la pagina',
 'preview' => 'Antiprimma',
 'showpreview' => 'Visuarizza antiprimma',
 'showlivepreview' => "Funzioni ''Live preview''",
@@ -574,6 +597,7 @@ Si vói crià la pàgina abà, pói sùbidu ischribì in giossu (abbaidda li [[{
 S'ài sighiddu lu cullegamentu pa un'errori, è suffizenti incalchà lu buttoni '''Indareddu''' i' lu propriu nabiggadori.",
 'anontalkpagetext' => "----''Chistha è la pàgina di dischussioni di un'utenti anònimu, chi no ha ancora criaddu una registhrazioni o, in dugna modu, no la usa. Pa identifiggallu è dunca nezzessàriu usà lu sóiu nùmaru di l'indirizzu IP. L'indirizzi IP, parò, poni assé cundibisi da più utenti. Si sei un'utenti anònimu e vói chi li cummenti prisenti in chistha pàgina no si rifèrini a te, [[Special:UserLogin|crea una noba registhrazion o intra]] cu' chidda ch'hai già pa evità d'assé confusu cu' althri utenti anònimi in futuru.''",
 'noarticletext' => "Abà chistha pàgina è biodda. È pussìbiri [[Special:Search/{{PAGENAME}}|zirchà chistu tituru]] i' l'althri pàgini di lu situ, <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} zirchà i' li rigisthri curriraddi] oppuru [{{fullurl:{{FULLPAGENAME}}|action=edit}} mudifiggà la pagina abà]</span>.",
+'noarticletext-nopermission' => "Abà chistha pàgina è biodda. È pussìbiri [[Special:Search/{{PAGENAME}}|zirchà chistu tìturu]] i' l'althri pàgini di lu situ, oppuru <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} zirchà i' li rigisthri reratibi]</span>, parò nò pói crià chistha pàgina.",
 'userpage-userdoesnotexist' => 'La registhrazioni "<nowiki>$1</nowiki>" nò curripundi a un\'utenti rigisthraddu. Verifiggà chi s\'aggia avveru gana di crià o mudìfiggà chistha pàgina.',
 'clearyourcache' => "'''Nota:''' daboi abé saivaddu è nezzessàriu pulì la mimória cache di lu propriu nabiggadori pà vidé li ciambamenti. Pa '''Mozilla / Firefox / Safari''': fà clic i Ricàrrigga incalchendi lu buttoni di li maiuschuri, oppuru incalchà ''Ctrl-Maiusc-R'' (''Cmd-Maiusc-R'' i Mac); pa '''Internet Explorer:''' mantinì incalchaddu lu tasthu ''Ctrl'' mentri s'incalcha lu buttoni ''Aggiorna'' o incalchà ''Ctrl-F5''; pa '''Konqueror''': incalchà lu buttoni ''Ricarica'' o lu tasthu ''F5''; pa '''Opera''' pò assé nezzessàriu ibbuiddà cumpretamenti la mimória cache da lu menù ''Strumenti → Preferenze''.",
 'usercssyoucanpreview' => "'''Suggerimentu:''' Usa lu buttoni '''Visuarizza antiprimma''' pa prubà li nobi CSS primma di sàivvaddi.",
@@ -592,7 +616,7 @@ S'ài sighiddu lu cullegamentu pa un'errori, è suffizenti incalchà lu buttoni
 
 '''Si lu probrema prisisthi, pói prubà à iscì e turrà a intrà.'''",
 'token_suffix_mismatch' => "'''La mudìfigga nò è isthadda sàivvadda parchí lu nabiggadori à musthraddu di gesthì in modu erraddu i caràtteri di punteggiaddura i' lu identifigganti di la mudìfigga. Pa evità una pussìbiri corruzioni di lu testhu di la pàgina, è isthadda rifiutadda l'intrea mudìfigga. Chistha situazioni pó verifiggassi, calch’e voltha, candu so usaddi zerthuni sivvìzi di proxy anònimi via reti chi àni di l'errori.'''",
-'editing' => 'Mudifigga di $1',
+'editing' => 'Mudìfigga di $1',
 'editingsection' => 'Mudifigga di $1 (sezzioni)',
 'editingcomment' => 'Mudifigga di $1 (cummentu)',
 'editconflict' => "Cuntrasthu d'edizioni i $1",
@@ -666,8 +690,9 @@ La rasgioni frunidda da $3 è ''$2''",
 
 Ippiegazioni: (curr) = diffarènzi cu la versioni currenti, (priz) = diffarènzi cu la versioni prizzidenti, '''m''' = mudìfigga minori, '''b''' = mudìfigga d'un bot, '''N''' = pàgina noba",
 'history-fieldset-title' => "Ischurri i' la cronologia",
-'histfirst' => 'Primma',
-'histlast' => 'Ulthima',
+'history-show-deleted' => 'Musthrà soru versioni annulladdi',
+'histfirst' => 'primma',
+'histlast' => 'ùlthimi',
 'historysize' => '({{PLURAL:$1|1 byte|$1 bytes}})',
 'historyempty' => '(biodda)',
 
@@ -686,7 +711,7 @@ Cunsulthà lu [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} rigi
 'rev-deleted-text-view' => "Chistha versioni di la pàgina è isthadda buggadda da l'archìbi visìbiri a lu pùbbriggu.
 Lu testhu pò assé visuarizzaddu soru da l'amministhradori di lu situ.
 Cunsulthà lu [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} rigisthru di canzilladdura] pa althri dettàgli.",
-'rev-delundel' => 'musthra/cua',
+'rev-delundel' => 'musthrà/cuà',
 'revisiondelete' => 'Canzella o ricùpara versioni',
 'revdelete-nooldid-title' => 'Versioni nò ippizzificadda',
 'revdelete-nooldid-text' => "No ài ippizzificaddu la o li versioni di la pàgina i' li quari eseguì chistha funzioni; pò assé chi nò esisthini.",
@@ -745,9 +770,24 @@ Cunsulthà lu [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} rigi
 'notextmatches' => 'Nisciuna curripundènzia i lu teshu di li pàgini',
 'prevn' => 'prizzidenti {{PLURAL:$1|$1}}',
 'nextn' => 'sighenti {{PLURAL:$1|$1}}',
+'prevn-title' => 'Prizzidenti $1 {{PLURAL:$1|risulthaddu|risulthaddi}}',
+'nextn-title' => 'Sighenti $1 {{PLURAL:$1|risulthaddu|risulthaddi}}',
+'shown-title' => 'Musthra {{PLURAL:$1|un risulthaddu|$1 risulthaddi}} pa pàgina',
 'viewprevnext' => 'Vèdi ($1 {{int:pipe-separator}} $2) ($3).',
+'searchmenu-exists' => "'''Z'è una pàgina ciamadda\"[[:\$1]]\" in chisthu vichi.''' {{PLURAL:\$2|0=|Vèdi puru li althri risulthaddi agattaddi.}}",
+'searchmenu-new' => "'''Crea la pàgina \"[[:\$1]]\" in chistha vichi!''' {{PLURAL:\$2|0=|Vèdi puru la pàgina agattadda cun la zercha tòia.|Vèdi puru li risulthaddi agattaddi .}}",
+'searchprofile-articles' => 'Bozi',
+'searchprofile-project' => "Pàgini d'aggiuddu e di prugettu",
+'searchprofile-images' => 'Mùrthimediari',
 'searchprofile-everything' => 'Tuttu',
+'searchprofile-advanced' => 'Abanzaddu',
+'searchprofile-articles-tooltip' => 'Zercha in $1',
+'searchprofile-project-tooltip' => 'Zercha in $1',
+'searchprofile-images-tooltip' => 'Zirchà dati',
+'searchprofile-everything-tooltip' => 'Zercha in tuttu lu cuntinuddu (pàgini di dischussioni cumpresi)',
+'searchprofile-advanced-tooltip' => 'Zercha in althri tipi di pàgina',
 'search-result-size' => '$1 ({{PLURAL:$2|una paraura|$2 parauri}})',
+'search-result-category-size' => '{{PLURAL:$1|1 erementu|$1 erementi}} ({{PLURAL:$2|1 sottucateguria|$2 sottucateguri}}, {{PLURAL:$3|1 file|$3 file}})',
 'search-redirect' => '(rinviu $1)',
 'search-section' => '(sezzioni $1)',
 'search-suggest' => 'Forsi zerchabi: $1',
@@ -759,6 +799,8 @@ Cunsulthà lu [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} rigi
 'searchall' => 'tutti',
 'showingresults' => "Accó {{PLURAL:$1|màssimu '''1''' risulthaddu|màssimu li '''$1''' risulthaddi}} à partì da lu nùmaru #'''$2'''.",
 'showingresultsnum' => "Accó {{PLURAL:$3|'''1''' risulthaddu |li '''$3''' risulthaddi}} à partì da lu nùmaru #'''$2'''.",
+'showingresultsheader' => "{{PLURAL:$5|Risulthaddu '''$1''' of '''$3'''|Risulthaddi '''$1 - $2''' di '''$3'''}} pa '''$4'''",
+'search-nonefound' => "Nisciuni risulthaddi pa la to' zercha",
 'powersearch-legend' => 'Zercha abanzadda',
 'powersearch-ns' => "Zercha i' li tipi di pàgina:",
 'powersearch-redir' => 'Listha rinvii',
@@ -860,7 +902,7 @@ Cunsulthà lu [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} rigi
 'grouppage-bureaucrat' => '{{ns:project}}:Buròcrati',
 
 # Special:Log/newusers
-'newuserlogpage' => 'Nobi utenti',
+'newuserlogpage' => 'Rigisthru di nobi utenti',
 
 # User rights log
 'rightslog' => 'Diritti di li utenti',
@@ -872,9 +914,13 @@ Cunsulthà lu [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} rigi
 # Recent changes
 'nchanges' => '$1 {{PLURAL:$1|mudìfigga|mudìfigghi}}',
 'recentchanges' => 'Ulthimi mudìfigghi',
-'recentchanges-legend' => 'Opzioni ulthimi mudifigghi',
+'recentchanges-legend' => 'Opzioni ùlthimi mudìfigghi',
 'recentchanges-summary' => 'Chistha pàgina prisinta li mudìfigghi più rizzenti a li cuntinuddi di lu situ.',
 'recentchanges-feed-description' => 'Chisthu feed cunteni li mudìfigghi più rizzenti a li cuntinuddi di lu situ.',
+'recentchanges-label-newpage' => 'Noba pàgina',
+'recentchanges-label-minor' => 'Chistha è una mudìfigga minori',
+'recentchanges-label-bot' => 'Chistha è una mudìfigga pa unu bot',
+'recentchanges-label-unpatrolled' => 'Mudìfigga nò ancora contrulladda',
 'rcnotefrom' => "Inogghi so erencaddi li mudìfigghi arriggaddi a parthì da '''$2''' (finz'a '''$1''').",
 'rclistfrom' => 'Musthra li mudìfigghi arriggaddi à partì da $1',
 'rcshowhideminor' => '$1 li mudìfigghi minori',
@@ -886,8 +932,8 @@ Cunsulthà lu [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} rigi
 'rclinks' => "Musthra li $1 mudìfigghi più rizzenti arriggaddi i' l'ulthimi $2 dì<br />$3",
 'diff' => 'diff',
 'hist' => 'cron',
-'hide' => 'cua',
-'show' => 'musthra',
+'hide' => 'Cua',
+'show' => 'Musthra',
 'minoreditletter' => 'm',
 'newpageletter' => 'N',
 'boteditletter' => 'b',
@@ -895,7 +941,7 @@ Cunsulthà lu [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} rigi
 'rc_categories' => 'Limita a li categuri (siparaddi da "|")',
 'rc_categories_any' => 'Cassisia',
 'newsectionsummary' => '/* $1 */ noba sezzioni',
-'rc-enhanced-expand' => 'Musthra dettagli (dumanda JavaScript)',
+'rc-enhanced-expand' => 'Musthrà dettagli (dumanda JavaScript)',
 'rc-enhanced-hide' => 'Cua dettàgli',
 
 # Recent changes linked
@@ -990,6 +1036,7 @@ Si si diponi di l'immàgina i' la risoruzioni originari, pa piazeri carriggalla.
 'upload-curl-error28-text' => "Lu situ à impiegaddu troppu tempu a rippundì. Verifiggà chi lu situ sia attibu, aisittà calchi minuti e turrà a prubà, pussibiimmenti candu v'è mancu genti.",
 
 'license' => "Licènzia d'usu:",
+'license-header' => "Licènzia d'usu:",
 'nolicense' => 'Nisciuna licènzia indicadda',
 'license-nopreview' => '(Antiprimma nò dipunìbiri)',
 'upload_source_url' => " (un'indirizzu vàriddu e pùbbriggu)",
@@ -1020,10 +1067,11 @@ Si si diponi di l'immàgina i' la risoruzioni originari, pa piazeri carriggalla.
 'filehist-dimensions' => 'Misuri',
 'filehist-filesize' => 'Misuri di lu file',
 'filehist-comment' => 'Oggettu',
-'imagelinks' => 'Cullegamenti a lu file',
+'imagelinks' => 'Utirizazioni di lu file',
 'linkstoimage' => "{{PLURAL:$1|La sighenti pàgina pùnta|Li sighenti $1 pàgini pùntani}} a l'immàgina:",
 'nolinkstoimage' => "Nisciuna pàgina cunteni cullegamenti a l'immàgina.",
 'sharedupload' => 'Chisthu file prubeni da $1 e pó assé utirizaddu da althri prugetti.',
+'sharedupload-desc-here' => 'Chisthu file prubeni da $1 e pó assé utirizaddu da althri prugetti. La deschrizioni di la [$2 pàgina di deschrizioni] è indicadda in giossu.',
 'uploadnewversion-linktext' => 'Carrigga una nóba versioni di chistu file',
 
 # File reversion
@@ -1128,6 +1176,7 @@ Si si diponi di l'immàgina i' la risoruzioni originari, pa piazeri carriggalla.
 'protectedtitles' => 'Tìturi prutiggiddi',
 'protectedtitlesempty' => 'Abà nò vi so tìturi prutiggiddi.',
 'listusers' => 'Erencu di li utenti',
+'usercreated' => '{{GENDER:$3|Criaddu}} lu $1 a $2',
 'newpages' => 'Pàgini più rizzenti',
 'newpages-username' => 'Nommu utenti:',
 'ancientpages' => 'Pàgini mancu rizzenti',
@@ -1178,6 +1227,7 @@ Also see [[Special:WantedCategories|wanted categories]].",
 # Special:LinkSearch
 'linksearch' => 'Cullegamenti estherni',
 'linksearch-ok' => 'Zercha',
+'linksearch-line' => '$1 ha liaddura da $2',
 
 # Special:ListUsers
 'listusersfrom' => "Musthra l'utenti parthendi da:",
@@ -1209,7 +1259,8 @@ Also see [[Special:WantedCategories|wanted categories]].",
 
 # Watchlist
 'watchlist' => 'Abbaidaddi ippiziari',
-'mywatchlist' => 'Abbaidaddi ippiziari',
+'mywatchlist' => 'Abbaiddaddi ippiziari',
+'watchlistfor2' => 'Pa $1 $2',
 'nowatchlist' => "La listha di l'abbaidaddi ippiziari è biodda.",
 'watchlistanontext' => "Pa visuarizzà e mudìfiggà l'erencu di l'abbaidaddi ippiziari è nezzessàriu $1.",
 'watchnologin' => 'Intradda nò effettuadda',
@@ -1285,8 +1336,9 @@ Pa dì cosa ni pensi e dumandà assisthènzia:
 'confirmdeletetext' => "Sei canzillendi pa sempri da la bancati una pàgina o un'immàgina, umpari a la cronologia d'edda.
 Pa piazzeri, cunfèimma chi vói canzillà avveru, ch'ài cumpresu li cunsiguènzi di l'azioni tóia e ch'edda è cunfòimmi a li [[{{MediaWiki:Policy-url}}|lìni ghia]].",
 'actioncomplete' => 'Azioni cumpritadda',
+'actionfailed' => 'Azioni craccadda',
 'deletedtext' => 'La pàgina "$1" è isthadda canzilladda. Cunsultha lu $2 pa un\'erencu di li pàgini canzilladdi da poggu tempu.',
-'dellogpage' => 'Canzilladduri',
+'dellogpage' => 'Rigisthru di li canzilladduri',
 'dellogpagetext' => 'Inogghi so erencaddi li pàgini canzilladdi da poggu tempu.',
 'deletionlog' => 'Rigisthru di li canzilladduri',
 'reverted' => 'Turra a la versioni prizzidenti',
@@ -1302,7 +1354,7 @@ Pa piazzeri, cunfèimma chi vói canzillà avveru, ch'ài cumpresu li cunsiguèn
 # Rollback
 'rollback' => 'Annulla li mudìfigghi',
 'rollback_short' => 'Turra che primma',
-'rollbacklink' => 'turra che primma',
+'rollbacklink' => 'turrà che primma',
 'rollbackfailed' => 'Nò è ridisciddu a turrà che primma',
 'cantrollback' => "Impussìbiri annullà li mudìfigghi; l'utenti chi n'è l'autori è l'unicu cuntribudori di la pàgina.",
 'editcomment' => "L'oggettu di la mudìfigga era: \"''\$1''\".",
@@ -1312,7 +1364,7 @@ Pa piazzeri, cunfèimma chi vói canzillà avveru, ch'ài cumpresu li cunsiguèn
 'sessionfailure' => "S'è verifigaddu un probrema i' la sissioni ch'identifigga l'intradda; lu sistham nò à eseguiddu lu cumandu imparthiddu pa precauzioni. Turrà a la pàgina prizzidenti cu' lu buttoni \"Indareddu\" di lu proprio nabigaddori, turrà a carriggà la pàgina e riprubà.",
 
 # Protect
-'protectlogpage' => 'Prutizioni',
+'protectlogpage' => 'Rigisthru di prutizioni',
 'protectlogtext' => "Inogghi v'è la listha di li pàgini broccaddi e ibbruccaddi. Védi la [[Special:ProtectedPages|listha di li pàgini prutiggiddi]] pa chiddi chi so attuarmenti prutiggiddi.",
 'protectedarticle' => 'à prutiggiddu "[[$1]]"',
 'modifiedarticleprotection' => 'ha mudìfiggaddu lu libellu di prutizioni di "[[$1]]"',
@@ -1366,6 +1418,7 @@ L'impusthazioni currenti pa la pàgina so '''$1''':",
 'undelete-nodiff' => 'Nò è isthadda acciappadda nisciuna ribisioni prizzidenti.',
 'undeletebtn' => 'Turra che primma',
 'undeletelink' => 'visuarizza/rimpustha',
+'undeleteviewlink' => 'vidé',
 'undeletecomment' => 'Cummentu:',
 'undeletedrevisions' => '{{PLURAL:$1|Una ribisioni ricuparadda|$1 ribisioni ricuparaddi}}',
 'undeletedrevisions-files' => '{{PLURAL:$1|Una ribisioni|$1 ribisioni}} e {{PLURAL:$2|un file ricuparaddu|$2 file ricuparaddi}}',
@@ -1391,39 +1444,43 @@ $1",
 'blanknamespace' => '(Prinzipari)',
 
 # Contributions
-'contributions' => 'Cuntributi utenti',
+'contributions' => '{{GENDER:$1|Cuntributi utenti}}',
 'contributions-title' => 'Cuntributi di $1',
-'mycontris' => "li me' cuntributi",
-'contribsub2' => 'Pa $1 ($2)',
+'mycontris' => "Li me' cuntributi",
+'contribsub2' => 'Par {{GENDER:$3|$1}} ($2)',
 'nocontribs' => 'Nò so isthaddi acciappaddi mudifigghi cunfoimmi a li criteri sciubaraddi.',
-'uctop' => '(ulthima pa la pàgina)',
+'uctop' => '(currenti)',
 'month' => 'A parthì da lu mesi (e prizzidenti):',
 'year' => "A parthì da l'anni (e prizzidenti):",
 
 'sp-contributions-newbies' => 'Musthra soru li cuntributi di li nobi utenti',
 'sp-contributions-newbies-sub' => 'Pa li nobi utenti',
 'sp-contributions-blocklog' => 'Brocchi',
+'sp-contributions-uploads' => 'carriggamentu',
+'sp-contributions-logs' => 'rigisthri',
 'sp-contributions-talk' => 'dischussioni',
 'sp-contributions-search' => 'Zercha cuntributi',
 'sp-contributions-username' => 'Indirizzu IP o nommu utenti:',
+'sp-contributions-toponly' => 'Soru musthrà li versioni attuari',
 'sp-contributions-submit' => 'Zercha',
 
 # What links here
 'whatlinkshere' => 'Puntani inogghi',
 'whatlinkshere-title' => 'Pàgini chi pùntani a "$1"',
 'whatlinkshere-page' => 'Pàgina:',
-'linkshere' => "Le sighenti pàgini cuntenani dei cullegamenti a '''[[:$1]]''':",
+'linkshere' => "Li sighenti pàgini cuntenani cullegamenti a '''[[:$1]]''':",
 'nolinkshere' => "Nisciuna pàgina cunteni dei cullegamenti chi pùntani a '''[[:$1]]'''.",
 'nolinkshere-ns' => "Nò vi so pàgini chi pùntani a '''[[:$1]]''' i' lu namespace sciubaraddu.",
 'isredirect' => 'rinviu',
 'istemplate' => 'incrusioni',
-'isimage' => "cullegamentu a l'immàgina",
+'isimage' => 'Cullegamentu a file',
 'whatlinkshere-prev' => '{{PLURAL:$1|prizzidenti|prizzidenti $1}}',
 'whatlinkshere-next' => '{{PLURAL:$1|sighenti|sighenti $1}}',
 'whatlinkshere-links' => '← cullegamenti',
 'whatlinkshere-hideredirs' => '$1 rinvii',
 'whatlinkshere-hidetrans' => '$1 incrusioni',
 'whatlinkshere-hidelinks' => '$1 cullegamenti',
+'whatlinkshere-hideimages' => '$1 liadduri a file',
 'whatlinkshere-filters' => 'Filthri',
 
 # Block/unblock
@@ -1462,7 +1519,7 @@ $1",
 'emailblock' => 'postha erettrònica broccadda',
 'ipblocklist-empty' => "L'erencu di li brocchi è bioddu.",
 'ipblocklist-no-results' => "L'indirizzu IP o innòmmu utenti ciamaddu nò è broccaddu.",
-'blocklink' => 'brocca',
+'blocklink' => 'broccà',
 'unblocklink' => 'ibbrucca',
 'change-blocklink' => 'ciamba broccu',
 'contribslink' => 'cuntributi',
@@ -1542,7 +1599,7 @@ La pàgina di disthinazioni "[[:$1]]" isisthi già. Vói canzillalla pa rindì p
 'selfmove' => "Lu nobu tìturu è uguari a lu vécciu; impussìbiri ippusthà la pàgina cu' lu matessi innòmmu.",
 
 # Export
-'export' => 'Ippurtha li pàgini',
+'export' => 'Ippurthà pàgini',
 'exporttext' => "È pussìbiri ippurthà lu testhu e la cronologia di li mudìfigghi di una pàgina o di un gruppu di pàgini in fuimmaddu XML pa impurthalli i'althri siti ch'utilizzanni lu software MediaWiki, attrabessu [[Special:Import]].
 
 Pa ippurthà li pàgina indicà i tìturi i' la casella di testhu in giossu, unu pa riga, e ippizzificà si s'à gana d'uttinì la versioni currenti e tutti li versioni prizzidenti, cu' li dati di la cronologia di la pàgina, oppure soru l'ulthima versioni e i dati curripundenti a l'ulthima mudìfigga.
@@ -1571,7 +1628,7 @@ Pa piazeri utirizà [https://www.mediawiki.org/wiki/Localisation MediaWiki Lucar
 'allmessages-filter-submit' => 'Vai',
 
 # Thumbnails
-'thumbnail-more' => 'Immannitta',
+'thumbnail-more' => 'Immannittà',
 'filemissing' => 'File mancanti',
 'thumbnail_error' => "Errori i' la criazioni di la miniadduri: $1",
 'djvu_page_error' => 'Nùmaru di pàgina DjVu ibbagliaddu',
@@ -1627,7 +1684,7 @@ Tutti l'operazioni d'impurthazioni trans-wiki so rigisthraddi i' lu [[Special:Lo
 'tooltip-pt-logout' => 'Iscidda',
 'tooltip-ca-talk' => 'Vèdi li dischussioni reratibi a chistha pàgina',
 'tooltip-ca-edit' => "Pói mudìfiggà chistha pàgina. Pa piazeri usa lu buttoni d'antiprimma primma di saivvà",
-'tooltip-ca-addsection' => 'Ischumenza una sezzioni noba',
+'tooltip-ca-addsection' => 'Ischuminzà una sezzioni noba',
 'tooltip-ca-viewsource' => 'Chistha pàgina è prutiggidda, ma pói vidé lu còdizi soiu.',
 'tooltip-ca-history' => 'Versioni prizzidenti di chistha pàgina',
 'tooltip-ca-protect' => 'Prutiggi chistha pàgina',
@@ -1637,10 +1694,11 @@ Tutti l'operazioni d'impurthazioni trans-wiki so rigisthraddi i' lu [[Special:Lo
 'tooltip-ca-watch' => "Aggiungi chistha pàgina a la listha tóia di l'abbaidaddi ippiziari",
 'tooltip-ca-unwatch' => "Elimina chistha pàgina da la tóia listha d'abbaidaddi ippiziari",
 'tooltip-search' => 'Zercha di dentru a {{SITENAME}}',
-'tooltip-search-go' => "Via a una pàgina cu' lu tìturu indicaddu, si v'è",
+'tooltip-search-go' => "Vai a una pàgina cu' lu tìturu indicaddu, si v'è",
 'tooltip-search-fulltext' => "Zercha lu testhu indicaddu i' li pàgini",
-'tooltip-p-logo' => 'Pagina prinzipari',
+'tooltip-p-logo' => 'Visita la pàgina prinzipari',
 'tooltip-n-mainpage' => 'Visita la pàgina prinzipari',
+'tooltip-n-mainpage-description' => 'Visita la pàgina prinzipari',
 'tooltip-n-portal' => "Deschrizioni di lu prugettu, cosa pói fà, und'agattà li cosi",
 'tooltip-n-currentevents' => "Infuimmazioni i' l'eventi d'attuarità",
 'tooltip-n-recentchanges' => "Erencu di l'ulthimi mudìfigghi i' lu situ",
@@ -1659,7 +1717,7 @@ Tutti l'operazioni d'impurthazioni trans-wiki so rigisthraddi i' lu [[Special:Lo
 'tooltip-ca-nstab-main' => 'Vèdi la bozi',
 'tooltip-ca-nstab-user' => 'Vèdi la pàgina utenti',
 'tooltip-ca-nstab-media' => 'Vedi la pàgina di lu file mùrthimediari',
-'tooltip-ca-nstab-special' => 'Chistha è una pàgina ippiziari, nò pó assé mudìfiggadda.',
+'tooltip-ca-nstab-special' => 'Chistha è una pàgina ippiziari, nò pó assé mudifiggadda.',
 'tooltip-ca-nstab-project' => 'Vèdi la pàgina di saivvìziu',
 'tooltip-ca-nstab-image' => "Vèdi la pàgina di l'immàgina",
 'tooltip-ca-nstab-mediawiki' => "Vèdi l'imbasciadda di sisthema",
@@ -1674,8 +1732,9 @@ Tutti l'operazioni d'impurthazioni trans-wiki so rigisthraddi i' lu [[Special:Lo
 'tooltip-watch' => "Aggiungi chistha pàgina a la listha di l'abbaidaddi ippiziari",
 'tooltip-recreate' => "Ricrea la pàgina puru s'è già isthadda canzilladda.",
 'tooltip-upload' => 'Ischuminza lu carriggamentu',
-'tooltip-rollback' => '"Turra che primma" annulla li mudifigghi a chistha pagina di l\'ulthimu cuntributori cu\' un soru clic.',
+'tooltip-rollback' => '"Turra che primma" annulla li mudìfigghi a chistha pagina di l\'ulthimu cuntributori cu\' un soru clic.',
 'tooltip-undo' => "\"Annulla\"  pilmitti d'annullà chistha mudifigga e abbri lu modulu di mudifigga d'antiprimma. Pilmitti d'insirì una mutibazioni i' l'oggettu di la mudifigga.",
+'tooltip-summary' => 'Ischribbi un riassuntu corthu',
 
 # Metadata
 'notacceptable' => "Lu server wiki nò è bonu a frunì li dati i' un fuimmaddu liggìbiri da lu nabiggadori utirizaddu.",
@@ -1736,7 +1795,7 @@ $1",
 'file-info-size' => '$1 × $2 punti, misuri: $3, tipu MIME: $4',
 'file-nohires' => 'Nò so dipunìbiri versioni a risoruzioni maggiori.',
 'svg-long-desc' => 'file in fuimmaddu SVG, misuri nominari $1 × $2 punti, misuri di lu file: $3',
-'show-big-image' => 'Versioni a altha risoruzioni',
+'show-big-image' => "File d'orìgini",
 
 # Special:NewFiles
 'newimages' => 'Galleria di li file nobi',
@@ -1836,7 +1895,7 @@ So cunsidaraddi soru l'erenchi puntaddi (righi ch'ischumenzani cu' lu caràtteri
 
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'tutti',
-'namespacesall' => 'Tutti',
+'namespacesall' => 'tutti',
 'monthsall' => 'tutti',
 
 # Email address confirmation
@@ -1953,6 +2012,7 @@ Pa piazeri, cunfèimma chi vòi ricrià avveru chistha pàgina.",
 'specialpages-group-login' => 'Intra / registhrazioni',
 
 # Special:Tags
+'tag-filter' => '[[Special:Tags|Tag]] filthru:',
 'tags-edit' => 'mudifigga',
 
 # HTML forms
index 2f0bcf3..beb3810 100644 (file)
@@ -64,7 +64,7 @@ $messages = array(
 'tog-justify' => 'Līgintė pastraipas palē abi poses',
 'tog-hideminor' => 'Pakavuotė mažus pataisėmus vielībūju taisīmu sārašė',
 'tog-extendwatchlist' => 'Ėšpliestė keravuojamu sāraša, kū ruodītu vėsus tėnkamus pakeitėmus',
-'tog-usenewrc' => 'Pažongē ruodomė vielibė̅jė pakeitėmā (rēk JavaScript)',
+'tog-usenewrc' => 'Grupoutė keitėmus vielībūsiūs pakeitėmūs ė keravuojamu poslapiu sārašė',
 'tog-numberheadings' => 'Autuomatėškā numeroutė skėrsnelios',
 'tog-showtoolbar' => 'Ruodītė redagavėma rakondinė (JavaScript)',
 'tog-editondblclick' => 'Poslapiu redagavėms dvėgobu paspaudėmu (JavaScript)',
@@ -311,6 +311,8 @@ $1',
 'toc' => 'Torėnīs',
 'showtoc' => 'ruodītė',
 'hidetoc' => 'kavuotė',
+'collapsible-collapse' => 'Sugōžtė',
+'collapsible-expand' => 'Atsklēstė',
 'thisisdeleted' => 'Veizėtė a atkortė $1?',
 'viewdeleted' => 'Ruodītė $1?',
 'restorelink' => '$1 {{PLURAL:$1|ėštrinta keitėma|ėštrintos keitėmos|ėštrintū keitėmu}}',
@@ -613,6 +615,7 @@ Tuo faila pašalinėma istuorėjė īr pateikta dielē patuogoma:",
 'moveddeleted-notice' => 'Tas poslapis bova ėštrėnts.
 Ėštrėnta poslapė versėju sārašos īr pateikts paveiziejėmō žemiau.',
 'edit-conflict' => 'Redagavėma kuonflėktos',
+'postedit-confirmation' => 'Tamstas padėrbts pakeitėms ėšsauguots īr.',
 
 # Parser/template warnings
 'post-expand-template-inclusion-warning' => 'Perspiejėms: Šabluonu īterpėma dėdoms īr par dėdelis.
@@ -653,7 +656,7 @@ $3 nuruodīta prīžastis īr ''$2''",
 'history-fieldset-title' => 'Naršītė istuorėjuo',
 'history-show-deleted' => 'Tėktās ėštrintė',
 'histfirst' => 'Seniausė',
-'histlast' => 'VielibÄ\97Ì\85jė',
+'histlast' => 'VielibÄ\97Ì\84jė',
 'historysize' => '($1 {{PLURAL:$1|baits|baitā|baitu}})',
 'historyempty' => '(nieka nier)',
 
@@ -735,6 +738,9 @@ Kėtė admėnėstratuorē šėtom pruojekte vėsdar galės pasėiktė pasliepta
 'powersearch-legend' => 'Prapliesta paėiška',
 'powersearch-ns' => 'Ėiškoutė vardū srėtīsė:',
 'powersearch-redir' => 'Itrauktė paradresavėmus',
+'powersearch-togglelabel' => 'Pažīmietė:',
+'powersearch-toggleall' => 'Vėskon',
+'powersearch-togglenone' => 'Nieka',
 'search-external' => 'Ėšuorėnė paėiška',
 
 # Preferences page
@@ -744,6 +750,7 @@ Kėtė admėnėstratuorē šėtom pruojekte vėsdar galės pasėiktė pasliepta
 'prefs-skin' => 'Ėšruoda',
 'skin-preview' => 'Parveiza',
 'datedefault' => 'Juokė pasėrėnkėma',
+'prefs-beta' => 'Beta fonkcėjės',
 'prefs-datetime' => 'Data ė čiesos',
 'prefs-personal' => 'Nauduotuojė pruopilis',
 'prefs-rc' => 'Vielībė̅jė pakeitėmā',
@@ -754,6 +761,7 @@ Kėtė admėnėstratuorē šėtom pruojekte vėsdar galės pasėiktė pasliepta
 'prefs-watchlist-edits-max' => '(dėdliausias skaitlius: 1000)',
 'prefs-misc' => 'Ivairė nustatīmā',
 'prefs-resetpass' => 'Keistė slaptažuodi',
+'prefs-rendering' => 'Ėšruoda',
 'saveprefs' => 'Ėšsauguotė',
 'restoreprefs' => 'Atstatītė vėsus numatītūsius nustatīmus',
 'prefs-editing' => 'Redagavėms',
@@ -791,6 +799,7 @@ Kėtė admėnėstratuorē šėtom pruojekte vėsdar galės pasėiktė pasliepta
 'username' => 'Nauduotuojė vards:',
 'uid' => 'Nauduotuojė ID:',
 'prefs-memberingroups' => '{{PLURAL:$1|Gropės|Gropiu}} narīs:',
+'prefs-registration' => 'Ožsėregėstravėma čiesos:',
 'yourrealname' => 'Tėkros vards:',
 'yourlanguage' => 'Aplėnkuos kalba:',
 'yourvariant' => 'Variants',
@@ -805,6 +814,12 @@ Ana gal sodarītė ne daugiau kāp $1 {{PLURAL:$1|sėmbuolis|sėmbuolē|sėmbuol
 'email' => 'El. pašts',
 'prefs-help-realname' => 'Tėkrs vards nier privaluoms, vuo jēgo Tamsta ana ivesėt, ons bus nauduojams Tamstas darba pažīmiejėmō.',
 'prefs-help-email' => 'El. pašta adresos nier privaloms, ale uns leid Tamstā gautė nauja slaptažuodi, jēgo pamėršuot kuoks uns bova, ė tēpuogi Tamsta galėt leistė kėtėims pasėiktė Tamsta par Tamstas nauduotuojė a nauduotuojė aptarėma poslapi neatsklėidont Tamstas tapatoma.',
+'prefs-info' => 'Glavnuojė infuormacėjė',
+'prefs-i18n' => 'Kalbuos nustatīmā',
+'prefs-dateformat' => 'Datuos skvarma',
+'prefs-timeoffset' => 'Čiesa skėrtoms',
+'prefs-advancedrc' => 'Papėlduomė nustatīmā',
+'prefs-diffs' => 'Skėrtomā',
 
 # User rights
 'userrights' => 'Nauduotuoju teisiu valdīms',
@@ -858,12 +873,13 @@ Ana gal sodarītė ne daugiau kāp $1 {{PLURAL:$1|sėmbuolis|sėmbuolē|sėmbuol
 'nchanges' => '$1 {{PLURAL:$1|pakeitėms|pakeitėmā|pakeitėmu}}',
 'recentchanges' => 'Vielībė̅jė pakeitėmā',
 'recentchanges-legend' => 'Vielībuju pakeitėmu pasėrinkėmā',
-'recentchanges-summary' => 'Tamė poslapī īr patīs vielībė̅ jė paketėmā tom pruojėktė.',
+'recentchanges-summary' => 'Keravuokėt patius vielībiausius wiki pakeitėmus tamė poslapī.',
 'recentchanges-feed-description' => 'Keravuokėt patius vielībiausius pakeitėmus pruojektō tamė šaltėnī.',
 'recentchanges-label-newpage' => 'Šėto keitėmo sukurts naus poslapis',
 'recentchanges-label-minor' => 'Tas īr mažos pataisīms',
 'recentchanges-label-bot' => 'Šėta keitėma padėrba autuomatėnė pruograma',
 'recentchanges-label-unpatrolled' => 'Tas keitėms da nebova patikrints',
+'recentchanges-label-plusminus' => 'Ton baitu skaitliom pakeists straipsnė apmiers',
 'rcnotefrom' => 'Žemiau īr pakeitėma pradedant nū <b>$2</b> (ruodom lėgė <b>$1</b> pakeitėmu).',
 'rclistfrom' => 'Ruodītė naujus pakeitėmus pradedant nū $1',
 'rcshowhideminor' => '$1 mažus pakeitėmus',
@@ -942,9 +958,11 @@ Prašuom ėšsėrėnktė kėta varda.',
 'uploaddisabledtext' => 'Failu ikielėmā oždraustė īr.',
 'uploadscripted' => 'Šėts failos tor HTML a programėni kuoda, katros gal būtė klaidėngā soprasts interneta naršīklės.',
 'uploadvirus' => 'Šėtom faile īr virosas! Ėšsamiau: $1',
+'upload-source' => 'Faila šaltėnis',
 'sourcefilename' => 'Ikeliams fails',
 'destfilename' => 'Nuorims faila pavadinims',
 'upload-maxfilesize' => 'Dėdliausias faila dėdoms: $1',
+'upload-options' => 'Nostatīmā īkelėmō',
 'watchthisupload' => 'Keravuotė šėta poslapė',
 'upload-success-subj' => 'Ikelt siekmėngā',
 
@@ -1056,13 +1074,16 @@ Infuormacėjė ėš [$2 faila aprašīma poslapė] īr pateikta žemiau.',
 'statistics-header-edits' => 'Redagavėmu statėstėka',
 'statistics-header-views' => 'Parveizu statistėka',
 'statistics-header-users' => 'Nauduotuoju statėstėka',
+'statistics-header-hooks' => 'Kėta statėstėka',
 'statistics-articles' => 'Torėnė poslapē',
 'statistics-pages' => 'Poslapē',
+'statistics-pages-desc' => 'Vėsė poslapē, terp anū: aptarėma, nukrėipėmu ė kėtė.',
 'statistics-files' => 'Ikeltė failā',
 'statistics-edits' => 'Poslapiu redagavėmu skaitlius nū {{SITENAME}} sokūrėma',
 'statistics-edits-average' => 'Vėdotėnis keitėmu skaitlius poslapiō',
 'statistics-users' => 'Ožsėregėstravosiu [[Special:ListUsers|nauduotuoju]]',
 'statistics-users-active' => 'Aktīviu nauduotuoju',
+'statistics-users-active-desc' => 'Nauduotuojē, katrėi par {{PLURAL:$1|paskiausė dėina|paskiausė 2 dėinė|paskiausės $1 dėinas|paskiausiu $1 dėinū}} padėrba keitėmu',
 'statistics-mostpopular' => 'Daugiausē ruodītė poslapē',
 
 'doubleredirects' => 'Dvėgobė paradresavėmā',
@@ -1145,6 +1166,7 @@ katram ivīkdītė šėta funkcėjė.',
 Īr galėmībė somažintė rezoltatu skaitliu patėkslėnont vēksma tėpa, nauduotuojė a sosėjosė poslapė.',
 'logempty' => 'Istuorėjuo nier anėjuokiū atitinkontiu atsėtėkimu.',
 'log-title-wildcard' => 'Ėiškuotė pavadinėmu, katrė prasėded šėtuo teksto',
+'showhideselectedlogentries' => 'Ruodītė/kavuotė sāraša ponktus, katrūs pasėrėnkot',
 
 # Special:AllPages
 'allpages' => 'Vėsė straipsnē',
@@ -1159,6 +1181,7 @@ katram ivīkdītė šėta funkcėjė.',
 'allpagesprefix' => 'Ruodītė poslapios so prīdelēs:',
 'allpagesbadtitle' => 'Douts poslapė pavadėnėms īr neteisings a tor terpkalbėnė a terppruojektėnė prīdielė. Anamė īr vėns a kelė žėnklā, katrū negal nauduotė pavadėnėmūs.',
 'allpages-bad-ns' => '{{SITENAME}} netor „$1“ vardū srėtėis.',
+'allpages-hide-redirects' => 'Kavuotė nukrėipėmus',
 
 # Special:Categories
 'categories' => 'Kateguorėjės',
@@ -1185,7 +1208,7 @@ Also see [[Special:WantedCategories|wanted categories]].',
 # Special:ListGroupRights
 'listgrouprights' => 'Nauduotuoju gropiu teisės',
 'listgrouprights-group' => 'Gropė',
-'listgrouprights-members' => '(nariū sārošos)',
+'listgrouprights-members' => '(nariū sārašos)',
 
 # Email user
 'mailnologin' => 'Nier adresa',
@@ -1276,6 +1299,7 @@ Paskotiniu pašalinėmu istuorėjė - $2.',
 'rollback' => 'Atmestė pakeitėmos',
 'rollback_short' => 'Atmestė',
 'rollbacklink' => 'atmestė',
+'rollbacklinkcount' => 'atmestė $1 {{PLURAL:$1|keitėms|keitėmo|keitėmus|keitėmu}}',
 'rollbackfailed' => 'Atmetims napavīka',
 'cantrollback' => 'Negalėma atmestė redagavėma; paskotinis keitės nauduotuos īr tuo poslapė autorius.',
 'alreadyrolled' => 'Nepavīka atmestė paskotėnė [[User:$2|$2]] ([[User talk:$2|Aptarėms]]) darīta straipsnė [[$1]] keitėma;
@@ -1388,6 +1412,7 @@ Parveizėkiet [[Special:Log/delete|trīnimu sāraša]], nuoriedamė rastė pasko
 # Namespace form on various pages
 'namespace' => 'Vardū srėtis:',
 'invert' => 'Žīmietė prīšėngā',
+'namespace_association' => 'Sosėrėšos vardū srėtės',
 'blanknamespace' => '(Pagrėndinė)',
 
 # Contributions
@@ -1654,6 +1679,9 @@ Paskėrties straipsnis „[[:$1]]“ jau īr. A nuorėt ana ėštrintė, kū gal
 'spam_reverting' => 'Atkoriama i onkstesne versėje, katra nator nūruodu i $1',
 'spam_blanking' => 'Vėsos versėjės toriejė nūruodu i $1. Ėšvaluoma',
 
+# Info page
+'pageinfo-toolboxlink' => 'Poslapė infuormacėjė',
+
 # Patrolling
 'markaspatrolleddiff' => 'Žīmietė, kū patikrėnta',
 'markaspatrolledtext' => 'Pažīmietė, ka poslapis patėkrėnts īr',
@@ -1900,6 +1928,9 @@ Tamsta tēpuogi galėt [[Special:EditWatchlist/raw|redagoutė grīnaji keravuoja
 'logentry-newusers-autocreate' => 'Paskīra $1 bova padėrbta autuomatėškā',
 'rightsnone' => '(juokiū)',
 
+# Search suggestions
+'searchsuggest-containing' => 'katrėi tor...',
+
 # Special:ExpandTemplates
 'expandtemplates' => 'Ėšskeistė šabluonus',
 
index 33a8e7a..e6f652f 100644 (file)
@@ -17,6 +17,7 @@
  * @author Pasanbhathiya2
  * @author Romaine
  * @author Singhalawap
+ * @author Thushara
  * @author චතුනි අලහප්පෙරුම
  * @author තඹරු විජේසේකර
  * @author දසනැබළයෝ
@@ -405,7 +406,7 @@ $messages = array(
 'articlepage' => 'අන්තර්ගත පිටුව නරඹන්න',
 'talk' => 'සාකච්ඡාව',
 'views' => 'දෘෂ්ටි',
-'toolbox' => 'මෙවලම් ගොන්න',
+'toolbox' => 'මෙවලම්',
 'userpage' => 'පරිශීලක පිටුව නරඹන්න',
 'projectpage' => 'ව්‍යාපෘති පිටුව නරඹන්න',
 'imagepage' => 'ගොනු පිටුව නරඹන්න',
@@ -442,7 +443,7 @@ $1",
 'disclaimers' => 'වියාචනයන්',
 'disclaimerpage' => 'Project:පොදු වියාචන',
 'edithelp' => 'සංස්කරණ උදවු',
-'helppage' => 'Help:පටුන',
+'helppage' => 'උදවු:පටුන',
 'mainpage' => 'මුල් පිටුව',
 'mainpage-description' => 'මුල් පිටුව',
 'policy-url' => 'Project:ප්‍රතිපත්තිය',
@@ -677,7 +678,7 @@ $2',
 'passwordtooshort' => 'මුරපදය අඩුම වශයෙන් {{PLURAL:$1|එක් අක්ෂරයක්|අක්ෂර $1 ක්}} සහිත විය යුතුය.',
 'password-name-match' => 'ඔබගේ මුරපදය, ඔබගේ පරිශීලක නාමයෙන් වෙනස් එකක් විය යුතුය.',
 'password-login-forbidden' => 'මෙම පරිශීලක නාමයේ හා මුරපදයේ භාවිතය වලක්වා ඇත.',
-'mailmypassword' => 'නà·\80 à¶¸à·\94රපදය à·\80à·\92දà·\8aâ\80\8dයà·\94තà·\8a à¶­à·\90පà·\91ලâ\80\8dට à¶ºà·\80න්න',
+'mailmypassword' => 'මà·\94රපදය à¶´à·\8aâ\80\8dරතà·\8aâ\80\8dයà·\8fරමà·\8aභ à¶\9aරන්න',
 'passwordremindertitle' => '{{SITENAME}} සඳහා නව තාවකාලික මුර-පදය',
 'passwordremindertext' => 'යම් අයෙකු  ($1 අන්තර්ජාල ලිපිනය තුලින් සමහර විට ඔබ) විසින්  {{SITENAME}} ($4)සඳහා නව මුර-පදයක් ඉල්ලා සිට ඇත. පරිශීලක "$2"  වෙනුවෙන් තාවකාලික  මුර-පදයක් තනා "$3" බවට නියම කර ඇත. මෙය ඔබගේ අභිලාශය වූයේ නම් ඔබ විසින් ළහිළහියේ ප්‍රවිෂ්ට වී, නව මුර-පදයක් තෝරා ගත යුතුව ඇත.ඔබගේ තාවකාලික මුරපදය  {{PLURAL:$5|එක් දිනකින්|දින $5 කින්}}කල් ඉකුත්වනු ඇත.
 
@@ -1520,7 +1521,7 @@ HTML ටැගයන් පිරික්සන්න.',
 'rclistfrom' => '$1 සිට බලපැවැත්වෙන මෑත වෙනස්වීම් පෙන්වන්න',
 'rcshowhideminor' => 'සුළු සංස්කරණ $1',
 'rcshowhidebots' => 'රොබෝ $1',
-'rcshowhideliu' => 'පà·\92à·\80à·\92à·\83à·\94නà·\94 à¶´à¶»à·\92à·\81à·\93ලà¶\9aයනà·\8a $1',
+'rcshowhideliu' => 'ලà·\9aà¶\9bනà¶\9cත à¶´à¶»à·\92à·\81à·\93ලà¶\9aයà·\9d $1',
 'rcshowhideanons' => 'නිර්නාමික පරිශීලකයන් $1',
 'rcshowhidepatr' => 'පරික්‍ෂා කර බැලූ සංස්කරණයන් $1',
 'rcshowhidemine' => 'මගේ සංස්කරණයන් $1',
@@ -2247,6 +2248,7 @@ Feedback and further assistance:
 'delete-warning-toobig' => 'මෙම පිටුවට, {{PLURAL:$1|එක් සංශෝධනයකට|සංශෝධන $1 කට}} වඩා වැඩි විශාල සංස්කරණ ඉතිහාසයක් ඇත.
 මෙය මකාදැමීම  {{SITENAME}} හි දත්ත-ගබඩා ක්‍රියාකාරකම් වලට අවහිරතා පැන නැංවීමට හේතු විය හැක;
 පරිස්සමින් ඉදිරි කටයුතු කරන්න.',
+'deleting-backlinks-warning' => "'''ප්‍රවේශමෙන්:''' ඔබ සූදානම් වන්නේ ඔබ පරිශීලනය කරන පිටුවට සම්බන්ධ වූ අනෙක් පිටු මකා දැමීමටයි.",
 
 # Rollback
 'rollback' => 'සංස්කරණයන් පුනරාවර්තනය කරන්න',
@@ -2402,7 +2404,7 @@ $1',
 'contributions' => '{{GENDER:$1|පරිශීලකගේ}} දායකත්වයන්',
 'contributions-title' => ' $1 සඳහා පරිශීලක දායකත්වයන්',
 'mycontris' => 'දායකත්ව',
-'contribsub2' => '$1 සඳහා ($2)',
+'contribsub2' => '{{GENDER:$3|$1}} සඳහා ($2)',
 'nocontribs' => 'මෙම උපමානයන් හා ගැලපෙන වෙනස්වීම් හමුනොවිණි.',
 'uctop' => '(වත්මන්)',
 'month' => 'මෙම මස (හා ඉන් පෙර) සිට:',
@@ -2983,7 +2985,7 @@ $1',
 'file-nohires' => 'මෙයට ඉහල විසර්ජනයක් දක්වා එළඹිය නොහැක.',
 'svg-long-desc' => 'SVG ගොනුව, නාමමාත්‍රිකව $1 × $2 පික්සල්, ගොනු විශාලත්වය: $3',
 'svg-long-error' => 'අනීතික SVG ගොනුව: $1',
-'show-big-image' => 'පà·\96රà·\8aණ à·\80à·\92භà·\9aදනය',
+'show-big-image' => 'මà·\94ලà·\8a à¶\9cà·\9cනà·\94à·\80',
 'show-big-image-preview' => 'මෙම පෙරදසුනෙහි තරම: $1.',
 'show-big-image-other' => 'අනෙකුත් {{PLURAL:$2|විභේදනය|විභේදනයන්}}: $1.',
 'show-big-image-size' => '$1 × $2  පික්සල',
index e020653..9f98340 100644 (file)
@@ -1686,6 +1686,7 @@ Softvér používa toto nastavenie na správne oslovenie a označenie vás ostat
 'recentchanges-label-bot' => 'Túto úpravu vykonal bot',
 'recentchanges-label-unpatrolled' => 'Táto úprava zatiaľ nebola strážená',
 'recentchanges-label-plusminus' => 'Veľkosť stránky sa zmenila o toľkoto bajtov',
+'recentchanges-legend-heading' => "'''Legenda:'''",
 'recentchanges-legend-newpage' => '(pozri tiež [[Special:NewPages|zoznam nových stránok]])',
 'rcnotefrom' => "Nižšie sú zobrazené úpravy od '''$2''' (do '''$1''').",
 'rclistfrom' => 'Zobraziť nové úpravy počnúc od $1',
@@ -3925,6 +3926,7 @@ Spolu s týmto programom by ste obdržať [{{SERVER}}{{SCRIPTPATH}}/COPYING kóp
 
 # Special:SpecialPages
 'specialpages' => 'Špeciálne stránky',
+'specialpages-note-top' => 'Legenda',
 'specialpages-note' => '* Bežné špeciálne stránky.
 * <strong class="mw-specialpagerestricted">Špeciálne stránky s obmedzeným prístupom.</strong>
 * <span class="mw-specialpagecached">Špeciálne stránky vo vyrovnávacej pamäti (môže byť neaktuálne).</span>',
index 90916e2..cafa6b1 100644 (file)
@@ -1422,6 +1422,7 @@ Ko vas drugi uporabniki kontaktirajo, jim vašega e-poštnega naslova ne bomo ra
 'prefs-tokenwatchlist' => 'Žeton',
 'prefs-diffs' => 'Primerjave',
 'prefs-help-prefershttps' => 'Nastavitev bo začela veljati ob vaši naslednji prijavi.',
+'prefs-tabs-navigation-hint' => 'Namig: Za krmarjenje med zavihki na seznamu zavihkov lahko uporabite levo in desno smerno tipko.',
 
 # User preference: email validation using jQuery
 'email-address-validity-valid' => 'Izgleda veljaven',
@@ -1608,12 +1609,13 @@ Ko vas drugi uporabniki kontaktirajo, jim vašega e-poštnega naslova ne bomo ra
 'recentchanges-label-bot' => 'urejanje je izvedel bot',
 'recentchanges-label-unpatrolled' => 'Urejanje še ni bilo pregledano',
 'recentchanges-label-plusminus' => 'uporabnik je velikost strani spremenil za tolikšno število bajtov',
+'recentchanges-legend-heading' => "'''Legenda:'''",
 'recentchanges-legend-newpage' => '(glej tudi [[Special:NewPages|seznam novih strani]])',
 'rcnotefrom' => "Navedene so spremembe od '''$2''' dalje (prikazujem jih do '''$1''').",
 'rclistfrom' => 'Prikaži spremembe od $1 naprej',
 'rcshowhideminor' => '$1 manjša urejanja',
 'rcshowhidebots' => '$1 bote',
-'rcshowhideliu' => '$1 prijavljene uporabnike',
+'rcshowhideliu' => '$1 registrirane uporabnike',
 'rcshowhideanons' => '$1 brezimne uporabnike',
 'rcshowhidepatr' => '$1 pregledana urejanja',
 'rcshowhidemine' => '$1 moja urejanja',
@@ -2083,6 +2085,7 @@ Sedaj je preusmeritev na [[$2]].',
 'ninterwikis' => '$1 {{PLURAL:$1|medjezikovna povezava|medjezikovni povezavi|medjezikovne povezave|medjezikovnih povezav}}',
 'nlinks' => '$1 {{PLURAL:$1|povezava|povezavi|povezave|povezav|povezav}}',
 'nmembers' => '$1 {{PLURAL:$1|element|elementa|elementi|elementov|elementov}}',
+'nmemberschanged' => '$1 → $2 {{PLURAL:$2|element|elementa|elementi|elementov}}',
 'nrevisions' => '$1 {{PLURAL:$1|redakcija|redakciji|redakcije|redakcij|redakcij}}',
 'nviews' => '$1 {{PLURAL:$1|ogled|ogleda|ogledi|ogledov|ogledov}}',
 'nimagelinks' => 'Uporabljeno na $1 {{PLURAL:$1|strani|straneh}}',
@@ -3731,6 +3734,11 @@ Prosimo, potrdite, da jo resnično želite znova ustvariti.",
 'imgmultigo' => 'Pojdi!',
 'imgmultigoto' => 'Pojdi na stran $1',
 
+# Language selector for translatable SVGs
+'img-lang-default' => '(privzeti jezik)',
+'img-lang-info' => 'Upodobi sliko v $1. $2',
+'img-lang-go' => 'Pojdi',
+
 # Table pager
 'ascending_abbrev' => 'nar',
 'descending_abbrev' => 'pad',
@@ -3830,13 +3838,14 @@ Skupaj s programom bi morali bi prejeti [{{SERVER}}{{SCRIPTPATH}}/COPYING kopijo
 'version-entrypoints-scriptpath' => '[https://www.mediawiki.org/wiki/Manual:$wgScriptPath Pot skripta]',
 
 # Special:Redirect
-'redirect' => 'Preusmeri po datoteki, uporabniku ali ID-ju redakcije',
+'redirect' => 'Preusmeri po datoteki, uporabniku, strani ali ID-ju redakcije',
 'redirect-legend' => 'Preusmeritev na datoteko ali stran',
-'redirect-summary' => 'Posebna stran preusmeri na datoteko (če podate ime datoteke), stran (če podate ID redakcije) ali uporabniško stran (če podate številski ID uporabnika). Primer: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revision/328429]] ali [[{{#Special:Redirect}}/user/101]].',
+'redirect-summary' => 'Posebna stran preusmeri na datoteko (če podate ime datoteke), stran (če podate ID redakcije ali ID strani) ali uporabniško stran (če podate številski ID uporabnika). Uporaba: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]] ali [[{{#Special:Redirect}}/user/101]].',
 'redirect-submit' => 'Pojdi',
 'redirect-lookup' => 'Iskanje:',
 'redirect-value' => 'Vrednost:',
 'redirect-user' => 'ID uporabnika',
+'redirect-page' => 'ID strani',
 'redirect-revision' => 'Redakcija strani',
 'redirect-file' => 'Ime datoteke',
 'redirect-not-exists' => 'Vrednosti ni mogoče najti',
@@ -4079,10 +4088,12 @@ Pravzaprav razširi skoraj vse v dvojnih zavitih oklepajih.',
 'expand_templates_input' => 'Vhodno besedilo:',
 'expand_templates_output' => 'Rezultat',
 'expand_templates_xml_output' => 'Izhod XML',
+'expand_templates_html_output' => 'Surovi izhod HTML',
 'expand_templates_ok' => 'V redu',
 'expand_templates_remove_comments' => 'Odstrani komentarje',
 'expand_templates_remove_nowiki' => 'V rezultatu odstrani oznake <nowiki>',
 'expand_templates_generate_xml' => 'Pokaži razčlenitveno drevo XML',
+'expand_templates_generate_rawhtml' => 'Prikaži surovi HTML',
 'expand_templates_preview' => 'Predogled',
 
 );
index 876fc71..828bf80 100644 (file)
@@ -515,12 +515,12 @@ $messages = array(
 'december-date' => '$1 децембар',
 
 # Categories related messages
-'pagecategories' => '{{PLURAL:$1|Категорија|Категорије}}',
+'pagecategories' => '{{PLURAL:$1|1=Категорија|Категорије}}',
 'category_header' => 'Странице у категорији „$1“',
 'subcategories' => 'Поткатегорије',
 'category-media-header' => 'Датотеке у категорији „$1“',
 'category-empty' => "<div style=\"margin:2em 1em 0 1em; padding:0.5em; border:1px solid #AAA; text-align:center;\">''Ова категорија тренутно не садржи странице или датотеке.''</div>",
-'hidden-categories' => '{{PLURAL:$1|Сакривена категорија|Сакривене категорије}}',
+'hidden-categories' => '{{PLURAL:$1|1=Сакривена категорија|Сакривене категорије}}',
 'hidden-category-category' => 'Сакривене категорије',
 'category-subcat-count' => '{{PLURAL:$2|Ова категорија садржи само следећу поткатегорију.|Ова категорија има {{PLURAL:$1|следећу поткатегорију|следеће $1 поткатегорије|следећих $1 поткатегорија}}, од укупно $2.}}',
 'category-subcat-count-limited' => 'Ова категорија садржи {{PLURAL:$1|следећу поткатегорију|следеће $1 поткатегорије|следећих $1 поткатегорија}}.',
@@ -658,7 +658,7 @@ $1',
 
 'badaccess' => 'Грешке у овлашћењима',
 'badaccess-group0' => 'Није вам дозвољено да извршите захтевану радњу.',
-'badaccess-groups' => 'Радња је доступна само корисницима у {{PLURAL:$2|следећој групи|следећим групама}}:  $1.',
+'badaccess-groups' => 'Радња је доступна само корисницима у {{PLURAL:$2|1=следећој групи|следећим групама}}:  $1.',
 
 'versionrequired' => 'Потребно је издање $1 Медијавикија',
 'versionrequiredtext' => 'Потребно је издање $1 Медијавикија да бисте користили ову страницу.
@@ -672,8 +672,8 @@ $1',
 'youhavenewmessages' => 'Имате $1 ($2).',
 'youhavenewmessagesfromusers' => 'Имате $1 од {{PLURAL:$3|другог корисника|$3 корисника|$3 корисника}} ($2).',
 'youhavenewmessagesmanyusers' => 'Имате $1 од много корисника ($2).',
-'newmessageslinkplural' => '{{PLURAL:$1|нову поруку|нове поруке}}',
-'newmessagesdifflinkplural' => '{{PLURAL:$1|последњу измену|последње измене}}',
+'newmessageslinkplural' => '{{PLURAL:$1|1=нову поруку|999=нове поруке}}',
+'newmessagesdifflinkplural' => '{{PLURAL:$1|1=последњу измену|999=последње измене}}',
 'youhavenewmessagesmulti' => 'Имате нових порука на $1',
 'editsection' => 'уреди',
 'editold' => 'уреди',
@@ -766,7 +766,7 @@ $1',
 'badtitletext' => 'Наслов странице је неисправан, празан или је међујезички или међувики наслов погрешно повезан.
 Можда садржи знакове који се не могу користити у насловима.',
 'perfcached' => 'Следећи подаци су кеширани и могу бити застарели. Кеш садржи највише {{PLURAL:$1|један резултат|$1 резултата|$1 резултата}}.',
-'perfcachedts' => 'Следећи подаци су кеширани, а последњи пут су ажурирани $2 у $3. Кеш садржи највише {{PLURAL:$4|један резултат|$4 резултата|$4 резултата}}.',
+'perfcachedts' => 'Следећи подаци су кеширании и последњи пут су ажурирани $2 у $3. Кеш садржи највише {{PLURAL:$4|1=један резултат|$4 резултата}}.',
 'querypage-no-updates' => 'Ажурирање ове странице је тренутно онемогућено.
 Подаци који се овде налазе могу бити застарели.',
 'viewsource' => 'Изворни код',
@@ -781,7 +781,7 @@ $1',
 'editinginterface' => "'''Упозорење:''' уређујете страницу која се користи за приказивање текста корисничког окружења.
 Измене на овој страници ће утицати на све кориснике овог викија.
 Да бисте додали или изменили преводе свих викија, посетите [//translatewiki.net/wiki/Main_Page?setlang=sr_ec Транслејтвики], пројекат за локализацију Медијавикија.",
-'cascadeprotected' => 'Ова страница је закључана јер садржи {{PLURAL:$1|следећу страницу која је заштићена|следеће странице које су заштићене}} „преносивом“ заштитом:
+'cascadeprotected' => 'Ова страница је закључана јер садржи {{PLURAL:$1|1=следећу страницу која је заштићена|следеће странице које су заштићене}} „преносивом“ заштитом:
 $2',
 'namespaceprotected' => "Немате дозволу да уређујете странице у именском простору '''$1'''.",
 'customcssprotected' => 'Немате дозволу да мењате ову CSS страницу јер садржи личне поставке другог корисника.',
@@ -823,7 +823,7 @@ $2',
 'yourpasswordagain' => 'Потврда лозинке:',
 'createacct-yourpasswordagain' => 'Потврдите лозинку',
 'createacct-yourpasswordagain-ph' => 'Унесите лозинку још једном',
-'remembermypassword' => 'Запамти моју лозинку на овом прегледачу (најдуже $1 {{PLURAL:$1|дан|дана}})',
+'remembermypassword' => 'Запамти моју лозинку на овом прегледачу (најдуже $1 {{PLURAL:$1|1=дан|дана}})',
 'userlogin-remembermypassword' => 'Остави ме пријављеног/у',
 'userlogin-signwithsecure' => 'Користите сигурну конекцију',
 'yourdomainname' => 'Домен:',
@@ -898,7 +898,7 @@ $2',
 'passwordtooshort' => 'Лозинка мора имати најмање {{PLURAL:$1|један знак|$1 знака|$1 знакова}}.',
 'password-name-match' => 'Лозинка се мора разликовати од корисничког имена.',
 'password-login-forbidden' => 'Коришћење овог корисничког имена и лозинке је забрањено.',
-'mailmypassword' => 'Ð\9fоÑ\88аÑ\99и Ð½Ð¾Ð²Ñ\83 лозинку',
+'mailmypassword' => 'РеÑ\81еÑ\82Ñ\83Ñ\98 лозинку',
 'passwordremindertitle' => '{{SITENAME}} – подсетник за лозинку',
 'passwordremindertext' => 'Неко, вероватно ви, са ИП адресе $1 је затражио нову лозинку на викију {{SITENAME}} ($4).
 Створена је привремена лозинка за {{GENDER:$2|корисника|корисницу|корисника}} $2 која гласи $3.
@@ -981,18 +981,18 @@ $2',
 'passwordreset-email' => 'Е-адреса:',
 'passwordreset-emailtitle' => 'Детаљи налога на викију {{SITENAME}}',
 'passwordreset-emailtext-ip' => 'Неко, вероватно Ви, са ИП адресе $1 је затражио нову лозинку на викију {{SITENAME}} ($4).
-Следећи {{PLURAL:$3|кориснички налог је повезан|кориснички налози су повезани}} с овом е-адресом:
+Следећи {{PLURAL:$3|1=кориснички налог је повезан|кориснички налози су повезани}} с овом е-адресом:
 
 $2
 
-{{PLURAL:$3|Привремена лозинка истиче|Привремене лозинке истичу}} за {{PLURAL:$5|један дан|$5 дана}}.
+{{PLURAL:$3|1=Привремена лозинка истиче|Привремене лозинке истичу}} за {{PLURAL:$5|1=један дан|$5 дана}}.
 Пријавите се и изаберите нову лозинку. Ако је неко други захтевао ову радњу или сте се сетили лозинке и не желите да је мењате, занемарите ову поруку и наставите користити стару лозинку.',
 'passwordreset-emailtext-user' => '{{GENDER:$1|Корисник|Корисница|Корисник}} је затражио подсетник о подацима за пријаву на викију {{SITENAME}} ($4).
-Следећи {{PLURAL:$3|кориснички налог је повезан|кориснички налози су повезани}} с овом е-адресом:
+Следећи {{PLURAL:$3|1=кориснички налог је повезан|кориснички налози су повезани}} с овом е-адресом:
 
 $2
 
-{{PLURAL:$3|Привремена лозинка истиче|Привремене лозинке истичу}} за {{PLURAL:$5|један дан|$5 дана|$5 дана}}.
+{{PLURAL:$3|1=Привремена лозинка истиче|Привремене лозинке истичу}} за {{PLURAL:$5|један дан|$5 дана|$5 дана}}.
 Пријавите се и изаберите нову лозинку. Ако је неко други захтевао ову радњу или сте се сетили лозинке и не желите да је мењате, занемарите ову поруку.',
 'passwordreset-emailelement' => 'Корисничко име: $1
 Привремена лозинка: $2',
@@ -1186,11 +1186,11 @@ $2
 Последња ставка у историји је приказана испод:",
 'semiprotectedpagewarning' => "'''Напомена:''' ова страница је заштићена, тако да само регистровани корисници могу да је уређују.
 Последњи запис у дневнику је приказан испод:",
-'cascadeprotectedwarning' => "<div style=\"background: #FFBDBD; border: 1px solid #BB7979; color: #000000; font-weight: bold; margin: 2em 0 1em; padding: .5em 1em; vertical-align: middle; clear: both;\">'''Упозорење:''' Ова страница је заштићена тако да је могу уређивати само администратори, јер је она укључена у {{PLURAL:\$1|следећу страницу која је|следеће странице које су}} заштићене „преносивом“ заштитом:</div>",
+'cascadeprotectedwarning' => "<div style=\"background: #FFBDBD; border: 1px solid #BB7979; color: #000000; font-weight: bold; margin: 2em 0 1em; padding: .5em 1em; vertical-align: middle; clear: both;\">'''Упозорење:''' Ова страница је заштићена тако да је могу уређивати само администратори, јер је она укључена у {{PLURAL:\$1|1=следећу страницу која је|следеће странице које су}} заштићене „преносивом“ заштитом:</div>",
 'titleprotectedwarning' => "'''Упозорење: ова страница је заштићена тако да је могу направити само корисници [[Special:ListGroupRights|с одређеним правима]].'''",
-'templatesused' => '{{PLURAL:$1|Шаблон|Шаблони}} на овој страници:',
-'templatesusedpreview' => '{{PLURAL:$1|Шаблон|Шаблони}} у овом прегледу:',
-'templatesusedsection' => '{{PLURAL:$1|Шаблон|Шаблони}} у овом одељку:',
+'templatesused' => '{{PLURAL:$1|1=Шаблон|Шаблони}} на овој страници:',
+'templatesusedpreview' => '{{PLURAL:$1|1=Шаблон|Шаблони}} у овом прегледу:',
+'templatesusedsection' => '{{PLURAL:$1|1=Шаблон|Шаблони}} у овом одељку:',
 'template-protected' => '(заштићен)',
 'template-semiprotected' => '(полузаштићен)',
 'hiddencategories' => 'Ова страница је члан {{PLURAL:$1|једне скривене категорије|$1 скривене категорије|$1 скривених категорија}}:',
@@ -1202,8 +1202,8 @@ $2
 'sectioneditnotsupported-title' => 'Уређивање одељка није подржано',
 'sectioneditnotsupported-text' => 'Уређивање одељка није подржано на овој страници.',
 'permissionserrors' => 'Грешка у дозволи',
-'permissionserrorstext' => 'Немате овлашћење за ту радњу из {{PLURAL:$1|следећег|следећих}} разлога:',
-'permissionserrorstext-withaction' => 'Немате дозволу за $2 из {{PLURAL:$1|следећег|следећих}} разлога:',
+'permissionserrorstext' => 'Немате овлашћење за ту радњу из {{PLURAL:$1|1=следећег|следећих}} разлога:',
+'permissionserrorstext-withaction' => 'Немате дозволу за $2 из {{PLURAL:$1|1=следећег|следећих}} разлога:',
 'recreate-moveddeleted-warn' => "'''Упозорење: поново правите страницу која је претходно обрисана.'''
 
 Размотрите да ли је прикладно да наставите с уређивањем ове странице.
@@ -1340,8 +1340,8 @@ $2
 'revdelete-no-file' => 'Тражена датотека не постоји.',
 'revdelete-show-file-confirm' => 'Желите ли да видите обрисану измену датотеке „<nowiki>$1</nowiki>“ од $2; $3?',
 'revdelete-show-file-submit' => 'Да',
-'revdelete-selected' => "'''{{PLURAL:$2|Изабрана измена|Изабране измене}} странице '''[[:$1]]''''''",
-'logdelete-selected' => "'''{{PLURAL:$1|Изабрана ставка у историји|Изабране ставке у историји}}:'''",
+'revdelete-selected' => "'''{{PLURAL:$2|1=Изабрана измена|Изабране измене}} странице '''[[:$1]]''''''",
+'logdelete-selected' => "'''{{PLURAL:$1|1=Изабрана ставка у историји|Изабране ставке у историји}}:'''",
 'revdelete-text' => "'''Обрисане измене ће и даље бити приказане у историји страница и записима, али делови њиховог садржаја неће бити доступни јавности.'''
 Други администратори на овом викију ће и даље имати приступ сакривеном садржају, а они ће тај садржај моћи да врате путем овог сучеља, осим ако нису постављена додатна ограничења.",
 'revdelete-confirm' => 'Потврдите да намеравате ово урадити, да разумете последице и да то чините у складу с [[{{MediaWiki:Policy-url}}|правилима]].',
@@ -1362,7 +1362,7 @@ $2
 'revdelete-suppress' => 'Сакриј податке од администратора и других корисника',
 'revdelete-unsuppress' => 'Уклони ограничења на враћеним изменама',
 'revdelete-log' => 'Разлог:',
-'revdelete-submit' => 'Примени на {{PLURAL:$1|изабрану измену|изабране измене}}',
+'revdelete-submit' => 'Примени на {{PLURAL:$1|1=изабрану измену|изабране измене}}',
 'revdelete-success' => "'''Видљивост измене је ажурирана.'''",
 'revdelete-failure' => "'''Не могу да ажурирам видљивост измене:'''
 $1",
@@ -1485,7 +1485,7 @@ $1",
 'searchall' => 'све',
 'showingresults' => "Испод {{PLURAL:$1|је приказан '''1''' резултат|су приказана '''$1''' резултата|је приказано '''$1''' резултата}} почев од броја '''$2'''.",
 'showingresultsnum' => "Испод {{PLURAL:$3|је приказан '''1''' резултат|су приказана '''$3''' резултата|је приказано '''$3''' резултата}} почев од броја '''$2'''.",
-'showingresultsheader' => "{{PLURAL:$5|Резултат '''$1''' од '''$3'''|Резултата '''$1 – $2''' од '''$3'''}} за '''$4'''",
+'showingresultsheader' => "{{PLURAL:$5|1=Резултат '''$1''' од '''$3'''|Резултата '''$1 – $2''' од '''$3'''}} за '''$4'''",
 'search-nonefound' => 'Нема поклапања.',
 'powersearch-legend' => 'Напредна претрага',
 'powersearch-ns' => 'Тражи у следећим именским просторима:',
@@ -1568,7 +1568,7 @@ $1",
 'youremail' => 'Е-адреса:',
 'username' => '{{GENDER:$1|Корисничко име}}:',
 'uid' => '{{GENDER:$1|Кориснички}} ID:',
-'prefs-memberingroups' => '{{GENDER:$2|Корисник|Корисница}} је члан {{PLURAL:$1|групе|група}}:',
+'prefs-memberingroups' => '{{GENDER:$2|Корисник|Корисница}} је члан {{PLURAL:$1|1=групе|група}}:',
 'prefs-memberingroups-type' => '$1',
 'prefs-registration' => 'Време уписа:',
 'prefs-registration-date-time' => '$1',
@@ -1647,7 +1647,7 @@ $1",
 'group-sysop' => 'Администратори',
 'group-bureaucrat' => 'Бирократе',
 'group-suppress' => 'Ревизори',
-'group-all' => '(Ñ\81ве)',
+'group-all' => '(Ñ\81ви)',
 
 'group-user-member' => '{{GENDER:$1|корисник|корисница|корисник}}',
 'group-autoconfirmed-member' => '{{GENDER:$1|аутоматски потврђен корисник|аутоматски потврђена корисница|аутоматски потврђен корисник}}',
@@ -1688,7 +1688,7 @@ $1",
 'right-writeapi' => 'писање АПИ-ја',
 'right-delete' => 'брисање страница',
 'right-bigdelete' => 'брисање страница с великом историјом',
-'right-deletelogentry' => 'Ð\91рисање и враћање одређених ставки у дневнику',
+'right-deletelogentry' => 'брисање и враћање одређених ставки у дневнику',
 'right-deleterevision' => 'брисање и враћање одређених измена страница',
 'right-deletedhistory' => 'прегледање обрисаних ставки историје без повезаног текста',
 'right-deletedtext' => 'прегледање обрисаног текста и измена између обрисаних измена',
@@ -1701,17 +1701,17 @@ $1",
 'right-hideuser' => 'блокирање корисничког имена и његово сакривање од јавности',
 'right-ipblock-exempt' => 'заобилажење блокирања IP адресе, самоблокирања и блокирања опсега',
 'right-proxyunbannable' => 'заобилажење самоблокирања посредника',
-'right-unblockself' => 'Ð\9eдблокирај самог себе',
-'right-protect' => 'Ð\9fÑ\80омени Ð½Ð¸Ð²Ð¾Ðµ Ð·Ð°Ñ\88Ñ\82иÑ\82е Ð¸ Ñ\83Ñ\80еди ÐºÐ°Ñ\81кадно Ð·Ð°Ñ\88Ñ\82иÑ\9bене Ñ\81Ñ\82Ñ\80аниÑ\86е',
-'right-editprotected' => 'Уреди странице под заштитом „{{int:protect-level-sysop}}“',
-'right-editsemiprotected' => 'Уреди странице под заштитом „{{int:protect-level-autoconfirmed}}“',
+'right-unblockself' => 'одблокирај самог себе',
+'right-protect' => 'пÑ\80омени Ð½Ð¸Ð²Ð¾Ðµ Ð·Ð°Ñ\88Ñ\82иÑ\82е Ð¸ Ñ\83Ñ\80еди Ñ\81Ñ\82Ñ\80аниÑ\86е Ñ\81а Ð¿Ñ\80еноÑ\81ивом Ð·Ð°Ñ\88Ñ\82иÑ\82ом',
+'right-editprotected' => 'уреди странице под заштитом „{{int:protect-level-sysop}}“',
+'right-editsemiprotected' => 'уреди странице под заштитом „{{int:protect-level-autoconfirmed}}“',
 'right-editinterface' => 'уређивање корисничког окружења',
 'right-editusercssjs' => 'уређивање туђих CSS и јаваскрипт датотека',
 'right-editusercss' => 'уређивање туђих CSS датотека',
 'right-edituserjs' => 'уређивање туђих јаваскрипт датотека',
-'right-viewmyprivateinfo' => 'Ð\92идите своје личне податке (нпр. адресу е-поште, право име)',
-'right-editmyprivateinfo' => 'Уреди своје личне податке (нпр. адресу е-поште, право име)',
-'right-editmyoptions' => 'Уредите своја подешавања',
+'right-viewmyprivateinfo' => 'видите своје личне податке (нпр. адресу е-поште, право име)',
+'right-editmyprivateinfo' => 'уреди своје личне податке (нпр. адресу е-поште, право име)',
+'right-editmyoptions' => 'уредите своја подешавања',
 'right-rollback' => 'брзо враћање измена последњег корисника који је мењао одређену страницу',
 'right-markbotedits' => 'означавање враћених измена као измене бота',
 'right-noratelimit' => 'отпорност на ограничења',
@@ -1788,6 +1788,7 @@ $1",
 'recentchanges-label-bot' => 'Ову измену је направио бот',
 'recentchanges-label-unpatrolled' => 'Ова измена још није прегледана',
 'recentchanges-label-plusminus' => 'Промена величине странице (у бајтовима)',
+'recentchanges-legend-heading' => "'''Легенда:'''",
 'recentchanges-legend-newpage' => '([[Special:NewPages|списак нових страница]])',
 'rcnotefrom' => 'Испод су измене од <b>$3; $4</b> (до <b>$1</b> измена).',
 'rclistfrom' => 'Прикажи нове измене почев од $1',
@@ -1871,9 +1872,9 @@ $1",
 'filetype-badmime' => 'Датотеке MIME врсте „$1“ није дозвољено слати.',
 'filetype-bad-ie-mime' => 'Ова датотека се не може послати зато што би је Интернет експлорер уочио као „$1“, а то је забрањена и опасна врста датотеке.',
 'filetype-unwanted-type' => '„.$1“ је непожељна врста датотеке.
-{{PLURAL:$3|Пожељна врста датотеке је|Пожељне врсте датотека су}} $2.',
-'filetype-banned-type' => '\'\'\'".$1"\'\'\' {{PLURAL:$4|је забрањена врста датотеке|су забрањене врсте датотека}}.
-{{PLURAL:$3|Дозвољена врста датотеке је|Дозвољене врсте датотека су}} $2.',
+{{PLURAL:$3|1=Пожељна врста датотеке је|Пожељне врсте датотека су}} $2.',
+'filetype-banned-type' => '\'\'\'".$1"\'\'\' {{PLURAL:$4|1=је забрањена врста датотеке|су забрањене врсте датотека}}.
+{{PLURAL:$3|1=Дозвољена врста датотеке је|Дозвољене врсте датотека су}} $2.',
 'filetype-missing' => 'Ова датотека нема екстензију.',
 'empty-file' => 'Послата датотека је празна.',
 'file-too-large' => 'Послата датотека је превелика.',
@@ -1915,7 +1916,7 @@ $1",
 'fileexists-shared-forbidden' => 'Датотека с овим називом већ постоји у заједничком складишту.
 Вратите се и пошаљите датотеку с другим називом.
 [[File:$1|thumb|center|$1]]',
-'file-exists-duplicate' => 'Ово је дупликат {{PLURAL:$1|следеће датотеке|следећих датотека}}:',
+'file-exists-duplicate' => 'Ово је дупликат {{PLURAL:$1|1=следеће датотеке|следећих датотека}}:',
 'file-deleted-duplicate' => 'Датотека истоветна овој ([[:$1]]) је претходно обрисана.
 Погледајте историју брисања пре поновног слања.',
 'uploadwarning' => 'Упозорење при отпремању',
@@ -2200,7 +2201,7 @@ $1',
 
 # Random page
 'randompage' => 'Случајна страница',
-'randompage-nopages' => 'Нема страница у {{PLURAL:$2|следећем именском простору|следећим именским просторима}}: $1.',
+'randompage-nopages' => 'Нема страница у {{PLURAL:$2|1=следећем именском простору|следећим именским просторима}}: $1.',
 
 # Random page in category
 'randomincategory' => 'Случајна страница у категорији',
@@ -2322,7 +2323,7 @@ $1',
 'nopagetitle' => 'Не постоји таква страница',
 'nopagetext' => 'Тражена страница не постоји.',
 'pager-newer-n' => '{{PLURAL:$1|новији 1|новија $1|новијих $1}}',
-'pager-older-n' => '{{PLURAL:$1|старији 1|старија $1|старијих $1}}',
+'pager-older-n' => '{{PLURAL:$1|1=старији 1|старијих $1}}',
 'suppress' => 'Надзор',
 'querypage-disabled' => 'Ова посебна страница је онемогућена ради побољшања перформанси.',
 
@@ -2368,7 +2369,7 @@ $1',
 
 # Special:Categories
 'categories' => 'Категоријe',
-'categoriespagetext' => '{{PLURAL:$1|Следећа категорија садржи|Следеће категорије садрже}} странице или датотеке.
+'categoriespagetext' => '{{PLURAL:$1|1=Следећа категорија садржи|Следеће категорије садрже}} странице или датотеке.
 [[Special:UnusedCategories|Некоришћене категорије]] нису приказане овде.
 Погледајте и [[Special:WantedCategories|тражене категорије]].',
 'categoriesfrom' => 'Прикажи категорије почев од:',
@@ -2387,7 +2388,7 @@ $1',
 'linksearch-ok' => 'Претражи',
 'linksearch-text' => 'Могу се користити џокери попут „*.wikipedia.org“.
 Потребан је највиши домен, као „*.org“.<br />
-{{PLURAL:$2|Подржан протокол|Подржани протоколи}}: <code>$1</code> (задаје http:// ако не наведете протокол).',
+{{PLURAL:$2|1=Подржан протокол|Подржани протоколи}}: <code>$1</code> (задаје http:// ако не наведете протокол).',
 'linksearch-line' => '$1 веза у $2',
 'linksearch-error' => 'Џокери се могу појавити само на почетку адресе.',
 
@@ -2419,12 +2420,12 @@ $1',
 'listgrouprights-members' => '(списак чланова)',
 'listgrouprights-right-display' => '<span class="listgrouprights-granted">$1 <code>($2)</code></span>',
 'listgrouprights-right-revoked' => '<span class="listgrouprights-revoked">$1 <code>($2)</code></span>',
-'listgrouprights-addgroup' => 'додаје {{PLURAL:$2|следећу групу|следеће групе}}: $1',
-'listgrouprights-removegroup' => 'брише {{PLURAL:$2|следећу групу|следеће групе}}: $1',
+'listgrouprights-addgroup' => 'додаје {{PLURAL:$2|1=следећу групу|следеће групе}}: $1',
+'listgrouprights-removegroup' => 'брише {{PLURAL:$2|1=следећу групу|следеће групе}}: $1',
 'listgrouprights-addgroup-all' => 'додавање свих група',
 'listgrouprights-removegroup-all' => 'брисање свих група',
-'listgrouprights-addgroup-self' => 'додавање {{PLURAL:$2|групе|група}} на свој налог: $1',
-'listgrouprights-removegroup-self' => 'уклањање {{PLURAL:$2|групе|група}} са свог налога: $1',
+'listgrouprights-addgroup-self' => 'додавање {{PLURAL:$2|1=групе|група}} на свој налог: $1',
+'listgrouprights-removegroup-self' => 'уклањање {{PLURAL:$2|1=групе|група}} са свог налога: $1',
 'listgrouprights-addgroup-self-all' => 'Додај све групе на сопствени налог',
 'listgrouprights-removegroup-self-all' => 'Уклони све групе са сопственог налога',
 
@@ -2635,7 +2636,7 @@ $UNWATCHURL
 Ово су поставке странице '''$1''':",
 'protect-locked-access' => "Немате овлашћења за мењање степена заштите странице.
 Ово су тренутне поставке странице '''$1''':",
-'protect-cascadeon' => 'Ова страница је тренутно заштићена јер се налази на {{PLURAL:$1|страници која има|страницама које имају}} преносиву заштиту.
+'protect-cascadeon' => 'Ова страница је тренутно заштићена јер се налази на {{PLURAL:$1|1=страници која има|страницама које имају}} преносиву заштиту.
 Можете да промените степен заштите, али то неће утицати на преносиву заштиту.',
 'protect-default' => 'Дозволи свим корисницима',
 'protect-fallback' => 'Дозвољено само корисницима са дозволом „$1“',
@@ -2736,11 +2737,11 @@ $1',
 'tooltip-invert' => 'Означите ову кућицу да бисте сакрили измене на страницама у одабраном именском простору (и повезаним именским просторима, ако је означено)',
 'namespace_association' => 'Повезани именски простор',
 'tooltip-namespace_association' => 'Означите ову кућицу да бисте укључили и разговор или именски простор теме која је повезана с одабраним именским простором',
-'blanknamespace' => '(Ð\93лавно)',
+'blanknamespace' => '(главни)',
 
 # Contributions
 'contributions' => '{{GENDER:$1|Кориснички}} доприноси',
-'contributions-title' => 'Доприноси {{GENDER:$1|корисника|кориснице|корисника}} $1',
+'contributions-title' => 'Доприноси {{GENDER:$1|корисника|кориснице}} $1',
 'mycontris' => 'Доприноси',
 'contribsub2' => 'За {{GENDER:$3|$1}} ($2)',
 'nocontribs' => 'Измене које одговарају овим условима нису пронађене.',
@@ -2775,8 +2776,8 @@ $1',
 'isredirect' => 'преусмерење',
 'istemplate' => 'укључивање',
 'isimage' => 'веза до датотеке',
-'whatlinkshere-prev' => '{{PLURAL:$1|претходни|претходних $1}}',
-'whatlinkshere-next' => '{{PLURAL:$1|следећи|следећих $1}}',
+'whatlinkshere-prev' => '{{PLURAL:$1|1=претходни|претходних $1}}',
+'whatlinkshere-next' => '{{PLURAL:$1|1=следећи|следећих $1}}',
 'whatlinkshere-links' => '← везе',
 'whatlinkshere-hideredirs' => '$1 преусмерења',
 'whatlinkshere-hidetrans' => '$1 укључивања',
@@ -2848,7 +2849,7 @@ $1',
 'blocklist-reason' => 'Разлог',
 'ipblocklist-submit' => 'Претражи',
 'ipblocklist-localblock' => 'Локално блокирање',
-'ipblocklist-otherblocks' => '{{PLURAL:$1|Друго блокирање|Друга блокирања}}',
+'ipblocklist-otherblocks' => '{{PLURAL:$1|1=Друго блокирање|Друга блокирања}}',
 'infiniteblock' => 'никада',
 'expiringblock' => 'истиче дана $1 у $2',
 'anononlyblock' => 'само анонимни',
@@ -2889,7 +2890,7 @@ $1',
 'ipb_hide_invalid' => 'Не могу да потиснем овај налог. Можда има превише измена.',
 'ipb_already_blocked' => '„$1“ је већ блокиран',
 'ipb-needreblock' => '$1 је већ блокиран. Желите ли да промените подешавања?',
-'ipb-otherblocks-header' => '{{PLURAL:$1|Друга блокада|Друге блокаде}}',
+'ipb-otherblocks-header' => '{{PLURAL:$1|1=Друга блокада|Друге блокаде}}',
 'unblock-hideuser' => 'Не можете деблокирати овог корисника јер је његово корисничко име сакривено.',
 'ipb_cant_unblock' => 'Грешка: блокада $1 не постоји. Можда је корисник деблокиран.',
 'ipb_blocked_as_range' => 'Грешка: ИП адреса $1 није директно блокирана и не може да се деблокира.
@@ -2987,7 +2988,7 @@ $1',
 'movepage-max-pages' => 'Највише $1 {{PLURAL:$1|страница је премештена|странице су премештене|страница је премештено}}, и више не може да буде аутоматски премештено.',
 'movelogpage' => 'Дневник премештања',
 'movelogpagetext' => 'Испод се налази списак премештања страница.',
-'movesubpage' => '{{PLURAL:$1|Подстраница|Подстранице|Подстраница}}',
+'movesubpage' => '{{PLURAL:$1|1=Подстраница|Подстранице}}',
 'movesubpagetext' => 'Ова страница има $1 {{PLURAL:$1|подстраницу приказану|подстранице приказане|подстраница приказаних}} испод.',
 'movenosubpage' => 'Ова страница нема подстрана.',
 'movereason' => 'Разлог:',
@@ -3124,7 +3125,7 @@ $1',
 'import-error-special' => 'Не могу да увезем страницу „$1“ јер она припада посебном именском простору које не прихвата странице.',
 'import-error-invalid' => 'Не могу да увезем страницу „$1“ јер је њен назив неисправан.',
 'import-error-unserialize' => 'Верзија $2 странице $1 не може бити прочитана/увезена. Записано је да верзија користи $3 тип садржаја у $4 формату.',
-'import-options-wrong' => '{{PLURAL:$2|Погрешна опција|Погрешне опције}}: <nowiki>$1</nowiki>',
+'import-options-wrong' => '{{PLURAL:$2|1=Погрешна опција|Погрешне опције}}: <nowiki>$1</nowiki>',
 'import-rootpage-invalid' => 'Наведена основна страница има неисправан наслов.',
 'import-rootpage-nosubpage' => 'Именски простор „$1“ основне странице не дозвољава подстранице.',
 
@@ -3243,14 +3244,14 @@ $1',
 'notacceptable' => 'Сервер не може да направи податке у формату погодном за ваш клијент.',
 
 # Attribution
-'anonymous' => 'Анонимни {{PLURAL:$1|корисник|корисници}} на пројекту {{SITENAME}}',
+'anonymous' => 'Анонимни {{PLURAL:$1|1=корисник|корисници}} на пројекту {{SITENAME}}',
 'siteuser' => '{{SITENAME}} корисник $1',
 'anonuser' => '{{SITENAME}} анониман корисник $1',
 'lastmodifiedatby' => 'Ову страницу је последњи пут {{GENDER:$4|изменио|изменила|изменио}} $3, $1 у $2.',
 'othercontribs' => 'Засновано на раду корисникâ $1.',
 'others' => 'други',
-'siteusers' => '{{PLURAL:$2|корисник|корисници}} на пројекту {{SITENAME}} $1',
-'anonusers' => '{{PLURAL:$2|анониман корисник|анонимни корисници}} на пројекту {{SITENAME}} $1',
+'siteusers' => '{{PLURAL:$2|1=корисник|корисници}} на пројекту {{SITENAME}} $1',
+'anonusers' => '{{PLURAL:$2|1=анониман корисник|анонимни корисници}} на пројекту {{SITENAME}} $1',
 'creditspage' => 'Аутори странице',
 'nocredits' => 'Не постоје подаци о аутору ове странице.',
 
@@ -3282,7 +3283,7 @@ $1',
 'pageinfo-robot-noindex' => 'Није дозвољено',
 'pageinfo-views' => 'Број прегледа',
 'pageinfo-watchers' => 'Број надгледача страница',
-'pageinfo-few-watchers' => 'Мање од $1 {{PLURAL:$1|пратиоца|пратилаца}}',
+'pageinfo-few-watchers' => 'Мање од $1 {{PLURAL:$1|1=пратиоца|пратилаца}}',
 'pageinfo-redirects-name' => 'Број преусмерења на ову страницу',
 'pageinfo-subpages-name' => 'Подстранице ове странице',
 'pageinfo-subpages-value' => '$1 ($2 {{PLURAL:$2|преусмерење|преусмерења|преусмерења}}; $3 {{PLURAL:$3|непреусмерење|непреусмерења|непреусмерења}})',
@@ -3294,10 +3295,10 @@ $1',
 'pageinfo-authors' => 'Број засебних аутора',
 'pageinfo-recent-edits' => 'Број скорашњих измена (у последњих $1)',
 'pageinfo-recent-authors' => 'Број скорашњих засебних аутора',
-'pageinfo-magic-words' => '{{PLURAL:$1|Магична реч|Магичне речи}} ($1)',
-'pageinfo-hidden-categories' => '{{PLURAL:$1|Сакривена категорија|Сакривене категорије}} ($1)',
-'pageinfo-templates' => '{{PLURAL:$1|Укључени шаблон|Укључени шаблони}} ($1)',
-'pageinfo-transclusions' => '{{PLURAL:$1|Страница|Странице}} укључене у ($1)',
+'pageinfo-magic-words' => '{{PLURAL:$1|1=Магична реч|Магичне речи}} ($1)',
+'pageinfo-hidden-categories' => '{{PLURAL:$1|1=Сакривена категорија|Сакривене категорије}} ($1)',
+'pageinfo-templates' => '{{PLURAL:$1|1=Укључени шаблон|Укључени шаблони}} ($1)',
+'pageinfo-transclusions' => '{{PLURAL:$1|1=Страница|Странице}} укључене у ($1)',
 'pageinfo-toolboxlink' => 'Подаци о страници',
 'pageinfo-redirectsto' => 'Преусмерава на',
 'pageinfo-redirectsto-info' => 'подаци',
@@ -3366,7 +3367,7 @@ $1',
 'svg-long-error' => 'Неисправна SVG датотека: $1',
 'show-big-image' => 'Пуна величина',
 'show-big-image-preview' => 'Величина овог приказа: $1.',
-'show-big-image-other' => '{{PLURAL:$2|Друга резолуција|Друге резолуције}}: $1.',
+'show-big-image-other' => '{{PLURAL:$2|1=Друга резолуција|Друге резолуције}}: $1.',
 'show-big-image-size' => '$1 × $2 пиксела',
 'file-info-gif-looped' => 'петља',
 'file-info-gif-frames' => '$1 {{PLURAL:$1|кадар|кадра|кадрова}}',
@@ -3399,15 +3400,15 @@ $1',
 'hours' => '{{PLURAL:$1|$1 сат|$1 сата|$1 сати}}',
 'days' => '{{PLURAL:$1|$1 дан|$1 дана|$1 дана}}',
 'weeks' => '{{PLURAL:$1|$1 седмица}}',
-'months' => '{{PLURAL:$1|$1 месец|$1 месеци}}',
-'years' => '{{PLURAL:$1|$1 година|$1 године}}',
+'months' => '{{PLURAL:$1|1=$1 месец|$1 месеци}}',
+'years' => '{{PLURAL:$1|1=$1 година|$1 године}}',
 'ago' => 'пре $1',
 'just-now' => 'управо сад',
 
 # Human-readable timestamps
-'hours-ago' => 'Пре $1 {{PLURAL:$1|сат|сати}}',
-'minutes-ago' => 'Пре $1 {{PLURAL:$1|минут|минута}}',
-'seconds-ago' => 'Пре $1 {{PLURAL:$1|секунда|секунди}}',
+'hours-ago' => 'Пре $1 {{PLURAL:$1|1=сат|сати}}',
+'minutes-ago' => 'Пре $1 {{PLURAL:$1|1=минут|минута}}',
+'seconds-ago' => 'Пре $1 {{PLURAL:$1|1=секунда|секунди}}',
 'monday-at' => 'Понедељак у $1',
 'tuesday-at' => 'Уторак у $1',
 'wednesday-at' => 'Среда у $1',
@@ -3663,7 +3664,7 @@ Variants for Chinese language
 'exif-copyrightowner' => 'Носилац ауторског права',
 'exif-usageterms' => 'Правила коришћења',
 'exif-webstatement' => 'Изјава о ауторском праву',
-'exif-originaldocumentid' => 'Јединствени ИБ изворног документа',
+'exif-originaldocumentid' => 'Јединствени ID изворног документа',
 'exif-licenseurl' => 'Адреса лиценце за ауторска права',
 'exif-morepermissionsurl' => 'Резервни подаци о лиценцирању',
 'exif-attributionurl' => 'При поновном коришћењу овог рада, користите везу до',
@@ -3932,7 +3933,7 @@ $8',
 
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'све',
-'namespacesall' => 'Ñ\81ве',
+'namespacesall' => 'Ñ\81ви',
 'monthsall' => 'све',
 
 # Email address confirmation
@@ -4040,6 +4041,9 @@ $5
 'imgmultigo' => 'Иди!',
 'imgmultigoto' => 'Иди на страницу $1',
 
+# Language selector for translatable SVGs
+'img-lang-default' => '(подразумевани језик)',
+
 # Table pager
 'ascending_abbrev' => 'раст.',
 'descending_abbrev' => 'опад.',
@@ -4074,7 +4078,7 @@ $5
 
 # Friendlier slave lag warnings
 'lag-warn-normal' => 'Измене новије од $1 {{PLURAL:$1|секунде|секунде|секунди}} неће бити приказане.',
-'lag-warn-high' => 'Због преоптерећења базе података, измене новије од $1 {{PLURAL:$1|секунда|секунде}} неће бити приказане.',
+'lag-warn-high' => 'Због преоптерећења базе података, измене новије од $1 {{PLURAL:$1|1=секунда|секунде}} неће бити приказане.',
 
 # Watchlist editor
 'watchlistedit-numitems' => 'Ваш списак надгледања садржи {{PLURAL:$1|један наслов|$1 наслова|$1 наслова}}, без страница за разговор.',
@@ -4208,6 +4212,7 @@ $5
 'redirect-legend' => 'Преусмери на датотеку или страницу',
 'redirect-submit' => 'Иди',
 'redirect-value' => 'Вредност:',
+'redirect-page' => 'ID странице',
 'redirect-file' => 'Назив датотеке',
 'redirect-not-exists' => 'Вредност није пронађена',
 
@@ -4217,7 +4222,7 @@ $5
 'fileduplicatesearch-legend' => 'Претрага дупликата',
 'fileduplicatesearch-filename' => 'Назив датотеке:',
 'fileduplicatesearch-submit' => 'Претражи',
-'fileduplicatesearch-info' => '$1 × $2 пиксела<br />Величина: $3<br />MIME врста: $4',
+'fileduplicatesearch-info' => '$1 × $2 пиксела<br />Величина датотеке: $3<br />MIME тип: $4',
 'fileduplicatesearch-result-1' => 'Датотека „$1“ нема истоветних дупликата.',
 'fileduplicatesearch-result-n' => 'Датотека „$1“ има {{PLURAL:$2|идентичан дупликат|$2 идентична дупликата|$2 идентичних дупликата}}.',
 'fileduplicatesearch-noresults' => 'Датотека под називом „$1“ није пронађена.',
@@ -4258,7 +4263,7 @@ $5
 'tags' => 'Важеће ознаке измена',
 'tag-filter' => 'Филтер за [[Special:Tags|ознаке]]:',
 'tag-filter-submit' => 'Филтрирај',
-'tag-list-wrapper' => '([[Special:Tags|{{PLURAL:$1|Ознака|Ознаке}}]]: $2)',
+'tag-list-wrapper' => '([[Special:Tags|{{PLURAL:$1|1=Ознака|Ознаке}}]]: $2)',
 'tags-title' => 'Ознаке',
 'tags-intro' => 'На овој страници је наведен списак ознака с којима програм може да означи измене и његово значење.',
 'tags-tag' => 'Назив ознаке',
@@ -4313,13 +4318,13 @@ $5
 # New logging system
 'logentry-delete-delete' => '$1 је {{GENDER:|обрисао|обрисала}} страницу $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' => '$1 је {{GENDER:$2|променио|променила}} видљивост {{PLURAL:$5|1=догађаја|$5 догађаја}} у дневнику на $3: $4',
+'logentry-delete-revision' => '$1 је {{GENDER:$2|променио|променила}} видљивост {{PLURAL:$5|1=измене|$5 измена}} на страници $3: $4',
 'logentry-delete-event-legacy' => '$1 је {{GENDER:$2|променио|променила}} видљивост догађаја у дневнику на $3',
 'logentry-delete-revision-legacy' => '$1 је {{GENDER:$2|променио|променила}} видљивост измена на страници $3',
 'logentry-suppress-delete' => '$1 је {{GENDER:$2|потиснуо|потиснула}} страницу $3',
-'logentry-suppress-event' => '$1 је тајно {{GENDER:$2|променио|променила}} видљивост {{PLURAL:$5|догађаја|$5 догађаја}} у дневнику на $3: $4',
-'logentry-suppress-revision' => '$1 је тајно {{GENDER:$2|променио|променила}} видљивост {{PLURAL:$5|измене|$5 измена}} на страници $3: $4',
+'logentry-suppress-event' => '$1 је тајно {{GENDER:$2|променио|променила}} видљивост {{PLURAL:$5|1=догађаја|$5 догађаја}} у дневнику на $3: $4',
+'logentry-suppress-revision' => '$1 је тајно {{GENDER:$2|променио|променила}} видљивост {{PLURAL:$5|1=измене|$5 измена}} на страници $3: $4',
 'logentry-suppress-event-legacy' => '$1 је потајно {{GENDER:$2|променио|променила}} видљивост догађаја у дневнику на $3',
 'logentry-suppress-revision-legacy' => '$1 је тајно {{GENDER:$2|променио|променила}} видљивост измена на страници $3',
 'revdelete-content-hid' => 'садржај је сакривен',
@@ -4370,10 +4375,10 @@ $5
 'api-error-badaccess-groups' => 'Није вам дозвољено да отпремате датотеке на овај вики.',
 'api-error-badtoken' => 'Унутрашња грешка: неисправан жетон.',
 'api-error-copyuploaddisabled' => 'Отпремање путем адресе је онемогућено на овом серверу.',
-'api-error-duplicate' => 'Већ {{PLURAL:$1|постоји [$2 друга датотека]|постоје [$2 друге датотеке]}} с истим садржајем.',
-'api-error-duplicate-archive' => '{{PLURAL:$1|Постојала је [$2 друга датотека]|Постојале су [$2 друге датотеке]}} с истим садржајем, али {{PLURAL:$1|је обрисана|су обрисане}}.',
-'api-error-duplicate-archive-popup-title' => '{{PLURAL:$1|Дуплирана датотека која је већ обрисана|Дуплиране датотеке које су већ обрисане}}',
-'api-error-duplicate-popup-title' => '{{PLURAL:$1|Дуплирана датотека|Дуплиране датотеке}}',
+'api-error-duplicate' => 'Већ {{PLURAL:$1|1=постоји [$2 друга датотека]|постоје [$2 друге датотеке]}} с истим садржајем.',
+'api-error-duplicate-archive' => '{{PLURAL:$1|1=Постојала је [$2 друга датотека]|Постојале су [$2 друге датотеке]}} с истим садржајем, али {{PLURAL:$1|1=је обрисана|су обрисане}}.',
+'api-error-duplicate-archive-popup-title' => '{{PLURAL:$1|1=Дуплирана датотека која је већ обрисана|Дуплиране датотеке које су већ обрисане}}',
+'api-error-duplicate-popup-title' => '{{PLURAL:$1|1=Дуплирана датотека|Дуплиране датотеке}}',
 'api-error-empty-file' => 'Послата датотека је празна.',
 'api-error-emptypage' => 'Стварање нових празних страница није дозвољено.',
 'api-error-fetchfileerror' => 'Унутрашња грешка: дошло је до грешке при добављању датотеке.',
@@ -4382,7 +4387,7 @@ $5
 'api-error-file-too-large' => 'Послата датотека је превелика.',
 'api-error-filename-tooshort' => 'Назив датотеке је прекратак.',
 'api-error-filetype-banned' => 'Ова врста датотеке је забрањена.',
-'api-error-filetype-banned-type' => '$1 {{PLURAL:$4|је забрањена врста датотеке|су забрањене врсте датотека}}. {{PLURAL:$3|Дозвољена је|Дозвољене су}} $2.',
+'api-error-filetype-banned-type' => '$1 {{PLURAL:$4|1=је забрањена врста датотеке|су забрањене врсте датотека}}. {{PLURAL:$3|1=Дозвољена је|Дозвољене су}} $2.',
 'api-error-filetype-missing' => 'Датотеци недостаје наставак.',
 'api-error-hookaborted' => 'Измена је одбачена од куке за проширења.',
 'api-error-http' => 'Унутрашња грешка: не могу да се повежем са сервером.',
@@ -4423,7 +4428,7 @@ $5
 'rotate-comment' => 'Слика је ротирана у смеру казаљке на сату за {{PLURAL:$1|степени}}',
 
 # Limit report
-'limitreport-walltime-value' => '$1 {{PLURAL:$1|секунда|секунди}}',
+'limitreport-walltime-value' => '$1 {{PLURAL:$1|1=секунда|секунди}}',
 'limitreport-postexpandincludesize-value' => '$1/$2 бајтова',
 'limitreport-templateargumentsize-value' => '$1/$2 бајтова',
 
index 55594ff..ac053c1 100644 (file)
@@ -319,7 +319,7 @@ $messages = array(
 'tog-editsection' => 'Veze za uređivanje pojedinačnih odeljaka',
 'tog-editsectiononrightclick' => 'Uređivanje odeljaka desnim klikom na njihove naslove',
 'tog-showtoc' => 'Prikaži sadržaj stranica koje imaju više od tri podnaslova',
-'tog-rememberpassword' => 'Zapamti me na ovom pregledaču (najduže $1 {{PLURAL:$1|dan|dana}})',
+'tog-rememberpassword' => 'Zapamti me na ovom pregledaču (najduže $1 {{PLURAL:$1|1=dan|dana}})',
 'tog-watchcreations' => 'Dodaj stranice koje napravim i datoteke koje pošaljem u spisak nadgledanja',
 'tog-watchdefault' => 'Dodaj stranice i datoteke koje izmenim u spisak nadgledanja',
 'tog-watchmoves' => 'Dodaj stranice i datoteke koje premestim u spisak nadgledanja',
@@ -426,12 +426,12 @@ $messages = array(
 'december-date' => '$1. decembar',
 
 # Categories related messages
-'pagecategories' => '{{PLURAL:$1|Kategorija|Kategorije}}',
+'pagecategories' => '{{PLURAL:$1|1=Kategorija|Kategorije}}',
 'category_header' => 'Stranice u kategoriji „$1“',
 'subcategories' => 'Potkategorije',
 'category-media-header' => 'Datoteke u kategoriji „$1“',
 'category-empty' => "<div style=\"margin:2em 1em 0 1em; padding:0.5em; border:1px solid #AAA; text-align:center;\">''Ova kategorija trenutno ne sadrži stranice ili datoteke.''</div>",
-'hidden-categories' => '{{PLURAL:$1|Sakrivena kategorija|Sakrivene kategorije}}',
+'hidden-categories' => '{{PLURAL:$1|1=Sakrivena kategorija|Sakrivene kategorije}}',
 'hidden-category-category' => 'Sakrivene kategorije',
 'category-subcat-count' => '{{PLURAL:$2|Ova kategorija sadrži samo sledeću potkategoriju.|Ova kategorija ima {{PLURAL:$1|sledeću potkategoriju|sledeće $1 potkategorije|sledećih $1 potkategorija}}, od ukupno $2.}}',
 'category-subcat-count-limited' => 'Ova kategorija sadrži {{PLURAL:$1|sledeću potkategoriju|sledeće $1 potkategorije|sledećih $1 potkategorija}}.',
@@ -567,7 +567,7 @@ $1',
 
 'badaccess' => 'Greške u ovlašćenjima',
 'badaccess-group0' => 'Nije vam dozvoljeno da izvršite zahtevanu radnju.',
-'badaccess-groups' => 'Radnja je dostupna samo korisnicima u {{PLURAL:$2|sledećoj grupi|sledećim grupama}}:  $1.',
+'badaccess-groups' => 'Radnja je dostupna samo korisnicima u {{PLURAL:$2|1=sledećoj grupi|sledećim grupama}}:  $1.',
 
 'versionrequired' => 'Potrebno je izdanje $1 Medijavikija',
 'versionrequiredtext' => 'Potrebno je izdanje $1 Medijavikija da biste koristili ovu stranicu.
@@ -581,8 +581,8 @@ Pogledajte stranicu za [[Special:Version|izdanje]].',
 'youhavenewmessages' => 'Imate $1 ($2).',
 'youhavenewmessagesfromusers' => 'Imate $1 od {{PLURAL:$3|drugog korisnika|$3 korisnika|$3 korisnika}} ($2).',
 'youhavenewmessagesmanyusers' => 'Imate $1 od mnogo korisnika ($2).',
-'newmessageslinkplural' => '{{PLURAL:$1|novu poruku|nove poruke}}',
-'newmessagesdifflinkplural' => '{{PLURAL:$1|poslednju izmenu|poslednje izmene}}',
+'newmessageslinkplural' => '{{PLURAL:$1|1=novu poruku|999=nove poruke}}',
+'newmessagesdifflinkplural' => '{{PLURAL:$1|1=poslednju izmenu|999=poslednje izmene}}',
 'youhavenewmessagesmulti' => 'Imate novih poruka na $1',
 'editsection' => 'uredi',
 'editold' => 'uredi',
@@ -673,7 +673,7 @@ Nije dato nikakvo obrazloženje.',
 'badtitletext' => 'Naslov stranice je neispravan, prazan ili je međujezički ili međuviki naslov pogrešno povezan.
 Možda sadrži znakove koji se ne mogu koristiti u naslovima.',
 'perfcached' => 'Sledeći podaci su keširani i mogu biti zastareli. Keš sadrži najviše {{PLURAL:$1|jedan rezultat|$1 rezultata|$1 rezultata}}.',
-'perfcachedts' => 'Sledeći podaci su keširani, a poslednji put su ažurirani $2 u $3. Keš sadrži najviše {{PLURAL:$4|jedan rezultat|$4 rezultata|$4 rezultata}}.',
+'perfcachedts' => 'Sledeći podaci su keširani i poslednji put su ažurirani $2 u $3. Keš sadrži najviše {{PLURAL:$4|1=jedan rezultat|$4 rezultata}}.',
 'querypage-no-updates' => 'Ažuriranje ove stranice je trenutno onemogućeno.
 Podaci koji se ovde nalaze mogu biti zastareli.',
 'viewsource' => 'Izvorni kod',
@@ -688,7 +688,7 @@ Da biste dodali ili izmenili prevode svih vikija, posetite [//translatewiki.net/
 'editinginterface' => "'''Upozorenje:''' uređujete stranicu koja se koristi za prikazivanje teksta korisničkog okruženja.
 Izmene na ovoj stranici će uticati na sve korisnike ovog vikija.
 Da biste dodali ili izmenili prevode svih vikija, posetite [//translatewiki.net/wiki/Main_Page?setlang=sr_ec Translejtviki], projekat za lokalizaciju Medijavikija.",
-'cascadeprotected' => 'Ova stranica je zaključana jer sadrži {{PLURAL:$1|sledeću stranicu koja je zaštićena|sledeće stranice koje su zaštićene}} „prenosivom“ zaštitom:
+'cascadeprotected' => 'Ova stranica je zaključana jer sadrži {{PLURAL:$1|1=sledeću stranicu koja je zaštićena|sledeće stranice koje su zaštićene}} „prenosivom“ zaštitom:
 $2',
 'namespaceprotected' => "Nemate dozvolu da uređujete stranice u imenskom prostoru '''$1'''.",
 'customcssprotected' => 'Nemate dozvolu da menjate ovu CSS stranicu jer sadrži lične postavke drugog korisnika.',
@@ -790,7 +790,7 @@ Proverite da li ste pravilno napisali.',
 'passwordtooshort' => 'Lozinka mora imati najmanje {{PLURAL:$1|jedan znak|$1 znaka|$1 znakova}}.',
 'password-name-match' => 'Lozinka se mora razlikovati od korisničkog imena.',
 'password-login-forbidden' => 'Korišćenje ovog korisničkog imena i lozinke je zabranjeno.',
-'mailmypassword' => 'Pošalji novu lozinku',
+'mailmypassword' => 'Resetuj lozinku',
 'passwordremindertitle' => '{{SITENAME}} – podsetnik za lozinku',
 'passwordremindertext' => 'Neko, verovatno vi, sa IP adrese $1 je zatražio novu lozinku na vikiju {{SITENAME}} ($4).
 Stvorena je privremena lozinka za {{GENDER:$2|korisnika|korisnicu|korisnika}} $2 koja glasi $3.
@@ -868,18 +868,18 @@ Možda ste već promenili lozinku ili ste zatražili novu privremenu lozinku.',
 'passwordreset-email' => 'E-adresa:',
 'passwordreset-emailtitle' => 'Detalji naloga na vikiju {{SITENAME}}',
 'passwordreset-emailtext-ip' => 'Neko, verovatno vi, sa IP adrese $1 je zatražio novu lozinku na vikiju {{SITENAME}} ($4).
-Sledeći {{PLURAL:$3|korisnički nalog je povezan|korisnički nalozi su povezani}} s ovom e-adresom:
+Sledeći {{PLURAL:$3|1=korisnički nalog je povezan|korisnički nalozi su povezani}} s ovom e-adresom:
 
 $2
 
-{{PLURAL:$3|Privremena lozinka ističe|Privremene lozinke ističu}} za {{PLURAL:$5|jedan dan|$5 dana|$5 dana}}.
+{{PLURAL:$3|1=Privremena lozinka ističe|Privremene lozinke ističu}} za {{PLURAL:$5|jedan dan|$5 dana|$5 dana}}.
 Prijavite se i izaberite novu lozinku. Ako je neko drugi zahtevao ovu radnju ili ste se setili lozinke i ne želite da je menjate, zanemarite ovu poruku.',
 'passwordreset-emailtext-user' => '{{GENDER:$1|Korisnik|Korisnica|Korisnik}} $1 je zatražio podsetnik o podacima za prijavu na vikiju {{SITENAME}} ($4).
-Sledeći {{PLURAL:$3|korisnički nalog je povezan|korisnički nalozi su povezani}} s ovom e-adresom:
+Sledeći {{PLURAL:$3|1=korisnički nalog je povezan|korisnički nalozi su povezani}} s ovom e-adresom:
 
 $2
 
-{{PLURAL:$3|Privremena lozinka ističe|Privremene lozinke ističu}} za {{PLURAL:$5|jedan dan|$5 dana|$5 dana}}.
+{{PLURAL:$3|1=Privremena lozinka ističe|Privremene lozinke ističu}} za {{PLURAL:$5|jedan dan|$5 dana|$5 dana}}.
 Prijavite se i izaberite novu lozinku. Ako je neko drugi zahtevao ovu radnju ili ste se setili lozinke i ne želite da je menjate, zanemarite ovu poruku.',
 'passwordreset-emailelement' => 'Korisničko ime: $1
 Privremena lozinka: $2',
@@ -1072,11 +1072,11 @@ Administrator koji je zaključao bazu podataka je naveo sledeće objašnjenje: $
 Poslednja stavka u istoriji je prikazana ispod:",
 'semiprotectedpagewarning' => "'''Napomena:''' ova stranica je zaštićena, tako da samo registrovani korisnici mogu da je uređuju.
 Poslednji zapis u dnevniku je prikazan ispod:",
-'cascadeprotectedwarning' => "<div style=\"background: #FFBDBD; border: 1px solid #BB7979; color: #000000; font-weight: bold; margin: 2em 0 1em; padding: .5em 1em; vertical-align: middle; clear: both;\">'''Upozorenje:''' Ova stranica je zaštićena tako da je mogu uređivati samo administratori, jer je ona uključena u {{PLURAL:\$1|sledeću stranicu koja je|sledeće stranice koje su}} zaštićene „prenosivom“ zaštitom:</div>",
+'cascadeprotectedwarning' => "<div style=\"background: #FFBDBD; border: 1px solid #BB7979; color: #000000; font-weight: bold; margin: 2em 0 1em; padding: .5em 1em; vertical-align: middle; clear: both;\">'''Upozorenje:''' Ova stranica je zaštićena tako da je mogu uređivati samo administratori, jer je ona uključena u {{PLURAL:\$1|1=sledeću stranicu koja je|sledeće stranice koje su}} zaštićene „prenosivom“ zaštitom:</div>",
 'titleprotectedwarning' => "'''Upozorenje: ova stranica je zaštićena tako da je mogu napraviti samo korisnici [[Special:ListGroupRights|s određenim pravima]].'''",
-'templatesused' => '{{PLURAL:$1|Šablon|Šabloni}} na ovoj stranici:',
-'templatesusedpreview' => '{{PLURAL:$1|Šablon|Šabloni}} u ovom pregledu:',
-'templatesusedsection' => '{{PLURAL:$1|Šablon|Šabloni}} u ovom odeljku:',
+'templatesused' => '{{PLURAL:$1|1=Šablon|Šabloni}} na ovoj stranici:',
+'templatesusedpreview' => '{{PLURAL:$1|1=Šablon|Šabloni}} u ovom pregledu:',
+'templatesusedsection' => '{{PLURAL:$1|1=Šablon|Šabloni}} u ovom odeljku:',
 'template-protected' => '(zaštićen)',
 'template-semiprotected' => '(poluzaštićen)',
 'hiddencategories' => 'Ova stranica je član {{PLURAL:$1|jedne skrivene kategorije|$1 skrivene kategorije|$1 skrivenih kategorija}}:',
@@ -1088,8 +1088,8 @@ Možete se vratiti i urediti postojeću stranicu, ili se [[Special:UserLogin|pri
 'sectioneditnotsupported-title' => 'Uređivanje odeljka nije podržano',
 'sectioneditnotsupported-text' => 'Uređivanje odeljka nije podržano na ovoj stranici.',
 'permissionserrors' => 'Greška u dozvoli',
-'permissionserrorstext' => 'Nemate ovlašćenje za tu radnju iz {{PLURAL:$1|sledećeg|sledećih}} razloga:',
-'permissionserrorstext-withaction' => 'Nemate dozvolu za $2 iz {{PLURAL:$1|sledećeg|sledećih}} razloga:',
+'permissionserrorstext' => 'Nemate ovlašćenje za tu radnju iz {{PLURAL:$1|1=sledećeg|sledećih}} razloga:',
+'permissionserrorstext-withaction' => 'Nemate dozvolu za $2 iz {{PLURAL:$1|1=sledećeg|sledećih}} razloga:',
 'recreate-moveddeleted-warn' => "'''Upozorenje: ponovo pravite stranicu koja je prethodno obrisana.'''
 
 Razmotrite da li je prikladno da nastavite s uređivanjem ove stranice.
@@ -1225,8 +1225,8 @@ Ipak možete da vidite ovu razliku; više detalja možete naći u [{{fullurl:{{#
 'revdelete-no-file' => 'Tražena datoteka ne postoji.',
 'revdelete-show-file-confirm' => 'Želite li da vidite obrisanu izmenu datoteke „<nowiki>$1</nowiki>“ od $2; $3?',
 'revdelete-show-file-submit' => 'Da',
-'revdelete-selected' => "'''{{PLURAL:$2|Izabrana izmena|Izabrane izmene}} stranice '''[[:$1]]''''''",
-'logdelete-selected' => "'''{{PLURAL:$1|Izabrana stavka u istoriji|Izabrane stavke u istoriji}}:'''",
+'revdelete-selected' => "'''{{PLURAL:$2|1=Izabrana izmena|Izabrane izmene}} stranice '''[[:$1]]''''''",
+'logdelete-selected' => "'''{{PLURAL:$1|1=Izabrana stavka u istoriji|Izabrane stavke u istoriji}}:'''",
 'revdelete-text' => "'''Obrisane izmene će i dalje biti prikazane u istoriji stranica i zapisima, ali delovi njihovog sadržaja neće biti dostupni javnosti.'''
 Drugi administratori na ovom vikiju će i dalje imati pristup sakrivenom sadržaju, a oni će taj sadržaj moći da vrate putem ovog sučelja, osim ako nisu postavljena dodatna ograničenja.",
 'revdelete-confirm' => 'Potvrdite da nameravate ovo uraditi, da razumete posledice i da to činite u skladu s [[{{MediaWiki:Policy-url}}|pravilima]].',
@@ -1247,7 +1247,7 @@ Drugi administratori na ovom vikiju će i dalje imati pristup sakrivenom sadrža
 'revdelete-suppress' => 'Sakrij podatke od administratora i drugih korisnika',
 'revdelete-unsuppress' => 'Ukloni ograničenja na vraćenim izmenama',
 'revdelete-log' => 'Razlog:',
-'revdelete-submit' => 'Primeni na {{PLURAL:$1|izabranu izmenu|izabrane izmene}}',
+'revdelete-submit' => 'Primeni na {{PLURAL:$1|1=izabranu izmenu|izabrane izmene}}',
 'revdelete-success' => "'''Vidljivost izmene je ažurirana.'''",
 'revdelete-failure' => "'''Ne mogu da ažuriram vidljivost izmene:'''
 $1",
@@ -1370,7 +1370,7 @@ Više informacija možete pronaći u [{{fullurl:{{#Special:Log}}/delete|page={{F
 'searchall' => 'sve',
 'showingresults' => "Ispod {{PLURAL:$1|je prikazan '''1''' rezultat|su prikazana '''$1''' rezultata|je prikazano '''$1''' rezultata}} počev od broja '''$2'''.",
 'showingresultsnum' => "Ispod {{PLURAL:$3|je prikazan '''1''' rezultat|su prikazana '''$3''' rezultata|je prikazano '''$3''' rezultata}} počev od broja '''$2'''.",
-'showingresultsheader' => "{{PLURAL:$5|Rezultat '''$1''' od '''$3'''|Rezultata '''$1 – $2''' od '''$3'''}} za '''$4'''",
+'showingresultsheader' => "{{PLURAL:$5|1=Rezultat '''$1''' od '''$3'''|Rezultata '''$1 – $2''' od '''$3'''}} za '''$4'''",
 'search-nonefound' => 'Nema poklapanja.',
 'powersearch-legend' => 'Napredna pretraga',
 'powersearch-ns' => 'Traži u sledećim imenskim prostorima:',
@@ -1453,7 +1453,7 @@ Ova radnja se ne može vratiti.',
 'youremail' => 'E-adresa:',
 'username' => '{{GENDER:$1|Korisničko ime}}:',
 'uid' => '{{GENDER:$1|Korisnički}} ID:',
-'prefs-memberingroups' => '{{GENDER:$2|Korisnik|Korisnica}} je član {{PLURAL:$1|grupe|grupa}}:',
+'prefs-memberingroups' => '{{GENDER:$2|Korisnik|Korisnica}} je član {{PLURAL:$1|1=grupe|grupa}}:',
 'prefs-memberingroups-type' => '$1',
 'prefs-registration' => 'Vreme upisa:',
 'prefs-registration-date-time' => '$1',
@@ -1530,7 +1530,7 @@ Ako izaberete da ga unesete, ono će biti korišćeno za pripisivanje vašeg rad
 'group-sysop' => 'Administratori',
 'group-bureaucrat' => 'Birokrate',
 'group-suppress' => 'Revizori',
-'group-all' => '(sve)',
+'group-all' => '(svi)',
 
 'group-user-member' => '{{GENDER:$1|korisnik|korisnica|korisnik}}',
 'group-autoconfirmed-member' => '{{GENDER:$1|automatski potvrđen korisnik|automatski potvrđena korisnica|automatski potvrđen korisnik}}',
@@ -1571,7 +1571,7 @@ Ako izaberete da ga unesete, ono će biti korišćeno za pripisivanje vašeg rad
 'right-writeapi' => 'pisanje API-ja',
 'right-delete' => 'brisanje stranica',
 'right-bigdelete' => 'brisanje stranica s velikom istorijom',
-'right-deletelogentry' => 'Brisanje i vraćanje određenih stavki u dnevniku',
+'right-deletelogentry' => 'brisanje i vraćanje određenih stavki u dnevniku',
 'right-deleterevision' => 'brisanje i vraćanje određenih izmena stranica',
 'right-deletedhistory' => 'pregledanje obrisanih stavki istorije bez povezanog teksta',
 'right-deletedtext' => 'pregledanje obrisanog teksta i izmena između obrisanih izmena',
@@ -1584,9 +1584,9 @@ Ako izaberete da ga unesete, ono će biti korišćeno za pripisivanje vašeg rad
 'right-hideuser' => 'blokiranje korisničkog imena i njegovo sakrivanje od javnosti',
 'right-ipblock-exempt' => 'zaobilaženje blokiranja IP adrese, samoblokiranja i blokiranja opsega',
 'right-proxyunbannable' => 'zaobilaženje samoblokiranja posrednika',
-'right-unblockself' => 'Odblokiraj samog sebe',
-'right-protect' => 'Promeni nivoe zaštite i uredi kaskadno zaštićene stranice',
-'right-editprotected' => 'Uredi stranice pod zaštitom „{{int:protect-level-sysop}}“',
+'right-unblockself' => 'odblokiraj samog sebe',
+'right-protect' => 'promeni nivoe zaštite i uredi stranice sa prenosivom zaštitom',
+'right-editprotected' => 'uredi stranice pod zaštitom „{{int:protect-level-sysop}}“',
 'right-editinterface' => 'uređivanje korisničkog sučelja',
 'right-editusercssjs' => 'uređivanje tuđih CSS i javaskript datoteka',
 'right-editusercss' => 'uređivanje tuđih CSS datoteka',
@@ -1746,9 +1746,9 @@ Promenite naziv datoteke i ponovo je pošaljite.',
 'filetype-badmime' => 'Datoteke MIME vrste „$1“ nije dozvoljeno slati.',
 'filetype-bad-ie-mime' => 'Ova datoteka se ne može poslati zato što bi je Internet eksplorer uočio kao „$1“, a to je zabranjena i opasna vrsta datoteke.',
 'filetype-unwanted-type' => '„.$1“ je nepoželjna vrsta datoteke.
-{{PLURAL:$3|Poželjna vrsta datoteke je|Poželjne vrste datoteka su}} $2.',
-'filetype-banned-type' => '\'\'\'".$1"\'\'\' {{PLURAL:$4|je zabranjena vrsta datoteke|su zabranjene vrste datoteka}}.
-{{PLURAL:$3|Dozvoljena vrsta datoteke je|Dozvoljene vrste datoteka su}} $2.',
+{{PLURAL:$3|1=Poželjna vrsta datoteke je|Poželjne vrste datoteka su}} $2.',
+'filetype-banned-type' => '\'\'\'".$1"\'\'\' {{PLURAL:$4|1=je zabranjena vrsta datoteke|su zabranjene vrste datoteka}}.
+{{PLURAL:$3|1=Dozvoljena vrsta datoteke je|Dozvoljene vrste datoteka su}} $2.',
 'filetype-missing' => 'Ova datoteka nema ekstenziju.',
 'empty-file' => 'Poslata datoteka je prazna.',
 'file-too-large' => 'Poslata datoteka je prevelika.',
@@ -1790,7 +1790,7 @@ Ako i dalje želite da pošaljete datoteku, vratite se i izaberite drugi naziv.
 'fileexists-shared-forbidden' => 'Datoteka s ovim nazivom već postoji u zajedničkom skladištu.
 Vratite se i pošaljite datoteku s drugim nazivom.
 [[File:$1|thumb|center|$1]]',
-'file-exists-duplicate' => 'Ovo je duplikat {{PLURAL:$1|sledeće datoteke|sledećih datoteka}}:',
+'file-exists-duplicate' => 'Ovo je duplikat {{PLURAL:$1|1=sledeće datoteke|sledećih datoteka}}:',
 'file-deleted-duplicate' => 'Datoteka istovetna ovoj ([[:$1]]) je prethodno obrisana.
 Pogledajte istoriju brisanja pre ponovnog slanja.',
 'uploadwarning' => 'Upozorenje pri otpremanju',
@@ -2075,7 +2075,7 @@ Pre brisanja proverite da li druge stranice vode do tih šablona.',
 
 # Random page
 'randompage' => 'Slučajna stranica',
-'randompage-nopages' => 'Nema stranica u {{PLURAL:$2|sledećem imenskom prostoru|sledećim imenskim prostorima}}: $1.',
+'randompage-nopages' => 'Nema stranica u {{PLURAL:$2|1=sledećem imenskom prostoru|sledećim imenskim prostorima}}: $1.',
 
 # Random redirect
 'randomredirect' => 'Slučajno preusmerenje',
@@ -2190,7 +2190,7 @@ Druge veb stranice mogu koristiti sliku preko direktne adrese, tako da i pored t
 'nopagetitle' => 'Ne postoji takva stranica',
 'nopagetext' => 'Tražena stranica ne postoji.',
 'pager-newer-n' => '{{PLURAL:$1|noviji 1|novija $1|novijih $1}}',
-'pager-older-n' => '{{PLURAL:$1|stariji 1|starija $1|starijih $1}}',
+'pager-older-n' => '{{PLURAL:$1|1=stariji 1|starijih $1}}',
 'suppress' => 'Nadzor',
 'querypage-disabled' => 'Ova posebna stranica je onemogućena radi poboljšanja performansi.',
 
@@ -2236,7 +2236,7 @@ Možda sadrži znakove koji se ne mogu koristiti u naslovima.',
 
 # Special:Categories
 'categories' => 'Kategorije',
-'categoriespagetext' => '{{PLURAL:$1|Sledeća kategorija sadrži|Sledeće kategorije sadrže}} stranice ili datoteke.
+'categoriespagetext' => '{{PLURAL:$1|1=Sledeća kategorija sadrži|Sledeće kategorije sadrže}} stranice ili datoteke.
 [[Special:UnusedCategories|Nekorišćene kategorije]] nisu prikazane ovde.
 Pogledajte i [[Special:WantedCategories|tražene kategorije]].',
 'categoriesfrom' => 'Prikaži kategorije počev od:',
@@ -2255,7 +2255,7 @@ Pogledajte i [[Special:WantedCategories|tražene kategorije]].',
 'linksearch-ok' => 'Pretraži',
 'linksearch-text' => 'Mogu se koristiti džokeri poput „*.wikipedia.org“.
 Potreban je najviši domen, kao „*.org“.<br />
-{{PLURAL:$2|Podržan protokol|Podržani protokoli}}: <code>$1</code> (zadaje http:// ako ne navedete protokol).',
+{{PLURAL:$2|1=Podržan protokol|Podržani protokoli}}: <code>$1</code> (zadaje http:// ako ne navedete protokol).',
 'linksearch-line' => '$1 veza u $2',
 'linksearch-error' => 'Džokeri se mogu pojaviti samo na početku adrese.',
 
@@ -2287,12 +2287,12 @@ Pogledajte [[{{MediaWiki:Listgrouprights-helppage}}|više detalja]] o pojedinač
 'listgrouprights-members' => '(spisak članova)',
 'listgrouprights-right-display' => '<span class="listgrouprights-granted">$1 <code>($2)</code></span>',
 'listgrouprights-right-revoked' => '<span class="listgrouprights-revoked">$1 <code>($2)</code></span>',
-'listgrouprights-addgroup' => 'dodaje {{PLURAL:$2|sledeću grupu|sledeće grupe}}: $1',
-'listgrouprights-removegroup' => 'briše {{PLURAL:$2|sledeću grupu|sledeće grupe}}: $1',
+'listgrouprights-addgroup' => 'dodaje {{PLURAL:$2|1=sledeću grupu|sledeće grupe}}: $1',
+'listgrouprights-removegroup' => 'briše {{PLURAL:$2|1=sledeću grupu|sledeće grupe}}: $1',
 'listgrouprights-addgroup-all' => 'dodavanje svih grupa',
 'listgrouprights-removegroup-all' => 'brisanje svih grupa',
-'listgrouprights-addgroup-self' => 'dodavanje {{PLURAL:$2|grupe|grupa}} na svoj nalog: $1',
-'listgrouprights-removegroup-self' => 'uklanjanje {{PLURAL:$2|grupe|grupa}} sa svog naloga: $1',
+'listgrouprights-addgroup-self' => 'dodavanje {{PLURAL:$2|1=grupe|grupa}} na svoj nalog: $1',
+'listgrouprights-removegroup-self' => 'uklanjanje {{PLURAL:$2|1=grupe|grupa}} sa svog naloga: $1',
 'listgrouprights-addgroup-self-all' => 'Dodaj sve grupe na sopstveni nalog',
 'listgrouprights-removegroup-self-all' => 'Ukloni sve grupe sa sopstvenog naloga',
 
@@ -2493,7 +2493,7 @@ Ovo su trenutne postavke stranice '''$1''':",
 Ovo su postavke stranice '''$1''':",
 'protect-locked-access' => "Nemate ovlašćenja za menjanje stepena zaštite stranice.
 Ovo su trenutne postavke stranice '''$1''':",
-'protect-cascadeon' => 'Ova stranica je trenutno zaštićena jer se nalazi na {{PLURAL:$1|stranici koja ima|stranicama koje imaju}} prenosivu zaštitu.
+'protect-cascadeon' => 'Ova stranica je trenutno zaštićena jer se nalazi na {{PLURAL:$1|1=stranici koja ima|stranicama koje imaju}} prenosivu zaštitu.
 Možete da promenite stepen zaštite, ali to neće uticati na prenosivu zaštitu.',
 'protect-default' => 'Dozvoli svim korisnicima',
 'protect-fallback' => 'Dozvoljeno samo korisnicima sa dozvolom „$1“',
@@ -2594,11 +2594,11 @@ $1',
 'tooltip-invert' => 'Označite ovu kućicu da biste sakrili izmene na stranicama u odabranom imenskom prostoru (i povezanim imenskim prostorima, ako je označeno)',
 'namespace_association' => 'Povezani imenski prostor',
 'tooltip-namespace_association' => 'Označite ovu kućicu da biste uključili i razgovor ili imenski prostor teme koja je povezana s odabranim imenskim prostorom',
-'blanknamespace' => '(Glavno)',
+'blanknamespace' => '(glavni)',
 
 # Contributions
 'contributions' => '{{GENDER:$1|Korisnički}} doprinosi',
-'contributions-title' => 'Doprinosi {{GENDER:$1|korisnika|korisnice|korisnika}} $1',
+'contributions-title' => 'Doprinosi {{GENDER:$1|korisnika|korisnice}} $1',
 'mycontris' => 'Doprinosi',
 'contribsub2' => 'Za {{GENDER:$3|$1}} ($2)',
 'nocontribs' => 'Izmene koje odgovaraju ovim uslovima nisu pronađene.',
@@ -2633,8 +2633,8 @@ Izveštaj o blokiranim korisnicima se nalazi ispod:',
 'isredirect' => 'preusmerenje',
 'istemplate' => 'uključivanje',
 'isimage' => 'veza ka datoteci',
-'whatlinkshere-prev' => '{{PLURAL:$1|prethodni|prethodnih $1}}',
-'whatlinkshere-next' => '{{PLURAL:$1|sledeći|sledećih $1}}',
+'whatlinkshere-prev' => '{{PLURAL:$1|1=prethodni|prethodnih $1}}',
+'whatlinkshere-next' => '{{PLURAL:$1|1=sledeći|sledećih $1}}',
 'whatlinkshere-links' => '← veze',
 'whatlinkshere-hideredirs' => '$1 preusmerenja',
 'whatlinkshere-hidetrans' => '$1 uključivanja',
@@ -2706,7 +2706,7 @@ Blokiranja možete da pogledate [[Special:BlockList|ovde]].',
 'blocklist-reason' => 'Razlog',
 'ipblocklist-submit' => 'Pretraži',
 'ipblocklist-localblock' => 'Lokalno blokiranje',
-'ipblocklist-otherblocks' => '{{PLURAL:$1|Drugo blokiranje|Druga blokiranja}}',
+'ipblocklist-otherblocks' => '{{PLURAL:$1|1=Drugo blokiranje|Druga blokiranja}}',
 'infiniteblock' => 'nikada',
 'expiringblock' => 'ističe dana $1 u $2',
 'anononlyblock' => 'samo anonimni',
@@ -2747,7 +2747,7 @@ Tekuće zabrane i blokiranja možete naći [[Special:BlockList|ovde]].',
 'ipb_hide_invalid' => 'Ne mogu da potisnem ovaj nalog. Možda ima previše izmena.',
 'ipb_already_blocked' => '„$1“ je već blokiran',
 'ipb-needreblock' => '$1 je već blokiran. Želite li da promenite podešavanja?',
-'ipb-otherblocks-header' => '{{PLURAL:$1|Druga blokada|Druge blokade}}',
+'ipb-otherblocks-header' => '{{PLURAL:$1|1=Druga blokada|Druge blokade}}',
 'unblock-hideuser' => 'Ne možete deblokirati ovog korisnika jer je njegovo korisničko ime sakriveno.',
 'ipb_cant_unblock' => 'Greška: blokada $1 ne postoji. Možda je korisnik deblokiran.',
 'ipb_blocked_as_range' => 'Greška: IP adresa $1 nije direktno blokirana i ne može da se deblokira.
@@ -2845,7 +2845,7 @@ Izaberite drugo ime.',
 'movepage-max-pages' => 'Najviše $1 {{PLURAL:$1|stranica je premeštena|stranice su premeštene|stranica je premešteno}}, i više ne može da bude automatski premešteno.',
 'movelogpage' => 'Dnevnik premeštanja',
 'movelogpagetext' => 'Ispod se nalazi spisak premeštanja stranica.',
-'movesubpage' => '{{PLURAL:$1|Podstranica|Podstranice|Podstranica}}',
+'movesubpage' => '{{PLURAL:$1|1=Podstranica|Podstranice}}',
 'movesubpagetext' => 'Ova stranica ima $1 {{PLURAL:$1|podstranicu prikazanu|podstranice prikazane|podstranica prikazanih}} ispod.',
 'movenosubpage' => 'Ova stranica nema podstrana.',
 'movereason' => 'Razlog:',
@@ -2981,7 +2981,7 @@ Pokušajte ponovo.',
 'import-error-interwiki' => 'Ne mogu da uvezem stranicu „$1“ jer je njen naziv rezervisan za spoljno povezivanje (međuviki).',
 'import-error-special' => 'Ne mogu da uvezem stranicu „$1“ jer ona pripada posebnom imenskom prostoru koje ne prihvata stranice.',
 'import-error-invalid' => 'Ne mogu da uvezem stranicu „$1“ jer je njen naziv neispravan.',
-'import-options-wrong' => '{{PLURAL:$2|Pogrešna opcija|Pogrešne opcije}}: <nowiki>$1</nowiki>',
+'import-options-wrong' => '{{PLURAL:$2|1=Pogrešna opcija|Pogrešne opcije}}: <nowiki>$1</nowiki>',
 'import-rootpage-invalid' => 'Navedena osnovna stranica ima neispravan naslov.',
 'import-rootpage-nosubpage' => 'Imenski prostor „$1“ osnovne stranice ne dozvoljava podstranice.',
 
@@ -3100,14 +3100,14 @@ Pokušajte ponovo.',
 'notacceptable' => 'Server ne može da napravi podatke u formatu pogodnom za vaš klijent.',
 
 # Attribution
-'anonymous' => 'Anonimni {{PLURAL:$1|korisnik|korisnici}} na projektu {{SITENAME}}',
+'anonymous' => 'Anonimni {{PLURAL:$1|1=korisnik|korisnici}} na projektu {{SITENAME}}',
 'siteuser' => '{{SITENAME}} korisnik $1',
 'anonuser' => '{{SITENAME}} anoniman korisnik $1',
 'lastmodifiedatby' => 'Ovu stranicu je poslednji put {{GENDER:$4|izmenio|izmenila|izmenio}} $3, $1 u $2.',
 'othercontribs' => 'Zasnovano na radu korisnikâ $1.',
 'others' => 'drugi',
-'siteusers' => '{{PLURAL:$2|korisnik|korisnici}} na projektu {{SITENAME}} $1',
-'anonusers' => '{{PLURAL:$2|anoniman korisnik|anonimni korisnici}} na projektu {{SITENAME}} $1',
+'siteusers' => '{{PLURAL:$2|1=korisnik|korisnici}} na projektu {{SITENAME}} $1',
+'anonusers' => '{{PLURAL:$2|1=anoniman korisnik|anonimni korisnici}} na projektu {{SITENAME}} $1',
 'creditspage' => 'Autori stranice',
 'nocredits' => 'Ne postoje podaci o autoru ove stranice.',
 
@@ -3139,7 +3139,7 @@ Ovo je verovatno izazvano vezom do spoljašnjeg sajta koji se nalazi na crnoj li
 'pageinfo-robot-noindex' => 'Nije dozvoljeno',
 'pageinfo-views' => 'Broj pregleda',
 'pageinfo-watchers' => 'Broj nadgledača stranica',
-'pageinfo-few-watchers' => 'Manje od $1 {{PLURAL:$1|pratioca|pratilaca}}',
+'pageinfo-few-watchers' => 'Manje od $1 {{PLURAL:$1|1=pratioca|pratilaca}}',
 'pageinfo-redirects-name' => 'Broj preusmerenja na ovu stranicu',
 'pageinfo-subpages-name' => 'Podstranice ove stranice',
 'pageinfo-subpages-value' => '$1 ($2 {{PLURAL:$2|preusmerenje|preusmerenja|preusmerenja}}; $3 {{PLURAL:$3|nepreusmerenje|nepreusmerenja|nepreusmerenja}})',
@@ -3151,10 +3151,10 @@ Ovo je verovatno izazvano vezom do spoljašnjeg sajta koji se nalazi na crnoj li
 'pageinfo-authors' => 'Broj zasebnih autora',
 'pageinfo-recent-edits' => 'Broj skorašnjih izmena (u poslednjih $1)',
 'pageinfo-recent-authors' => 'Broj skorašnjih zasebnih autora',
-'pageinfo-magic-words' => '{{PLURAL:$1|Magična reč|Magične reči}} ($1)',
-'pageinfo-hidden-categories' => '{{PLURAL:$1|Sakrivena kategorija|Sakrivene kategorije}} ($1)',
-'pageinfo-templates' => '{{PLURAL:$1|Uključeni šablon|Uključeni šabloni}} ($1)',
-'pageinfo-transclusions' => '{{PLURAL:$1|Stranica|Stranice}} uključene u ($1)',
+'pageinfo-magic-words' => '{{PLURAL:$1|1=Magična reč|Magične reči}} ($1)',
+'pageinfo-hidden-categories' => '{{PLURAL:$1|1=Sakrivena kategorija|Sakrivene kategorije}} ($1)',
+'pageinfo-templates' => '{{PLURAL:$1|1=Uključeni šablon|Uključeni šabloni}} ($1)',
+'pageinfo-transclusions' => '{{PLURAL:$1|1=Stranica|Stranice}} uključene u ($1)',
 'pageinfo-toolboxlink' => 'Podaci o stranici',
 'pageinfo-redirectsto' => 'Preusmerava na',
 'pageinfo-redirectsto-info' => 'podaci',
@@ -3223,7 +3223,7 @@ Ako ga pokrenete, vaš računar može biti ugrožen.",
 'svg-long-error' => 'Neispravna SVG datoteka: $1',
 'show-big-image' => 'Puna veličina',
 'show-big-image-preview' => 'Veličina ovog prikaza: $1.',
-'show-big-image-other' => '{{PLURAL:$2|Druga rezolucija|Druge rezolucije}}: $1.',
+'show-big-image-other' => '{{PLURAL:$2|1=Druga rezolucija|Druge rezolucije}}: $1.',
 'show-big-image-size' => '$1 × $2 piksela',
 'file-info-gif-looped' => 'petlja',
 'file-info-gif-frames' => '$1 {{PLURAL:$1|kadar|kadra|kadrova}}',
@@ -3504,7 +3504,7 @@ Ako je prvobitno stanje datoteke promenjeno, moguće je da neki detalji ne opisu
 'exif-copyrightowner' => 'Nosilac autorskog prava',
 'exif-usageterms' => 'Pravila korišćenja',
 'exif-webstatement' => 'Izjava o autorskom pravu',
-'exif-originaldocumentid' => 'Jedinstveni IB izvornog dokumenta',
+'exif-originaldocumentid' => 'Jedinstveni ID izvornog dokumenta',
 'exif-licenseurl' => 'Adresa licence za autorska prava',
 'exif-morepermissionsurl' => 'Rezervni podaci o licenciranju',
 'exif-attributionurl' => 'Pri ponovnom korišćenju ovog rada, koristite vezu do',
@@ -3773,7 +3773,7 @@ $8',
 
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'sve',
-'namespacesall' => 'sve',
+'namespacesall' => 'svi',
 'monthsall' => 'sve',
 
 # Email address confirmation
@@ -4056,7 +4056,7 @@ Trebalo bi da ste primili [{{SERVER}}{{SCRIPTPATH}}/COPYING primerak GNU-ove op
 'fileduplicatesearch-legend' => 'Pretraga duplikata',
 'fileduplicatesearch-filename' => 'Naziv datoteke:',
 'fileduplicatesearch-submit' => 'Pretraži',
-'fileduplicatesearch-info' => '$1 × $2 piksela<br />Veličina: $3<br />MIME vrsta: $4',
+'fileduplicatesearch-info' => '$1 × $2 piksela<br />Veličina datoteke: $3<br />MIME tip: $4',
 'fileduplicatesearch-result-1' => 'Datoteka „$1“ nema istovetnih duplikata.',
 'fileduplicatesearch-result-n' => 'Datoteka „$1“ ima {{PLURAL:$2|identičan duplikat|$2 identična duplikata|$2 identičnih duplikata}}.',
 'fileduplicatesearch-noresults' => 'Datoteka pod nazivom „$1“ nije pronađena.',
@@ -4096,7 +4096,7 @@ Trebalo bi da ste primili [{{SERVER}}{{SCRIPTPATH}}/COPYING primerak GNU-ove op
 'tags' => 'Važeće oznake izmena',
 'tag-filter' => 'Filter za [[Special:Tags|oznake]]:',
 'tag-filter-submit' => 'Filtriraj',
-'tag-list-wrapper' => '([[Special:Tags|{{PLURAL:$1|Oznaka|Oznake}}]]: $2)',
+'tag-list-wrapper' => '([[Special:Tags|{{PLURAL:$1|1=Oznaka|Oznake}}]]: $2)',
 'tags-title' => 'Oznake',
 'tags-intro' => 'Na ovoj stranici je naveden spisak oznaka s kojima program može da označi izmene i njegovo značenje.',
 'tags-tag' => 'Naziv oznake',
@@ -4151,13 +4151,13 @@ Trebalo bi da ste primili [{{SERVER}}{{SCRIPTPATH}}/COPYING primerak GNU-ove op
 # New logging system
 'logentry-delete-delete' => '$1 je {{GENDER:$2|obrisao|obrisala}} stranicu $3',
 'logentry-delete-restore' => '$1 je {{GENDER:$2|vratio|vratila}} stranicu $3',
-'logentry-delete-event' => '$1 je {{GENDER:$2|promenio|promenila}} vidljivost {{PLURAL:$5|događaja|$5 daogađaja}} u dnevniku na $3: $4',
-'logentry-delete-revision' => '$1 je {{GENDER:$2|promenio|promenila}} vidljivost {{PLURAL:$5|izmene|$5 izmena}} na stranici $3: $4',
+'logentry-delete-event' => '$1 je {{GENDER:$2|promenio|promenila}} vidljivost {{PLURAL:$5|1=događaja|$5 daogađaja}} u dnevniku na $3: $4',
+'logentry-delete-revision' => '$1 je {{GENDER:$2|promenio|promenila}} vidljivost {{PLURAL:$5|1=izmene|$5 izmena}} na stranici $3: $4',
 'logentry-delete-event-legacy' => '$1 je {{GENDER:$2|promenio|promenila}} vidljivost događaja u dnevniku na $3',
 'logentry-delete-revision-legacy' => '$1 je {{GENDER:$2|promenio|promenila}} vidljivost izmena na stranici $3',
 'logentry-suppress-delete' => '$1 je {{GENDER:$2|potisnuo|potisnula}} stranicu $3',
-'logentry-suppress-event' => '$1 je tajno {{GENDER:$2|promenio|promenila}} vidljivost {{PLURAL:$5|događaja|$5 događaja}} u dnevniku na $3: $4',
-'logentry-suppress-revision' => '$1 je tajno {{GENDER:$2|promenio|promenila}} vidljivost {{PLURAL:$5|izmene|$5 izmena}} na stranici $3: $4',
+'logentry-suppress-event' => '$1 je tajno {{GENDER:$2|promenio|promenila}} vidljivost {{PLURAL:$5|1=događaja|$5 događaja}} u dnevniku na $3: $4',
+'logentry-suppress-revision' => '$1 je tajno {{GENDER:$2|promenio|promenila}} vidljivost {{PLURAL:$5|1=izmene|$5 izmena}} na stranici $3: $4',
 'logentry-suppress-event-legacy' => '$1 је tajno {{GENDER:$2|promenio|promenila}} vidljivost događaj u dnevniku na $3',
 'logentry-suppress-revision-legacy' => '$1 je tajno {{GENDER:$2|promenio|promenila}} vidljivost izmena na stranici $3',
 'revdelete-content-hid' => 'sadržaj je sakriven',
@@ -4208,10 +4208,10 @@ U suprotnom, poslužite se jednostavnim obrascem ispod. Vaš komentar će stajat
 'api-error-badaccess-groups' => 'Nije vam dozvoljeno da otpremate datoteke na ovaj viki.',
 'api-error-badtoken' => 'Unutrašnja greška: neispravan žeton.',
 'api-error-copyuploaddisabled' => 'Otpremanje putem adrese je onemogućeno na ovom serveru.',
-'api-error-duplicate' => 'Već {{PLURAL:$1|postoji [$2 druga datoteka]|postoje [$2 druge datoteke]}} s istim sadržajem.',
-'api-error-duplicate-archive' => '{{PLURAL:$1|Postojala je [$2 druga datoteka]|Postojale su [$2 druge datoteke]}} s istim sadržajem, ali {{PLURAL:$1|je obrisana|su obrisane}}.',
-'api-error-duplicate-archive-popup-title' => '{{PLURAL:$1|Duplirana datoteka koja je već obrisana|Duplirane datoteke koje su već obrisane}}',
-'api-error-duplicate-popup-title' => '{{PLURAL:$1|Duplirana datoteka|Duplirane datoteke}}',
+'api-error-duplicate' => 'Već {{PLURAL:$1|1=postoji [$2 druga datoteka]|postoje [$2 druge datoteke]}} s istim sadržajem.',
+'api-error-duplicate-archive' => '{{PLURAL:$1|1=Postojala je [$2 druga datoteka]|Postojale su [$2 druge datoteke]}} s istim sadržajem, ali {{PLURAL:$1|1=je obrisana|su obrisane}}.',
+'api-error-duplicate-archive-popup-title' => '{{PLURAL:$1|1=Duplirana datoteka koja je već obrisana|Duplirane datoteke koje su već obrisane}}',
+'api-error-duplicate-popup-title' => '{{PLURAL:$1|1=Duplirana datoteka|Duplirane datoteke}}',
 'api-error-empty-file' => 'Poslata datoteka je prazna.',
 'api-error-emptypage' => 'Stvaranje novih praznih stranica nije dozvoljeno.',
 'api-error-fetchfileerror' => 'Unutrašnja greška: došlo je do greške pri dobavljanju datoteke.',
@@ -4220,7 +4220,7 @@ U suprotnom, poslužite se jednostavnim obrascem ispod. Vaš komentar će stajat
 'api-error-file-too-large' => 'Poslata datoteka je prevelika.',
 'api-error-filename-tooshort' => 'Naziv datoteke je prekratak.',
 'api-error-filetype-banned' => 'Ova vrsta datoteke je zabranjena.',
-'api-error-filetype-banned-type' => '$1 {{PLURAL:$4|je zabranjena vrsta datoteke|su zabranjene vrste datoteka}}. {{PLURAL:$3|Dozvoljena je|Dozvoljene su}} $2.',
+'api-error-filetype-banned-type' => '$1 {{PLURAL:$4|1=je zabranjena vrsta datoteke|su zabranjene vrste datoteka}}. {{PLURAL:$3|1=Dozvoljena je|Dozvoljene su}} $2.',
 'api-error-filetype-missing' => 'Datoteci nedostaje nastavak.',
 'api-error-hookaborted' => 'Izmena je odbačena od kuke za proširenja.',
 'api-error-http' => 'Unutrašnja greška: ne mogu da se povežem sa serverom.',
index b5a1fe4..def9c62 100644 (file)
@@ -326,7 +326,7 @@ $dateFormats = array(
 
 $messages = array(
 # User preference toggles
-'tog-underline' => 'Stryk under länkar',
+'tog-underline' => 'Stryk under länkar:',
 'tog-justify' => 'Marginaljustera stycken',
 'tog-hideminor' => 'Visa inte mindre redigeringar i senaste ändringar',
 'tog-hidepatrolled' => 'Dölj patrullerade redigeringar i senaste ändringar',
@@ -346,9 +346,9 @@ $messages = array(
 'tog-watchdeletion' => 'Lägg till sidor och filer jag raderar i min bevakningslista',
 'tog-minordefault' => 'Markera automatiskt ändringar som mindre',
 'tog-previewontop' => 'Visa förhandsgranskningen ovanför redigeringsrutan',
-'tog-previewonfirst' => 'Visa förhandsgranskning när redigering påbörjas',
-'tog-enotifwatchlistpages' => 'Skicka e-post till mig när en sida på min bevakningslista ändras',
-'tog-enotifusertalkpages' => 'Skicka e-post till mig när något händer på min diskussionssida',
+'tog-previewonfirst' => 'Visa förhandsgranskning vid första redigeringen',
+'tog-enotifwatchlistpages' => 'Skicka e-post till mig när en sida eller fil på min bevakningslista ändras',
+'tog-enotifusertalkpages' => 'Skicka e-post till mig när något ändras på min diskussionssida',
 'tog-enotifminoredits' => 'Skicka mig e-post även för mindre ändringar av sidor och filer',
 'tog-enotifrevealaddr' => 'Visa min e-postadress i e-postmeddelanden om ändringar som skickas till andra',
 'tog-shownumberswatching' => 'Visa antalet användare som bevakar',
@@ -571,7 +571,7 @@ $1',
 # All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage).
 'aboutsite' => 'Om {{SITENAME}}',
 'aboutpage' => 'Project:Om',
-'copyright' => 'Innehållet är tillgängligt under $1.',
+'copyright' => 'Innehållet är tillgängligt under $1 om inte annat anges.',
 'copyrightpage' => '{{ns:project}}:Upphovsrätt',
 'currentevents' => 'Aktuella händelser',
 'currentevents-url' => 'Project:Aktuella händelser',
@@ -582,22 +582,22 @@ $1',
 'mainpage' => 'Huvudsida',
 'mainpage-description' => 'Huvudsida',
 'policy-url' => 'Project:Riktlinjer',
-'portal' => 'Deltagarportalen',
-'portal-url' => 'Project:Deltagarportalen',
+'portal' => 'Gemenskapens portal',
+'portal-url' => 'Project:Gemenskapens portal',
 'privacy' => 'Integritetspolicy',
 'privacypage' => 'Project:Integritetspolicy',
 
 'badaccess' => 'Behörighetsfel',
 'badaccess-group0' => 'Du har inte behörighet att utföra den handling du begärt.',
-'badaccess-groups' => 'Den handling du har begärt kan enbart utföras av användare i {{PLURAL:$2|gruppen|grupperna}} $1.',
+'badaccess-groups' => 'Den handling du har begärt kan enbart utföras av användare i {{PLURAL:$2|gruppen|en av grupperna}}: $1.',
 
 'versionrequired' => 'Version $1 av MediaWiki krävs',
 'versionrequiredtext' => 'Version $1 av MediaWiki är nödvändig för att använda denna sida. Se [[Special:Version|versionssidan]].',
 
 'ok' => 'OK',
 'retrievedfrom' => 'Hämtad från "$1"',
-'youhavenewmessages' => 'Du har $1 ($2).',
-'youhavenewmessagesfromusers' => 'Du har $1 från {{PLURAL:$3|en annan användare|$3 användare}} ($2).',
+'youhavenewmessages' => '{{PLURAL:$3|Du har}} $1 ($2).',
+'youhavenewmessagesfromusers' => '{{PLURAL:$4|Du har}} $1 från {{PLURAL:$3|en annan användare|$3 användare}} ($2).',
 'youhavenewmessagesmanyusers' => 'Du har $1 från många användare ($2).',
 'newmessageslinkplural' => '{{PLURAL:$1|ett nytt meddelande|999=nya meddelanden}}',
 'newmessagesdifflinkplural' => 'senaste {{PLURAL:$1|ändring|999=ändringar}}',
@@ -611,7 +611,7 @@ $1',
 'toc' => 'Innehåll',
 'showtoc' => 'visa',
 'hidetoc' => 'göm',
-'collapsible-collapse' => 'Göm',
+'collapsible-collapse' => 'Kollapsa',
 'collapsible-expand' => 'Expandera',
 'thisisdeleted' => 'Visa eller återställ $1?',
 'viewdeleted' => 'Visa $1?',
@@ -641,9 +641,9 @@ $1',
 
 # Main script and global functions
 'nosuchaction' => 'Funktionen finns inte',
-'nosuchactiontext' => 'Den handling som specificerats av URL:en är ogiltig.
-Du kan ha stavat URL:en fel, eller följt en felaktig länk.
-Det kan också bero på en bug i {{SITENAME}}.',
+'nosuchactiontext' => 'Den handling som specificerats av webbadressen är ogiltig.
+Du kan ha stavat webbadressen fel, eller följt en felaktig länk.
+Det kan även bero på en bugg i mjukvaran som används på {{SITENAME}}.',
 'nosuchspecialpage' => 'Någon sådan specialsida finns inte',
 'nospecialpagetext' => '<strong>Du har begärt en specialsida som inte finns.</strong>
 
@@ -670,8 +670,8 @@ Detta orsakas oftast av att man följer en inaktuell länk till en jämförelse
 
 Om inte så är fallet, kan du ha hittat en bugg i mjukvaran.
 Rapportera gärna problemet till någon [[Special:ListUsers/sysop|administratör]], ange då URL:en (webbadressen).',
-'missingarticle-rev' => '(version $1)',
-'missingarticle-diff' => '(jämförelse mellan version $1 och $2)',
+'missingarticle-rev' => '(versionsnummer: $1)',
+'missingarticle-diff' => '(Skillnad: $1, $2)',
 'readonly_lag' => 'Databasen har automatiskt skrivskyddats medan slavdatabasservrarna synkroniseras med huvudservern.',
 'internalerror' => 'Internt fel',
 'internalerror_info' => 'Internt fel: $1',
@@ -713,18 +713,18 @@ För att lägga till eller ändra översättningar för alla wikis, var god anv
 'cascadeprotected' => 'Den här sidan har skyddats från redigering eftersom den inkluderas på följande {{PLURAL:$1|sida|sidor}} som skrivskyddats med "kaskaderande skydd":
 $2',
 'namespaceprotected' => "Du har inte behörighet att redigera sidor i namnrymden '''$1'''.",
-'customcssprotected' => 'Du har inte behörighet att redigera denna CSS-sidan eftersom den innehåller en annan användares personliga inställningar.',
-'customjsprotected' => 'Du har inte behörighet att redigera denna JavaScript-sidan eftersom den innehåller en annan användares personliga inställningar.',
+'customcssprotected' => 'Du har inte behörighet att redigera denna CSS-sida eftersom den innehåller en annan användares personliga inställningar.',
+'customjsprotected' => 'Du har inte behörighet att redigera denna JavaScript-sida eftersom den innehåller en annan användares personliga inställningar.',
 'mycustomcssprotected' => 'Du har inte rättigheten att redigera denna CSS-sida.',
 'mycustomjsprotected' => 'Du har inte rättigheten att redigera denna JavaScript-sida.',
 'myprivateinfoprotected' => 'Du har inte behörighet att redigera din privata information.',
 'mypreferencesprotected' => 'Du har inte behörighet att redigera dina inställningar.',
 'ns-specialprotected' => 'Specialsidor kan inte redigeras.',
 'titleprotected' => 'Denna sidtitel har skyddats från att skapas av [[User:$1|$1]].
-Den uppgivna anledningen är "\'\'$2\'\'".',
+Den angivna anledningen är "\'\'$2\'\'".',
 'filereadonlyerror' => 'Det går inte att ändra filen "$1", eftersom fildatabasen "$2" är i skrivskyddat läge.
 
-Den administratören som låste den gav denna anledning: "\'\'$3\'\'".',
+Den administratör som låste den angav följande anledning: "\'\'$3\'\'".',
 'invalidtitle-knownnamespace' => 'Ogiltig titel med namnrymden "$2" och texten "$3"',
 'invalidtitle-unknownnamespace' => 'Ogiltig titel med okänt namnrymdsnummer $1 och texten "$2"',
 'exception-nologin' => 'Inte inloggad',
@@ -754,7 +754,7 @@ Glöm inte att justera dina [[Special:Preferences|{{SITENAME}}-inställningar]].
 'yourpasswordagain' => 'Upprepa lösenord',
 'createacct-yourpasswordagain' => 'Bekräfta lösenordet',
 'createacct-yourpasswordagain-ph' => 'Ange lösenordet igen',
-'remembermypassword' => 'Spara min inloggning på den här datorn (i max $1 {{PLURAL:$1|dygn|dygn}})',
+'remembermypassword' => 'Spara min inloggning på den här datorn (i max $1 {{PLURAL:$1|dygn}})',
 'userlogin-remembermypassword' => 'Håll mig inloggad',
 'userlogin-signwithsecure' => 'Använd säker anslutning',
 'yourdomainname' => 'Din domän',
@@ -770,10 +770,10 @@ Glöm inte att justera dina [[Special:Preferences|{{SITENAME}}-inställningar]].
 'notloggedin' => 'Inte inloggad',
 'userlogin-noaccount' => 'Har du inget konto?',
 'userlogin-joinproject' => 'Gå med i {{SITENAME}}',
-'nologin' => 'Har du inget användarkonto? $1.',
-'nologinlink' => 'Skapa ett användarkonto',
+'nologin' => 'Har du inget konto? $1.',
+'nologinlink' => 'Skapa ett konto',
 'createaccount' => 'Skapa ett konto',
-'gotaccount' => "Har du redan ett användarkonto? '''$1'''.",
+'gotaccount' => "Har du redan ett konto? '''$1'''.",
 'gotaccountlink' => 'Logga in',
 'userlogin-resetlink' => 'Har du glömt dina inloggningsuppgifter?',
 'userlogin-resetpassword-link' => 'Glömt ditt lösenord?',
@@ -791,7 +791,7 @@ Använd formuläret nedan för att logga in som en annan användare.',
 'createaccountmail' => 'Använd ett tillfälligt slumpvis valt lösenord och skicka det till den angivna e-postadressen',
 'createacct-realname' => 'Riktigt namn (valfritt)',
 'createaccountreason' => 'Orsak:',
-'createacct-reason' => 'Anledning',
+'createacct-reason' => 'Orsak',
 'createacct-reason-ph' => 'Varför du skapar ett annat konto',
 'createacct-captcha' => 'Säkerhetskontroll',
 'createacct-imgcaptcha-ph' => 'Fyll i texten du ser ovan',
@@ -854,8 +854,8 @@ Som ett resultat kan besökare som använder den här IP-adressen inte skapa nå
 Skriv in en adress med korrekt format eller töm fältet.',
 'cannotchangeemail' => 'E-post-adresser som är bundna till användarkonton kan inte ändras på denna wiki.',
 'emaildisabled' => 'Denna webbplats kan inte skicka e-post.',
-'accountcreated' => 'Användarkontot har skapats',
-'accountcreatedtext' => 'Användarkontot [[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|talk]]) har skapats.',
+'accountcreated' => 'Kontot har skapats',
+'accountcreatedtext' => 'Användarkontot [[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|diskussion]]) har skapats.',
 'createaccount-title' => 'Konto skapat på {{SITENAME}}',
 'createaccount-text' => 'Någon har skapat ett konto åt din e-postadress på {{SITENAME}} ($4) med namnet "$2" och lösenordet "$3". Du bör nu logga in och ändra ditt lösenord.
 
@@ -870,7 +870,7 @@ Vänta $1 innan du försöker igen.',
 Om du väljer att ange det, kommer det användas för att tillskriva användaren för sitt arbete.',
 
 # Email sending
-'php-mail-error-unknown' => "Okänt fel i PHP's mail()-funktion",
+'php-mail-error-unknown' => 'Okänt fel i PHP:s mail()-funktion',
 'user-mail-no-addy' => 'Försökte skicka e-post utan en e-postadress',
 'user-mail-no-body' => 'Försökte skicka e-post med tomt eller orimligt kort innehåll.',
 
@@ -882,7 +882,7 @@ Om du väljer att ange det, kommer det användas för att tillskriva användaren
 'oldpassword' => 'Gammalt lösenord:',
 'newpassword' => 'Nytt lösenord:',
 'retypenew' => 'Upprepa det nya lösenordet:',
-'resetpass_submit' => 'Spara lösenord och logga in',
+'resetpass_submit' => 'Ange lösenord och logga in',
 'changepassword-success' => 'Ditt lösenord har ändrats!',
 'resetpass_forbidden' => 'Lösenord kan inte ändras',
 'resetpass-no-info' => 'Du måste vara inloggad för att komma åt den här sidan direkt.',
@@ -894,7 +894,7 @@ Du kanske redan har lyckats ändra ditt lösenord eller begärt ett nytt tillfä
 'resetpass-abort-generic' => 'Lösenordsändring av har avbrutits av ett tillägg.',
 
 # Special:PasswordReset
-'passwordreset' => 'Lösenordsåterställning',
+'passwordreset' => 'Återställ lösenord',
 'passwordreset-text-one' => 'Fyll i detta formulär för att återställa ditt lösenord.',
 'passwordreset-text-many' => '{{PLURAL:$1|Fyll i ett av fälten för att få ett tillfälligt lösenord via e-post.}}',
 'passwordreset-legend' => 'Återställ lösenord',
@@ -950,13 +950,13 @@ Du bör återställa om du av misstag delade dem med någon eller om ditt konto
 'resettokens-resetbutton' => 'Återställ valda nycklar',
 
 # Edit page toolbar
-'bold_sample' => 'Fet text',
-'bold_tip' => 'Fet stil',
-'italic_sample' => 'Kursiv text',
+'bold_sample' => 'Fetstil',
+'bold_tip' => 'Fetstil',
+'italic_sample' => 'Kursiv stil',
 'italic_tip' => 'Kursiv stil',
 'link_sample' => 'Länktitel',
 'link_tip' => 'Intern länk',
-'extlink_sample' => 'http://www.example.com länkens namn',
+'extlink_sample' => 'http://www.exempel.com länktitel',
 'extlink_tip' => 'Extern länk (kom ihåg prefixet http://)',
 'headline_sample' => 'Rubriktext',
 'headline_tip' => 'Rubrik i nivå 2',
@@ -974,7 +974,7 @@ Du bör återställa om du av misstag delade dem med någon eller om ditt konto
 'subject' => 'Ämne/rubrik:',
 'minoredit' => 'Mindre ändring (m)',
 'watchthis' => 'Bevaka denna sida',
-'savearticle' => 'Spara',
+'savearticle' => 'Spara sida',
 'preview' => 'Förhandsgranska',
 'showpreview' => 'Visa förhandsgranskning',
 'showlivepreview' => 'Automatiskt uppdaterad förhandsvisning',
@@ -1054,10 +1054,11 @@ Orsaken till senaste blockeringen kan ses nedan:',
 *'''Internet Explorer:'''  Håll ned ''Ctrl'' och klicka på ''Uppdatera'' eller tryck ''Ctrl-F5''
 *'''Opera:''' Rensa cachen i ''Verktyg → Inställningar''",
 'usercssyoucanpreview' => "'''Tips:''' Använd knappen \"{{int:showpreview}}\" för att testa din nya CSS innan du sparar.",
-'userjsyoucanpreview' => "'''Tips:''' Använd knappen \"{{int:showpreview}}\" för att testa din nya JavaScript innan du sparar.",
-'usercsspreview' => "'''Kom ihåg att du bara förhandsgranskar din användar-CSS.
-Den har inte sparats än!'''",
-'userjspreview' => "'''Kom ihåg att du bara testar/förhandsgranskar ditt JavaScript, det har inte sparats än!'''",
+'userjsyoucanpreview' => "'''Tips:''' Använd knappen \"{{int:showpreview}}\" för att testa ditt nya JavaScript innan du sparar.",
+'usercsspreview' => "'''Kom ihåg att du bara förhandsgranskar din användar-CSS.'''
+'''Den har inte sparats än!'''",
+'userjspreview' => "'''Kom ihåg att du bara testar/förhandsgranskar ditt JavaScript.'''
+'''Det har inte sparats än!'''",
 'sitecsspreview' => "'''Kom ihåg att du bara förhandsgranskar detta CSS.''' 
 '''Det har ännu inte sparats!'''",
 'sitejspreview' => "'''Kom ihåg att du bara förhandsgranskar denna JavaScript-kod.'''
@@ -1122,7 +1123,7 @@ Den senaste loggposten tillhandahålls nedan som referens:",
 'templatesusedsection' => '{{PLURAL:$1|Mall|Mallar}} som används i det här avsnittet:',
 'template-protected' => '(skyddad)',
 'template-semiprotected' => '(delvis skyddad)',
-'hiddencategories' => 'Denna sida är medlem i följande dolda {{PLURAL:$1|kategori|kategorier}}:',
+'hiddencategories' => 'Denna sida är medlem i följande {{PLURAL:$1|dold kategori|dolda kategorier}}:',
 'edittools' => '<!-- Denna text kommer att visas nedanför redigeringsrutor och uppladdningsformulär. -->',
 'nocreatetext' => '{{SITENAME}} har begränsat möjligheterna att skapa nya sidor.
 Du kan redigera existerande sidor, eller [[Special:UserLogin|logga in eller skapa ett användarkonto]].',
@@ -1164,7 +1165,7 @@ Om du är inloggad kan du slå av den här varningen under "Redigering" i dina i
 # Parser/template warnings
 'expensive-parserfunction-warning' => 'Varning: Denna sida innehåller för många anrop av resurskrävande parserfunktioner.
 
-Antalet anrop får vara högst $2, nu görs {{PLURAL:$#|$1 anrop}}.',
+Antalet anrop får vara högst $2, nu görs {{PLURAL:$1|$1 anrop}}',
 'expensive-parserfunction-category' => 'Sidor med för många resurskrävande parserfunktioner',
 'post-expand-template-inclusion-warning' => 'Varning: Den här sidan innehåller för mycket mallinklusioner.
 Några av mallarna kommer inte att inkluderas.',
@@ -1196,6 +1197,9 @@ Var god och kontrollera jämförelsen nedan för att bekräfta att detta är vad
 'cantcreateaccount-text' => '[[User:$3|$3]] har blockerat den här IP-adressen (\'\'\'$1\'\'\') från att registrera konton.
 
 Anledningen till blockeringen var "$2".',
+'cantcreateaccount-range-text' => "IP-adresserna mellan '''$1''', som inkluderar din IP-adress ('''$4'''), har blockerats från att registrera konton av [[User:$3|$3]].
+
+Anledningen enligt $3 var ''$2''",
 
 # History pages
 'viewpagelogs' => 'Visa loggar för denna sida',
@@ -1285,17 +1289,17 @@ Andra administratörer på {{SITENAME}} kommer fortfarande att kunna läsa det d
 'revdelete-hide-comment' => 'Redigeringssammanfattning',
 'revdelete-hide-user' => 'Redigerarens användarnamn/IP-adress',
 'revdelete-hide-restricted' => 'Undanhåll data från administratörer så väl som från övriga',
-'revdelete-radio-same' => '(låt vara)',
+'revdelete-radio-same' => '(ändra inte)',
 'revdelete-radio-set' => 'Dold',
 'revdelete-radio-unset' => 'Synlig',
-'revdelete-suppress' => 'Undanhåll data även från administratörer',
+'revdelete-suppress' => 'Undanhåll data även från administratörer så väl som från övriga',
 'revdelete-unsuppress' => 'Ta bort begränsningar på återställda versioner',
 'revdelete-log' => 'Anledning:',
 'revdelete-submit' => 'Tillämpa på {{PLURAL:$1|vald version|valda versioner}}',
 'revdelete-success' => "'''Sidversionssynlighet har uppdaterats.'''",
 'revdelete-failure' => "'''Sidversionssynlighet kunde inte uppdateras:'''
 $1",
-'logdelete-success' => "'''Loggåtgärdens synlighet har ändrats.'''",
+'logdelete-success' => "'''Loggens synlighet har ställts in.'''",
 'logdelete-failure' => "'''Loggens synlighet kunde inte ställas in:'''
 $1",
 'revdel-restore' => 'ändra synlighet',
@@ -1311,15 +1315,15 @@ Du har inte behörighet till det.',
 'revdelete-no-change' => "'''Varning:''' objektet daterat $2, $1 hade redan de begärda synlighetsinställningarna.",
 'revdelete-concurrent-change' => 'Fel vid förändring av objektet daterat $2, $1: dess status verkar ha ändrats av någon annan medan du försökte förändra det.
 Vänligen kontrollera loggarna.',
-'revdelete-only-restricted' => 'Fel vid döljning av objekt daterat $2, $1: du kan inte undanhålla objekt från att visas för administratörer utan att också välja en av de övriga visningsalternativen.',
+'revdelete-only-restricted' => 'Fel vid döljandet av objektet daterat $2, $1: du kan inte undanhålla objekt från att visas för administratörer utan att också välja ett av de övriga visningsalternativen.',
 'revdelete-reason-dropdown' => '*Vanliga orsaker till radering
-** Brott mot copyright
+** Upphovsrättsbrott
 ** Opassande kommentar eller personupplysningar
 ** Opassande användarnamn
 ** Möjligt ärekränkande uppgifter',
 'revdelete-otherreason' => 'Annan/ytterligare anledning:',
 'revdelete-reasonotherlist' => 'Annan anledning',
-'revdelete-edit-reasonlist' => 'Redigera anledningar för radering',
+'revdelete-edit-reasonlist' => 'Redigera anledningar för raderingar',
 'revdelete-offender' => 'Versionens författare:',
 
 # Suppression log
@@ -1336,8 +1340,8 @@ Se till att sidhistorikens kontinuitet behålls när du sammanfogar historik.',
 'mergehistory-into' => 'Målsida:',
 'mergehistory-list' => 'Sidhistorik som kan sammanfogas',
 'mergehistory-merge' => 'Följande versioner av [[:$1]] kan infogas i [[:$2]]. Med hjälp av alternativknapparna för varje version kan du välja att endast infoga versioner fram till en viss tidpunkt. Notera att om du använder navigationslänkarna så avmarkeras alla alternativknappar.',
-'mergehistory-go' => 'Visa versioner som kan infogas',
-'mergehistory-submit' => 'Sammanfoga',
+'mergehistory-go' => 'Visa redigeringar som kan slås samman',
+'mergehistory-submit' => 'Sammanfoga sidversioner',
 'mergehistory-empty' => 'Inga versioner av sidorna kan sammanfogas.',
 'mergehistory-success' => '$3 {{PLURAL:$3|version|versioner}} av [[:$1]] har infogats i [[:$2]].',
 'mergehistory-fail' => 'Historikerna kunde inte sammanfogas, kontrollera de sidor och den sidversion som du valt.',
@@ -1379,15 +1383,15 @@ Detaljer kan hittas i [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}
 'searchresults-title' => 'Sökresultat för "$1"',
 'toomanymatches' => 'Sökningen gav för många resultat, försök med en annan fråga',
 'titlematches' => 'Träffar i sidtitlar',
-'textmatches' => 'Sidor som innehåller sökordet:',
-'notextmatches' => 'Det finns inga sidor som innehåller sökordet',
+'textmatches' => 'Artikeltexter som matchar sökningen',
+'notextmatches' => 'Inga artikeltexter matchar sökningen',
 'prevn' => 'föregående {{PLURAL:$1|$1}}',
 'nextn' => 'nästa {{PLURAL:$1|$1}}',
 'prevn-title' => 'Föregående $1 {{PLURAL:$1|resultat|resultat}}',
 'nextn-title' => 'Nästa $1 {{PLURAL:$1|resultat|resultat}}',
 'shown-title' => 'Visa $1 {{PLURAL:$1|resultat|resultat}} per sida',
 'viewprevnext' => 'Visa ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-exists' => "'''Det finns en sida med namnet \"[[:\$1]]\" på denna wiki.'''",
+'searchmenu-exists' => "'''Det finns en sida med namnet \"[[:\$1]]\" på denna wiki.''' {{PLURAL:\$2|0=|Se även de andra sökresultaten som hittades.}}",
 'searchmenu-new' => "'''Skapa sidan \"[[:\$1]]\" på denna wiki!'''",
 'searchprofile-articles' => 'Innehållssidor',
 'searchprofile-project' => 'Hjälp- och projektsidor',
@@ -1418,7 +1422,7 @@ Detaljer kan hittas i [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}
 'search-nonefound' => 'Inga resultat matchade frågan.',
 'powersearch-legend' => 'Avancerad sökning',
 'powersearch-ns' => 'Sök i namnrymderna:',
-'powersearch-redir' => 'Visa omdirigeringar',
+'powersearch-redir' => 'Lista omdirigeringar',
 'powersearch-togglelabel' => 'Kryssa:',
 'powersearch-toggleall' => 'Alla',
 'powersearch-togglenone' => 'Ingen',
@@ -1434,7 +1438,7 @@ Notera dock att deras indexering av {{SITENAME}} kan vara något föråldrad.',
 'prefs-edits' => 'Antal redigeringar:',
 'prefsnologintext2' => 'Var god $1 för att ändra användarinställningar.',
 'prefs-skin' => 'Utseende',
-'skin-preview' => 'förhandsvisning',
+'skin-preview' => 'Förhandsvisning',
 'datedefault' => 'Ovidkommande',
 'prefs-beta' => 'Betafunktioner',
 'prefs-datetime' => 'Datum och tid',
@@ -1464,7 +1468,7 @@ Notera dock att deras indexering av {{SITENAME}} kan vara något föråldrad.',
 'stub-threshold' => 'Gräns för <a href="#" class="stub">stubblänk</a>-formatering (byte):',
 'stub-threshold-disabled' => 'Avaktiverat',
 'recentchangesdays' => 'Antal dygn som skall visas i "senaste ändringarna":',
-'recentchangesdays-max' => '(maximalt $1 {{PLURAL:$1|dygn|dygn}})',
+'recentchangesdays-max' => 'Maximalt $1 {{PLURAL:$1|dygn}}',
 'recentchangescount' => 'Antal redigeringar som visas som standard:',
 'prefs-help-recentchangescount' => 'Detta inkluderar senaste ändringarna, sidhistorik och loggar.',
 'prefs-help-watchlist-token2' => 'Detta är den hemliga nyckeln till webbflödet i din bevakningslista.
@@ -1508,7 +1512,7 @@ Detta kan inte återställas.',
 'yourlanguage' => 'Språk:',
 'yourvariant' => 'Språkval för innehåll:',
 'prefs-help-variant' => 'Ditt önskade variant eller ortografi för att visa innehållssidor på denna wiki i.',
-'yournick' => 'Signatur:',
+'yournick' => 'Ny signatur:',
 'prefs-help-signature' => 'Kommentarer på diskussionssidor ska signeras med "<nowiki>~~~~</nowiki>", vilket konverteras till din signatur och tidpunkt.',
 'badsig' => 'Det är något fel med råsignaturen, kontrollera HTML-koden.',
 'badsiglength' => 'Din signatur är för lång.
@@ -1546,8 +1550,8 @@ Om du väljer att ange ditt riktiga namn, kommer det att användas för att till
 'prefs-tabs-navigation-hint' => 'Tips: Du kan använda vänster och höger piltangenterna för att navigera mellan flikarna i listan flikar.',
 
 # User preference: email validation using jQuery
-'email-address-validity-valid' => 'Ser giltig ut',
-'email-address-validity-invalid' => 'Giltig adress krävs!',
+'email-address-validity-valid' => 'E-postadress ser giltig ut',
+'email-address-validity-invalid' => 'Ange en giltig e-postadress',
 
 # User rights
 'userrights' => 'Hantering av användarrättigheter',
@@ -1571,7 +1575,7 @@ Om du väljer att ange ditt riktiga namn, kommer det att användas för att till
 'userrights-changeable-col' => 'Grupper du kan ändra',
 'userrights-unchangeable-col' => 'Grupper du inte kan ändra',
 'userrights-conflict' => 'Konflikt vid ändringar av användarrättigheter! Var god granska och bekräfta dina ändringar.',
-'userrights-removed-self' => 'Du tog bort dina egna rättigheter. Som sådan, kan du inte längre komma åt denna sida.',
+'userrights-removed-self' => 'Du tog bort dina egna rättigheter. Du kan därför inte längre komma åt denna sida.',
 
 # Groups
 'group' => 'Grupp:',
@@ -1603,18 +1607,18 @@ Om du väljer att ange ditt riktiga namn, kommer det att användas för att till
 'right-createpage' => 'Skapa sidor (som inte är diskussionssidor)',
 'right-createtalk' => 'Skapa diskussionssidor',
 'right-createaccount' => 'Skapa nya användarkonton',
-'right-minoredit' => 'Markera mindre ändringar',
+'right-minoredit' => 'Markera redigeringar som mindre',
 'right-move' => 'Flytta sidor',
 'right-move-subpages' => 'Flytta sidor med deras undersidor',
 'right-move-rootuserpages' => 'Flytta root-användarsidor',
 'right-movefile' => 'Flytta filer',
-'right-suppressredirect' => 'Behöver inte skapa omdirigeringar vid sidflyttning',
+'right-suppressredirect' => 'Skapa inte omdirigeringar från ursprungssidan vid sidflyttning',
 'right-upload' => 'Ladda upp filer',
-'right-reupload' => 'Skriva över existerande filer',
-'right-reupload-own' => 'Skriva över egna filer',
-'right-reupload-shared' => 'Skriva över delade filer lokalt',
-'right-upload_by_url' => 'Ladda upp en fil genom en URL',
-'right-purge' => 'Rensa cachen för sidor utan att behöva bekräfta',
+'right-reupload' => 'Skriv över existerande filer',
+'right-reupload-own' => 'Skriv över egna filer',
+'right-reupload-shared' => 'Skriv över delade filer lokalt',
+'right-upload_by_url' => 'Ladda upp en fil genom en webbadress',
+'right-purge' => 'Rensa cachen för en sida utan att bekräfta',
 'right-autoconfirmed' => 'Påverkas inte av IP-baserade hastighetsgränser',
 'right-bot' => 'Behandlas som en automatisk process',
 'right-nominornewtalk' => 'Mindre ändringar på diskussionssidor ger inte besked om nya meddelanden',
@@ -1626,8 +1630,8 @@ Om du väljer att ange ditt riktiga namn, kommer det att användas för att till
 'right-deleterevision' => 'Radera och återställa enskilda sidversioner',
 'right-deletedhistory' => 'Se raderad historik utan tillhörande sidtext',
 'right-deletedtext' => 'Visa raderad text och ändringar mellan raderade versioner',
-'right-browsearchive' => 'Söka efter raderade sidor',
-'right-undelete' => 'Återställa raderade sidor',
+'right-browsearchive' => 'Sök efter raderade sidor',
+'right-undelete' => 'Återställ raderade sidor',
 'right-suppressrevision' => 'Se och återställa sidversioner som dolts för administratörer',
 'right-suppressionlog' => 'Se privata loggar',
 'right-block' => 'Blockera andra användare från att redigera',
@@ -1642,7 +1646,7 @@ Om du väljer att ange ditt riktiga namn, kommer det att användas för att till
 'right-editinterface' => 'Redigera användargränssnittet',
 'right-editusercssjs' => 'Redigera andra användares CSS- och JS-filer',
 'right-editusercss' => 'Redigera andra användares CSS-filer',
-'right-edituserjs' => 'Redigera andra användares JS-filer',
+'right-edituserjs' => 'Redigera andra användares JavaScript-filer',
 'right-editmyusercss' => 'Redigera din egen användares CSS-filer',
 'right-editmyuserjs' => 'Redigera din egen användares JavaScript-filer',
 'right-viewmywatchlist' => 'Visa din egen bevakningslista',
@@ -1728,17 +1732,18 @@ Om du väljer att ange ditt riktiga namn, kommer det att användas för att till
 'recentchanges-label-newpage' => 'Denna redigering skapade en ny sida',
 'recentchanges-label-minor' => 'Detta är en mindre ändring',
 'recentchanges-label-bot' => 'Denna redigering gjordes av en bot',
-'recentchanges-label-unpatrolled' => 'Denna redigering har inte blivit kontrollerad ännu',
+'recentchanges-label-unpatrolled' => 'Denna redigering har inte blivit patrullerad ännu',
 'recentchanges-label-plusminus' => 'Sidans storlek ändrades med detta antal byte',
+'recentchanges-legend-heading' => "'''Teckenförklaring:'''",
 'recentchanges-legend-newpage' => '(se även [[Special:NewPages|listan över nya sidor]])',
 'recentchanges-legend-plusminus' => "(''±123'')",
 'rcnotefrom' => "Nedan visas ändringar sedan '''$2''' (upp till '''$1''' visas).",
-'rclistfrom' => 'Visa ändringar efter $1',
+'rclistfrom' => 'Visa ändringar från och med $1',
 'rcshowhideminor' => '$1 mindre ändringar',
 'rcshowhidebots' => '$1 robotar',
-'rcshowhideliu' => '$1 inloggade användare',
+'rcshowhideliu' => '$1 registrerade användare',
 'rcshowhideanons' => '$1 oinloggade användare',
-'rcshowhidepatr' => '$1 kontrollerade redigeringar',
+'rcshowhidepatr' => '$1 patrullerade redigeringar',
 'rcshowhidemine' => '$1 mina ändringar',
 'rclinks' => 'Visa senaste $1 ändringar under de senaste $2 dygnen<br />$3',
 'diff' => 'skillnad',
@@ -1790,7 +1795,7 @@ Använd en länk på något av följande format för att infoga en fil på en si
 'upload-permitted' => 'Tillåtna filtyper: $1.',
 'upload-preferred' => 'Föredragna filtyper: $1.',
 'upload-prohibited' => 'Förbjudna filtyper: $1.',
-'uploadlog' => 'Uppladdningar',
+'uploadlog' => 'uppladdningslogg',
 'uploadlogpage' => 'Uppladdningslogg',
 'uploadlogpagetext' => 'Det här är en logg över de senast uppladdade filerna.
 Se [[Special:NewFiles|galleriet över nya filer]] för en mer visuell översikt.',
@@ -1808,7 +1813,7 @@ Se [[Special:NewFiles|galleriet över nya filer]] för en mer visuell översikt.
 'filename-toolong' => 'Filnamn får inte vara längre än 240 bytes.',
 'badfilename' => 'Filens namn har blivit ändrat till "$1".',
 'filetype-mime-mismatch' => 'Filtillägget ".$1" matchar inte med den identifierade MIME-typen för filen ($2).',
-'filetype-badmime' => 'Uppladdning av filer med MIME-typen "$1" är inte tillåten.',
+'filetype-badmime' => 'Uppladdning av filer av MIME-typ "$1" är inte tillåtet.',
 'filetype-bad-ie-mime' => 'Kan inte ladda upp denna fil på grund av att Internet Explorer skulle upptäcka att den är "$1", vilket är en otillåten och möjligtvis farlig filtyp.',
 'filetype-unwanted-type' => "'''\".\$1\"''' är en oönskad filtyp.
 {{PLURAL:\$3|Föredragen filtyp|Föredragna filtyper}} är \$2.",
@@ -2506,6 +2511,7 @@ Se $2 för noteringar om de senaste raderingarna.',
 'delete-edit-reasonlist' => 'Redigera anledningar för radering',
 'delete-toobig' => 'Denna sida har en lång redigeringshistorik med mer än $1 {{PLURAL:$1|sidversion|sidversioner}}. Borttagning av sådana sidor har begränsats för att förhindra oavsiktliga driftstörningar på {{SITENAME}}.',
 'delete-warning-toobig' => 'Denna sida har en lång redigeringshistorik med mer än $1 {{PLURAL:$1|sidversion|sidversioner}}. Att radera sidan kan skapa problem med hanteringen av databasen på {{SITENAME}}; var försiktig.',
+'deleting-backlinks-warning' => "'''Varning:''' Andra sidor länkar till sidan som du är på väg att radera.",
 
 # Rollback
 'rollback' => 'Rulla tillbaka ändringar',
@@ -3306,7 +3312,7 @@ Om du kör den kan din dator skadas.",
 'seconds' => '{{PLURAL:$1|$1 sekund|$1 sekunder}}',
 'minutes' => '{{PLURAL:$1|$1 minut|$1 minuter}}',
 'hours' => '{{PLURAL:$1|$1 timme|$1 timmar}}',
-'days' => '{{PLURAL:$1|$1 dag|$1 dagar}}',
+'days' => '{{PLURAL:$1|$1 dygn}}',
 'weeks' => '{{PLURAL:$1|$1 vecka|$1 veckor}}',
 'months' => '{{PLURAL:$1|$1 månad|$1 månader}}',
 'years' => '{{PLURAL:$1|$1 år}}',
@@ -3843,7 +3849,7 @@ Bekräfta att du verkligen vill återskapa sidan.",
 
 # Language selector for translatable SVGs
 'img-lang-default' => '(standardspråk)',
-'img-lang-info' => 'Rendera bilden i $1 $2.',
+'img-lang-info' => 'Rendera denna bild i $1. $2',
 'img-lang-go' => 'Gå',
 
 # Table pager
@@ -3950,13 +3956,14 @@ Du bör ha fått [{{SERVER}}{{SCRIPTPATH}}/COPYING en kopia av GNU General Publi
 'version-entrypoints-header-url' => 'URL',
 
 # Special:Redirect
-'redirect' => 'Omdirigering efter filnamn, användar-ID eller versions-ID',
+'redirect' => 'Omdirigering efter filnamn, användar-ID, sida eller versions-ID',
 'redirect-legend' => 'Omdirigera till en fil eller sida',
-'redirect-summary' => 'Den här specialsidan omdirigerar till en fil (efter filnamn), en sida (efter versions-id) eller en användarsida (efter användar-id). Användning: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revision/328429]], eller [[{{#Special:Redirect}}/user/101]].',
+'redirect-summary' => 'Den här specialsidan omdirigerar till en fil (efter filnamn), en sida (efter en versions eller sidas ID) eller en användarsida (efter användar-ID). Användning: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], eller [[{{#Special:Redirect}}/user/101]].',
 'redirect-submit' => 'Kör',
 'redirect-lookup' => 'Slå upp:',
 'redirect-value' => 'Värde:',
 'redirect-user' => 'Användar-ID',
+'redirect-page' => 'Sidans ID',
 'redirect-revision' => 'Sidversion',
 'redirect-file' => 'Filnamn',
 'redirect-not-exists' => 'Värdet hittades inte',
@@ -4186,7 +4193,7 @@ Annars kan du använda det enkla formuläret nedan. Din kommentar kommer att lä
 'limitreport-templateargumentsize' => 'Storlek på mallargument',
 'limitreport-templateargumentsize-value' => '$1/$2 {{PLURAL:$2|byte}}',
 'limitreport-expansiondepth' => 'Största expansionsdjup',
-'limitreport-expensivefunctioncount' => 'Antal dyra parser-funktioner',
+'limitreport-expensivefunctioncount' => 'Antal resurskrävande parserfunktioner',
 
 # Special:ExpandTemplates
 'expandtemplates' => 'Expandera mallar',
@@ -4195,10 +4202,12 @@ Annars kan du använda det enkla formuläret nedan. Din kommentar kommer att lä
 'expand_templates_input' => 'Text som ska expanderas:',
 'expand_templates_output' => 'Expanderad kod',
 'expand_templates_xml_output' => 'XML-kod',
+'expand_templates_html_output' => 'Rå HTML-utdata',
 'expand_templates_ok' => 'Expandera',
 'expand_templates_remove_comments' => 'Ta bort kommentarer',
 'expand_templates_remove_nowiki' => 'Undertryck <nowiki> taggar i resultatet',
 'expand_templates_generate_xml' => 'Visa parseträd som XML',
+'expand_templates_generate_rawhtml' => 'Visa rå HTML',
 'expand_templates_preview' => 'Förhandsvisning',
 
 );
index df68f9d..d61ce8d 100644 (file)
@@ -173,6 +173,7 @@ $messages = array(
 'dec' => 'gru',
 'january-date' => '$1 styczńa',
 'february-date' => '$1 lutygo',
+'march-date' => '$1 marca',
 'april-date' => '$1 kwjytńa',
 'may-date' => '$1 moja',
 'june-date' => '$1 czyrwca',
@@ -420,6 +421,7 @@ Eli tak ńy je, możno śe trefił feler we softwaru MediaWiki. Kej ja, pedz uo
 'cannotdelete' => 'Ńy idźe wyćepać podanyj zajty abo grafiki $1.',
 'cannotdelete-title' => 'Ńy idźie wyćepać zajty "$1".',
 'delete-hook-aborted' => 'Wyćepywańe sztopńynte bez hak. Przyczyna ńyuokreślůno.',
+'no-null-revision' => 'Ńy je mogebne stworzyńe zerowyj wersyji zajty "$1"',
 'badtitle' => 'Felerny titel',
 'badtitletext' => 'Podano felerny titel zajty. Prawdopodańy sům w ńim znoki, kerych ńy wolno używać we titlach abo je pusty.',
 'perfcached' => 'To co sam je naszkryflane, to ino kopja ze pamjyńći podryncznyj a może ńy być aktualne. Nojwjyncyj {{PLURAL:$1|jydyn wynik je|$1 wyniki sům}} we tyj pamjyńći.',
@@ -441,6 +443,8 @@ $2',
 'customjsprotected' => 'Ńy mosz uprawńyń do sprowjańo tyj zajty, bo na ńij sům uosobiste sztalowańo inkszego użytkowńika.',
 'mycustomcssprotected' => 'Ńy mosz uprawńyń do sprowjańo tyj zajty CSS.',
 'mycustomjsprotected' => 'Ńy mosz uprawńyń do sprowjańo tyj zajty JavaScript.',
+'myprivateinfoprotected' => 'Ńy mosz uprowńyń coby sprowjić swoje prywatne dane.',
+'mypreferencesprotected' => 'Ńy mosz uprowńyń coby sprowjić swoje sztalowańo.',
 'ns-specialprotected' => 'Ńy idźe sprowjać zajtůw we przestrzyni mjan {{ns:special}}.',
 'titleprotected' => "Wćepańy sam zajty uo takim mjańe zawar [[User:$1|$1]].
 Powůd zawarćo: ''$2''.",
@@ -448,6 +452,7 @@ Powůd zawarćo: ''$2''.",
 
 Administrator kery zawarł wćepał kůmyntorz: "$3".',
 'invalidtitle-knownnamespace' => 'Felerne mjano "$3" w przestrzeńy "$2".',
+'invalidtitle-unknownnamespace' => 'Felerne mjano ze ńyznomům nůmerům raumu mjan $1: "$2"',
 'exception-nologin' => 'Ńy jest żeś zalogůwany',
 'exception-nologin-text' => 'Prosza [[Special:Userlogin|zaloguj śe]] coby mjeć mogebność przejśćo do tyj zajty abo akcyji.',
 
@@ -541,7 +546,7 @@ Sprowdź szrajbůng, abo [[Special:UserLogin/signup|utwůrz nowe kůnto]].',
 Hasło muśi mjeć przinojmńij {{PLURAL:$1|1 buchsztaba|$1 buchsztabůw}} a być inksze uod mjana użytkowńika.',
 'password-name-match' => 'Hasło mo być inksze atoli mjano używocza.',
 'password-login-forbidden' => 'Mogebność wyboru tygo mjana używocza abo hasła je zawarte.',
-'mailmypassword' => 'Wyślij mi nowe hasło bez e-brif',
+'mailmypassword' => 'Wyczyść hasło',
 'passwordremindertitle' => 'Nowe tymczasowe hasło lo {{SITENAME}}',
 'passwordremindertext' => 'Ftoś (cheba Ty, ze IP $1)
 pado, aże chce nowe hasło do {{SITENAME}} ($4).
@@ -583,6 +588,7 @@ Kej bydźesz chćoł je podoć, bydům użyte, coby dokůmyntowoć Twoje autorst
 # Email sending
 'php-mail-error-unknown' => 'Ńyznany feler we funkcyji mail()',
 'user-mail-no-addy' => 'Průba posłańo e‐brifa bez adresu uodbjorcy',
+'user-mail-no-body' => 'Bůła průba posłańo e-brifa uo blank abo krůtkim tekśće.',
 
 # Change password dialog
 'changepassword' => 'Zmjana hasua',
@@ -600,6 +606,7 @@ Kej bydźesz chćoł je podoć, bydům użyte, coby dokůmyntowoć Twoje autorst
 'resetpass-wrong-oldpass' => 'Felerne tymczasowe abo aktualne hasło.
 Możliwe co właśńy zmjyńiłżeś swoje hasło abo poprosiłżeś uo nowe tymczasowe hasło.',
 'resetpass-temp-password' => 'Tymczasowe hasło:',
+'resetpass-abort-generic' => 'Půmjyńańe hasła uostoła zatrzimane bez rozszyrzyńe.',
 
 # Special:PasswordReset
 'passwordreset' => 'Wyczyść hasło',
@@ -638,6 +645,9 @@ Tymczasowe hasło: $2',
 'changeemail-submit' => 'Spamjyntej nowy',
 'changeemail-cancel' => 'Uodćepej',
 
+# Special:ResetTokens
+'resettokens' => 'Resetuj tokeny',
+
 # Edit page toolbar
 'bold_sample' => 'Ruby tekst',
 'bold_tip' => 'Ruby tekst',
@@ -709,7 +719,7 @@ Możesz to zrobić we [[Special:Preferences|swojich sztalowańach]].',
 'newarticletext' => 'Ńy mo sam jeszcze artikla uo takijj titli. Eli chcesz go sprowjać, naszkryflej niżyj jego tekst (wjyncy informacyj nojdźesz [[{{MediaWiki:Helppage}}|na zajće půmocy]]). Eli żeś chćoł zrobić cośik inksze, naćiś ino knefel "Nazod".',
 'anontalkpagetext' => "---- ''To je zajta godki lo anůnimowych używoczy  - takich, kerzi ńy majům jeszcze swojigo kůnta abo ńy chcům go terozki używać.
 By jejich idyntyfikować, używomy numerůw IP.
-Eli jeżeś anůnimowym używoczym a wydowo Ći śe, aże zamjyszczůne sam kůmyntorze ńy sům skjyrowane do Ćebje, [[Special:UserLogin|utwůrz prosza kůnto]] abo [[Special:UserLogin|zalůguj śe]] - beztůż uńikńesz potym podobnych ńyporozumjyń.''",
+Eli jeżeś anůnimowym używoczym a wydowo Ći śe, aże zamjyszczůne sam kůmyntorze ńy sům skjyrowane do Ćebje, [[Special:UserLogin/signup|utwůrz kůnto]] abo [[Special:UserLogin|zaloguj śe]] - beztůż uńikńesz potym podobnych ńyporozumjyń.''",
 'noarticletext' => 'Ńy můmy zajta uo takij titli. Mogesz [{{fullurl:{{FULLPAGENAME}}|action=edit}} wćepać artikel {{FULLPAGENAME}}] abo [[Special:Search/{{PAGENAME}}|sznupać {{PAGENAME}} we inkszych]].',
 'noarticletext-nopermission' => 'Ta zajta terozki je pusto.
 Mogesz [[Special:Search/{{PAGENAME}}|wysznupać ta titla]] we treśćach inkszych zajtůw, abo <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} przesznupać powjůnzane rejery]</span>, nale ńy mosz uprowńyń coby ta zajta wćepać',
@@ -799,6 +809,7 @@ Rejer wyćepań tyj zajty je podany půńiżej, cobyś mioł wygoda:",
 Zdowo śe, co zostoła wyćepano.',
 'edit-conflict' => 'Kůnflikt sprowjyń.',
 'edit-no-change' => 'Twoje sprowjyńe uostouo zignorowane pů takymu, co ńic žeś we tekśće ńy zmjyńiu.',
+'postedit-confirmation' => 'Spamjyntano twoje sprowjyńe.',
 'edit-already-exists' => 'Ńy idźe utwořić nowyj zajty.
 Tako zajta juž sam je.',
 'defaultmessagetext' => 'Tekst důmyślny',
@@ -836,7 +847,7 @@ Skuli: ''$2''",
 'revisionasof' => 'Wersyjo ze dńa $1',
 'revision-info' => 'Wersyjo s dńa $1; $2',
 'previousrevision' => '← starszo wersyjo',
-'nextrevision' => 'Nastympno wersyjo→',
+'nextrevision' => 'Nostympno wersyjo→',
 'currentrevisionlink' => 'Aktualno wersyjo',
 'cur' => 'akt.',
 'next' => 'nastympno',
@@ -1250,11 +1261,11 @@ $1',
 'recentchanges-label-minor' => 'To je ńywjelge sprowjyńy',
 'recentchanges-label-bot' => 'To sprowjyńy bůło zrobjůne uod bota',
 'recentchanges-label-unpatrolled' => 'To sprowjyńy ńy bůło jeszcze uowjerzůne',
-'rcnotefrom' => 'PůÅ\84¾ej pokazano půmjyÅ\84\84o zrobjůne pů <b>$2</b> (Å\84y wjyncyj jak <b>$1</b> pozycji).',
+'rcnotefrom' => 'PůÅ\84¼ej pokazano půmjyÅ\84\84o zrobjůne pů <b>$2</b> (Å\84y wjyncyj kej <b>$1</b> pozycji).',
 'rclistfrom' => 'Ukoż půmjyńańa uod $1',
 'rcshowhideminor' => '$1 drobne půmjyńańa',
 'rcshowhidebots' => '$1 boty',
-'rcshowhideliu' => '$1 nalogowanych używoczůw',
+'rcshowhideliu' => '$1 zaregisztrowanych',
 'rcshowhideanons' => '$1 anůńimowych',
 'rcshowhidepatr' => '$1 uowjerzůne',
 'rcshowhidemine' => '$1 uody mje sprowjůne',
@@ -1477,7 +1488,7 @@ Niżyj sům informacyje ze [$2 zajty popisu] tygo pliku.',
 'randomredirect-nopages' => 'We przestrzyńi mjan "$1" ńy ma przekerowań.',
 
 # Statistics
-'statistics' => 'Statystyka',
+'statistics' => 'Sztatystyka',
 'statistics-header-pages' => 'Statystyka zajtůw',
 'statistics-header-edits' => 'Statystyka sprowjyń',
 'statistics-header-views' => 'Statystyka bezuchůw',
@@ -1571,8 +1582,8 @@ Niżyj sům informacyje ze [$2 zajty popisu] tygo pliku.',
 
 # Book sources
 'booksources' => 'Kśůnžki',
-'booksources-search-legend' => 'Šnupej za zdřůduůma kśiůnžkowymi',
-'booksources-go' => 'Pokož',
+'booksources-search-legend' => 'Sznupej za zdrzůdłůma kśůnżkowymi',
+'booksources-go' => 'Pokoż',
 'booksources-text' => 'Půńiżyj je lista uodnośńikůw do inkszych witryn, kere pośredńiczům we sprzedaży nowych a używanych buchůw, a tyż můgům mjeć dolsze informacyje uo poszukiwanym bez ćebje buchu.',
 'booksources-invalid-isbn' => 'Podany numer ISBN zostoł rozpoznany kej felerny. Sprowdź aże podany numer je zgodny s numerym kery je we zdrzůdle.',
 
@@ -1920,7 +1931,7 @@ $1',
 'month' => 'Uod mjeśůnca (i downiyjše):',
 'year' => 'Uod roku (i dowńijše):',
 
-'sp-contributions-newbies' => 'Pokož wkuod ino uod nowych užytkowńikůw',
+'sp-contributions-newbies' => 'Pokoż ajnzac ino uod nowych użytkowńikůw',
 'sp-contributions-newbies-sub' => 'Dlo nowych užytkowńikůw',
 'sp-contributions-newbies-title' => 'Wkłod nowych użytkowńików',
 'sp-contributions-blocklog' => 'zawarća',
@@ -1929,17 +1940,17 @@ $1',
 'sp-contributions-logs' => 'rejer dźołońo',
 'sp-contributions-talk' => '↓ dyskusyjo',
 'sp-contributions-userrights' => 'Zařůndzańy prowami užytkowńikůw',
-'sp-contributions-search' => 'Šnupej za wkuodym',
+'sp-contributions-search' => 'Sznupej za wkłodym',
 'sp-contributions-username' => 'Adres IP abo mjano użytkowńika',
 'sp-contributions-toponly' => 'Ukoż jyno ůostanie wersyje',
-'sp-contributions-submit' => 'Šnupej',
+'sp-contributions-submit' => 'Sznupej',
 
 # What links here
 'whatlinkshere' => 'Co sam linkuje',
 'whatlinkshere-title' => 'Zajty, kere linkujům na "$1"',
 'whatlinkshere-page' => 'Zajta:',
 'linkshere' => "Nastympůjůnce zajty sóm adrésůwane do '''[[:$1]]''':",
-'nolinkshere' => "Žodno zajta ńy je adrésowana do '''[[:$1]]'''.",
+'nolinkshere' => "Å»odno zajta ńy je adrésowana do '''[[:$1]]'''.",
 'nolinkshere-ns' => "Žodno zajta ńy je adresowano do '''[[:$1]]''' we wybrany přestřyni mjan.",
 'isredirect' => 'překerowujůnca zajta',
 'istemplate' => 'dołůnczony muster',
@@ -2241,7 +2252,7 @@ Wšyjstke uoperacyje importu transwiki sům uodnotowywane w [[Special:Log/import
 'tooltip-feed-rss' => 'Kanau RSS do tyj zajty',
 'tooltip-feed-atom' => 'Kanoł Atom lo tyj zajty',
 'tooltip-t-contributions' => 'Ukoż ajnzace tygo używocza',
-'tooltip-t-emailuser' => 'WyÅ\9blij e-brif do tygo užytkowńika',
+'tooltip-t-emailuser' => 'WyÅ\9blij e-brif do tygo użytkowńika',
 'tooltip-t-upload' => 'Wćepej plik na serwer',
 'tooltip-t-specialpages' => 'Lista wszyjskich ekstra zajtůw',
 'tooltip-t-print' => 'Wersyjo do durku',
index d85df08..156104c 100644 (file)
@@ -992,8 +992,8 @@ $1 எனும் பயனரையோ வேறு [[{{MediaWiki:Grouppage-sy
 'revdelete-hide-user' => 'தொகுப்பவரின் ஐ.பி./பயனர்பெயரை மறை',
 'revdelete-hide-restricted' => 'குறிப்புக்களை அதிகாரிகள் உட்பட எல்லோரிடமிருந்தும் மறைத்துவிடு (காட்டத்தேவையில்லை).',
 'revdelete-radio-same' => '(தயவுசெய்து மாற்ற வேண்டாம்)',
-'revdelete-radio-set' => 'à®\95ாணà®\95à¯\8dà®\95à¯\82à®\9fியது',
-'revdelete-radio-unset' => 'மறà¯\88à®\95à¯\8dà®\95பà¯\8dபà®\9fà¯\8dà®\9fது',
+'revdelete-radio-set' => 'மறà¯\88à®\95à¯\8dà®\95பà¯\8dபà®\9fà¯\8dà®\9fது',
+'revdelete-radio-unset' => 'à®\95ாணà®\95à¯\8dà®\95à¯\82à®\9fியது',
 'revdelete-suppress' => 'நிர்வாகிகள் உட்பட இனவரிடமிருந்தாக தரவுகளை அடக்கு',
 'revdelete-unsuppress' => 'மீட்கப்பட்ட திருத்தங்கள் மீதான கட்டுப்பாடுகளை நீக்கு',
 'revdelete-log' => 'காரணம்:',
@@ -1673,6 +1673,7 @@ $1',
 'listfiles_size' => 'அளவு',
 'listfiles_description' => 'விளக்கம்',
 'listfiles_count' => 'பதிப்புக்கள்',
+'listfiles-latestversion' => 'தற்போதய பதிப்பு',
 'listfiles-latestversion-yes' => 'ஆம்',
 'listfiles-latestversion-no' => 'இல்லை',
 
index f337408..8818533 100644 (file)
@@ -149,7 +149,7 @@ $messages = array(
 'tog-hidepatrolled' => 'ఇటీవలి మార్పులలో నిఘా ఉన్న మార్పులను దాచు',
 'tog-newpageshidepatrolled' => 'కొత్త పేజీల జాబితా నుంచి నిఘా ఉన్న పేజీలను దాచు',
 'tog-extendwatchlist' => 'కేవలం ఇటీవలి మార్పులే కాక, మార్పులన్నీ చూపించటానికి నా వీక్షణా జాబితాను పెద్దది చేయి',
-'tog-usenewrc' => 'à°\87à°\9fà±\80వలి à°®à°¾à°°à±\8dà°ªà±\81à°²à±\81 à°®à°°à°¿à°¯à±\81 à°µà°¿క్షణ జాబితాలలో మార్పులను పేజీ వారిగా చూపించు',
+'tog-usenewrc' => 'à°\87à°\9fà±\80వలి à°®à°¾à°°à±\8dà°ªà±\81à°²à±\81 à°®à°°à°¿à°¯à±\81 à°µà±\80క్షణ జాబితాలలో మార్పులను పేజీ వారిగా చూపించు',
 'tog-numberheadings' => 'శీర్షికలకు అప్రమేయంగా వరుస సంఖ్యలు చేర్చు',
 'tog-showtoolbar' => 'దిద్దుబాటు పనిముట్ల పట్టీని చూపించు',
 'tog-editondblclick' => 'డబుల్‌ క్లిక్కు చేసినప్పుడు పేజీని మార్చు',
@@ -184,6 +184,7 @@ $messages = array(
 'tog-showhiddencats' => 'దాచిన వర్గాలను చూపించు',
 'tog-norollbackdiff' => 'రద్దు చేసాక తేడాలు చూపించవద్దు',
 'tog-useeditwarning' => 'ఏదైనా పేజీని నేను వదిలివెళ్తున్నప్పుడు దానిలో భద్రపరచని మార్పులు ఉంటే నన్ను హెచ్చరించు',
+'tog-prefershttps' => 'లాగిన్ అయి ఉన్నప్పుడెల్లా భద్ర కనెక్షనునే వాడు',
 
 'underline-always' => 'ఎల్లప్పుడూ',
 'underline-never' => 'ఎప్పటికీ వద్దు',
@@ -466,6 +467,12 @@ $1',
 # General errors
 'error' => 'లోపం',
 'databaseerror' => 'డేటాబేసు లోపం',
+'databaseerror-text' => 'డేటాబేసు క్వెరీ లోపం దొర్లింది.
+సాఫ్టువేరులోని ఉన్న దోషానికి ఇది సూచిక కావచ్చు.',
+'databaseerror-textcl' => 'డేటాబేసు క్వెరీ లోపం దొర్లింది.',
+'databaseerror-query' => 'క్వెరీ: $1',
+'databaseerror-function' => 'ఫంక్షన్: $1',
+'databaseerror-error' => 'లోపం: $1',
 'laggedslavemode' => 'హెచ్చరిక: పేజీలో ఇటీవల జరిగిన మార్పులు ఉండకపోవచ్చు.',
 'readonly' => 'డేటాబేసు లాక్‌చెయ్యబడింది',
 'enterlockreason' => 'డేటాబేసుకు వేయబోతున్న లాకుకు కారణం తెలుపండి, దానితోపాటే ఎంతసమయం తరువాత ఆ లాకు తీసేస్తారో కూడా తెలుపండి',
@@ -497,6 +504,8 @@ $1',
 'cannotdelete' => '"$1" అనే పేజీ లేదా ఫైలుని తొలగించలేకపోయాం.
 దాన్ని ఇప్పటికే ఎవరైనా తొలగించి ఉండవచ్చు.',
 'cannotdelete-title' => '"$1" పుటను తొలగించలేరు',
+'delete-hook-aborted' => 'తొలగింపును హుక్ ఆపేసింది.
+వివరణ ఏమీ ఇవ్వలేదు.',
 'badtitle' => 'తప్పు శీర్షిక',
 'badtitletext' => 'మీరు కోరిన పుట యొక్క పేరు చెల్లనిది, ఖాళీగా ఉంది, లేదా తప్పుగా ఇచ్చిన అంతర్వికీ లేదా అంతర-భాషా శీర్షిక అయివుండాలి.
 శీర్షికలలో ఉపయోగించకూడని అక్షరాలు దానిలో ఉండివుండొచ్చు.',
@@ -518,6 +527,8 @@ $1',
 'cascadeprotected' => 'కింది {{PLURAL:$1|పేజీని|పేజీలను}} కాస్కేడింగు ఆప్షనుతో చేసి సంరక్షించారు. ప్రస్తుత పేజీ, ఈ పేజీల్లో ఇంక్లూడు అయి ఉంది కాబట్టి, దిద్దుబాటు చేసే వీలు లేకుండా ఇది కూడా రక్షణలో ఉంది.
 $2',
 'namespaceprotected' => "'''$1''' నేంస్పేసులో మార్పులు చేయటానికి మీకు అనుమతి లేదు.",
+'customcssprotected' => 'ఈ CSS పేజీని మార్చేందుకు మీకు అనుమతి లేదు. ఎందుకంటే వేరే వాడుకరి యొక్క వ్యక్తిగత సెట్టింగులు అందులో ఉన్నాయి.',
+'customjsprotected' => 'ఈ JavaScript పేజీని మార్చేందుకు మీకు అనుమతి లేదు. ఎందుకంటే వేరే వాడుకరి యొక్క వ్యక్తిగత సెట్టింగులు అందులో ఉన్నాయి.',
 'mycustomcssprotected' => 'ఈ CSS పేజీని సవరించేందుకు మీకు అనుమతి లేదు.',
 'mycustomjsprotected' => 'ఈ జావాస్క్రిప్టు పేజీని సవరించేందుకు మీకు అనుమతి లేదు.',
 'myprivateinfoprotected' => 'మీ అంతరంగిక సమాచారాన్ని సవరించేందుకు మీకు అనుమతి లేదు.',
@@ -525,6 +536,9 @@ $2',
 'ns-specialprotected' => 'ప్రత్యేక పేజీలపై దిద్దుబాట్లు చేయలేరు.',
 'titleprotected' => "సభ్యులు [[User:$1|$1]] ఈ పేజీని సృష్టించనివ్వకుండా నిరోదిస్తున్నారు.
 అందుకు ఇచ్చిన కారణం: ''$2''.",
+'filereadonlyerror' => 'ఫైలు ఖజానా "$2" రీడ్-ఓన్లీ స్థితిలో ఉండటం చేత "$1" ఫైలులో మార్పులు చెయ్యలేకపోయాం.
+
+దానికి తాళం వేసిన అధికారి ఇచ్చిన వివరణ ఇది: "$3".',
 'exception-nologin' => 'లోనికి ప్రవేశించిలేరు',
 'exception-nologin-text' => 'ఈ పేజీని చూడడానికి లేదా ఈ చర్యను చెయ్యడానికి దయచేసి [[Special:Userlogin|ప్రవేశించండి]].',
 
@@ -580,6 +594,8 @@ $2',
 'userlogin-resetpassword-link' => 'మీ సంకేతపదాన్ని మర్చిపోయారా?',
 'helplogin-url' => 'Help:ప్రవేశించడం',
 'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|ప్రవేశించడానికి సహాయం]]',
+'userlogin-loggedin' => 'మీరు ఈసరికే {{GENDER:$1|$1}} గా లాగిన్ అయి ఉన్నారు.
+వేరే వాడుకరిగా లాగినయేందుకు కింది ఫారమును వాడండి.',
 'userlogin-createanother' => 'మరొక ఖాతాను సృష్టించండి',
 'createacct-join' => 'మీ సమాచారాన్ని క్రింద ఇవ్వండి.',
 'createacct-another-join' => 'కొత్త ఖాతా యొక్క సమాచారాన్ని క్రింద ఇవ్వండి.',
@@ -599,6 +615,7 @@ $2',
 'createacct-benefit-heading' => '{{SITENAME}}ను తయారుచేసేది మీలాంటి ప్రజలే.',
 'createacct-benefit-body1' => '{{PLURAL:$1|మార్పు|మార్పులు}}',
 'createacct-benefit-body2' => '{{PLURAL:$1|పేజీ|పేజీలు}}',
+'createacct-benefit-body3' => 'ఇటీవలి {{PLURAL:$1|సమర్పకుడు|సమర్పకులు}}',
 'badretype' => 'మీరు ఇచ్చిన రెండు సంకేతపదాలు ఒకదానితో మరొకటి సరిపోలడం లేదు.',
 'userexists' => 'ఇచ్చిన వాడుకరిపేరు ఇప్పటికే వాడుకలో ఉంది.
 వేరే పేరును ఎంచుకోండి.',
@@ -666,10 +683,13 @@ $2',
 'login-abort-generic' => 'మీ లాగిన్ ప్రయత్నం విఫలమైంది - ఆగిపోయింది',
 'loginlanguagelabel' => 'భాష: $1',
 'suspicious-userlogout' => 'సరిగా పనిచేయని విహారిణి లేదా కాషింగ్ ప్రాక్సీ వల్ల పంపబడడం చేత, నిష్క్రమించాలనే మీ అభ్యర్థనని నిరాకరించారు.',
+'createacct-another-realname-tip' => 'అసలు పేరు ఐచ్ఛికం.
+మీరు దాన్ని ఇస్తే, వాడుకరి పనుల శ్రేయస్సు ఆ పేరుకు ఆపాదించబడుతుంది.',
 
 # Email sending
 'php-mail-error-unknown' => 'PHP యొక్క mail() ఫంక్షన్‍లో ఏదో తెలియని లోపం దొర్లింది',
 'user-mail-no-addy' => 'ఈ-మెయిలు చిరునామాని ఇవ్వకుండానే ఈ-మెయిలు పంపడానికి ప్రయత్నించారు.',
+'user-mail-no-body' => 'ఈమెయిలును ఖాళీగానో, మరీ తక్కువ విషయంతోనో పంపేందుకు ప్రయత్నించారు.',
 
 # Change password dialog
 'changepassword' => 'సంకేతపదాన్ని మార్చండి',
@@ -688,13 +708,19 @@ $2',
 'resetpass-wrong-oldpass' => 'తప్పుడు తాత్కాలిక లేదా ప్రస్తుత సంకేతపదం.
 మీరు మీ సంకేతపదాన్ని ఇప్పటికే విజయవంతంగా మార్చుకొనివుండవచ్చు లేదా కొత్త తాత్కాలిక సంకేతపదం కోసం అభ్యర్థించారు.',
 'resetpass-temp-password' => 'తాత్కాలిక సంకేతపదం:',
+'resetpass-abort-generic' => 'ఓ పొడిగింత (ఎక్స్టెన్‍షన్) సంకేతపదం మార్పిడిని ఆపేసింది.',
 
 # Special:PasswordReset
 'passwordreset' => 'సంకేతపదాన్ని మార్చుకోండి',
+'passwordreset-text-one' => 'ఈమెయిలు ద్వారా తాత్కాలిక సంకేతపదాన్ని పొందేందుకు ఈ ఫారమును నింపండి.',
+'passwordreset-text-many' => '{{PLURAL:$1|ఈమెయిలు ద్వారా తాత్కాలిక సంకేతపదాన్ని పొందేందుకు ఏదో ఒక ఫీల్డును నింపండి.Fill in one of the fields to receive a temporary password via email.}}',
 'passwordreset-legend' => 'సంకేతపదాన్ని మార్చుకోండి',
 'passwordreset-disabled' => 'ఈ వికీలో సంకేతపదాల మార్పును అచేతనం చేసాం.',
+'passwordreset-emaildisabled' => 'ఈ వికీలో ఈమెయిలు విశేషాలను అశక్తం చేసాం.',
 'passwordreset-username' => 'వాడుకరి పేరు:',
 'passwordreset-domain' => 'డొమైన్:',
+'passwordreset-capture' => 'ఈమెయిలు ఎలా ఉంటుందో చూస్తారా?',
+'passwordreset-capture-help' => 'ఈ పెట్టెను చెక్ చేస్తే, ఈమెయిలును (తాత్కాలిక సంకేతపదంతో) వాడుకరికి పంపిస్తూనే, మీకూ చూపిస్తాం.',
 'passwordreset-email' => 'ఈ-మెయిలు చిరునామా:',
 'passwordreset-emailtitle' => '{{SITENAME}}లో ఖాతా వివరాలు',
 'passwordreset-emailtext-ip' => 'ఎవరో (బహుశా మీరే, ఐపీ అడ్రసు $1 నుంచి)  {{SITENAME}} ($4) లో మీ ఖాతా వివరాలను చెప్పమంటూ అడిగారు. కింది వాడుకరి {{PLURAL:$3|ఖాతా|ఖాతాలు}}
@@ -804,7 +830,7 @@ $2
 'nosuchsectiontext' => 'మీరు లేని విభాగాన్ని మార్చడానికి ప్రయత్నించారు.
 మీరు పేజీని చూస్తూన్నప్పుడు దాన్ని ఎవరైనా తరలించి లేదా తొలగించి ఉండవచ్చు.',
 'loginreqtitle' => 'ప్రవేశము తప్పనిసరి',
-'loginreqlink' => 'à°ªà±\8dà°°à°µà±\87శిà°\82à°\9aి',
+'loginreqlink' => 'లాà°\97ినవà°\82à°¡ి',
 'loginreqpagetext' => 'ఇతర పుటలను చూడడానికి మీరు $1 ఉండాలి.',
 'accmailtitle' => 'సంకేతపదం పంపించబడింది.',
 'accmailtext' => "[[User talk:$1|$1]] కొరకు ఒక యాదృచ్చిక సంకేతపదాన్ని $2కి పంపించాం.
@@ -950,6 +976,9 @@ $2
 'cantcreateaccount-text' => "ఈ ఐపీ అడ్రసు ('''$1''') నుండి ఖాతా సృష్టించడాన్ని [[User:$3|$3]] నిరోధించారు.
 
 $3 చెప్పిన కారణం: ''$2''",
+'cantcreateaccount-range-text' => "'''$1''' శ్రేణిలోని IP చిరునామాల నుండి ఖాతా సృష్టించడాన్ని [[User:$3|$3]] నిషేధించారు. మీ IP చిరునామా ('''$4''') ఈ శ్రేణిలోనే ఉంది.
+
+$3 ఇచ్చిన కారణం: ''$2''",
 
 # History pages
 'viewpagelogs' => 'ఈ పేజీకి సంబంధించిన లాగ్‌లను చూడండి',
@@ -990,12 +1019,12 @@ $3 చెప్పిన కారణం: ''$2''",
 'rev-deleted-user-contribs' => '[వాడుకరిపేరు లేదా ఐపీ చిరునామాని తొలగించారు  - మార్పుచేర్పుల నుండి మార్పుని దాచారు]',
 'rev-deleted-text-permission' => "ఈ పేజీ కూర్పుని '''తొలగించారు'''.
 [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} తొలగింపు చిట్టా]లో పూర్తి వివరాలు ఉండవచ్చు.",
-'rev-deleted-text-unhide' => "à°\88 à°ªà±\87à°\9cà±\80 à°\95à±\82à°°à±\8dà°ªà±\81ని '''à°¤à±\8aà°²à°\97à°¿à°\82à°\9aారà±\81'''.
-[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} à°¤à±\8aà°²à°\97à°¿à°\82à°ªà±\81 à°\9aà°¿à°\9fà±\8dà°\9fà°¾]à°²à±\8b à°µà°¿à°µà°°à°¾à°²à±\81 à°\89à°\82à°¡à°µà°\9aà±\8dà°\9aà±\81.
-మీరు కావాలనుకుంటే, నిర్వాహకులుగా [$1 ఈ కూర్పుని చూడవచ్చు].",
+'rev-deleted-text-unhide' => "à°ªà±\87à°\9cà±\80 à°¯à±\8aà°\95à±\8dà°\95 à°\88 à°\95à±\82à°°à±\8dà°ªà±\81à°¨à±\81 '''à°¤à±\8aà°²à°\97à°¿à°\82à°\9aà°¾à°\82'''.
+[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} à°¤à±\8aà°²à°\97à°¿à°\82à°ªà±\81 à°\9aà°¿à°\9fà±\8dà°\9fà°¾]à°²à±\8b à°µà°¿à°µà°°à°¾à°²à±\81 à°\9aà±\82à°¡à°µà°\9aà±\8dà°\9aà±\81.
+మీరు కావాలనుకుంటే, [$1 ఈ కూర్పుని చూడవచ్చు].",
 'rev-suppressed-text-unhide' => "ఈ పేజీకూర్పును '''అణచి పెట్టాం'''.
-[{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} à°\85à°£à°\9aà°¿à°µà±\87à°¤ à°\9aà°¿à°\9fà±\8dà°\9fà°¾]à°²à±\8b à°µà°¿à°µà°°à°¾à°²à±\81 à°\89à°\82à°¡à±\8aచ్చు.
-ముందుకు సాగాలనుకుంటే ఒక నిర్వాహకుడిగా మీరీ [$1 కూర్పును చూడవచ్చు].",
+[{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} à°\85à°£à°\9aà°¿à°µà±\87à°¤ à°\9aà°¿à°\9fà±\8dà°\9fà°¾]à°²à±\8b à°µà°¿à°µà°°à°¾à°²à±\81 à°\9aà±\82à°¡à°µచ్చు.
+ముందుకు సాగాలనుకుంటే [$1 కూర్పును చూడవచ్చు].",
 'rev-deleted-text-view' => "ఈ పేజీ కూర్పుని '''తొలగించారు'''.
 ఒక నిర్వాహకుడిగా మీరు దాన్ని చూడవచ్చు; [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} తొలగింపు చిట్టా]లో వివరాలు ఉండవచ్చు.",
 'rev-suppressed-text-view' => "ఈ పేజీకూర్పును '''అణచి పెట్టాం'''.
@@ -1119,6 +1148,10 @@ $1",
 'diff-empty' => '(తేడా లేదు)',
 'diff-multi' => '({{PLURAL:$2|ఒక వాడుకరి|$2 వాడుకరుల}} యొక్క {{PLURAL:$1|ఒక మధ్యంతర కూర్పును|$1 మధ్యంతర కూర్పులను}} చూపించట్లేదు)',
 'diff-multi-manyusers' => '$2 మంది పైన ({{PLURAL:$2|ఒక వాడుకరి|వాడుకరుల}} యొక్క {{PLURAL:$1|ఒక మధ్యంతర కూర్పును|$1 మధ్యంతర కూర్పులను}} చూపించట్లేదు)',
+'difference-missing-revision' => 'ఈ తేడా ($1) యొక్క {{PLURAL:$2|ఒక కూర్పు|$2 కూర్పులు}} of this difference {{PLURAL:$2|కనబడలేదు|కనబడలేదు}}.
+
+సాధారణంగా, తొలగించబడిన పేజీ యొక్క కాలదోషం పట్టిన ’తేడా’ లింకును నొక్కినపుడు ఇది జరుగుతుంది. 
+[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} తొలగింపు లాగ్] లో వివరాలు దొరుకుతాయి.',
 
 # Search results
 'searchresults' => 'వెదుకులాట ఫలితాలు',
@@ -1170,11 +1203,13 @@ $1",
 'powersearch-togglenone' => 'ఏదీకాదు',
 'search-external' => 'బయటి అన్వేషణ',
 'searchdisabled' => '{{SITENAME}} అన్వేషణ తాత్కాలికంగా పని చెయ్యడం లేదు. ఈలోగా మీరు గూగుల్‌ ఉపయోగించి అన్వేషించవచ్చు. ఒక గమనిక: గూగుల్‌ ద్వారా కాలదోషం పట్టిన ఫలితాలు రావడానికి అవకాశం ఉంది.',
+'search-error' => '$1 కోసం వెతికేటపుడు లోపమేదో దొర్లింది.',
 
 # Preferences page
 'preferences' => 'అభిరుచులు',
 'mypreferences' => 'అభిరుచులు',
 'prefs-edits' => 'దిద్దుబాట్ల సంఖ్య:',
+'prefsnologintext2' => 'మీ అభిరుచులను మార్చుకునేందుకు $1.',
 'prefs-skin' => 'అలంకారం',
 'skin-preview' => 'మునుజూపు/సరిచూడు',
 'datedefault' => 'ఏదైనా పరవాలేదు',
@@ -1209,6 +1244,9 @@ $1",
 'recentchangesdays-max' => '($1 {{PLURAL:$1|రోజు|రోజులు}} గరిష్ఠం)',
 'recentchangescount' => 'అప్రమేయంగా చూపించాల్సిన దిద్దుబాట్ల సంఖ్య:',
 'prefs-help-recentchangescount' => 'ఇది ఇటీవలి మార్పులు, పేజీ చరిత్రలు, మరియు చిట్టాలకు వర్తిస్తుంది.',
+'prefs-help-watchlist-token2' => 'మీ వీక్షణజాబితా యొక్క జాలవడ్డింపుకు చెందిన రహస్య తాళమిది.
+ఈ తాళం తెలిసిన ఎవరైనా మీ వీక్షణజాబితాను చదవగలుగుతారు. అందుచేత దీన్ని ఎవరికీ ఇవ్వకండి.
+[[Special:ResetTokens|దాన్ని మార్చాలంటే ఇక్కడ నొక్కండి]].',
 'savedprefs' => 'మీ అభిరుచులను భద్రపరిచాం.',
 'timezonelegend' => 'కాల మండలం:',
 'localtime' => 'స్థానిక సమయం:',
@@ -1279,7 +1317,10 @@ $1",
 'prefs-displayrc' => 'ప్రదర్శన ఎంపికలు',
 'prefs-displaysearchoptions' => 'ప్రదర్శన ఎంపికలు',
 'prefs-displaywatchlist' => 'ప్రదర్శన ఎంపికలు',
+'prefs-tokenwatchlist' => 'టోకెన్',
 'prefs-diffs' => 'తేడాలు',
+'prefs-help-prefershttps' => 'ఈ అభిరుచి మీరు పైసారి లాగినైనపుడు అమలౌతుంది.',
+'prefs-tabs-navigation-hint' => 'చిట్కా: ట్యాబుల జాబితాలో ఓ ట్యాబు నుండి మరోదానికి వెళ్ళేందుకు కుడి ఎడమ బాణాల కీలను వాడవచ్చు.',
 
 # User preference: email validation using jQuery
 'email-address-validity-valid' => 'ఈ-మెయిలు చిరునామా సరిగానే ఉన్నట్టుంది',
@@ -1306,6 +1347,7 @@ $1",
 'userrights-notallowed' => 'వాడుకరి హక్కులను చేర్చే మరియు తొలగించే అనుమతి మీకు లేదు.',
 'userrights-changeable-col' => 'మీరు మార్చదగిన గుంపులు',
 'userrights-unchangeable-col' => 'మీరు మార్చలేని గుంపులు',
+'userrights-conflict' => 'వాడుకరి హక్కుల మార్పులలో ఘర్షణ! మీ మార్పులను సమీక్షించి, నిర్ధారించండి.',
 'userrights-removed-self' => 'మీ హక్కులను మీరు విజయవంతంగా తొలగించుకున్నారు. తద్వారా, ఈ పేజీని చూడడానికి మీకు ఇక అనుమతి లేదు.',
 
 # Groups
@@ -1372,10 +1414,17 @@ $1",
 'right-unblockself' => 'వారినే అనిరోధించుకోవడం',
 'right-protect' => 'సంరక్షణ స్థాయిలను మార్చు, సంరక్షిత పేజీలలో దిద్దుబాటు చెయ్యి',
 'right-editprotected' => 'సంరక్షిత పేజీలలో దిద్దుబటు చెయ్యి (కాస్కేడింగు సంరక్షణ లేనివి)',
+'right-editsemiprotected' => '"{{int:protect-level-autoconfirmed}}" గా సంరక్షించబడ్డ పేజీలను మార్చు',
 'right-editinterface' => 'యూజరు ఇంటరుఫేసులో దిద్దుబాటు చెయ్యి',
 'right-editusercssjs' => 'ఇతర వాడుకరుల CSS, JS ఫైళ్ళలో దిద్దుబాటు చెయ్యి',
 'right-editusercss' => 'ఇతర వాడుకరుల CSS ఫైళ్ళలో దిద్దుబాటు చెయ్యి',
 'right-edituserjs' => 'ఇతర వాడుకరుల JS ఫైళ్ళలో దిద్దుబాటు చెయ్యి',
+'right-editmyuserjs' => 'మీ స్వంత JavaScript దస్త్రాలను మార్చండి',
+'right-viewmywatchlist' => 'మీ స్వంత వీక్షణజాబితాను చూడండి',
+'right-editmywatchlist' => 'మీ స్వంత వీక్షణజాబితాను మార్చుకోండి. ఈ హక్కు లేకపోయినా, కొన్ని చర్యల ద్వారా పేజీలు జాబితాకు చేరుతాయని గమనించండి.',
+'right-viewmyprivateinfo' => 'మీ స్వంత గోపనీయ డేటాను చూడండి (ఉదా: ఈమెయిలు చిరునామా, అసలు పేరు)',
+'right-editmyprivateinfo' => 'మీ స్వంత గోపనీయ డేటాను మార్చుకోండి (ఉదా: ఈమెయిలు చిరునామా, అసలు పేరు)',
+'right-editmyoptions' => 'మీ స్వంత అభిరుచులను మార్చుకోండి',
 'right-rollback' => 'ఒకానొక పేజీలో చివరి దిద్దుబాటు చేసిన వాడుకరి చేసిన దిద్దుబాట్లను రద్దుచేయి',
 'right-markbotedits' => 'వెనక్కి తెచ్చిన దిద్దుబాట్లను బాట్ దిద్దుబాట్లుగా గుర్తించు',
 'right-noratelimit' => 'రేటు పరిమితులు ప్రభావం చూపవు',
@@ -1426,6 +1475,7 @@ $1",
 'action-suppressionlog' => 'ఈ అంతరంగిక చిట్టాను చూసే',
 'action-block' => 'ఈ వాడుకరిని మార్పులు చేయడం నుండి నిరోధించే',
 'action-protect' => 'ఈ పేజీకి సంరక్షణా స్థాయిని మార్చే',
+'action-rollback' => 'ఏదైనా పేజీలో మార్పులు చేసిన చివరి వాడుకరి యొక్క మార్పులను త్వరితంగా వెనక్కి తీసుకెళ్ళు',
 'action-import' => 'మరో వికీ నుండి ఈ పేజీని దిగుమతి చేసే',
 'action-importupload' => 'ఎగుమతి చేసిన ఫైలు నుండి ఈ పేజీలోనికి దిగుమతి చేసే',
 'action-patrol' => 'ఇతరుల మార్పులను పర్యవేక్షించినవిగా గుర్తించే',
@@ -1935,6 +1985,8 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization చూడండి.',
 'allpages-hide-redirects' => 'దారిమార్పులను దాచు',
 
 # SpecialCachedPage
+'cachedspecial-viewing-cached-ttl' => 'ఈ పేజీ యొక్క కాషె కూర్పును చూస్తున్నారు. ఇది $1 దాకా పాతదై ఉండవచ్చు.',
+'cachedspecial-viewing-cached-ts' => 'ఈ పేజీ యొక్క కాషె కూర్పును చూస్తున్నారు. ఇది పూర్తిగా వాస్తవమైన కూర్పు కాకపోవచ్చు.',
 'cachedspecial-refresh-now' => 'సరికొత్త కూర్పును చూడండి.',
 
 # Special:Categories
@@ -2010,6 +2062,7 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization చూడండి.',
 'noemailtext' => 'ఈ వాడుకరి సరైన ఈ-మెయిలు చిరునామాని ఇవ్వలేదు.',
 'nowikiemailtitle' => 'ఈ-మెయిళ్ళను అనుమతించరు',
 'nowikiemailtext' => 'ఇతర వాడుకరుల నుండి ఈ-మెయిళ్ళను అందుకోడానికి ఈ వాడుకరి సుముఖంగా లేరు.',
+'emailnotarget' => 'గ్రహీతగా ఇచ్చిన వాడుకరిపేరు తప్పైనా కావచ్చు, లేదా అసలే ఉండి ఉండకపోవచ్చు',
 'emailtarget' => 'అందుకొనేవారి వాడుకరిపేరు ఇవ్వండి',
 'emailusername' => 'వాడుకరి పేరు:',
 'emailusernamesubmit' => 'దాఖలుచెయ్యి',
@@ -2062,10 +2115,21 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization చూడండి.',
 # Displayed when you click the "watch" button and it is in the process of watching
 'watching' => 'గమనిస్తున్నాం...',
 'unwatching' => 'వీక్షణ నుండి తొలగిస్తున్నా...',
+'watcherrortext' => '"$1" కు మీ సెట్టింగులను మార్చేటపుడు ఏదో లోపం దొర్లింది.',
 
 'enotif_mailer' => '{{SITENAME}} ప్రకటన మెయిలు పంపునది',
 'enotif_reset' => 'అన్ని పేజీలను చూసినట్లుగా గుర్తించు',
 'enotif_impersonal_salutation' => '{{SITENAME}} వాడుకరి',
+'enotif_subject_deleted' => '{{SITENAME}} $1 పేజీని $2 {{GENDER:$2|తొలగించారు}}',
+'enotif_subject_created' => '{{SITENAME}} $1 పేజీని $2 {{GENDER:$2|సృష్టించారు}}',
+'enotif_subject_moved' => '{{SITENAME}} $1 పేజీని $2 {{GENDER:$2|తరలించారు}}',
+'enotif_subject_restored' => '{{SITENAME}} $1 పేజీని $2 {{GENDER:$2|పునస్థాపించారు}}',
+'enotif_subject_changed' => '{{SITENAME}} $1 పేజీని $2 {{GENDER:$2|మార్చారు}}',
+'enotif_body_intro_deleted' => '{{SITENAME}} $1 పేజీని $PAGEEDITDATE న $2 {{GENDER:$2|తొలగించారు}}, $3 చూడండి.',
+'enotif_body_intro_created' => '{{SITENAME}} $1 పేజీని $PAGEEDITDATE న $2 {{GENDER:$2|సృష్టించారు}}, ప్రస్తుత కూర్పు కోసం $3 చూడండి.',
+'enotif_body_intro_moved' => '{{SITENAME}} $1 పేజీని $PAGEEDITDATE న $2 {{GENDER:$2|తరలించారు}}, ప్రస్తుత కూర్పు కోసం $3 చూడండి.',
+'enotif_body_intro_restored' => '{{SITENAME}} $1 పేజీని $PAGEEDITDATE న $2 {{GENDER:$2|పునస్థాపించారు}}, ప్రస్తుత కూర్పు కోసం $3 చూడండి.',
+'enotif_body_intro_changed' => '{{SITENAME}} $1 పేజీని $PAGEEDITDATE న $2 {{GENDER:$2|మార్చారు}}, ప్రస్తుత కూర్పు కోసం $3 చూడండి.',
 'enotif_lastvisited' => 'మీ గత సందర్శన తరువాత జరిగిన మార్పుల కొరకు $1 చూడండి.',
 'enotif_lastdiff' => 'ఈ మార్పు చూసేందుకు  $1 కు వెళ్ళండి.',
 'enotif_anon_editor' => 'అజ్ఞాత వాడుకరి $1',
@@ -2120,12 +2184,15 @@ $UNWATCHURL కి వెళ్ళండి.
 'deleteotherreason' => 'ఇతర/అదనపు కారణం:',
 'deletereasonotherlist' => 'ఇతర కారణం',
 'deletereason-dropdown' => '* తొలగింపుకి సాధారణ కారణాలు
-** రచయిత అభ్యర్థన
+** స్పాము
+** దుశ్చర్య
 ** కాపీహక్కుల ఉల్లంఘన
-** దుశ్చర్య',
+** రచయిత అభ్యర్థన
+** తెగిపోయిన దారిమార్పు',
 'delete-edit-reasonlist' => 'తొలగింపు కారణాలని మార్చండి',
 'delete-toobig' => 'ఈ పేజీకి $1 {{PLURAL:$1|కూర్పుకు|కూర్పులకు}} మించిన, చాలా పెద్ద దిద్దుబాటు చరితం ఉంది. {{SITENAME}}కు అడ్డంకులు కలగడాన్ని నివారించేందుకు గాను, అలాంటి పెద్ద పేజీల తొలగింపును నియంత్రించాం.',
 'delete-warning-toobig' => 'ఈ పేజీకి $1 {{PLURAL:$1|కూర్పుకు|కూర్పులకు}} మించిన, చాలా పెద్ద దిద్దుబాటు చరితం ఉంది. దాన్ని తొలగిస్తే {{SITENAME}}కి చెందిన డేటాబేసు కార్యాలకు ఆటంకం కలగొచ్చు; అప్రమత్తతో ముందుకుసాగండి.',
+'deleting-backlinks-warning' => "'''హెచ్చరిక:''' మీరు తొలగించబోతున్న పేజీకి ఇతర పేజీల నుండి లింకులు ఉన్నాయి.",
 
 # Rollback
 'rollback' => 'దిద్దుబాట్లను రద్దుచేయి',
@@ -2161,7 +2228,9 @@ $UNWATCHURL కి వెళ్ళండి.
 'protect-title' => '"$1" యొక్క సంరక్షణ స్థాయి అమర్పు',
 'protect-title-notallowed' => '"$1" యొక్క సంరక్షణ స్థాయి',
 'prot_1movedto2' => '$1, $2కు తరలించబడింది',
+'protect-badnamespace-title' => 'సంరక్షించజాలని పేరుబరి',
 'protect-badnamespace-text' => 'ఈ పేరుబరిలో ఉన్న పేజీలను సంరక్షించలేరు.',
+'protect-norestrictiontypes-title' => 'సంరక్షించజాలని పేజీ',
 'protect-legend' => 'సంరక్షణను నిర్ధారించు',
 'protectcomment' => 'కారణం:',
 'protectexpiry' => 'గడువు:',
@@ -2264,6 +2333,7 @@ $1',
 # Namespace form on various pages
 'namespace' => 'పేరుబరి:',
 'invert' => 'ఎంపికను తిరగవెయ్యి',
+'tooltip-invert' => 'ఎంచుకున్న పేరుబరి (చెక్ చేసి ఉంటే అనుబంధ పేరుబరి కూడా) లోని పేజీల్లో జరిగిన మార్పులను దాచేందుకు ఈ పెట్టెను చెక్ చెయ్యండి',
 'namespace_association' => 'సంబంధిత పేరుబరి',
 'blanknamespace' => '(మొదటి)',
 
@@ -2448,6 +2518,7 @@ $1',
 'unlockdbsuccesstext' => 'డాటాబేసుకి తాళం తీసాం.',
 'lockfilenotwritable' => 'డేటాబేసుకు తాళంవేయగల ఫైలులో రాయలేకపోతున్నాను.  డేటాబేసుకు తాళంవేయటానికిగానీ లేదా తీసేయటానికిగానీ, వెబ్‌సర్వరులో ఉన్న ఈ ఫైలులో రాయగలగాలి.',
 'databasenotlocked' => 'డేటాబేసు లాకవలేదు.',
+'lockedbyandtime' => '($2 న $3 వద్ద {{GENDER:$1|$1}} ద్వారా)',
 
 # Move page
 'move-page' => '$1 తరలింపు',
index 0f15e93..1c55f47 100644 (file)
@@ -743,13 +743,11 @@ Ita-nia mudansa la armazenadu seidauk!",
 'ipadressorusername' => "Diresaun IP ka naran uza-na'in:",
 'ipbexpiry' => 'Tempu:',
 'ipbreason' => 'Motivu:',
-'ipbreasonotherlist' => 'Motivu seluk',
 'ipbcreateaccount' => 'La bele kria konta foun',
 'ipbemailban' => 'La bele haruka korreiu eletróniku',
 'ipbsubmit' => "Blokeiu uza-na'in ne'e",
 'ipbother' => 'Tempu seluk:',
 'ipboptions' => '2 hours:2 hours,1 loron:1 day,3 Loron:3 days,1 semana:1 week,2 semana:2 weeks,1 fulan:1 month,3 fulan:3 months,6 fulan:6 months,1 tinan:1 year,infinite:infinite',
-'ipbotheroption' => 'seluk',
 'ipbhidename' => "Subar naran uza-na'in (iha kontribuisaun no lista seluk)",
 'ipbwatchuser' => "Hateke pájina uza-na'in nian (hamutuk ho pájina diskusaun)",
 'ipb-disableusertalk' => 'La bele edita ninia pájina diskusaun',
@@ -908,7 +906,6 @@ Ligasaun seluk iha liña - ne'e pájina sira iha ne'ebé bele inklui imajen aat.
 'watchlistall2' => 'hotu',
 'namespacesall' => 'hotu',
 'monthsall' => 'hotu',
-'limitall' => 'hotu',
 
 # action=purge
 'confirm_purge_button' => 'OK',
index 952f7cc..950bc05 100644 (file)
@@ -411,7 +411,7 @@ $messages = array(
 'articlepage' => 'ดูหน้าเนื้อหา',
 'talk' => 'อภิปราย',
 'views' => 'ดู',
-'toolbox' => 'à¸\81ลà¹\88อà¸\87à¹\80à¸\84รืà¹\88อà¸\87มือ',
+'toolbox' => 'เครื่องมือ',
 'userpage' => 'ดูหน้าผู้ใช้',
 'projectpage' => 'ดูหน้าโครงการ',
 'imagepage' => 'ดูหน้าไฟล์',
@@ -588,7 +588,8 @@ $1',
 'invalidtitle-knownnamespace' => 'ชื่อเรื่องที่มีเนมสเปซ "$2" กับข้อความ "$3" ไม่ถูกต้อง',
 'invalidtitle-unknownnamespace' => 'ชื่อเรื่องที่ไม่ทราบเนมสเปซหมายเลข $1 กับข้อความ "$2" ไม่ถูกต้อง',
 'exception-nologin' => 'ไม่ได้ล็อกอิน',
-'exception-nologin-text' => 'หน้าหรือปฏิบัติการนี้กำหนดให้คุณต้องล็อกอินเข้าสู่วิกินี้ก่อน',
+'exception-nologin-text' => 'โปรด[[Special:Userlogin|ล็อกอิน]]เพื่อสามารถเข้าถึงหน้าหรือปฏิบัติการนี้',
+'exception-nologin-text-manual' => 'โปรด$1เพื่อสามารถเข้าถึงหน้าหรือปฏิบัติการนี้',
 
 # Virus scanner
 'virus-badscanner' => "โครงแบบผิดพลาด: ไม่รู้จักตัวสแกนไวรัส: ''$1''",
@@ -635,7 +636,7 @@ $1',
 'gotaccount' => "มีบัญชีแล้วใช่ไหม '''$1'''",
 'gotaccountlink' => 'ล็อกอิน',
 'userlogin-resetlink' => 'ลืมรายละเอียดล็อกอินของคุณหรือ',
-'userlogin-resetpassword-link' => 'à¸\95ัà¹\89à¸\87รหัสà¸\9cà¹\88าà¸\99à¹\83หมà¹\88',
+'userlogin-resetpassword-link' => 'ลืมรหัสà¸\9cà¹\88าà¸\99หรือ',
 'helplogin-url' => 'Help:การล็อกอิน',
 'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|คำอธิบายเรื่องการล็อกอิน]]',
 'userlogin-loggedin' => 'คุณล็อกอินในชื่อ {{GENDER:$1|$1}} แล้ว
@@ -683,7 +684,7 @@ $1',
 'passwordtooshort' => 'รหัสผ่านต้องมีความยาวอย่างน้อย $1 อักขระ',
 'password-name-match' => 'รหัสผ่านต้องต่างจากชื่อผู้ใช้',
 'password-login-forbidden' => 'ห้ามใช้ชื่อผู้ใช้และรหัสผ่านนี้',
-'mailmypassword' => 'อีà¹\80มลรหัสผ่านใหม่',
+'mailmypassword' => 'à¸\95ัà¹\89à¸\87รหัสผ่านใหม่',
 'passwordremindertitle' => 'รหัสผ่านชั่วคราวใหม่สำหรับ {{SITENAME}}',
 'passwordremindertext' => 'ผู้ใดผู้หนึ่ง (ซึ่งอาจเป็นคุณ ที่ใช้เลขที่อยู่ไอพี $1) ขอให้ส่งรหัสผ่านใหม่ของ {{SITENAME}} ($4) รหัสผ่านชั่วคราวสำหรับชื่อผู้ใช้ "$2" ถูกสร้างขึ้น และกำหนดเป็น "$3" หากการขอรหัสผ่านใหม่นี้เป็นเจตนาของคุณ คุณจำต้องล็อกอินและเลือกรหัสผ่านใหม่ ณ ขณะนี้ รหัสผ่านชั่วคราวของคุณจะหมดอายุใน $5 วัน
 
@@ -701,7 +702,7 @@ $1',
 จึงส่งผลให้ผู้เข้าชมที่ใช้เลขที่อยู่ไอพีนี้ ไม่สามารถสร้างบัญชีได้อีกในขณะนี้',
 'emailauthenticated' => 'ที่อยู่อีเมลของคุณได้รับการยืนยันเมื่อวันที่ $2 เวลา $3',
 'emailnotauthenticated' => 'ที่อยู่อีเมลของคุณยังไม่ได้รับการยืนยัน 
-ไม่มีการส่งอีเมลสำหรับคุณลักษณะใด ๆ ต่อไปนี้',
¸\88ะà¹\84มà¹\88มีà¸\81ารสà¹\88à¸\87อีà¹\80มลสำหรัà¸\9aà¸\84ุà¸\93ลัà¸\81ษà¸\93ะà¹\83à¸\94 à¹\86 à¸\95à¹\88อà¹\84à¸\9bà¸\99ีà¹\89',
 'noemailprefs' => 'ระบุที่อยู่อีเมลในการตั้งค่าของคุณเพื่อให้คุณลักษณะเหล่านี้ทำงานได้',
 'emailconfirmlink' => 'ยืนยันที่อยู่อีเมลของคุณ',
 'invalidemailaddress' => 'ไม่สามารถรับที่อยู่อีเมลได้ เพราะดูมีรูปแบบไม่ถูกต้อง
@@ -750,7 +751,7 @@ $1',
 # Special:PasswordReset
 'passwordreset' => 'ตั้งรหัสผ่านใหม่',
 'passwordreset-text-one' => 'กรอกแบบนี้เพื่อตั้งรหัสผ่านใหม่',
-'passwordreset-text-many' => '{{PLURAL:$1|à¸\81รอà¸\81à¹\80à¸\82à¸\95à¸\82à¹\89อมูลหà¸\99ึà¹\88à¸\87à¹\80à¸\9eืà¹\88อà¸\95ัà¹\89à¸\87รหัสà¸\9cà¹\88าà¸\99à¹\83หมà¹\88}}',
+'passwordreset-text-many' => '{{PLURAL:$1|à¸\81รอà¸\81à¹\80à¸\82à¸\95à¸\82à¹\89อมูลหà¸\99ึà¹\88à¸\87à¹\80à¸\9eืà¹\88อรัà¸\9aรหัสà¸\9cà¹\88าà¸\99à¸\8aัà¹\88วà¸\84ราวà¸\97าà¸\87อีà¹\80มล}}',
 'passwordreset-legend' => 'เปลี่ยนรหัสผ่าน',
 'passwordreset-disabled' => 'การตั้งรหัสผ่านใหม่ปิดใช้งานบนวิกินี้',
 'passwordreset-emaildisabled' => 'คุณลักษณะอีเมลถูกปิดใช้งานบนวิกินี้',
@@ -1035,6 +1036,9 @@ $2
 'cantcreateaccount-text' => "การสร้างบัญชีใหม่จากที่อยู่ไอพีนี้ ('''$1''') ถูกระงับโดย [[User:$3|$3]]
 
 เหตุผลที่ $3 ให้ไว้ คือ ''$2''",
+'cantcreateaccount-range-text' => "การสร้างบัญชีจากเลขที่อยู่ไอพีในช่วง '''$1''' ซึ่งรวมเลขที่อยู่ไอพีของคุณ ('''$4''') ถูกบล็อกโดย [[User:$3|$3]] 
+
+เหตุผลที่ $3 ชี้แจง คือ ''$2''",
 
 # History pages
 'viewpagelogs' => 'ดูปูมของหน้านี้',
@@ -1111,20 +1115,20 @@ $2
 'revdelete-text' => "'''รุ่นการปรับปรุงและเหตุการณ์ที่ถูกลบยังปรากฏในประวัติและปูมของหน้า แต่สาธารณะไม่สามารถเข้าถึงเนื้อหาบางส่วนได้'''
 ผู้ดูแลระบบคนอื่นบน {{SITENAME}} ยังสามารถเข้าถึงเนื้อหาที่ถูกซ่อน และสามารถกู้คืนอีกครั้งในลักษณะเดิมเช่นนี้ เว้นแต่จะมีการกำหนดการจำกัดเพิ่มเติม",
 'revdelete-confirm' => 'กรุณายืนยันว่าคุณมีเจตนาลบจริง และเข้าใจผลลัพธ์ และกระทำภายใต้[[{{MediaWiki:Policy-url}}|นโยบาย]]',
-'revdelete-suppress-text' => "การระงับควรใช้ '''เฉพาะ''' กรณีต่อไปนี้:
+'revdelete-suppress-text' => "การระงับควรใช้'''เฉพาะ'''กรณีต่อไปนี้:
 * ข้อมูลที่อาจหมิ่นประมาท
 * ข้อมูลส่วนบุคคลที่ไม่เหมาะสม
 *: ''ที่อยู่บ้านและหมายเลขโทรศัพท์บ้าน, หมายเลขประกันสังคม, ฯลฯ''",
 'revdelete-legend' => 'ตั้งการจำกัดทัศนวิสัย:',
-'revdelete-hide-text' => 'à¸\8bà¹\88อà¸\99à¸\82à¹\89อà¸\84วามรุà¹\88à¸\99',
+'revdelete-hide-text' => 'ข้อความรุ่น',
 'revdelete-hide-image' => 'ซ่อนเนื้อหาไฟล์',
 'revdelete-hide-name' => 'ซ่อนปฏิบัติการและเป้าหมาย',
-'revdelete-hide-comment' => 'à¸\8bà¹\88อà¸\99à¸\84ำอà¸\98ิà¸\9aายอยà¹\88าà¸\87ยà¹\88อ',
-'revdelete-hide-user' => 'à¸\8bà¹\88อà¸\99à¸\8aืà¹\88อà¸\9cูà¹\89à¹\83à¸\8aà¹\89/à¹\80ลà¸\82à¸\97ีà¹\88อยูà¹\88à¹\84อà¸\9eีà¸\9cูà¹\89à¹\80à¸\82ียà¸\99',
+'revdelete-hide-comment' => 'คำอธิบายอย่างย่อ',
+'revdelete-hide-user' => 'ชื่อผู้ใช้/เลขที่อยู่ไอพีผู้เขียน',
 'revdelete-hide-restricted' => 'ระงับข้อมูลจากผู้ดูแลระบบเช่นเดียวกับผู้ใช้อื่น',
 'revdelete-radio-same' => '(ไม่เปลี่ยนแปลง)',
-'revdelete-radio-set' => 'à¹\83à¸\8aà¹\88',
-'revdelete-radio-unset' => 'à¹\84มà¹\88',
+'revdelete-radio-set' => 'à¸\8bà¹\88อà¸\99',
+'revdelete-radio-unset' => 'à¹\80à¸\9bิà¸\94à¹\80à¸\9cย',
 'revdelete-suppress' => 'ซ่อนข้อมูลจากผู้ดูแลระบบเช่นเดียวกับผู้ใช้อื่น',
 'revdelete-unsuppress' => 'ลบการจำกัดสำหรับรุ่นที่กู้คืน',
 'revdelete-log' => 'เหตุผล:',
@@ -1266,6 +1270,7 @@ $1",
 'preferences' => 'ตั้งค่าส่วนตัว',
 'mypreferences' => 'การตั้งค่า',
 'prefs-edits' => 'จำนวนการแก้ไข:',
+'prefsnologintext2' => 'โปรด$1เพื่อเปลี่ยนการตั้งค่าของคุณ',
 'prefs-skin' => 'หน้าตา',
 'skin-preview' => 'แสดงตัวอย่าง',
 'datedefault' => 'ค่าตั้งต้น',
@@ -1560,12 +1565,13 @@ $1",
 'recentchanges-label-bot' => 'การแก้ไขนี้กระทำโดยบอต',
 'recentchanges-label-unpatrolled' => 'การแก้ไขนี้ยังไม่ได้ตรวจสอบ',
 'recentchanges-label-plusminus' => 'ขนาดของหน้าเปลี่ยนไปด้วยจำนวนไบต์เท่านี้',
+'recentchanges-legend-heading' => "'''คำอธิบายสัญลักษณ์:'''",
 'recentchanges-legend-newpage' => '(ดูเพิ่มที่[[Special:NewPages|รายชื่อหน้าใหม่]])',
 'rcnotefrom' => "ด้านล่างเป็นการเปลี่ยนแปลงตั้งแต่ '''$2''' (มากสุด '''$1''' รายการ)",
 'rclistfrom' => 'แสดงการเปลี่ยนแปลงใหม่เริ่มตั้งแต่ $1',
 'rcshowhideminor' => '$1การแก้ไขเล็กน้อย',
 'rcshowhidebots' => '$1บอต',
-'rcshowhideliu' => '$1à¸\9cูà¹\89à¹\83à¸\8aà¹\89ลà¹\87อà¸\81อิน',
+'rcshowhideliu' => '$1à¸\9cูà¹\89à¹\83à¸\8aà¹\89ลà¸\87à¸\97ะà¹\80à¸\9aียน',
 'rcshowhideanons' => '$1ผู้ใช้นิรนาม',
 'rcshowhidepatr' => '$1การแก้ไขที่ตรวจสอบแล้ว',
 'rcshowhidemine' => '$1การแก้ไขของฉัน',
@@ -3034,7 +3040,7 @@ $1',
 'file-nohires' => 'ไม่มีความละเอียดสูงกว่านี้',
 'svg-long-desc' => 'ไฟล์ SVG, $1 × $2 พิกเซล พอเป็นพิธี, ขนาดไฟล์: $3',
 'svg-long-error' => 'ไฟล์ SVG ไม่ถูกต้อง: $1',
-'show-big-image' => 'à¸\84วามละà¹\80อียà¸\94สูà¸\87สุà¸\94',
+'show-big-image' => 'à¹\84à¸\9fลà¹\8cà¸\95à¹\89à¸\99à¸\89à¸\9aัà¸\9a',
 'show-big-image-other' => 'อื่นๆ {{PLURAL:$2|resolution|resolutions}}: $1.',
 'show-big-image-size' => '$1 × $2 พิกเซล',
 'file-info-gif-looped' => 'วนซ้ำ',
@@ -3489,6 +3495,9 @@ $5
 'confirm-unwatch-button' => 'ตกลง',
 'confirm-unwatch-top' => 'ลบหน้านี้ออกจากรายการเฝ้าดูของคุณ',
 
+# Separators for various lists, etc.
+'quotation-marks' => '"$1"',
+
 # Multipage image navigation
 'imgmultipageprev' => '← หน้าก่อนหน้า',
 'imgmultipagenext' => 'หน้าถัดไป →',
@@ -3610,13 +3619,14 @@ $5
 'version-entrypoints-scriptpath' => '[https://www.mediawiki.org/wiki/Manual:$wgScriptPath เส้นทางสคริปต์]',
 
 # Special:Redirect
-'redirect' => 'การเปลี่ยนทางตามชื่อไฟล์ รหัสประจำผู้ใช้หรือรุ่น',
+'redirect' => 'การเปลี่ยนทางตามชื่อไฟล์ รหัสประจำผู้ใช้ หน้าหรือรุ่น',
 'redirect-legend' => 'การเปลี่ยนทางไปยังไฟล์หรือหน้า',
 'redirect-summary' => 'หน้าพิเศษนี้เปลี่ยนทางไปยังไฟล์ (ระบุเป็นชื่อไฟล์) หน้า (ระบุเป็นรหัสรุ่น) หรือหน้าผู้ใช้ (ระบุเป็นรหัสผู้ใช้)',
 'redirect-submit' => 'ไป',
 'redirect-lookup' => 'ค้นดู:',
 'redirect-value' => 'ค่า:',
 'redirect-user' => 'รหัสผู้ใช้',
+'redirect-page' => 'รหัสประจำหน้า',
 'redirect-revision' => 'รุ่นหน้า',
 'redirect-file' => 'ชื่อไฟล์',
 'redirect-not-exists' => 'ไม่พบค่า',
@@ -3634,6 +3644,7 @@ $5
 
 # Special:SpecialPages
 'specialpages' => 'หน้าพิเศษ',
+'specialpages-note-top' => 'คำอธิบายสัญลักษณ์',
 'specialpages-note' => '* หน้าพิเศษปกติ
 * <span class="mw-specialpagerestricted">หน้าพิเศษที่ถูกจำกัด</span>',
 'specialpages-group-maintenance' => 'รายงานการเก็บกวาด',
@@ -3673,7 +3684,10 @@ $5
 'tags-tag' => 'ชื่อป้ายกำกับ',
 'tags-display-header' => 'สิ่งที่แสดงในรายการการเปลี่ยนแปลง',
 'tags-description-header' => 'คำอธิบายความหมายโดยละเอียด',
+'tags-active-header' => 'เปิดใช้งานหรือไม่',
 'tags-hitcount-header' => 'การเปลี่ยนแปลงที่มีป้ายนี้กำกับ',
+'tags-active-yes' => 'ใช่',
+'tags-active-no' => 'ไม่',
 'tags-edit' => 'แก้ไข',
 'tags-hitcount' => '$1 การเปลี่ยนแปลง',
 
@@ -3693,6 +3707,7 @@ $5
 'dberr-problems' => 'ขออภัย เว็บไซต์นี้กำลังพบกับข้อผิดพลาดทางเทคนิค',
 'dberr-again' => 'กรุณารอสักครู่แล้วจึงโหลดใหม่',
 'dberr-info' => '(ไม่สามารถติดต่อเซิร์ฟเวอร์ฐานข้อมูลได้: $1)',
+'dberr-info-hidden' => '(ไม่สามารถติดต่อเซิร์ฟเวอร์ฐานข้อมูล)',
 'dberr-usegoogle' => 'คุณสามารถลองสืบค้นผ่านกูเกิลในระหว่างนี้',
 'dberr-outofdate' => 'โปรดทราบว่าดัชนีเนื้อหาของเราในกูเกิลอาจล้าสมัยแล้ว',
 'dberr-cachederror' => 'นี่คือข้อมูลคัดลอกชั่วคราวของหน้าที่ร้องขอ และอาจไม่เป็นปัจจุบัน',
@@ -3710,6 +3725,7 @@ $5
 'htmlform-selectorother-other' => 'อื่น ๆ',
 'htmlform-no' => 'ไม่',
 'htmlform-yes' => 'ใช่',
+'htmlform-chosen-placeholder' => 'เลือกตัวเลือก',
 
 # SQLite database support
 'sqlite-has-fts' => 'รุ่น $1 พร้อมการสนับสนุนการค้นหาข้อความแบบเต็ม',
index c674be7..c8ce60f 100644 (file)
@@ -12,6 +12,7 @@
  * @author BetelgeuSeginus
  * @author Bilalokms
  * @author Bombola
+ * @author Cagrix
  * @author Cekli829
  * @author Coolland
  * @author Dbl2010
@@ -483,17 +484,17 @@ $messages = array(
 'hidden-category-category' => 'Gizli kategoriler',
 'category-subcat-count' => '{{PLURAL:$2|Bu kategori sadece aşağıdaki alt kategoriyi içermektedir.|Bu kategoride aşağıdaki {{PLURAL:$1|alt kategori|$1 alt kategorisi}} dahil $2 alt kategorisi vardır.}}',
 'category-subcat-count-limited' => 'Bu kategori aşağıdaki {{PLURAL:$1|alt kategoriye|$1 alt kategoriye}} sahiptir.',
-'category-article-count' => '{{PLURAL:$2|Bu kategori sadece aşağıdaki sayfayı içermektedir.|Toplam $2 taneden, aşağıdaki {{PLURAL:$1|sayfa|$1 sayfa}} bu kategoridedir.}}',
-'category-article-count-limited' => 'Bu kategoride {{PLURAL:$1|sayfa|$1 sayfa}} bulunmaktadır.',
-'category-file-count' => '{{PLURAL:$2|Bu kategori sadece aşağıdaki dosyayı içerir.|Toplam $2 taneden, aşağıdaki {{PLURAL:$1|dosya|$1 dosya}} bu kategoridedir.}}',
-'category-file-count-limited' => 'Aşağıdaki {{PLURAL:$1|dosya|$1 dosya}} mevcut kategoridedir.',
+'category-article-count' => '{{PLURAL:$2|Bu kategori sadece aşağıdaki sayfayı içermektedir.|Toplam $2 taneden, aşağıdaki {{PLURAL:$1|sayfa|$1 sayfalar}} bu kategoridedir.}}',
+'category-article-count-limited' => 'Bu kategoride {{PLURAL:$1|sayfa|$1 sayfalar}} bulunmaktadır.',
+'category-file-count' => '{{PLURAL:$2|Bu kategori sadece aşağıdaki dosyayı içerir.|Toplam $2 taneden, aşağıdaki {{PLURAL:$1|dosya|$1 dosyalar}} bu kategoridedir.}}',
+'category-file-count-limited' => 'Aşağıdaki {{PLURAL:$1|dosya|$1 dosyalar}} mevcut kategoridedir.',
 'listingcontinuesabbrev' => '(devam)',
 'index-category' => 'Dizinli sayfalar',
 'noindex-category' => 'Dizinli olmayan sayfalar',
 'broken-file-category' => 'Bozuk dosya bağlantıları içeren sayfalar',
 
 'about' => 'Hakkında',
-'article' => 'Madde',
+'article' => 'İçerik sayfası',
 'newwindow' => '(yeni bir pencerede açılır)',
 'cancel' => 'İptal',
 'moredotdotdot' => 'Daha...',
@@ -609,9 +610,9 @@ $1',
 'helppage' => 'Help:İçindekiler',
 'mainpage' => 'Ana Sayfa',
 'mainpage-description' => 'Ana sayfa',
-'policy-url' => 'Project:Politika',
+'policy-url' => 'Project:İlkeler',
 'portal' => 'Topluluk portalı',
-'portal-url' => 'Project:Topluluk portalı',
+'portal-url' => 'Project:Topluluk portali',
 'privacy' => 'Gizlilik ilkesi',
 'privacypage' => 'Project:Gizlilik ilkesi',
 
@@ -625,7 +626,7 @@ $1',
 'ok' => 'Tamam',
 'pagetitle-view-mainpage' => '{{SITENAME}}',
 'retrievedfrom' => '"$1" adresinden alındı.',
-'youhavenewmessages' => 'Yeni $1 var ($2).',
+'youhavenewmessages' => '$1 {{PLURAL:$3|var}} ($2).',
 'youhavenewmessagesfromusers' => '{{PLURAL:$3|Başka bir kullanıcıdan|$3 kullanıcıdan}} $1 var ($2).',
 'youhavenewmessagesmanyusers' => 'Birçok kullanıcıdan $1 var ($2).',
 'newmessageslinkplural' => '{{PLURAL:$1|yeni mesajınız|yeni mesajlarınız}}',
@@ -1220,6 +1221,9 @@ Bu değişkenler atlandı.",
 'cantcreateaccount-text' => "Bu IP adresinden ('''$1''') kullanıcı hesabı oluşturulması [[User:$3|$3]] tarafından engellenmiştir.
 
 $3 tarafından verilen sebep ''$2''",
+'cantcreateaccount-range-text' => "'''$1''' aralığındaki IP'ler için hesap oluşturma [[User:$3|$3]] tarafından engellendi, bu sizin IP adresinizi de ('''$4''') içeriyor.
+
+$3 tarafından verilen gerekçe ''$2''",
 
 # History pages
 'viewpagelogs' => 'Bu sayfa ile ilgili kayıtları göster',
@@ -1745,10 +1749,11 @@ Diğer kullanıcılar sizinle bu yolla iletişime geçtiğinde e-posta adresiniz
 'recentchanges-noresult' => 'Belirtilen kriterlere uyan herhangi bir değişiklik bulunamadı.',
 'recentchanges-feed-description' => "Bu beslemede, viki'de yapılan en son değişiklikleri takip edin.",
 'recentchanges-label-newpage' => 'Bu değişiklikle yeni bir sayfa oluşturuldu',
-'recentchanges-label-minor' => 'Bu bir küçük değişiklik',
-'recentchanges-label-bot' => 'Bu değişiklik bir bot tarafından yapıldı',
+'recentchanges-label-minor' => 'Küçük değişiklik',
+'recentchanges-label-bot' => 'Bir bot tarafından yapılan değişiklik',
 'recentchanges-label-unpatrolled' => 'Bu değişiklik henüz gözlenmemiş',
 'recentchanges-label-plusminus' => 'Sayfa boyutundaki değişikliğin bayt bazında değeri',
+'recentchanges-legend-heading' => "'''Gösterge:'''",
 'recentchanges-legend-newpage' => '(ayrıca bakınız [[Special:NewPages|yeni sayfalar listesi]])',
 'rcnotefrom' => "'''$2''' tarihinden itibaren yapılan değişiklikler aşağıdadır (en fazla <b>$1</b> tanesi gösterilmektedir).",
 'rclistfrom' => '$1 tarihinden itibaren yeni değişiklikleri göster',
@@ -2526,6 +2531,7 @@ Böyle sayfaların silinmesi, {{SITENAME}} sitesini bozmamak için sınırlanmak
 'delete-warning-toobig' => 'Bu sayfanın büyük bir değişiklik geçmişi var, $1 {{PLURAL:$1|revizyonun|revizyonun}} üzerinde.
 Bunu silmek {{SITENAME}} işlemlerini aksatabilir;
 dikkatle devam edin.',
+'deleting-backlinks-warning' => "'''Uyarı:''' Silmek üzere olduğunuz sayfaya başka sayfalardan bağlantılar var.",
 
 # Rollback
 'rollback' => 'değişiklikleri geri al',
@@ -3879,7 +3885,7 @@ Sayfayı baştan açmak isityorsanız, lütfen onaylayın.",
 
 # Language selector for translatable SVGs
 'img-lang-default' => '(varsayılan dil)',
-'img-lang-info' => 'Bu resmi $1 ile işle $2.',
+'img-lang-info' => 'Bu resmi $1 ile işle. $2',
 'img-lang-go' => 'Gönder',
 
 # Table pager
@@ -3984,13 +3990,14 @@ Bu programla birlikte [{{SERVER}}{{SCRIPTPATH}}/COPYING GNU Genel Kamu Lisansın
 'version-entrypoints-header-url' => 'URL',
 
 # Special:Redirect
-'redirect' => 'Dosya, kullanıcı veya sayfa ID yönlendirme',
+'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 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}}/revision/328429]], ya da  [[{{#Special:Redirect}}/user/101]].",
+'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:',
 'redirect-value' => 'Değer:',
 'redirect-user' => 'Kullanıcı kimliği',
+'redirect-page' => 'Sayfa kimliği',
 'redirect-revision' => 'Sayfa revizyonu',
 'redirect-file' => 'Dosya adı',
 'redirect-not-exists' => 'Değer bulunamadı',
@@ -4230,10 +4237,12 @@ Aslında, çift ayraçlı hemen hemen her şeyi genişletir.',
 'expand_templates_input' => 'Giriş metni:',
 'expand_templates_output' => 'Sonuç',
 'expand_templates_xml_output' => 'XML üretim',
+'expand_templates_html_output' => 'Ham HTML çıktısı',
 'expand_templates_ok' => 'Tamam',
 'expand_templates_remove_comments' => 'Yorumları sil',
 'expand_templates_remove_nowiki' => 'Sonuçlarda <nowiki> etiketlerini bastır',
 'expand_templates_generate_xml' => 'XML derleyici ağacını göster',
+'expand_templates_generate_rawhtml' => 'Ham HTML göster',
 'expand_templates_preview' => 'Önizleme',
 
 );
index 106179b..acf53f5 100644 (file)
@@ -330,12 +330,12 @@ $messages = array(
 'december-date' => '$1 Декабрь',
 
 # Categories related messages
-'pagecategories' => '{{PLURAL:$1|Төркем|Төркемнәр}}',
+'pagecategories' => '{{PLURAL:$1|1=Төркем|Төркемнәр}}',
 'category_header' => '«$1» төркемендәге битләр',
 'subcategories' => 'Төркемчәләр',
 'category-media-header' => '«$1» төркемендәге файллар',
 'category-empty' => "''Бу төркем әлегә буш.''",
-'hidden-categories' => '{{PLURAL:$1|Яшерен төркем|Яшерен төркемнәр}}',
+'hidden-categories' => '{{PLURAL:$1|1=Яшерен төркем|Яшерен төркемнәр}}',
 'hidden-category-category' => 'Яшерен төркемнәр',
 'category-subcat-count' => '{{PLURAL:$2|Бу төркемдә түбәндәге төркемчә генә бар.|$2 төркемчәдән {{PLURAL:$1|$1 төркемчә күрсәтелгән}}.}}',
 'category-subcat-count-limited' => 'Бу төркемдә {{PLURAL:$1|$1 төркемчә}} бар.',
@@ -409,7 +409,7 @@ $messages = array(
 'deletethispage' => 'Бу битне бетерү',
 'undeletethispage' => 'Бу битне кайтарырга',
 'undelete_short' => '$1 {{PLURAL:$1|үзгәртмәне}} торгызу',
-'viewdeleted_short' => '{{PLURAL:$1|1 бетерелгән үзгәртүне|$1 бетерелгән үзгәртүне}} карау',
+'viewdeleted_short' => '{{PLURAL:$1|1=1 бетерелгән үзгәртүне|$1 бетерелгән үзгәртүне}} карау',
 'protect' => 'Яклау',
 'protect_change' => 'үзгәртү',
 'protectthispage' => 'Бу битне яклау',
@@ -472,7 +472,7 @@ $1',
 
 'badaccess' => 'Керү хатасы',
 'badaccess-group0' => 'Сез сораган гамәлне башкара алмыйсыз.',
-'badaccess-groups' => 'Соралган гамәлне $1 {{PLURAL:$2|төркеменең|төркеменең}} кулланучылары гына башкара ала.',
+'badaccess-groups' => 'Соралган гамәлне $1 {{PLURAL:$2|1=төркеменең|төркеменең}} кулланучылары гына башкара ала.',
 
 'versionrequired' => 'MediaWikiның $1 версиясе таләп ителә',
 'versionrequiredtext' => 'Бу бит белән эшләү өчен MediaWikiның $1 версиясе кирәк. [[Special:Version|Кулланылучы программа версиясе турында мәгълүмат битен]] кара.',
@@ -485,7 +485,7 @@ $1',
 'youhavenewmessagesfromusers' => 'Сезгә {{PLURAL:$3|$3 кулланучыдан}} $1 килде ($2).',
 'youhavenewmessagesmanyusers' => 'Сез бик күп кулланучыдан $1 алдыгыз ($2).',
 'newmessageslinkplural' => '{{PLURAL:$1|яңа хәбәр}}',
-'newmessagesdifflinkplural' => '{{PLURAL:$1|соңгы үзгәртү|соңгы үзгәртүләр}}',
+'newmessagesdifflinkplural' => '{{PLURAL:$1|1=соңгы үзгәртү|соңгы үзгәртүләр}}',
 'youhavenewmessagesmulti' => 'Сезгә монда яңа хәбәрләр бар: $1',
 'editsection' => 'үзгәртү',
 'editold' => 'үзгәртү',
@@ -500,7 +500,7 @@ $1',
 'collapsible-expand' => 'Ачу',
 'thisisdeleted' => '$1 карарга яки торгызырга телисезме?',
 'viewdeleted' => '$1 карарга телисезме?',
-'restorelink' => '{{PLURAL:$1|1 бетерелгән үзгәртүне|$1 бетерелгән үзгәртүне}}',
+'restorelink' => '{{PLURAL:$1|1=1 бетерелгән үзгәртүне|$1 бетерелгән үзгәртүне}}',
 'feedlinks' => 'Шушылай:',
 'feed-invalid' => 'Язылу каналы тибы ялгыш',
 'feed-unavailable' => 'Синдикация тасмасы ябык',
@@ -585,7 +585,7 @@ $1',
 'viewyourtext' => "Сез '''үз төзәтмәләрегезне''' бу сәхифәдә карый һәм чыгарылма текстны күчермәли аласыз:",
 'protectedinterface' => 'Бу биттә программа тәэминатының интерфейс хәбәрләре бар. Вандализмга каршы көрәш сәбәпле, бу битне үзгәртү тыела. Әлеге хәбәрнең тәрҗемәсен өстәү яки үзгәртү өчен, зинһар өчен, MediaWiki [//translatewiki.net/ translatewiki.net] тәрҗемәләү сайтын кулланыгыз.',
 'editinginterface' => "'''Игътибар:''' Сез программа тәэминатының интерфейс тексты булган битне үзгәртәсез. Бу башка кулланучыларга да тәэсир итәчәк. Тәрҗемә өчен [//translatewiki.net/wiki/Main_Page?setlang=tt-cyrl translatewiki.net] локализацияләү проектын кулланыгыз.",
-'cascadeprotected' => 'Бу бит үзгәртүләрдән сакланган, чөнки ул каскадлы саклау кабул ителгән {{PLURAL:$1|биткә|битләргә}} өстәлгән:
+'cascadeprotected' => 'Бу бит үзгәртүләрдән сакланган, чөнки ул каскадлы саклау кабул ителгән {{PLURAL:$1|1=биткә|битләргә}} өстәлгән:
 $2',
 'namespaceprotected' => "'''$1''' исем киңлегендәге битләрне үзгәртү өчен сезнең рөхсәтегез юк.",
 'customcssprotected' => 'Сез бу CSS-сәхифәне үзгәртә алмыйсыз, чөнки монда башка кулланучының шәхси көйләнмәләре саклана',
@@ -676,7 +676,7 @@ $2',
 Зинһар, серсүзне алгач, системага яңадан керегез.',
 'blocked-mailpassword' => 'Сезнең IP адресыгыз белән битләр үзгәртеп һәм серсүзне яңартып булмый.',
 'eauthentsent' => 'Адрес үзгәртүне дәлилләү өчен аңа махсус хат җибәрелде. Хатта язылганнарны үтәвегез сорала.',
-'throttled-mailpassword' => 'Серсүзне электрон почтага җибәрү гамәлен сез {{PLURAL:$1|соңгы $1 сәгать}} эчендә кулландыгыз инде. Бу гамәлне явызларча куллануны кисәтү максатыннан аны $1 {{PLURAL:$1|сәгать}} аралыгында бер генә тапкыр башкарып була.',
+'throttled-mailpassword' => 'Серсүзне электрон почтага җибәрү гамәлен сез {{PLURAL:$1|1=соңгы $1 сәгать}} эчендә кулландыгыз инде. Бу гамәлне явызларча куллануны кисәтү максатыннан аны $1 {{PLURAL:$1|сәгать}} аралыгында бер генә тапкыр башкарып була.',
 'mailerror' => 'Хат җибәрү хатасы: $1',
 'acct_creation_throttle_hit' => 'Сезнең IP адресыннан бу тәүлек эчендә {{PLURAL:$1|$1 хисап язмасы}} төзелде инде. Шунлыктан бу гамәл сезнең өчен вакытлыча ябык.',
 'emailauthenticated' => 'Электрон почта адресыгыз расланды: $3, $2.',
@@ -731,21 +731,21 @@ $2',
 'passwordreset-email' => 'E-mail адресы:',
 'passwordreset-emailtitle' => '{{SITENAME}} хисап язмасы турында мәгълүматлар',
 'passwordreset-emailtext-ip' => 'Кемдер (бәлки, сездер, $1 IP-адресыннан) {{SITENAME}} ($4) проектында сезнең серсүзне искә төшерүне сорады.
-{{PLURAL:$3|Түбәндәге хисап язмасы|Түбәндәге хисап язмалары}} бу электрон әрҗә адресы белән бәйле:
+{{PLURAL:$3|1=Түбәндәге хисап язмасы|Түбәндәге хисап язмалары}} бу электрон әрҗә адресы белән бәйле:
 
 $2
 
-{{PLURAL:$3|Бу вакытлы серсүз|Бу вакытлы серсүзләр}} {{PLURAL:$5|$5 көн}} дәвамында эшлиячәкләр.
+{{PLURAL:$3|1=Бу вакытлы серсүз|Бу вакытлы серсүзләр}} {{PLURAL:$5|$5 көн}} дәвамында эшлиячәкләр.
 Сез системага керергә һәм яңа серсүз сайларга тиешсез.
 Әгәр сез серсүз сорамаган булсагыз яки элеккеге серсүзегезне искә төшерсәгез 
 һәм аны үзгәртергә теләмәсәгез, бу хатка җавап бирмәгез
 һәм элеккеге серсүзегезне кулланыгыз.',
 'passwordreset-emailtext-user' => '{{SITENAME}} проектыннан $1 кулланучысы {{SITENAME}} ($4) проектында сезнең серсүзне искә төшерүне сорады.
-{{PLURAL:$3|Түбәндәге хисап язмасы|Түбәндәге хисап язмалары}} бу электрон әрҗә адресы белән бәйле:
+{{PLURAL:$3|1=Түбәндәге хисап язмасы|Түбәндәге хисап язмалары}} бу электрон әрҗә адресы белән бәйле:
 
 $2
 
-{{PLURAL:$3|Бу вакытлы серсүз|Бу вакытлы серсүзләр}} {{PLURAL:$5|$5 көн}} дәвамында эшлиячәкләр.
+{{PLURAL:$3|1=Бу вакытлы серсүз|Бу вакытлы серсүзләр}} {{PLURAL:$5|$5 көн}} дәвамында эшлиячәкләр.
 Сез системага керергә һәм яңа серсүз сайларга тиешсез.
 Әгәр сез серсүз сорамаган булсагыз яки элеккеге серсүзегезне искә төшерсәгез 
 һәм аны үзгәртергә теләмәсәгез, бу хатка җавап бирмәгез
@@ -932,9 +932,9 @@ $2
 'cascadeprotectedwarning' => "'''Кисәтү:''' Бу битне идарәчеләр гына үзгәртә ала. Сәбәбе: ул {{PLURAL:$1|каскадлы яклау исемлегенә кертелгән}}:",
 'titleprotectedwarning' => "'''Кисәтү: Мондый исемле бит якланган, аны үзгәртү өчен [[Special:ListGroupRights|тиешле хокукка]] ия булу зарур.'''
 Аста күзәтү көндәлегендәге соңгы язма бирелгән:",
-'templatesused' => 'Бу биттә кулланылган {{PLURAL:$1|үрнәк|үрнәкләр}}:',
-'templatesusedpreview' => 'Алдан каралучы биттә кулланылган {{PLURAL:$1|үрнәк|үрнәкләр}}:',
-'templatesusedsection' => 'Бу бүлектә кулланылган {{PLURAL:$1|үрнәк|үрнәкләр}}:',
+'templatesused' => 'Бу биттә кулланылган {{PLURAL:$1|1=үрнәк|үрнәкләр}}:',
+'templatesusedpreview' => 'Алдан каралучы биттә кулланылган {{PLURAL:$1|1=үрнәк|үрнәкләр}}:',
+'templatesusedsection' => 'Бу бүлектә кулланылган {{PLURAL:$1|1=үрнәк|үрнәкләр}}:',
 'template-protected' => '(якланган)',
 'template-semiprotected' => '(өлешчә якланган)',
 'hiddencategories' => 'Бу бит $1 {{PLURAL:$1|яшерен төркемгә}} керә:',
@@ -944,8 +944,8 @@ $2
 'sectioneditnotsupported-title' => 'Бүлекләрне үзгәртү рөхсәт ителми.',
 'sectioneditnotsupported-text' => 'Бу биттә бүлекләрне үзгәртү рөхсәт ителми.',
 'permissionserrors' => 'Керү хокукы хаталары',
-'permissionserrorstext' => 'Түбәндәге {{PLURAL:$1|сәбәп|сәбәпләр}} аркасында сез бу гамәлне башкара алмыйсыз:',
-'permissionserrorstext-withaction' => '$2 гамәлен башкара алмыйсыз. {{PLURAL:$1|Сәбәбе|Сәбәпләре}}:',
+'permissionserrorstext' => 'Түбәндәге {{PLURAL:$1|1=сәбәп|сәбәпләр}} аркасында сез бу гамәлне башкара алмыйсыз:',
+'permissionserrorstext-withaction' => '$2 гамәлен башкара алмыйсыз. {{PLURAL:$1|1=Сәбәбе|Сәбәпләре}}:',
 'recreate-moveddeleted-warn' => "'''Игътибар: Сез бетерелгән бит урынына яңа бит ясамакчы буласыз.'''
 
 Сезгә чыннан да бу битне яңадан ясау кирәкме?
@@ -967,7 +967,7 @@ $2
 # Parser/template warnings
 'expensive-parserfunction-warning' => "'''Игътибар:''' бу биттә хәтерне еш кулланучы функцияләр артык күп.
 
-Чикләү: $2 {{PLURAL:$2|куллану}}, бу очракта {{PLURAL:$1|$1 тапкыр}} башкарырга рөхсәт ителә.",
+Чикләү: $2 {{PLURAL:$2|1=куллану}}, бу очракта {{PLURAL:$1|$1 тапкыр}} башкарырга рөхсәт ителә.",
 'expensive-parserfunction-category' => 'Хәтерне еш кулланучы функцияләр күп булган битләр',
 'post-expand-template-inclusion-warning' => "'''Игътибар:''' Кулланылучы үрнәкләр артык зур.
 Кайберләре кабызылмаячак.",
@@ -1064,8 +1064,8 @@ $3 күрсәткән сәбәп: ''$2''",
 'revdelete-no-file' => 'Бу файл юк.',
 'revdelete-show-file-confirm' => 'Сез чыннан да «<nowiki>$1</nowiki>» файлының бетерелгән  $2, $3 версиясен карарга телисезме??',
 'revdelete-show-file-submit' => 'Әйе',
-'revdelete-selected' => "'''[[:$1]] битенең {{PLURAL:$2|Сайланган юрама|сайланган юрамалары}}:'''",
-'logdelete-selected' => "'''Журналның {{PLURAL:$1|Сайланган язма|сайланган язмалары}} :'''",
+'revdelete-selected' => "'''[[:$1]] битенең {{PLURAL:$2|1=Сайланган юрама|сайланган юрамалары}}:'''",
+'logdelete-selected' => "'''Журналның {{PLURAL:$1|1=Сайланган язма|сайланган язмалары}} :'''",
 'revdelete-legend' => 'Чикләүләр урнаштыр:',
 'revdelete-hide-text' => 'Битнең бу юрамасы текстын яшер',
 'revdelete-hide-image' => 'Файл эчендәгеләрне качыр',
@@ -1113,7 +1113,7 @@ $1",
 'compareselectedversions' => 'Сайланган юрамаларны чагыштыру',
 'showhideselectedversions' => 'Сайланган юрамаларны күрсәтү/яшерү',
 'editundo' => 'үткәрмәү',
-'diff-multi' => '({{PLURAL:$2|бер кулланучының|$2 кулланучының}} {{PLURAL:$1|арадагы $1 версиясе күрсәтелмәгән}})',
+'diff-multi' => '({{PLURAL:$2|1=бер кулланучының|$2 кулланучының}} {{PLURAL:$1|арадагы $1 версиясе күрсәтелмәгән}})',
 
 # Search results
 'searchresults' => 'Эзләү нәтиҗәләре',
@@ -1123,7 +1123,7 @@ $1",
 'nextn' => 'чираттагы {{PLURAL:$1|$1}}',
 'prevn-title' => 'Алдагы $1  {{PLURAL:$1|язма}}',
 'nextn-title' => 'Киләсе $1  {{PLURAL:$1|язма}}',
-'shown-title' => 'Сәхифәдә $1 {{PLURAL:$1|язма|язма}} күрсәтелсен',
+'shown-title' => 'Сәхифәдә $1 {{PLURAL:$1|1=язма|язма}} күрсәтелсен',
 'viewprevnext' => 'Күрсәтелүе: ($1 {{int:pipe-separator}} $2) ($3)',
 'searchmenu-exists' => "'''Бу вики-проекта «[[:$1]]» исемле бит бар инде'''",
 'searchmenu-new' => "'''«[[:$1]]»  исемле яңа бит ясау'''",
@@ -1138,7 +1138,7 @@ $1",
 'searchprofile-everything-tooltip' => 'Барлык битләрдә дә эзләү',
 'searchprofile-advanced-tooltip' => 'Бирелгән исемнәр мәйданында эзләү',
 'search-result-size' => '$1 ({{PLURAL:$2|$2 сүз}})',
-'search-result-category-size' => '{{PLURAL:$1|1 әгъза|$1 әгъза}} ({{PLURAL:$2|1 асттөркем|$2 асттөркем}}, {{PLURAL:$3|1 файл|$3 файл}})',
+'search-result-category-size' => '{{PLURAL:$1|1=1 әгъза|$1 әгъза}} ({{PLURAL:$2|1=1 асттөркем|$2 асттөркем}}, {{PLURAL:$3|1=1 файл|$3 файл}})',
 'search-result-score' => 'Релевантлыгы: $1 %',
 'search-redirect' => '(юнәлтү $1)',
 'search-section' => '($1 бүлеге)',
@@ -1151,8 +1151,8 @@ $1",
 'searchrelated' => 'бәйләнгән',
 'searchall' => 'барлык',
 'showingresults' => "Аста № '''$2''' {{PLURAL:$1|башлап}} '''$1''' {{PLURAL:$1|результат}} күрсәтелгән.",
-'showingresultsnum' => "Аста № '''$2''' {{PLURAL:$3| башлап}} '''$3''' {{PLURAL:$3|результат}} күрсәтелгән.",
-'showingresultsheader' => "'''$4''' өчен {{PLURAL:$5|Результат '''$1''' сеннән '''$3'''|Результатлар '''$1 — $2''' сеннән  '''$3'''}}",
+'showingresultsnum' => "Аста № '''$2''' {{PLURAL:$3|башлап}} '''$3''' {{PLURAL:$3|результат}} күрсәтелгән.",
+'showingresultsheader' => "'''$4''' өчен {{PLURAL:$5|1=Результат '''$1''' сеннән '''$3'''|Результатлар '''$1 — $2''' сеннән  '''$3'''}}",
 'search-nonefound' => 'Сорауга туры килгән җаваплар табылмады.',
 'powersearch-legend' => 'Өстәмә эзләү',
 'powersearch-ns' => 'исемнәрендә эзләү',
@@ -1176,7 +1176,7 @@ $1",
 'prefs-rc' => 'Соңгы үзгәртүләр',
 'prefs-watchlist' => 'Күзәтү исемлеге',
 'prefs-watchlist-days' => 'Күзәтү исемлегендә күрсәтелгән көн саны:',
-'prefs-watchlist-days-max' => 'Maximum $1 {{PLURAL:$1|day|days}}',
+'prefs-watchlist-days-max' => 'Maximum $1 {{PLURAL:$1|1=day|days}}',
 'prefs-watchlist-edits' => 'Киңәйтелгән күзәтү исемлегендә үзгәртүләрнең иң югары исәбе:',
 'prefs-watchlist-edits-max' => 'Максимум сан: 1000',
 'prefs-watchlist-token' => 'Күзәтү исемлеге токены:',
@@ -1338,7 +1338,7 @@ $1",
 'action-move' => 'бу битне күчерерге',
 
 # Recent changes
-'nchanges' => '$1 {{PLURAL:$1|үзгәртү|үзгәртү}}',
+'nchanges' => '$1 {{PLURAL:$1|1=үзгәртү|үзгәртү}}',
 'recentchanges' => 'Соңгы үзгәртүләр',
 'recentchanges-legend' => 'Соңгы үзгәртүләр көйләүләре',
 'recentchanges-summary' => 'Бу биттә {{grammar:genitive|{{SITENAME}}}} проектының соңгы үзгәртүләре күрсәтелә.',
@@ -1421,9 +1421,9 @@ $1",
 'filetype-badmime' => 'MIME-төре «$1» булган файллар, йөкләнмәячәк.',
 'filetype-bad-ie-mime' => 'Файлны йөкләргә мөмкин түгел, чөнки Internet Explorer аны «$1» дип кабул итәчәк.',
 'filetype-unwanted-type' => "'''\".\$1\"''' — тыелган файл төре.
-{{PLURAL:\$3|Мөмкин булган файл төре булып|Мөмкин булган файл төре:}} \$2.",
-'filetype-banned-type' => '\'\'\'".$1"\'\'\' — {{PLURAL:$4|тыелган файл төре|тыелган файллар төре}}.
-{{PLURAL:$3|Киңәйтелгән файл төре булып|Киңәйтелгән  файл төрләре:}} $2.',
+{{PLURAL:\$3|1=Мөмкин булган файл төре булып|Мөмкин булган файл төре:}} \$2.",
+'filetype-banned-type' => '\'\'\'".$1"\'\'\' — {{PLURAL:$4|1=тыелган файл төре|тыелган файллар төре}}.
+{{PLURAL:$3|1=Киңәйтелгән файл төре булып|Киңәйтелгән  файл төрләре:}} $2.',
 'filetype-missing' => "Файлның киңәйтелмәсе юк ''(мәсәлән,«.jpg»)''.",
 'empty-file' => 'Сезнең тарафтан җибәрелгән файл буш.',
 'file-too-large' => 'Сезнең тарафтан җибәрелгән файл артык зур.',
@@ -1502,7 +1502,7 @@ PICT # төрле
 'filehist-comment' => 'Искәрмә',
 'filehist-missing' => 'Файл табылмады',
 'imagelinks' => 'Файлны куллану',
-'linkstoimage' => 'Бу файлга әлеге {{PLURAL:$1|бит|$1 бит}} сылтый:',
+'linkstoimage' => 'Бу файлга әлеге {{PLURAL:$1|1=бит|$1 бит}} сылтый:',
 'nolinkstoimage' => 'Бу файлга сылтаган битләр юк.',
 'duplicatesoffile' => '{{PLURAL:$1|Әлеге $1 файл }} астагы файлның күчерелмәсе булып тора ([[Special:FileDuplicateSearch/$2|тулырак]]):',
 'sharedupload' => "Бу файл $1'дан һәм башка проектларда кулланырга мөмкин.",
@@ -1617,8 +1617,8 @@ PICT # төрле
 'movethispage' => 'Бу битне күчерү',
 'nopagetitle' => 'Мондый бит юк',
 'nopagetext' => 'Күрсәтелгән бит юк.',
-'pager-newer-n' => '{{PLURAL:$1|1 яңарак|$1 яңарак}}',
-'pager-older-n' => '{{PLURAL:$1|1 искерәк|$1 искерәк}}',
+'pager-newer-n' => '{{PLURAL:$1|1=1 яңарак|$1 яңарак}}',
+'pager-older-n' => '{{PLURAL:$1|1=1 искерәк|$1 искерәк}}',
 'suppress' => 'Яшерү',
 
 # Book sources
@@ -1652,7 +1652,7 @@ PICT # төрле
 
 # Special:Categories
 'categories' => 'Төркемнәр',
-'categoriespagetext' => '{{PLURAL:$1|Әлеге төркем үз өченә|Әлеге төркемнәр  үз өченә}}   битләрне һәм медиа-файлларны ала.
+'categoriespagetext' => '{{PLURAL:$1|1=Әлеге төркем үз өченә|Әлеге төркемнәр  үз өченә}}   битләрне һәм медиа-файлларны ала.
 Аста [[Special:UnusedCategories|кулланылмаган төркемнәр]] кәрсәтелгән.
 Шулай ук  [[Special:WantedCategories|кирәкле төркемнәр исемлегендә]] карагыз.',
 'special-categories-sort-count' => 'исәп буенча тәртипләү',
@@ -1726,7 +1726,7 @@ PICT # төрле
 'unwatch' => 'Күзәтмәү',
 'unwatchthispage' => 'Күзәтүне туктат',
 'notanarticle' => 'Мәкалә түгел',
-'watchlist-details' => 'Күзәтү исемлегегездә, бәхәс битләрен санамыйча, {{PLURAL:$1|$1 бит|$1 бит}} бар.',
+'watchlist-details' => 'Күзәтү исемлегегездә, бәхәс битләрен санамыйча, {{PLURAL:$1|1=$1 бит|$1 бит}} бар.',
 'wlshowlast' => 'Баягы $1 сәгать $2 көн эчендә яки $3ны күрсәт',
 'watchlist-options' => 'Күзәтү исемлеге көйләүләре',
 
@@ -1816,7 +1816,7 @@ $UNWATCHURL
 'protect-unchain-permissions' => 'Өстәмә яклау чараларын ачу',
 'protect-text' => "Биредә сез '''$1''' бите өчен яклау дәрәҗәсене карый һәм үзгәрә аласыз.",
 'protect-locked-access' => "Хисап язмагызга битләрнең яклау дәрәҗәсен үзгәртү өчен хак җитми. '''$1''' битенең хәзерге көйләүләре:",
-'protect-cascadeon' => 'Бу бит якланган, чөнки ул әлеге каскадлы яклаулы {{PLURAL:$1|биткә|битләргә}} керә. Сез бу битнең яклау дәрәҗәсен үзгәртә аласыз, әмма каскадлы яклау үзгәрмәячәк.',
+'protect-cascadeon' => 'Бу бит якланган, чөнки ул әлеге каскадлы яклаулы {{PLURAL:$1|1=биткә|битләргә}} керә. Сез бу битнең яклау дәрәҗәсен үзгәртә аласыз, әмма каскадлы яклау үзгәрмәячәк.',
 'protect-default' => 'Яклаусыз',
 'protect-fallback' => '«$1»нең рөхсәте кирәк',
 'protect-level-autoconfirmed' => 'Яңа һәм теркәлмәгән кулланучыларны кысу',
@@ -1865,7 +1865,7 @@ $UNWATCHURL
 'undeleteviewlink' => 'карау',
 'undeleteinvert' => 'Киресен сайлау',
 'undeletecomment' => 'Сәбәп:',
-'undeletedrevisions' => '{{PLURAL:$1|1 үзгәртү|$1 үзгәртү}} торгызылды',
+'undeletedrevisions' => '{{PLURAL:$1|1=1 үзгәртү|$1 үзгәртү}} торгызылды',
 'undelete-search-submit' => 'Эзләү',
 'undelete-error-long' => 'Файлны торгызу вакытында хаталар чыкты:
 
@@ -1908,8 +1908,8 @@ $1',
 'isredirect' => 'юнәлтү бите',
 'istemplate' => 'кертүләр',
 'isimage' => 'файл сылтамасы',
-'whatlinkshere-prev' => '{{PLURAL:$1|алдагы|алдагы $1}}',
-'whatlinkshere-next' => '{{PLURAL:$1|чираттагы|чираттагы $1}}',
+'whatlinkshere-prev' => '{{PLURAL:$1|1=алдагы|алдагы $1}}',
+'whatlinkshere-next' => '{{PLURAL:$1|1=чираттагы|чираттагы $1}}',
 'whatlinkshere-links' => '← сылтамалар',
 'whatlinkshere-hideredirs' => 'юнәлтүләрне $1',
 'whatlinkshere-hidetrans' => 'кертүләрне $1',
@@ -2114,10 +2114,10 @@ $1',
 'common.css' => '/*  Монда урнаштырылган CSS башкаларында да урнашачак */',
 
 # Attribution
-'anonymous' => '{{SITENAME}} сайтының аноним {{PLURAL:$1|кулланучысы|кулланучылары}}',
+'anonymous' => '{{SITENAME}} сайтының аноним {{PLURAL:$1|1=кулланучысы|кулланучылары}}',
 'siteuser' => '{{SITENAME}} кулланучысы $1',
 'othercontribs' => '«$1» эшенә нигезләнә.',
-'siteusers' => '{{SITENAME}} {{PLURAL:$2|кулланучысы|кулланучылары}} $1',
+'siteusers' => '{{SITENAME}} {{PLURAL:$2|1=кулланучысы|кулланучылары}} $1',
 'creditspage' => 'Рәхмәтләр',
 
 # Spam protection
@@ -2158,7 +2158,7 @@ $1',
 'imagemaxsize' => "Рәсемнең зурлыгына чикләүләр:<br />''(тасвирлау бите өчен)''",
 'thumbsize' => 'Рәсемнең кечерәйтелгән юрамасы өчен:',
 'widthheight' => '$1 × $2',
-'widthheightpage' => '$1 × $2, $3{{PLURAL:$1|бит|битләр}}',
+'widthheightpage' => '$1 × $2, $3{{PLURAL:$1|1=бит|битләр}}',
 'file-info' => 'файл зурлыгы: $1, MIME-тип: $2',
 'file-info-size' => '$1 × $2 нокта, файлның зурлыгы: $3, MIME тибы: $4',
 'file-nohires' => 'Югары ачыклык белән юрама юк.',
@@ -2512,8 +2512,8 @@ $1',
 'api-error-badtoken' => 'Эчке хата: дөрес булмаган токен.',
 'api-error-copyuploaddisabled' => 'URL-адрес буенча йөкләү бу серверда сүндерелгән.',
 'api-error-duplicate' => 'Мондый эчтәлекле {{PLURAL:$1|[$2 башка файл]}} да бар.',
-'api-error-duplicate-archive' => 'Элек сайтта мондый эчтәлекле {{PLURAL:$1|[$2 башка файл]}} бар иде инде, ләкин {{PLURAL:$1|аны бетерделәр|аларны бетерделәр}}.',
-'api-error-duplicate-archive-popup-title' => 'Кайчандыр бетерелгән {{PLURAL:$1|файлның|файлларның}} дубликатлары.',
+'api-error-duplicate-archive' => 'Элек сайтта мондый эчтәлекле {{PLURAL:$1|[$2 башка файл]}} бар иде инде, ләкин {{PLURAL:$1|1=аны бетерделәр|аларны бетерделәр}}.',
+'api-error-duplicate-archive-popup-title' => 'Кайчандыр бетерелгән {{PLURAL:$1|1=файлның|файлларның}} дубликатлары.',
 'api-error-duplicate-popup-title' => '{{PLURAL:$1|файлның}} дубликаты',
 'api-error-empty-file' => 'Сезнең тарафтан җибәрелгән файл буш.',
 'api-error-emptypage' => 'Яңа буш сәхифәләр төзү рөхсәт ителми',
index 84570a2..cd93eea 100644 (file)
@@ -117,7 +117,7 @@ $messages = array(
 'tog-showtoolbar' => 'Өскертир херекселдерни көргүзер (JavaScript)',
 'tog-editondblclick' => 'Арынны өскертирде ийи катап базар (JavaScript)',
 'tog-editsection' => '[өскертири] деп холбаалар-биле section editing enable.',
-'tog-rememberpassword' => 'Мени бо компьютерге сактыры ($1 {{PLURAL:$1|хүн|хүн}} ишти)',
+'tog-rememberpassword' => 'Мени бо компьютерге сактыры ($1 {{PLURAL:$1|1=хүн|хүн}} ишти)',
 'tog-watchcreations' => 'Мээң чаяан арыннарымны хайгаарал даңзымче немээри.',
 'tog-watchdefault' => 'Мээң өскерткен арыннарымны хайгаарал даңзымче немээри.',
 'tog-watchmoves' => 'Мээң катап адаан арыннарымны хайгаарал даңзымче немээри.',
@@ -194,12 +194,12 @@ $messages = array(
 'subcategories' => 'Адаккы бөлүктер',
 'category-media-header' => '«$1» деп бөлүкте файлдар',
 'category-empty' => "''Амгы бо бөлүкте медиа база арыннар чок.''",
-'hidden-categories' => '{{PLURAL:$1|Чажыт аңгылал|Чажыт аңгылалдар}}',
+'hidden-categories' => '{{PLURAL:$1|1=Чажыт аңгылал|Чажыт аңгылалдар}}',
 'hidden-category-category' => 'Чажыт бөлүктер',
-'category-subcat-count' => '{{PLURAL:$2|Бо аңгылал чүгле дараазында аңгыламныг.|Бо аңгылалдың шупту $2 аңгыламнарның аразындан дараазында $1 аңгыламны көргүскен.}}',
-'category-subcat-count-limited' => 'Бо аңгылал {{PLURAL:$1|бир|$1}} аңгыламныг.',
-'category-article-count' => '{{PLURAL:$2|Бо аңгылал чүгле дараазында арыннарлыг.|Бо аңгылалдың шупту $2 арыннарының аразындан дараазында $1 арынын көргүскен.}}',
-'category-file-count' => '{{PLURAL:$2|Бо бөлүк чүгле чаңгыс файлдыг.|Бо бөлүктүң ниити $2 файлының $1 файлын көргүскен.}}',
+'category-subcat-count' => '{{PLURAL:$2|1=Бо аңгылал чүгле дараазында аңгыламныг.|Бо аңгылалдың шупту $2 аңгыламнарның аразындан дараазында $1 аңгыламны көргүскен.}}',
+'category-subcat-count-limited' => 'Бо аңгылал {{PLURAL:$1|1=бир|$1}} аңгыламныг.',
+'category-article-count' => '{{PLURAL:$2|1=Бо аңгылал чүгле дараазында арыннарлыг.|Бо аңгылалдың шупту $2 арыннарының аразындан дараазында $1 арынын көргүскен.}}',
+'category-file-count' => '{{PLURAL:$2|1=Бо бөлүк чүгле чаңгыс файлдыг.|Бо бөлүктүң ниити $2 файлының $1 файлын көргүскен.}}',
 'listingcontinuesabbrev' => '(уланчы)',
 'noindex-category' => 'Индекстелбес арынар',
 'broken-file-category' => 'Ажылдавайн турар файл-шөлүлгелиг арыннар',
@@ -260,8 +260,8 @@ $messages = array(
 'create-this-page' => 'Бо арынны чогаадыры',
 'delete' => 'Ыраары',
 'deletethispage' => 'Бо арынны ырадыры',
-'undelete_short' => '$1 {{PLURAL:$1|эдигни|эдиглерни}} катап үндүрери',
-'viewdeleted_short' => '{{PLURAL:$1|Бир ыраткан өскерлиишкинни|$1 ыраткан өскерлиишкиннерни}} көөрү',
+'undelete_short' => '$1 {{PLURAL:$1|1=эдигни|эдиглерни}} катап үндүрери',
+'viewdeleted_short' => '{{PLURAL:$1|1=Бир ыраткан өскерлиишкинни|$1 ыраткан өскерлиишкиннерни}} көөрү',
 'protect' => 'Камгалаары',
 'protect_change' => 'өскертири',
 'protectthispage' => 'Бо арынны камгалаар',
@@ -385,7 +385,7 @@ $messages = array(
 'yourname' => 'Aжыглакчының ады',
 'yourpassword' => 'Чажыт сөс',
 'yourpasswordagain' => 'Чажыт сөзүңерни катап бижиңер:',
-'remembermypassword' => 'Мени бо компьютерде сактып алыры ($1 {{PLURAL:$1|хүн|хүн}}ге чедир)',
+'remembermypassword' => 'Мени бо компьютерде сактып алыры ($1 {{PLURAL:$1|1=хүн|хүн}}ге чедир)',
 'login' => 'Кирери',
 'nav-login-createaccount' => 'Кирери / бүрүткел бижикти чогаадыры',
 'loginprompt' => '{{SITENAME}} сайтче кирерде, баштай «cookies»-ти чөшпээрээр ужурлуг Силер.',
@@ -511,11 +511,11 @@ Please check if you want to create/edit this page.',
 'editingcomment' => '«$1» деп арынны өскертип турар (чаа салбыр)',
 'yourtext' => 'Силерниң сөзүглелиңер',
 'yourdiff' => 'Ылгалдар',
-'templatesused' => 'Бо арында ажыглаан {{PLURAL:$1|Майык|Майыктар}}:',
+'templatesused' => 'Бо арында ажыглаан {{PLURAL:$1|1=Майык|Майыктар}}:',
 'template-protected' => '(камгалаан)',
 'template-semiprotected' => '(четпес камгалаан)',
 'hiddencategories' => 'Бо арын {{PLURAL:$1|$1 чажыт бөлүкке}} хамааржыр:',
-'permissionserrorstext-withaction' => "Мында «'''$2'''» силерниң эргеңер чок, {{PLURAL:$1|чылдагааны|чылдагааннары}}:",
+'permissionserrorstext-withaction' => "Мында «'''$2'''» силерниң эргеңер чок, {{PLURAL:$1|1=чылдагааны|чылдагааннары}}:",
 'recreate-moveddeleted-warn' => "'''Кичээңейлиг. Ооң мурнунда казыттынган арынны катап тургузар деп тур Силер.'''
 
 Ол арынны катап тургузары шынап-ла чугула бе, боданыңар.
@@ -595,8 +595,8 @@ Please check if you want to create/edit this page.',
 'searchresults-title' => '«$1» деп диле',
 'prevn' => 'эрткен {{PLURAL:$1|$1}}',
 'nextn' => 'дараазында {{PLURAL:$1|$1}}',
-'prevn-title' => 'Эрткен $1 {{PLURAL:$1|бижик|бижик}}',
-'nextn-title' => 'Дараазында $1 {{PLURAL:$1|бижик|бижик}}',
+'prevn-title' => 'Эрткен $1 {{PLURAL:$1|1=бижик|бижик}}',
+'nextn-title' => 'Дараазында $1 {{PLURAL:$1|1=бижик|бижик}}',
 'shown-title' => 'Арынга $1 {{PLURAL:$1|түңнел}} көргүзер',
 'viewprevnext' => '($1 {{int:pipe-separator}} $2) ($3) көөрү',
 'searchmenu-exists' => "'''Бо викиде \"[[:\$1]]\" деп арын бар.'''",
@@ -612,7 +612,7 @@ Please check if you want to create/edit this page.',
 'searchprofile-everything-tooltip' => 'Шупту арыннардан дилээри (сумележиишкиннерден база)',
 'searchprofile-advanced-tooltip' => 'Айыткан аттар делгемнеринден дилээри',
 'search-result-size' => '$1 ({{PLURAL:$2|$2 сөс}})',
-'search-result-category-size' => '{{PLURAL:$1|1 кежигүүн|$1 кежигүүн}} ({{PLURAL:$2|1 аңгылам|$2 аңгылам}}, {{PLURAL:$3|1 файл|$3 файл}})',
+'search-result-category-size' => '{{PLURAL:$1|1=1 кежигүүн|$1 кежигүүн}} ({{PLURAL:$2|1=1 аңгылам|$2 аңгылам}}, {{PLURAL:$3|1=1 файл|$3 файл}})',
 'search-redirect' => '($1-н шиглелге)',
 'search-section' => '(«$1» деп салбыр)',
 'search-suggest' => 'Силер «$1» деп бодадыңар чадавас',
@@ -620,7 +620,7 @@ Please check if you want to create/edit this page.',
 'searcheverything-enable' => 'Шупту аттар делгемнеринден дилээри',
 'searchrelated' => 'холбаалыг',
 'searchall' => 'шупту',
-'showingresultsheader' => "«'''$4'''» дилээниниң {{PLURAL:$5|'''$3''' одуругдан '''$1''' түңнели|'''$3''' одуругдан '''$1—$2''' түңнелдери}}",
+'showingresultsheader' => "«'''$4'''» дилээниниң {{PLURAL:$5|1='''$3''' одуругдан '''$1''' түңнели|'''$3''' одуругдан '''$1—$2''' түңнелдери}}",
 'search-nonefound' => 'Айыткан негелдениң түңнели чок',
 'powersearch-ns' => 'Аттар делгемнеринден дилээри:',
 'powersearch-toggleall' => 'Шупту',
@@ -663,13 +663,13 @@ Please check if you want to create/edit this page.',
 'youremail' => 'Э-чагааңар:',
 'username' => 'Aжыглакчының ады:',
 'uid' => 'Ажыглакчынын саны (ID):',
-'prefs-memberingroups' => 'Силерниң {{PLURAL:$1|бөлүү|бөлүктери}}:',
+'prefs-memberingroups' => 'Силерниң {{PLURAL:$1|1=бөлүү|бөлүктери}}:',
 'prefs-registration' => 'Кажан даңзылатканыл:',
 'yourrealname' => 'Шын адыңар:',
 'yourlanguage' => 'Дылыңар:',
 'yournick' => 'Шола ат:',
 'badsiglength' => 'Хол үжүүңер эмин узун.
-It must not be more than $1 {{PLURAL:$1|character|characters}} long.',
+It must not be more than $1 {{PLURAL:$1|1=character|characters}} long.',
 'yourgender' => 'Эр-кызы:',
 'gender-male' => 'Эр',
 'gender-female' => 'Кыс',
@@ -825,7 +825,7 @@ It must not be more than $1 {{PLURAL:$1|character|characters}} long.',
 'filehist-filesize' => 'Файл хемчээли',
 'filehist-comment' => 'Тайылбыр',
 'imagelinks' => 'Файлдың ажыглаашкыны',
-'linkstoimage' => 'Бердинген файлче дараазында {{PLURAL:$1|арын шөлүдүп тур|$1 арын шөлүдүп тур}}:',
+'linkstoimage' => 'Бердинген файлче дараазында {{PLURAL:$1|1=арын шөлүдүп тур|$1 арын шөлүдүп тур}}:',
 'nolinkstoimage' => 'Бердинген файлче шөлүп турар арыннар чок.',
 'sharedupload-desc-here' => 'Моон $1 алган файл өске төлевилелдерге ажыглаттынып болур.
 Ооң [$2 допчу тайылбыр арынындан] медеглели адаанда бердинген.',
@@ -1053,8 +1053,8 @@ It must not be more than $1 {{PLURAL:$1|character|characters}} long.',
 'isredirect' => 'шиглидер арын',
 'istemplate' => 'киирткен арыннар',
 'isimage' => 'файлдың холбаазы',
-'whatlinkshere-prev' => '{{PLURAL:$1|эрткен|эрткен $1}}',
-'whatlinkshere-next' => '{{PLURAL:$1|дараазында|дараазында $1}}',
+'whatlinkshere-prev' => '{{PLURAL:$1|1=эрткен|эрткен $1}}',
+'whatlinkshere-next' => '{{PLURAL:$1|1=дараазында|дараазында $1}}',
 'whatlinkshere-links' => '← холбаалар',
 'whatlinkshere-hideredirs' => '$1-че шиглиглер',
 'whatlinkshere-hidetrans' => '$1 даңзылааннар',
@@ -1206,7 +1206,7 @@ It must not be more than $1 {{PLURAL:$1|character|characters}} long.',
 'widthheightpage' => '$1x$2, $3 {{PLURAL:$3|арын}}',
 'file-info' => 'файлдың хемчээли: $1, MIME хевири: $2',
 'file-info-size' => '$1 × $2 пиксел, Файл хемчээли: $3, MIME хевири: $4',
-'file-info-size-pages' => '$1 × $2 пикcелдер, файл хемчээли: $3, MIME хевири: $4, $5 {{PLURAL:$5|арын|арын}}',
+'file-info-size-pages' => '$1 × $2 пикcелдер, файл хемчээли: $3, MIME хевири: $4, $5 {{PLURAL:$5|1=арын|арын}}',
 'file-nohires' => 'Оон улуг хевири чок',
 'svg-long-desc' => 'SVG файл, $1 x $2 пиксел, файл хемчээли: $3',
 'show-big-image' => 'Улуг чурумал',
@@ -1221,8 +1221,8 @@ It must not be more than $1 {{PLURAL:$1|character|characters}} long.',
 # Video information, used by Language::formatTimePeriod() to format lengths in the above messages
 'seconds' => '{{PLURAL: $1|$1 секунда|$1 секунда}}',
 'minutes' => '{{PLURAL: $1|$1 минут|$1 минут}}',
-'hours' => '{{PLURAL:$1|$1 шак|$1 шак}}',
-'days' => '{{PLURAL:$1|$1 хүн|$1 хүн}}',
+'hours' => '{{PLURAL:$1|1=$1 шак|$1 шак}}',
+'days' => '{{PLURAL:$1|1=$1 хүн|$1 хүн}}',
 'ago' => '$1 бурунгаар',
 
 # Bad image list
@@ -1377,10 +1377,10 @@ It must not be more than $1 {{PLURAL:$1|character|characters}} long.',
 'duration-seconds' => '$1 {{PLURAL: $1|секунда|секунда}}',
 'duration-minutes' => '$1 {{PLURAL: $1|минут|минут}}',
 'duration-hours' => '$1 {{PLURAL: $1|шак|шак}}',
-'duration-days' => '$1 {{PLURAL:$1|хүн|хүн}}',
+'duration-days' => '$1 {{PLURAL:$1|1=хүн|хүн}}',
 'duration-weeks' => '$1 {{PLURAL: $1|чеди-хонук|чеди-хонук}}',
 'duration-years' => '$1 {{PLURAL: $1|чыл|чыл}}',
-'duration-decades' => '$1 {{PLURAL:$1|он хонук|он хонук}}',
-'duration-centuries' => '$1 {{PLURAL:$1|чүс чыл|чүс чыл}}',
+'duration-decades' => '$1 {{PLURAL:$1|1=он хонук|он хонук}}',
+'duration-centuries' => '$1 {{PLURAL:$1|1=чүс чыл|чүс чыл}}',
 
 );
index 9cb0dc1..12d0c4b 100644 (file)
@@ -54,7 +54,7 @@ $messages = array(
 'tog-hidepatrolled' => 'يېقىنقى ئۆزگەرتىشتە كۆزەتكەن تەھرىرنى يوشۇر',
 'tog-newpageshidepatrolled' => 'يېڭى بەت تىزىملىكىدە كۆزەتكەن تەھرىرنى يوشۇر',
 'tog-extendwatchlist' => 'كۈچەيتىلگەن كۆزەت تىزىملىكىدە يېقىنقى ئۆزگەرتىشنىلا كۆرسەتمەي بەلكى ھەممە ئۆزگەرتىشنى كۆرسەت',
-'tog-usenewrc' => 'بەت گۇرۇپپىلىنىشىغا ئاساسەن يېقىنقى ئۆزگەرتىش ۋە كۆزەت تىزىمى (JavaScript زۆرۈر)',
+'tog-usenewrc' => 'يېقىنقى ئۆزگەرتىش ۋە كۆزەت تىزىملىلىگىدىكى بەتلەر ئۆزگىرىشىگە ئاساسەن گۇرۇپپىلا',
 'tog-numberheadings' => 'ماۋزۇغا ئۆزلۈكىدىن تەرتىپ نومۇرى قوش',
 'tog-showtoolbar' => 'تەھرىر قورال بالداقنى كۆرسەت',
 'tog-editondblclick' => 'قوش چەككەندە بەت تەھرىرلە',
@@ -89,14 +89,16 @@ $messages = array(
 'tog-showhiddencats' => 'يوشۇرۇن تۈرلەرنى كۆرسەت',
 'tog-noconvertlink' => 'ئۇلانما ماۋزۇ ئالماشتۇرۇشنى چەكلە',
 'tog-norollbackdiff' => 'قايتۇرۇشنى ئىجرا قىلغاندىن كېيىن پەرقنى كۆرسەتمە',
+'tog-useeditwarning' => 'بىر تەھرىرلىگەن بەتنى ساقلىماي چېكىنگەندە مېنى ئەسكەرت',
+'tog-prefershttps' => 'تىزىمغا كىرگەندە دائىم بىخەتەر ئۇلىنىشنى ئىشلەت',
 
 'underline-always' => 'دائىم',
 'underline-never' => 'ھەرگىز',
-'underline-default' => 'تېرە ياكى توركۆرگۈ كۆڭۈلدىكى',
+'underline-default' => 'تېرە ياكى توركۆرگۈ كۆڭۈلدىكىسى',
 
 # Font style option in Special:Preferences
 'editfont-style' => 'تەھرىرلەش رايونىنىڭ خەت نۇسخا ئۇسلۇبى:',
-'editfont-default' => 'توركۆرگۈ كۆڭۈلدىكى',
+'editfont-default' => 'توركۆرگۈ كۆڭۈلدىكىسى',
 'editfont-monospace' => 'تەڭ كەڭلىكتىكى خەت نۇسخا',
 'editfont-sansserif' => 'Sans-serif خەت نۇسخا',
 'editfont-serif' => 'Serif خەت نۇسخا',
@@ -191,7 +193,7 @@ $messages = array(
 'cancel' => 'ۋاز كەچ',
 'moredotdotdot' => 'تەپسىلىي…',
 'morenotlisted' => 'بۇ تىزىملىك تولۇق ئەمەس.',
-'mypage' => 'بەتىم',
+'mypage' => 'بەت',
 'mytalk' => 'مۇنازىرە بېتىم',
 'anontalk' => 'بۇ IP نىڭ مۇنازىرە بېتى',
 'navigation' => 'يولباشچى',
@@ -207,7 +209,7 @@ $messages = array(
 'faqpage' => 'Project:كۆپ كۆرۈلىدىغان مەسىلىلەر',
 
 # Vector skin
-'vector-action-addsection' => 'Ù\8aÛ\90Ú­Ù\89 Ø¨Ø§Ø´ ØªÛ\90Ù\85ا Ù\82Ù\88Ø´',
+'vector-action-addsection' => 'يېڭى تېما قوش',
 'vector-action-delete' => 'ئۆچۈر',
 'vector-action-move' => 'يۆتكە',
 'vector-action-protect' => 'قوغدا',
@@ -292,19 +294,19 @@ $1',
 # All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage).
 'aboutsite' => '{{SITENAME}} ھەققىدە',
 'aboutpage' => 'Project:ھەققىدە',
-'copyright' => 'بÛ\87 Ø¨Û\90Ù\83Û\95تتÙ\89Ù\83Ù\89 Ø¨Ø§Ø±Ù\84Ù\89Ù\82 تېكست مەزمۇنى $1 ماددىسىغا ئاساسەن تەمىنلىنىدۇ.',
-'copyrightpage' => '{{ns:project}}:نەشر ئۇچۇرى',
+'copyright' => 'خاتÙ\89رÙ\89Ù\84Û\95Ù\86Ú¯Û\95Ù\86دÙ\89Ù\86 Ø¨Ø§Ø´Ù\82ا تېكست مەزمۇنى $1 ماددىسىغا ئاساسەن تەمىنلىنىدۇ.',
+'copyrightpage' => '{{ns:project}}:نەشر ھوقۇقى',
 'currentevents' => 'نۆۋەتتىكى ھادىسە',
 'currentevents-url' => 'Project:نۆۋەتتىكى ھادىسە',
 'disclaimers' => 'ئاگاھلاندۇرۇشلار',
-'disclaimerpage' => 'Project:ئادەتتىكى جاۋابكارلىقنى كەچۈرۈم قىلىش باياناتى',
+'disclaimerpage' => 'Project:ئومۇمىي ئاگاھلاندۇرۇش',
 'edithelp' => 'تەھرىرلەش ياردىمى',
 'helppage' => 'Help:مەزمۇنلار',
 'mainpage' => 'باش بەت',
 'mainpage-description' => 'باش بەت',
 'policy-url' => 'Project:تاكتىكا',
-'portal' => 'ئىجتىمائى رايون باش بېتى',
-'portal-url' => 'Project:ئىجتىمائى رايون باش بېتى',
+'portal' => 'ئىجتىمائىي رايون',
+'portal-url' => 'Project:ئىجتىمائى رايون',
 'privacy' => 'شەخسىيەت تاكتىكىسى',
 'privacypage' => 'Project:شەخسىيەت تاكتىكىسى',
 
@@ -325,9 +327,9 @@ $1',
 'youhavenewmessages' => 'سىزدە $1 ($2) بار.',
 'youhavenewmessagesfromusers' => 'سىزنىڭ {{PLURAL:$3|باشقا ئىشلەتكۈچى|$3 ئىشلەتكۈچى}} $1  ($2)ڭىز بار.',
 'youhavenewmessagesmanyusers' => 'سىزنىڭ نۇرغۇن ئىشلەتكۈچىدىن كەلگەن $1  ($2) بار.',
-'newmessageslinkplural' => '{{PLURAL:$1|بىر يېڭى |يېڭى ئۇچۇر}}ئۇچۇر',
-'newmessagesdifflinkplural' => 'ئاخىرقى $1 {{PLURAL:$1|ئۆزگەرتىش|ئۆزگەرتىش}}',
-'youhavenewmessagesmulti' => '$1 يېڭى ئۇچۇرىڭىز بار',
+'newmessageslinkplural' => '{{PLURAL:$1|بىر يېڭى ئۇچۇر|999=يېڭى ئۇچۇرلار}}',
+'newmessagesdifflinkplural' => 'ئاخىرقى {{PLURAL:$1|ئۆزگەرتىش|999=ئۆزگەرتىشلەر}}',
+'youhavenewmessagesmulti' => '$1 دە يېڭى ئۇچۇرىڭىز بار',
 'editsection' => 'تەھرىر',
 'editold' => 'تەھرىر',
 'viewsourceold' => 'مەنبەنى كۆرسەت',
@@ -383,6 +385,9 @@ URL نى خاتا كىرگۈزۈپ قالدىڭىز ياكى خاتا ئۇلان
 # General errors
 'error' => 'خاتالىق',
 'databaseerror' => 'ساندان خاتالىقى',
+'databaseerror-text' => 'بىر سانداق ئوقۇش خاتالىقى يۈز بەردى.
+بۇ بەلكىم يۇمشاق دېتال ئىچىدىكى خاتالىق بولۇشى مۇمكىن.',
+'databaseerror-textcl' => 'بىر سانداق ئوقۇش خاتالىقى يۈز بەردى.',
 'databaseerror-query' => 'سوراق: $1',
 'databaseerror-function' => 'فۇنكىسىيە: $1',
 'databaseerror-error' => 'خاتا: $1',
@@ -421,6 +426,7 @@ URL نى خاتا كىرگۈزۈپ قالدىڭىز ياكى خاتا ئۇلان
 'cannotdelete-title' => '"$1" بەتنى ئۆچۈرەلمەيدۇ',
 'delete-hook-aborted' => 'ئۆچۈرۈش ئىلمەك تەرىپىدىن چېكىندۈرۈلدى
 ئۇ سەۋەبىنى تەمىنلىمىدى.',
+'no-null-revision' => '"$1" بېتى ئۈچۈن يېڭىدىن قۇرۇق ئۆزگەرتىش قىلالمىدى',
 'badtitle' => 'خاتا ماۋزۇ',
 'badtitletext' => 'ئىلتىماس قىلىنغان بەتنىڭ ماۋزۇسى ئىناۋەتسىز، مەۋجۇد ئەمەس، تىل ھالقىغان ياكى wiki ئۇلانمىسىدىن ھالقىغان ماۋزۇ خاتالىقى.
 ئۇ بىر ياكى بىر قانچە ماۋزۇغا ئىشلەتكىلى بولمايدىغان ھەرپنى ئۆز ئىچىگە ئالغان.',
@@ -451,6 +457,10 @@ $2',
 'namespaceprotected' => "سىزنىڭ '''$1''' ئات بوشلۇقىدىكى بەتنى تەھرىرلەش ھوقۇقىڭىز يوق.",
 'customcssprotected' => 'بۇ CSS بەتنى تەھرىرلەش ھوقۇقىڭىز يوق، چۈنكى ئۇ باشقا بىر ئىشلەتكۈچىنىڭ شەخسىي تەڭشىكىنى ئۆز ئىچىگە ئالغان.',
 'customjsprotected' => 'بۇ JavaScript بەتنى تەھرىرلەش ھوقۇقىڭىز يوق، چۈنكى ئۇ باشقا بىر ئىشلەتكۈچىنىڭ شەخسىي تەڭشىكىنى ئۆز ئىچىگە ئالغان.',
+'mycustomcssprotected' => 'بۇ CSS بېتىنى تەھرىرلەيدىغان ھوقۇقىڭىز يوق.',
+'mycustomjsprotected' => 'بۇ JavaScript بېتىنى تەھرىرلەيدىغان ھوقۇقىڭىز يوق.',
+'myprivateinfoprotected' => 'شەخسىي ئۇچۇرىڭىزنى تەھرىرلەيدىغان ھوقۇقىڭىز يوق.',
+'mypreferencesprotected' => 'مايىللىقىڭىزنى تەھرىرلەيدىغان ھوقۇقىڭىز يوق.',
 'ns-specialprotected' => 'ئالاھىدە بەتنى تەھرىرلىگىلى بولمايدۇ.',
 'titleprotected' => 'بۇ ماۋزۇ قايتا قۇرۇشتىن ساقلىنىش ئۈچۈن [[User:$1|$1]] تەرىپىدىن قوغدالغان.
 
@@ -461,7 +471,8 @@ $2',
 'invalidtitle-knownnamespace' => 'ئات بوشلۇقى "$2" ۋە تېكىست "$3" نى ئىشلەتكەن ئىناۋەتسىز ماۋزۇ',
 'invalidtitle-unknownnamespace' => 'يوچۇن ئات بوشلۇقى نومۇرى $1 ۋە تېكىست "$2" نى ئىشلەتكەن ئىناۋەتسىز ماۋزۇ',
 'exception-nologin' => 'تىزىمغا كىرمىدى',
-'exception-nologin-text' => 'بۇ بەت ياكى مەشغۇلات مەزكۇر ۋىكىغا تىزىمغا كىرىشىڭىزنى تەلەپ قىلىدۇ.',
+'exception-nologin-text' => 'بۇ بەت ياكى مەشغۇلاتقا ئېرىشىش ئۈچۈن [[Special:Userlogin|تىزىمغا كىرىڭ]]',
+'exception-nologin-text-manual' => 'بۇ بەت ياكى مەشغۇلاتقا ئېرىشىش ئۈچۈن $1.',
 
 # Virus scanner
 'virus-badscanner' => "بۇزۇلغان سەپلىمە: نامەلۇم ۋىرۇسخور: ''$1''",
@@ -471,13 +482,12 @@ $2',
 # Login and logout pages
 'logouttext' => "'''ھازىر تىزىمدىن چىقتىڭىز.'''
 
-سىز نامسىز ھالەتتە {{SITENAME}} نى ئىشلىتەلەيسىز ياكى ئوخشاش ۋە ياكى ئوخشاش بولمىغان ئىشلەتكۈچى سالاھىيىتىدە <span class='plainlinks'>[$1 تىزىمغا كىر]</span>ەلەيسىز.
 دىققەت، بەزى بەتلەر توركۆرگۈنىڭ غەملىكى تازىلانمىغۇچە يەنىلا سىزنى تىزىمغا كىرگەن ھالەتتە كۆرسىتىشى مۇمكىن.",
 'welcomeuser' => '$1، خۇش كەپسىز!',
 'welcomecreation-msg' => 'ھېساباتىڭىز قۇرۇلدى.
 
 [[Special:Preferences|{{SITENAME}} تەڭشىكىڭىزنى تەڭشەشنى ئۇنتۇپ قالماڭ]].',
-'yourname' => 'ئىشلەتكۈچى ئاتى:',
+'yourname' => 'ئىشلەتكۈچى نامى:',
 'userlogin-yourname' => 'ئىشلەتكۈچى نامى',
 'userlogin-yourname-ph' => 'ئىشلەتكۈچى نامىڭىزنى كىرگۈزۈڭ',
 'createacct-another-username-ph' => 'ئىشلەتكۈچى نامىنى كىرگۈزۈڭ',
@@ -485,14 +495,14 @@ $2',
 'userlogin-yourpassword' => 'پارول',
 'userlogin-yourpassword-ph' => 'پارولىڭىزنى كىرگۈزۈڭ',
 'createacct-yourpassword-ph' => 'پارول كىرگۈزۈڭ',
-'yourpasswordagain' => 'ئاچقۇچنى قايتا بەسىڭ:',
+'yourpasswordagain' => 'پارولنى قايتا كىرگۈزۈڭ:',
 'createacct-yourpasswordagain' => 'پارولنى مۇقىملاشتۇرۇڭ',
 'createacct-yourpasswordagain-ph' => 'پارولنى قايتا كىرگۈزۈڭ',
 'remembermypassword' => 'بۇ كومپيۇتېردا كىرگىنىمنى ئەستە ساقلا(ئەڭ ئۇزۇن بولغاندا $1 {{PLURAL:$1|كۈن|كۈن}})',
 'userlogin-remembermypassword' => 'مېنى ئەستە ساقلا',
 'userlogin-signwithsecure' => 'بىخەتەر ئۇلىنىشنى ئىشلەت',
-'yourdomainname' => 'دائىرە ئاتىڭىز:',
-'password-change-forbidden' => 'بۇ ۋىكىدىكى ئىمنى ئۆزگەرتەلمەيسىز.',
+'yourdomainname' => 'دائىرە نامىڭىز:',
+'password-change-forbidden' => 'بۇ ۋىكىدىكى پارولنى ئۆزگەرتەلمەيسىز.',
 'externaldberror' => 'بۇ سانداننى دەلىللەش خاتالىقى ياكى سىرتقى ھېساباتىڭىزنى يېڭىلاشنى چەكلىگەنلىكتىن بولغان بولۇشى مۇمكىن.',
 'login' => 'تىزىمغا كىر',
 'nav-login-createaccount' => 'تىزىمغا كىر/ھېسابات قۇر',
@@ -503,7 +513,7 @@ $2',
 'userlogout' => 'تىزىمدىن چىق',
 'notloggedin' => 'تىزىمغا كىرمىدى',
 'userlogin-noaccount' => 'ھېساباتىڭىز يوقمۇ؟',
-'userlogin-joinproject' => '{{SITENAME}} قا ئەزا بولۇش',
+'userlogin-joinproject' => '{{SITENAME}} قا ئەزا بولۇڭ',
 'nologin' => "ھېساباتىڭىز يوقمۇ؟ '''$1'''.",
 'nologinlink' => 'ھېساباتتىن بىرنى قۇر',
 'createaccount' => 'ھېسابات قۇر',
@@ -521,7 +531,7 @@ $2',
 'createacct-emailoptional' => 'ئېلخەت ئادرېسى (ئىختىيارى)',
 'createacct-email-ph' => 'ئېلخەت ئادرېسىڭىزنى كىرگۈزۈڭ',
 'createacct-another-email-ph' => 'ئېلخەت ئادرېسى كىرگۈزۈڭ',
-'createaccountmail' => 'ۋاقىتلىق ئىختىيارىي بىر ئېمنى ئىشلىتىدۇ ھەمدە تۆۋەندىكى بەلگىلەنگەن تورخەت ئادرېسىغا ئەۋەتىدۇ',
+'createaccountmail' => 'ۋاقىتلىق ئىختىيارىي پارولنى ئىشلەت ھەمدە بەلگىلەنگەن ئېلېكتىرونلۇق خەت ئادرېسىغا ئەۋەت',
 'createacct-realname' => 'ھەقىقى ئىسمىڭىز (ئىختىيارى)',
 'createaccountreason' => 'سەۋەب:',
 'createacct-reason' => 'سەۋەبى',
@@ -533,6 +543,7 @@ $2',
 'createacct-benefit-heading' => '{{SITENAME}} سىزگە ئوخشاش كىشىلەر تەرىپىدىن قۇرۇلغان.',
 'createacct-benefit-body1' => '{{PLURAL:$1|قېتىم}} تەھرىرلەنگەن',
 'createacct-benefit-body2' => '{{PLURAL:$1|بەت}}',
+'createacct-benefit-body3' => 'يېقىنقى {{PLURAL:$1|تۆھپىكار|تۆھپىكارلار}}',
 'badretype' => 'سىز كىرگۈزگەن پارول ماس كەلمىدى.',
 'userexists' => 'كىرگۈزگەن ئىشلەتكۈچى ئاتى ئىشلىتىلىۋاتىدۇ.
 باشقا ئاتنى تاللاڭ.',
@@ -554,15 +565,15 @@ $2',
 'nocookiesfornew' => 'ئىشلەتكۈچى ھېساباتى قۇرۇلمىدى، ئۇنىڭ مەنبەسىنى جەزملىيەلمەيمىز.
 cookies نى قوزغاتقانلىقىڭىزنى جەزملەڭ، بۇ بەتنى قايتا يۈكلەپ ئاندىن قايتا سىناڭ.',
 'nocookiesforlogin' => '{{int:nocookieslogin}}',
-'noname' => 'سىز تېخى ئىناۋەتلىك ئىشلەتكۈچى ئاتىنى بەلگىلىمىدىڭىز.',
+'noname' => 'سىز تېخى ئىناۋەتلىك ئىشلەتكۈچى نامىنى بەلگىلىمىدىڭىز.',
 'loginsuccesstitle' => 'تىزىمغا كىرىش مۇۋەپپەقىيەتلىك',
 'loginsuccess' => "'''سىز {{SITENAME}} غا \"\$1\" سالاھىيىتىدە كىردىڭىز.'''",
-'nosuchuser' => '"$1" ئاتلىق ئىشلەتكۈچىنى تاپالمىدى.
-ئىشلەتكۈچى ئاتىنى تەكشۈرۈڭ.
+'nosuchuser' => '"$1" ناملىق ئىشلەتكۈچىنى تاپالمىدى.
+ئىشلەتكۈچى نامىنى تەكشۈرۈڭ.
 ياكى [[Special:UserLogin/signup|يېڭى ھېسابات قۇرۇڭ]].',
-'nosuchusershort' => '"$1" ئاتلىق ئىشلەتكۈچى يوق.
+'nosuchusershort' => '"$1" ناملىق ئىشلەتكۈچى يوق.
 كىرگۈزگىنىڭىزنى تەكشۈرۈڭ.',
-'nouserspecified' => 'ئىشلەتكۈچى ئاتىدىن بىرنى بەلگىلەڭ.',
+'nouserspecified' => 'ئىشلەتكۈچى نامىدىن بىرنى بەلگىلەڭ.',
 'login-userblocked' => 'بۇ ئىشلەتكۈچى چەكلەنگەن. تىزىمغا كىرىشكە يول قويۇلمايدۇ.',
 'wrongpassword' => 'كىرگۈزگەن پارول خاتا.
 قايتا سىناڭ.',
@@ -574,48 +585,50 @@ cookies نى قوزغاتقانلىقىڭىزنى جەزملەڭ، بۇ بەتن
 'mailmypassword' => 'پارولنى ئەسلىگە قايتۇرماق',
 'passwordremindertitle' => '{{SITENAME}} ئۈچۈن يېڭى ۋاقىتلىق پارول',
 'passwordremindertext' => 'باشقىلار (بەلكىم سىز، IP ئادرېسى $1)
-{{SITENAME}} بېكەتنىڭ يېڭى ئىم ($4) نى ئىلتىماس قىلدى .
"$2" ئىشلەتكۈچىنىڭ يېڭى ۋاقىتلىق ئىمنى "$3" غا تەڭشىدى.
-ئەگەر بۇ مەشغۇلاتنى سىز ئىلتىماس قىلغان بولسىڭىز، دەرھال تىزىمغا كىرىپ يېڭى ئىمدىن بىرنى تاللاڭ.
-سىز بەلگىلىگەن يېڭى ئىم  {{PLURAL:$5|كۈن|$5 كۈن}}دە ۋاقتى توشىدۇ.
+{{SITENAME}} ($4) بېكەت ئۈچۈن يېڭى پارول ئىلتىماس قىلدى .
ئىشلەتكۈچى "$2" نىڭ يېڭى ۋاقىتلىق پارولى "$3" غا تەڭشەلدى.
+ئەگەر بۇ مەشغۇلاتنى سىز ئىلتىماس قىلغان بولسىڭىز، دەرھال تىزىمغا كىرىپ يېڭى پارولدىن بىرنى تاللاڭ.
+سىز بەلگىلىگەن يېڭى پارولنىڭ {{PLURAL:$5|كۈن|$5 كۈن}}دە ۋاقتى توشىدۇ.
 
-ئەگەر باشقىلار ئىلتىماس قىلغان بولسا ياكى ئۆزىڭىز بەلگىلىگەن ئىم ئېسىڭىزگە كېلىپ ئۇنى ئۆزگەرتمىسىڭىز،
+ئەگەر باشقىلار ئىلتىماس قىلغان بولسا ياكى ئۆزىڭىز بەلگىلىگەن پارول ئېسىڭىزگە كېلىپ ئۇنى ئۆزگەرتمىسىڭىز،
 
-بۇ ئۇچۇرغا پەرۋا قىلماي ئۆزىڭىزنىڭ كونا ئىمنى ئىشلىتىۋېرىڭ.',
+بۇ ئۇچۇرغا پەرۋا قىلماي ئۆزىڭىزنىڭ كونا پارولىنى ئىشلىتىۋېرىڭ.',
 'noemail' => '"$1" ئىشلەتكۈچىنىڭ ئېلخەت ئادرېسى خاتىرىلەنمەپتۇ.',
 'noemailcreate' => 'ئىناۋەتلىك ئېلخەت ئادرېسىدىن بىرنى تەمىنلىشىڭىز لازىم.',
-'passwordsent' => 'يېڭى ئىم "$1" ئىشلەتكۈچى تىزىملاتقاندا قالدۇرغان ئېلخەتكە يوللاندى..
+'passwordsent' => 'يېڭى پارول "$1" ئىشلەتكۈچى تىزىملاتقاندا قالدۇرغان ئېلخەتكە يوللاندى..
 ئېلخەتنى كۆرۈپ ئاندىن تىزىمغا كىرىڭ.',
-'blocked-mailpassword' => 'IP ئادرېسىڭىز تەھرىرلەشتىن چەكلەنگەن ھالەتتە، بىخەتەرلىك سەۋەبىدىن ئىم ئەسلىگە كەلتۈرۈش ئىقتىدارى چەكلەندى.',
-'eauthentsent' => 'جەزملەش ئېلخىتى تەۋسىيە قىلىنغان ئادرېسقا ئەۋەتىلدى .
+'blocked-mailpassword' => 'IP ئادرېسىڭىز تەھرىرلەشتىن چەكلەنگەن ھالەتتە، بىخەتەرلىك سەۋەبىدىن پارول ئەسلىگە كەلتۈرۈش ئىقتىدارى چەكلەندى.',
+'eauthentsent' => 'جەزملەش ئېلخېتى بېكىتىلگەن ئېلخەت ئادرېسىغا ئەۋەتىلدى .
 بۇ ھېساباتقا باشقا ئېلخەت ئەۋەتىشتىن ئىلگىرى، سىز ئالدى بىلەن بۇ خەتتىكى يېتەكچىگە ئاساسەن ئېلخەت ئادرېسىنىڭ ھەقىقىي ئىكەنلىكىنى جەزملىشىڭىز لازىم.',
-'throttled-mailpassword' => 'ئىم ئەسكەرتىش {{PLURAL:$1|سائەت|$1 سائەت}} ئىچىدە يوللىنىدۇ.
+'throttled-mailpassword' => 'پارول يېڭىلاش ئېلخېتى {{PLURAL:$1|سائەت|$1 سائەت}} ئىچىدە يوللىنىدۇ.
 بىخەتەرلىك يۈزىسىدىن ھەر {{PLURAL:$1|سائەت|$1 سائەت}}تە پەقەت بىرلا ئېلخەت ئەسكەرتىشى ئەۋەتىدۇ.',
 'mailerror' => 'ئېلخەت يوللىغاندا خاتالىق كۆرۈلدى:$1',
 'acct_creation_throttle_hit' => 'Wiki ئىشلىتىدىغان زىيارەتچى IP ئادرېسىڭىزنى ئىشلىتىپ {{PLURAL:$1|1 ھېسابات|$1 ھېسابات}} قۇردى.
 مۇشۇ پەيتتە يەنە ھېسابات قۇرالمايسىز.',
 'emailauthenticated' => 'ئېلخەت ئادرېسىڭىز $2 سائەت $3 دە دەلىللەندى.',
 'emailnotauthenticated' => 'ئېلخەت ئادرېسىڭىز تېخى دەلىللەنمىدى.
ªÛ\86Û\8bÛ\95Ù\86دÙ\89Ù\83Ù\89 Ø¦Ù\89Ù\82تÙ\89دارÙ\89 ھېچقانداق ئېلخەت ئەۋەتمەيدۇ.',
¨Û\87Ù\86داÙ\82 Ø¦Û\95Ú¾Û\8bاÙ\84دا ھېچقانداق ئېلخەت ئەۋەتمەيدۇ.',
 'noemailprefs' => 'بۇ ئىقتىدارنى ئىشلىتىش ئۈچۈن مايىللىق تەڭشىكىڭىزدە ئېلخەت ئادرېسى بەلگىلەڭ.',
 'emailconfirmlink' => 'ئېلخەت مەنزىلىڭىزنى جەزملەڭ',
 'invalidemailaddress' => 'ئېلخەت ئادرېس فورماتى خاتا.
 توغرا ئېلخەت ئادرېسى كىرگۈزۈڭ ياكى بۇ جاينى بوش قالدۇرۇڭ.',
 'cannotchangeemail' => 'بۇ wiki ھېساباتى تورخەت ئادرېسىنى ئۆزگەرتىشكە يول قويمايدۇ.',
-'emaildisabled' => 'بÛ\87 ØªÙ\88رتÛ\87را ئېلخەت يوللىيالمايدۇ.',
+'emaildisabled' => 'بÛ\87 Ø¨Û\90Ù\83Û\95ت ئېلخەت يوللىيالمايدۇ.',
 'accountcreated' => 'ھېسابات قۇرۇلدى',
-'accountcreatedtext' => '$1 نىڭ ھېساباتى قۇرۇلدى.',
+'accountcreatedtext' => '[[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|مۇنازىرە]]) ئۈچۈن ئىشلەتكۈچى ھېساباتى قۇرۇلدى.',
 'createaccount-title' => '{{SITENAME}} دا يېڭى ھېسابات قۇر',
-'createaccount-text' => 'بەزىلەر {{SITENAME}} دا ئېلخەت ئادرېسىڭىزنى ئىشلىتىپ، "$2" ئاتلىق ($4) يېڭى ھېسابات قۇردى، ئىم "$3".
-سىز تىزىمغا كىرىپ ئىم ئۆزگەرتىڭ.
+'createaccount-text' => 'بەزىلەر {{SITENAME}} دا ئېلخەت ئادرېسىڭىزنى ئىشلىتىپ، "$2" نامىدىكى ($4) يېڭى ھېسابات قۇردى، پارول "$3".
+سىز تىزىمغا كىرىپ پارولنى ئۆزگەرتىڭ.
 
 ئەگەر بۇ ھېسابات خاتا قۇرۇلغان بولسا بۇ ئۇچۇرغا پەرۋا قىلماڭ.',
-'usernamehasherror' => 'ئىشلەتكۈچى ئاتىدا مۇكەممەللىك كود ھەرپلىرى بولماسلىقى لازىم',
-'login-throttled' => 'سىز بۇ ھېساباتنىڭ ئىمنى كۆپ قېتىم سىنىدىڭىز.
-سەل تەخىر قىلىپ، ئاندىن قايتا سىناڭ.',
+'usernamehasherror' => 'ئىشلەتكۈچى نامىدا چاچما كود ھەرپلىرى بولماسلىقى لازىم',
+'login-throttled' => 'سىز بۇ ھېساباتتا تىزىمغا كىرىشنى كۆپ قېتىم سىنىدىڭىز.
+$1 ساقلاپ، ئاندىن قايتا سىناڭ.',
 'login-abort-generic' => 'تىزىمغا كىرەلمىدىڭىز - چېكىندى',
 'loginlanguagelabel' => 'تىل: $1',
 'suspicious-userlogout' => 'تىزىمدىن چىقىش ئىلتىماسىڭىز رەت قىلىندى، چۈنكى ئۇ بەلكىم بۇزۇلغان توركۆرگۈ ياكى غەملەك ۋاكالەتچىسى يوللىغان بولۇشى مۇمكىن.',
+'createacct-another-realname-tip' => 'ھەقىقىي ئىسمىڭىز ئىختىيارى.
+ئەگەر تەمىنلەشنى تاللىسىڭىز، ئۇ سىزنىڭ تۆھپىڭىزنىڭ ئىمزاسى بولىدۇ.',
 
 # Email sending
 'php-mail-error-unknown' => 'PHP نىڭ mail() فونكسىيەسىدىكى يوچۇن خاتالىق',
@@ -632,49 +645,50 @@ cookies نى قوزغاتقانلىقىڭىزنى جەزملەڭ، بۇ بەتن
 'newpassword' => 'يېڭى پارول:',
 'retypenew' => 'يېڭى پارولنى قايتا كىرگۈزۈڭ:',
 'resetpass_submit' => 'پارول بەلگىلەپ تىزىمغا كىرىڭ',
-'changepassword-success' => 'سىز ئىمنى مۇۋەپپەقىيەتلىك ئۆزگەرتتىڭىز!
- تىزىمغا كىرىۋاتىسىز…',
-'resetpass_forbidden' => 'ئىمنى ئۆزگەرتەلمىدى',
+'changepassword-success' => 'پارولىڭىز ئوڭۇشلۇق ئۆزگەرتىلدى!',
+'resetpass_forbidden' => 'پارولنى ئۆزگەرتەلمىدى',
 'resetpass-no-info' => 'سىز تىزىمغا كىرگەندىن كېيىن بىۋاسىتە بۇ بەتكە كىرىشىڭىز لازىم.',
 'resetpass-submit-loggedin' => 'پارولنى ئۆزگەرتىش',
 'resetpass-submit-cancel' => 'ۋاز كەچ',
-'resetpass-wrong-oldpass' => 'ۋاقىتلىق ياكى نۆۋەتتىكى ئىم ئىناۋەتسىز.
+'resetpass-wrong-oldpass' => 'ۋاقىتلىق ياكى نۆۋەتتىكى پارول ئىناۋەتسىز.
 
-ئىمنى ئاللىبۇرۇن ئۆزگەرتىپ بولدىڭىز ياكى يېڭى ۋاقىتلىق ئىم ئىلتىماس قىلدىڭىز.',
+پارولنى ئاللىبۇرۇن ئۆزگەرتىپ بولدىڭىز ياكى يېڭى ۋاقىتلىق پارول ئىلتىماس قىلدىڭىز.',
 'resetpass-temp-password' => 'ۋاقىتلىق پارول:',
+'resetpass-abort-generic' => 'پارول ئۆزگەرتىش بىر كېڭەيمە تەرىپىدىن بىكار قىلىندى.',
 
 # Special:PasswordReset
-'passwordreset' => 'ئىمنى ئەسلىگە قايتۇرماق',
-'passwordreset-legend' => 'ئىمنى ئەسلىگە قايتۇرماق',
-'passwordreset-disabled' => 'بۇ ۋىكىدا ئىمنى ئەسلىگە قايتۇرۇش چەكلەنگەن.',
-'passwordreset-username' => 'ئىشلەتكۈچى ئاتى:',
+'passwordreset' => 'پارولنى ئەسلىگە قايتۇرماق',
+'passwordreset-text-one' => 'ۋاقىتلىق پارولنى ئېلخەت ئارقىلىق قوبۇل قىلىش ئۈچۈن بۇ رامكىنى تولدۇرۇڭ.',
+'passwordreset-text-many' => '{{PLURAL:$1|ئېلخەت ئارقىلىق ۋاقىتلىق پارول قوبۇل قىلىش ئۈچۈن بۆلەكتىن بىرنى تولدۇرۇڭ.}}',
+'passwordreset-legend' => 'پارولنى ئەسلىگە قايتۇر',
+'passwordreset-disabled' => 'بۇ ۋىكىدا پارولنى ئەسلىگە قايتۇرۇش چەكلەنگەن.',
+'passwordreset-emaildisabled' => 'بۇ ۋىكىدا ئېلخەت ئىقتىدار چەكلەنگەن.',
+'passwordreset-username' => 'ئىشلەتكۈچى نامى:',
 'passwordreset-domain' => 'دائىرە:',
 'passwordreset-capture' => 'ھاسىل قىلىنغان ئېلخەتنى كۆرسىتەمدۇ؟',
-'passwordreset-capture-help' => 'ئەگەر بۇ رامكا تاللانسا، ئېلخەت (ۋاقىتلىق ئىمنى ئۆز ئىچىگە ئالىدۇ) كۆرسىتىپ ئىشلەتكۈچىگە يوللايدۇ.',
+'passwordreset-capture-help' => 'ئەگەر بۇ رامكا تاللانسا، ئېلخەت (ۋاقىتلىق پارولنى ئۆز ئىچىگە ئالىدۇ) كۆرسىتىپ ئىشلەتكۈچىگە يوللايدۇ.',
 'passwordreset-email' => 'ئېلخەت ئادرېس',
 'passwordreset-emailtitle' => '{{SITENAME}} دىكى ھېسابات تەپسىلاتى',
-'passwordreset-emailtext-ip' => 'باشقىلار (بەلكىم سىز، IP ئادرېسى $1)
-{{SITENAME}} ($4) دىكى ھېسابات تەپسىلات ئەسكەرتىشىنى ئىلتىماس قىلدى .
-تۆۋەندىكى ئىشلەتكۈچىنىڭ {{PLURAL:$3|ھېسابات|ھېسابات}}ى مۇشۇ ئېلخەتكە باغلانغان:
+'passwordreset-emailtext-ip' => 'باشقىلار (بەلكىم سىز، IP ئادرېسى $1) {{SITENAME}} ($4) دىكى پارولنى قايتا بېكىتىشنى ئىلتىماس قىلدى. تۆۋەندىكى ئىشلەتكۈچىنىڭ {{PLURAL:$3|ھېسابات|ھېسابات}}ى مۇشۇ ئېلخەتكە باغلانغان:
 
 $2
 
-{{PLURAL:$3|بۇ ۋاقىتلىق ئىم|بۇ ۋاقىتلىق ئىم}} {{PLURAL:$5|بىر كۈن|$5 كۈن}}دە ۋاقتى ئۆتىدۇ. ئەگەر بۇ مەشغۇلاتنى سىز ئىلتىماس قىلغان بولسىڭىز، دەرھال تىزىمغا كىرىپ يېڭى ئىمدىن بىرنى تاللاڭ.
-سىز بەلگىلىگەن يېڭى ئىم  {{PLURAL:$5|كۈن|$5 كۈن}}دە ۋاقتى توشىدۇ. ئەگەر باشقىلار ئىلتىماس قىلغان بولسا ياكى ئۆزىڭىز بەلگىلىگەن ئىم ئېسىڭىزگە كېلىپ ئۇنى ئۆزگەرتمىسىڭىز، 
-بۇ ئۇچۇرغا پەرۋا قىلماي ئۆزىڭىزنىڭ كونا ئىمنى ئىشلىتىۋېرىڭ.',
-'passwordreset-emailtext-user' => '{{SITENAME}} دىكى $1 ئىشلەتكۈچى ھېسابات تەپسىلات ئەسكەرتىشىنى ئىلتىماس قىلدى .
+{{PLURAL:$3|بۇ ۋاقىتلىق پارول|بۇ ۋاقىتلىق پارول}} {{PLURAL:$5|بىر كۈن|$5 كۈن}}دە ۋاقتى ئۆتىدۇ. ئەگەر بۇ مەشغۇلاتنى سىز ئىلتىماس قىلغان بولسىڭىز، دەرھال تىزىمغا كىرىپ يېڭى پارولدىن بىرنى تاللاڭ.
+سىز بەلگىلىگەن يېڭى پارول  {{PLURAL:$5|كۈن|$5 كۈن}}دە ۋاقتى توشىدۇ. ئەگەر باشقىلار ئىلتىماس قىلغان بولسا ياكى ئۆزىڭىز بەلگىلىگەن پارول ئېسىڭىزگە كېلىپ ئۇنى ئۆزگەرتمىسىڭىز، 
+بۇ ئۇچۇرغا پەرۋا قىلماي ئۆزىڭىزنىڭ كونا پارولىنى ئىشلىتىۋېرىڭ.',
+'passwordreset-emailtext-user' => '{{SITENAME}} دىكى ئىشلەتكۈچى $1 بېكەت {{SITENAME}} ($4) دىكى پارولىڭىزنى قايتا بېكىتىشنى ئىلتىماس قىلدى .
 تۆۋەندىكى ئىشلەتكۈچىنىڭ {{PLURAL:$3|ھېسابات|ھېسابات}}($4)ى مۇشۇ ئېلخەتكە باغلانغان:
 
 $2
 
-{{PLURAL:$3|بۇ ۋاقىتلىق ئىم|بۇ ۋاقىتلىق ئىم}} {{PLURAL:$5|بىر كۈن|$5 كۈن}}دە ۋاقتى ئۆتىدۇ. ئەگەر بۇ مەشغۇلاتنى سىز ئىلتىماس قىلغان بولسىڭىز، دەرھال تىزىمغا كىرىپ يېڭى ئىمدىن بىرنى تاللاڭ.
-سىز بەلگىلىگەن يېڭى ئىم  {{PLURAL:$5|كۈن|$5 كۈن}}دە ۋاقتى توشىدۇ. ئەگەر باشقىلار ئىلتىماس قىلغان بولسا ياكى ئۆزىڭىز بەلگىلىگەن ئىم ئېسىڭىزگە كېلىپ ئۇنى ئۆزگەرتمىسىڭىز، 
-بۇ ئۇچۇرغا پەرۋا قىلماي ئۆزىڭىزنىڭ كونا ئىمنى ئىشلىتىۋېرىڭ.',
-'passwordreset-emailelement' => 'ئىشلەتكۈچى ئاتى: $1
-ۋاقىتلىق ئىم: $2',
-'passwordreset-emailsent' => 'ئەسكەرتىش ئېلخەت يوللاندى.',
-'passwordreset-emailsent-capture' => 'ئەسكەرتىش ئېلخەت يوللاندى، تۆۋەندە كۆرسىتىلىدۇ.',
-'passwordreset-emailerror-capture' => 'ھاسىل قىلىنغان ئەسكەرتىش ئېلخەت تۆۋەندە كۆرسىتىلگەندەك ئەمما يوللىيالمىدى: $1',
+{{PLURAL:$3|بۇ ۋاقىتلىق پارول|بۇ ۋاقىتلىق پارول}} {{PLURAL:$5|بىر كۈن|$5 كۈن}}دە ۋاقتى ئۆتىدۇ. ئەگەر بۇ مەشغۇلاتنى سىز ئىلتىماس قىلغان بولسىڭىز، دەرھال تىزىمغا كىرىپ يېڭى پارولدىن بىرنى تاللاڭ.
+سىز بەلگىلىگەن يېڭى پارول {{PLURAL:$5|كۈن|$5 كۈن}}دە ۋاقتى توشىدۇ. ئەگەر باشقىلار ئىلتىماس قىلغان بولسا ياكى ئۆزىڭىز بەلگىلىگەن پارول ئېسىڭىزگە كېلىپ ئۇنى ئۆزگەرتمىسىڭىز، 
+بۇ ئۇچۇرغا پەرۋا قىلماي ئۆزىڭىزنىڭ كونا پارولىنى ئىشلىتىۋېرىڭ.',
+'passwordreset-emailelement' => 'ئىشلەتكۈچى نامى: $1
+ۋاقىتلىق پارول: $2',
+'passwordreset-emailsent' => 'پارولنى قايتا بېكىتىش ئېلخېتى يوللاندى.',
+'passwordreset-emailsent-capture' => 'پارولنى قايتا بېكىتىش ئېلخېتى يوللاندى، تۆۋەندە كۆرسىتىلىدۇ.',
+'passwordreset-emailerror-capture' => 'ھاسىل قىلىنغان پارولنى قايتا بېكىتىش ئېلخېتى تۆۋەندە كۆرسىتىلگەندەك ئەمما ئۇنى {{GENDER:$2|ئىشلەتكۈچى}}گە يوللىيالمىدى: $1',
 
 # Special:ChangeEmail
 'changeemail' => 'ئېلخەت ئادرېس ئۆزگەرت',
@@ -688,6 +702,16 @@ $2
 'changeemail-submit' => 'ئېلخەت ئۆزگەرت',
 'changeemail-cancel' => 'ۋاز كەچ',
 
+# Special:ResetTokens
+'resettokens' => 'ئاچقۇچلۇق بەلگىلەرنى قايتا بېكىتمەك',
+'resettokens-no-tokens' => 'قايتا بېكىتىدىغان ھېچقانداق ئاچقۇچلۇق بەلگە يوق.',
+'resettokens-legend' => 'ئاچقۇچلۇق بەلگىلەرنى قايتا بېكىتمەك',
+'resettokens-tokens' => 'ئاچقۇچلۇق بەلگىلەر:',
+'resettokens-token-label' => '$1 (نۆۋەتتىكى قىممىتى: $2)',
+'resettokens-watchlist-token' => '[[Special:Watchlist|كۆزىتىش تىزىملىكىڭىزدىكى بەتلەر ئۆزگىرىشى]] (Atom/RSS) تور مەنبەسىنىڭ ئاچقۇچلۇق بەلگىسى',
+'resettokens-done' => 'ئاچقۇچلۇق بەلگىلەر قايتا بېكىتىلدى.',
+'resettokens-resetbutton' => 'تاللانغان ئاچقۇچلۇق بەلگىلەرنى قايتا بېكىت',
+
 # Edit page toolbar
 'bold_sample' => 'توم خەت',
 'bold_tip' => 'توم خەت',
@@ -864,7 +888,7 @@ $2
 'cascadeprotectedwarning' => "'''ئاگاھلاندۇرۇش:''' بۇ بەت قۇلۇپلانغان، پەقەت باشقۇرغۇچى ھوقۇقى بار ئىشلەتكۈچىلەرلا تەھرىرلىيەلەيدۇ، چۈنكى بۇ بەت تۆۋەندىكى زەنجىرسىمان قۇلۇپلانغان {{PLURAL:$1| بىر| بىر قانچە}} بەتنى ئۆز ئىچىگە ئالىدۇ:",
 'titleprotectedwarning' => "'''ئاگاھلاندۇرۇش: بۇ بەت قۇلۇپلانغان شۇڭلاشقا [[Special:ListGroupRights|بەلگىلەنگەن ھوقۇق]] بولغاندىلا قۇرغىلى بولىدۇ.'''
 پايدىلىنىش ئۈچۈن تۆۋەندە يېقىنقى خاتىرە تەمىنلەندى:",
-'templatesused' => 'بۇ بەتتە ئىشلىتىلگەن {{PLURAL:$1| قېلىپ| قېلىپ}}:',
+'templatesused' => 'بۇ بەتتە ئىشلىتىلگەن {{PLURAL:$1| قېلىپ| قېلىپلار}}:',
 'templatesusedpreview' => 'بۇ قېتىملىق ئالدىن كۆزىتىشكە ئىشلەتكەن {{PLURAL:$1| قېلىپ| قېلىپ}}:',
 'templatesusedsection' => 'بۇ ئابزاستا ئىشلەتكەن {{PLURAL:$1| قېلىپ| قېلىپ}}:',
 'template-protected' => '(قوغدالغان)',
@@ -877,7 +901,7 @@ $2
 'nocreate-loggedin' => 'يېڭى بەت قۇرۇش ھوقۇقىڭىز يوق.',
 'sectioneditnotsupported-title' => 'ئابزاس تەھرىرلەشنى قوللىمايدۇ',
 'sectioneditnotsupported-text' => 'بۇ بەت ئابزاس تەھرىرلەشنى قوللىمايدۇ.',
-'permissionserrors' => 'ھوقۇق چېكى خاتالىقى',
+'permissionserrors' => 'ئىجازەت خاتالىقى',
 'permissionserrorstext' => 'تۆۋەندىكى {{PLURAL:$1|سەۋەپ|سەۋەپ}}: تۈپەيلىدىن تۆۋەندىكى مەشغۇلاتنى ئېلىپ بېرىش ھوقۇقىڭىز يوق.',
 'permissionserrorstext-withaction' => '{{PLURAL:$1|سەۋەب|سەۋەبلەر}} تۈپەيلىدىن $2 مەشغۇلاتى ئېلىپ بېرىش ھوقۇقىڭىز يوق:',
 'recreate-moveddeleted-warn' => "'''ئاگاھلاندۇرۇش: ئىلگىرى ئۆچۈرگەن ھۆججەتتىن بىرنى قۇرۇۋاتىسىز.'''
@@ -893,15 +917,18 @@ $2
 ئۇ بايىلا ئۆچۈرۈلگەن بولۇشى مۇمكىن.',
 'edit-conflict' => 'تەھرىر توقۇنۇشى.',
 'edit-no-change' => 'تەھرىرلىگىنىڭىزگە پەرۋا قىلىنمىدى، چۈنكى تېكستتە ئۆزگىرىش بولمىدى.',
-'edit-already-exists' => 'يېڭى بەت قۇرالمىدى
-ئۇ مەۋجۇد.',
+'postedit-confirmation' => 'تەھرىرلىگىنىڭىز ساقلاندى.',
+'edit-already-exists' => 'يېڭى بەت قۇرالمىدى.
+بەت بۇرۇندىن مەۋجۇد.',
 'defaultmessagetext' => 'كۆڭۈلدىكى ئۇچۇر تېكستى',
 'content-failed-to-parse' => '$2 نى $1 گە ئانالىز قلش مەغلۇپ بولدى: $3',
 'invalid-content-data' => 'مەزمۇن سانلىق مەلۇماتى ئىناۋەتسىز',
 'content-not-allowed-here' => '[[$2]] بەتتە "$1" مەزمۇنغا يول قويۇلمايدۇ',
+'editwarning-warning' => 'بەتتىن ئايرىلغاندا بەلكىم بارلىق تەھرىرلىگىنىڭىز بېكار بولۇپ كېتىشى مۇمكىن.
+ئ‍ەگەر تىزىمغا كىرسىڭىز، مايىللىق بېتىڭىزنىڭ «تەھرىر» بۆلىكىدە، بۇ ئەسكەرتمىنى ئىناۋەتسىز قىلالايسىز.',
 
 # Content models
-'content-model-wikitext' => 'wiki تېكىستى',
+'content-model-wikitext' => 'ۋىكىتېكىست',
 'content-model-text' => 'ساپ تېكىست',
 'content-model-javascript' => 'JavaScript',
 'content-model-css' => 'CSS',
@@ -934,6 +961,7 @@ $2
 'undo-failure' => 'ئوتتۇرىلىقتا بىردەك بولماسلىق سەۋەبىدىن بۇ تەھرىردىن يېنىۋالغىلى بولمايدۇ.',
 'undo-norev' => 'تۈزىتىلگەن نەشرى مەۋجۇد ئەمەس ياكى ئۆچۈرۈلگەنلىكتىن، بۇ تەھرىردىن يېنىۋالغىلى بولمايدۇ.',
 'undo-summary' => '[[Special:Contributions/$2|$2]] ([[User talk:$2|مۇنازىرە]]) ئېلىپ بارغان تۈزىتىش $1',
+'undo-summary-username-hidden' => 'بىر يوشۇرۇن ئىشلەتكۈچى تەرىپىدىن يېنىۋېلىندى $1.',
 
 # Account creation failure
 'cantcreateaccounttitle' => 'ھېسابات قۇرالمىدى',
@@ -948,8 +976,8 @@ $3 تەمىنلىگەن چەكلەش سەۋەبى ''$2''",
 'currentrev-asof' => '$1 نىڭ نۆۋەتتىكى تۈزىتىلگەن نەشرى',
 'revisionasof' => '$1 تۈزەتكەن نەشرى',
 'revision-info' => '$1 دىكى $2 ئۆزگەرتكەن نەشرى',
-'previousrevision' => 'â\86\90 كونا نەشرى',
-'nextrevision' => 'Ù\8aÛ\90Ú­Ù\89راÙ\82 ØªÛ\88زÙ\89تÙ\89Ø´ â\86\92',
+'previousrevision' => 'â\86\92 كونا نەشرى',
+'nextrevision' => 'Ù\83Û\90Ù\8aÙ\89Ù\86Ù\83Ù\89 Ù\86Û\95شرÙ\89 â\86\90',
 'currentrevisionlink' => 'نۆۋەتتىكى تۈزىتىش',
 'cur' => 'نۆۋەتتىكى',
 'next' => 'كەينى',
@@ -960,8 +988,8 @@ $3 تەمىنلىگەن چەكلەش سەۋەبى ''$2''",
 چۈشەندۈرۈش: '''({{int:cur}})'' نۆۋەتتىكى نەشرى بىلەن سېلىشتۇرۇشنى كۆرسىتىدۇ.
  '''({{int:last}})''' ئالدىنقى ئۆزگەرتىلگەن نەشرى بىلەن سېلىشتۇرۇشنى كۆرسىتىدۇ.
  '''{{int:minoreditletter}}''' ئازراقلا ئۆزگەرتىش.",
-'history-fieldset-title' => 'كۆز يۈگۈرتۈش تارىخى',
-'history-show-deleted' => 'ئۆچۈرۈلگەنلا',
+'history-fieldset-title' => 'تارىخىنى كۆرسەت',
+'history-show-deleted' => 'ئÛ\86Ú\86Û\88رÛ\88Ù\84Ú¯Û\95Ù\86Ù\86Ù\89Ù\84ا',
 'histfirst' => 'ئەڭ كونا',
 'histlast' => 'ئەڭ يېڭى',
 'historysize' => '$1 {{PLURAL:$1|بايت|بايت}}',
@@ -977,9 +1005,9 @@ $3 تەمىنلىگەن چەكلەش سەۋەبى ''$2''",
 
 # Revision deletion
 'rev-deleted-comment' => '(تەھرىرلەش ئۈزۈندىسى چىقىرىۋېتىلدى)',
-'rev-deleted-user' => '(ئىشلەتكۈچى ئاتى چىقىرىۋېتىلدى)',
+'rev-deleted-user' => '(ئىشلەتكۈچى نامى چىقىرىۋېتىلدى)',
 'rev-deleted-event' => '(خاتىرە مەشغۇلاتى چىقىرىۋېتىلدى)',
-'rev-deleted-user-contribs' => '[ئىشلەتكۈچى ئاتى ياكى IP ئادرېس چىقىرىۋېتىلدى - تۆھپىدىن تەھرىرنى يوشۇر]',
+'rev-deleted-user-contribs' => '[ئىشلەتكۈچى نامى ياكى IP ئادرېس چىقىرىۋېتىلدى - تۆھپىدىن تەھرىرنى يوشۇر]',
 'rev-deleted-text-permission' => "'''ئاگاھلاندۇرۇش: بۇ بەتنىڭ تۈزىتىلگەن نەشرى'''ئۆچۈرۈلگەن'''
 [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} ئۆچۈرۈش خاتىرىسى]دىن تەپسىلىي ئۇچۇرنى تاپقىلى بولىدۇ.",
 'rev-deleted-text-unhide' => "بۇ بەتنىڭ تۈزىتىلگەن نەشرى '''ئۆچۈرۈلگەن'''.
@@ -1021,15 +1049,15 @@ $3 تەمىنلىگەن چەكلەش سەۋەبى ''$2''",
 * نامۇۋاپىق شەخسىي ئۇچۇر
 *: ''home ئولتۇرۇشلۇق ئادرېس، تېلېفون نومۇر، كىملىك نومۇرى قاتارلىق.''",
 'revdelete-legend' => 'كۆرۈنۈشچانلىق چەكلىمە تەڭشىكى',
-'revdelete-hide-text' => 'تۈزىتىش نەشرىنىڭ تېكستىنى يوشۇر',
+'revdelete-hide-text' => 'تۈزىتىلگەن تېكىست',
 'revdelete-hide-image' => 'ھۆججەت مەزمۇنىنى يوشۇر',
 'revdelete-hide-name' => 'مەشغۇلات ۋە نىشاننى يوشۇر',
 'revdelete-hide-comment' => 'تەھرىر ئىزاھاتىنى يوشۇر',
 'revdelete-hide-user' => 'تەھرىرلىگۈچىنىڭ نامى/IP ئادرېسىنى يوشۇر',
 'revdelete-hide-restricted' => 'مەشغۇلاتچى ۋە باشقا ئىشلەتكۈچىنىڭ سانلىق مەلۇمات كۆرۈشىنىمۇ چەكلە',
 'revdelete-radio-same' => '(ئۆزگەرتمە)',
-'revdelete-radio-set' => 'ھەئە',
-'revdelete-radio-unset' => 'Ù\8aاÙ\82',
+'revdelete-radio-set' => 'يوشۇرۇن',
+'revdelete-radio-unset' => 'Ù\83Û\86رÛ\88Ù\86Ù\89دÙ\89غاÙ\86',
 'revdelete-suppress' => 'مەشغۇلاتچى ۋە باشقا ئىشلەتكۈچىنىڭ سانلىق مەلۇمات كۆرۈشىنىمۇ چەكلە',
 'revdelete-unsuppress' => 'ئەسلىگە كەلتۈرۈلگەن تۈزىتىلگەن نەشرىدىن چەكلىمىنى چىقىرىۋەت',
 'revdelete-log' => 'سەۋەب:',
@@ -1133,7 +1161,7 @@ $1",
 'searchprofile-articles' => 'مەزمۇن بېتى',
 'searchprofile-project' => 'ياردەم ۋە قۇرۇلۇش بەتلەر',
 'searchprofile-images' => 'كۆپ ۋاسىتە',
-'searchprofile-everything' => 'Ú¾Û\95Ù\85Ù\85Û\95 Ø¦Ù\89Ø´',
+'searchprofile-everything' => 'Ú¾Û\95Ù\85Ù\85Û\95 Ø¨Û\95ت',
 'searchprofile-advanced' => 'ئالىي',
 'searchprofile-articles-tooltip' => '$1 دىن ئىزدە',
 'searchprofile-project-tooltip' => '$1 دىن ئىزدە',
@@ -1166,11 +1194,13 @@ $1",
 'search-external' => 'ئالىي ئىزدەش',
 'searchdisabled' => '{{SITENAME}} نىڭ ئىزدىشى چەكلەنگەن. سىز ھازىرچە Google ئىشلىتىپ ئىزدەپ تۇرۇڭ،.
 دىققەت ئۇلار ئىندېكسلىغان {{SITENAME}} مەزمۇنىنىڭ ۋاقتى ئۆتكەن بولۇشى مۇمكىن.',
+'search-error' => 'ئىزدەش جەريانىدا بىر خاتالىق يۈز بەردى: $1',
 
 # Preferences page
 'preferences' => 'مايىللىق',
 'mypreferences' => 'مايىللىق',
 'prefs-edits' => 'تەھرىر سانى:',
+'prefsnologintext2' => 'مايىللىقىڭىزنى ئۆزگەرتىش ئۈچۈن $1.',
 'prefs-skin' => 'تېرە',
 'skin-preview' => 'ئالدىن كۆزەت',
 'datedefault' => 'مايىللىق يوق',
@@ -1193,8 +1223,8 @@ $1",
 'prefs-email' => 'ئېلخەت تاللانما',
 'prefs-rendering' => 'كۆرۈنۈش',
 'saveprefs' => 'ساقلا',
-'restoreprefs' => 'بارلىق كۆڭۈلدىكى تەڭشەكنى ئەسلىگە كەلتۈر',
-'prefs-editing' => 'تەھرىرلەۋاتىدۇ',
+'restoreprefs' => 'بارلىق كۆڭۈلدىكى تەڭشەكنى ئەسلىگە كەلتۈر (بارلىق بۆلەكلەردە)',
+'prefs-editing' => 'تەھرىر',
 'rows' => 'قۇر:',
 'columns' => 'ستون:',
 'searchresultshead' => 'ئىزدە',
@@ -1241,7 +1271,7 @@ $1",
 'prefs-memberingroups-type' => '$1',
 'prefs-registration' => 'خەتلەتكەن ۋاقىت:',
 'prefs-registration-date-time' => '$1',
-'yourrealname' => 'ﺗﻮﻟﯘﻕ ئىسىم:',
+'yourrealname' => 'ھەقىقىي ئىسىم:',
 'yourlanguage' => 'تىل:',
 'yourvariant' => 'مەزمۇن تىل شالغۇتى:',
 'prefs-help-variant' => 'بۇ ۋىكىدا كۆرسىتىشكە ئىشلىتىدىغان تىل تۈرى ياكى ئىملا تەكشۈرۈش',
@@ -1253,10 +1283,10 @@ HTML بەلگىسىنى تەكشۈرۈڭ.',
 'badsiglength' => 'ئىمزايىڭىز بەك ئۇزۇن.
 
 ئىمزانىڭ ئۇزۇنلۇقى {{PLURAL:$1| ھەرپ| ھەرپ}}تىن ئاشسا بولمايدۇ.',
-'yourgender' => 'جىنسى:',
-'gender-unknown' => 'بÛ\95Ù\84Ú¯Ù\89Ù\84Û\95Ù\86Ù\85Ù\89Ú¯ەن',
-'gender-male' => 'ئÛ\95ر',
-'gender-female' => 'ئايال',
+'yourgender' => 'قانداق تەسۋىرلەشنى ياخشى كۆرىسىز؟',
+'gender-unknown' => 'سÛ\86زÙ\84Ù\89Ù\85Û\95سÙ\84Ù\89Ù\83Ù\86Ù\89 Ù\8aاخشÙ\89 Ù\83Û\86رÙ\89Ù\85ەن',
+'gender-male' => 'ئÛ\87 (ئÛ\95ر) Û\8bÙ\89Ù\83Ù\89 Ø¨Û\95تÙ\84Ù\89رÙ\89Ù\86Ù\89 ØªÛ\95ھرÙ\89رÙ\84Û\95Ù\8aدÛ\87.',
+'gender-female' => 'ئۇ (ئايال) ۋىكى بەتلىرىنى تەھرىرلەيدۇ.',
 'prefs-help-gender' => 'تاللاشچان: يۇمشاق دېتالنىڭ خاراكتىرى تەرىپىدىن بەلگىلىنىدۇ
 
 بۇ ئۇچۇر كۆپچىلىككە ئاشكارىلىنىدۇ.',
@@ -1272,7 +1302,7 @@ HTML بەلگىسىنى تەكشۈرۈڭ.',
 'prefs-signature' => 'ئىمزا',
 'prefs-dateformat' => 'چېسلا فورماتى',
 'prefs-timeoffset' => 'ۋاقىت پەرقى',
-'prefs-advancedediting' => 'ئاÙ\84ىي تاللانما',
+'prefs-advancedediting' => 'دائÙ\89Ù\85ىي تاللانما',
 'prefs-editor' => 'تەھرىرلىگۈچ',
 'prefs-preview' => 'ئالدىن كۆزەت',
 'prefs-advancedrc' => 'ئالىي تاللانما',
@@ -1464,7 +1494,7 @@ HTML بەلگىسىنى تەكشۈرۈڭ.',
 'rclistfrom' => '$1 دىن باشلانغان يېڭى ئۆزگەرتىشنى كۆرسەت',
 'rcshowhideminor' => '$1 ئازراقلا تەھرىر',
 'rcshowhidebots' => '$1 ماشىنا ئادەمنىڭ تەھرىرى',
-'rcshowhideliu' => '$1 ØªÙ\89زÙ\89Ù\85غا Ù\83Ù\89رگÛ\95Ù\86 Ø¦Ù\89Ø´Ù\84Û\95تÙ\83Û\88Ú\86Ù\89Ù\86Ù\89Ú­ ØªÛ\95ھرÙ\89رى',
+'rcshowhideliu' => '$1 Ø®Û\95تÙ\84Û\95Ù\86Ú¯Û\95Ù\86 Ø¦Ù\89Ø´Ù\84Û\95تÙ\83Û\88Ú\86ى',
 'rcshowhideanons' => '$1 ئىمزاسىز ئىشلەتكۈچى تەھرىرى',
 'rcshowhidepatr' => '$1 كۆزىتىلگەن تەھرىر',
 'rcshowhidemine' => '$1 مېنىڭ تەھرىرىم',
@@ -1494,7 +1524,7 @@ HTML بەلگىسىنى تەكشۈرۈڭ.',
 'recentchangeslinked-title' => '"$1" مۇناسىۋەتلىك ئۇلانما ئۆزگەردى',
 'recentchangeslinked-summary' => "بۇ ئالاھىدە بەت يۈزى كۆرسەتكەن بەتتىن ئۇلىنىپ چىققان يېقىنقى ئۆزگەرتىش تىزىملىكى (ياكى ئالاھىدە تۈرنىڭ ئەزاسى).
  [[Special:Watchlist|كۆزەت تىزىملىكىڭىز]] دىكى بەت يۈزى '''توم''' كۆرسىتىلىدۇ.",
-'recentchangeslinked-page' => 'بەت ئاتى:',
+'recentchangeslinked-page' => 'بەت نامى:',
 'recentchangeslinked-to' => 'بېرىلگەن بەتكە ئۇلانغان ئۆزگەرتىشنى كۆرسەت',
 
 # Upload
@@ -2014,7 +2044,7 @@ URL نىڭ توغرىلىقى ۋە تور بېكەتنى زىيارەت قىلى
 'cachedspecial-refresh-now' => 'يېقىنقىنى كۈرىشى.',
 
 # Special:Categories
-'categories' => 'كاتېگورىيە',
+'categories' => 'تۈرلەر',
 'categoriespagetext' => 'تۆۋەندىكى {{PLURAL:$1|كاتېگورىيە|كاتېگورىيە}}دە بەت ياكى ۋاسىتە بار.
 [[Special:UnusedCategories|ئىشلىتىلمىگەن كاتېگورىيە]] بۇ جايدا كۆرسىتىلمەيدۇ.
 شۇنىڭ بىلەن بىللە [[Special:WantedCategories|لازىملىق كاتېگورىيە]] نى كۆرۈڭ.',
@@ -2342,7 +2372,7 @@ $2 نىڭ ئاخىرقى تۈزىتىلگەن نەشرىگە ئۆزگەرتىل
 'undelete-nodiff' => 'ئالدىنقى تۈزىتىلگەن نەشرى تېپىلمىدى.',
 'undeletebtn' => 'ئەسلىگە كەلتۈر',
 'undeletelink' => 'كۆرسەت/ئەسلىگە كەلتۈر',
-'undeleteviewlink' => 'كۆرۈنۈش',
+'undeleteviewlink' => 'كۆرسەت',
 'undeleteinvert' => 'ئەكسىچە تاللا',
 'undeletecomment' => 'سەۋەب:',
 'undeletedrevisions' => '{{PLURAL:$1|1 تۈزىتىش|$1 تۈزىتىش}} ئەسلىگە كەلتۈرۈلدى',
@@ -2404,13 +2434,13 @@ $1',
 'sp-contributions-blocked-notice-anon' => 'بۇ IP ئادرېس نۆۋەتتە چەكلەنگەن.
 پايدىلىنىش ئۈچۈن  تۆۋەندە يېقىنقى چەكلەش خاتىرە تۈرلىرى تەمىنلەندى:',
 'sp-contributions-search' => 'تۆھپە ئىزدە',
-'sp-contributions-username' => 'IP ئادرېس ياكى ئىشلەتكۈچى ئاتى:',
+'sp-contributions-username' => 'IP ئادرېس ياكى ئىشلەتكۈچى نامى:',
 'sp-contributions-toponly' => 'ئەڭ يېڭى تۈزىتىلگەن نەشرىنىلا كۆرسەت',
 'sp-contributions-submit' => 'ئىزدە',
 
 # What links here
 'whatlinkshere' => 'بۇ جايدىكى ئۇلانما',
-'whatlinkshere-title' => '"$1" بەتكە ئۇلانغان',
+'whatlinkshere-title' => '"$1" بەتكە ئۇلانغان بەتلەر',
 'whatlinkshere-page' => 'بەت:',
 'linkshere' => "تۆۋەندىكى بەتلەر '''[[:$1]]'''غا ئۇلانغان:",
 'nolinkshere' => "'''[[:$1]]'''غا ئۇلانغان بەت يوق.",
@@ -2420,7 +2450,7 @@ $1',
 'isimage' => 'ھۆججەت ئۇلانما',
 'whatlinkshere-prev' => '{{PLURAL:$1|ئالدى|ئالدى $1}}',
 'whatlinkshere-next' => '{{PLURAL:$1|كەينى|كەينى $1}}',
-'whatlinkshere-links' => 'â\86\90 ئۇلانما',
+'whatlinkshere-links' => 'â\86\92 ئۇلانما',
 'whatlinkshere-hideredirs' => '$1 قايتا نىشان بەلگىلە',
 'whatlinkshere-hidetrans' => '$1 ئۆز ئىچىگە ئالغان',
 'whatlinkshere-hidelinks' => '$1 ئۇلانما',
@@ -2504,7 +2534,7 @@ $1',
 'blocklink' => 'چەكلە',
 'unblocklink' => 'چەكلەشنى توختات',
 'change-blocklink' => 'ئۆزگەرتىش چەكلەنگەن',
-'contribslink' => 'تۆھپىكارلار',
+'contribslink' => 'تۆھپە',
 'emaillink' => 'ئېلخەت يوللا',
 'autoblocker' => 'سىز "[[User:$1|$1]]" بىلەن بىر IP ئادرېسنى ئورتاق ئىشلەتكەچكە ئۆزلۈكىدىن چەكلىدى.
  $1 نىڭ چەكلەنگەنلىك سەۋەبى:  "$2"',
@@ -2797,8 +2827,8 @@ $1',
 'tooltip-pt-anonuserpage' => 'بۇ بېكەتنى تەھرىرلىگەندە ئىشلەتكەن IP ماس كەلگەن ئىشلەتكۈچى بېتى',
 'tooltip-pt-mytalk' => 'مۇنازىرە بېتىڭىز',
 'tooltip-pt-anontalk' => 'مەزكۇر IP ئادرېستىن كەلگەن تەھرىرنىڭ مۇنازىرىسى',
-'tooltip-pt-preferences' => 'مايىللىق تەڭشىىڭىز',
-'tooltip-pt-watchlist' => 'ئÛ\86زگÙ\89رÙ\89Ø´Ù\86Ù\89 Ù\83Û\86زÛ\95ت Ù\82Ù\89Ù\84Ù\89Û\8bاتÙ\82اÙ\86 Ø¨Û\95ت ØªÙ\89زÙ\89Ù\85Ù\84Ù\89Ù\83Ù\89Ú­Ù\89ز',
+'tooltip-pt-preferences' => 'مايىللىق تەڭشىگىڭىز',
+'tooltip-pt-watchlist' => 'سÙ\89ز Ù\83Û\86زÙ\89تÙ\89Û\8bاتÙ\82اÙ\86 Ø¨Û\95تÙ\84Û\95ر ØªÙ\89زÙ\89Ù\85Ù\84Ù\89Ú¯Ù\89',
 'tooltip-pt-mycontris' => 'تۆھپە تىزىملىكىڭىز',
 'tooltip-pt-login' => 'تىزىمغا كىرىشىڭىزنى تەۋسىيە قىلىمىز ئەمما مەجبۇرىي ئەمەس',
 'tooltip-pt-anonlogin' => 'تىزىمغا كىرىشىڭىزنى تەۋسىيە قىلىمىز ئەمما مەجبۇرىي ئەمەس',
@@ -2806,7 +2836,7 @@ $1',
 'tooltip-ca-talk' => 'بەت مەزمۇنى ھەققىدىكى مۇنازىرە',
 'tooltip-ca-edit' => 'بۇ بەتنى تەھرىرلىيەلەيسىز.
 ساقلاشتىن ئىلگىرى ئالدىن كۆزەت كۇنۇپكىسىنى ئىشلىتىڭ',
-'tooltip-ca-addsection' => 'يېڭى بىر سۆزلىشىش باشلا',
+'tooltip-ca-addsection' => 'يېڭى بىر مۇنازىرە باشلاڭ',
 'tooltip-ca-viewsource' => 'بۇ بەت قوغدالغان.
 مەنبە ھۆججىتىنى كۆرەلەيسىز',
 'tooltip-ca-history' => 'بۇ بەتنىڭ بۇرۇنقى نەشرى',
@@ -2828,7 +2858,7 @@ $1',
 'tooltip-n-recentchanges' => 'wiki بېتىدىكى يېقىنقى ئۆزگىرىش تىزىملىكى',
 'tooltip-n-randompage' => 'خالىغان بەتنى يۈكلە',
 'tooltip-n-help' => 'ياردەم ئىزدەيدىغان ئورۇن',
-'tooltip-t-whatlinkshere' => 'بۇ جايغا ئۇلانغان ھەممە wiki بېتىنى كۆرسەت',
+'tooltip-t-whatlinkshere' => 'بۇ جايغا ئۇلانغان ھەممە ۋىكى بېتىنى كۆرسەت',
 'tooltip-t-recentchangeslinked' => 'بۇ بەتكە ئۇلانغان بەتنىڭ يېقىنقى ئۆزگىرىشى',
 'tooltip-feed-rss' => 'بۇ بەتنىڭ RSS قانىلى',
 'tooltip-feed-atom' => 'بۇ بەتنىڭ Atom قانىلى',
@@ -2843,7 +2873,7 @@ $1',
 'tooltip-ca-nstab-media' => 'ۋاسىتە بېتىنى كۆرسەت',
 'tooltip-ca-nstab-special' => 'بۇ ئالاھىدە بەت، بۇ بەتنى تەھرىرلىيەلمەيسىز.',
 'tooltip-ca-nstab-project' => 'قۇرۇلۇش بېتىنى كۆرسەت',
-'tooltip-ca-nstab-image' => 'ھۆججەت بېتى كۆرسەت',
+'tooltip-ca-nstab-image' => 'ھۆججەت بېتىنى كۆرسەت',
 'tooltip-ca-nstab-mediawiki' => 'سىستېما ئۇچۇرىنى كۆرسەت',
 'tooltip-ca-nstab-template' => 'قېلىپ كۆرسەت',
 'tooltip-ca-nstab-help' => 'ياردەم بېتىنى كۆرسەت',
@@ -2995,8 +3025,8 @@ $1',
 'filedelete-archive-read-only' => 'تور بەت مۇلازىمىتىرىدىكى ئارخىپ مۇندەرىجىسى "$1"  گە يازغىلى بولمايدۇ.',
 
 # Browsing diffs
-'previousdiff' => 'â\86\90 Ø¦Ø§Ù\84دÙ\89Ù\86Ù\82Ù\89 Ù\86Û\95شرÙ\89',
-'nextdiff' => 'Ù\8aÛ\90Ú­Ù\89 Ù\86Û\95شرÙ\89 â\86\92',
+'previousdiff' => 'â\86\92 Ø¦Ø§Ù\84دÙ\89Ù\86Ù\82Ù\89 ØªÛ\95ھرÙ\89ر',
+'nextdiff' => 'Ù\83Û\90Ù\8aÙ\89Ù\86Ù\83Ù\89 ØªÛ\95ھرÙ\89ر â\86\90',
 
 # Media information
 'mediawarning' => "'''ئاگاھلاندۇرۇش''': بۇ ھۆججەتتە زەھەرخەندە كود بولۇشى مۇمكىن، ئۇنى ئىجرا قىلسىڭىز سىستېمىڭىزغا خەۋپ ئېلىپ كېلىشى مۇمكىن.",
@@ -3101,7 +3131,7 @@ Variants for Chinese language
 'variantname-kk' => 'kk',
 
 # Metadata
-'metadata' => 'مېتا سانلىق مەلۇماتى',
+'metadata' => 'مېتامەلۇمات',
 'metadata-help' => 'بۇ ھۆججەت كېڭەيتىلگەن تەپسىلاتنى ئۆز ئىچىگە ئالغان. بۇ ئۇچۇرلارنى رەقەملىك ئاپپارات ياكى سكاننېر قۇرغان ياكى رەقەملەشتۈرۈش جەريانىدا قوشۇلغان بولۇشى مۇمكىن.
 ئەگەر بۇ ھۆججەتنىڭ ئەسلى ھۆججىتى ئۆزگەرتىلسە، بىر قىسىم ئۇچۇرلار ئۆزگەرتىلگەندىن كېيىنكى ھۆججەتتە تولۇق ئەكس ئەتمەيدۇ.',
 'metadata-expand' => 'كېڭەيتىلگەن تەپسىلاتنى كۆرسەت',
index 1272214..d038f48 100644 (file)
@@ -379,7 +379,7 @@ $messages = array(
 'tog-editsection' => 'Показувати посилання [ред.] для кожного розділу',
 'tog-editsectiononrightclick' => 'Редагувати розділи при клацанні правою кнопкою мишки на заголовку',
 'tog-showtoc' => 'Показувати зміст (для сторінок з більш ніж трьома заголовками)',
-'tog-rememberpassword' => "Запам'ятати мій обліковий запис для цього браузера (на строк не більше $1 {{PLURAL:$1|дня|днів}})",
+'tog-rememberpassword' => "Запам'ятати мій обліковий запис для цього браузера (на строк не більше $1 {{PLURAL:$1|1=дня|днів}})",
 'tog-watchcreations' => 'Додавати створені мною сторінки і завантажені мною файли до мого списку спостереження',
 'tog-watchdefault' => 'Додавати змінені мною сторінки та файли до мого списку спостереження',
 'tog-watchmoves' => 'Додавати перейменовані мною сторінки та файли до мого списку спостереження',
@@ -486,12 +486,12 @@ $messages = array(
 'december-date' => '$1 грудня',
 
 # Categories related messages
-'pagecategories' => '{{PLURAL:$1|Категорія|Категорії}}',
+'pagecategories' => '{{PLURAL:$1|1=Категорія|Категорії|Категорій}}',
 'category_header' => 'Сторінки в категорії «$1»',
 'subcategories' => 'Підкатегорії',
 'category-media-header' => 'Файли в категорії «$1»',
 'category-empty' => "''Ця категорія зараз порожня.''",
-'hidden-categories' => '{{PLURAL:$1|Прихована категорія|Приховані категорії}}',
+'hidden-categories' => '{{PLURAL:$1|1=Прихована категорія|Приховані категорії|Прихованих категорій}}',
 'hidden-category-category' => 'Приховані категорії',
 'category-subcat-count' => 'Показано $1 {{PLURAL:$1|підкатегорію з|підкатегорії з|підкатегорій із}} $2.',
 'category-subcat-count-limited' => 'У цій категорії {{PLURAL:$1|$1 підкатегорія|$1 підкатегорії|$1 підкатегорій}}.',
@@ -630,7 +630,7 @@ $1',
 
 'badaccess' => 'Помилка доступу',
 'badaccess-group0' => 'Вам не дозволено виконувати цю дію.',
-'badaccess-groups' => 'Дія, яку Ви хотіли зробити, дозволена лише користувачам із {{PLURAL:$2|групи|груп}}: $1.',
+'badaccess-groups' => 'Дія, яку Ви хотіли зробити, дозволена лише користувачам із {{PLURAL:$2|1=групи|груп}}: $1.',
 
 'versionrequired' => 'Потрібна MediaWiki версії $1',
 'versionrequiredtext' => 'Для роботи з цією сторінкою потрібна MediaWiki версії $1. Див. [[Special:Version|інформацію про версії програмного забезпечення, яке використовується]].',
@@ -640,10 +640,10 @@ $1',
 'pagetitle-view-mainpage' => '{{SITENAME}}',
 'retrievedfrom' => 'Отримано з $1',
 'youhavenewmessages' => 'Ви отримали $1 ($2).',
-'youhavenewmessagesfromusers' => 'Ви отримали $1 від {{PLURAL:$3|іншого дописувача|$3 інших дописувачів}} ($2).',
+'youhavenewmessagesfromusers' => '{{PLURAL:$4|1=Ви отримали|Ви отримали}} $1 від {{PLURAL:$3|1=іншого дописувача|$3 інших дописувачів}} ($2).',
 'youhavenewmessagesmanyusers' => 'Ви отримали $1 від багатьох дописувачів ($2).',
-'newmessageslinkplural' => '{{PLURAL:$1|нове повідомлення|999=нові повідомлення}}',
-'newmessagesdifflinkplural' => '{{PLURAL:$1|остання зміна|999=останні зміни}}',
+'newmessageslinkplural' => '{{PLURAL:$1|1=нове повідомлення|999=нові повідомлення}}',
+'newmessagesdifflinkplural' => '{{PLURAL:$1|1=остання зміна|999=останні зміни}}',
 'youhavenewmessagesmulti' => 'Ви отримали нові повідомлення на $1',
 'editsection' => 'ред.',
 'editold' => 'ред.',
@@ -740,8 +740,8 @@ $1',
 'badtitle' => 'Неприпустима назва',
 'badtitletext' => 'Запитана назва сторінки неправильна, порожня, або неправильно зазначена міжмовна чи міжвікі назва.
 Можливо, в назві використовуються недопустимі символи.',
-'perfcached' => 'Наступні дані взяті з кешу і можуть бути застарілими. В кеші зберігається не більше  {{PLURAL:$1| запису| записів}}.',
-'perfcachedts' => 'Наступні дані взяті з кешу, востаннє він оновлювався о $1. У кеші зберігається не більше $4 {{PLURAL:$4|запису|записів}}.',
+'perfcached' => 'Наступні дані взяті з кешу і можуть бути застарілими. В кеші зберігається не більше {{PLURAL:$1|1=одного запису|$1 записів}}.',
+'perfcachedts' => 'Наступні дані взяті з кешу, востаннє він оновлювався о $1. У кеші зберігається не більше $4 {{PLURAL:$4|1=запису|записів}}.',
 'querypage-no-updates' => 'Зміни цієї сторінки зараз заборонені. Дані тут не можуть бути оновлені зараз.',
 'viewsource' => 'Перегляд',
 'viewsource-title' => 'Перегляд вихідного коду сторінки $1',
@@ -752,7 +752,7 @@ $1',
 'viewyourtext' => "Ви можете переглянути та скопіювати текст '''ваших редагувань''' на цій сторінці:",
 'protectedinterface' => 'Ця сторінка є частиною інтерфейсу програмного забезпечення цієї вікі і її можуть редагувати лише адміністратори проекту. Щоб додати або змінити переклади для усіх вікі, відвідайте [//translatewiki.net/ translatewiki.net], проект локалізації MediaWiki.',
 'editinginterface' => "'''Увага:''' Ви редагуєте сторінку, що є частиною текстового інтерфейсу. Зміни цієї сторінки спричинять зміну інтерфейсу для інших користувачів. Для перекладу повідомлення використовуйте [//translatewiki.net/wiki/Main_Page?setlang=uk translatewiki.net] — проект, що займається локалізацією MediaWiki.",
-'cascadeprotected' => 'Сторінка захищена від змін, оскільки її включено до {{PLURAL:$1|сторінки, для якої|наступних сторінок, для яких}} установлено каскадний захист: $2',
+'cascadeprotected' => 'Сторінка захищена від змін, оскільки її включено до {{PLURAL:$1|1=сторінки, для якої|наступних сторінок, для яких}} установлено каскадний захист: $2',
 'namespaceprotected' => 'У вас нема дозволу редагувати сторінки в просторі назв «$1».',
 'customcssprotected' => 'У вас немає прав на редагування цієї CSS-сторінки, так як вона містить особисті налаштування іншого користувача.',
 'customjsprotected' => 'У вас немає дозволу на редагування цієї JavaScript-сторінки, так як вона містить особисті налаштування іншого користувача.',
@@ -794,7 +794,7 @@ $1',
 'yourpasswordagain' => 'Повторний набір пароля:',
 'createacct-yourpasswordagain' => 'Підтвердіть пароль',
 'createacct-yourpasswordagain-ph' => 'Введіть пароль знову',
-'remembermypassword' => "Запам'ятати мій обліковий запис на цьому комп'ютері (на строк не більше $1 {{PLURAL:$1|дня|днів}})",
+'remembermypassword' => "Запам'ятати мій обліковий запис на цьому комп'ютері (на строк не більше $1 {{PLURAL:$1|1=дня|днів}})",
 'userlogin-remembermypassword' => "Запам'ятати мене",
 'userlogin-signwithsecure' => "Захищене з'єднання",
 'yourdomainname' => 'Ваш домен:',
@@ -890,7 +890,7 @@ $1',
 'blocked-mailpassword' => 'Редагування з вашої IP-адреси заборонено, заблокована також функція відновлення пароля.',
 'eauthentsent' => 'На вказану адресу електронної пошти відправлено лист.
 Щоб отримувати листи надалі, дотримуйтесь викладених там інструкцій для підтвердження того, що ця адреса належить вам.',
-'throttled-mailpassword' => 'Інструкція по відновленню паролю вже була вислана електронною поштою протягом {{PLURAL:$1|останньої години|останніх $1 годин}}.
+'throttled-mailpassword' => 'Інструкція по відновленню паролю вже була вислана електронною поштою протягом {{PLURAL:$1|1=останньої години|останніх $1 годин}}.
 Для попередження зловживань дозволено надсилати тільки одну інструкцію за {{PLURAL:$1|годину|$1 години|$1 годин}}.',
 'mailerror' => 'Помилка при відправці пошти: $1',
 'acct_creation_throttle_hit' => 'Відвідувачі з вашої IP-адреси вже створили $1 {{PLURAL:$1|обліковий запис|облікових записи|облікових записів}} за останню добу, що є максимумом для цього відрізка часу.
@@ -955,17 +955,17 @@ $1',
 'passwordreset-capture-help' => 'Якщо Ви встановите відмітку, Вам буде показаний електронний лист (із тимчасовим паролем), який буде відправлений користувачеві.',
 'passwordreset-email' => 'Адреса електронної пошти:',
 'passwordreset-emailtitle' => 'Деталі облікового запису на {{SITENAME}}',
-'passwordreset-emailtext-ip' => "Хтось (імовірно Ви, з IP-адреси $1) попросив нагадати деталі Вашого облікового запису для {{SITENAME}} ($4). З Вашою електронною скринькою пов'язан{{PLURAL:$3|ий такий запис|і такі записи}}:
+'passwordreset-emailtext-ip' => "Хтось (імовірно Ви, з IP-адреси $1) попросив нагадати деталі Вашого облікового запису для {{SITENAME}} ($4). З Вашою електронною скринькою пов'язан{{PLURAL:$3|1=ий такий запис|і такі записи}}:
 
 $2
 
-{{PLURAL:$3|Цей тимчасовий пароль|Ці тимчасові паролі}} стануть недійсні через {{PLURAL:$5|день|$5 дні|$5 днів}}.
+{{PLURAL:$3|1=Цей тимчасовий пароль|Ці тимчасові паролі}} стануть недійсні через {{PLURAL:$5|день|$5 дні|$5 днів}}.
 Ви маєте ввійти в систему і вибрати новий пароль. Якщо ж цей запит зробив хтось інший, або Ви пам'ятаєте свій старий пароль і не бажаєте його змінювати, можете просто проігнорувати це повідомлення та продовжувати використовувати старий пароль.",
-'passwordreset-emailtext-user' => "Користувач $1 з {{SITENAME}} попросив нагадати деталі Вашого облікового запису для {{SITENAME}} ($4). З Вашою електронною скринькою пов'язан{{PLURAL:$3|ий такий запис|і такі записи}}:
+'passwordreset-emailtext-user' => "Користувач $1 з {{SITENAME}} попросив нагадати деталі Вашого облікового запису для {{SITENAME}} ($4). З Вашою електронною скринькою пов'язан{{PLURAL:$3|1=ий такий запис|і такі записи}}:
 
 $2
 
-{{PLURAL:$3|Цей тимчасовий пароль|Ці тимчасові паролі}} стануть нечинні через {{PLURAL:$5|день|$5 дні|$5 днів}}.
+{{PLURAL:$3|1=Цей тимчасовий пароль|Ці тимчасові паролі}} стануть нечинні через {{PLURAL:$5|день|$5 дні|$5 днів}}.
 Ви маєте ввійти в систему і вибрати новий пароль. Якщо ж цей запит зробив хтось інший, або Ви пам'ятаєте свій старий пароль і не бажаєте його змінювати, можете просто проігнорувати це повідомлення та продовжувати використовувати старий пароль.",
 'passwordreset-emailelement' => "Ім'я користувача: $1
 Тимчасовий пароль: $2",
@@ -1169,12 +1169,12 @@ $2
 Останній запис журналу наведений нижче для довідки:",
 'semiprotectedpagewarning' => "'''Зауваження:''' Ця сторінка захищена так, що її можуть редагувати тільки зареєстровані користувачі.
 Останній запис журналу наведений нижче для довідки:",
-'cascadeprotectedwarning' => "'''Попередження:''' Цю сторінку можуть редагувати лише користувачі з групи «Адміністратори», оскільки вона включена {{PLURAL:$1|до сторінки, для якої|до наступних сторінок, для яких}} активовано каскадний захист:",
+'cascadeprotectedwarning' => "'''Попередження:''' Цю сторінку можуть редагувати лише користувачі з групи «Адміністратори», оскільки вона включена {{PLURAL:$1|1=до сторінки, для якої|до наступних сторінок, для яких}} активовано каскадний захист:",
 'titleprotectedwarning' => "'''Попередження. Ця сторінка була захищена так, що для її створення потрібні [[Special:ListGroupRights|особливі права]].'''
 Останній запис журналу наведений нижче для довідки:",
-'templatesused' => '{{PLURAL:$1|Шаблон, використаний|Шаблони, використані}} на цій сторінці:',
-'templatesusedpreview' => '{{PLURAL:$1|Шаблон, використаний|Шаблони, використані}} у цьому попередньому перегляді:',
-'templatesusedsection' => '{{PLURAL:$1|Шаблон, використаний|Шаблони, використані}} у цій секції:',
+'templatesused' => '{{PLURAL:$1|1=Шаблон, використаний|Шаблони, використані}} на цій сторінці:',
+'templatesusedpreview' => '{{PLURAL:$1|1=Шаблон, використаний|Шаблони, використані}} у цьому попередньому перегляді:',
+'templatesusedsection' => '{{PLURAL:$1|1=Шаблон, використаний|Шаблони, використані}} у цій секції:',
 'template-protected' => '(захищено)',
 'template-semiprotected' => '(частково захищено)',
 'hiddencategories' => 'Ця сторінка належить до $1 {{PLURAL:$1|прихованої категорії|прихованих категорій|прихованих категорій}}:',
@@ -1186,8 +1186,8 @@ $2
 'sectioneditnotsupported-title' => 'Редагування окремих розділів не підтримується',
 'sectioneditnotsupported-text' => 'На цій сторінці не підтримується редагування окремих розділів',
 'permissionserrors' => 'Помилка доступу',
-'permissionserrorstext' => 'У вас нема прав на виконання цієї операції з {{PLURAL:$1|наступної причини|наступних причин}}:',
-'permissionserrorstext-withaction' => 'У вас нема дозволу на $2 з {{PLURAL:$1|такої причини|таких причин}}:',
+'permissionserrorstext' => 'У вас нема прав на виконання цієї операції з {{PLURAL:$1|1=наступної причини|наступних причин}}:',
+'permissionserrorstext-withaction' => 'У вас нема дозволу на $2 з {{PLURAL:$1|1=такої причини|таких причин}}:',
 'recreate-moveddeleted-warn' => "'''Попередження: ви намагаєтеся створити сторінку, яка раніше вже була вилучена.'''
 
 Перевірте, чи справді вам потрібно знову створювати цю сторінку.
@@ -1252,6 +1252,9 @@ $2
 'cantcreateaccount-text' => "Створення облікових записів із цієї IP-адреси ('''$1''') було заблоковане [[User:$3|користувачем $3]].
 
 $3 зазначив таку причину: ''$2''",
+'cantcreateaccount-range-text' => "Створення облікового запису із IP-адрес у діапазоні  '''$1''', який включає вашу IP-адресу ('''$4'''), вже заблоковано користувачем [[User:$3|$3]].
+
+Користувач $3 вказав як причину ''$2''",
 
 # History pages
 'viewpagelogs' => 'Показати журнали для цієї сторінки',
@@ -1323,8 +1326,8 @@ $3 зазначив таку причину: ''$2''",
 'revdelete-no-file' => 'Зазначений файл не існує.',
 'revdelete-show-file-confirm' => 'Ви впевнені, що хочете переглянути вилучену версію файлу «<nowiki>$1</nowiki>» від $3 $2?',
 'revdelete-show-file-submit' => 'Так',
-'revdelete-selected' => "'''{{PLURAL:$2|Обрана версія|Обрані версії}} сторінки [[:$1]]:'''",
-'logdelete-selected' => "'''{{PLURAL:$1|Обраний запис|Обрані записи}} журналу:'''",
+'revdelete-selected' => "'''{{PLURAL:$2|1=Обрана версія|Обрані версії}} сторінки [[:$1]]:'''",
+'logdelete-selected' => "'''{{PLURAL:$1|1=Обраний запис|Обрані записи}} журналу:'''",
 'revdelete-text' => "'''Вилучені версії сторінок і подій будуть відображатися в історії сторінки та журналах, але частина їх вмісту не буде доступною звичайним користувачам.'''
 Доступ до прихованого змісту матимуть адміністратори проекту {{SITENAME}}, які зможуть відновити його за допомогою цього ж інтерфейсу,
 крім випадків, коли були встановлені додаткові обмеження власниками сайту.",
@@ -1341,12 +1344,12 @@ $3 зазначив таку причину: ''$2''",
 'revdelete-hide-user' => "Ім'я автора/IP адреса",
 'revdelete-hide-restricted' => 'Приховати дані також і від адміністраторів',
 'revdelete-radio-same' => '(не змінювати)',
-'revdelete-radio-set' => 'Ð\92идимо',
-'revdelete-radio-unset' => 'Ð\9fÑ\80иÑ\85овано',
+'revdelete-radio-set' => 'Ð\9fÑ\80иÑ\85овано',
+'revdelete-radio-unset' => 'Ð\92идимо',
 'revdelete-suppress' => 'Приховувати дані також і від адміністраторів',
 'revdelete-unsuppress' => 'Зняти обмеження з відновлених версій',
 'revdelete-log' => 'Причина:',
-'revdelete-submit' => 'Застосувати до {{PLURAL:$1|обраної версії|обраних версій}}',
+'revdelete-submit' => 'Застосувати до {{PLURAL:$1|1=обраної версії|обраних версій}}',
 'revdelete-success' => "'''Видимість версії успішно змінена.'''",
 'revdelete-failure' => "'''Видимість версії неможливо змінити:'''
 $1",
@@ -1421,9 +1424,9 @@ $1",
 'showhideselectedversions' => 'Показати/приховати обрані версії',
 'editundo' => 'скасувати',
 'diff-empty' => '(Немає відмінностей)',
-'diff-multi' => '({{PLURAL:$1|Одна проміжна версія одного користувача не показана|$1 проміжні версії {{PLURAL:$2|одного користувача|$2 користувачів}} не показані|$1 проміжних версій {{PLURAL:$2|одного користувача|$2 користувачів}} не показані}})',
-'diff-multi-manyusers' => '({{PLURAL:$1|не показана $1 проміжна я версія|не показані $1 проміжні версії|не показано $1 проміжних версій}}, зроблених більш, ніж {{PLURAL:$2|$1 користувачем|$2 користувачами}})',
-'difference-missing-revision' => '{{PLURAL:$2|$2 версія|$2 версії|$2 версій}} для цього порівняння ($1) не {{PLURAL:$2|знайдена|знайдені}}.
+'diff-multi' => '({{PLURAL:$1|Одна проміжна версія одного користувача не показана|$1 проміжні версії {{PLURAL:$2|1=одного користувача|$2 користувачів}} не показані|$1 проміжних версій {{PLURAL:$2|1=одного користувача|$2 користувачів}} не показано}})',
+'diff-multi-manyusers' => '({{PLURAL:$1|не показана $1 проміжна версія|не показані $1 проміжні версії|не показано $1 проміжних версій}}, зроблених більш, ніж {{PLURAL:$2|1=$1 користувачем|$2 користувачами}})',
+'difference-missing-revision' => '{{PLURAL:$2|$2 версія|$2 версії|$2 версій}} для цього порівняння ($1) не {{PLURAL:$2|1=знайдена|знайдені}}.
 
 Імовірно, ви перейшли за застарілим посиланням на порівняння версій вилученої сторінки.
 Подробиці можна дізнатися з [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} журналу вилучень].',
@@ -1468,7 +1471,7 @@ $1",
 'searchall' => 'усі',
 'showingresults' => "Нижче {{PLURAL:$1|показане|показані|показані}} '''$1''' {{PLURAL:$1|результат|результати|результатів}}, починаючи з №&nbsp;'''$2'''",
 'showingresultsnum' => 'Нижче показано <strong>$3</strong> {{PLURAL:$3|результат|результати|результатів}}, починаючи з №&nbsp;<strong>$2</strong>.',
-'showingresultsheader' => "{{PLURAL:$5|Результат '''$1''' з '''$3'''|Результати '''$1 — $2''' з '''$3'''}} для '''$4'''",
+'showingresultsheader' => "{{PLURAL:$5|1=Результат '''$1''' з '''$3'''|Результати '''$1 — $2''' з '''$3'''}} для '''$4'''",
 'search-nonefound' => 'Не знайдено результатів, що відповідають запиту.',
 'powersearch-legend' => 'Розширений пошук',
 'powersearch-ns' => 'Пошук у просторах назв:',
@@ -1554,7 +1557,7 @@ $1",
 'youremail' => 'Адреса електронної пошти:',
 'username' => "{{GENDER:$1|Ім'я користувача|Ім'я користувачки}}:",
 'uid' => 'Ідентифікатор {{GENDER:$1|користувача}}:',
-'prefs-memberingroups' => '{{GENDER:$2|Член}} {{PLURAL:$1|групи|груп}}:',
+'prefs-memberingroups' => '{{GENDER:$2|Член}} {{PLURAL:$1|1=групи|груп}}:',
 'prefs-memberingroups-type' => '$1',
 'prefs-registration' => 'Час реєстрації:',
 'prefs-registration-date-time' => '$1',
@@ -1786,13 +1789,14 @@ $1",
 'recentchanges-label-bot' => 'Це редагування зроблене ботом',
 'recentchanges-label-unpatrolled' => 'Це редагування ще не було відпатрульоване',
 'recentchanges-label-plusminus' => 'Розмір сторінки змінився на таке число байтів',
+'recentchanges-legend-heading' => "'''Легенда:'''",
 'recentchanges-legend-newpage' => '(див. також [[Special:NewPages|список нових сторінок]])',
 'recentchanges-legend-plusminus' => "(''±123'')",
 'rcnotefrom' => 'Нижче відображені редагування з <strong>$2</strong> (до <strong>$1</strong>).',
 'rclistfrom' => 'Показати редагування починаючи з $1.',
 'rcshowhideminor' => '$1 незначні редагування',
 'rcshowhidebots' => '$1 ботів',
-'rcshowhideliu' => '$1 зареєстрованих',
+'rcshowhideliu' => '$1 зареєстрованих користувачів',
 'rcshowhideanons' => '$1 анонімів',
 'rcshowhidepatr' => '$1 перевірені',
 'rcshowhidemine' => '$1 мої редагування',
@@ -1878,9 +1882,9 @@ $1",
 'filetype-badmime' => 'Файли, що мають MIME-тип «$1», не можуть бути завантажені.',
 'filetype-bad-ie-mime' => 'Неможливо завантажити цей файл, оскільки Internet Explorer визначатиме його як «$1», тобто недозволеним і потенційно небезпечним типом файлу.',
 'filetype-unwanted-type' => "'''\".\$1\"''' — небажаний тип файлу.
-{{PLURAL:\$3|Бажаний тип файлів|Бажані типи файлів}}: \$2.",
-'filetype-banned-type' => '\'\'\'".$1"\'\'\' — {{PLURAL:$4|недозволений тип файлів|недозволені типи файлів}}.
-{{PLURAL:$3|Дозволений тип файлів|Дозволені типи файлів}}: $2.',
+{{PLURAL:\$3|1=Бажаний тип файлів|Бажані типи файлів}}: \$2.",
+'filetype-banned-type' => '\'\'\'".$1"\'\'\' — {{PLURAL:$4|1=недозволений тип файлів|недозволені типи файлів}}.
+{{PLURAL:$3|1=Дозволений тип файлів|Дозволені типи файлів}}: $2.',
 'filetype-missing' => 'Відсутнє розширення файлу (наприклад, «.jpg»).',
 'empty-file' => 'Надісланий вами файл порожній.',
 'file-too-large' => 'Файл, який ви надіслали, завеликий.',
@@ -1916,7 +1920,7 @@ $1",
 [[File:$1|thumb|center|$1]]',
 'fileexists-shared-forbidden' => 'Файл із такою назвою вже існує у спільному сховищі файлів.
 Якщо ви все ж хочете завантажити цей файл, будь ласка, поверніться назад і змініть назву файлу. [[File:$1|thumb|center|$1]]',
-'file-exists-duplicate' => 'Цей файл є дублікатом {{PLURAL:$1|файлу|таких файлів}}:',
+'file-exists-duplicate' => 'Цей файл є дублікатом {{PLURAL:$1|1=файлу|таких файлів}}:',
 'file-deleted-duplicate' => 'Такий самий файл ([[:$1]]) уже вилучався раніше. Будь ласка, ознайомтеся з історією вилучень файлу перед тим, як завантажити його знову.',
 'uploadwarning' => 'Попередження',
 'uploadwarning-text' => 'Будь ласка, змініть наданий нижче опис файлу і спробуйте ще раз.',
@@ -2001,7 +2005,7 @@ $1',
 'backend-fail-connect' => 'Неможливо підключитися до сховища рушія "$1".',
 'backend-fail-internal' => 'Сталася невідома помилка у сховищі рушія "$1".',
 'backend-fail-contenttype' => 'Не вдалося визначити тип вмісту файла, щоб зберегти його в "$1".',
-'backend-fail-batchsize' => 'Серверна частина отримала блок із $1 {{PLURAL:$1|файлової операції|файлових операцій}}; обмеження складає $2 {{PLURAL:$2|файлову операцію|файлові операції|файлових операцій}}.',
+'backend-fail-batchsize' => 'Серверна частина отримала блок із $1 {{PLURAL:$1|1=файлової операції|файлових операцій}}; обмеження складає $2 {{PLURAL:$2|файлову операцію|файлові операції|файлових операцій}}.',
 'backend-fail-usable' => 'Файл «$1» не може бути прочитано чи записано через недостатні повноваження або відсутність каталогів (контейнерів).',
 
 # File journal errors
@@ -2116,8 +2120,8 @@ $1',
 'filehist-comment' => 'Коментар',
 'filehist-missing' => 'Файл відсутній',
 'imagelinks' => 'Використання файлу',
-'linkstoimage' => '{{PLURAL:$1|Наступна сторінка посилається|Наступні сторінки посилаються}} на цей файл:',
-'linkstoimage-more' => 'Більше $1 {{PLURAL:$1|сторінки|сторінок}} посилаються на цей файл.
+'linkstoimage' => '{{PLURAL:$1|1=Наступна сторінка посилається|Наступні сторінки посилаються}} на цей файл:',
+'linkstoimage-more' => 'Більше $1 {{PLURAL:$1|1=сторінки|сторінок}} посилаються на цей файл.
 У цьому списку {{PLURAL:$1|показане тільки $1 посилання|показані тільки $1 посилання|показані тільки $1 посилань}} на цей файл.
 Також доступний [[Special:WhatLinksHere/$2|повний список]].',
 'nolinkstoimage' => 'Нема сторінок, що посилаються на цей файл.',
@@ -2192,7 +2196,7 @@ $1',
 
 # Random page
 'randompage' => 'Випадкова стаття',
-'randompage-nopages' => 'Нема сторінок в {{PLURAL:$2|просторі назв|просторах назв}} $1.',
+'randompage-nopages' => 'Нема сторінок в {{PLURAL:$2|1=просторі назв|просторах назв}} $1.',
 
 # Random page in category
 'randomincategory' => 'Випадкова сторінка у категорії',
@@ -2223,7 +2227,7 @@ $1',
 'statistics-views-peredit' => 'Переглядів на редагування',
 'statistics-users' => 'Зареєстрованих [[Special:ListUsers|користувачів]]',
 'statistics-users-active' => 'Активні користувачі',
-'statistics-users-active-desc' => 'Користувачі, які здійснили якусь дію протягом {{PLURAL:$1|минулого дня|минулих $1 днів}}',
+'statistics-users-active-desc' => 'Користувачі, які здійснили якусь дію протягом {{PLURAL:$1|1=минулого дня|$1 минулих днів}}',
 'statistics-mostpopular' => 'Сторінки, які найчастіше переглядають',
 
 'pageswithprop' => 'Сторінки з перевизначеними властивостями',
@@ -2263,8 +2267,8 @@ $1',
 'nmemberschanged' => '$1 → $2 {{PLURAL:$2|член|члени|членів}}',
 'nrevisions' => '$1 {{PLURAL:$1|версія|версії|версій}}',
 'nviews' => '$1 {{PLURAL:$1|перегляд|перегляди|переглядів}}',
-'nimagelinks' => 'Використовується на $1 {{PLURAL:$1|сторінці|сторінках}}',
-'ntransclusions' => 'використовується на $1 {{PLURAL:$1|сторінці|сторінках}}',
+'nimagelinks' => 'Використовується на $1 {{PLURAL:$1|1=сторінці|сторінках}}',
+'ntransclusions' => 'використовується на $1 {{PLURAL:$1|1=сторінці|сторінках}}',
 'specialpage-empty' => 'Запит не дав результатів.',
 'lonelypages' => 'Статті-сироти',
 'lonelypagestext' => 'На такі сторінки нема посилань з інших сторінок і вони не включаються до інших сторінок {{grammar:genitive|{{SITENAME}}}}.',
@@ -2299,6 +2303,7 @@ $1',
 'protectedpages' => 'Захищені сторінки',
 'protectedpages-indef' => 'Тільки безстроково захищені',
 'protectedpages-cascade' => 'Тільки каскадний захист',
+'protectedpages-noredirect' => 'Сховати перенаправлення',
 'protectedpagesempty' => 'Зараз нема захищених сторінок із зазначеними параметрами',
 'protectedtitles' => 'Заборонені назви',
 'protectedtitlesempty' => 'Зараз нема захищених назв із зазначеними параметрами.',
@@ -2366,7 +2371,7 @@ $1',
 
 # Special:Categories
 'categories' => 'Категорії',
-'categoriespagetext' => '{{PLURAL:$1|Наступна категорія|Наступні категорії}} містять сторінки або медіа-файли.
+'categoriespagetext' => '{{PLURAL:$1|1=Наступна категорія містить|Наступні категорії містять}} сторінки або медіа-файли.
 Тут не показані [[Special:UnusedCategories|категорії, що не використовуються]].
 Див. також [[Special:WantedCategories|список необхідних категорій]].',
 'categoriesfrom' => 'Показати категорії, що починаються з:',
@@ -2385,7 +2390,7 @@ $1',
 'linksearch-ok' => 'Знайти',
 'linksearch-text' => 'Можна вживати підстановочні символи, наприклад, «*.wikipedia.org».
 Необхідно зазначити домен, принаймні верхнього рівня, наприклад «*.org».<br />
-{{PLURAL:$2|Підтримується протокол|Підтримуються протоколи}}: <code>$1</code> (за замовчуванням http:// , якщо жоден протокол не зазначено).',
+{{PLURAL:$2|1=Підтримується протокол|Підтримуються протоколи}}: <code>$1</code> (за замовчуванням http:// , якщо жоден протокол не зазначено).',
 'linksearch-line' => 'Посилання на $1 із $2',
 'linksearch-error' => 'Підстановочні знаки можуть використовуватися лише на початку адрес.',
 
@@ -2417,12 +2422,12 @@ $1',
 'listgrouprights-members' => '(список членів)',
 'listgrouprights-right-display' => '<span class="listgrouprights-granted">$1 <code>($2)</code></span>',
 'listgrouprights-right-revoked' => '<span class="listgrouprights-revoked">$1 <code>($2)</code></span>',
-'listgrouprights-addgroup' => 'може додавати в {{PLURAL:$2|групу|групи}}: $1',
-'listgrouprights-removegroup' => 'може виключати з {{PLURAL:$2|групи|груп}}: $1',
+'listgrouprights-addgroup' => 'може додавати в {{PLURAL:$2|1=групу|групи}}: $1',
+'listgrouprights-removegroup' => 'може виключати з {{PLURAL:$2|1=групи|груп}}: $1',
 'listgrouprights-addgroup-all' => 'може додавати до всіх груп',
 'listgrouprights-removegroup-all' => 'може виключати зі всіх груп',
-'listgrouprights-addgroup-self' => 'може додавати {{PLURAL:$2|групу|групи}} до свого облікового запису: $1',
-'listgrouprights-removegroup-self' => 'може вилучати {{PLURAL:$2|групу|групи}} зі свого облікового запису: $1',
+'listgrouprights-addgroup-self' => 'може додавати {{PLURAL:$2|1=групу|групи}} до свого облікового запису: $1',
+'listgrouprights-removegroup-self' => 'може вилучати {{PLURAL:$2|1=групу|групи}} зі свого облікового запису: $1',
 'listgrouprights-addgroup-self-all' => 'Може додавати всі групи до свого облікового запису',
 'listgrouprights-removegroup-self-all' => 'може вилучати всі групи зі свого облікового запису',
 
@@ -2553,7 +2558,7 @@ $UNWATCHURL
 'exblank' => 'стаття була порожньою',
 'delete-confirm' => 'Вилучення «$1»',
 'delete-legend' => 'Вилучення',
-'historywarning' => "'''Попередження:''' Сторінка, яку ви збираєтеся вилучити, має історію редагувань з приблизно $1 {{PLURAL:$1|версії|версій}}:",
+'historywarning' => "'''Попередження:''' Сторінка, яку ви збираєтеся вилучити, має історію редагувань з приблизно $1 {{PLURAL:$1|1=версії|версій}}:",
 'confirmdeletetext' => 'Ви збираєтесь вилучити сторінку і всі її журнали редагувань з бази даних.
 Будь ласка, підтвердіть, що ви бажаєте зробити це, повністю розумієте наслідки і що робите це у відповідності з [[{{MediaWiki:Policy-url}}|правилами]].',
 'actioncomplete' => 'Дію виконано',
@@ -2579,6 +2584,7 @@ $UNWATCHURL
 'delete-warning-toobig' => 'У цієї сторінки дуже довга історія редагувань, більше $1 {{PLURAL:$1|версії|версій|версій}}.
 Її вилучення може призвести до порушень у роботі бази даних сайту {{SITENAME}};
 дійте обережно.',
+'deleting-backlinks-warning' => "'''Попередження:''' інші сторінки посилаються на сторінку, яку ви маєте намір видалити.",
 
 # Rollback
 'rollback' => 'Відкинути редагування',
@@ -2630,7 +2636,7 @@ $UNWATCHURL
 Поточні установки для сторінки '''$1''':",
 'protect-locked-access' => "У вашого облікового запису недостатньо прав для зміни рівня захисту сторінки.
 Поточні установки для сторінки: '''$1''':",
-'protect-cascadeon' => 'Ця сторінка захищена, бо вона включена {{PLURAL:$1|до зазначеної нижче сторінки, на яку|до нижчезазначених сторінок, на які}} встановлено каскадний захист. Ви можете змінити рівень захисту цієї сторінки, але це не вплине на каскадний захист.',
+'protect-cascadeon' => 'Ця сторінка захищена, бо вона включена {{PLURAL:$1|1=до зазначеної нижче сторінки, на яку|до нижчезазначених сторінок, на які}} встановлено каскадний захист. Ви можете змінити рівень захисту цієї сторінки, але це не вплине на каскадний захист.',
 'protect-default' => 'Дозволити всім користувачам',
 'protect-fallback' => 'Дозволено тільки користувачам із дозволом «$1»',
 'protect-level-autoconfirmed' => 'Дозволено тільки автопідтвердженим користувачам',
@@ -2675,7 +2681,7 @@ $UNWATCHURL
 'undeletepage' => 'Перегляд і відновлення вилучених сторінок',
 'undeletepagetitle' => "'''Нижче наведені вилучені версії [[:$1|$1]]'''.",
 'viewdeletedpage' => 'Переглянути видалені сторінки',
-'undeletepagetext' => '{{PLURAL:$1|Сторінка була вилучена, однак вона все ще знаходиться в архіві, тому може бути відновлена|Такі сторінки були вилучені, але вони все ще знаходяться в архіві і тому можуть бути відновлені}}. Архів періодично очищається.',
+'undeletepagetext' => '{{PLURAL:$1|1=Сторінка була вилучена, однак вона все ще знаходиться в архіві, тому може бути відновлена|Такі сторінки були вилучені, але вони все ще знаходяться в архіві і тому можуть бути відновлені}}. Архів періодично очищається.',
 'undelete-fieldset-title' => 'Відновити версії',
 'undeleteextrahelp' => "Для повного відновлення історії сторінки залиште всі поля порожніми й натисніть '''''«{{int:undeletebtn}}»'''''. 
 Для виконання часткового відновлення помітьте відповідні змінені поля, а потім натисніть '''''«{{int:undeletebtn}}»'''''.",
@@ -2838,7 +2844,7 @@ $1',
 'blocklist-reason' => 'Причина',
 'ipblocklist-submit' => 'Пошук',
 'ipblocklist-localblock' => 'Локальне блокування',
-'ipblocklist-otherblocks' => '{{PLURAL:$1|Інше блокування|Інші блокування}}',
+'ipblocklist-otherblocks' => '{{PLURAL:$1|1=Інше блокування|Інші блокування}}',
 'infiniteblock' => 'блокування на невизначений термін',
 'expiringblock' => 'закінчиться $1 $2',
 'anononlyblock' => 'тільки анонімів',
@@ -2876,7 +2882,7 @@ $1',
 'ipb_hide_invalid' => 'Неможливо приховати обліковий запис; з нього зроблено дуже багато редагувань.',
 'ipb_already_blocked' => '«$1» уже заблоковано. Для того, щоб призначити новий термін блокування, спочатку розблокуйте його.',
 'ipb-needreblock' => 'Користувач $1 вже заблокований. Хочете змінити параметри блокування?',
-'ipb-otherblocks-header' => '{{PLURAL:$1|Інше блокування|Інші блокування}}',
+'ipb-otherblocks-header' => '{{PLURAL:$1|1=Інше блокування|Інші блокування}}',
 'unblock-hideuser' => "Ви не можете розблокувати цього користувача, оскільки його ім'я було приховано.",
 'ipb_cant_unblock' => 'Помилка: блокування з ID $1 не знайдене.
 Можливо, користувач уже розблокований.',
@@ -2972,7 +2978,7 @@ $1',
 'movepage-max-pages' => '$1 {{PLURAL:$1|сторінка була перейменована|сторінки були перейменовані|сторінок були перейменовані}} — це максимум, більше сторінок не можна перейменувати автоматично.',
 'movelogpage' => 'Журнал перейменувань',
 'movelogpagetext' => 'Далі подано список перейменованих сторінок.',
-'movesubpage' => '{{PLURAL:$1|Підсторінка|Підсторінки}}',
+'movesubpage' => '{{PLURAL:$1|1=Підсторінка|Підсторінки}}',
 'movesubpagetext' => 'Ця сторінка має $1 {{PLURAL:$1|підсторінку|підсторінки|підсторінок}}.',
 'movenosubpage' => 'Ця сторінка не має підсторінок.',
 'movereason' => 'Причина:',
@@ -3103,7 +3109,7 @@ $2',
 'import-error-special' => 'Сторінку "$1" не імпортовано, оскільки вона належить до особливого простору імен, що не дозволяє створення сторінок.',
 'import-error-invalid' => 'Сторінку "$1" не імпортовано, оскільки його ім\'я неприпустиме.',
 'import-error-unserialize' => 'Версія $2 сторінки «$1» не може бути деструктурованою (десеріалізованою). Отримано повідомлення, що у цій версії використано модель $3 сериалізована як $4.',
-'import-options-wrong' => '{{PLURAL:$2|Неправильна опція|Неправильні опції}}: <nowiki>$1</nowiki>',
+'import-options-wrong' => '{{PLURAL:$2|1=Неправильна опція|Неправильні опції}}: <nowiki>$1</nowiki>',
 'import-rootpage-invalid' => 'Вказана некоректна назва кореневої сторінки',
 'import-rootpage-nosubpage' => 'В просторі назв вказаної кореневої сторінки «$1» заборонені підсторінки',
 
@@ -3224,14 +3230,14 @@ $2',
 The wiki server can't provide data in a format your client can read.",
 
 # Attribution
-'anonymous' => '{{PLURAL:$1|Анонімний користувач|Анонімні користувачі}} {{grammar:genitive|{{SITENAME}}}}',
+'anonymous' => '{{PLURAL:$1|1=Анонімний користувач|Анонімні користувачі}} {{grammar:genitive|{{SITENAME}}}}',
 'siteuser' => 'Користувач {{grammar:genitive|{{SITENAME}}}} $1',
 'anonuser' => 'анонімний користувач {{grammar:genitive|{{SITENAME}}}} $1',
 'lastmodifiedatby' => 'Остання зміна $2, $1 користувачем $3.',
 'othercontribs' => 'Базується на праці $1.',
 'others' => 'інші',
-'siteusers' => '{{PLURAL:$2|Користувач|Користувачі}} {{grammar:genitive|{{SITENAME}}}} $1',
-'anonusers' => '{{PLURAL:$2|анонімний користувач|анонімні користувачі}} {{grammar:genitive|{{SITENAME}}}} $1',
+'siteusers' => '{{PLURAL:$2|1=Користувач|Користувачі}} {{grammar:genitive|{{SITENAME}}}} $1',
+'anonusers' => '{{PLURAL:$2|1=анонімний користувач|анонімні користувачі}} {{grammar:genitive|{{SITENAME}}}} $1',
 'creditspage' => 'Подяки',
 'nocredits' => 'Відсутній список користувачів для цієї статті',
 
@@ -3277,10 +3283,10 @@ The wiki server can't provide data in a format your client can read.",
 'pageinfo-authors' => 'Загальна кількість унікальних авторів',
 'pageinfo-recent-edits' => 'Кількість поточних редагувань в історії (протягом $1)',
 'pageinfo-recent-authors' => 'Кількість авторів за останній час',
-'pageinfo-magic-words' => '{{PLURAL:$1|Магічне слово|Магічні слова}} ($1)',
-'pageinfo-hidden-categories' => '{{PLURAL:$1|Прихована категорія|Приховані категорії}} ($1)',
-'pageinfo-templates' => 'Включено {{PLURAL:$1|шаблон|шаблонів}} ($1)',
-'pageinfo-transclusions' => 'Включено до ($1) {{PLURAL:$1|сторінки|сторінок}}',
+'pageinfo-magic-words' => '{{PLURAL:$1|1=Магічне слово|Магічні слова}} ($1)',
+'pageinfo-hidden-categories' => '{{PLURAL:$1|1=Прихована категорія|Приховані категорії}} ($1)',
+'pageinfo-templates' => 'Включено {{PLURAL:$1|1=шаблон|шаблонів}} ($1)',
+'pageinfo-transclusions' => 'Включено до ($1) {{PLURAL:$1|1=сторінки|сторінок}}',
 'pageinfo-toolboxlink' => 'Інформація про сторінку',
 'pageinfo-redirectsto' => 'Перенаправляє на',
 'pageinfo-redirectsto-info' => 'інформація',
@@ -3348,7 +3354,7 @@ $1',
 'svg-long-error' => 'неправильний SVG-файл: $1',
 'show-big-image' => 'Повна роздільність',
 'show-big-image-preview' => 'Розмір при попередньому перегляді: $1.',
-'show-big-image-other' => '{{PLURAL:$2|Інша роздільність|Інші роздільності}}: $1.',
+'show-big-image-other' => '{{PLURAL:$2|1=Інша роздільність|Інші роздільності}}: $1.',
 'show-big-image-size' => '$1 × $2 пікселів',
 'file-info-gif-looped' => 'кільцеве',
 'file-info-gif-frames' => '$1 {{PLURAL:$1|кадр|кадри|кадрів}}',
@@ -4019,7 +4025,7 @@ $5
 
 # Language selector for translatable SVGs
 'img-lang-default' => '(типова мова)',
-'img-lang-info' => 'Візуалізувати це зображення у $1 $2.',
+'img-lang-info' => 'Візуалізувати це зображення у $1. $2',
 'img-lang-go' => 'Перейти',
 
 # Table pager
@@ -4185,13 +4191,14 @@ MediaWiki поширюється в надії, що вона буде кори
 'version-entrypoints-scriptpath' => '[https://www.mediawiki.org/wiki/Manual:$wgScriptPath Шлях до скриптів]',
 
 # Special:Redirect
-'redirect' => 'Перенаправлення за файлом, користувачем або ID версії',
+'redirect' => 'Перенаправлення за файлом, користувачем, сторінкою або ID версії',
 'redirect-legend' => 'Перенаправити на файл чи сторінку',
-'redirect-summary' => 'Ця спеціальна сторінка перенаправляє на файл (за поданою назвою файлу), сторінку (за поданим ID версії) або сторінку користувача (за поданим числовим ID користувача). Використання: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revision/328429]] або [[{{#Special:Redirect}}/user/101]].',
+'redirect-summary' => 'Ця спеціальна сторінка перенаправляє на файл (за поданою назвою файлу), сторінку (за поданим ID версії або сторінки) або сторінку користувача (за поданим числовим ID користувача). Використання: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]],[[{{#Special:Redirect}}/revision/328429]] або [[{{#Special:Redirect}}/user/101]].',
 'redirect-submit' => 'Перейти',
 'redirect-lookup' => 'Шукати:',
 'redirect-value' => 'Значення:',
 'redirect-user' => 'ID користувача',
+'redirect-page' => 'ID сторінки',
 'redirect-revision' => 'Версія сторінки',
 'redirect-file' => 'Назва файлу',
 'redirect-not-exists' => 'Значення не знайдено',
@@ -4204,7 +4211,7 @@ MediaWiki поширюється в надії, що вона буде кори
 'fileduplicatesearch-submit' => 'Знайти',
 'fileduplicatesearch-info' => '$1 × $2 пікселів<br />Розмір файлу: $3<br />MIME-тип: $4',
 'fileduplicatesearch-result-1' => 'Файл «$1» не має ідентичних.',
-'fileduplicatesearch-result-n' => 'Файл «$1» має {{PLURAL:$2|1 ідентичний дублікат|$2 ідентичних дублікатів}}.',
+'fileduplicatesearch-result-n' => 'Файл «$1» має {{PLURAL:$2|1=1 ідентичний дублікат|$2 ідентичні дублікати|$2 ідентичних дублікатів}}.',
 'fileduplicatesearch-noresults' => 'Файл з назвою «$1» не знайдено.',
 
 # Special:SpecialPages
@@ -4304,7 +4311,7 @@ MediaWiki поширюється в надії, що вона буде кори
 'logentry-delete-event-legacy' => '$1 {{GENDER:$2|змінив|змінила}} видимість записів журналу подій $3',
 'logentry-delete-revision-legacy' => '$1 {{GENDER:$2|змінив|змінила}} видимість версій на сторінці $3',
 'logentry-suppress-delete' => '$1 {{GENDER:$2|подавив|подавила}} сторінку $3',
-'logentry-suppress-event' => '$1 приховано {{GENDER:$2|змінив|змінила}} видимість для {{PLURAL:$5|$5 запису|$5 записів}} журналу на $3: $4',
+'logentry-suppress-event' => '$1 приховано {{GENDER:$2|змінив|змінила}} видимість для {{PLURAL:$5|1=$5 запису|$5 записів}} журналу на $3: $4',
 'logentry-suppress-revision' => '$1 приховано {{GENDER:$2|змінив|змінила}} видимість для {{PLURAL:$5 версії|$5 версій}} на сторінці $3: $4',
 'logentry-suppress-event-legacy' => '$1 приховано {{GENDER:$2|змінив|змінила}} видимість записів журналу $3',
 'logentry-suppress-revision-legacy' => '$1 приховано {{GENDER:$2|змінив|змінила}} видимість версій на сторінці $3',
@@ -4356,10 +4363,10 @@ MediaWiki поширюється в надії, що вона буде кори
 'api-error-badaccess-groups' => 'Вам не дозволено завантажувати файли до цього вікіпроекту.',
 'api-error-badtoken' => 'Внутрішня помилка: некоректний токен.',
 'api-error-copyuploaddisabled' => 'На цьому сервері вимкнене завантаження за URL-адресою.',
-'api-error-duplicate' => 'Вже {{PLURAL:$1|існує  [$2 інший файл]|існують [$2 інші файли]}} з таким самим вмістом.',
-'api-error-duplicate-archive' => 'Раніше на сайті вже {{PLURAL:$1|був [$2 файл]|були [$2 файли]}} з ідентичним вмістом, але {{PLURAL:$1|був|були}} вилучені.',
-'api-error-duplicate-archive-popup-title' => 'Дублікати {{PLURAL:$1|файла|файлів}}, які вже були вилучені',
-'api-error-duplicate-popup-title' => 'Дублікат {{PLURAL:$1| файлу|файлів}}',
+'api-error-duplicate' => 'Вже {{PLURAL:$1|1=існує  [$2 інший файл]|існують [$2 інші файли]}} з таким самим вмістом.',
+'api-error-duplicate-archive' => 'Раніше на сайті вже {{PLURAL:$1|1=був [$2 файл]|були [$2 файли]}} з ідентичним вмістом, але {{PLURAL:$1|1=його|їх}} вилучили.',
+'api-error-duplicate-archive-popup-title' => 'Дублікати {{PLURAL:$1|1=файла|файлів}}, які вже були вилучені',
+'api-error-duplicate-popup-title' => 'Дублікат {{PLURAL:$1|1=файлу|файлів}}',
 'api-error-empty-file' => 'Файл, який ви надіслали, порожній.',
 'api-error-emptypage' => 'Створення нової порожньої сторінки неприпустиме.',
 'api-error-fetchfileerror' => 'Внутрішня помилка: щось пішло не так під час отримання файлу.',
@@ -4368,7 +4375,7 @@ MediaWiki поширюється в надії, що вона буде кори
 'api-error-file-too-large' => 'Файл, який ви надіслали, завеликий.',
 'api-error-filename-tooshort' => 'Назва файлу занадто коротка.',
 'api-error-filetype-banned' => 'Цей тип файлів заборонений.',
-'api-error-filetype-banned-type' => '$1 — {{PLURAL:$4|недозволений тип файлів|недозволені типи файлів}}. {{PLURAL:$3|Дозволений тип файлів|Дозволені типи файлів}}: $2.',
+'api-error-filetype-banned-type' => '$1 — {{PLURAL:$4|1=недозволений тип файлів|недозволені типи файлів}}. {{PLURAL:$3|1=Дозволений тип файлів|Дозволені типи файлів}}: $2.',
 'api-error-filetype-missing' => 'У цього файла відсутнє розширення.',
 'api-error-hookaborted' => 'Зміну, що Ви намагалися зробити, відкинуто обробником.',
 'api-error-http' => 'Внутрішня помилка: Не вдається підключитися до сервера.',
@@ -4385,6 +4392,7 @@ MediaWiki поширюється в надії, що вона буде кори
 'api-error-overwrite' => 'Заміну існуючого файлу не дозволено.',
 'api-error-stashfailed' => 'Внутрішня помилка: сервер не зміг зберегти тимчасовий файл.',
 'api-error-publishfailed' => 'Внутрішня помилка: сервер не зміг опублікувати тимчасовий файл.',
+'api-error-stasherror' => 'Сталася помилка при завантаженні файлу у сховище.',
 'api-error-timeout' => 'Сервер не відповідає протягом очікуваного часу.',
 'api-error-unclassified' => 'Сталася невідома помилка.',
 'api-error-unknown-code' => 'Невідома помилка: «$1»',
@@ -4406,7 +4414,7 @@ MediaWiki поширюється в надії, що вона буде кори
 'duration-millennia' => '$1 {{PLURAL:$1|тисячоліття|тисячоліття|тисячоліть}}',
 
 # Image rotation
-'rotate-comment' => 'Зображення повернуте на $1 {{PLURAL:$1|градус|градусів}} за годинниковою стрілкою',
+'rotate-comment' => 'Зображення повернуте на $1 {{PLURAL:$1|1=градус|градуси|градусів}} за годинниковою стрілкою',
 
 # Limit report
 'limitreport-title' => 'Аналізатор профілювання даних:',
@@ -4434,10 +4442,12 @@ MediaWiki поширюється в надії, що вона буде кори
 'expand_templates_input' => 'Вхідний текст:',
 'expand_templates_output' => 'Результат',
 'expand_templates_xml_output' => 'XML-вивід',
+'expand_templates_html_output' => 'Сирий вивід HTML',
 'expand_templates_ok' => 'Гаразд',
 'expand_templates_remove_comments' => 'Вилучити коментарі',
 'expand_templates_remove_nowiki' => 'Ігнорувати теги <nowiki> в результаті',
 'expand_templates_generate_xml' => 'Показати дерево аналізу XML',
+'expand_templates_generate_rawhtml' => 'Показати сирий HTML',
 'expand_templates_preview' => 'Попередній перегляд',
 
 );
index 3334056..c8772dd 100644 (file)
@@ -97,27 +97,27 @@ $messages = array(
 'tog-extendwatchlist' => 'Levitagat kaclendnimikirjutez, miše nähta kaik toižetused.',
 'tog-usenewrc' => 'Kävutagat paremboitud tantoižed toižetused (pidab otta radho JavaScript)',
 'tog-numberheadings' => 'Nomeruida avtomatižikš pälkirjutesed',
-'tog-showtoolbar' => "Ozutada azegiden üläpanel' redaktiruindan aigan (JavaScript)",
+'tog-showtoolbar' => "Ozutada redaktiruindan panel'",
 'tog-editondblclick' => 'Redaktiruida lehtpoled kaksitadud plokul',
 'tog-editsection' => 'Ozutada "Redaktiruida"-kosketuz kaikuččen sekcijan täht',
 'tog-editsectiononrightclick' => 'Redaktiruida sekcijad hiren oiktal plokul pälkirjutesele',
 'tog-showtoc' => 'Ozutada südäiolend (lehtpoled, kudambil om enamba, mi 3 pälkirjutest)',
 'tog-rememberpassword' => 'Muštta minun kävutajan nimi neciš kompjuteras (enintään $1 {{PLURAL:$1|päivä|päivää}})',
-'tog-watchcreations' => 'Ližata kaik minai sätud lehtpoled minun kaclendkirjuteshe',
-'tog-watchdefault' => 'Ližata kaik minai toižetadud lehtpoled minun kaclendkirjuteshe',
-'tog-watchmoves' => 'Ližata kaik minai udesnimitadud lehtpoled minun kaclendkirjuteshe',
-'tog-watchdeletion' => 'Ližata kaik minai čutud lehtpoled minun kaclendkirjuteshe',
+'tog-watchcreations' => 'Ližata kaik minai sätud lehtpoled da failad minun kaclendkirjuteshe',
+'tog-watchdefault' => 'Ližata kaik minai toižetadud lehtpoled da failad minun kaclendkirjuteshe',
+'tog-watchmoves' => 'Ližata kaik minai udesnimitadud lehtpoled da failad minun kaclendkirjuteshe',
+'tog-watchdeletion' => 'Ližata kaik minai čutud lehtpoled da failad minun kaclendkirjuteshe',
 'tog-minordefault' => 'Znamoita äugotižjärgendusen mödhe kaik toižetused penikš',
 'tog-previewontop' => 'Panda ezikacund redaktiruindan iknan edehe',
 'tog-previewonfirst' => 'Ozutada ezikacund redaktiruindan augotades',
-'tog-enotifwatchlistpages' => 'Oigekat minei e-počt, konz lehtpoled minun kaclendnimikirjutesespäi toižetase',
+'tog-enotifwatchlistpages' => 'Oigekat minei e-počt, konz lehtpoled vai failad minun kaclendnimikirjutesespäi toižetasoiš',
 'tog-enotifusertalkpages' => "Oigeta minei e-počt, konz minun lodulehtpol' toižetase",
-'tog-enotifminoredits' => 'Oigeta minei e-počt eskai siloi, konz toižetused oma minimaližed',
+'tog-enotifminoredits' => 'Oigeta minei e-počt eskai siloi, konz toižetused lehtpolil vai failoiš oma minimaližed',
 'tog-enotifrevealaddr' => 'Ozutada minun počtadres tedotuzkirjeižiš',
 'tog-shownumberswatching' => 'Ozutada niiden kävutajiden lugu, kudambad oma mülütanuded lehtpolen ičeze kaclendnimikirjutesihe',
 'tog-oldsig' => 'Nügüdläine allekirjutez',
 'tog-fancysig' => 'Ičeze allekirjutesen wiki-znamišt (avtomatižeta kosketuseta)',
-'tog-uselivepreview' => 'Kävutada hered ezikacund (JavaScript) (Eksperimentaline)',
+'tog-uselivepreview' => 'Kävutada hered ezikacund (Eksperimentaline)',
 'tog-forceeditsummary' => 'Varutada, kunz toižetusen ümbrikirjutandan pöud ei ole täuttud',
 'tog-watchlisthideown' => 'Peitta minun redakcijad kaclendnimikirjutesespäi',
 'tog-watchlisthidebots' => 'Peitta botoiden redakcijad kaclendnimikirjutesespäi',
@@ -229,6 +229,7 @@ $messages = array(
 'newwindow' => '(avaidase udes iknas)',
 'cancel' => 'Heitta pätand',
 'moredotdotdot' => 'Edeleze...',
+'morenotlisted' => 'Nece nimikirjutez ei ole vaumiž.',
 'mypage' => "Lehtpol'",
 'mytalk' => 'Lodud',
 'anontalk' => 'Lodud neciš IP-adresas',
@@ -330,7 +331,7 @@ $1",
 # All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage).
 'aboutsite' => 'Informacii saitas {{SITENAME}}',
 'aboutpage' => 'Project:Informacii',
-'copyright' => 'südäiolend kävutadas $1-licenzijan mödhe.',
+'copyright' => 'südäiolend kävutadas $1-licenzijan mödhe, ku ei ole ozutadud toižin.',
 'copyrightpage' => '{{ns:project}}:tegijan oiktused',
 'currentevents' => 'Nügüdläižed tegod',
 'currentevents-url' => 'Project:Nügüdläižed tegod',
@@ -357,6 +358,10 @@ Kacu [[Special:Version|informacii kävutadud versijoiš]].',
 'ok' => 'Ka',
 'retrievedfrom' => 'Purde - "$1"',
 'youhavenewmessages' => 'Tö sat $1 ($2).',
+'youhavenewmessagesfromusers' => 'Teil om $1 {{PLURAL:$3|toižel kävutajalpäi|$3 kävutajilpäi}} ($2).',
+'youhavenewmessagesmanyusers' => 'Teil om $1 äjil kävutajilpäi ($2).',
+'newmessageslinkplural' => "{{PLURAL:$1|uz' kirjeine|ut kirješt}}",
+'newmessagesdifflinkplural' => "{{PLURAL:$1|jäl'gmäine toižetuz|jäl'gmäšt toižetust}}",
 'youhavenewmessagesmulti' => 'Teil om uzid tedotusid $1-lehtpolel',
 'editsection' => 'redaktiruida',
 'editold' => 'redaktiruida',
@@ -408,6 +413,7 @@ Kc. [[Special:SpecialPages|specialižiden lehtpoliden nimikirj]].",
 # General errors
 'error' => 'Petuz',
 'databaseerror' => 'Andmusiden bazan petuz',
+'databaseerror-function' => 'Funkcii:$1',
 'databaseerror-error' => 'Petuz: $1',
 'laggedslavemode' => "Varutuz: voib olda, lehtpolen versijal ei ole jäl'gmäižid ližadusid.",
 'readonly' => 'Andmusiden baz om luklostadud',
@@ -437,6 +443,7 @@ Ližakat URL.',
 'cannotdelete' => 'Ei voi čuta poiš necidä lehtpol\'t vai "$1"-failad.
 Sen om jo čutnu ken-se toine.',
 'cannotdelete-title' => "Ei voi heitta «$1»-lehtpol't",
+'no-null-revision' => 'Ei voi säta ut 0-revizijad "$1"-lehtpolen täht',
 'badtitle' => 'Hond nimi',
 'badtitletext' => 'Ectud lehtpolen nimi om vär, vai mugošt nimed ei ole, vai kelidenkeskeline (interwiki) nimi om kirjutadud värin.
 Siš voib olda simvoloid, kudambid ei sa panda nimihe.',
@@ -447,7 +454,7 @@ Anttud naku andmused ei udištugoi.",
 'viewsource' => 'Kc. purde',
 'viewsource-title' => 'Ozutada $1-lehtpolen lähtmižtekst',
 'actionthrottled' => 'Tegendan piguz om kaidetud',
-'protectedpagetext' => "Nece lehtpol' om luklostadud, miše kaita se redaktiruindaspäi.",
+'protectedpagetext' => "Nece lehtpol' om luklostadud, miše kaita se redaktiruindaspäi da toižis tegendoišpäi.",
 'viewsourcetext' => 'Sab lugeda da kopiruida necen lehtpolen augotižtekst:',
 'protectedinterface' => 'Necil lehtpolel om programman interfeistedotuz. Se om luklostadud, miše kaita se vandalizmaspäi.',
 'editinginterface' => "'''Homaikat:''' Tö ladit redaktiruida lehtpol't, kudambal om programman interfeistekst.
@@ -456,9 +463,13 @@ Kändmižen täht om paremb kävutada [//translatewiki.net/wiki/Main_Page?setlan
 'namespaceprotected' => "Teil ei ole oiktust redaktiruida lehtpolid '''$1'''-nimiavaruses.",
 'customcssprotected' => 'Teil ei ole oiktust redaktiruida nece CSS-lehtpol’, sikš sil oma toižen ühtnijan personaližed järgendused.',
 'customjsprotected' => 'Teil ei ole oiktust redaktiruida nece JavaScript-lehtpol’, sikš sil oma toižen ühtnijan personaližed järgendused.',
+'mycustomcssprotected' => 'Teile ei sa redaktiruida necidä CSS-lehtpol’t.',
+'mycustomjsprotected' => "Teile ei sa redaktiruida necidä JavaScript-lehtpol't.",
+'myprivateinfoprotected' => 'Teile ei sa redaktiruida ičetoi personališt informacijad.',
 'ns-specialprotected' => 'Ei sa redaktiruida specialižid lehtpolid.',
 'titleprotected' => '[[User:$1|$1]]-kävutai om kel\'nu mugoižen lehtpolen pälkirjutesen kävutamižen.
 Sü om "\'\'$2\'\'".',
+'exception-nologin' => 'Ei ole kirjutadud sistemha',
 
 # Virus scanner
 'virus-badscanner' => "Järgendusen petuz: tundmatoi virusoiden skaner: ''$1''",
@@ -476,6 +487,7 @@ Otkat sil'mnägubale, miše erasid lehtpolid ozutaškatas mugažo, kut i edel te
 'createacct-another-username-ph' => 'Kirjutagat kävutajannimi',
 'yourpassword' => 'Peitsana:',
 'userlogin-yourpassword' => 'Peitsana',
+'userlogin-yourpassword-ph' => 'Kirjutagat teiden peitsana',
 'createacct-yourpassword-ph' => 'Kirjutagat peitsana',
 'yourpasswordagain' => 'Kirjutagat peitsana udes:',
 'createacct-yourpasswordagain' => 'Peitsanan vahvištoituz',
@@ -483,6 +495,7 @@ Otkat sil'mnägubale, miše erasid lehtpolid ozutaškatas mugažo, kut i edel te
 'remembermypassword' => 'Panda muštho minun tulendandmused neciš kompjuteras (enintään $1 {{PLURAL:$1|päivä|päivää}})',
 'userlogin-remembermypassword' => 'Jäda sistemha',
 'yourdomainname' => 'Teiden domen:',
+'password-change-forbidden' => 'Teile ei sa vajehtada peitsanad neciš vikiš.',
 'externaldberror' => 'Ozaižihe petuz autentifikacijan, kudamb tehtihe andmusiden irdbazan turbiš, aigan, vai teile ei ulotu oiktusid toižetada ičetoi irdregistracijad.',
 'login' => 'Kirjutadas sistemha',
 'nav-login-createaccount' => 'Kirjutadas / Sada registracii',
@@ -492,13 +505,18 @@ Otkat sil'mnägubale, miše erasid lehtpolid ozutaškatas mugažo, kut i edel te
 'logout' => 'Lähtta',
 'userlogout' => 'Lähtta',
 'notloggedin' => 'Tö et olgoi kirjutanus sistemha',
+'userlogin-joinproject' => 'Ühtne {{SITENAME}}-saiha',
 'nologin' => "Ku tö et völ olgoi sanuded registracijad, '''$1'''.",
 'nologinlink' => 'Sada registracii',
 'createaccount' => 'Sada registracii',
 'gotaccount' => "Ku teil om jo registracii, '''$1'''.",
 'gotaccountlink' => 'Kirjutagatoiš sistemha',
 'userlogin-resetlink' => 'Unohtid-ik andmused tulendan täht?',
-'createaccountmail' => 'e-počtaiči',
+'createacct-emailrequired' => 'E-počtal adres',
+'createacct-email-ph' => 'Kirjutagat teiden e-počtan adres',
+'createacct-another-email-ph' => 'Kirjutagat e-počtan adres',
+'createaccountmail' => 'Kävutagat aigaline statjaline peitsana i oigekat ozutadud e-počtan adresale',
+'createacct-realname' => 'Todesine nimi (opcionaline)',
 'createaccountreason' => 'Sü:',
 'createacct-reason' => 'Sü',
 'createacct-reason-ph' => 'Mikš sädad kävutajanprofilid?',
@@ -506,6 +524,10 @@ Otkat sil'mnägubale, miše erasid lehtpolid ozutaškatas mugažo, kut i edel te
 'createacct-imgcaptcha-ph' => 'Kirjutagat tekst pälpäi',
 'createacct-submit' => "Säta kävutajanprofil'",
 'createacct-another-submit' => "Säta toine kävutajanprofil'",
+'createacct-benefit-heading' => '{{SITENAME}}-saitad tehtas teiden pojavad ristitud.',
+'createacct-benefit-body1' => '{{PLURAL:$1|redakcii|redakcijad}}',
+'createacct-benefit-body2' => "{{PLURAL:$1|lehtpol'|lehtpol't}}",
+'createacct-benefit-body3' => '{{PLURAL:$1|tantoine kirjutai|tantošt kirjutajad}}',
 'badretype' => 'Teil kirjutadud peitsanad ei kožugoi toine toižhe.',
 'userexists' => 'Kirjutadud kävutajan nimi om jo kävutamižes.
 Olgat hüväd, valikat toine kävutajan nimi.',
@@ -531,7 +553,7 @@ Kirjutagat toine peitsana.",
 'passwordtooshort' => 'Peitsanha pidab mülütada {{PLURAL:$1|1 znam|$1 znamad}}.',
 'password-name-match' => 'Teiden peitsanale pidab erineda kävutajan nimespäi.',
 'password-login-forbidden' => "Necen kävutajannimen da peitsanan kävutamine om kel'tud.",
-'mailmypassword' => "Oigeta minei uz' peitsana e-počtadme",
+'mailmypassword' => 'Udestada peitsana',
 'passwordremindertitle' => "Uz' pordaigaline peitsana {{SITENAME}}-saitan täht",
 'noemail' => '"$1"-kävutai ei ole andnu ičeze e-počtan adresad.',
 'noemailcreate' => 'Bidab kirjutada todesine e-počtan adres',
@@ -558,6 +580,7 @@ Olgat hüväd, varastagat pordon aigad edel ut naprindad.',
 
 # Email sending
 'php-mail-error-unknown' => 'Tundmatoi petuz PHP:n mail()-funkcijas',
+'user-mail-no-addy' => 'Tö ladit oigeta kirjeine e-počtan adresata.',
 
 # Change password dialog
 'changepassword' => 'Peitsanan toižetuz',
@@ -592,6 +615,7 @@ Aigaline peitsana: $2',
 # Special:ChangeEmail
 'changeemail' => 'Toižetada e-počtan adres',
 'changeemail-no-info' => 'Miše kirjutada necil lehtpolel, teile pidab kirjutadas sistemha.',
+'changeemail-oldemail' => 'Nügüdläine e-počtan adres:',
 'changeemail-newemail' => "Uz' e-počtan adres",
 'changeemail-none' => '(ei ole)',
 'changeemail-submit' => 'Toižetada e-počtan adres',
@@ -686,7 +710,7 @@ Tö voit [[Special:Search/{{PAGENAME}}|ectä nece nimi]] toižil lehtpolil,
 vai [{{fullurl:{{FULLPAGENAME}}|action=edit}} redaktiruida nece lehtpol\']</span>.',
 'noarticletext-nopermission' => 'Necil lehtpolel ei ole nügüd\' tekstad.
 Tö voit [[Special:Search/{{PAGENAME}}|ectä necen lehtpolen nimi]] toižil lehtpolil,
-<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} ectä pojavid aigkirjoiden kirjutesid]</span>.',
+<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} ectä pojavid aigkirjoiden kirjutesid]</span>, no teile ei sa säta necidä lehtpol\'t.',
 'userpage-userdoesnotexist' => "Kävutajan nimed «<nowiki>$1</nowiki>» ei ole. Todeks-ik tahtoit säta vai toižetada nece lehtpol'?",
 'userpage-userdoesnotexist-view' => '"$1"-kävutai ei ole registriruidud.',
 'blocked-notice-logextract' => "Nece kävutai om nügüd' blokiruidud.
@@ -703,6 +727,7 @@ Alemba om anttud jälgmäine kirjutuz blokiruindaiglehtesespäi:",
 'note' => "'''Homaičend:'''",
 'previewnote' => "'''Muštkat, miše nece om vaiše ezikacund.''' 
 Teiden toižetused ei olgoi völ kirjutadud!",
+'continue-editing' => 'Mända redaktiruindtarhaze',
 'previewconflict' => "Tekst redaktiruindan üläiknas kuvazub neche ezikacundha muga, kut se nägub lopkirjutamižen jäl'ghe.",
 'editing' => '$1-lehtpolen redaktiruind',
 'creating' => 'Sätas $1',
@@ -749,7 +774,7 @@ Tö voit pörttas tagaze i redaktiruida toine lehtpol', vai [[Special:UserLogin|
 'nocreate-loggedin' => 'Teile ei sa säta uzid lehtpolid.',
 'sectioneditnotsupported-title' => "Jagadusiden redaktiruind ei ole pid'oiteldud.",
 'sectioneditnotsupported-text' => "Necil lehtpolel jagadusiden redaktiruind ei ole pid'oiteldud.",
-'permissionserrors' => 'Oiktusiden petused',
+'permissionserrors' => 'Oiktusiden petuz',
 'permissionserrorstext' => 'Teile ei sa tehta muga {{PLURAL:$1|necen sün|neniden süiden}} tagut:',
 'permissionserrorstext-withaction' => 'Teile ei sa $2 {{PLURAL:$1|necen sün|neciden süiden}} tagut:',
 'recreate-moveddeleted-warn' => "Homaikat!
@@ -765,10 +790,14 @@ Ei ole ližasüid.',
 Voib olda, se om jo čutud.",
 'edit-conflict' => 'Redakcijoiden konflikt.',
 'edit-no-change' => 'Teiden redakcii ignoriruidihe, sikš miše tekst ei ole toižetadud.',
+'postedit-confirmation' => 'Teiden redakcii om kirjutadud muštho.',
 'edit-already-exists' => "Ei voi säta uz' lehtpol'.
 Wikiš om jo mugoi lehtpol'.",
 'defaultmessagetext' => 'Tekst augotižjärgendusen mödhe',
 
+# Content models
+'content-model-text' => 'koveritoi tekst',
+
 # Parser/template warnings
 'expensive-parserfunction-category' => 'Lehtpoled, kudambil kävutadas äjahko resursokahid funkcijoid',
 'post-expand-template-inclusion-warning' => 'Varutuz: lehtpolele pandud šablonoiden suruz om surehk.
@@ -847,11 +876,11 @@ Administratorad voiškatas lugeda peittud südäimištod da endištada sidä nec
 'revdelete-hide-image' => 'Peitta failan südäiolend',
 'revdelete-hide-name' => 'Peitta tegend da sen objekt',
 'revdelete-hide-comment' => 'Peitta toižetusiden kirjutez',
-'revdelete-hide-user' => 'Peitta avtoran nimi/IP',
+'revdelete-hide-user' => 'Redaktoran nimi/IP-adres',
 'revdelete-hide-restricted' => 'Peitta andmusid eskai administratorilpäi-ki',
 'revdelete-radio-same' => '(ala toižeta)',
-'revdelete-radio-set' => 'Ka',
-'revdelete-radio-unset' => 'Ei',
+'revdelete-radio-set' => 'Peittud',
+'revdelete-radio-unset' => 'Nägub',
 'revdelete-suppress' => 'Peitta administratorilpäi-ki sadud andmused',
 'revdelete-unsuppress' => 'Heitta kaidendused endištadud versijoilpäi',
 'revdelete-log' => 'Sü:',
@@ -978,6 +1007,7 @@ Otkat sil'mnägubale üks-se, miše {{SITENAME}}-saitan sädäimišt voib olda v
 'prefs-beta' => 'Beta-voindad',
 'prefs-datetime' => 'Dat da aig',
 'prefs-labs' => 'Eksperimentaližed voindad',
+'prefs-user-pages' => 'Kävutajan lehtpoled',
 'prefs-personal' => "Kävutajan profil'",
 'prefs-rc' => 'Tantoižed toižetused',
 'prefs-watchlist' => 'Kaclendnimikirjutez',
@@ -993,7 +1023,7 @@ Otkat sil'mnägubale üks-se, miše {{SITENAME}}-saitan sädäimišt voib olda v
 'prefs-email' => 'E-počtan opcijad',
 'prefs-rendering' => 'Nägu',
 'saveprefs' => 'Kirjutada',
-'restoreprefs' => 'Endištada kaik augotižjärgendused',
+'restoreprefs' => 'Endištada kaik augotižjärgendused (kaikiš sekcijoiš)',
 'prefs-editing' => 'Redaktiruind',
 'rows' => 'Rivid:',
 'columns' => 'Pachid:',
@@ -1035,9 +1065,9 @@ Otkat sil'mnägubale üks-se, miše {{SITENAME}}-saitan sädäimišt voib olda v
 Necidä tegendad ei sa toižetada.",
 'prefs-emailconfirm-label' => 'E-počtan vahvištand:',
 'youremail' => 'E-počt:',
-'username' => 'Kävutajan nimi:',
-'uid' => 'Kävutajan nomer:',
-'prefs-memberingroups' => '{{PLURAL:$1|Gruppan|Gruppiden}} ühtnii:',
+'username' => '{{GENDER:$1|Kävutajan nimi}}:',
+'uid' => '{{GENDER:$1|Kävutajan nomer}} ID:',
+'prefs-memberingroups' => '{{PLURAL:$1|Gruppan|Gruppiden}} {{GENDER:$2|ühtnii}}:',
 'prefs-registration' => 'Registracijan aig:',
 'yourrealname' => 'Todesine nimi:',
 'yourlanguage' => "Kel':",
@@ -1063,7 +1093,7 @@ Ku tö kirjutat sen, nece nimi kävutadas, miše ozutada lehtpolen toižetajad.'
 'prefs-signature' => 'Allekirjutez',
 'prefs-dateformat' => 'Datan format',
 'prefs-timeoffset' => 'Aigan sirdand',
-'prefs-advancedediting' => 'Ližaopcijad',
+'prefs-advancedediting' => 'opcijad',
 'prefs-preview' => 'Ezikacund',
 'prefs-advancedrc' => 'Ližaopcijad',
 'prefs-advancedrendering' => 'Ližaopcijad',
@@ -1358,6 +1388,7 @@ Ku problem jäb jäl'ghepäi-ki, säkat pagin [[Special:ListUsers/sysop|sistemad
 # File backend
 'backend-fail-backup' => 'Ei voi tehta $1-failan rezervkopijad.',
 'backend-fail-notexists' => 'Ei ole mugošt failad: "$1".',
+'backend-fail-delete' => 'Ei voi čuta poiš "$1"-failad.',
 'backend-fail-alreadyexists' => '$1-fail om jo olmas.',
 'backend-fail-copy' => 'Ei voi kopiruida "$1"-failad "$2"-tahoze.',
 'backend-fail-move' => 'Ei voi sirta "$1"-failad "$2"-tahoze.',
@@ -1450,6 +1481,7 @@ Informacijad sen [$2 andmusiden lehtpolelpäi] om anttud alemba.',
 'uploadnewversion-linktext' => "Jügutoitta necen failan uz' versii",
 'shared-repo-from' => '$1-projektaspäi',
 'shared-repo' => 'ühthine mediavaraait',
+'upload-disallowed-here' => 'Teile ei sa toižetada necidä failad.',
 
 # File reversion
 'filerevert' => '$1n endištand vanhemban versijannoks',
@@ -1524,6 +1556,8 @@ Informacijad sen [$2 andmusiden lehtpolelpäi] om anttud alemba.',
 'statistics-users-active-desc' => "Kävutajad, kudambad ozutiba aktivižut {{PLURAL:$1|jäl’gmäižen päivän|$1 jäl'gmäižil päivil}}",
 'statistics-mostpopular' => 'Kaikiš populärižembad lehtpoled',
 
+'pageswithprop-submit' => 'Tege',
+
 'doubleredirects' => 'Kaksitadud läbikosketused',
 'double-redirect-fixed-move' => "[[$1]]-lehtpol' om udesnimitadud. Se läbikosketab nügüd' [[$2]]-lehtpolele.",
 'double-redirect-fixer' => 'Läbikosketusiden kohendai',
@@ -1717,6 +1751,7 @@ Kc. mugažo [[Special:WantedCategories|ectud kategorijoiden nimikirjutez]].',
 'watchnologin' => 'Pidab kirjutadas sistemha',
 'addwatch' => 'Ližata kaclendnimikirjuteshe',
 'addedwatchtext' => '"[[:$1]]"-lehtpol\' om ližadud teiden [[Special:Watchlist|kaclendnimikirjuteshe]]. Necen lehtpolen (i sidotud lehtpoliden) tulebiš toižetusiš voiškandeb tedištada neciš nimikirjutesespäi; necen polhe kirjutaškatas mugažo [[Special:RecentChanges|uziden toižetusiden lehtpolel]] lihavoitud kirjamil, miše oliži kebnemb homaita.',
+'removewatch' => 'Čuta poiš kaclendnimikirjutesespäi',
 'removedwatchtext' => '"[[:$1]]"-lehtpol\' om heittud [[Special:Watchlist|teiden kaclendnimikirjutesespäi]].',
 'watch' => 'Pida sil’miš',
 'watchthispage' => "Kacelta necidä lehtpol't",
@@ -1911,8 +1946,8 @@ Sab toižetada necen lehtpolen kaičendpind, no se ei voi toižetada kaskadkaič
 'undeletedrevisions' => '{{PLURAL:$1|1 toižetuz|$1 toižetust}} om endištadud',
 'undeletedrevisions-files' => '{{PLURAL:$1|1 toižetuz|$1 toižetust}} da {{PLURAL:$2|1 fail|$2 failad}} oma endištadud',
 'undeletedfiles' => '{{PLURAL:$1|1 fail om|$1 failad oma}} endištadud',
-'cannotundelete' => 'Endištandan petuz;
-Voib olda, ken-se om jo endištanu necen lehtpolen ende.',
+'cannotundelete' => 'Endištandan petuz:
+$1',
 'undeletedpage' => "'''$1-lehtpol' om endištadud'''
 
 Kc. [[Special:Log/delete|čudandoiden aigkirj]], miše tedištada tantoižiš čudandoiš da endištandoiš.",
@@ -1932,6 +1967,7 @@ $1',
 # Namespace form on various pages
 'namespace' => 'Nimiavaruz:',
 'invert' => 'Käta erigoittud sanad vastkarin',
+'namespace_association' => 'Sidotud nimiavaruz',
 'blanknamespace' => '(Pälehtpoled)',
 
 # Contributions
@@ -2335,6 +2371,9 @@ Voib olda, necil lehtpolel om kosketuz irdsaitale, kudamb om mustas nimikirjutes
 'pageinfo-authors' => 'Erazvuiččiden avtoroiden lugu',
 'pageinfo-contentpage-yes' => 'Ka',
 'pageinfo-protect-cascading-yes' => 'Ka',
+'pageinfo-category-pages' => 'Lehtpoliden lugumär',
+'pageinfo-category-subcats' => 'Alakategorijoiden lugumär',
+'pageinfo-category-files' => 'Failoiden lugumär',
 
 # Skin names
 'skinname-cologneblue' => "Köl'nan sinine",
@@ -2568,6 +2607,7 @@ Ku fail redaktiruidihe sändan polhe, erased parametrad voidas erineda nügüdl
 'exif-languagecode' => 'Kel’',
 'exif-iimcategory' => 'Kategorii',
 'exif-datetimeexpires' => "Algat kävutagoi necen datan jäl'ghe",
+'exif-identifier' => 'Identifikator',
 'exif-label' => 'Arbaine',
 'exif-pngfilecomment' => 'Kommentarii PNG-failha',
 
index 80b4c3b..6e12cca 100644 (file)
@@ -1198,6 +1198,9 @@ Những tham số này sẽ bị bỏ đi.',
 'cantcreateaccount-text' => "Chức năng tài tạo khoản từ địa chỉ IP này ('''$1''') đã bị [[User:$3|$3]] cấm.
 
 Lý do được $3 đưa ra là ''$2''",
+'cantcreateaccount-range-text' => "[[User:$3|$3]] đã cấm các địa chỉ IP trong dãy '''$1''', bao gồm địa chỉ IP của bạn ('''$4'''), không được mở tài khoản.
+
+Lý do được đưa ra bởi $3 là ''$2''",
 
 # History pages
 'viewpagelogs' => 'Xem nhật trình của trang này',
@@ -1259,7 +1262,7 @@ Bạn vẫn có thể [$1 so sánh khác biệt] nếu bạn muốn.",
 Bạn vẫn có thể xem khác biệt này; có thể xem chi tiết trong [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} nhật trình xóa].",
 'rev-suppressed-diff-view' => "Trong trong những phiên bản trong khác biệt này đã bị '''ẩn giấu'''.
 Bạn vẫn có thể xem khác biệt này; có thể xem chi tiết trong [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} nhật trình ẩn giấu].",
-'rev-delundel' => 'hiện/ẩn',
+'rev-delundel' => 'đổi mức khả kiến',
 'rev-showdeleted' => 'hiện',
 'revisiondelete' => 'Xóa hay phục hồi phiên bản',
 'revdelete-nooldid-title' => 'Chưa chọn phiên bản',
@@ -1298,7 +1301,7 @@ $1",
 'logdelete-success' => "'''Khả năng nhìn thấy của sự kiện đã được thiết lập thành công.'''",
 'logdelete-failure' => "'''Không thể thiết lập khả năng hiện thị của nhật trình:'''
 $1",
-'revdel-restore' => 'Thay đổi mức khả kiến',
+'revdel-restore' => 'đổi mức khả kiến',
 'pagehist' => 'Lịch sử trang',
 'deletedhist' => 'Lịch sử đã xóa',
 'revdelete-hide-current' => 'Xảy ra lỗi khi ẩn mục ghi lúc $2, $1: đây là phiên bản hiện tại.
@@ -1363,7 +1366,7 @@ Xin hãy bảo đảm giữ vững tính liên tục của lịch sử trang.',
 'difference-multipage' => '(Khác biệt giữa các trang)',
 'lineno' => 'Dòng $1:',
 'compareselectedversions' => 'So sánh các bản đã chọn',
-'showhideselectedversions' => 'Hiện/ẩn các phiên bản được chọn',
+'showhideselectedversions' => 'Thay đổi mức khả kiến của các phiên bản được chọn',
 'editundo' => 'lùi sửa',
 'diff-empty' => '(Không có sự khác biệt)',
 'diff-multi' => '(Không hiển thị {{PLURAL:$1||$1}} phiên bản {{PLURAL:$2||của $2 thành viên}} ở giữa)',
@@ -1728,13 +1731,14 @@ Nếu bạn đồng ý cung cấp, nó sẽ dùng để ghi nhận công lao c
 'recentchanges-label-bot' => 'Sửa đổi này do bot thực hiện',
 'recentchanges-label-unpatrolled' => 'Sửa đổi này chưa được tuần tra',
 'recentchanges-label-plusminus' => 'Kích cỡ trang đã thay đổi bằng số byte này',
+'recentchanges-legend-heading' => "'''Chú giải:'''",
 'recentchanges-legend-newpage' => '(xem thêm [[Special:NewPages|danh sách các trang mới]])',
 'recentchanges-legend-plusminus' => "(''±123'')",
 'rcnotefrom' => "Thay đổi từ '''$2''' (hiển thị tối đa '''$1''' thay đổi).",
 'rclistfrom' => 'Hiển thị các thay đổi từ $1.',
 'rcshowhideminor' => '$1 sửa đổi nhỏ',
 'rcshowhidebots' => '$1 sửa đổi bot',
-'rcshowhideliu' => '$1 sửa đổi thành viên',
+'rcshowhideliu' => '$1 thành viên đăng ký',
 'rcshowhideanons' => '$1 sửa đổi vô danh',
 'rcshowhidepatr' => '$1 sửa đổi đã tuần tra',
 'rcshowhidemine' => '$1 sửa đổi của tôi',
@@ -2232,6 +2236,7 @@ Các mục <del>bị gạch bỏ</del> là các trang đã được sửa.',
 'protectedpages' => 'Trang bị khóa',
 'protectedpages-indef' => 'Chỉ hiển thị khóa vô hạn',
 'protectedpages-cascade' => 'Chỉ hiển thị khóa theo tầng',
+'protectedpages-noredirect' => 'Ẩn trang đổi hướng',
 'protectedpagesempty' => 'Hiện không có trang nào bị khóa với các thông số này.',
 'protectedtitles' => 'Tên trang bị khóa',
 'protectedtitlesempty' => 'Không có tựa trang nào bị khóa với các thông số như vậy.',
@@ -2274,7 +2279,7 @@ Xin lưu ý là các trang Web bên ngoài có thể liên kết đến một t
 Bạn có thể thu hẹp kết quả bằng cách chọn loại nhật trình, tên thành viên (phân biệt chữ hoa-chữ thường), hoặc các trang bị ảnh hưởng (cũng phân biệt chữ hoa-chữ thường).',
 'logempty' => 'Không có mục nào khớp với từ khóa.',
 'log-title-wildcard' => 'Tìm các tựa trang bắt đầu bằng các chữ này',
-'showhideselectedlogentries' => 'Hiện/ẩn các mục nhật trình đã chọn',
+'showhideselectedlogentries' => 'Thay đổi mức khả kiến của các mục nhật trình đã chọn',
 
 # Special:AllPages
 'allpages' => 'Mọi trang',
@@ -2505,6 +2510,7 @@ Việc xóa các trang như vậy bị hạn chế để ngăn ngừa phá hoạ
 'delete-warning-toobig' => 'Trang này có lịch sử sửa đổi lớn, đến hơn {{PLURAL:$1|lần|lần}} sửa đổi.
 Việc xóa các trang có thể làm tổn hại đến hoạt động của cơ sở dữ liệu {{SITENAME}};
 hãy cẩn trọng khi thực hiện.',
+'deleting-backlinks-warning' => "'''Cảnh báo:''' Có trang khác liên kết đến trang mà bạn sắp xóa.",
 
 # Rollback
 'rollback' => 'Lùi tất cả sửa đổi',
@@ -3895,7 +3901,7 @@ Xin hãy xác nhận bạn thực sự muốn tạo lại trang này.",
 
 # Language selector for translatable SVGs
 'img-lang-default' => '(ngôn ngữ mặc định)',
-'img-lang-info' => 'Kết xuất hình này trong $1 $2.',
+'img-lang-info' => 'Kết xuất hình này trong $1. $2',
 'img-lang-go' => 'Xem',
 
 # Table pager
@@ -4056,14 +4062,15 @@ hoặc [//www.gnu.org/licenses/old-licenses/gpl-2.0.html đọc nó trực tuy
 'version-entrypoints-scriptpath' => '[https://www.mediawiki.org/wiki/Manual:$wgScriptPath?uselang=vi Đường dẫn kịch bản]',
 
 # Special:Redirect
-'redirect' => 'Đổi hướng đến tập tin, người dùng, hoặc số phiên bản',
+'redirect' => 'Đổi hướng đến tập tin, người dùng, trang, hoặc số phiên bản',
 '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 được cho vào), hoặc trang cá nhân (theo số thành viên). Cách sử dụng: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revision/328429]], hoặc [[{{#Special:Redirect}}/user/101]].',
+'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), hoặc trang cá nhân (theo số thành viên). Cách sử dụng: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], hoặc [[{{#Special:Redirect}}/user/101]].',
 'redirect-submit' => 'Đi',
 'redirect-lookup' => 'Tra cứu:',
 'redirect-value' => 'Giá trị:',
 'redirect-user' => 'Số thành viên',
-'redirect-revision' => 'Phiên bản trang',
+'redirect-page' => 'Số trang',
+'redirect-revision' => 'Số phiên bản trang',
 'redirect-file' => 'Tên tập tin',
 'redirect-not-exists' => 'Không tìm thấy giá trị',
 
@@ -4256,6 +4263,7 @@ Nếu không thì bạn có thể điền biểu mẫu đơn giản ở dưới.
 'api-error-overwrite' => 'Không được ghi đè một tập tin đã tồn tại.',
 'api-error-stashfailed' => 'Lỗi nội bộ: Máy chủ bị thất bại trong việc lưu giữ tập tin tạm.',
 'api-error-publishfailed' => 'Lỗi nội bộ: Máy chủ bị thất bại trong việc xuất bản tập tin tạm.',
+'api-error-stasherror' => 'Đã xuất hiện lỗi khi tải tập tin lên hàng đợi.',
 'api-error-timeout' => 'Máy chủ không đáp ứng trong thời gian dự kiến.',
 'api-error-unclassified' => 'Gặp lỗi không ngờ',
 'api-error-unknown-code' => 'Lỗi không rõ: “$1”',
@@ -4301,10 +4309,12 @@ Nếu không thì bạn có thể điền biểu mẫu đơn giản ở dưới.
 'expand_templates_input' => 'Mã nguồn để bung:',
 'expand_templates_output' => 'Kết quả',
 'expand_templates_xml_output' => 'Xuất XML',
+'expand_templates_html_output' => 'Mã nguồn HTML thô',
 'expand_templates_ok' => 'Bung',
 'expand_templates_remove_comments' => 'Bỏ các chú thích',
 'expand_templates_remove_nowiki' => 'Bỏ qua thẻ <nowiki> trong kết quả',
 'expand_templates_generate_xml' => 'Xem cây phân tích XML',
+'expand_templates_generate_rawhtml' => 'Hiển thị HTML thô',
 'expand_templates_preview' => 'Xem trước',
 
 );
index f79dc5d..00b610d 100644 (file)
@@ -49,17 +49,17 @@ $messages = array(
 'tog-hidepatrolled' => 'Käkiq perämäidsi muutmiisi nimekirän ärq muutmisõq, miä ommaq perräkaemisnimekirän',
 'tog-newpageshidepatrolled' => 'Käkiq vahtsidõ lehti nimekirän ärq ülekaeduq leheq',
 'tog-extendwatchlist' => 'Laendaq perräkaemisnimekirjä, et nätäq kõiki muutmiisi, mitte õnnõ kõgõ perämäidsi',
-'tog-usenewrc' => 'Laendõduq perämädseq muutmisõq (vaia JavaScripti)',
+'tog-usenewrc' => 'Sordiq viimädseq muutmisõq ja muutmisnimekirän leheküle perrä',
 'tog-numberheadings' => 'Päälkirjo automaatnummõrdus',
-'tog-showtoolbar' => 'Näütäq toimõndusõ riistakasti',
-'tog-editondblclick' => 'Artiklidõ toimõndaminõ topõltklõpsu pääle (JavaScript)',
+'tog-showtoolbar' => 'Näütäq toimõndusõ tüüriistaripa',
+'tog-editondblclick' => 'Toimõndaq artikliid topõltklõpsu pääle',
 'tog-editsection' => 'Lupaq lõikõ toimõndaq [toimõndaq]-linkõga',
-'tog-editsectiononrightclick' => 'Lupaq lõikõ toimõndaq hüäpoolidsõ klõpsutusõga <br /> lõigu päälkirä pääl (JavaScript)',
+'tog-editsectiononrightclick' => 'Lupaq lõikõ toimõndaq hüäpoolidsõ klõpsutusõga lõigu päälkirä pääl',
 'tog-showtoc' => 'Näütäq sisukõrda (rohkõmb ku kolmõ vaihõpäälkiräga lehile)',
 'tog-rememberpassword' => 'Salasõna miildejätmine tulõvaidsis kõrros (kõgõ inämb $1 {{PLURAL:$1|pääväs|pääväs}})',
-'tog-watchcreations' => 'Panõq mu luuduq leheq mu perräkaemisnimekirjä',
-'tog-watchdefault' => 'Kaeq vahtsidõ ja muudõtuidõ artiklidõ perrä',
-'tog-watchmoves' => 'Panõq mu ümbrenõstõduq leheküleq mu perräkaemisnimekirjä',
+'tog-watchcreations' => 'Panõq muq luuduq leheq ja üleslaadiduq teedüstüq muq perräkaemisnimekirjä',
+'tog-watchdefault' => 'Panõq perräkaemisnimekirjä muq muudõduq leheq ja teedüstüq',
+'tog-watchmoves' => 'Panõq muq ümbrenõstõduq leheq ja teedüstüq muq perräkaemisnimekirjä',
 'tog-watchdeletion' => 'Panõq mu kistutõduq leheküleq mu perräkaemisnimekirjä',
 'tog-minordefault' => 'Märgiq kõik parandusõq vaikimiisi väikeisis paranduisis',
 'tog-previewontop' => 'Näütäq proovikaehust inne, mitte perän toimõnduskasti',
@@ -71,7 +71,7 @@ $messages = array(
 'tog-shownumberswatching' => "Näütäq, ku pall'o pruukjit taa lehe perrä kaes",
 'tog-oldsig' => 'Parhillanõ alakirotus:',
 'tog-fancysig' => 'Pruugiq vikiteksti moodulist alakirotust (ilma automaatsõ lingildä)',
-'tog-uselivepreview' => 'Pruugiq kipõkaehust (JavaScript) (proomi)',
+'tog-uselivepreview' => 'Pruugiq õkvakipõkaehust (proomivõimalus)',
 'tog-forceeditsummary' => 'Annaq teedäq, ku olõ-i kirotõt kokkovõtõt',
 'tog-watchlisthideown' => 'Näüdäku-i perräkaemisnimekirän mu hindä toimõnduisi',
 'tog-watchlisthidebots' => 'Näüdäku-i perräkaemisnimekirän robotidõ toimõnduisi',
@@ -83,6 +83,8 @@ $messages = array(
 'tog-diffonly' => 'Näüdäku-i lahkominekide lehe all lehe täüt sissu',
 'tog-showhiddencats' => 'Näütäq käkitüid katõgoorijit',
 'tog-norollbackdiff' => 'Päält tagasivõtmist näüdäku-i lahkominekiid',
+'tog-useeditwarning' => 'Hoiadaq minno, ku ma lääq lehe päält ärq ilma ummi muutmiisi ärq pästmäldä',
+'tog-prefershttps' => 'Pruugiq nimega sisseminemises kõgõ kaidsõtut ütistüst',
 
 'underline-always' => 'Kõgõ',
 'underline-never' => 'Ei kunagi',
@@ -146,6 +148,18 @@ $messages = array(
 'oct' => 'rehek',
 'nov' => 'märtek',
 'dec' => 'jouluk',
+'january-date' => '$1. vahtsõaastakuu päiv',
+'february-date' => '$1. radokuu päiv',
+'march-date' => '$1. urbõkuu päiv',
+'april-date' => '$1. mahlakuu päiv',
+'may-date' => '$1. lehekuu päiv',
+'june-date' => '$1. piimäkuu päiv',
+'july-date' => '$1. hainakuu päiv',
+'august-date' => '$1. põimukuu päiv',
+'september-date' => '$1. süküskuu päiv',
+'october-date' => '$1. rehekuu päiv',
+'november-date' => '$1. märtekuu päiv',
+'december-date' => '$1. joulukuu päiv',
 
 # Categories related messages
 'pagecategories' => '{{PLURAL:$1|Katõgooria|Katõgooriaq}}',
@@ -171,6 +185,7 @@ $messages = array(
 'newwindow' => '(tulõ vallalõ vahtsõn aknõn)',
 'cancel' => 'Jätäq katski',
 'moredotdotdot' => 'Viil...',
+'morenotlisted' => 'Seo nimekiri olõ-õi tävveline.',
 'mypage' => 'Muq lehekülg',
 'mytalk' => 'Arotus',
 'anontalk' => 'Seo puutri võrgoaadrõsi arotus',
@@ -193,7 +208,7 @@ $messages = array(
 'vector-action-protect' => 'Kaidsaq',
 'vector-action-undelete' => 'Tiiq tagasi',
 'vector-action-unprotect' => 'Muudaq kaidsõt',
-'vector-simplesearch-preference' => 'Lupaq tävvendedüid otsmispakmiisi (õnnõ Vektori-kujundusõn)',
+'vector-simplesearch-preference' => 'Lupaq lihtsüstedüt otsmisripa (õnnõ Vektor-kujondusõn)',
 'vector-view-create' => 'Luuq',
 'vector-view-edit' => 'Toimõndaq',
 'vector-view-history' => 'Näütäq aoluku',
@@ -203,6 +218,7 @@ $messages = array(
 'namespaces' => 'Nimeruumiq',
 'variants' => 'Tõõsõndiq',
 
+'navigation-heading' => 'Juhtmisvaliguq',
 'errorpagetitle' => 'Viga',
 'returnto' => 'Tagasi lehe manoq $1.',
 'tagline' => 'Läteq: {{SITENAME}}',
@@ -224,6 +240,7 @@ $messages = array(
 'create-this-page' => 'Luuq seo leht',
 'delete' => 'Kistudaq ärq',
 'deletethispage' => 'Kistudaq seo artikli ärq',
+'undeletethispage' => 'Tiiq seo leht tagasi',
 'undelete_short' => 'Võtaq tagasi {{PLURAL:$1|üts muutminõ|$1 muutmist}}',
 'viewdeleted_short' => 'Kaeq {{PLURAL:$1|ütte|$1}} kistutõdut redaktsiooni',
 'protect' => 'Kaidsaq',
@@ -240,7 +257,7 @@ $messages = array(
 'articlepage' => 'Artiklilehekülg',
 'talk' => 'Arotus',
 'views' => 'Kaemisõq',
-'toolbox' => 'Tüüriistakast',
+'toolbox' => 'Tüüriistaq',
 'userpage' => 'Pruukjalehekülg',
 'projectpage' => 'Tallituslehekülg',
 'imagepage' => 'Näütäq teedüstülehte',
@@ -270,14 +287,14 @@ $1",
 # All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage).
 'aboutsite' => '{{SITENAME}} tutvustus',
 'aboutpage' => 'Project:Pääteedüs',
-'copyright' => 'Teksti või vabalt pruukiq litsendsi $1 perrä.',
+'copyright' => 'Teksti või vabalt pruukiq litsendsi $1 perrä, ku olõ-õi tõisildõ üteld.',
 'copyrightpage' => '{{ns:project}}:Tegijäõigusõq',
 'currentevents' => 'Miä sünnüs',
 'currentevents-url' => 'Project:Miä sünnüs',
 'disclaimers' => 'Hoiatuisi',
 'disclaimerpage' => 'Project:Üledseq hoiatusõq',
 'edithelp' => 'Toimõndamisoppus',
-'helppage' => 'Help:Oppus',
+'helppage' => 'Help:Sisukõrd',
 'mainpage' => 'Pääleht',
 'mainpage-description' => 'Pääleht',
 'policy-url' => 'Project:Säädüseq',
@@ -296,6 +313,10 @@ $1",
 'ok' => 'Hää külh',
 'retrievedfrom' => 'Vällä otsit teedüskogost "$1"',
 'youhavenewmessages' => 'Sul om $1 ($2).',
+'youhavenewmessagesfromusers' => 'Sullõ om $1 {{PLURAL:$3|ütelt|$3}} pruukjalt ($2).',
+'youhavenewmessagesmanyusers' => "Sullõ om $1 pall'odõlt pruukjilt ($2).",
+'newmessageslinkplural' => '{{PLURAL:$1|vahtsõnõ sõnnom|999=vahtsit sõnomit}}',
+'newmessagesdifflinkplural' => '{{PLURAL:$1|viimäne muutminõ|999=viimädseq muutmisõq}}',
 'youhavenewmessagesmulti' => 'Sullõ om vahtsit sõnomit lehe pääl $1',
 'editsection' => 'toimõndaq',
 'editold' => 'toimõndaq',
@@ -319,6 +340,8 @@ $1",
 'page-rss-feed' => '$1 (RSS-söödüs)',
 'page-atom-feed' => '$1 (Atom-söödüs)',
 'red-link-title' => '$1 (säänest lehte olõ-i)',
+'sort-descending' => 'Panõq alanõvahe järekõrda',
+'sort-ascending' => 'Panõq nõsõvahe järekõrda',
 
 # Short words for each namespace, by default used in the namespace tab in monobook
 'nstab-main' => 'Artikli',
@@ -345,6 +368,12 @@ Olõmanolõvaq tallitusleheküleq ommaq löüdäq leheküle päält [[Special:Sp
 # General errors
 'error' => 'Viga',
 'databaseerror' => 'Teedüskogo viga',
+'databaseerror-text' => "Teedüskogost perräküsümise man oll' viga.
+Viga või ollaq tarkvaran.",
+'databaseerror-textcl' => "Teedüskogost perräküsümise man oll' viga.",
+'databaseerror-query' => 'Perräküsümine: $1',
+'databaseerror-function' => 'Ülesannõq: $1',
+'databaseerror-error' => 'Viga: $1',
 'laggedslavemode' => 'Hoiatus: Taa lehe pääl pruugi-i ollaq perämäidsi muutmiisi.',
 'readonly' => 'Teedüskogo kirotuskaitsõ all',
 'enterlockreason' => 'Kirodaq lukkupandmisõ põhjus ja ligikaudnõ vallalõvõtmisõ aig',
@@ -362,6 +391,8 @@ Annaq taa lehe aadrõs viki [[Special:ListUsers/sysop|ülevänpidäjäle]].',
 'readonly_lag' => 'Teedüskogo panti automaatsõhe kinniq, et kõik teedüskogoserveriq saasiq kätte kõik värskiq muutmisõq',
 'internalerror' => 'Sisemäne viga',
 'internalerror_info' => 'Viga: $1',
+'fileappenderrorread' => 'Teedüstüt "$1" saa-as manopandmisõ aol lukõq.',
+'fileappenderror' => 'Teedüstüt "$1" saa-as manoq pandaq teedüstüle "$2".',
 'filecopyerror' => 'Es saaq teedüstüt "$1" teedüstüs "$2" kopidaq.',
 'filerenameerror' => 'Es saaq teedüstüt "$1" teedüstüs "$2" ümbre nimetäq.',
 'filedeleteerror' => 'Teedüstüt nimega "$1" saa-i ärq kistutaq.',
@@ -373,19 +404,24 @@ Annaq taa lehe aadrõs viki [[Special:ListUsers/sysop|ülevänpidäjäle]].',
 'badarticleerror' => 'Taad tallitust saa ei seo leheküle pääl tetäq.',
 'cannotdelete' => 'Lehekülge vai pilti "$1" saa ei ärq kistutaq. 
 Või-ollaq kiäki tõõnõ jo kistut\' taa ärq.',
+'cannotdelete-title' => 'Lehekülge "$1" saa-ai ärq kistutaq',
 'badtitle' => 'Viganõ päälkiri',
 'badtitletext' => "Küsüt artiklipäälkiri oll' kas viganõ, tühi vai sis
 võlssi näüdät kiili- vai wikidevaihõlinõ päälkiri.",
-'perfcached' => 'Järgmäne teedüs om puhvõrdõt ja pruugi ei ollaq kõgõ värskimb. A maximum of {{PLURAL:$1|one result is|$1 results are}} available in the cache.',
-'perfcachedts' => 'Järgmäne teedüs om puhvõrdõt ja om viimäte muudõt $1. A maximum of {{PLURAL:$4|one result is|$4 results are}} available in the cache.',
+'perfcached' => 'Järgmäne teedüs om puhvõrdõt ja pruugi ei ollaq kõgõ värskimb. 
+Puhvrin om {{PLURAL:$1|üts tullõm|$1 tulõmit}}.',
+'perfcachedts' => 'Järgmõne teedüs om vaihõmälon. Viimäne vahtsõndamisaig: $2, kell $3. Puhvrin om kooniq {{PLURAL:$4|üts tullõm|$4 tulõmit}}.',
 'querypage-no-updates' => 'Taad lehe teedüst parhilla värskis ei tetäq.',
 'viewsource' => 'Kaeq lätteteksti',
+'viewsource-title' => 'Lehe $1 lätteteksti kaeminõ',
 'actionthrottled' => 'Tallitusõ kibõhus piirõt',
 'actionthrottledtext' => "Taa tallitusõ mitmit kõrdo tegemine om prahipandjidõ peräst ärq keelet. Olõt taad lühkü ao seen pall'o hulga tennüq. Prooviq veidükese ao peräst vahtsõst.",
-'protectedpagetext' => 'Taa lehekülg om kirotuskaidsõt.',
+'protectedpagetext' => 'Taa lehekülg om kirotuskaidsõt, taad saa-ai muutaq.',
 'viewsourcetext' => 'Võit kaiaq ja kopidaq taa lehe lättekoodi:',
-'protectedinterface' => "Taa lehe pääl om tarkvara pruukjapalgõ tekst. Leht om lukku pant, et taad saasi-i ärq ts'urkiq.",
-'editinginterface' => "'''Hoiatus:''' Sa toimõndat tarkvara pruukjapalgõ tekstiga lehte. Ku siin midä muudat, mõotas tuu pruukjapalõt. Ümbrepandmisõs tasos pruukiq MediaWiki ümbrepandmisõ tüüriista [//translatewiki.net/wiki/Main_Page?setlang=fiu-vro translatewiki.net].",
+'viewyourtext' => "Saat kaiaq ja kopidaq noidõ muutmiisi lätteteksti, miä sa seo lehe pääle '''esiq''' tennüq olõt:",
+'protectedinterface' => "Taa lehe pääl om tarkvara pruukjapalgõ tekst. Leht om lukku pant, et taad saasi-i ärq ts'urkiq. 
+Ku tahat tetäq ümbrepandmiisi (midä pruukvaq kõik vikiq) pruugiq tuus MediaWiki ümbrepandmisõ tüükeskkunda [//translatewiki.net/ translatewiki.net].",
+'editinginterface' => "'''Hoiatus:''' Sa toimõndat tarkvara pruukjapalgõ tekstiga lehte. Ku siin midä muudat, mõotas tuu pruukjapalõt. Ümbrepandmisõs tasos pruukiq MediaWiki ümbrepandmisõ tüükeskkunda [//translatewiki.net/ translatewiki.net].",
 'cascadeprotected' => 'Taa leht om kirotuskaidsõt, selle et taa {{PLURAL:$1|kuulus alanolõvidõ kaidsõtuidõ lehti hulka|kuulus alanolõvidõ kaidsõtuidõ lehti hulka}}:
 $2',
 'namespaceprotected' => "Sul olõ-i lubat toimõndaq nimeruumi '''$1''' lehti.",
@@ -421,6 +457,7 @@ Tähelepandmisõs: niikavva, ku sa olõ-i tühäs tennüq uma võrgokaeja vaihõ
 'createaccount' => 'Tiiq pruukjanimi ärq',
 'gotaccount' => "Ku sul jo om uma pruukjanimi, sis '''$1'''.",
 'gotaccountlink' => 'võit nimega sisse minnäq',
+'userlogin-resetlink' => 'Kas olõt uma salasõna ärq unõhtanuq?',
 'createaccountmail' => 'e-postiga',
 'createaccountreason' => 'Põhjus:',
 'badretype' => 'Kirotõduq salasõnaq ei klapiq kokko.',
@@ -440,7 +477,7 @@ Kaeq kiräpilt üle vai [[Special:UserLogin/signup|luuq vahtsõnõ pruukjanimi]]
 'wrongpassword' => 'Kirotõt võlss salasõna. Prooviq vahtsõst.',
 'wrongpasswordempty' => 'Salasõna tohe-i tühi ollaq.',
 'passwordtooshort' => "Salasõna om viganõ vai pall'o lühkü. Taan piät olõma vähämbält {{PLURAL:$1|1 märk|$1 märki}} ja taa tohe-i ollaq sama, miä su pruukjanimi.",
-'mailmypassword' => 'Saadaq mullõ e-postiga vahtsõnõ salasõna',
+'mailmypassword' => 'Vahtsõndaq umma salasõnna',
 'passwordremindertitle' => '{{SITENAME}} salasõna miildetulõtus',
 'passwordremindertext' => 'Kiäki (arvadaq saq esiq, puutri võrgonummõr $1),
 pallõl\' vahtsõt sisseminegi salasõnna {{SITENAME}} ($4) jaos.
@@ -497,7 +534,7 @@ Või-ollaq olõt jo uma salasõna ärq muutnuq vai küsünüq vahtsõ aotlidsõ
 'bold_tip' => 'Paks kiri',
 'italic_sample' => 'Liuhkakiri',
 'italic_tip' => 'Liuhkakiri',
-'link_sample' => 'Lingitäv päälkiri',
+'link_sample' => 'Lingi päälkiri',
 'link_tip' => 'Siselink',
 'extlink_sample' => 'http://www.example.com Lingi nimi',
 'extlink_tip' => 'Välislink (unõhtagu-i ette pandaq http://)',
@@ -578,6 +615,9 @@ Ku sa johtuq siiäq kogõmaldaq, sis klõpsaq võrgokaeja '''Tagasi'''-nuppi.",
 'noarticletext' => 'Seo leht om parlaq tühi.
 Võit [[Special:Search/{{PAGENAME}}|otsiq soe lehe nimme]]  tõisi lehti päält vai
 <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} uuriq muutmisnimekirjo] vai [{{fullurl:{{FULLPAGENAME}}|action=edit}} puuduolõva leheküle esiq luvvaq]</span>.',
+'noarticletext-nopermission' => 'Seo lehe pääl olõ-õi parlaq teksti.
+Võit [[Special:Search/{{PAGENAME}}|otsiq soe lehe nimme]] tõisi lehti päält vai
+<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} uuriq muutmisnimekirjo]</span>, a sul olõ-õi õigust seod lehte alostaq.',
 'userpage-userdoesnotexist' => 'Pruukjanimme "<nowiki>$1</nowiki>" olõ-i kirjä pant. Kaeq perrä, kas olõt iks kimmäs, et tahat taad lehte toimõndaq.',
 'userpage-userdoesnotexist-view' => 'Pruukjanimme "$1" olõ-õi kirjä pant.',
 'clearyourcache' => "'''Panõq tähele:''' perän pästmist piät muutmiisi nägemises uma võrgokaeja vaihõmälo tühäs tegemä. '''Mozillal / Firofoxil / Safaril''' hoiaq all nõstmisnuppi ''Shift'' ja vaodaq ''Reload'' vai ''Ctrl-R'' (Macil ''Command-R''); Konqueroril vaodaq ''Reload'' vai ''F5''. Operal puhastaq vaihõmälo ja võtaq valikust ''Tools → Preferences''. Internet Exploreril hoiaq ''Ctrl'' ja vaodaq ''Refresh'' vai vaodaq  ''ctrl-f5''.",
@@ -588,7 +628,8 @@ Võit [[Special:Search/{{PAGENAME}}|otsiq soe lehe nimme]]  tõisi lehti päält
 'userinvalidcssjstitle' => "'''Miildetulõtus:''' Olõ-i stiili nimega \"\$1\". Piäq meelen, et pruukja säedüq .css- and .js-leheq piät nakkama väiku algustähega.",
 'updated' => '(Värskis tett)',
 'note' => "'''Miildetulõtus:'''",
-'previewnote' => "'''Taa om õnnõ proovikaehus; muutmisõq olõ-i pästedüq!'''",
+'previewnote' => "'''Seo om õnnõ proovikaehus!''' 
+Suq tettüq muutmisõq olõ-õi viil pästedüq!",
 'previewconflict' => "Taa proovikaehus näütäs, kuis ülembädsen toimõtuskastin ollõv tekst' päält pästmist vällä nägemä nakkas.",
 'session_fail_preview' => "'''Annaq andis! Su toimõndust saa-s pästäq, selle et su tüükõrra teedüs om kaoma lännüq. Olõq hää, proomiq viilkõrd. Ku tuust olõ-i kassu, proomiq nii, et läät nime alt vällä ja sis jälq tagasi sisse.'''",
 'session_fail_preview_html' => "'''Annaq andis, mi saa-i tallitaq su toimõndust, selle et toimõnduskõrra teedüs om kaoma lännüq.'''
@@ -632,13 +673,19 @@ Võit toimõndaq olõmanolõvit lehti vai [[Special:UserLogin|minnäq nimega sis
 'permissionserrorstext-withaction' => 'Sul olõ-õi lubat {{lcfirst:$2}} {{PLURAL:$1|järgmädsel põhjusõl|järgmäidsil põhjuisil}}:',
 'recreate-moveddeleted-warn' => "'''Hoiatus: Sa proovit vahtsõst luvvaq lehte, miä om ärq kistutõt.'''
 
-Kas tahat taad lehte tõtõstõ toimõndaq? Kaeq ka sissekirotust seo lehe ärqkistutamisõ kotsilõ:",
+Märgiq perrä, kas tahat taad lehte tõtõstõ luvvaq. 
+Tan ommaq nätäq seo lehe innembädseq ärqkistutamisõq ja tõistõ paika pandmisõq:",
+'moveddeleted-notice' => 'Seo leht om ärq kistutõt.
+Tan om lehe kistutamiisi ja tõistõ paika pandmiisi nimekiri.',
 'edit-conflict' => 'Samaaignõ toimõndus.',
 
 # Parser/template warnings
 'post-expand-template-inclusion-warning' => "'''Hoiatus:''' Pruugitavidõ näüdüsside maht om pall'o suur.
 Tuuperäst ossa näüdüssit näüdädä-äi.",
 'post-expand-template-inclusion-category' => 'Leheküleq, mil om näüdüsside mahupiir ületet',
+'post-expand-template-argument-warning' => "'''Hoiatus:''' Seo lehe pääl om näüdüs, mil vähämbält üts muutuja om määrät pall'o suurõs.
+Sääntseq muutujaq ommaq vaihõlõ jätedüq.",
+'post-expand-template-argument-category' => 'Leheq, kon om näüdüsside seen vaihõlõjätetüisi muutujit',
 
 # "Undo" feature
 'undo-success' => "Tagasivõtminõ läts' kõrda. Kaeq üle, kas taa om tuu, midä sa tetäq tahtsõt ja pästäq muutusõq.",
@@ -671,8 +718,8 @@ Seletüs: (viim) = lahkominegiq viimätsest kujost,
 (minev) = lahkominegiq minevädsest kujost, ts = väiku (tsill'okõnõ) muutminõ",
 'history-fieldset-title' => 'Kaeq muutmiisi aoluku',
 'history-show-deleted' => 'Õnnõ kistutõduq',
-'histfirst' => 'Edimädseq',
-'histlast' => 'Viimädseq',
+'histfirst' => 'Kõgõ vanõmbaq',
+'histlast' => 'Kõgõ vahtsõmbaq',
 'historysize' => '({{PLURAL:$1|1 bait|$1 baiti}})',
 'historyempty' => '(tühi)',
 
@@ -729,14 +776,14 @@ Lisateedüst või ollaq [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAME
 'revertmerge' => 'Lüüq jälki lahko',
 
 # Diffs
-'history-title' => '"$1" muutmiisi nimekiri',
+'history-title' => 'Lehekülje "$1" muutmiisi aolugu',
 'lineno' => 'Rida $1:',
 'compareselectedversions' => 'Võrdõlõq valituid kujjõ',
 'editundo' => 'võtaq tagasi',
-'diff-multi' => '(Kujjõ vaihõl {{PLURAL:$1|üts näütämäldä muutminõ|$1 näütämäldä muutmist}}.)',
+'diff-multi' => '(Naidõ kujjõ vaihõl om {{PLURAL:$1|üts toimõndus|$1 kujjo, miä ommaq {{PLURAL:$2|üte pruukja tettüq|$2 esiq pruukja tettüq}}}}.)',
 
 # Search results
-'searchresults' => 'Otsmisõ tulõmusõq',
+'searchresults' => 'Otsmisõ tulõmiq',
 'searchresults-title' => 'Otsmisõ "$1" tulõmiq',
 'titlematches' => "Artiklipäälkir'ost löüt",
 'textmatches' => 'Artiklitekstest löüt',
@@ -747,6 +794,7 @@ Lisateedüst või ollaq [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAME
 'nextn-title' => '{{PLURAL:$1|Järgmäne tulõmus|Järgmädseq $1 tulõmust}}',
 'shown-title' => 'Näütäq lehe kotsilõ $1 {{PLURAL:$1|tulõmus|tulõmust}}',
 'viewprevnext' => 'Näütäq ($1 {{int:pipe-separator}} $2) ($3).',
+'searchmenu-exists' => "'''Lehekülg päälkiräga \"[[:\$1]]\" om olõman.''' {{PLURAL:\$2|0=|Kaeq ka tõisi otsmistulõmit.}}",
 'searchmenu-new' => "'''Luuq leht päälkiräga \"[[:\$1]]\".'''",
 'searchprofile-articles' => 'Sisuleheq',
 'searchprofile-project' => 'Abi- ja projektileheq',
@@ -824,7 +872,9 @@ Lisateedüst või ollaq [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAME
 Taa tohe-i ollaq rohkõmb ku $1 {{PLURAL:$1|märk|märki}}.",
 'email' => 'e-posti aadrõs',
 'prefs-help-realname' => "* <strong>Peris nimi</strong> (piä-i kirotama): ku taa teedäq annat, sis pruugitas taad pruukjanime asõmõl lehekülgi tegijide nimekir'on.",
-'prefs-help-email' => 'E-postiaadrõssit piä-i kirotama, a taa lupa tõisil pruukjil sullõ kirotaq ilma su aadrõssit nägemäldäq. Taast om sis kah kassu, ku uma salasõna ärq johtut unõhtama.',
+'prefs-help-email' => 'E-postiaadrõssit piä-i kirotama, a taa lupa sul telliq vahtsõ salasõna, ku uma salasõna ärq johtut unõhtama.',
+'prefs-help-email-others' => 'Nii saavaq ka tõõsõq pruukjaq sullõ kirotaq lingi kaudu su arotuslehe pääl
+ilma, et nä näesiq suq e-posti-aadrõssit.',
 'prefs-help-email-required' => 'E-postiaadrõs piät olõma.',
 
 # User rights
@@ -924,7 +974,7 @@ Taa tohe-i ollaq rohkõmb ku $1 {{PLURAL:$1|märk|märki}}.",
 'rclistfrom' => 'Näütäq muutmiisi kuupääväst $1 pääle',
 'rcshowhideminor' => '$1 väikuq parandusõq',
 'rcshowhidebots' => '$1 robodiq',
-'rcshowhideliu' => '$1 nimega pruukjaq',
+'rcshowhideliu' => '$1 nimega pruukjat',
 'rcshowhideanons' => '$1 nimeldä pruukjaq',
 'rcshowhidepatr' => '$1 kontrolliduq muutmisõq',
 'rcshowhidemine' => '$1 mu toimõndusõq.',
@@ -939,7 +989,7 @@ Taa tohe-i ollaq rohkõmb ku $1 {{PLURAL:$1|märk|märki}}.",
 'number_of_watching_users_pageview' => '[{{PLURAL:$1|$1 perräkaejat|üts perräkaeja}}]',
 'rc_categories' => 'Õnnõ katõgoorijist (eräldedäs märgiga "|")',
 'rc_categories_any' => 'Miä taht',
-'rc-enhanced-expand' => 'Näütäq ütsikasjo (nõud JavaScripti)',
+'rc-enhanced-expand' => 'Näütäq ütsikasjo',
 'rc-enhanced-hide' => "Käkiq ütsikas'aq ärq",
 
 # Recent changes linked
@@ -1046,7 +1096,7 @@ Ku ülekaet teedüstü om sama pilt alguperälidsen suurusõn, sis olõ-i vaia e
 'listfiles_description' => 'Seletüs',
 
 # File description page
-'file-anchor-link' => 'Pilt',
+'file-anchor-link' => 'Teedüstü',
 'filehist' => 'Teedüstü aolugu',
 'filehist-help' => "Klõpsaq kuupäävä/kelläao pääl, et nätäq määne taa teedüstü sis oll'.",
 'filehist-deleteall' => 'kistudaq kõik ärq',
@@ -1171,6 +1221,7 @@ Ku ülekaet teedüstü om sama pilt alguperälidsen suurusõn, sis olõ-i vaia e
 'protectedpages' => 'Kaidsõduq leheq',
 'protectedpagesempty' => 'Olõ-i kaidsõtuid lehti.',
 'listusers' => 'Pruukjaq',
+'usercreated' => '{{GENDER:$3|Luud}} $1 kell $2',
 'newpages' => 'Vahtsõq leheküleq',
 'newpages-username' => 'Pruukjanimi:',
 'ancientpages' => 'Kõgõ vanõmbaq leheküleq',
@@ -1222,6 +1273,7 @@ Also see [[Special:WantedCategories|wanted categories]].',
 # Special:LinkSearch
 'linksearch' => 'Välislingiq',
 'linksearch-ok' => 'Otsminõ',
+'linksearch-line' => '$1 on lingit lehekülelt $2',
 
 # Special:ListUsers
 'listusersfrom' => 'Näütäq pruukjit alostõn:',
@@ -1322,6 +1374,7 @@ As\'a kotsilõ mano kaiaq ja küssü saat lehe päält: {{canonicalurl:{{MediaWi
 'confirmdeletetext' => 'Sa kistutat teedüskogost periselt ärq lehe vai pildi üten kõgõ timä aoluuga.
 Kinnüdäq, et sa tahat tuud tõtõstõ tetäq, et sa saat arvo, miä tuust tullaq või ja et tuu, miä sa tiit, klapis [[{{MediaWiki:Policy-url}}|sisekõrraga]].',
 'actioncomplete' => 'Tallitus valmis',
+'actionfailed' => 'Tallitus lää-äs kõrda',
 'deletedtext' => '"$1" om ärq kistutõt.
 Perämäidsi kistutuisi nimekirjä näet siist: $2.',
 'dellogpage' => 'Kistutõduq leheküleq',
@@ -1425,25 +1478,28 @@ Perämäidsi kistutuisi ja tagasitegemiisi saat kaiaq [[Special:Log/delete|kistu
 # Namespace form on various pages
 'namespace' => 'Nimeruum:',
 'invert' => 'Näütäq kõiki päält validu nimeruumi',
-'blanknamespace' => '(Artikliq)',
+'blanknamespace' => '(artikliq)',
 
 # Contributions
-'contributions' => 'Pruukja kirotusõq',
+'contributions' => '{{GENDER:$1|Pruukja}} toimõndusõq',
 'contributions-title' => 'Pruukja $1 toimõndusõq',
 'mycontris' => 'Hindä kirotusõq',
-'contribsub2' => 'Pruukja "$1 ($2)" kirotusõq',
+'contribsub2' => 'Pruukja {{GENDER:$3|$1}} ($2) toimõndusõq',
 'nocontribs' => 'Sääntsit muutmiisi es lövväq.',
-'uctop' => '(kõgõ vahtsõmb)',
+'uctop' => '(parhillanõ)',
 'month' => 'Alostõn kuust (ja varrampa):',
 'year' => 'Alostõn aastagast (ja varrampa):',
 
 'sp-contributions-newbies' => 'Näütäq õnnõ vahtsidõ pruukjidõ toimõnduisi',
 'sp-contributions-newbies-sub' => 'Vahtsidõ pruukjidõ toimõndusõq',
 'sp-contributions-blocklog' => 'Kinniqpidämisnimekiri',
+'sp-contributions-uploads' => 'üleslaatmisõq',
+'sp-contributions-logs' => 'muutmisnimekiräq',
 'sp-contributions-talk' => 'arotus',
 'sp-contributions-userrights' => 'Pruukja õiguisi muutminõ',
 'sp-contributions-search' => 'Otsiq muutmiisi',
 'sp-contributions-username' => 'Puutri võrgoaadrõs vai pruukjanimi:',
+'sp-contributions-toponly' => 'Näütäq õnnõ kõgõ vahtsõmbit toimõnduisi',
 'sp-contributions-submit' => 'Otsiq',
 
 # What links here
@@ -1455,13 +1511,14 @@ Perämäidsi kistutuisi ja tagasitegemiisi saat kaiaq [[Special:Log/delete|kistu
 'nolinkshere-ns' => "Valitun nimeruumin näütä-i ütegi lehe päält linke lehe '''[[:$1]]''' pääle.",
 'isredirect' => 'ümbresaatmislehekülg',
 'istemplate' => 'pruugit näüdüssen',
-'isimage' => 'pildilink',
+'isimage' => 'teedüstülink',
 'whatlinkshere-prev' => '← {{PLURAL:$1|mineväne leht|$1 mineväst lehte}}',
 'whatlinkshere-next' => '{{PLURAL:$1|mineväne leht|$1 mineväst lehte}} →',
 'whatlinkshere-links' => '← lingiq',
 'whatlinkshere-hideredirs' => '$1 ümbresaatmisõq',
 'whatlinkshere-hidetrans' => '$1 näüdüsses pruukmisõq',
 'whatlinkshere-hidelinks' => '$1 lingiq',
+'whatlinkshere-hideimages' => 'Teedüstülingiq ($1)',
 'whatlinkshere-filters' => 'Sõglaq',
 
 # Block/unblock
@@ -1512,7 +1569,7 @@ Perämäidsi kistutuisi ja tagasitegemiisi saat kaiaq [[Special:Log/delete|kistu
 'blocklink' => 'piäq kinniq',
 'unblocklink' => 'võtaq kinniqpidämine maaha',
 'change-blocklink' => 'muudaq kinniqpidämist',
-'contribslink' => 'kirotusõq',
+'contribslink' => 'toimõndusõq',
 'autoblocker' => 'Olõt automaatsõhe kinniq peet, selle et jaat puutri võrgoaadrõssit pruukjaga $1. Kinniqpidämise põhjus: $2.',
 'blocklogpage' => 'Kinniqpidämiisi nimekiri',
 'blocklogentry' => 'pidi kinniq pruukja vai puutri võrgoaadrõsi "[[$1]]". Kinniqpidämise tähtaig $2 $3',
@@ -1786,7 +1843,7 @@ Kokkovõttõria pääle või kirotaq tagasivõtmisõ põhjusõ.',
 'file-info-size' => '$1 × $2 pikslit, $3, MIME-tüüp: $4',
 'file-nohires' => 'Taast terävämpä pilti olõ-i saiaq.',
 'svg-long-desc' => 'SVG-teedüstü, põhisuurus $1 × $2 pikslit, teedüstü suurus $3',
-'show-big-image' => 'Täüsterräv kujo',
+'show-big-image' => 'Algteedüstü',
 
 # Special:NewFiles
 'newimages' => 'Vahtsõq pildiq',
@@ -1807,7 +1864,7 @@ Kokkovõttõria pääle või kirotaq tagasivõtmisõ põhjusõ.',
 'metadata-help' => 'Seon teedüstün om lisateedüst, miä om arvadaq peri pildinudsijast, digikaamõrast vai pilditoimõndusprogrammist. Ku teedüstüt om peräst timä tegemist muudõt, sis pruugi-i taa teedüs inämb õigõ ollaq.',
 'metadata-expand' => 'Näütäq kõiki sisuseletüisi',
 'metadata-collapse' => 'Näütäq õnnõ tähtsämbit sisuseletüisi',
-'metadata-fields' => 'Naaq riaq ommaq nätäq pildilehe pääl, ku sisuseletüse tapõl om tühi.
+'metadata-fields' => 'Naid pildi metateedüse väljo näüdätäs pildi seletüslehe vähändedün kahusõn. Ülejäänüq teedüs om vaikimiisi käkit.
 * make
 * model
 * datetimeoriginal
@@ -1820,6 +1877,12 @@ Kokkovõttõria pääle või kirotaq tagasivõtmisõ põhjusõ.',
 * imagedescription
 * gpslatitude
 * gpslongitude
+* gpsaltitude
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
 * gpsaltitude',
 
 # Exif tags
@@ -2155,6 +2218,9 @@ Prooviq harilikku kaehust.',
 'watchlisttools-edit' => 'Kaeq ja toimõndaq perräkaemisnimekirjä',
 'watchlisttools-raw' => 'Toimõndaq lätteteedüstüt',
 
+# Core parser functions
+'duplicate-defaultsort' => '\'\'\'Hoiatus:\'\'\' Sortmisvõti "$2" tühistäs ärq innembädse sortmisvõtmõ "$1".',
+
 # Special:Version
 'version' => 'Kujo',
 'version-version' => '(Kujo $1)',
@@ -2180,6 +2246,19 @@ Prooviq harilikku kaehust.',
 'specialpages-group-wiki' => 'Vikiteedüseq ja tüüriistaq',
 'specialpages-group-redirects' => 'Ümbrenäütämistallitusleheq',
 
+# External image whitelist
+'external_image_whitelist' => '  #Jätäq seo rida muutmalda kujo pääle<pre>
+#Panõq regulaaravaldusõ osaq (õnnõ //-märke vaihõl ollõv jago) allapoolõ
+#Naaq pandasõq vastama vikivälitside pilte internetiaadrõssidõga
+#Nuuq, miä vastasõq, näüdätäseq ku pildiq, muido näüdätäs õnnõ pildi link
+#Märgiga # päälenakkajaq riaq ommaq kommõntaariq
+#Seo tii-i vaiht suuril ja väikeisil tähil
+
+#Panõq kõik regulaaravaldusq osaq seo joonõ kotsilõ. Jätäq seo rida muutmalda</pre>',
+
+# Special:Tags
+'tag-filter' => '[[Special:Tags|Märkmisfiltri]]:',
+
 # New logging system
 'rightsnone' => '(olõ-i õiguisi)',
 
index a979862..9228ef1 100644 (file)
@@ -70,7 +70,7 @@ $messages = array(
 'tog-editsection' => '«Чиклх» заавр болвчн хүвд үзүлх',
 'tog-editsectiononrightclick' => 'Һарчига барун индстлһар хүвиг чиклх (JavaScript кергтә)',
 'tog-showtoc' => 'Һарг үзүлх (3 икәр толһата халхсд)',
-'tog-rememberpassword' => 'Намаг эн тоолдврт тодлх ($1 {{PLURAL:$1|өдрт|өдрмүдт}} икәр биш)',
+'tog-rememberpassword' => 'Намаг эн тоолдврт тодлх ($1 {{PLURAL:$1|1=өдрт|өдрмүдт}} икәр биш)',
 'tog-watchcreations' => 'Би эврәннь немгдсн халхс шинҗллһнә сеткүлд немх',
 'tog-watchdefault' => 'Би эврәннь чиклсн халхс шинҗллһнә сеткүлд немх',
 'tog-watchmoves' => 'Би эврәннь көндсн халхс шинҗллһнә сеткүлд немх',
@@ -162,19 +162,19 @@ $messages = array(
 'dec' => 'Бар',
 
 # Categories related messages
-'pagecategories' => '{{PLURAL:$1|Әәшл|Әәшлүд}}',
+'pagecategories' => '{{PLURAL:$1|1=Әәшл|Әәшлүд}}',
 'category_header' => '«$1» әәшлд бәәдг халхс',
 'subcategories' => 'Баһар әәшлүд',
 'category-media-header' => '«$1» әәшлд бәәдг боомгуд',
 'category-empty' => "''Тер әәшл хоосн болҗана.''",
-'hidden-categories' => '{{PLURAL:$1|Бултулсн әәшл|Бултулсн әәшлүд}}',
+'hidden-categories' => '{{PLURAL:$1|1=Бултулсн әәшл|Бултулсн әәшлүд}}',
 'hidden-category-category' => 'Бултулсн әәшлүд',
-'category-subcat-count' => '{{PLURAL:$2|Тер әәшл эн һанцхн баһар әәшлтә.|{{PLURAL:$1|$1 баһар әәшл үзүлв|$1 баһар әәшлүд үзүлв|$1 баһар әәшлүд}} $2 ут туршдан үзүлв.}}',
-'category-subcat-count-limited' => 'Тер әәшлд {{PLURAL:$1|нег баһар әәшл|$1 баһар әәшлүд}} болҗана.',
-'category-article-count' => '{{PLURAL:$2|Тер әәшл һанцхн халхта.|{{PLURAL:$1|$1 халхиг үзүлв|$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-subcat-count' => '{{PLURAL:$2|Тер әәшл эн һанцхн баһар әәшлтә.|{{PLURAL:$1|$1 баһар әәшл үзүлв|$1 баһар әәшлүд|$1 баһар әәшлүд үзүлв}} $2 ут туршдан үзүлв.}}',
+'category-subcat-count-limited' => 'Тер әәшлд {{PLURAL:$1|1=нег баһар әәшл|$1 баһар әәшлүд}} болҗана.',
+'category-article-count' => '{{PLURAL:$2|Тер әәшл һанцхн халхта.|{{PLURAL:$1|$1 халхсиг үзүлв|$1 халхиг үзүлв|$1 халхсиг үзүлв}}, $2 ут туршдан.}}',
+'category-article-count-limited' => 'Тер әәшлд {{PLURAL:$1|1=нег халх|$1 халхс}} болҗана.',
+'category-file-count' => '{{PLURAL:$2|Тер әәшлд һанцхн халх болҗана.|Терүнәс {{PLURAL:$1|1=нег боомг үзүлсн|$1 боомгуд үзүлсн}} $2 ут туршдан.}}',
+'category-file-count-limited' => 'Эн {{PLURAL:$1|1=боомг|$1 боомгуд}} тер әәшлд болҗана.',
 'listingcontinuesabbrev' => '(цааранднь)',
 'index-category' => 'Индекссн халхс',
 'noindex-category' => 'Индекссн биш халхс',
@@ -295,7 +295,7 @@ $1',
 
 'badaccess' => 'Зөвәнә эндү',
 'badaccess-group0' => 'Та сурсн үүл кеҗ болшго.',
-'badaccess-groups' => 'Эн үүл һанцхн {{PLURAL:$2|багас|багудас}} $1 кеҗ чадна.',
+'badaccess-groups' => 'Эн үүл һанцхн {{PLURAL:$2|1=багас|багудас}} $1 кеҗ чадна.',
 
 'versionrequired' => "MediaWiki'н $1 һарц кергтә",
 'versionrequiredtext' => "Тер халх олзхар, MediaWiki'н $1 һарц кергтә.
@@ -316,7 +316,7 @@ $1',
 'hidetoc' => 'бултулх',
 'thisisdeleted' => '$1 гүүһәд хәләхү аль хәрүлхү?',
 'viewdeleted' => '$1 үзүлхү?',
-'restorelink' => '{{PLURAL:$1|$1 һарһсн сольлһн|$1 һарһсн сольлһн}}',
+'restorelink' => '{{PLURAL:$1|1=$1 һарһсн сольлһн|$1 һарһсн сольлһн}}',
 'feedlinks' => 'Тер бәәдлтә',
 'feed-invalid' => 'Буру бичгдлһнә төлә сүвин янз.',
 'feed-unavailable' => 'Синдикацин сүв орлһта биш',
@@ -381,7 +381,7 @@ $1',
 'yourname' => 'Демнчна нернь:',
 'yourpassword' => 'Нууц үг:',
 'yourpasswordagain' => 'Нууц үгиг давтн:',
-'remembermypassword' => 'Намаг эн тоолдврд тодлх ($1 {{PLURAL:$1|өдрт|өдрмүдт}} икәр биш)',
+'remembermypassword' => 'Намаг эн тоолдврд тодлх ($1 {{PLURAL:$1|1=өдрт|өдрмүдт}} икәр биш)',
 'yourdomainname' => 'Тана домен:',
 'login' => 'Орлһн',
 'nav-login-createaccount' => 'Харһх / бичгдлһн кех',
@@ -495,12 +495,12 @@ $1',
 'copyrightwarning2' => "Буйн болтха, цуг өгүллһн {{SITENAME}} төлә чиклсн аль һарһсн бәәдг чадта тускар тодлтн.  Та тана бичсн чилклсн аль делгрңсн бәәҗ седхлә биш, эн ормд бичә бичтн.<br /> Дәкәд та маднд эн эврәнь бичсн, күмн әмтнә хазас аль цацу сул медснәс бәәдг үгән өгнәт ($1 хәләтн). '''Зөвән авхла уга, харссн бичсн күүнә көдлмш бичә тәвтн!'''",
 'semiprotectedpagewarning' => "'''Оньган өгтн:''' тер халх харссн болҗана, тер учрар эниг бичгдлһтә демнчнр һанцхн чиклҗ чадна.
 Нөкд төлә, эн шидрә сеткүлин бичвр:",
-'templatesused' => 'Эн халхд олзлсн {{PLURAL:$1|зурас|зурас}}:',
-'templatesusedpreview' => '{{PLURAL:$1|Кевләр|Кевләрмүд}} эн хәләврт олзлсн:',
+'templatesused' => 'Эн халхд олзлсн {{PLURAL:$1|1=зурас|зурас}}:',
+'templatesusedpreview' => '{{PLURAL:$1|1=Кевләр|Кевләрмүд}} эн хәләврт олзлсн:',
 'template-protected' => '(харссн)',
 'template-semiprotected' => '(зәрм харссн)',
 'hiddencategories' => 'Эн халх тер $1 {{PLURAL:$1|бултулсн әәшләс|бултулсн әәшлүдәс|бултулсн әәшлүдәс}}:',
-'permissionserrorstext-withaction' => 'Та $2 кеҗ болшго. Юнгад гихлә, эн {{PLURAL:$1|учрар|учрар}}:',
+'permissionserrorstext-withaction' => 'Та $2 кеҗ болшго. Юнгад гихлә, эн {{PLURAL:$1|1=учрар|учрар}}:',
 'edit-conflict' => 'Чикллһнә керүл.',
 
 # Parser/template warnings
@@ -587,7 +587,7 @@ $1',
 'prefs-rc' => 'Шидрә сольлһн',
 'prefs-watchlist' => 'Шинҗллһнә сеткүл',
 'prefs-watchlist-days' => 'Шинҗллһнә седкүлд үзүлсн ик гисн өдрин то:',
-'prefs-watchlist-days-max' => 'Maximum $1 {{PLURAL:$1|day|days}}',
+'prefs-watchlist-days-max' => 'Maximum $1 {{PLURAL:$1|1=day|days}}',
 'prefs-misc' => 'Талдан',
 'prefs-resetpass' => 'Нууц угиг сольҗ',
 'prefs-email' => "E-mail'ын көгүд",
@@ -624,7 +624,7 @@ $1',
 'youremail' => 'E-mail хайг:',
 'username' => 'Демнчна нер:',
 'uid' => 'Демнчна тойг (ID):',
-'prefs-memberingroups' => '{{PLURAL:$1|Багин|Багдудин}} хүв:',
+'prefs-memberingroups' => '{{PLURAL:$1|1=Багин|Багдудин}} хүв:',
 'prefs-registration' => 'Темдглҗ  бүртклһнә цаг:',
 'yourrealname' => 'Үнн нерн:',
 'yourlanguage' => 'Бәәдлин келн:',
@@ -682,7 +682,7 @@ $1',
 'action-edit' => 'эн халхиг чиклх',
 
 # Recent changes
-'nchanges' => '$1 {{PLURAL:$1|сольлһн|сольлһн}}',
+'nchanges' => '$1 {{PLURAL:$1|1=сольлһн|сольлһн}}',
 'recentchanges' => 'Шидрә сольлһн',
 'recentchanges-legend' => 'Шидрә сольлһна көгүд',
 'recentchanges-summary' => 'Эн цагин дараһар бичсн шидрә сольлһн',
@@ -790,13 +790,13 @@ $1',
 
 # Miscellaneous special pages
 'nbytes' => '$1 {{PLURAL:$1|байд|байдуд|байдуд}}',
-'nmembers' => '$1 {{PLURAL:$1|мөч|мөчин|мөчүд}}',
+'nmembers' => '$1 {{PLURAL:$1|мөч|мөчүд|мөчин}}',
 'prefixindex' => 'Цуг халхс эн эклцтә',
 'newpages' => 'Шин халхс',
 'move' => 'Көндәх',
 'movethispage' => 'Эн халхд шин нер аль шин орм өгх',
-'pager-newer-n' => '{{PLURAL:$1|шинәр 1|шинәр $1}}',
-'pager-older-n' => '{{PLURAL:$1|көгшәр 1|көгшәр $1}}',
+'pager-newer-n' => '{{PLURAL:$1|1=шинәр 1|шинәр $1}}',
+'pager-older-n' => '{{PLURAL:$1|1=көгшәр 1|көгшәр $1}}',
 
 # Book sources
 'booksources' => 'Дегтрин делгүрс',
@@ -900,7 +900,7 @@ $2 шидрә һарһлһна төлә хәләтн.',
 'protect-text' => "Энд та '''$1''' халхин харсллһна кемҗән хәләҗ,  хүврлҗ чаднат.",
 'protect-locked-access' => "Эн халхна харсллһна кемҗән сольҗ, тана бичгдлһна зөв тату.
 Ода болсн '''$1''' халхна көгүд:",
-'protect-cascadeon' => 'Эн халх харссн. Юнгад гихлә, тер халх {{PLURAL:$1|эн халхд|тенд халхсд}} каскад харсллһта. Тадн эн халхна харсллһна кемҗән сольх чаднат, болв тер үүл каскад харлсһиг цокҗ чадшго.',
+'protect-cascadeon' => 'Эн халх харссн. Юнгад гихлә, тер халх {{PLURAL:$1|1=эн халхд|тенд халхсд}} каскад харсллһта. Тадн эн халхна харсллһна кемҗән сольх чаднат, болв тер үүл каскад харлсһиг цокҗ чадшго.',
 'protect-default' => 'Цуг демнчнрд зөвән өгҗ',
 'protect-fallback' => '$1 зөв кергтә',
 'protect-level-autoconfirmed' => 'Шин болн нер уга демнчнрас харсх',
@@ -950,7 +950,7 @@ $2 шидрә һарһлһна төлә хәләтн.',
 'isredirect' => 'авч оддг халх',
 'istemplate' => 'оруллһн',
 'isimage' => 'зургин  заалһ',
-'whatlinkshere-prev' => '{{PLURAL:$1|урдк|урдк $1}}',
+'whatlinkshere-prev' => '{{PLURAL:$1|1=урдк|урдк $1}}',
 'whatlinkshere-next' => '{{PLURAL:$1|дарук|дарук|дарук}} $1',
 'whatlinkshere-links' => '← заалһуд',
 'whatlinkshere-hideredirs' => '$1 авч одлһн',
@@ -1175,7 +1175,7 @@ $2 шидрә һарһлһна төлә хәләтн.',
 'livepreview-ready' => 'Белднә... Болһсн!',
 
 # Watchlist editor
-'watchlistedit-numitems' => 'Тана шинҗллһнә сеткүл {{PLURAL:$1|1 гешүтә|$1 гешүдтә}}, меткән халхста.',
+'watchlistedit-numitems' => 'Тана шинҗллһнә сеткүл {{PLURAL:$1|1=1 гешүтә|$1 гешүдтә}}, меткән халхста.',
 'watchlistedit-noitems' => 'Тана шинҗллһнә сеткүл хоосн бәәнә.',
 'watchlistedit-normal-title' => 'Шинҗллһнә сеткүлиг чиклх',
 
index 0fe61fc..ff6c503 100644 (file)
@@ -1617,12 +1617,14 @@ $1",
 'recentchanges-label-bot' => ' די רעדאַקטירונג האט אויסגעפירט א באט',
 'recentchanges-label-unpatrolled' => 'די רעדאקטירונג איז נאך נישט נאכגעקוקט',
 'recentchanges-label-plusminus' => 'בלאט גרייס געענדערט מיט דער צאל בייטן',
+'recentchanges-legend-heading' => "'''לעגענדע:'''",
 'recentchanges-legend-newpage' => '(זעט אויך [[Special:NewPages|די רשימה פון נייע בלעטער]])',
+'recentchanges-legend-plusminus' => "(''±123'')",
 'rcnotefrom' => "פֿאלגנד זענען די ענדערונגען זײַט '''$2''' (ביז '''$1''')",
 'rclistfrom' => 'װײַזן נײַע ענדערונגען פֿון $1',
 'rcshowhideminor' => '$1 מינערדיגע ענדערונגען',
 'rcshowhidebots' => '$1 ראבאטן',
-'rcshowhideliu' => '$1 אײַנגעשריבענע באַניצערס',
+'rcshowhideliu' => '$1 אײַנגעשריבענע באַניצער',
 'rcshowhideanons' => '$1 אַנאָנימע באַניצער',
 'rcshowhidepatr' => '$1 פאַטראלירטע ענדערונגען',
 'rcshowhidemine' => '$1 מײַנע רעדאַקטירוננגען',
@@ -2035,6 +2037,7 @@ $1",
 'ninterwikis' => '$1 {{PLURAL:$1|אינטערוויקי|אינטערוויקיס}}',
 'nlinks' => '$1 {{PLURAL:$1|לינק|לינקען}}',
 'nmembers' => '$1 {{PLURAL:$1|בלאט|בלעטער}}',
+'nmemberschanged' => '$1 → $2 {{PLURAL:$2|מיטגליד|מיטגלידער}}',
 'nrevisions' => '{{PLURAL:$1|איין רעוויזיע|$1 רעוויזיעס}}',
 'nviews' => '{{PLURAL:$1|איין קוק|$1 קוקן}}',
 'nimagelinks' => 'געניצט אויף $1 {{PLURAL:$1|בלאַט|בלעטער}}',
index f1e9d13..d537714 100644 (file)
@@ -484,11 +484,11 @@ Olùṣeàmójútó tó típa ṣe àlàyé yìí: "$3".',
 'yourdomainname' => 'Domain yín:',
 'password-change-forbidden' => 'Ẹ kò le ṣe ìyípadà ọ̀rọ̀ìpamọ́ lórí wiki yìí.',
 'externaldberror' => 'Bóyá àsìṣe ìfidájú ibùdó dátà ló ṣẹlẹ̀ tàbí ẹ kò jẹ́ gbígbà ní ààyè láti sọ àpamọ́ òde yín di ọ̀tun.',
-'login' => 'Ìwọlé',
+'login' => 'Ìwọlé',
 'nav-login-createaccount' => 'Ìwọlé / Ìforúkọ sílẹ̀',
 'loginprompt' => 'Ẹ gbọ́dọ̀ jọ̀wọ́ cookies láti wọlé sí {{SITENAME}}.',
 'userlogin' => 'Ìwọlé / ìforúkọ sílẹ̀',
-'userloginnocreate' => 'Ìwọlé',
+'userloginnocreate' => 'Ìwọlé',
 'logout' => 'Ìjáde',
 'userlogout' => 'Ìjáde',
 'notloggedin' => "Ẹ kò tí w'ọlé",
@@ -739,7 +739,7 @@ $1 ni ó ṣe ìdínà.
 'nosuchsectiontext' => 'Ẹ ti gbìyànjú láti ṣàtúnṣe abala tí kòsí.
 Ó ti le jẹ́ yíyípò tàbí píparẹ́ nígbà tí ẹ ún bojúwo ojúewé náà.',
 'loginreqtitle' => "Ẹ gbọ́dọ̀ kọ́kọ́ w'ọlé ná",
-'loginreqlink' => 'wọlé',
+'loginreqlink' => 'wọlé',
 'loginreqpagetext' => 'Ẹ gbọ́dọ̀ $1 láti wo àwọn ojúewé míràn.',
 'accmailtitle' => 'Ti fi ọ̀rọ̀ìpamọ́ ránṣẹ́.',
 'accmailtext' => "A ti fi ọ̀rọ̀ìpamọ́ àrìnàkò tí a pèsè fún [[User talk:$1|$1]] ránṣẹ́ sí $2. Ẹ le ṣe àyípadà ọ̀rọ̀ìpamọ́ fún àpamọ́ tuntun yìí ní ibi ''[[Special:ChangePassword|àyípadà ọ̀rọ̀ìpamọ́]]'' lẹ́yìn tí ẹ bá ti jáwọlé.",
@@ -1006,8 +1006,8 @@ Tó bá jẹ́ pé ẹ ti wọlé, ẹ lè dẹ́kun ìkìlọ̀ yìí nínù ab
 'revdelete-hide-user' => 'Orúkọ oníṣe/àdírẹ́ẹ̀sì IP olùtúnṣe',
 'revdelete-hide-restricted' => 'Ìbòmọ́lẹ̀ àwọn ìpèsè ti àwọn alámùójútó àti ti àwọn yìókù',
 'revdelete-radio-same' => '(láì yípadà)',
-'revdelete-radio-set' => 'Híhàn',
-'revdelete-radio-unset' => 'Bíbòmọ́lẹ̀',
+'revdelete-radio-set' => 'Bíbòmọ́lẹ̀',
+'revdelete-radio-unset' => 'Híhàn',
 'revdelete-suppress' => 'Ìbòmọ́lẹ̀ àwọn ìpèsè ti àwọn alámùójútó àti ti àwọn yìókù',
 'revdelete-unsuppress' => 'Ìyọkúrò àlà sí àwọn àtúnyẹ̀wò àdápadà',
 'revdelete-log' => 'Ìdíẹ̀:',
@@ -1087,6 +1087,7 @@ Kò ṣe é bòmọ́lẹ̀.',
 'compareselectedversions' => 'Ìfiwéra àwọn àtúnṣe ìṣàyàn',
 'showhideselectedversions' => 'Ìfihàn/ìbòmọ́lẹ̀ àwọn àtúnyẹ̀wò ṣíṣàyàn',
 'editundo' => 'dápadà',
+'diff-empty' => '(Kò ní yàtọ̀)',
 'diff-multi' => '({{PLURAL:$1|Àtúnyẹ̀wò inú àrin kan|Àwọn àtúnyẹ̀wò inú àrin $1}} látọwọ́ {{PLURAL:$2|oníṣe kan|àwọn oníṣe $2}} kò jẹ́ fífihàn)',
 'diff-multi-manyusers' => '({{PLURAL:$1|Àtúnyẹ̀wò inú àrin kan|Àwọn àtúnyẹ̀wò inú àrin $1}} látọwọ́ {{PLURAL:$2|oníṣe|àwọn oníṣe}} tó pọ̀ju $2 lọ kò jẹ́ fífihàn)',
 'difference-missing-revision' => '{{PLURAL:$2|Àtúnyẹ̀wò kan|Àwọn àtúnyẹ̀wò $2}} ìyàtọ̀ yìí ($1) kò {{PLURAL:$2|sí|sí}}.
@@ -1146,11 +1147,13 @@ Kò ṣe é bòmọ́lẹ̀.',
 'searchdisabled' => 'Ṣíṣàwárí nínú {{SITENAME}} wà ní dídálẹ́kun.
 Ní báyìí ná ẹ le ṣàwárí lọ́dọ̀ Google.
 Àkíyèsí pé àwọn atọ́ka wọn fún àkóónú {{SITENAME}} le mọ́ jẹ́ tuntun.',
+'search-error' => 'Àṣìṣe ṣẹlẹ̀ fún ìwárí: $1',
 
 # Preferences page
 'preferences' => 'Àwọn ìfẹ́ràn',
 'mypreferences' => 'Àwọn ìfẹ́ràn',
 'prefs-edits' => 'Iye àwọn àtúnṣe:',
+'prefsnologintext2' => 'Ẹ jọ̀wọ́ ẹ $1 láti ṣe ìyípadà àwọn ìfẹ́ràn yín.',
 'prefs-skin' => 'Skin (Àwọ̀)',
 'skin-preview' => 'Àkọ́yẹ̀wò',
 'datedefault' => 'Kò sí ìfẹ́ràn',
@@ -1248,6 +1251,8 @@ Tí ẹ bá fisílẹ̀ a ó lòó láti tóka iṣẹ́ yín fún yín.',
 'prefs-dateformat' => 'Irú ọjọ́ọdún',
 'prefs-timeoffset' => 'Ìyàtọ̀ àsìkò',
 'prefs-advancedediting' => 'Àwọn àṣàyàn gíga',
+'prefs-editor' => 'Olùṣàtúnṣe',
+'prefs-preview' => 'Àkọ́yẹ̀wò',
 'prefs-advancedrc' => 'Àwọn àṣàyàn onígíga',
 'prefs-advancedrendering' => 'Àwọn àṣàyàn onígíga',
 'prefs-advancedsearchoptions' => 'Àwọn àṣàyàn onígíga',
@@ -1416,6 +1421,7 @@ Tí ẹ bá fisílẹ̀ a ó lòó láti tóka iṣẹ́ yín fún yín.',
 
 # Recent changes
 'nchanges' => '{{PLURAL:$1|àtúnṣe|àwọn àtúnṣe}} $1',
+'enhancedrc-history' => 'ìtàn',
 'recentchanges' => 'Àwọn àtúnṣe tuntun',
 'recentchanges-legend' => 'Àwọn àṣàyàn fún àtúnṣe tuntun',
 'recentchanges-summary' => 'Ẹ tẹ̀ lé àwọn àtúnṣe tuntun sí wiki lórí ojúewé yìí.',
@@ -1424,12 +1430,14 @@ Tí ẹ bá fisílẹ̀ a ó lòó láti tóka iṣẹ́ yín fún yín.',
 'recentchanges-label-minor' => 'Àtùnṣe kékeré nìyí',
 'recentchanges-label-bot' => 'Rọ́bọ́ọ̀tì ni ó ṣe àtúnṣe yìí',
 'recentchanges-label-unpatrolled' => 'Àtúnṣe yìí kò tí ì jẹ́ onísíṣọ́',
-'recentchanges-legend-newpage' => '$1 - ojúewé tuntun',
+'recentchanges-label-plusminus' => 'Iye bytes àtúnṣe sí ìtóbi ojúewé',
+'recentchanges-legend-heading' => "'''Ìtumọ̀:'''",
+'recentchanges-legend-newpage' => '(ẹ tún wo [[Special:NewPages|àtòjọ àwọn ojúewé tuntun]])',
 'rcnotefrom' => "Àwọn àtúnṣe láti ''''$2''' (títí dé '''$1''' hàn) lábẹ́.",
 'rclistfrom' => 'Àfihàn àwọn àtúnṣe tuntun nípa bíbẹ̀rẹ̀ láti $1',
 'rcshowhideminor' => '$1 àwọn àtúnṣe kékéèké',
 'rcshowhidebots' => '$1 àwọn bot',
-'rcshowhideliu' => '$1 àwọn oníṣe tótiwọlé',
+'rcshowhideliu' => '$1 àwọn oníṣe aforúkọsílẹ̀',
 'rcshowhideanons' => '$1 àwọn oníṣe aláìlórúkọ',
 'rcshowhidepatr' => '$1 àwọn àtúnṣe ọlùṣọ́',
 'rcshowhidemine' => '$1 àwọn àtúnṣe mi',
@@ -1466,7 +1474,7 @@ Tí ẹ bá fisílẹ̀ a ó lòó láti tóka iṣẹ́ yín fún yín.',
 'reuploaddesc' => 'Fagilé ìrùsókè kí ó tó padà sí fọ́ọ̀mù ìrùsókè',
 'upload-tryagain' => 'Ìkóólẹ̀ fáìlì ìjúwe aláàtúnṣe',
 'uploadnologin' => 'Ẹ kò tíì wọlé',
-'uploadnologintext' => 'Ẹ gbọ́dọ̀ [[Special:UserLogin|wọlè]] láti ṣe ìrùsókè faili.',
+'uploadnologintext' => 'Ẹ jọ̀wọ́ ẹ $1 láti ṣe ìrùsókè fáìlì.',
 'upload_directory_missing' => 'Àpò ìrùsókè ($1) kòsí bẹ́ẹ̀sìni kò le jẹ́ dídá látọwọ́ ẹ̀rọ-ìwọ̀fà.',
 'upload_directory_read_only' => 'Àpò ìrùsókè ($1) kò ṣeékọ sí nínú látọwọ́ ẹ̀rọ-ìwọ̀fà.',
 'uploaderror' => 'Àsìse ìrùsókè',
@@ -1721,6 +1729,8 @@ Tó bá jẹ́ jíjọ̀ gẹ́gẹ́bí oníṣe, àwọn fáìlì tí oníṣe
 'listfiles_size' => 'Ìtóbi',
 'listfiles_description' => 'Ìjúwe',
 'listfiles_count' => 'Àwọn àtẹ̀jáde',
+'listfiles-latestversion-yes' => 'Bẹ́ẹ̀ni',
+'listfiles-latestversion-no' => 'Bẹ́ẹ̀kọ́',
 
 # File description page
 'file-anchor-link' => 'Fáìlì',
@@ -3339,6 +3349,9 @@ $5
 'imgmultigo' => 'Lọ!',
 'imgmultigoto' => 'Lọ sí ojúewé $1',
 
+# Language selector for translatable SVGs
+'img-lang-default' => '(èdè látìbẹ̀rẹ̀)',
+
 # Table pager
 'ascending_abbrev' => 'ròkè',
 'descending_abbrev' => 'relẹ̀',
@@ -3618,4 +3631,7 @@ Bíbẹ̀ẹ̀kọ́, ẹ le lo fọ́ọ̀mù ìsàlẹ̀. Ẹjọ́ yín yíò
 # Image rotation
 'rotate-comment' => 'Àwòrán jẹ́ mímúyípo ní {{PLURAL:$1|degree|ìyí}} $1 bíi ọwọ́ ago',
 
+# Special:ExpandTemplates
+'expand_templates_preview' => 'Àkọ́yẹ̀wò',
+
 );
index a765ebd..eaa81bc 100644 (file)
@@ -400,7 +400,7 @@ $messages = array(
 'tog-watchmoves' => '添加我移动的页面和文件至我的监视列表',
 'tog-watchdeletion' => '添加我删除的页面和文件至我的监视列表',
 'tog-minordefault' => '默认标记所有编辑为小编辑',
-'tog-previewontop' => 'å\9c¨ç¼\96è¾\91æ¡\86ä¸\8aæ\96¹æ\98¾ç¤ºé¢\84è§\88',
+'tog-previewontop' => 'å°\86é¢\84è§\88æ\98¾ç¤ºå\9c¨ç¼\96è¾\91æ¡\86ä¸\8aæ\96¹',
 'tog-previewonfirst' => '首次编辑时显示预览',
 'tog-enotifwatchlistpages' => '当我的监视列表中的页面或文件更改时发送电子邮件通知我',
 'tog-enotifusertalkpages' => '当我的用户讨论页面更改时发送电子邮件通知我',
@@ -530,7 +530,7 @@ $messages = array(
 'mytalk' => '讨论',
 'anontalk' => '该IP地址的讨论',
 'navigation' => '导航',
-'and' => '&#32;和',
+'and' => '和',
 
 # Cologne Blue skin
 'qbfind' => '查找',
@@ -823,7 +823,7 @@ $2',
 'gotaccount' => '已经拥有账户?请$1。',
 'gotaccountlink' => '登录',
 'userlogin-resetlink' => '忘记你的登录信息?',
-'userlogin-resetpassword-link' => '忘记您的密码?',
+'userlogin-resetpassword-link' => '忘记密码?',
 'helplogin-url' => 'Help:登录',
 'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|登录帮助]]',
 'userlogin-loggedin' => '你已经以{{GENDER:$1|$1}}的身份登录。使用下面的表格以其他用户的身份登录。',
@@ -1097,7 +1097,7 @@ $2
 这种情况通常在您使用含有故障的网页式匿名代理服务的时候出现。",
 'edit_form_incomplete' => "'''编辑表格的某些部分没有到达服务器,请检查你的编辑是否完整并重试。'''",
 'editing' => '编辑“$1”',
-'creating' => '创建 $1',
+'creating' => '创建“$1”',
 'editingsection' => '编辑“$1(段落)”',
 'editingcomment' => '编辑“$1”(新段落)',
 'editconflict' => '编辑冲突:$1',
@@ -1198,6 +1198,8 @@ $2
 'cantcreateaccount-text' => "从该IP地址('''$1''')创建账户已被[[User:$3|$3]]禁止。
 
 $3的理由是''$2''",
+'cantcreateaccount-range-text' => "从该IP地址段'''$1'''的账户创建已被[[User:$3|$3]]禁止,而这也包括了您的IP地址('''$4''')。
+$3给出的原因是“$2”。",
 
 # History pages
 'viewpagelogs' => '查看本页面的日志',
@@ -1301,7 +1303,7 @@ $1",
 ** 潜在毁谤性信息',
 'revdelete-otherreason' => '其他/附加原因:',
 'revdelete-reasonotherlist' => '其他原因',
-'revdelete-edit-reasonlist' => 'ç¼\96è¾\91å\88 é\99¤å\9f\8bç\94±',
+'revdelete-edit-reasonlist' => 'ç¼\96è¾\91å\88 é\99¤å\8e\9få\9b ',
 'revdelete-offender' => '版本作者:',
 
 # Suppression log
@@ -1572,15 +1574,15 @@ $1",
 # Rights
 'right-read' => '阅读页面',
 'right-edit' => '编辑页面',
-'right-createpage' => 'å\88\9b建页é\9d¢ï¼\88é\9d\9e讨论页é\9d¢ï¼\89',
+'right-createpage' => 'å\88\9b建é\9d\9e讨论页é\9d¢',
 'right-createtalk' => '创建讨论页面',
-'right-createaccount' => '创建新用户账户',
-'right-minoredit' => '标记小编辑',
+'right-createaccount' => '创建账户',
+'right-minoredit' => '标记编辑为小编辑',
 'right-move' => '移动页面',
 'right-move-subpages' => '移动页面及其子页面',
 'right-move-rootuserpages' => '移动根用户页面',
 'right-movefile' => '移动文件',
-'right-suppressredirect' => '移动页面时不创建来自来源页面的重定向',
+'right-suppressredirect' => '移动页面时不创建来源页面的重定向',
 'right-upload' => '上传文件',
 'right-reupload' => '覆盖现存文件',
 'right-reupload-own' => '覆盖自己上传的文件',
@@ -1588,55 +1590,55 @@ $1",
 'right-upload_by_url' => '从URL上传文件',
 'right-purge' => '无确认清除页面缓存',
 'right-autoconfirmed' => '不受基于IP的速率限制',
-'right-bot' => '被视为自动过程',
+'right-bot' => '被视为自动程序',
 'right-nominornewtalk' => '不使小编辑在讨论页面引发新信息提示',
-'right-apihighlimits' => '在API查询中使用更高的限制',
+'right-apihighlimits' => '在API查询中使用更高的上限',
 'right-writeapi' => '使用写入API',
 'right-delete' => '删除页面',
 'right-bigdelete' => '删除有大型历史的页面',
 'right-deletelogentry' => '删除和恢复特定的日志项目',
 'right-deleterevision' => '删除和恢复页面的特定版本',
-'right-deletedhistory' => '查看被删除的历史条目,无其相关文字',
-'right-deletedtext' => '查看被删除的版本间的被删除的文字和更改',
+'right-deletedhistory' => '查看被删除的历史项目,不含相关文本',
+'right-deletedtext' => '查看被删除的文本及被删除的版本间差异',
 'right-browsearchive' => '搜索被删除的页面',
 'right-undelete' => '还原页面',
-'right-suppressrevision' => '审查和恢复管理员隐藏的版本',
+'right-suppressrevision' => '审查和恢复管理员隐藏的版本',
 'right-suppressionlog' => '查看非公开日志',
 'right-block' => '阻止其他用户编辑',
-'right-blockemail' => '阻止用户电邮联系',
+'right-blockemail' => '阻止用户发送电子邮件',
 'right-hideuser' => '封禁并隐藏用户名',
-'right-ipblock-exempt' => '避开IP封禁、自动封禁和IP段封禁',
+'right-ipblock-exempt' => '绕过IP封禁、自动封禁和段封禁',
 'right-proxyunbannable' => '避开代理服务器的自动封禁',
 'right-unblockself' => '自我解封',
 'right-protect' => '更改保护级别和编辑受连锁保护的页面',
-'right-editprotected' => '编辑页面保护需要“{{int:protect-level-sysop}}”',
-'right-editsemiprotected' => '编辑页面保护需要“{{int:protect-level-autoconfirmed}}”',
+'right-editprotected' => '编辑保护级别为“{{int:protect-level-sysop}}”的页面',
+'right-editsemiprotected' => '编辑保护级别为“{{int:protect-level-autoconfirmed}}”的页面',
 'right-editinterface' => '编辑用户界面',
 'right-editusercssjs' => '编辑其他用户的CSS和JavaScript文件',
 'right-editusercss' => '编辑其他用户的CSS文件',
 'right-edituserjs' => '编辑其他用户的JavaScript文件',
-'right-editmyusercss' => '编辑你自己的用户CSS文件',
-'right-editmyuserjs' => '编辑你自己的用户JavaScript文件',
-'right-viewmywatchlist' => '查看的监视列表',
-'right-editmywatchlist' => '编辑您的监视列表。请注意即使没有这种权利,某些操作仍将添加页面。',
-'right-viewmyprivateinfo' => '查看你自己的私人数据(如电子邮件地址、真实姓名)',
-'right-editmyprivateinfo' => '编辑你自己的私人数据(如电子邮件地址、真实姓名)',
+'right-editmyusercss' => '编辑的用户CSS文件',
+'right-editmyuserjs' => '编辑的用户JavaScript文件',
+'right-viewmywatchlist' => '查看的监视列表',
+'right-editmywatchlist' => '编辑您的监视列表。请留意即使缺少此权限,某些操作仍将添加页面至监视列表。',
+'right-viewmyprivateinfo' => '查看的私人数据(如电子邮件地址、真实姓名)',
+'right-editmyprivateinfo' => '编辑的私人数据(如电子邮件地址、真实姓名)',
 'right-editmyoptions' => '编辑您的个人设置',
-'right-rollback' => '快速回退最后编辑特定页面的用户的编辑',
+'right-rollback' => '快速回退最后一名用户对特定页面的编辑',
 'right-markbotedits' => '标记回退编辑为机器人编辑',
 'right-noratelimit' => '不受速率限制影响',
 'right-import' => '从其他wiki导入页面',
-'right-importupload' => '从文件上传导入页面',
+'right-importupload' => '通过上传文件导入页面',
 'right-patrol' => '标记他人的编辑为已巡查',
 'right-autopatrol' => '使自己的编辑自动标记为已巡查',
 'right-patrolmarks' => '查看最近更改的巡查标记',
 'right-unwatchedpages' => '查看未受监视页面的列表',
 'right-mergehistory' => '合并页面历史',
-'right-userrights' => '编辑所有用户权限',
-'right-userrights-interwiki' => '编辑其它wiki用户的用户权限',
+'right-userrights' => '编辑所有用户权限',
+'right-userrights-interwiki' => '编辑其它wiki用户的用户权限',
 'right-siteadmin' => '锁定和解锁数据库',
-'right-override-export-depth' => '导出含有链接页面深度为5的页面',
-'right-sendemail' => '电邮联系其他用户',
+'right-override-export-depth' => '导出页面,包括最多5层链接',
+'right-sendemail' => '发送电子邮件给其他用户',
 'right-passwordreset' => '查看密码重置电子邮件',
 
 # Special:Log/newusers
@@ -1701,14 +1703,15 @@ $1",
 'recentchanges-label-minor' => '该编辑为小编辑',
 'recentchanges-label-bot' => '该编辑由机器人执行',
 'recentchanges-label-unpatrolled' => '该编辑尚未巡查',
-'recentchanges-label-plusminus' => '更改前后页面的字节数变化',
+'recentchanges-label-plusminus' => '该页面字节数的前后变化',
+'recentchanges-legend-heading' => "'''说明:'''",
 'recentchanges-legend-newpage' => '(另见[[Special:NewPages|新页面列表]])',
 'recentchanges-legend-plusminus' => "(''±123'')",
 'rcnotefrom' => "下面是'''$2'''之后的更改(最多显示'''$1'''个)。",
 'rclistfrom' => '显示$1之后的新更改',
 'rcshowhideminor' => '$1小编辑',
 'rcshowhidebots' => '$1机器人',
-'rcshowhideliu' => '$1登录用户',
+'rcshowhideliu' => '$1注册用户',
 'rcshowhideanons' => '$1匿名用户',
 'rcshowhidepatr' => '$1已巡查的编辑',
 'rcshowhidemine' => '$1我的编辑',
@@ -2042,7 +2045,7 @@ $1',
 *常用删除理由
 ** 侵犯版权
 ** 重复文件',
-'filedelete-edit-reasonlist' => 'ç¼\96è¾\91å\88 é\99¤å\9f\8bç\94±',
+'filedelete-edit-reasonlist' => 'ç¼\96è¾\91å\88 é\99¤å\8e\9få\9b ',
 'filedelete-maintenance' => '维护期间文件删除和恢复暂时停用。',
 'filedelete-maintenance-title' => '无法删除文件',
 
@@ -2136,7 +2139,7 @@ $1',
 'nviews' => '$1次浏览',
 'nimagelinks' => '用于$1个页面中',
 'ntransclusions' => '用于$1个页面中',
-'specialpage-empty' => 'æ\97 è¯¥æ\8a¥å\91\8aç\9a\84结果。',
+'specialpage-empty' => 'æ­¤æ\8a¥å\91\8aæ\97 结果。',
 'lonelypages' => '孤立页面',
 'lonelypagestext' => '以下页面没有被{{SITENAME}}的其它页面链接或包含。',
 'uncategorizedpages' => '未归类页面',
@@ -2170,6 +2173,7 @@ $1',
 'protectedpages' => '受保护页面',
 'protectedpages-indef' => '仅无限期保护',
 'protectedpages-cascade' => '仅连锁保护',
+'protectedpages-noredirect' => '隐藏重定向',
 'protectedpagesempty' => '在这些参数下没有页面正在保护。',
 'protectedtitles' => '受保护标题',
 'protectedtitlesempty' => '在这些参数之下并无标题正在保护。',
@@ -2351,7 +2355,7 @@ $1',
 'watchlistcontains' => '您的监视列表包含$1个页面。',
 'iteminvalidname' => "页面'$1'错误,无效命名...",
 'wlnote' => "下面是{{PLURAL:$2|上|过去'''$2'''}}小时的{{PLURAL:$1|最后更改|最后'''$1'''个更改}},截至$3 $4。",
-'wlshowlast' => '显示过去$1小时$2天$3',
+'wlshowlast' => '显示过去$1小时或$2天内的$3',
 'watchlist-options' => '监视列表选项',
 
 # Displayed when you click the "watch" button and it is in the process of watching
@@ -2433,6 +2437,7 @@ $UNWATCHURL
 'delete-edit-reasonlist' => '编辑删除原因',
 'delete-toobig' => '这个页面有一个十分大量的编辑历史,超过$1次修订。删除此类页面的动作已经被限制,以防止在{{SITENAME}}上的意外扰乱。',
 'delete-warning-toobig' => '这个页面有一个十分大量的编辑历史,超过$1次修订。删除它可能会扰乱{{SITENAME}}的数据库操作;在继续此动作前请小心。',
+'deleting-backlinks-warning' => "'''警告:'''有其他页面链接到你要删除的页面。",
 
 # Rollback
 'rollback' => '回退编辑',
@@ -3146,7 +3151,7 @@ $2',
 'markedaspatrolled' => '标记为已检查',
 'markedaspatrolledtext' => '[[:$1]]的已选中修订版本已被标识为已巡查。',
 'rcpatroldisabled' => '最新更改检查被关闭',
-'rcpatroldisabledtext' => '最新更改检查的功能目前已关闭。',
+'rcpatroldisabledtext' => '最近更改巡查功能目前已关闭。',
 'markedaspatrollederror' => '不能标志为已检查',
 'markedaspatrollederrortext' => '你需要指定一个版本以标记为已巡查。',
 'markedaspatrollederror-noautopatrol' => '你不能把自己的更改标记为已检查。',
@@ -3778,7 +3783,7 @@ $5
 
 # Language selector for translatable SVGs
 'img-lang-default' => '(默认语言)',
-'img-lang-info' => '在$1 $2找到此图像。',
+'img-lang-info' => '在$1找到此图像。$2',
 'img-lang-go' => '去',
 
 # Table pager
@@ -3832,7 +3837,7 @@ $5
 'watchlistedit-raw-removed' => '$1个标题被删除:',
 
 # Watchlist editing tools
-'watchlisttools-view' => '查看关更改',
+'watchlisttools-view' => '查看关更改',
 'watchlisttools-edit' => '查看并编辑监视列表',
 'watchlisttools-raw' => '编辑原始监视列表',
 
@@ -3879,13 +3884,14 @@ MediaWiki发表时预期有用,但对此'''无任何保证''',亦无隐含
 'version-entrypoints-scriptpath' => '[https://www.mediawiki.org/wiki/Manual:$wgScriptPath 脚本路径]',
 
 # Special:Redirect
-'redirect' => '重定向(按文件、用户或版本ID)',
+'redirect' => '重定向(按文件、用户、页面或版本ID)',
 'redirect-legend' => '重定向至文件或页面',
-'redirect-summary' => '本特殊页面可以跳转至一个文件(提供文件名)、页面(提供版本ID)或用户页面(提供数字用户ID)。用法:[[{{#Special:Redirect}}/file/Example.jpg]]、[[{{#Special:Redirect}}/revision/328429]]或[[{{#Special:Redirect}}/user/101]]。',
+'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' => '基于:',
 'redirect-value' => '值:',
 'redirect-user' => '用户ID',
+'redirect-page' => '页面ID',
 'redirect-revision' => '页面版本ID',
 'redirect-file' => '文件名',
 'redirect-not-exists' => '没找到相应值',
@@ -4078,6 +4084,7 @@ MediaWiki发表时预期有用,但对此'''无任何保证''',亦无隐含
 'api-error-overwrite' => '不允许覆盖现有文件。',
 'api-error-stashfailed' => '内部错误:服务器保存临时文件失败。',
 'api-error-publishfailed' => '内部错误:服务器发布临时文件失败。',
+'api-error-stasherror' => '上传文件存档时出现错误。',
 'api-error-timeout' => '服务器没有在预期内响应。',
 'api-error-unclassified' => '出现未知错误。',
 'api-error-unknown-code' => '未知错误:$1',
@@ -4125,10 +4132,12 @@ MediaWiki发表时预期有用,但对此'''无任何保证''',亦无隐含
 'expand_templates_input' => '输入文本:',
 'expand_templates_output' => '结果:',
 'expand_templates_xml_output' => 'XML输出',
+'expand_templates_html_output' => '原始HTML输出',
 'expand_templates_ok' => '确定',
 'expand_templates_remove_comments' => '移除注释',
 'expand_templates_remove_nowiki' => '在结果中隐藏<nowiki>标签',
 'expand_templates_generate_xml' => '显示XML语法树',
+'expand_templates_generate_rawhtml' => '显示原始HTML',
 'expand_templates_preview' => '预览',
 
 );
index a33572f..fdb5847 100644 (file)
@@ -1130,6 +1130,8 @@ $2
 'cantcreateaccount-text' => "從這個 IP 位址 (<b>$1</b>) 建立帳號已經被 [[User:$3|$3]] 禁止。
 
 當中被 $3 封禁的原因是 ''$2''",
+'cantcreateaccount-range-text' => "於此IP位址段'''$1'''之賬戶註冊被[[User:$3|$3]]禁止,其亦包括您所使用之IP位址('''$4''')。
+$3所述禁止原因為“$2”。",
 
 # History pages
 'viewpagelogs' => '查詢這個頁面的日誌',
@@ -1641,13 +1643,14 @@ $1",
 'recentchanges-label-bot' => '這次編輯是由機器人進行',
 'recentchanges-label-unpatrolled' => '這次編輯尚未巡查過',
 'recentchanges-label-plusminus' => '更改前後頁面位元組大小的變化',
+'recentchanges-legend-heading' => "'''說明:'''",
 'recentchanges-legend-newpage' => '(另見[[Special:NewPages|新頁面列表]])',
 'recentchanges-legend-plusminus' => "(''±123'')",
 'rcnotefrom' => "下面是自'''$2'''(最多顯示'''$1'''):",
 'rclistfrom' => '顯示自 $1 以來的新變更',
 'rcshowhideminor' => '$1小編輯',
 'rcshowhidebots' => '$1機器人的編輯',
-'rcshowhideliu' => '$1已登入用戶的編輯',
+'rcshowhideliu' => '$1已註冊用戶',
 'rcshowhideanons' => '$1匿名用戶的編輯',
 'rcshowhidepatr' => '$1巡查過的編輯',
 'rcshowhidemine' => '$1我的編輯',
@@ -2121,6 +2124,7 @@ $1',
 'protectedpages' => '受保護頁面',
 'protectedpages-indef' => '只有無期之保護頁面',
 'protectedpages-cascade' => '只有連鎖之保護頁面',
+'protectedpages-noredirect' => '隱藏重定向',
 'protectedpagesempty' => '在這些參數下沒有頁面正在保護。',
 'protectedtitles' => '受保護標題',
 'protectedtitlesempty' => '在這些參數之下並無標題正在保護。',
@@ -2393,6 +2397,7 @@ $UNWATCHURL
 'delete-edit-reasonlist' => '編輯刪除理由',
 'delete-toobig' => '這個頁面有一個十分大量的編輯歷史,超過$1次修訂。刪除此類頁面的動作已經被限制,以防止在{{SITENAME}}上的意外擾亂。',
 'delete-warning-toobig' => '這個頁面有一個十分大量的編輯歷史,超過$1次修訂。刪除它可能會擾亂{{SITENAME}}的資料庫操作;在繼續此動作前請小心。',
+'deleting-backlinks-warning' => "'''警告:'''您要刪除的頁面有其他頁面連接至此。",
 
 # Rollback
 'rollback' => '回退編輯',
@@ -3744,7 +3749,7 @@ $5
 
 # Language selector for translatable SVGs
 'img-lang-default' => '(預設語言)',
-'img-lang-info' => '於$1 $2呈現此圖像。',
+'img-lang-info' => '於$1呈現此圖像。$2',
 'img-lang-go' => '走',
 
 # Table pager
@@ -3844,13 +3849,14 @@ MediaWiki是基於使用目的而加以發佈,然而不負任何擔保責任
 'version-entrypoints-articlepath' => '[https://www.mediawiki.org/wiki/Manual:$wgArticlePath 條目路徑]',
 
 # Special:Redirect
-'redirect' => '重定向檔案、用戶ID或頁面修訂ID',
+'redirect' => '重定向檔案、用戶、頁面或修訂ID',
 'redirect-legend' => '重定向到檔案或頁面',
-'redirect-summary' => '此特殊頁面重定向到檔案(指定的檔案名稱)、頁面 (指定的頁面修訂ID) 或用戶頁面(指定的用戶ID數值)。用法:[[{{#Special:Redirect}}/file/Example.jpg]]、[[{{#Special:Redirect}}/revision/328429]]或[[{{#Special:Redirect}}/user/101]]。',
+'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' => '尋找:',
 'redirect-value' => '值:',
 'redirect-user' => '用戶ID:',
+'redirect-page' => '頁面ID',
 'redirect-revision' => '頁面修訂ID',
 'redirect-file' => '檔案名稱',
 'redirect-not-exists' => '找不到',
@@ -4043,6 +4049,7 @@ MediaWiki是基於使用目的而加以發佈,然而不負任何擔保責任
 'api-error-overwrite' => '不允許覆蓋現有檔案。',
 'api-error-stashfailed' => '內部錯誤:伺服器保存臨時檔案失敗。',
 'api-error-publishfailed' => '內部錯誤:伺服器發佈臨時檔案失敗。',
+'api-error-stasherror' => '上載檔案存檔時出錯。',
 'api-error-timeout' => '伺服器沒有在預期的時間內回應。',
 'api-error-unclassified' => '發生未知錯誤。',
 'api-error-unknown-code' => '未知錯誤:$1',
@@ -4088,10 +4095,12 @@ MediaWiki是基於使用目的而加以發佈,然而不負任何擔保責任
 'expand_templates_input' => '輸入文字:',
 'expand_templates_output' => '結果:',
 'expand_templates_xml_output' => 'XML輸出',
+'expand_templates_html_output' => '原始HTML輸出',
 'expand_templates_ok' => '確定',
 'expand_templates_remove_comments' => '移除注釋',
 'expand_templates_remove_nowiki' => '在結果中隱藏<nowiki>標記',
 'expand_templates_generate_xml' => '顯示XML語法樹',
+'expand_templates_generate_rawhtml' => '顯示原始HTML',
 'expand_templates_preview' => '預覽',
 
 );
index c2aede0..1f4d0cd 100644 (file)
@@ -2,7 +2,8 @@
 /**
  * Parse and evaluate a plural rule.
  *
- * http://unicode.org/reports/tr35/#Language_Plural_Rules
+ * UTS #35 Revision 33
+ * http://www.unicode.org/reports/tr35/tr35-33/tr35-numbers.html#Language_Plural_Rules
  *
  * @author Niklas Laxstrom, Tim Starling
  *
@@ -63,11 +64,41 @@ class CLDRPluralRuleEvaluator {
         * Evaluate a compiled set of rules returned by compile(). Do not allow
         * the user to edit the compiled form, or else PHP errors may result.
         *
-        * @param int The number to be evaluated against the rules
+        * @param string The number to be evaluated against the rules, in English, or it
+        *   may be a type convertible to string.
         * @param array The associative array of plural rules in pluralform => rule format.
         * @return int The index of the plural form which passed the evaluation
         */
        public static function evaluateCompiled( $number, array $rules ) {
+               // Calculate the values of the operand symbols
+               $number = strval( $number );
+               if ( !preg_match( '/^ -? ( ([0-9]+) (?: \. ([0-9]+) )? )$/x', $number,  $m ) ) {
+                       wfDebug( __METHOD__.': invalid number input, returning "other"' );
+                       return count( $rules );
+               }
+               if ( !isset( $m[3] ) ) {
+                       $operandSymbols = array(
+                               'n' => intval( $m[1] ),
+                               'i' => intval( $m[1] ),
+                               'v' => 0,
+                               'w' => 0,
+                               'f' => 0,
+                               't' => 0
+                       );
+               } else {
+                       $absValStr = $m[1];
+                       $intStr = $m[2];
+                       $fracStr = $m[3];
+                       $operandSymbols = array(
+                               'n' => floatval( $absValStr ),
+                               'i' => intval( $intStr ),
+                               'v' => strlen( $fracStr ),
+                               'w' => strlen( rtrim( $fracStr, '0' ) ),
+                               'f' => intval( $fracStr ),
+                               't' => intval( rtrim( $fracStr, '0' ) ),
+                       );
+               }
+
                // The compiled form is RPN, with tokens strictly delimited by
                // spaces, so this is a simple RPN evaluator.
                foreach ( $rules as $i => $rule ) {
@@ -76,8 +107,8 @@ class CLDRPluralRuleEvaluator {
                        $nine = ord( '9' );
                        foreach ( StringUtils::explode( ' ', $rule ) as $token ) {
                                $ord = ord( $token );
-                               if ( $token === 'n' ) {
-                                       $stack[] = $number;
+                               if ( isset( $operandSymbols[$token] ) ) {
+                                       $stack[] = $operandSymbols[$token];
                                } elseif ( $ord >= $zero && $ord <= $nine ) {
                                        $stack[] = intval( $token );
                                } else {
@@ -91,8 +122,8 @@ class CLDRPluralRuleEvaluator {
                                return $i;
                        }
                }
-               // None of the provided rules match. The number belongs to caregory
-               // 'other' which comes last.
+               // None of the provided rules match. The number belongs to category
+               // 'other', which comes last.
                return count( $rules );
        }
 
@@ -251,35 +282,35 @@ class CLDRPluralRuleEvaluator_Range {
  */
 class CLDRPluralRuleConverter {
        /**
-        * The rule
+        * The input string
         *
         * @var string
         */
        public $rule;
 
        /**
-        * The position
+        * The current position
         *
         * @var int
         */
        public $pos;
 
        /**
-        * The last position possible
+        * The past-the-end position
         *
         * @var int
         */
        public $end;
 
        /**
-        * The operators
+        * The operator stack
         *
         * @var array
         */
        public $operators = array();
 
        /**
-        * The operands
+        * The operand stack
         *
         * @var array
         */
@@ -311,14 +342,19 @@ class CLDRPluralRuleConverter {
 
        /**
         * Same for digits. Note that the grammar given in UTS #35 doesn't allow
-        * negative numbers or decimals.
+        * negative numbers or decimal separators.
         */
        const NUMBER_CLASS = '0123456789';
 
+       /**
+        * A character list of symbolic operands.
+        */
+       const OPERAND_SYMBOLS = 'nivwft';
+
        /**
         * An anchored regular expression which matches a word at the current offset.
         */
-       const WORD_REGEX = '/[a-zA-Z]+/A';
+       const WORD_REGEX = '/[a-zA-Z@]+/A';
 
        /**
         * Convert a rule to RPN. This is the only public entry point.
@@ -425,17 +461,19 @@ class CLDRPluralRuleConverter {
                        return $token;
                }
 
-               // Comma
-               if ( $this->rule[$this->pos] === ',' ) {
-                       $token = $this->newOperator( ',', $this->pos, 1 );
-                       $this->pos ++;
+               // Two-character operators
+               $op2 = substr( $this->rule, $this->pos, 2 );
+               if ( $op2 === '..' || $op2 === '!=' ) {
+                       $token = $this->newOperator( $op2, $this->pos, 2 );
+                       $this->pos += 2;
                        return $token;
                }
 
-               // Dot dot
-               if ( substr( $this->rule, $this->pos, 2 ) === '..' ) {
-                       $token = $this->newOperator( '..', $this->pos, 2 );
-                       $this->pos += 2;
+               // Single-character operators
+               $op1 = $this->rule[$this->pos];
+               if ( $op1 === ',' || $op1 === '=' || $op1 === '%' ) {
+                       $token = $this->newOperator( $op1, $this->pos, 1 );
+                       $this->pos ++;
                        return $token;
                }
 
@@ -474,13 +512,21 @@ class CLDRPluralRuleConverter {
                        return $token;
                }
 
-               // The special numerical keyword "n"
-               if ( $word1 === 'n' ) {
-                       $token = $this->newNumber( 'n', $this->pos );
+               // The single-character operand symbols
+               if ( strpos( self::OPERAND_SYMBOLS, $word1 ) !== false ) {
+                       $token = $this->newNumber( $word1, $this->pos );
                        $this->pos ++;
                        return $token;
                }
 
+               // Samples
+               if ( $word1 === '@integer' || $word1 === '@decimal' ) {
+                       // Samples are like comments, they have no effect on rule evaluation.
+                       // They run from the first sample indicator to the end of the string.
+                       $this->pos = $this->end;
+                       return false;
+               }
+
                $this->error( 'unrecognised word' );
        }
 
@@ -624,6 +670,15 @@ class CLDRPluralRuleConverter_Operator extends CLDRPluralRuleConverter_Fragment
                'r' => 'range',
        );
 
+       /**
+        * Map for converting the new operators introduced in Rev 33 to the old forms
+        */
+       static $aliasMap = array(
+               '%' => 'mod',
+               '!=' => 'not-in',
+               '=' => 'in'
+       );
+
        /**
         * Initialize a new instance of a CLDRPluralRuleConverter_Operator object
         *
@@ -634,6 +689,9 @@ class CLDRPluralRuleConverter_Operator extends CLDRPluralRuleConverter_Fragment
         */
        function __construct( $parser, $name, $pos, $length ) {
                parent::__construct( $parser, $pos, $length );
+               if ( isset( self::$aliasMap[$name] ) ) {
+                       $name = self::$aliasMap[$name];
+               }
                $this->name = $name;
        }
 
diff --git a/maintenance/archives/patch-logging_user_text_time_index.sql b/maintenance/archives/patch-logging_user_text_time_index.sql
new file mode 100644 (file)
index 0000000..06f2986
--- /dev/null
@@ -0,0 +1 @@
+CREATE INDEX /*i*/log_user_text_time ON /*_*/logging (log_user_text, log_timestamp);
diff --git a/maintenance/archives/patch-logging_user_text_type_time_index.sql b/maintenance/archives/patch-logging_user_text_type_time_index.sql
new file mode 100644 (file)
index 0000000..2801bc8
--- /dev/null
@@ -0,0 +1 @@
+CREATE INDEX /*i*/log_user_text_type_time ON /*_*/logging (log_user_text, log_type, log_timestamp);
diff --git a/maintenance/archives/patch-page_links_updated.sql b/maintenance/archives/patch-page_links_updated.sql
new file mode 100644 (file)
index 0000000..18d9e2d
--- /dev/null
@@ -0,0 +1,2 @@
+ALTER TABLE /*$wgDBprefix*/page
+  ADD page_links_updated varbinary(14) NULL default NULL;
index e03763f..f56e91f 100644 (file)
@@ -1,6 +1,5 @@
 <?php
 /**
- * PHP lacks an interactive mode, but this can be very helpful when debugging.
  * This script lets a command-line user start up the wiki engine and then poke
  * about by issuing PHP commands directly.
  *
index a936436..ee8c48f 100644 (file)
@@ -96,6 +96,7 @@ class FindHooks extends Maintenance {
                        $IP . '/includes/upload/',
                        $IP . '/languages/',
                        $IP . '/maintenance/',
+                       $IP . '/maintenance/language/',
                        $IP . '/tests/',
                        $IP . '/tests/parser/',
                        $IP . '/tests/phpunit/suites/',
@@ -142,7 +143,7 @@ class FindHooks extends Maintenance {
        private function getHooksFromLocalDoc( $doc ) {
                        $m = array();
                        $content = file_get_contents( $doc );
-                       preg_match_all( "/\n'(.*?)'/", $content, $m );
+                       preg_match_all( "/\n'(.*?)':/", $content, $m );
                        return array_unique( $m[1] );
        }
 
diff --git a/maintenance/generateJsonI18n.php b/maintenance/generateJsonI18n.php
new file mode 100644 (file)
index 0000000..554e0a8
--- /dev/null
@@ -0,0 +1,167 @@
+<?php
+
+/**
+ * Convert a PHP messages file to a set of JSON messages files.
+ *
+ * Usage:
+ *    php generateJsonI18n.php ExtensionName.i18n.php i18n/
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @ingroup Maintenance
+ */
+
+require_once __DIR__ . '/Maintenance.php';
+
+/**
+ * Maintenance script to generate JSON i18n files from a PHP i18n file.
+ *
+ * @ingroup Maintenance
+ */
+class GenerateJsonI18n extends Maintenance {
+       public function __construct() {
+               parent::__construct();
+               $this->mDescription = "Build JSON messages files from a PHP messages file";
+               $this->addArg( 'phpfile', 'PHP file defining a $messages array', true );
+               $this->addArg( 'jsondir', 'Directory to write JSON files to', true );
+               $this->addOption( 'langcode', 'Language code; only needed for converting core i18n files',
+                       false, true );
+       }
+
+       public function execute() {
+               $phpfile = $this->getArg( 0 );
+               $jsondir = $this->getArg( 1 );
+
+               if ( !is_readable( $phpfile ) ) {
+                       $this->error( "Error reading $phpfile\n", 1 );
+               }
+               include $phpfile;
+               $phpfileContents = file_get_contents( $phpfile );
+
+               if ( !isset( $messages ) ) {
+                       $this->error( "PHP file $phpfile does not define \$messages array\n", 1 );
+               }
+
+               $extensionStyle = true;
+               if ( !isset( $messages['en'] ) || !is_array( $messages['en'] ) ) {
+                       if ( !$this->hasOption( 'langcode' ) ) {
+                               $this->error( "PHP file $phpfile does not set language codes, --langcode " .
+                                       "is required.\n", 1 );
+                       }
+                       $extensionStyle = false;
+                       $langcode = $this->getOption( 'langcode' );
+                       $messages = array( $langcode => $messages );
+               } else if ( $this->hasOption( 'langcode' ) ) {
+                       $this->output( "Warning: --langcode option set but will not be used.\n" );
+               }
+
+               foreach ( $messages as $langcode => $langmsgs ) {
+                       $authors = $this->getAuthorsFromComment( $this->findCommentBefore(
+                               $extensionStyle ? "\$messages['$langcode'] =" : '$messages =',
+                               $phpfileContents
+                       ) );
+                       // Make sure the @metadata key is the first key in the output
+                       $langmsgs = array_merge(
+                               array( '@metadata' => array( 'authors' => $authors ) ),
+                               $langmsgs
+                       );
+
+                       $jsonfile = "$jsondir/$langcode.json";
+                       $success = file_put_contents(
+                               $jsonfile,
+                               FormatJson::encode( $langmsgs, true, FormatJson::ALL_OK )
+                       );
+                       if ( $success === false ) {
+                               $this->error( "FAILED to write $jsonfile", 1 );
+                       }
+                       $this->output( "$jsonfile\n" );
+               }
+
+               if ( !$this->hasOption( 'langcode' ) ) {
+                       $shim = $this->doShim( $jsondir );
+                       file_put_contents( $phpfile, $shim );
+               }
+
+               $this->output( "All done.\n" );
+               $this->output( "Also add \$wgMessagesDirs['YourExtension'] = __DIR__ . /i18n';\n" );
+       }
+
+       protected function doShim( $jsondir ) {
+               $shim = <<<'PHP'
+<?php
+$messages = array();
+$GLOBALS['wgHooks']['LocalisationCacheRecache'][] = function ( $cache, $code, &$cachedData ) {
+       $codeSequence = array_merge( array( $code ), $cachedData['fallbackSequence'] );
+       foreach ( $codeSequence as $csCode ) {
+               $fileName = __DIR__ . "/{{OUT}}/$csCode.json";
+               if ( is_readable( $fileName ) ) {
+                       $data = FormatJson::decode( file_get_contents( $fileName ), true );
+                       foreach ( $data as $key => $unused ) {
+                               if ( $key === '' || $key[0] === '@' ) {
+                                       unset( $data[$key] );
+                               }
+                       }
+                       $cachedData['messages'] = array_merge( $data, $cachedData['messages'] );
+               }
+
+               $cachedData['deps'][] = new FileDependency( $fileName );
+       }
+       return true;
+};
+
+PHP;
+
+               $jsondir = str_replace('\\', '/', $jsondir );
+               $shim = str_replace( '{{OUT}}', $jsondir, $shim );
+               return $shim;
+       }
+
+       /**
+        * Find the documentation comment immediately before a given search string
+        * @param string $needle String to search for
+        * @param string $haystack String to search in
+        * @return string Substring of $haystack starting at '/**' ending right before $needle, or empty
+        */
+       protected function findCommentBefore( $needle, $haystack ) {
+               $needlePos = strpos( $haystack, $needle );
+               if ( $needlePos === false ) {
+                       return '';
+               }
+               // Need to pass a negative offset to strrpos() so it'll search backwards from the
+               // offset
+               $startPos = strrpos( $haystack, '/**', $needlePos - strlen( $haystack ) );
+               if ( $startPos === false ) {
+                       return '';
+               }
+
+               return substr( $haystack, $startPos, $needlePos - $startPos );
+       }
+
+       /**
+        * Get an array of author names from a documentation comment containing @author declarations.
+        * @param string $comment Documentation comment
+        * @return Array of author names (strings)
+        */
+       protected function getAuthorsFromComment( $comment ) {
+               $matches = null;
+               preg_match_all( '/@author (.*?)$/m', $comment, $matches );
+               return $matches && $matches[1] ? $matches[1] : array();
+       }
+}
+
+$maintClass = "GenerateJsonI18n";
+require_once RUN_MAINTENANCE_IF_MAIN;
index 4b04683..7c6e7d4 100644 (file)
@@ -47,7 +47,7 @@ in the load balancer, usually indicating a replication environment.' );
 
                // Autodetect mode...
                $backgroundMode = wfGetLB()->getServerCount() > 1 ||
-                       ( $dbw instanceof DatabaseMysql && version_compare( $dbver, '4.1' ) < 0 );
+                       ( $dbw instanceof DatabaseMysql );
 
                if ( $this->hasOption( 'background' ) ) {
                        $backgroundMode = true;
index 80a31bc..2e6b110 100644 (file)
@@ -131,6 +131,7 @@ $wgIgnoredMessages = array(
        'signupstart',
        'signupend',
        'signupend-https',
+       'emailsender',
        'sitenotice',
        'sitesubtitle',
        'sitetitle',
index 0d990b6..add5660 100644 (file)
@@ -550,6 +550,7 @@ $wgMessageStructure = array(
                'invalidemailaddress',
                'cannotchangeemail',
                'emaildisabled',
+               'emailsender',
                'accountcreated',
                'accountcreatedtext',
                'createaccount-title',
@@ -800,6 +801,7 @@ $wgMessageStructure = array(
        'cantcreateaccount' => array(
                'cantcreateaccounttitle',
                'cantcreateaccount-text',
+               'cantcreateaccount-range-text',
        ),
        'history' => array(
                'viewpagelogs',
@@ -1308,6 +1310,7 @@ $wgMessageStructure = array(
                'recentchanges-label-bot',
                'recentchanges-label-unpatrolled',
                'recentchanges-label-plusminus',
+               'recentchanges-legend-heading',
                'recentchanges-legend-newpage',
                'recentchanges-legend-plusminus',
                'rcnotefrom',
@@ -1411,6 +1414,7 @@ $wgMessageStructure = array(
                'fileexists-shared-forbidden',
                'file-exists-duplicate',
                'file-deleted-duplicate',
+               'file-deleted-duplicate-notitle',
                'uploadwarning',
                'uploadwarning-text',
                'savefile',
@@ -1806,6 +1810,7 @@ $wgMessageStructure = array(
                'protectedpages-indef',
                'protectedpages-summary',
                'protectedpages-cascade',
+               'protectedpages-noredirect',
                'protectedpagesempty',
                'protectedtitles',
                'protectedtitles-summary',
@@ -2059,6 +2064,7 @@ $wgMessageStructure = array(
                'delete-edit-reasonlist',
                'delete-toobig',
                'delete-warning-toobig',
+               'deleting-backlinks-warning',
        ),
        'rollback' => array(
                'rollback',
@@ -3690,6 +3696,7 @@ $wgMessageStructure = array(
                'redirect-lookup',
                'redirect-value',
                'redirect-user',
+               'redirect-page',
                'redirect-revision',
                'redirect-file',
                'redirect-not-exists',
@@ -3904,6 +3911,7 @@ $wgMessageStructure = array(
                'api-error-overwrite',
                'api-error-stashfailed',
                'api-error-publishfailed',
+               'api-error-stasherror',
                'api-error-timeout',
                'api-error-unclassified',
                'api-error-unknown-code',
@@ -3953,10 +3961,12 @@ $wgMessageStructure = array(
                'expand_templates_input',
                'expand_templates_output',
                'expand_templates_xml_output',
+               'expand_templates_html_output',
                'expand_templates_ok',
                'expand_templates_remove_comments',
                'expand_templates_remove_nowiki',
                'expand_templates_generate_xml',
+               'expand_templates_generate_rawhtml',
                'expand_templates_preview',
        ),
 );
index 7e19794..ac09246 100755 (executable)
@@ -352,7 +352,7 @@ def main():
 /**
  * Simplified / Traditional Chinese conversion tables
  *
- * Automatically generated using code and data in includes/zhtable/
+ * Automatically generated using code and data in maintenance/language/zhtable/
  * Do not modify directly!
  *
  * @file
index 5bf04c6..a63c45b 100644 (file)
@@ -46,8 +46,8 @@ class MergeMessageFileList extends Maintenance {
                $this->addOption( 'list-file', 'A file containing a list of extension setup files, one per line.', false, true );
                $this->addOption( 'extensions-dir', 'Path where extensions can be found.', false, true );
                $this->addOption( 'output', 'Send output to this file (omit for stdout)', false, true );
-               $this->mDescription = 'Merge $wgExtensionMessagesFiles from various extensions to produce a ' .
-                       'single array containing all message files.';
+               $this->mDescription = 'Merge $wgExtensionMessagesFiles and $wgMessagesDirs from ' .
+                       ' various extensions to produce a single file listing all message files and dirs.';
        }
 
        public function execute() {
@@ -158,7 +158,8 @@ $s =
        "<" . "?php\n" .
        "## This file is generated by mergeMessageFileList.php. Do not edit it directly.\n\n" .
        "if ( defined( 'MW_NO_EXTENSION_MESSAGES' ) ) return;\n\n" .
-       '$wgExtensionMessagesFiles = ' . var_export( $wgExtensionMessagesFiles, true ) . ";\n\n";
+       '$wgExtensionMessagesFiles = ' . var_export( $wgExtensionMessagesFiles, true ) . ";\n\n" .
+       '$wgMessagesDirs = ' . var_export( $wgMessagesDirs, true ) . ";\n\n";
 
 $dirs = array(
        $IP,
index 8a565d5..71fdd61 100644 (file)
@@ -619,6 +619,8 @@ CREATE INDEX /*$wgDBprefix*/page_time ON /*$wgDBprefix*/logging (log_namespace,
 CREATE INDEX /*$wgDBprefix*/times ON /*$wgDBprefix*/logging (log_timestamp);
 CREATE INDEX /*$wgDBprefix*/log_user_type_time ON /*$wgDBprefix*/logging (log_user, log_type, log_timestamp);
 CREATE INDEX /*$wgDBprefix*/log_page_id_time ON /*$wgDBprefix*/logging (log_page,log_timestamp);
+CREATE INDEX /*$wgDBprefix*/log_user_text_type_time ON /*$wgDBprefix*/logging (log_user_text, log_type, log_timestamp);
+CREATE INDEX /*$wgDBprefix*/log_user_text_time ON /*$wgDBprefix*/logging (log_user_text, log_timestamp);
 
 CREATE TABLE /*$wgDBprefix*/log_search (
        -- The type of ID (rev ID, log ID, rev timestamp, username)
index 06ccccb..9b4d194 100644 (file)
@@ -78,10 +78,6 @@ class NextJobDB extends Maintenance {
                        }
 
                        list( $type, $db ) = $candidates[mt_rand( 0, count( $candidates ) - 1 )];
-                       if ( JobQueueGroup::singleton( $db )->isQueueDeprioritized( $type ) ) {
-                               $pendingDBs[$type] = array_diff( $pendingDBs[$type], array( $db ) );
-                               $again = true;
-                       }
                } while ( $again );
 
                if ( $this->hasOption( 'types' ) ) {
diff --git a/maintenance/oracle/archives/patch-logging_user_text_time_index.sql b/maintenance/oracle/archives/patch-logging_user_text_time_index.sql
new file mode 100644 (file)
index 0000000..e04abf5
--- /dev/null
@@ -0,0 +1,4 @@
+define mw_prefix='{$wgDBprefix}';
+
+CREATE INDEX &mw_prefix.logging_i07 ON &mw_prefix.logging (log_user_text, log_timestamp);
+
diff --git a/maintenance/oracle/archives/patch-logging_user_text_type_time_index.sql b/maintenance/oracle/archives/patch-logging_user_text_type_time_index.sql
new file mode 100644 (file)
index 0000000..c1c0d4f
--- /dev/null
@@ -0,0 +1,4 @@
+define mw_prefix='{$wgDBprefix}';
+
+CREATE INDEX &mw_prefix.logging_i06 ON &mw_prefix.logging (log_user_text, log_type, log_timestamp);
+
index 2395bc5..a6b5350 100644 (file)
@@ -509,6 +509,8 @@ CREATE INDEX &mw_prefix.logging_i02 ON &mw_prefix.logging (log_user, log_timesta
 CREATE INDEX &mw_prefix.logging_i03 ON &mw_prefix.logging (log_namespace, log_title, log_timestamp);
 CREATE INDEX &mw_prefix.logging_i04 ON &mw_prefix.logging (log_timestamp);
 CREATE INDEX &mw_prefix.logging_i05 ON &mw_prefix.logging (log_type, log_action, log_timestamp);
+CREATE INDEX &mw_prefix.logging_i06 ON &mw_prefix.logging (log_user_text, log_type, log_timestamp);
+CREATE INDEX &mw_prefix.logging_i07 ON &mw_prefix.logging (log_user_text, log_timestamp);
 
 CREATE TABLE &mw_prefix.log_search (
   ls_field VARCHAR2(32) NOT NULL,
index d0d1e92..3940ba2 100644 (file)
@@ -80,6 +80,7 @@ CREATE TABLE page (
   page_is_new        SMALLINT       NOT NULL  DEFAULT 0,
   page_random        NUMERIC(15,14) NOT NULL  DEFAULT RANDOM(),
   page_touched       TIMESTAMPTZ,
+  page_links_updated TIMESTAMPTZ    NULL,
   page_latest        INTEGER        NOT NULL, -- FK?
   page_len           INTEGER        NOT NULL,
   page_content_model TEXT
@@ -510,6 +511,8 @@ CREATE INDEX logging_page_time ON logging (log_namespace, log_title, log_timesta
 CREATE INDEX logging_times ON logging (log_timestamp);
 CREATE INDEX logging_user_type_time ON logging (log_user, log_type, log_timestamp);
 CREATE INDEX logging_page_id_time ON logging (log_page, log_timestamp);
+CREATE INDEX logging_user_text_type_time ON logging (log_user_text, log_type, log_timestamp);
+CREATE INDEX logging_user_text_time ON logging (log_user_text, log_timestamp);
 
 CREATE TABLE log_search (
   ls_field   TEXT     NOT NULL,
index 429edf4..7c896d2 100644 (file)
@@ -2,10 +2,6 @@
 /**
  * Run pending jobs.
  *
- * Options:
- *  --maxjobs <num> (default 10000)
- *  --type <job_cmd>
- *
  * 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
@@ -68,12 +64,12 @@ class RunJobs extends Maintenance {
                                }
                        }
                }
+
+               $type = $this->getOption( 'type', false );
                $maxJobs = $this->getOption( 'maxjobs', false );
                $maxTime = $this->getOption( 'maxtime', false );
                $startTime = time();
-               $type = $this->getOption( 'type', false );
                $wgTitle = Title::newFromText( 'RunJobs.php' );
-               $jobsRun = 0; // counter
 
                $group = JobQueueGroup::singleton();
                // Handle any required periodic queue maintenance
@@ -82,12 +78,21 @@ class RunJobs extends Maintenance {
                        $this->runJobsLog( "Executed $count periodic queue task(s)." );
                }
 
-               $flags = JobQueueGroup::USE_CACHE | JobQueueGroup::USE_PRIORITY;
+               $backoffs = $this->loadBackoffs(); // map of (type => UNIX expiry)
+               $startingBackoffs = $backoffs; // avoid unnecessary writes
+               $backoffExpireFunc = function( $t ) { return $t > time(); };
+
+               $jobsRun = 0; // counter
+               $flags = JobQueueGroup::USE_CACHE;
                $lastTime = time(); // time since last slave check
                do {
-                       $job = ( $type === false )
-                               ? $group->pop( JobQueueGroup::TYPE_DEFAULT, $flags )
-                               : $group->pop( $type ); // job from a single queue
+                       if ( $type === false ) {
+                               $backoffs = array_filter( $backoffs, $backoffExpireFunc );
+                               $blacklist = array_keys( $backoffs );
+                               $job = $group->pop( JobQueueGroup::TYPE_DEFAULT, $flags, $blacklist );
+                       } else {
+                               $job = $group->pop( $type ); // job from a single queue
+                       }
                        if ( $job ) { // found a job
                                ++$jobsRun;
                                $this->runJobsLog( $job->toString() . " STARTING" );
@@ -121,6 +126,14 @@ class RunJobs extends Maintenance {
                                        $this->runJobsLog( $job->toString() . " t=$timeMs good" );
                                }
 
+                               // Back off of certain jobs for a while
+                               $ttw = $this->getBackoffTimeToWait( $job );
+                               if ( $ttw > 0 ) {
+                                       $jType = $job->getType();
+                                       $backoffs[$jType] = isset( $backoffs[$jType] ) ? $backoffs[$jType] : 0;
+                                       $backoffs[$jType] = max( $backoffs[$jType], time() + $ttw );
+                               }
+
                                // Break out if we hit the job count or wall time limits...
                                if ( $maxJobs && $jobsRun >= $maxJobs ) {
                                        break;
@@ -143,10 +156,87 @@ class RunJobs extends Maintenance {
                                $this->assertMemoryOK();
                        }
                } while ( $job ); // stop when there are no jobs
+               // Sync the persistent backoffs for the next runJobs.php pass
+               $backoffs = array_filter( $backoffs, $backoffExpireFunc );
+               if ( $backoffs !== $startingBackoffs ) {
+                       $this->syncBackoffs( $backoffs );
+               }
+       }
+
+       /**
+        * @param Job $job
+        * @return integer Seconds for this runner to avoid doing more jobs of this type
+        * @see $wgJobBackoffThrottling
+        */
+       private function getBackoffTimeToWait( Job $job ) {
+               global $wgJobBackoffThrottling;
+
+               if ( !isset( $wgJobBackoffThrottling[$job->getType()] ) ) {
+                       return 0; // not throttled
+               }
+               $itemsPerSecond = $wgJobBackoffThrottling[$job->getType()];
+               if ( $itemsPerSecond <= 0 ) {
+                       return 0; // not throttled
+               }
+
+               $seconds = 0;
+               if ( $job->workItemCount() > 0 ) {
+                       $seconds = floor( $job->workItemCount() / $itemsPerSecond );
+                       $remainder = $job->workItemCount() % $itemsPerSecond;
+                       $seconds += ( mt_rand( 1, $itemsPerSecond ) <= $remainder ) ? 1 : 0;
+               }
+
+               return (int)$seconds;
+       }
+
+       /**
+        * Get the previous backoff expiries from persistent storage
+        *
+        * @return array Map of (job type => backoff expiry timestamp)
+        */
+       private function loadBackoffs() {
+               $section = new ProfileSection( __METHOD__ );
+
+               $backoffs = array();
+               $file = wfTempDir() . '/mw-runJobs-backoffs.json';
+               if ( is_file( $file ) ) {
+                       $handle = fopen( $file, 'rb' );
+                       flock( $handle, LOCK_SH );
+                       $content = stream_get_contents( $handle );
+                       flock( $handle, LOCK_UN );
+                       fclose( $handle );
+                       $backoffs = json_decode( $content, true ) ?: array();
+               }
+
+               return $backoffs;
+       }
+
+       /**
+        * Merge the current backoff expiries from persistent storage
+        *
+        * @param array $backoffs Map of (job type => backoff expiry timestamp)
+        */
+       private function syncBackoffs( array $backoffs ) {
+               $section = new ProfileSection( __METHOD__ );
+
+               $file = wfTempDir() . '/mw-runJobs-backoffs.json';
+               $handle = fopen( $file, 'wb+' );
+               flock( $handle, LOCK_EX );
+               $content = stream_get_contents( $handle );
+               $cBackoffs = json_decode( $content, true ) ?: array();
+               foreach ( $backoffs as $type => $timestamp ) {
+                       $cBackoffs[$type] = isset( $cBackoffs[$type] ) ? $cBackoffs[$type] : 0;
+                       $cBackoffs[$type] = max( $cBackoffs[$type], $backoffs[$type] );
+               }
+               ftruncate( $handle, 0 );
+               fwrite( $handle, json_encode( $backoffs ) );
+               flock( $handle, LOCK_UN );
+               fclose( $handle );
        }
 
        /**
-        * Make sure that this script is not too close to the memory usage limit
+        * Make sure that this script is not too close to the memory usage limit.
+        * It is better to die in between jobs than OOM right in the middle of one.
         * @throws MWException
         */
        private function assertMemoryOK() {
@@ -155,7 +245,7 @@ class RunJobs extends Maintenance {
                        $m = array();
                        if ( preg_match( '!^(\d+)(k|m|g|)$!i', ini_get( 'memory_limit' ), $m ) ) {
                                list( , $num, $unit ) = $m;
-                               $conv = array( 'g' => 1024 * 1024 * 1024, 'm' => 1024 * 1024, 'k' => 1024, '' => 1 );
+                               $conv = array( 'g' => 1073741824, 'm' => 1048576, 'k' => 1024, '' => 1 );
                                $maxBytes = $num * $conv[strtolower( $unit )];
                        } else {
                                $maxBytes = 0;
index afd7c74..5e21130 100644 (file)
@@ -56,14 +56,16 @@ class ShowJobs extends Maintenance {
                } elseif ( $this->hasOption( 'group' ) ) {
                        foreach ( $group->getQueueTypes() as $type ) {
                                $queue = $group->get( $type );
+                               $delayed = $queue->getDelayedCount();
                                $pending = $queue->getSize();
                                $claimed = $queue->getAcquiredCount();
                                $abandoned = $queue->getAbandonedCount();
                                $active = max( 0, $claimed - $abandoned );
-                               if ( ( $pending + $claimed ) > 0 ) {
+                               if ( ( $pending + $claimed + $delayed ) > 0 ) {
                                        $this->output(
                                                "{$type}: $pending queued; " .
-                                               "$claimed claimed ($active active, $abandoned abandoned)\n"
+                                               "$claimed claimed ($active active, $abandoned abandoned); " .
+                                               "$delayed delayed\n"
                                        );
                                }
                        }
index e832b4e..dd86619 100644 (file)
@@ -57,14 +57,9 @@ class FixBug20757 extends Maintenance {
 
                $totalRevs = $dbr->selectField( 'text', 'MAX(old_id)', false, __METHOD__ );
 
-               if ( $dbr->getType() == 'mysql'
-                       && version_compare( $dbr->getServerVersion(), '4.1.0', '>=' )
-               ) {
+               if ( $dbr->getType() == 'mysql' ) {
                        // In MySQL 4.1+, the binary field old_text has a non-working LOWER() function
                        $lowerLeft = 'LOWER(CONVERT(LEFT(old_text,22) USING latin1))';
-               } else {
-                       // No CONVERT() in MySQL 4.0
-                       $lowerLeft = 'LOWER(LEFT(old_text,22))';
                }
 
                while ( true ) {
index 18139b2..fb2f0e1 100644 (file)
@@ -256,6 +256,11 @@ CREATE TABLE /*_*/page (
   -- of contained templates.
   page_touched binary(14) NOT NULL default '',
 
+  -- This timestamp is updated whenever a page is re-parsed and
+  -- it has all the link tracking tables updated for it. This is
+  -- useful for de-duplicating expensive backlink update jobs.
+  page_links_updated varbinary(14) NULL default NULL,
+
   -- Handy key to revision.rev_id of the current revision.
   -- This may be 0 during page creation, but that shouldn't
   -- happen outside of a transaction... hopefully.
@@ -1263,6 +1268,8 @@ CREATE INDEX /*i*/times ON /*_*/logging (log_timestamp);
 CREATE INDEX /*i*/log_user_type_time ON /*_*/logging (log_user, log_type, log_timestamp);
 CREATE INDEX /*i*/log_page_id_time ON /*_*/logging (log_page,log_timestamp);
 CREATE INDEX /*i*/type_action ON /*_*/logging (log_type, log_action, log_timestamp);
+CREATE INDEX /*i*/log_user_text_type_time ON /*_*/logging (log_user_text, log_type, log_timestamp);
+CREATE INDEX /*i*/log_user_text_time ON /*_*/logging (log_user_text, log_timestamp);
 
 
 CREATE TABLE /*_*/log_search (
index e01406d..beed720 100644 (file)
@@ -170,8 +170,8 @@ class UpdateMediaWiki extends Maintenance {
                }
                $time2 = new MWTimestamp();
 
-               $this->output( "\nDone.\n" );
-               $this->output( "\nThe job took " . $time2->diff( $time1 )->format( "%i:%S" ) . ".\n" );
+               $timeDiff = $time2->diff( $time1 );
+               $this->output( "\nDone in " . $timeDiff->format( "%i:%S" ) . ".\n" );
        }
 
        function afterFinalSetup() {
diff --git a/resources/Makefile b/resources/Makefile
new file mode 100644 (file)
index 0000000..4de5c2f
--- /dev/null
@@ -0,0 +1,9 @@
+kss: nodecheck
+# FIXME: Use more up-to-date Ruby version
+       @node_modules/.bin/kss-node mediawiki.ui mediawiki.ui/docs -l mediawiki.ui/vector.less -t styleguide-template
+       @echo Opening the generated style guide...
+       @command -v xdg-open >/dev/null 2>&1 || { open ${PWD}/mediawiki.ui/docs/index.html; exit 1; }
+       @xdg-open ${PWD}/mediawiki.ui/docs/index.html
+
+nodecheck:
+       @scripts/nodecheck.sh
diff --git a/resources/README.txt b/resources/README.txt
new file mode 100644 (file)
index 0000000..d91bf2a
--- /dev/null
@@ -0,0 +1,4 @@
+The Makefile, package.json, scripts, styleguide-template, and
+mediawiki.ui/styleguide.md files and directories in here support the automatic
+generation of CSS documentation from the source LESS files using kss for
+node.js, https://github.com/kneath/kss
index d2a06b7..0becb37 100644 (file)
@@ -50,6 +50,59 @@ return array(
        // Scripts for the dynamic language specific data, like grammar forms.
        'mediawiki.language.data' => array( 'class' => 'ResourceLoaderLanguageDataModule' ),
 
+       /**
+        * Common skin styles, grouped into three graded levels.
+        *
+        * Level 1 "elements":
+        *     The base level that only contains the most basic of common skin styles.
+        *     Only styles for single elements are included, no styling for complex structures like the TOC
+        *     is present. This level is for skins that want to implement the entire style of even content area
+        *     structures like the TOC themselves.
+        *
+        * Level 2 "content":
+        *     The most commonly used level for skins implemented from scratch. This level includes all the single
+        *     element styles from "elements" as well as styles for complex structures such as the TOC that are output
+        *     in the content area by MediaWiki rather than the skin. Essentially this is the common level that lets
+        *     skins leave the style of the content area as it is normally styled, while leaving the rest of the skin
+        *     up to the skin implementation.
+        *
+        * Level 3 "interface":
+        *     The highest level, this stylesheet contains extra common styles for classes like .firstHeading, #contentSub,
+        *     et cetera which are not outputted by MediaWiki but are common to skins like MonoBook, Vector, etc...
+        *     Essentially this level is for styles that are common to MonoBook clones. And since practically every skin
+        *     that currently exists within core is a MonoBook clone, all our core skins currently use this level.
+        *
+        * These modules are typically loaded by addModuleStyles which has absolutely no concept of dependency
+        * management. As a result the skins.common.* modules contain duplicate stylesheet references instead of
+        * setting 'dependencies' to the lower level the module is based on. For this reason avoid including multiple
+        * skins.common.* modules into your skin as this will result in duplicate css.
+        */
+       'skins.common.elements' => array(
+               'styles' => array(
+                       'common/commonElements.css' => array( 'media' => 'screen' ),
+               ),
+               'remoteBasePath' => $GLOBALS['wgStylePath'],
+               'localBasePath' => $GLOBALS['wgStyleDirectory'],
+       ),
+       'skins.common.content' => array(
+               'styles' => array(
+                       'common/commonElements.css' => array( 'media' => 'screen' ),
+                       'common/commonContent.css' => array( 'media' => 'screen' ),
+               ),
+               'remoteBasePath' => $GLOBALS['wgStylePath'],
+               'localBasePath' => $GLOBALS['wgStyleDirectory'],
+       ),
+       'skins.common.interface' => array(
+               // Used in the web installer. Test it after modifying this definition!
+               'styles' => array(
+                       'common/commonElements.css' => array( 'media' => 'screen' ),
+                       'common/commonContent.css' => array( 'media' => 'screen' ),
+                       'common/commonInterface.css' => array( 'media' => 'screen' ),
+               ),
+               'remoteBasePath' => $GLOBALS['wgStylePath'],
+               'localBasePath' => $GLOBALS['wgStyleDirectory'],
+       ),
+
        /**
         * Skins
         * Be careful not to add 'scripts' to these modules,
@@ -76,6 +129,7 @@ return array(
                'remoteBasePath' => $GLOBALS['wgStylePath'],
                'localBasePath' => $GLOBALS['wgStyleDirectory'],
        ),
+       // FIXME: Remove in favour of skins.monobook.styles when cache expires
        'skins.monobook' => array(
                'styles' => array(
                        'common/commonElements.css' => array( 'media' => 'screen' ),
@@ -86,8 +140,8 @@ return array(
                'remoteBasePath' => $GLOBALS['wgStylePath'],
                'localBasePath' => $GLOBALS['wgStyleDirectory'],
        ),
+       // FIXME: Remove in favour of skins.vector.styles when cache expires
        'skins.vector' => array(
-               // Used in the web installer. Test it after modifying this definition!
                'styles' => array(
                        'common/commonElements.css' => array( 'media' => 'screen' ),
                        'common/commonContent.css' => array( 'media' => 'screen' ),
@@ -97,13 +151,17 @@ return array(
                'remoteBasePath' => $GLOBALS['wgStylePath'],
                'localBasePath' => $GLOBALS['wgStyleDirectory'],
        ),
-       'skins.vector.beta' => array(
-               // Keep in sync with skins.vector
+       'skins.vector.styles' => array(
+               // Used in the web installer. Test it after modifying this definition!
                'styles' => array(
-                       'common/commonElements.css' => array( 'media' => 'screen' ),
-                       'common/commonContent.css' => array( 'media' => 'screen' ),
-                       'common/commonInterface.css' => array( 'media' => 'screen' ),
-                       'vector/styles-beta.less',
+                       'vector/styles.less',
+               ),
+               'remoteBasePath' => $GLOBALS['wgStylePath'],
+               'localBasePath' => $GLOBALS['wgStyleDirectory'],
+       ),
+       'skins.monobook.styles' => array(
+               'styles' => array(
+                       'monobook/main.css' => array( 'media' => 'screen' ),
                ),
                'remoteBasePath' => $GLOBALS['wgStylePath'],
                'localBasePath' => $GLOBALS['wgStyleDirectory'],
@@ -698,7 +756,7 @@ return array(
                'messages' => array( 'htmlform-chosen-placeholder' ),
        ),
        'mediawiki.icon' => array(
-               'styles' => 'resources/mediawiki/mediawiki.icon.css',
+               'styles' => 'resources/mediawiki/mediawiki.icon.less',
        ),
        'mediawiki.inspect' => array(
                'scripts' => 'resources/mediawiki/mediawiki.inspect.js',
@@ -790,6 +848,7 @@ return array(
                'styles' => 'resources/mediawiki.action/mediawiki.action.edit.collapsibleFooter.css',
                'dependencies' => array(
                        'jquery.makeCollapsible',
+                       'jquery.cookie',
                        'mediawiki.icon',
                ),
        ),
@@ -1013,6 +1072,13 @@ return array(
        'mediawiki.special.changeslist' => array(
                'styles' => 'resources/mediawiki.special/mediawiki.special.changeslist.css',
        ),
+       'mediawiki.special.changeslist.js' => array(
+               'scripts' => 'resources/mediawiki.special/mediawiki.special.changeslist.js',
+               'dependencies' => array(
+                       'jquery.makeCollapsible',
+                       'jquery.cookie',
+               ),
+       ),
        'mediawiki.special.changeslist.enhanced' => array(
                'styles' => 'resources/mediawiki.special/mediawiki.special.changeslist.enhanced.css',
        ),
@@ -1067,28 +1133,39 @@ return array(
                        'mediawiki.util',
                ),
        ),
-       'mediawiki.special.userlogin' => array(
+       'mediawiki.special.userlogin.common.styles' => array(
+               'styles' => array(
+                       'resources/mediawiki.special/mediawiki.special.userlogin.common.css',
+               ),
+               'position' => 'top',
+       ),
+       'mediawiki.special.userlogin.signup.styles' => array(
                'styles' => array(
-                       'resources/mediawiki.special/mediawiki.special.vforms.css',
-                       'resources/mediawiki.special/mediawiki.special.userLogin.css',
+                       'resources/mediawiki.special/mediawiki.special.userlogin.signup.css',
                ),
                'position' => 'top',
        ),
-       'mediawiki.special.createaccount' => array(
+       'mediawiki.special.userlogin.login.styles' => array(
                'styles' => array(
-                       'resources/mediawiki.special/mediawiki.special.vforms.css',
-                       'resources/mediawiki.special/mediawiki.special.createAccount.css',
+                       'resources/mediawiki.special/mediawiki.special.userlogin.login.css',
                ),
+               'position' => 'top',
        ),
-       'mediawiki.special.createaccount.js' => array(
-               'scripts' => 'resources/mediawiki.special/mediawiki.special.createAccount.js',
+       'mediawiki.special.userlogin.common.js' => array(
+               'scripts' => array(
+                       'resources/mediawiki.special/mediawiki.special.userlogin.common.js',
+               ),
                'messages' => array(
                        'createacct-captcha',
+                       'createacct-imgcaptcha-ph',
+               ),
+       ),
+       'mediawiki.special.userlogin.signup.js' => array(
+               'scripts' => 'resources/mediawiki.special/mediawiki.special.userlogin.signup.js',
+               'messages' => array(
                        'createacct-emailrequired',
-                       'createacct-imgcaptcha-ph'
                ),
                'dependencies' => 'mediawiki.jqueryMsg',
-               'position' => 'top',
        ),
        'mediawiki.special.javaScriptTest' => array(
                'scripts' => 'resources/mediawiki.special/mediawiki.special.javaScriptTest.js',
@@ -1187,6 +1264,16 @@ return array(
                        'vector' => 'resources/mediawiki.ui/vector.less',
                ),
                'position' => 'top',
+               'targets' => array( 'desktop', 'mobile' ),
+       ),
+       // Lightweight module for button styles
+       'mediawiki.ui.button' => array(
+               'skinStyles' => array(
+                       'default' => 'resources/mediawiki.ui/components/default/buttons.less',
+                       'vector' => 'resources/mediawiki.ui/components/vector/buttons.less',
+               ),
+               'position' => 'top',
+               'targets' => array( 'desktop', 'mobile' ),
        ),
 
        /* OOJS */
@@ -1198,5 +1285,4 @@ return array(
                ),
                'targets' => array( 'desktop', 'mobile' ),
        ),
-
 );
index 5a95dc5..f35782b 100644 (file)
                /**
                 * Checks the current browser against a support map object.
                 *
+                * Version numbers passed as numeric values will be compared like numbers (1.2 > 1.11).
+                * Version numbers passed as string values will be compared using a simple component-wise
+                * algorithm, similar to PHP's version_compare ('1.2' < '1.11').
+                *
                 * A browser map is in the following format:
                 * {
                 *   // Multiple rules with configurable operators
                test: function ( map, profile, exactMatchOnly ) {
                        /*jshint evil: true */
 
-                       var conditions, dir, i, op, val;
+                       var conditions, dir, i, op, val, j, pieceVersion, pieceVal, compare;
                        profile = $.isPlainObject( profile ) ? profile : $.client.profile();
                        if ( map.ltr && map.rtl ) {
                                dir = $( 'body' ).is( '.rtl' ) ? 'rtl' : 'ltr';
                                op = conditions[i][0];
                                val = conditions[i][1];
                                if ( typeof val === 'string' ) {
-                                       if ( !( eval( 'profile.version' + op + '"' + val + '"' ) ) ) {
+                                       // Perform a component-wise comparison of versions, similar to PHP's version_compare
+                                       // but simpler. '1.11' is larger than '1.2'.
+                                       pieceVersion = profile.version.toString().split( '.' );
+                                       pieceVal = val.split( '.' );
+                                       // Extend with zeroes to equal length
+                                       while ( pieceVersion.length < pieceVal.length ) {
+                                               pieceVersion.push( '0' );
+                                       }
+                                       while ( pieceVal.length < pieceVersion.length ) {
+                                               pieceVal.push( '0' );
+                                       }
+                                       // Compare components
+                                       compare = 0;
+                                       for ( j = 0; j < pieceVersion.length; j++ ) {
+                                               if ( Number( pieceVersion[j] ) < Number( pieceVal[j] ) ) {
+                                                       compare = -1;
+                                                       break;
+                                               } else if ( Number( pieceVersion[j] ) > Number( pieceVal[j] ) ) {
+                                                       compare = 1;
+                                                       break;
+                                               }
+                                       }
+                                       // compare will be -1, 0 or 1, depending on comparison result
+                                       if ( !( eval( '' + compare + op + '0' ) ) ) {
                                                return false;
                                        }
                                } else if ( typeof val === 'number' ) {
index 28e2afc..3774d0c 100644 (file)
@@ -61,6 +61,16 @@ $.suggestions = {
                }
        },
 
+       /**
+        * Hide the element with suggestions and clean up some state.
+        */
+       hide: function ( context ) {
+               // Remove any highlights, including on "special" items
+               context.data.$container.find( '.suggestions-result-current' ).removeClass( 'suggestions-result-current' );
+               // Hide the container
+               context.data.$container.hide();
+       },
+
        /**
         * Restore the text the user originally typed in the textbox, before it
         * was overwritten by highlight(). This restores the value the currently
@@ -83,7 +93,7 @@ $.suggestions = {
                // if the textbox is empty then clear the result div, but leave other settings intouched
                function maybeFetch() {
                        if ( context.data.$textbox.val().length === 0 ) {
-                               context.data.$container.hide();
+                               $.suggestions.hide( context );
                                context.data.prevText = '';
                        } else if (
                                context.data.$textbox.val() !== context.data.prevText ||
@@ -147,7 +157,7 @@ $.suggestions = {
                                if ( context.data !== undefined ) {
                                        if ( context.data.$textbox.val().length === 0 ) {
                                                // Hide the div when no suggestion exist
-                                               context.data.$container.hide();
+                                               $.suggestions.hide( context );
                                        } else {
                                                // Rebuild the suggestions list
                                                context.data.$container.show();
@@ -399,7 +409,7 @@ $.suggestions = {
                                break;
                        // Escape
                        case 27:
-                               context.data.$container.hide();
+                               $.suggestions.hide( context );
                                $.suggestions.restore( context );
                                $.suggestions.cancel( context );
                                context.data.$textbox.trigger( 'change' );
@@ -407,9 +417,9 @@ $.suggestions = {
                                break;
                        // Enter
                        case 13:
-                               context.data.$container.hide();
                                preventDefault = wasVisible;
                                selected = context.data.$container.find( '.suggestions-result-current' );
+                               $.suggestions.hide( context );
                                if ( selected.length === 0 || context.data.selectedWithMouse ) {
                                        // if nothing is selected OR if something was selected with the mouse,
                                        // cancel any current requests and submit the form
@@ -530,7 +540,7 @@ $.fn.suggestions = function () {
                                                        // do not interfere with non-left clicks or if modifier keys are pressed (e.g. ctrl-click)
                                                        if ( !( e.which !== 1 || e.altKey || e.ctrlKey || e.shiftKey || e.metaKey ) ) {
                                                                $.suggestions.highlight( context, $result, true );
-                                                               context.data.$container.hide();
+                                                               $.suggestions.hide( context );
                                                                if ( typeof context.config.result.select === 'function' ) {
                                                                        context.config.result.select.call( $result, context.data.$textbox );
                                                                }
@@ -557,7 +567,7 @@ $.fn.suggestions = function () {
                                                        }
                                                        // do not interfere with non-left clicks or if modifier keys are pressed (e.g. ctrl-click)
                                                        if ( !( e.which !== 1 || e.altKey || e.ctrlKey || e.shiftKey || e.metaKey ) ) {
-                                                               context.data.$container.hide();
+                                                               $.suggestions.hide( context );
                                                                if ( typeof context.config.special.select === 'function' ) {
                                                                        context.config.special.select.call( $special, context.data.$textbox );
                                                                }
@@ -617,7 +627,7 @@ $.fn.suggestions = function () {
                                        if ( context.data.mouseDownOn.length > 0 ) {
                                                return;
                                        }
-                                       context.data.$container.hide();
+                                       $.suggestions.hide( context );
                                        $.suggestions.cancel( context );
                                } );
                }
index c5cd61e..43642d0 100644 (file)
@@ -29,6 +29,7 @@
                // update from from the ajax-loaded preview page.
                copySelectors = [
                        // Main
+                       '#firstHeading',
                        '#wikiPreview',
                        '#wikiDiff',
                        '#catlinks',
@@ -47,7 +48,7 @@
                $spinner = $.createSpinner( {
                        size: 'large',
                        type: 'block'
-               });
+               } );
                $wikiPreview.before( $spinner );
                $spinner.css( {
                        marginTop: $spinner.height()
                // TODO: This should use the action=parse API instead of loading the entire page,
                // although that requires figuring out how to convert that raw data into proper HTML.
                $previewDataHolder.load( targetUrl + ' ' + copySelectors.join( ',' ), postData, function () {
-                       var i, $from;
+                       var i, $from, $next, $parent;
 
                        // Copy the contents of the specified elements from the loaded page to the real page.
                        // Also copy their class attributes.
                        for ( i = 0; i < copySelectors.length; i++ ) {
                                $from = $previewDataHolder.find( copySelectors[i] );
 
-                               $( copySelectors[i] )
-                                       .empty()
-                                       .append( $from.contents() )
-                                       .attr( 'class', $from.attr( 'class' ) );
+                               if ( copySelectors[i] === '#wikiPreview' ) {
+                                       $next = $wikiPreview.next();
+                                       // If there is no next node, use parent instead.
+                                       // Only query parent if needed, false otherwise.
+                                       $parent = !$next.length && $wikiPreview.parent();
+
+                                       $wikiPreview
+                                               .detach()
+                                               .empty()
+                                               .append( $from.contents() )
+                                               .attr( 'class', $from.attr( 'class' ) );
+
+                                       mw.hook( 'wikipage.content' ).fire( $wikiPreview );
+
+                                       // Reattach
+                                       if ( $parent ) {
+                                               $parent.append( $wikiPreview );
+                                       } else {
+                                               $next.before( $wikiPreview );
+                                       }
+
+                               } else {
+                                       $( copySelectors[i] )
+                                               .empty()
+                                               .append( $from.contents() )
+                                               .attr( 'class', $from.attr( 'class' ) );
+                               }
                        }
 
                        // Deprecated: Use mw.hook instead
                        $( mw ).trigger( 'LivePreviewDone', [copySelectors] );
 
-                       mw.hook( 'wikipage.content' ).fire( $wikiPreview );
-
                        $spinner.remove();
                        $copyElements.animate( {
                                opacity: 1
index 441bc91..3def37c 100644 (file)
@@ -1,7 +1,7 @@
-/* This is cldrpluralparser 1.0, ported to MediaWiki ResourceLoader */
+/* This is CLDRPluralRuleParser v1.1, ported to MediaWiki ResourceLoader */
 
 /**
-* cldrpluralparser.js
+* CLDRPluralRuleParser.js
 * A parser engine for CLDR plural rules.
 *
 * Copyright 2012 GPLV3+, Santhosh Thottingal
 * @author Amir Aharoni
 */
 
+( function ( mw ) {
 /**
  * Evaluates a plural rule in CLDR syntax for a number
- * @param rule
- * @param number
- * @return true|false|null
+ * @param {string} rule
+ * @param {integer} number
+ * @return {boolean} true if evaluation passed, false if evaluation failed.
  */
-( function( mw ) {
 
 function pluralRuleParser(rule, number) {
        /*
        Syntax: see http://unicode.org/reports/tr35/#Language_Plural_Rules
        -----------------------------------------------------------------
-
        condition     = and_condition ('or' and_condition)*
+               ('@integer' samples)?
+               ('@decimal' samples)?
        and_condition = relation ('and' relation)*
-       relation      = is_relation | in_relation | within_relation | 'n' <EOL>
+       relation      = is_relation | in_relation | within_relation
        is_relation   = expr 'is' ('not')? value
-       in_relation   = expr ('not')? 'in' range_list
+       in_relation   = expr (('not')? 'in' | '=' | '!=') range_list
        within_relation = expr ('not')? 'within' range_list
-       expr          = 'n' ('mod' value)?
+       expr          = operand (('mod' | '%') value)?
+       operand       = 'n' | 'i' | 'f' | 't' | 'v' | 'w'
        range_list    = (range | value) (',' range_list)*
        value         = digit+
        digit         = 0|1|2|3|4|5|6|7|8|9
        range         = value'..'value
-
+       samples       = sampleRange (',' sampleRange)* (',' ('…'|'...'))?
+       sampleRange   = decimalValue '~' decimalValue
+       decimalValue  = value ('.' value)?
        */
+
+       // we don't evaluate the samples section of the rule. Ignore it.
+       rule = rule.split('@')[0].trim();
+
+       if (!rule.length) {
+               // empty rule or 'other' rule.
+               return true;
+       }
        // Indicates current position in the rule as we parse through it.
        // Shared among all parsing functions below.
-       var pos = 0;
-
-       var whitespace = makeRegexParser(/^\s+/);
-       var digits = makeRegexParser(/^\d+/);
-
-       var _n_ = makeStringParser('n');
-       var _is_ = makeStringParser('is');
-       var _mod_ = makeStringParser('mod');
-       var _not_ = makeStringParser('not');
-       var _in_ = makeStringParser('in');
-       var _within_ = makeStringParser('within');
-       var _range_ = makeStringParser('..');
-       var _comma_ = makeStringParser(',');
-       var _or_ = makeStringParser('or');
-       var _and_ = makeStringParser('and');
+       var pos = 0,
+               operand,
+               expression,
+               relation,
+               result,
+               whitespace = makeRegexParser(/^\s+/),
+               value = makeRegexParser(/^\d+/),
+               _n_ = makeStringParser('n'),
+               _i_ = makeStringParser('i'),
+               _f_ = makeStringParser('f'),
+               _t_ = makeStringParser('t'),
+               _v_ = makeStringParser('v'),
+               _w_ = makeStringParser('w'),
+               _is_ = makeStringParser('is'),
+               _isnot_ = makeStringParser('is not'),
+               _isnot_sign_ = makeStringParser('!='),
+               _equal_ = makeStringParser('='),
+               _mod_ = makeStringParser('mod'),
+               _percent_ = makeStringParser('%'),
+               _not_ = makeStringParser('not'),
+               _in_ = makeStringParser('in'),
+               _within_ = makeStringParser('within'),
+               _range_ = makeStringParser('..'),
+               _comma_ = makeStringParser(','),
+               _or_ = makeStringParser('or'),
+               _and_ = makeStringParser('and');
 
        function debug() {
-               /* console.log.apply(console, arguments);*/
+               // console.log.apply(console, arguments);
        }
 
        debug('pluralRuleParser', rule, number);
 
        // Try parsers until one works, if none work return null
+
        function choice(parserSyntax) {
-               return function () {
+               return function() {
                        for (var i = 0; i < parserSyntax.length; i++) {
                                var result = parserSyntax[i]();
                                if (result !== null) {
@@ -79,6 +103,7 @@ function pluralRuleParser(rule, number) {
        // Try several parserSyntax-es in a row.
        // All must succeed; otherwise, return null.
        // This is the only eager one.
+
        function sequence(parserSyntax) {
                var originalPos = pos;
                var result = [];
@@ -95,8 +120,9 @@ function pluralRuleParser(rule, number) {
 
        // Run the same parser over and over until it fails.
        // Must succeed a minimum of n times; otherwise, return null.
+
        function nOrMore(n, p) {
-               return function () {
+               return function() {
                        var originalPos = pos;
                        var result = [];
                        var parsed = p();
@@ -113,21 +139,21 @@ function pluralRuleParser(rule, number) {
        }
 
        // Helpers -- just make parserSyntax out of simpler JS builtin types
-
        function makeStringParser(s) {
                var len = s.length;
-               return function () {
+               return function() {
                        var result = null;
                        if (rule.substr(pos, len) === s) {
                                result = s;
                                pos += len;
                        }
+
                        return result;
                };
        }
 
        function makeRegexParser(regex) {
-               return function () {
+               return function() {
                        var matches = rule.substr(pos).match(regex);
                        if (matches === null) {
                                return null;
@@ -137,62 +163,166 @@ function pluralRuleParser(rule, number) {
                };
        }
 
+       /*
+        * integer digits of n.
+        */
+       function i() {
+               var result = _i_();
+               if (result === null) {
+                       debug(' -- failed i', parseInt(number, 10));
+                       return result;
+               }
+               result = parseInt(number, 10);
+               debug(' -- passed i ', result);
+               return result;
+       }
+
+       /*
+        * absolute value of the source number (integer and decimals).
+        */
        function n() {
                var result = _n_();
                if (result === null) {
-                       debug(" -- failed n");
+                       debug(' -- failed n ', number);
                        return result;
                }
-               result = parseInt(number, 10);
-               debug(" -- passed n ", result);
+               result = parseFloat(number, 10);
+               debug(' -- passed n ', result);
+               return result;
+       }
+
+       /*
+        * visible fractional digits in n, with trailing zeros.
+        */
+       function f() {
+               var result = _f_();
+               if (result === null) {
+                       debug(' -- failed f ', number);
+                       return result;
+               }
+               result = (number + '.').split('.')[1] || 0;
+               debug(' -- passed f ', result);
+               return result;
+       }
+
+       /*
+        * visible fractional digits in n, without trailing zeros.
+        */
+       function t() {
+               var result = _t_();
+               if (result === null) {
+                       debug(' -- failed t ', number);
+                       return result;
+               }
+               result = (number + '.').split('.')[1].replace(/0$/, '') || 0;
+               debug(' -- passed t ', result);
+               return result;
+       }
+
+       /*
+        * number of visible fraction digits in n, with trailing zeros.
+        */
+       function v() {
+               var result = _v_();
+               if (result === null) {
+                       debug(' -- failed v ', number);
+                       return result;
+               }
+               result = (number + '.').split('.')[1].length || 0;
+               debug(' -- passed v ', result);
+               return result;
+       }
+
+       /*
+        * number of visible fraction digits in n, without trailing zeros.
+        */
+       function w() {
+               var result = _w_();
+               if (result === null) {
+                       debug(' -- failed w ', number);
+                       return result;
+               }
+               result = (number + '.').split('.')[1].replace(/0$/, '').length || 0;
+               debug(' -- passed w ', result);
                return result;
        }
 
-       var expression = choice([mod, n]);
+       // operand       = 'n' | 'i' | 'f' | 't' | 'v' | 'w'
+       operand = choice([n, i, f, t, v, w]);
+
+       // expr          = operand (('mod' | '%') value)?
+       expression = choice([mod, operand]);
 
        function mod() {
-               var result = sequence([n, whitespace, _mod_, whitespace, digits]);
+               var result = sequence([operand, whitespace, choice([_mod_, _percent_]), whitespace, value]);
                if (result === null) {
-                       debug(" -- failed mod");
+                       debug(' -- failed mod');
                        return null;
                }
-               debug(" -- passed mod");
+               debug(' -- passed ' + parseInt(result[0], 10) + ' ' + result[2] + ' ' + parseInt(result[4], 10));
                return parseInt(result[0], 10) % parseInt(result[4], 10);
        }
 
        function not() {
                var result = sequence([whitespace, _not_]);
                if (result === null) {
-                       debug(" -- failed not");
+                       debug(' -- failed not');
                        return null;
-               } else {
-                       return result[1];
                }
+
+               return result[1];
        }
 
+       // is_relation   = expr 'is' ('not')? value
        function is() {
-               var result = sequence([expression, whitespace, _is_, nOrMore(0, not), whitespace, digits]);
+               var result = sequence([expression, whitespace, choice([_is_]), whitespace, value]);
                if (result !== null) {
-                       debug(" -- passed is");
-                       if (result[3][0] === 'not') {
-                               return result[0] !== parseInt(result[5], 10);
-                       } else {
-                               return result[0] === parseInt(result[5], 10);
+                       debug(' -- passed is : ' + result[0] + ' == ' + parseInt(result[4], 10));
+                       return result[0] === parseInt(result[4], 10);
+               }
+               debug(' -- failed is');
+               return null;
+       }
+
+       // is_relation   = expr 'is' ('not')? value
+       function isnot() {
+               var result = sequence([expression, whitespace, choice([_isnot_, _isnot_sign_]), whitespace, value]);
+               if (result !== null) {
+                       debug(' -- passed isnot: ' + result[0] + ' != ' + parseInt(result[4], 10));
+                       return result[0] !== parseInt(result[4], 10);
+               }
+               debug(' -- failed isnot');
+               return null;
+       }
+
+       function not_in() {
+               var result = sequence([expression, whitespace, _isnot_sign_, whitespace, rangeList]);
+               if (result !== null) {
+                       debug(' -- passed not_in: ' + result[0] + ' != ' + result[4]);
+                       var range_list = result[4];
+                       for (var i = 0; i < range_list.length; i++) {
+                               if (parseInt(range_list[i], 10) === parseInt(result[0], 10)) {
+                                       return false;
+                               }
                        }
+                       return true;
                }
-               debug(" -- failed is");
+               debug(' -- failed not_in');
                return null;
        }
 
+       // range_list    = (range | value) (',' range_list)*
        function rangeList() {
-               // range_list    = (range | value) (',' range_list)*
-               var result = sequence([choice([range, digits]), nOrMore(0, rangeTail)]);
+               var result = sequence([choice([range, value]), nOrMore(0, rangeTail)]);
                var resultList = [];
                if (result !== null) {
-                       resultList = resultList.concat(result[0], result[1][0]);
+                       resultList = resultList.concat(result[0]);
+                       if (result[1][0]) {
+                               resultList = resultList.concat(result[1][0]);
+                       }
                        return resultList;
                }
-               debug(" -- failed rangeList");
+               debug(' -- failed rangeList');
                return null;
        }
 
@@ -202,111 +332,141 @@ function pluralRuleParser(rule, number) {
                if (result !== null) {
                        return result[1];
                }
-               debug(" -- failed rangeTail");
+               debug(' -- failed rangeTail');
                return null;
        }
 
+       // range         = value'..'value
+
        function range() {
                var i;
-               var result = sequence([digits, _range_, digits]);
+               var result = sequence([value, _range_, value]);
                if (result !== null) {
-                       debug(" -- passed range");
+                       debug(' -- passed range');
                        var array = [];
                        var left = parseInt(result[0], 10);
                        var right = parseInt(result[2], 10);
-                       for ( i = left; i <= right; i++) {
+                       for (i = left; i <= right; i++) {
                                array.push(i);
                        }
                        return array;
                }
-               debug(" -- failed range");
+               debug(' -- failed range');
                return null;
        }
 
        function _in() {
                // in_relation   = expr ('not')? 'in' range_list
-               var result = sequence([expression, nOrMore(0, not), whitespace, _in_, whitespace, rangeList]);
+               var result = sequence([expression, nOrMore(0, not), whitespace, choice([_in_, _equal_]), whitespace, rangeList]);
                if (result !== null) {
-                       debug(" -- passed _in");
+                       debug(' -- passed _in:' + result);
                        var range_list = result[5];
                        for (var i = 0; i < range_list.length; i++) {
-                               if (parseInt(range_list[i], 10) === result[0]) {
+                               if (parseInt(range_list[i], 10) === parseInt(result[0], 10)) {
                                        return (result[1][0] !== 'not');
                                }
                        }
                        return (result[1][0] === 'not');
                }
-               debug(" -- failed _in ");
+               debug(' -- failed _in ');
                return null;
        }
 
+       /*
+        * The difference between in and within is that in only includes integers in the specified range,
+        * while within includes all values.
+        */
+
        function within() {
-               var result = sequence([expression, whitespace, _within_, whitespace, rangeList]);
+               // within_relation = expr ('not')? 'within' range_list
+               var result = sequence([expression, nOrMore(0, not), whitespace, _within_, whitespace, rangeList]);
                if (result !== null) {
-                       debug(" -- passed within ");
-                       var range_list = result[4];
-                       return (parseInt( range_list[0],10 )<= result[0] && result[0] <= parseInt( range_list[1], 10));
+                       debug(' -- passed within');
+                       var range_list = result[5];
+                       if ((result[0] >= parseInt(range_list[0], 10)) &&
+                               (result[0] < parseInt(range_list[range_list.length - 1], 10))) {
+                               return (result[1][0] !== 'not');
+                       }
+                       return (result[1][0] === 'not');
                }
-               debug(" -- failed within ");
+               debug(' -- failed within ');
                return null;
        }
 
+       // relation      = is_relation | in_relation | within_relation
+       relation = choice([is, not_in, isnot, _in, within]);
 
-       var relation = choice([is, _in, within]);
-
+       // and_condition = relation ('and' relation)*
        function and() {
-               var result = sequence([relation, whitespace, _and_, whitespace, condition]);
+               var result = sequence([relation, nOrMore(0, andTail)]);
                if (result) {
-                       debug(" -- passed and");
-                       return result[0] && result[4];
+                       if (!result[0]) {
+                               return false;
+                       }
+                       for (var i = 0; i < result[1].length; i++) {
+                               if (!result[1][i]) {
+                                       return false;
+                               }
+                       }
+                       return true;
                }
-               debug(" -- failed and");
+               debug(' -- failed and');
                return null;
        }
 
-       function or() {
-               var result = sequence([relation, whitespace, _or_, whitespace, condition]);
-               if (result) {
-                       debug(" -- passed or");
-                       return result[0] || result[4];
+       // ('and' relation)*
+       function andTail() {
+               var result = sequence([whitespace, _and_, whitespace, relation]);
+               if (result !== null) {
+                       debug(' -- passed andTail' + result);
+                       return result[3];
                }
-               debug(" -- failed or");
+               debug(' -- failed andTail');
                return null;
-       }
 
-       var condition = choice([and, or, relation]);
+       }
+       //  ('or' and_condition)*
+       function orTail() {
+               var result = sequence([whitespace, _or_, whitespace, and]);
+               if (result !== null) {
+                       debug(' -- passed orTail: ' + result[3]);
+                       return result[3];
+               }
+               debug(' -- failed orTail');
+               return null;
 
-       function isInt(n) {
-               return parseFloat(n) % 1 === 0;
        }
 
+       // condition     = and_condition ('or' and_condition)*
+       function condition() {
+               var result = sequence([and, nOrMore(0, orTail)]);
+               if (result) {
+                       for (var i = 0; i < result[1].length; i++) {
+                               if (result[1][i]) {
+                                       return true;
+                               }
+                       }
+                       return result[0];
 
-       function start() {
-               if (!isInt(number)) {
-                       return false;
                }
-               var result = condition();
-               return result;
+               return false;
        }
 
-
-       var result = start();
-
+       result = condition();
        /*
         * For success, the pos must have gotten to the end of the rule
         * and returned a non-null.
         * n.b. This is part of language infrastructure, so we do not throw an internationalizable message.
         */
-       if (result === null || pos !== rule.length) {
-               // throw new Error("Parse error at position " + pos.toString() + " in input: " + rule + " result is " + result);
+       if (result === null) {
+               throw new Error('Parse error at position ' + pos.toString() + ' for rule: ' + rule);
        }
 
-       return result;
-}
+       if (pos !== rule.length) {
+               debug('Warning: Rule not parsed completely. Parser stopped at ' + rule.substr(0, pos) + ' for rule: ' + rule);
+       }
 
-/* For module loaders, e.g. NodeJS, NPM */
-if (typeof module !== 'undefined' && module.exports) {
-       module.exports = pluralRuleParser;
+       return result;
 }
 
 /* pluralRuleParser ends here */
index 2242924..b3ed88c 100644 (file)
@@ -1,10 +1,16 @@
-/* This is JsJpegMeta 1.0, ported to MediaWiki ResourceLoader by Bryan Tong Minh */
-/* The following lines where changed with respect to the original: 54, 625-627 */
+/**
+ * This is JsJpegMeta v1.0
+ * From: https://code.google.com/p/jsjpegmeta/downloads/list
+ * From: https://github.com/bennoleslie/jsjpegmeta/blob/v1.0.0/jpegmeta.js
+ *
+ * Ported to MediaWiki ResourceLoader by Bryan Tong Minh
+ * Changes:
+ * - Add closure.
+ * - Add this.JpegMeta assignment to expose it as global.
+ * - Add mw.libs.jpegmeta wrapper.
+ */
 
-(function( $ ) {
-
-       /* JsJpegMeta starts here */
-       
+( function () {
        /*
        Copyright (c) 2009 Ben Leslie
        
@@ -52,7 +58,8 @@
        */
 
        var JpegMeta = {};
-       this.JpegMeta = JpegMeta; // I have no clue why I need this magic... -- Bryan
+       // MediaWiki: Expose as global
+       this.JpegMeta = JpegMeta;
        
        /* 
           parse an unsigned number of size bytes at offset in some binary string data.
                }
            }
        };
-       
-       /* JsJpegMeta ends here */
 
+       // MediaWiki: Add mw.libs wrapper
        mw.libs.jpegmeta = function( fileReaderResult, fileName ) {
                return new JpegMeta.JpegFile( fileReaderResult, fileName );
        };
 
-} )( jQuery );
+}() );
index e9afa4a..ef287c4 100644 (file)
                        .attr( 'title', mw.msg( 'tooltip-ca-' + action ) +
                                ( accesskeyTip ? ' ' + accesskeyTip[0] : '' )
                        )
-                       .attr( 'href', mw.util.wikiScript() + '?' + $.param({
+                       .attr( 'href', mw.util.wikiScript() + '?' + $.param( {
                                        title: title,
                                        action: action
-                               })
+                               } )
                        );
 
                // Most common ID style
                        updateWatchLink( $link, action, 'loading' );
 
                        api = new mw.Api();
-                       api[action](
-                               title,
-                               // Success
-                               function ( watchResponse ) {
-                                       var $li, otherAction;
-
-                                       otherAction = action === 'watch' ? 'unwatch' : 'watch';
-                                       $li = $link.closest( 'li' );
-
-                                       mw.notify( $.parseHTML( watchResponse.message ), {
-                                               tag: 'watch-self'
-                                       } );
-
-                                       // Set link to opposite
-                                       updateWatchLink( $link, otherAction );
-
-                                       // Bug 12395 - update the watch checkbox on edit pages when the
-                                       // page is watched or unwatched via the tab.
-                                       if ( watchResponse.watched !== undefined ) {
-                                               $( '#wpWatchthis' ).prop( 'checked', true );
-                                       } else {
-                                               $( '#wpWatchthis' ).prop( 'checked', false );
-                                       }
-                               },
-                               // Error
-                               function () {
-                                       var cleanTitle, msg, link;
-
-                                       // Reset link to non-loading mode
-                                       updateWatchLink( $link, action );
-
-                                       // Format error message
-                                       cleanTitle = title.replace( /_/g, ' ' );
-                                       link = mw.html.element(
-                                               'a', {
-                                                       href: mw.util.getUrl( title ),
-                                                       title: cleanTitle
-                                               }, cleanTitle
-                                       );
-                                       msg = mw.message( 'watcherrortext', link );
-
-                                       // Report to user about the error
-                                       mw.notify( msg, { tag: 'watch-self' } );
+                       api[action]( title )
+                       .done( function ( watchResponse ) {
+                               var otherAction;
 
+                               otherAction = action === 'watch' ? 'unwatch' : 'watch';
+
+                               mw.notify( $.parseHTML( watchResponse.message ), {
+                                       tag: 'watch-self'
+                               } );
+
+                               // Set link to opposite
+                               updateWatchLink( $link, otherAction );
+
+                               // Bug 12395 - update the watch checkbox on edit pages when the
+                               // page is watched or unwatched via the tab.
+                               if ( watchResponse.watched !== undefined ) {
+                                       $( '#wpWatchthis' ).prop( 'checked', true );
+                               } else {
+                                       $( '#wpWatchthis' ).prop( 'checked', false );
                                }
-                       );
+                       } )
+                       .fail( function () {
+                               var cleanTitle, msg, link;
+
+                               // Reset link to non-loading mode
+                               updateWatchLink( $link, action );
+
+                               // Format error message
+                               cleanTitle = title.replace( /_/g, ' ' );
+                               link = mw.html.element(
+                                       'a', {
+                                               href: mw.util.getUrl( title ),
+                                               title: cleanTitle
+                                       }, cleanTitle
+                               );
+                               msg = mw.message( 'watcherrortext', link );
+
+                               // Report to user about the error
+                               mw.notify( msg, { tag: 'watch-self' } );
+                       } );
                } );
        } );
 
index b96a26e..b1af745 100644 (file)
        border: 1px solid #ddd;
 }
 
+.mw-changeslist-legend dl {
+       /* Parent element defines sufficient padding */
+       margin-bottom: 0;
+}
+
 .mw-changeslist-legend dt {
        float: left;
 }
diff --git a/resources/mediawiki.special/mediawiki.special.changeslist.js b/resources/mediawiki.special/mediawiki.special.changeslist.js
new file mode 100644 (file)
index 0000000..df606f5
--- /dev/null
@@ -0,0 +1,21 @@
+/* Remember the collapse state of the legend on recent changes and watchlist pages. */
+jQuery( document ).ready( function ( $ ) {
+       var
+               cookieName = 'changeslist-state',
+               cookieOptions = {
+                       expires: 30,
+                       path: '/'
+               },
+               isCollapsed = $.cookie( cookieName ) === 'collapsed';
+
+       $( '.mw-changeslist-legend' )
+               .makeCollapsible( {
+                       collapsed: isCollapsed
+               } )
+               .on( 'beforeExpand.mw-collapsible', function () {
+                       $.cookie( cookieName, 'expanded', cookieOptions );
+               } )
+               .on( 'beforeCollapse.mw-collapsible', function () {
+                       $.cookie( cookieName, 'collapsed', cookieOptions );
+               } );
+} );
diff --git a/resources/mediawiki.special/mediawiki.special.createAccount.css b/resources/mediawiki.special/mediawiki.special.createAccount.css
deleted file mode 100644 (file)
index 11d00e7..0000000
+++ /dev/null
@@ -1,89 +0,0 @@
-/* Disable the underline that Vector puts on h2 headings, and bold them. */
-.mw-ui-container h2 {
-       border: 0;
-       font-weight: bold;
-}
-
-/**** shuffled CAPTCHA ****/
-#wpCaptchaWord {
-       margin-top: 6px;
-}
-
-.mw-createacct-captcha-container {
-       background-color: #f8f8f8;
-       border: 1px solid #c9c9c9;
-       padding: 10px;
-       text-align: center;
-}
-
-.mw-createacct-captcha-assisted {
-       display: block;
-       margin-top: 0.5em;
-}
-
-/* Put a border around the fancycaptcha-image-container. */
-.mw-createacct-captcha-and-reload {
-       border: 1px solid #c9c9c9;
-       display: table-cell; /* Other display formats end up too wide */
-       width: 270px;
-       background-color: #FFF;
-}
-
-/* Make the fancycaptcha-image-container full-width within its parent.  */
-.fancycaptcha-image-container
-{
-       width: 100%;
-}
-
-/**** Benefits column CSS to the right (if it fits) of the form. ****/
-.mw-ui-container #userloginForm {
-       float: left;
-}
-
-div.mw-createacct-benefits-container {
-       /* Keeps this column compact and close to the form, but tends to squish contents. */
-       float: left;
-}
-
-div.mw-createacct-benefits-container h2 {
-       margin-bottom: 30px;
-}
-
-.mw-number-text.icon-edits {
-       /* @embed */
-       background: url(images/icon-edits.png) no-repeat left center;
-}
-
-.mw-number-text.icon-pages {
-       /* @embed */
-       background: url(images/icon-pages.png) no-repeat left center;
-}
-
-.mw-number-text.icon-contributors {
-       /* @embed */
-       background: url(images/icon-contributors.png) no-repeat left center;
-}
-
-/* Special font for numbers in benefits*/
-div.mw-number-text h3 {
-       top: 0;
-       margin: 0;
-       padding: 0;
-       color: #252525;
-       font-family: 'Georgia', serif;
-       font-weight: normal;
-       font-size: 2.2em;
-       line-height: 1.2;
-       text-align: center;
-}
-
-/* Contains a number and explanatory text, with space for an icon */
-div.mw-number-text {
-       display: block;
-       font-size: 1.2em;
-       color: #444;
-       margin-top: 1em;
-       padding: 0 0 0 95px; /* 80px wide icon plus "margin" */
-       min-height: 75px; /* matches max icon height, ensures icon emblem is visible */
-       text-align: center;
-}
diff --git a/resources/mediawiki.special/mediawiki.special.createAccount.js b/resources/mediawiki.special/mediawiki.special.createAccount.js
deleted file mode 100644 (file)
index 609b2dd..0000000
+++ /dev/null
@@ -1,124 +0,0 @@
-/**
- * JavaScript for Create account form (Special:UserLogin?type=signup).
- */
-( function ( mw, $ ) {
-       // When sending password by email, hide the password input fields.
-       // This function doesn't need to be loaded early by ResourceLoader, but is tiny.
-       function hidePasswordOnEmail() {
-               // Always required if checked, otherwise it depends, so we use the original
-               var $emailLabel = $( 'label[for="wpEmail"]' ),
-                       originalText = $emailLabel.text(),
-                       requiredText = mw.message( 'createacct-emailrequired' ).text(),
-                       $createByMailCheckbox = $( '#wpCreateaccountMail' ),
-                       $beforePwds = $( '.mw-row-password:first' ).prev(),
-                       $pwds;
-
-               function updateForCheckbox() {
-                       var checked = $createByMailCheckbox.prop( 'checked' );
-                       if ( checked ) {
-                               $pwds = $( '.mw-row-password' ).detach();
-                               $emailLabel.text( requiredText );
-                       } else {
-                               if ( $pwds ) {
-                                       $beforePwds.after( $pwds );
-                                       $pwds = null;
-                               }
-                               $emailLabel.text( originalText );
-                       }
-               }
-
-               $createByMailCheckbox.on( 'change', updateForCheckbox );
-               updateForCheckbox();
-       }
-
-       // Move the FancyCaptcha image into a more attractive container.
-       // This function does need to be run early by ResourceLoader.
-       function adjustFancyCaptcha( $content, buttonSubmit ) {
-               var $submit = $content.find( buttonSubmit ),
-                       tabIndex,
-                       $captchaStuff,
-                       $captchaImageContainer,
-                       // JavaScript can't yet parse the message createacct-imgcaptcha-help when it
-                       // contains a MediaWiki transclusion, so PHP parses it and sends the HTML.
-                       helpMsg = mw.config.get( 'wgCreateacctImgcaptchaHelp' ),
-                       helpHtml = '';
-
-               /*
-                * CAPTCHA
-                * The CAPTCHA is in a div style="captcha" at the top of the form.
-                * If it's a FancyCaptcha, then we remove it and insert it lower down,
-                * in a customized div with just what we need (e.g. no
-                * fancycaptcha-createaccount message).
-                */
-               if ( !$submit.length) {
-                       return;
-               }
-               tabIndex = $submit.prop( 'tabindex' ) - 1;
-               $captchaStuff = $content.find ( '.captcha' );
-
-               if ( $captchaStuff.length ) {
-
-                       // The FancyCaptcha has this class in the ConfirmEdit extension
-                       // after 2013-04-18.
-                       $captchaImageContainer = $captchaStuff.find( '.fancycaptcha-image-container' );
-                       if ( $captchaImageContainer.length !== 1 ) {
-                               return;
-                       }
-
-                       $captchaStuff.remove();
-
-                       if ( helpMsg) {
-                               helpHtml = '<small class="mw-createacct-captcha-assisted">' + helpMsg + '</small>';
-                       }
-
-                       // Insert another div before the submit button that will include the
-                       // repositioned FancyCaptcha div, an input field, and possible help.
-                       $submit.closest( 'div' )
-                               .before( [
-                       '<div>',
-                               '<label for="wpCaptchaWord">' + mw.message( 'createacct-captcha' ).escaped() + '</label>',
-                               '<div class="mw-createacct-captcha-container">',
-                                       '<div class="mw-createacct-captcha-and-reload" />',
-                                       '<input id="wpCaptchaWord" name="wpCaptchaWord" type="text" placeholder="' +
-                                               mw.message( 'createacct-imgcaptcha-ph' ).escaped() +
-                                               '" tabindex="' + tabIndex + '" autocapitalize="off" autocorrect="off">',
-                                               helpHtml,
-                               '</div>',
-                       '</div>'
-                                       ].join( '' )
-                               );
-
-                       // Stick the FancyCaptcha container inside our bordered and framed parents.
-                       $captchaImageContainer
-                               .prependTo( $content.find( '.mw-createacct-captcha-and-reload' ) );
-
-                       // Find the input field, add the text (if any) of the existing CAPTCHA
-                       // field (although usually it's blanked out on every redisplay),
-                       // and after it move over the hidden field that tells the CAPTCHA
-                       // what to do.
-                       $content.find( '#wpCaptchaWord' )
-                               .val( $captchaStuff.find( '#wpCaptchaWord' ).val() )
-                               .after( $captchaStuff.find( '#wpCaptchaId' ) );
-               }
-       }
-
-       $( function () {
-               // Checks if the current page is Special:UserLogin
-               var isLogin = false,
-                       $content = $( '#mw-content-text' ),
-                       buttonSubmit = '#wpCreateaccount';
-
-               if ( $content.find( buttonSubmit ).length === 0 ) {
-                       buttonSubmit = '#wpLoginAttempt';
-                       isLogin = true;
-               }
-
-               adjustFancyCaptcha( $content, buttonSubmit );
-
-               if ( !isLogin ) {
-                       hidePasswordOnEmail();
-               }
-
-       } );
-
-}( mediaWiki, jQuery ) );
index 3cd9739..7b1d416 100644 (file)
@@ -38,7 +38,7 @@ tr.mw-block-hideuser {
 
 /**** Special:BlockList ****/
 table.mw-blocklist span.mw-usertoollinks,
-span.mw-blocklist-actions{
+span.mw-blocklist-actions {
        white-space: nowrap;
        font-size: 90%;
 }
diff --git a/resources/mediawiki.special/mediawiki.special.userLogin.css b/resources/mediawiki.special/mediawiki.special.userLogin.css
deleted file mode 100644 (file)
index cf9eaa0..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
-/* Styles just for VForm user login */
-#mw-userlogin-help {
-       text-align: center;
-}
-
-.mw-ui-vform .mw-secure {
-       /* @embed */
-       background: url(images/icon-lock.png) no-repeat scroll left center transparent;
-       margin: 0 0 0 1px;
-       padding: 0 0 0 11px;
-}
-
-/* The login form invites users to create an account */
-#mw-createaccount-cta {
-       width: 20em;
-       height: 10em;
-       /* @embed */
-       background: url(images/glyph-people-large.png) no-repeat 50%;
-       margin: 0 auto;
-}
-
-#mw-createaccount-cta h3,
-#mw-createaccount-another h3 {
-       font-size: 0.9em;
-       font-weight: normal;
-       text-align: center;
-}
-
-#mw-createaccount-cta h3 {
-       padding-top: 4em;
-}
-
-#mw-createaccount-join {
-       margin-left: 0.75em;
-       /* Separate from background image */
-       box-shadow: 4px 4px 4px 4px rgba(255, 255, 255, 1);
-       width: auto;
-       display: inline-block;
-}
-
-/**** shuffled CAPTCHA ****/
-#wpCaptchaWord {
-       margin-top: 6px;
-}
-
-.mw-createacct-captcha-container {
-       background-color: #f8f8f8;
-       border: 1px solid #c9c9c9;
-       padding: 10px;
-       text-align: center;
-}
-
-.mw-createacct-captcha-assisted {
-       display: block;
-       margin-top: 0.5em;
-}
-
-/* Put a border around the fancycaptcha-image-container. */
-.mw-createacct-captcha-and-reload {
-       border: 1px solid #c9c9c9;
-       display: table-cell; /* Other display formats end up too wide */
-       width: 270px;
-       background-color: #FFF;
-}
-
-/* Make the fancycaptcha-image-container full-width within its parent.  */
-.fancycaptcha-image-container
-{
-       width: 100%;
-}
diff --git a/resources/mediawiki.special/mediawiki.special.userlogin.common.css b/resources/mediawiki.special/mediawiki.special.userlogin.common.css
new file mode 100644 (file)
index 0000000..d5fd2b8
--- /dev/null
@@ -0,0 +1,65 @@
+/* Styles for user login and signup forms */
+#mw-userlogin-help {
+       text-align: center;
+}
+
+.mw-ui-vform .mw-secure {
+       /* @embed */
+       background: url(images/icon-lock.png) no-repeat scroll left center transparent;
+       margin: 0 0 0 1px;
+       padding: 0 0 0 11px;
+}
+
+/*
+ * When inside the VForm style, disable the border that Vector and other skins
+ * put on the div surrounding the login/create account form.
+ * Also disable the margin and padding that Vector puts around the form.
+ */
+.mw-ui-container #userloginForm,
+.mw-ui-container #userlogin {
+       border: 0;
+       margin: 0;
+       padding: 0;
+}
+
+/* Reposition and resize language links, which appear on a per-wiki basis */
+.mw-ui-container #languagelinks {
+       margin-bottom: 2em;
+       font-size: 0.8em;
+}
+
+/* Put some space under template's header, which may contain CAPTCHA HTML.*/
+section.mw-form-header {
+       margin-bottom: 10px;
+}
+
+/**** shuffled CAPTCHA ****/
+#wpCaptchaWord {
+       margin-top: 6px;
+}
+
+.mw-createacct-captcha-container {
+       background-color: #f8f8f8;
+       border: 1px solid #c9c9c9;
+       padding: 10px;
+       text-align: center;
+}
+
+.mw-createacct-captcha-assisted {
+       display: block;
+       margin-top: 0.5em;
+}
+
+/* Put a border around the fancycaptcha-image-container. */
+.mw-createacct-captcha-and-reload {
+       border: 1px solid #c9c9c9;
+       /* Other display formats end up too wide */
+       display: table-cell;
+       width: 270px;
+       background-color: #FFF;
+}
+
+/* Make the fancycaptcha-image-container full-width within its parent. */
+.fancycaptcha-image-container {
+       width: 100%;
+}
diff --git a/resources/mediawiki.special/mediawiki.special.userlogin.common.js b/resources/mediawiki.special/mediawiki.special.userlogin.common.js
new file mode 100644 (file)
index 0000000..a899ae7
--- /dev/null
@@ -0,0 +1,72 @@
+/**
+ * JavaScript for login and signup forms.
+ */
+( function ( mw, $ ) {
+       // Move the FancyCaptcha image into a more attractive container.
+       // The CAPTCHA is in a <div class="captcha"> at the top of the form. If it's a FancyCaptcha,
+       // then we remove it and insert it lower down, in a customized div with just what we need (e.g.
+       // no 'fancycaptcha-createaccount' message).
+       function adjustFancyCaptcha( $content, buttonSubmit ) {
+               var $submit = $content.find( buttonSubmit ),
+                       tabIndex,
+                       $captchaStuff,
+                       $captchaImageContainer,
+                       // JavaScript can't yet parse the message 'createacct-imgcaptcha-help' when it
+                       // contains a MediaWiki transclusion, so PHP parses it and sends the HTML.
+                       // This is only set for the signup form (and undefined for login).
+                       helpMsg = mw.config.get( 'wgCreateacctImgcaptchaHelp' ),
+                       helpHtml = '';
+
+               if ( !$submit.length ) {
+                       return;
+               }
+               tabIndex = $submit.prop( 'tabindex' ) - 1;
+               $captchaStuff = $content.find( '.captcha' );
+
+               if ( $captchaStuff.length ) {
+                       // The FancyCaptcha has this class in the ConfirmEdit extension since 2013-04-18.
+                       $captchaImageContainer = $captchaStuff.find( '.fancycaptcha-image-container' );
+                       if ( $captchaImageContainer.length !== 1 ) {
+                               return;
+                       }
+
+                       $captchaStuff.remove();
+
+                       if ( helpMsg ) {
+                               helpHtml = '<small class="mw-createacct-captcha-assisted">' + helpMsg + '</small>';
+                       }
+
+                       // Insert another div before the submit button that will include the
+                       // repositioned FancyCaptcha div, an input field, and possible help.
+                       $submit.closest( 'div' ).before( [
+                               '<div>',
+                                       '<label for="wpCaptchaWord">' + mw.message( 'createacct-captcha' ).escaped() + '</label>',
+                                       '<div class="mw-createacct-captcha-container">',
+                                               '<div class="mw-createacct-captcha-and-reload" />',
+                                               '<input id="wpCaptchaWord" name="wpCaptchaWord" type="text" placeholder="' +
+                                                       mw.message( 'createacct-imgcaptcha-ph' ).escaped() +
+                                                       '" tabindex="' + tabIndex + '" autocapitalize="off" autocorrect="off">',
+                                                       helpHtml,
+                                       '</div>',
+                               '</div>'
+                       ].join( '' ) );
+
+                       // Stick the FancyCaptcha container inside our bordered and framed parents.
+                       $captchaImageContainer
+                               .prependTo( $content.find( '.mw-createacct-captcha-and-reload' ) );
+
+                       // Find the input field, add the text (if any) of the existing CAPTCHA
+                       // field (although usually it's blanked out on every redisplay),
+                       // and after it move over the hidden field that tells the CAPTCHA
+                       // what to do.
+                       $content.find( '#wpCaptchaWord' )
+                               .val( $captchaStuff.find( '#wpCaptchaWord' ).val() )
+                               .after( $captchaStuff.find( '#wpCaptchaId' ) );
+               }
+       }
+
+       $( function () {
+               // Work with both login and signup form
+               adjustFancyCaptcha( $( '#mw-content-text' ), '#wpCreateaccount, #wpLoginAttempt' );
+       } );
+}( mediaWiki, jQuery ) );
diff --git a/resources/mediawiki.special/mediawiki.special.userlogin.login.css b/resources/mediawiki.special/mediawiki.special.userlogin.login.css
new file mode 100644 (file)
index 0000000..85730f5
--- /dev/null
@@ -0,0 +1,27 @@
+/* The login form invites users to create an account */
+#mw-createaccount-cta {
+       width: 20em;
+       height: 10em;
+       /* @embed */
+       background: url(images/glyph-people-large.png) no-repeat 50%;
+       margin: 0 auto;
+}
+
+#mw-createaccount-cta h3,
+#mw-createaccount-another h3 {
+       font-size: 0.9em;
+       font-weight: normal;
+       text-align: center;
+}
+
+#mw-createaccount-cta h3 {
+       padding-top: 4em;
+}
+
+#mw-createaccount-join {
+       margin-left: 0.75em;
+       /* Separate from background image */
+       box-shadow: 4px 4px 4px 4px rgba(255, 255, 255, 1);
+       width: auto;
+       display: inline-block;
+}
diff --git a/resources/mediawiki.special/mediawiki.special.userlogin.signup.css b/resources/mediawiki.special/mediawiki.special.userlogin.signup.css
new file mode 100644 (file)
index 0000000..1564712
--- /dev/null
@@ -0,0 +1,63 @@
+/* Disable the underline that Vector puts on h2 headings, and bold them. */
+.mw-ui-container h2 {
+       border: 0;
+       font-weight: bold;
+}
+
+/* Benefits column CSS to the right (if it fits) of the form. */
+.mw-ui-container #userloginForm {
+       float: left;
+       /* Override the right margin of the form to give space in case a benefits
+        * column appears to the side. */
+       margin-right: 100px;
+}
+
+div.mw-createacct-benefits-container {
+       /* Keeps this column compact and close to the form, but tends to squish contents. */
+       float: left;
+}
+
+div.mw-createacct-benefits-container h2 {
+       margin-bottom: 30px;
+}
+
+.mw-number-text.icon-edits {
+       /* @embed */
+       background: url(images/icon-edits.png) no-repeat left center;
+}
+
+.mw-number-text.icon-pages {
+       /* @embed */
+       background: url(images/icon-pages.png) no-repeat left center;
+}
+
+.mw-number-text.icon-contributors {
+       /* @embed */
+       background: url(images/icon-contributors.png) no-repeat left center;
+}
+
+/* Special font for numbers in benefits*/
+div.mw-number-text h3 {
+       top: 0;
+       margin: 0;
+       padding: 0;
+       color: #252525;
+       font-family: 'Georgia', serif;
+       font-weight: normal;
+       font-size: 2.2em;
+       line-height: 1.2;
+       text-align: center;
+}
+
+/* Contains a number and explanatory text, with space for an icon */
+div.mw-number-text {
+       display: block;
+       font-size: 1.2em;
+       color: #444;
+       margin-top: 1em;
+       /* 80px wide icon plus "margin" */
+       padding: 0 0 0 95px;
+       /* Matches max icon height, ensures icon emblem is visible */
+       min-height: 75px;
+       text-align: center;
+}
diff --git a/resources/mediawiki.special/mediawiki.special.userlogin.signup.js b/resources/mediawiki.special/mediawiki.special.userlogin.signup.js
new file mode 100644 (file)
index 0000000..c293f65
--- /dev/null
@@ -0,0 +1,34 @@
+/**
+ * JavaScript for signup form.
+ */
+( function ( mw, $ ) {
+       // When sending password by email, hide the password input fields.
+       function hidePasswordOnEmail() {
+               // Always required if checked, otherwise it depends, so we use the original
+               var $emailLabel = $( 'label[for="wpEmail"]' ),
+                       originalText = $emailLabel.text(),
+                       requiredText = mw.message( 'createacct-emailrequired' ).text(),
+                       $createByMailCheckbox = $( '#wpCreateaccountMail' ),
+                       $beforePwds = $( '.mw-row-password:first' ).prev(),
+                       $pwds;
+
+               function updateForCheckbox() {
+                       var checked = $createByMailCheckbox.prop( 'checked' );
+                       if ( checked ) {
+                               $pwds = $( '.mw-row-password' ).detach();
+                               $emailLabel.text( requiredText );
+                       } else {
+                               if ( $pwds ) {
+                                       $beforePwds.after( $pwds );
+                                       $pwds = null;
+                               }
+                               $emailLabel.text( originalText );
+                       }
+               }
+
+               $createByMailCheckbox.on( 'change', updateForCheckbox );
+               updateForCheckbox();
+       }
+
+       $( hidePasswordOnEmail );
+}( mediaWiki, jQuery ) );
diff --git a/resources/mediawiki.special/mediawiki.special.vforms.css b/resources/mediawiki.special/mediawiki.special.vforms.css
deleted file mode 100644 (file)
index 768a9c6..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * When inside the VForm style, disable the border that Vector and other skins
- * put on the div surrounding the login/create account form.
- * Also disable the margin and padding that Vector puts around the form.
- */
-.mw-ui-container #userloginForm,
-.mw-ui-container #userlogin {
-       border: 0;
-       margin: 0;
-       padding: 0;
-}
-
-/* Reposition and resize language links, which appear on a per-wiki basis */
-.mw-ui-container #languagelinks {
-       margin-bottom: 2em;
-       font-size: 0.8em;
-}
-
-/* Put some space under template's header, which may contain CAPTCHA HTML.*/
-section.mw-form-header {
-       margin-bottom: 10px;
-}
-
-/*
- * Styles for information boxes.
- */
-.mw-ui-vform .errorbox,
-.mw-ui-vform .warningbox,
-.mw-ui-vform .successbox {
-       -webkit-box-sizing: border-box;
-       -moz-box-sizing: border-box;
-       box-sizing: border-box;
-       font-size: 0.9em;
-       margin: 0 0 1em 0;
-       padding: 0.5em;
-       word-wrap: break-word;
-}
-
-/*
- * Override the right margin of the form to give space in case a benefits
- * column appears to the side.
- *
- */
-.mw-ui-container #userloginForm {
-       margin-right: 100px;
-}
index a931756..8276b1c 100644 (file)
@@ -1,9 +1,21 @@
 @import "../../settings/typography";
 @import "../../mixins/effects";
 
+// Buttons
+//
+// Styleguide 2.
+
 @buttonBorderRadius: 3px;
 
 // Button styling
+//
+// Basic button styling to be used on desktop skins. Can be any element.
+// Due to a lack of a CSS reset, the exact styling of the button depends on what type of element is used.
+//
+// Markup:
+// <div class="mw-ui-button">button.mw-ui-button</div>
+//
+// Styleguide 2.1.
 .mw-ui-button {
        // Container layout
        display: inline-block;
                cursor: default;
        }
 
-       // Button sizes and displays
+       // Styling for specific button types
        // -----------------------------------------
        &.mw-ui-big {
                font-size: @baseFontSize * 1.3;
        }
+
        &.mw-ui-block {
                display: block;
                width: 100%;
        }
+
+       // Primary buttons
+       //
+       // Do not use the mw-ui-primary class use mw-ui-constructive instead. For blue buttons
+       // use mw-ui-progressive (coming soon)
+       //
+       // Markup:
+       // <button class="mw-ui-button mw-ui-primary">mw-ui-primary</button>
+       //
+       // Styleguide 2.1.1.
+       &.mw-ui-primary {
+               .buttonColors(@agoraBlue);
+       }
+
+       // Constructive buttons
+       //
+       // Use constructive buttons for actions which result in a final action in the process that results
+       // in a change of state.
+       // e.g. save changes button
+       //
+       // Markup:
+       // <button class="mw-ui-button mw-ui-constructive">mw-ui-constructive</button>
+       //
+       // Styleguide 2.1.2.
+       &.mw-ui-constructive {
+               .buttonColors(@agoraGreen);
+       }
+
+       // Destructive buttons
+       //
+       // Use destructive buttons for actions which result in the destruction of data.
+       // e.g. deleting a page.
+       // This should not be used for cancel buttons.
+       //
+       // Markup:
+       // <button class="mw-ui-button mw-ui-destructive">mw-ui-destructive</button>
+       //
+       // Styleguide 2.1.3.
+       &.mw-ui-destructive {
+               .buttonColors(@agoraRed);
+       }
 }
 
 // This overrides an underline declaration on a:hover and a:focus in commonElements.css, which the
@@ -54,6 +108,18 @@ a.mw-ui-button {
 }
 
 // Button groups
+//
+// Group of buttons. Make sure you clear the floating after using a mw-ui-button-group.
+//
+// Markup:
+// <div class="mw-ui-button-group">
+//   <div class="mw-ui-button">A</div>
+//   <div class="mw-ui-button">B</div>
+//   <div class="mw-ui-button">C</div>
+//   <div class="mw-ui-button">D</div>
+// </div><div style="clear:both"></div>
+//
+// Styleguide 2.2.
 .mw-ui-button-group > * {
        border-radius: 0;
        float: left;
index d2554c6..66f4487 100644 (file)
 @captchaContainerWidth: 290px;
 @defaultFormWidth: @captchaContainerWidth;
 
+// Forms
+//
+// Styleguide 3.
+
+// VForm
+//
 // Style a compact vertical stacked form ("VForm") and the elements in divs
-// within it.
+// within it. See button section on guidance of how and when to use mw-ui-constructive.
+//
+// Markup:
+// <form class="mw-ui-vform">
+//   <div class="mw-ui-vform-div">This is a form example.</div>
+//   <div>
+//     <label>Username </label>
+//     <input value="input">
+//   </div>
+//   <div>
+//     <button class="mw-ui-button mw-ui-constructive">Button in vform</button>
+//   </div>
+// </form>
+//
+// Styleguide 3.1.
 .mw-ui-vform {
        .box-sizing(border-box);
 
 
        }
 
-       // HTMLForm uses error, SpecialUserlogin (login and create account) uses
-       // errorbox.
-       // TODO move errorbox from mediawiki.special.vforms.css into here.
+       // Styles for information boxes
+       //
+       // Regular HTMLForm uses .error class, some special pages like
+       // SpecialUserlogin (login and create account) use .errorbox.
+       //
+       // Markup:
+       // <form class="mw-ui-vform">
+       //   <div class="errorbox">An error occurred</div>
+       //   <div class="warningbox">A warning to be noted</div>
+       //   <div class="successbox">Action successful!</div>
+       //   <div class="error">A different kind of error</div>
+       //   <div>
+       //     <input type="text" value="input" class="mw-ui-input">
+       //   <div>
+       //   </div>
+       //     <button class="mw-ui-button">Button in vform</button>
+       //   </div>
+       // </form>
+       //
+       // Styleguide 3.1.
        .error {
                .box-sizing(border-box);
                font-size: 0.9em;
                text-shadow: 0 1px #fae3e3;
                word-wrap: break-word;
        }
+
+       .errorbox,
+       .warningbox,
+       .successbox {
+               .box-sizing(border-box);
+               font-size: 0.9em;
+               margin: 0 0 1em 0;
+               padding: 0.5em;
+               word-wrap: break-word;
+       }
+
 }
 
 // --------------------------------------------------------------------------
index a49721d..1536338 100644 (file)
@@ -2,19 +2,5 @@
 @import "../../mixins/type";
 
 .mw-ui-button {
-       // Button colors determined by function.
-       // -----------------------------------------
-       &.mw-ui-primary {
-               .buttonColors(@agoraBlue);
-       }
-
-       &.mw-ui-constructive {
-               .buttonColors(@agoraGreen);
-       }
-
-       &.mw-ui-destructive {
-               .buttonColors(@agoraRed);
-       }
-
        .vector-type();
 }
index 036db5f..05045d5 100644 (file)
@@ -3,6 +3,8 @@
  * Vector.
  */
 
+// FIXME: remove import for button styles as soon as extensions using mediawiki.ui are
+// updated to use mediawiki.ui.button as well.
 @import "components/utilities";
 @import "components/default/buttons";
 @import "components/default/forms";
diff --git a/resources/mediawiki.ui/styleguide.md b/resources/mediawiki.ui/styleguide.md
new file mode 100644 (file)
index 0000000..b7eea54
--- /dev/null
@@ -0,0 +1,26 @@
+#Wikimedia projects
+
+This is the living style guide for MediaWiki UI used in Wikimedia Projects. It is generated from existing CSS programmatically. Please use it as a reference when developing code for MediaWiki to ensure your design is consistent with others across the site. Note this document is a work in progress and subject to change.
+
+##Brand
+
+Imagine a world in which every single human being can freely share in the sum of all knowledge.
+
+Sharing knowledge is the heart of our movement. Specifically, we care about sharing the “… highest possible quality to every single person on the planet in their own language” (Jimmy Wales). The focus of our identity is being credible and is moving toward being more inviting. We want our contributors to keep contributing while our assuring our readers that the information on any of the Wikimedia projects is reliable and accurate. Our personality should embody both of those traits with a slight sense of rebellion. We are unlike traditional projects (for instance, Encyclopedias that are only created by a few select individuals). We are a global movement, and as Jimmy Wales puts it: “Wikipedia is like rock’n’roll; it’s a cultural shift."
+
+##Design Philosophy
+
+The Wikimedia movement is a global volunteer community that aims to collect and develop the world's knowledge and to make it available to everyone for free, for any purpose. “Imagine a world in which every single human being can freely share in the sum of all knowledge.” 
+
+###Credible
+We strive for the most accurate, high quality and neutral information on all Wikimedia projects. We are fact-based and honest. We do not take sides. We are fair and impartial. 
+
+###Inviting
+We are geeky about collecting and developing knowledge. We invite and welcome every single human being to share their knowledge with us and the rest of the world. We are open-minded and have a strong sense of community. Our aesthetics should be clean and encourage interaction. 
+
+###Worldly
+We are thoughtful and are aware of cultural differences. We are careful about words, color usage, and images that might offend. We are also aware of limited connectivity in some areas of the world and are thoughtful of image sizes and loading speed. 
+
+###Humble
+We are respectful of contributors’ effort and knowledge. We have a wealth of knowledge on all projects and many people to thank for that. We are humble. We are helpful and welcome help to expand the sum of all knowledge. 
+
index a347562..d084731 100644 (file)
@@ -2,6 +2,27 @@
  * Provide Agora appearance for mw-ui-* classes when using the Vector skin.
  */
 
+// FIXME: remove import for button styles as soon as extensions using mediawiki.ui are
+// updated to use mediawiki.ui.button as well.
+
+// Typography
+//
+// We prefer the usage of Georgia Bold for all headings. Georgia Regular is used to place emphasis on pull-out or short quotations. This latter usage should be used sparingly. 
+//
+// We prefer the use of Helvetica Neue Regular for body copy. Helvetiva Neue Bold for sub-headers. Pull-out quotes within the body copy should use Helvetica Neue Bold. Helvetica Neue is an not open-source font. Hence, below is a list of preferred alternate choices.
+//
+// Second choice: Helvetica
+//
+// Third choice: Arial
+//
+// Our content is predominantly text, hence visual hierarchy must be clear. Use these recommended type sizes to inform and establish information hierarchy and organization. 
+//
+// Unless if you plan to put extra attention and manually adjust spacing, avoid justifying texts and paragraphs as they are harder to read and create unnecessary visual distractions. Along with centered text, they convey a formal and less friendly environment. 
+//
+// It will be important to talk about other languages, scripts and writing direction - with the same level as importance, not as an afterthought.
+//
+// Styleguide 1.
+
 @import "components/utilities";
 @import "components/vector/buttons";
 @import "components/vector/forms";
diff --git a/resources/mediawiki/images/arrow-collapsed-ltr.svg b/resources/mediawiki/images/arrow-collapsed-ltr.svg
new file mode 100644 (file)
index 0000000..0855534
--- /dev/null
@@ -0,0 +1 @@
+<?xml version="1.0" ?><svg xmlns="http://www.w3.org/2000/svg" width="12" height="12"><path d="M4 1.533v9.671l4.752-4.871z" fill="#797979"/></svg>
\ No newline at end of file
diff --git a/resources/mediawiki/images/arrow-collapsed-rtl.svg b/resources/mediawiki/images/arrow-collapsed-rtl.svg
new file mode 100644 (file)
index 0000000..b22b3fc
--- /dev/null
@@ -0,0 +1 @@
+<?xml version="1.0" ?><svg xmlns="http://www.w3.org/2000/svg" width="12" height="12"><path d="M8 1.533v9.671l-4.752-4.871z" fill="#797979"/></svg>
\ No newline at end of file
diff --git a/resources/mediawiki/images/arrow-expanded.svg b/resources/mediawiki/images/arrow-expanded.svg
new file mode 100644 (file)
index 0000000..e255dba
--- /dev/null
@@ -0,0 +1 @@
+<?xml version="1.0" ?><svg xmlns="http://www.w3.org/2000/svg" width="12" height="12"><path d="M1.165 3.624h9.671l-4.871 4.752z" fill="#797979"/></svg>
\ No newline at end of file
index a2d4d6c..98d7e82 100644 (file)
  *
  * Example:
  *
- *     var uri = new mw.Uri( 'http://foo.com/mysite/mypage.php?quux=2' );
+ *     var uri = new mw.Uri( 'http://example.com/mysite/mypage.php?quux=2' );
  *
- *     if ( uri.host == 'foo.com' ) {
- *         uri.host = 'www.foo.com';
+ *     if ( uri.host == 'example.com' ) {
+ *         uri.host = 'foo.example.com';
  *         uri.extend( { bar: 1 } );
  *
  *         $( 'a#id1' ).attr( 'href', uri );
- *         // anchor with id 'id1' now links to http://foo.com/mysite/mypage.php?bar=1&quux=2
+ *         // anchor with id 'id1' now links to http://foo.example.com/mysite/mypage.php?bar=1&quux=2
  *
  *         $( 'a#id2' ).attr( 'href', uri.clone().extend( { bar: 3, pif: 'paf' } ) );
- *         // anchor with id 'id2' now links to http://foo.com/mysite/mypage.php?bar=3&quux=2&pif=paf
+ *         // anchor with id 'id2' now links to http://foo.example.com/mysite/mypage.php?bar=3&quux=2&pif=paf
  *     }
  *
  * Parsing here is regex based, so may not work on all URIs, but is good enough for most.
  *
  * Given a URI like
- * 'http://usr:pwd@www.test.com:81/dir/dir.2/index.htm?q1=0&&test1&test2=&test3=value+%28escaped%29&r=1&r=2#top':
+ * 'http://usr:pwd@www.example.com:81/dir/dir.2/index.htm?q1=0&&test1&test2=&test3=value+%28escaped%29&r=1&r=2#top':
  * The returned object will have the following properties:
  *
  *    protocol  'http'
  *    user      'usr'
  *    password  'pwd'
- *    host      'www.test.com'
+ *    host      'www.example.com'
  *    port      '81'
  *    path      '/dir/dir.2/index.htm'
  *    query     {
@@ -85,7 +85,7 @@
                'protocol',  // http
                'user',      // usr
                'password',  // pwd
-               'host',      // www.test.com
+               'host',      // www.example.com
                'port',      // 81
                'path',      // /dir/dir.2/index.htm
                'query',     // q1=0&&test1&test2=value (will become { q1: '0', test1: '', test2: 'value' } )
index 0bd86fe..c21dfec 100644 (file)
@@ -2,11 +2,6 @@
        Stylesheet for mediawiki.hlist module
        @author [[User:Edokter]]
  */
-.skin-monobook .hlist dl,
-.skin-modern .hlist dl,
-.skin-vector .hlist dl {
-       line-height: 1.5em;
-}
 .hlist dl,
 .hlist ol,
 .hlist ul {
index ef98136..77d8fdc 100644 (file)
@@ -1,24 +1,31 @@
 /**
-       IE 8: Add pseudo-selector class to last-child list items
+       .hlist fallbacks for IE 6, 7 and 8.
        @author [[User:Edokter]]
 */
-jQuery( function( $ ) {
-       if ( $.client.profile().name === 'msie' ) {
-               if ( $.client.profile().versionNumber === 8 ) {
-                       $( '.hlist' ).find( 'dd:last-child, dt:last-child, li:last-child' )
-                               .addClass( 'hlist-last-child' );
+( function ( mw, $ ) {
+       var profile = $.client.profile();
+
+       if ( profile.name === 'msie' ) {
+               if ( profile.versionNumber === 8 ) {
+                       /* IE 8: Add pseudo-selector class to last-child list items */
+                       mw.hook( 'wikipage.content' ).add( function ( $content ) {
+                               $content.find( '.hlist' ).find( 'dd:last-child, dt:last-child, li:last-child' )
+                                       .addClass( 'hlist-last-child' );
+                       } );
                }
+               else if ( profile.versionNumber <= 7 ) {
                        /* IE 7 and below: Generate interpuncts and parentheses */
-               if ( $.client.profile().versionNumber <= 7 ) {
-                       var $hlists = $( '.hlist' );
-                       $hlists.find( 'dt:not(:last-child)' )
-                               .append( ': ' );
-                       $hlists.find( 'dd:not(:last-child)' )
-                               .append( '<b>·</b> ' );
-                       $hlists.find( 'li:not(:last-child)' )
-                               .append( '<b>·</b> ' );
-                       $hlists.find( 'dl dl, dl ol, dl ul, ol dl, ol ol, ol ul, ul dl, ul ol, ul ul' )
-                               .prepend( '( ' ).append( ') ' );
+                       mw.hook( 'wikipage.content' ).add( function ( $content ) {
+                               var $hlists = $content.find( '.hlist' );
+                               $hlists.find( 'dt:not(:last-child)' )
+                                       .append( ': ' );
+                               $hlists.find( 'dd:not(:last-child)' )
+                                       .append( '<b>·</b> ' );
+                               $hlists.find( 'li:not(:last-child)' )
+                                       .append( '<b>·</b> ' );
+                               $hlists.find( 'dl dl, dl ol, dl ul, ol dl, ol ol, ol ul, ul dl, ul ol, ul ul' )
+                                       .prepend( '( ' ).append( ') ' );
+                       } );
                }
        }
-} );
+}( mediaWiki, jQuery ) );
diff --git a/resources/mediawiki/mediawiki.icon.css b/resources/mediawiki/mediawiki.icon.css
deleted file mode 100644 (file)
index f61b725..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-/* General-purpose icons via CSS. Classes here should be named "mw-icon-*". */
-
-/* For the collapsed and expanded arrows, we also provide selectors to make it
- * easy to use them with jquery.makeCollapsible. */
-.mw-icon-arrow-collapsed,
-.mw-collapsible-arrow.mw-collapsible-toggle-collapsed {
-       /* @embed */
-       background: url(images/arrow-collapsed-ltr.png) no-repeat left bottom;
-}
-
-.mw-icon-arrow-expanded,
-.mw-collapsible-arrow.mw-collapsible-toggle-expanded {
-       /* @embed */
-       background: url(images/arrow-expanded.png) no-repeat left bottom;
-}
diff --git a/resources/mediawiki/mediawiki.icon.less b/resources/mediawiki/mediawiki.icon.less
new file mode 100644 (file)
index 0000000..49f0f70
--- /dev/null
@@ -0,0 +1,19 @@
+/* General-purpose icons via CSS. Classes here should be named "mw-icon-*". */
+
+@import "mediawiki.mixins";
+
+/* For the collapsed and expanded arrows, we also provide selectors to make it
+ * easy to use them with jquery.makeCollapsible. */
+.mw-icon-arrow-collapsed,
+.mw-collapsible-arrow.mw-collapsible-toggle-collapsed {
+       .background-image-svg('images/arrow-collapsed-ltr.svg', 'images/arrow-collapsed-ltr.png');
+       background-repeat: no-repeat;
+       background-position: left bottom;
+}
+
+.mw-icon-arrow-expanded,
+.mw-collapsible-arrow.mw-collapsible-toggle-expanded {
+       .background-image-svg('images/arrow-expanded.svg', 'images/arrow-expanded.png');
+       background-repeat: no-repeat;
+       background-position: left bottom;
+}
index 7764bea..f3bb414 100644 (file)
@@ -12,7 +12,9 @@ var mw = ( function ( $, undefined ) {
        /* Private Members */
 
        var hasOwn = Object.prototype.hasOwnProperty,
-               slice = Array.prototype.slice;
+               slice = Array.prototype.slice,
+               trackCallbacks = $.Callbacks( 'memory' ),
+               trackQueue = [];
 
        /**
         * Log a message to window.console, if possible. Useful to force logging of some
@@ -325,6 +327,70 @@ var mw = ( function ( $, undefined ) {
        return {
                /* Public Members */
 
+               /**
+                * Get the current time, measured in milliseconds since January 1, 1970 (UTC).
+                *
+                * On browsers that implement the Navigation Timing API, this function will produce floating-point
+                * values with microsecond precision that are guaranteed to be monotonic. On all other browsers,
+                * it will fall back to using `Date`.
+                *
+                * @returns {number} Current time
+                */
+               now: ( function () {
+                       var perf = window.performance,
+                               navStart = perf && perf.timing && perf.timing.navigationStart;
+                       return navStart && typeof perf.now === 'function' ?
+                               function () { return navStart + perf.now(); } :
+                               function () { return +new Date(); };
+               }() ),
+
+               /**
+                * Track an analytic event.
+                *
+                * This method provides a generic means for MediaWiki JavaScript code to capture state
+                * information for analysis. Each logged event specifies a string topic name that describes
+                * the kind of event that it is. Topic names consist of dot-separated path components,
+                * arranged from most general to most specific. Each path component should have a clear and
+                * well-defined purpose.
+                *
+                * Data handlers are registered via `mw.trackSubscribe`, and receive the full set of
+                * events that match their subcription, including those that fired before the handler was
+                * bound.
+                *
+                * @param {string} topic Topic name
+                * @param {Object} [data] Data describing the event, encoded as an object
+                */
+               track: function ( topic, data ) {
+                       trackQueue.push( { topic: topic, timeStamp: mw.now(), data: data } );
+                       trackCallbacks.fire( trackQueue );
+               },
+
+               /**
+                * Register a handler for subset of analytic events, specified by topic
+                *
+                * Handlers will be called once for each tracked event, including any events that fired before the
+                * handler was registered; 'this' is set to a plain object with a 'timeStamp' property indicating
+                * the exact time at which the event fired, a string 'topic' property naming the event, and a
+                * 'data' property which is an object of event-specific data. The event topic and event data are
+                * also passed to the callback as the first and second arguments, respectively.
+                *
+                * @param {string} topic Handle events whose name starts with this string prefix
+                * @param {Function} callback Handler to call for each matching tracked event
+                */
+               trackSubscribe: function ( topic, callback ) {
+                       var seen = 0;
+
+                       trackCallbacks.add( function ( trackQueue ) {
+                               var event;
+                               for ( ; seen < trackQueue.length; seen++ ) {
+                                       event = trackQueue[ seen ];
+                                       if ( event.topic.indexOf( topic ) === 0 ) {
+                                               callback.call( event, event.topic, event.data );
+                                       }
+                               }
+                       } );
+               },
+
                /**
                 * Dummy placeholder for {@link mw.log}
                 * @method
@@ -1894,6 +1960,12 @@ var mw = ( function ( $, undefined ) {
                                                                JSON.stringify( descriptor.style ),
                                                                JSON.stringify( descriptor.messages )
                                                        ];
+                                                       // Attempted workaround for a possible Opera bug (bug 57567).
+                                                       // This regex should never match under sane conditions.
+                                                       if ( /^\s*\(/.test( args[1] ) ) {
+                                                               args[1] = 'function' + args[1];
+                                                               log( 'Detected malformed function stringification (bug 57567)' );
+                                                       }
                                                } catch ( e ) {
                                                        return;
                                                }
index 7f07862..8fd8496 100644 (file)
 
                // Compatibility map
                map = {
-                       browsers: {
-                               // Left-to-right languages
-                               ltr: {
-                                       // SimpleSearch is broken in Opera < 9.6
-                                       opera: [['>=', 9.6]],
-                                       docomo: false,
-                                       blackberry: false,
-                                       ipod: false,
-                                       iphone: false
-                               },
-                               // Right-to-left languages
-                               rtl: {
-                                       opera: [['>=', 9.6]],
-                                       docomo: false,
-                                       blackberry: false,
-                                       ipod: false,
-                                       iphone: false
-                               }
-                       }
+                       // SimpleSearch is broken in Opera < 9.6
+                       opera: [['>=', 9.6]],
+                       docomo: false,
+                       blackberry: false,
+                       ipod: false,
+                       iphone: false
                };
 
                if ( !$.client.test( map ) ) {
diff --git a/resources/package.json b/resources/package.json
new file mode 100644 (file)
index 0000000..a1722b5
--- /dev/null
@@ -0,0 +1,13 @@
+{
+       "name": "mediawiki-ui-dependencies",
+       "description": "Node.js dependencies used for KSS generation",
+       "version": "0.0.1",
+       "dependencies": {
+               "kss": ">=0.3.6"
+       },
+       "repository" : {
+               "type" : "git",
+               "url" : "https://gerrit.wikimedia.org/r/p/mediawiki/core.git"
+       }
+
+}
diff --git a/resources/scripts/nodecheck.sh b/resources/scripts/nodecheck.sh
new file mode 100755 (executable)
index 0000000..3ee0f83
--- /dev/null
@@ -0,0 +1,8 @@
+#!/usr/bin/env bash
+if command -v npm > /dev/null ; then
+  npm install
+else
+  echo "You need to install Node.JS!"
+  echo "See http://nodejs.org/"
+  exit 1
+fi
diff --git a/resources/styleguide-template/index.html b/resources/styleguide-template/index.html
new file mode 100644 (file)
index 0000000..99f3e4f
--- /dev/null
@@ -0,0 +1,60 @@
+<!DOCTYPE html>
+<html class="no-js" lang="en">
+<head>
+       <meta charset="utf-8">
+       <title>MediaWiki Living Styleguide</title>
+       <meta name="description" content="">
+       <meta name="generator" content="kss-node" />
+       <meta name="viewport" content="width=device-width">
+       <link rel="stylesheet" href="public/kss.css">
+       <link rel="stylesheet" href="public/style.css">
+</head>
+<body><div id="kss-wrapper">
+       <header id="kss-header">
+               <hgroup><h1>MediaWiki Living Styleguide</h1></hgroup>
+       </header>
+       <nav class="content">
+               <ul>
+               <li><a href="index.html">0.0: Overview</a></li>
+               {{#eachRoot}}
+               <li>
+                       <a href="section-{{reference}}.html">{{reference}}.0: {{header}}</a>
+               </li>
+               {{/eachRoot}}
+               </ul>
+       </nav>
+       <article>
+               {{#if overview}}
+                       {{html overview}}
+               {{else}}
+                       {{#eachSection rootNumber}}
+                               {{#whenDepth 1}}
+                                       <h1>{{ reference }}.0 - {{ header }}</h1>
+                               {{else}}
+                                       {{#whenDepth 2}}
+                                       <h2>{{ reference }} - {{ header }}</h2>
+                                       {{/whenDepth}}
+                                       {{#whenDepth 3}}
+                                       <h3>{{ reference }} - {{ header }}</h3>
+                                       {{/whenDepth}}
+                               {{/whenDepth}}
+                               {{#ifAny markup modifiers}}
+                                               <div>{{html description}}</div>
+                                               <strong>Default styling</strong><br>
+                                               {{modifierMarkup}}
+                                               {{#eachModifier}}
+                                               {{html description}}<br>
+                                               <p>{{name}}</p>
+                                               {{modifierMarkup}}
+                                               {{/eachModifier}}
+                                               <pre class="prettyprint lang-html">{{markup}}</pre>
+                               {{else}}
+                                               {{#if description}}
+                                                       {{html description}}
+                                               {{/if}}
+                               {{/ifAny}}
+                       {{/eachSection}}
+               {{/if}}
+       </article>
+</div></body>
+</html>
diff --git a/resources/styleguide-template/public/kss.less b/resources/styleguide-template/public/kss.less
new file mode 100644 (file)
index 0000000..431303d
--- /dev/null
@@ -0,0 +1,24 @@
+header {
+       padding: .8em 16px 0;
+}
+
+nav {
+       float: left;
+       width: 200px;
+}
+
+article {
+       margin-left: 250px;
+}
+
+.content.kss-no-margin {
+       margin: 0;
+}
+
+// FIXME: Remove when typography module in mediawiki-ui
+body {
+       font-family: "Nimbus Sans L", "Liberation Sans", "Helvetica Neue", "Helvetica", "Arial", sans-serif;
+}
+h1,h2,h3,h4,h5 {
+       font-family: "DejaVu Serif", Georgia, serif;
+}
diff --git a/resources/styleguide-template/public/less.js b/resources/styleguide-template/public/less.js
new file mode 100644 (file)
index 0000000..89b7637
--- /dev/null
@@ -0,0 +1,9 @@
+//
+// LESS - Leaner CSS v1.2.1
+// http://lesscss.org
+// 
+// Copyright (c) 2009-2011, Alexis Sellier
+// Licensed under the Apache 2.0 License.
+//
+(function(a,b){function c(b){return a.less[b.split("/")[1]]}function m(){var a=document.getElementsByTagName("style");for(var b=0;b<a.length;b++)a[b].type.match(k)&&(new d.Parser).parse(a[b].innerHTML||"",function(c,d){var e=d.toCSS(),f=a[b];f.type="text/css",f.styleSheet?f.styleSheet.cssText=e:f.innerHTML=e})}function n(a,b){for(var c=0;c<d.sheets.length;c++)o(d.sheets[c],a,b,d.sheets.length-(c+1))}function o(b,c,e,f){var g=a.location.href.replace(/[#?].*$/,""),i=b.href.replace(/\?.*$/,""),j=h&&h.getItem(i),k=h&&h.getItem(i+":timestamp"),l={css:j,timestamp:k};/^(https?|file):/.test(i)||(i.charAt(0)=="/"?i=a.location.protocol+"//"+a.location.host+i:i=g.slice(0,g.lastIndexOf("/")+1)+i);var m=i.match(/([^\/]+)$/)[1];s(b.href,b.type,function(a,g){if(!e&&l&&g&&(new Date(g)).valueOf()===(new Date(l.timestamp)).valueOf())r(l.css,b),c(null,b,{local:!0,remaining:f});else try{(new d.Parser({optimization:d.optimization,paths:[i.replace(/[\w\.-]+$/,"")],mime:b.type,filename:m})).parse(a,function(d,e){if(d)return w(d,i);try{c(d,e,a,b,{local:!1,lastModified:g,remaining:f}),u(document.getElementById("less-error-message:"+q(i)))}catch(d){w(d,i)}})}catch(h){w(h,i)}},function(a,b){throw new Error("Couldn't load "+b+" ("+a+")")})}function q(a){return a.replace(/^[a-z]+:\/\/?[^\/]+/,"").replace(/^\//,"").replace(/\?.*$/,"").replace(/\.[^\.\/]+$/,"").replace(/[^\.\w-]+/g,"-").replace(/\./g,":")}function r(a,b,c){var d,e=b.href?b.href.replace(/\?.*$/,""):"",f="less:"+(b.title||q(e));(d=document.getElementById(f))===null&&(d=document.createElement("style"),d.type="text/css",d.media=b.media||"screen",d.id=f,document.getElementsByTagName("head")[0].appendChild(d));if(d.styleSheet)try{d.styleSheet.cssText=a}catch(g){throw new Error("Couldn't reassign styleSheet.cssText.")}else(function(a){d.childNodes.length>0?d.firstChild.nodeValue!==a.nodeValue&&d.replaceChild(a,d.firstChild):d.appendChild(a)})(document.createTextNode(a));c&&h&&(v("saving "+e+" to cache."),h.setItem(e,a),h.setItem(e+":timestamp",c))}function s(a,b,c,e){function i(b,c,d){b.status>=200&&b.status<300?c(b.responseText,b.getResponseHeader("Last-Modified")):typeof d=="function"&&d(b.status,a)}var f=t(),h=g?!1:d.async;typeof f.overrideMimeType=="function"&&f.overrideMimeType("text/css"),f.open("GET",a,h),f.setRequestHeader("Accept",b||"text/x-less, text/css; q=0.9, */*; q=0.5"),f.send(null),g?f.status===0||f.status>=200&&f.status<300?c(f.responseText):e(f.status,a):h?f.onreadystatechange=function(){f.readyState==4&&i(f,c,e)}:i(f,c,e)}function t(){if(a.XMLHttpRequest)return new XMLHttpRequest;try{return new ActiveXObject("MSXML2.XMLHTTP.3.0")}catch(b){return v("browser doesn't support AJAX."),null}}function u(a){return a&&a.parentNode.removeChild(a)}function v(a){d.env=="development"&&typeof console!="undefined"&&console.log("less: "+a)}function w(a,b){var c="less-error-message:"+q(b),e='<li><label>{line}</label><pre class="{class}">{content}</pre></li>',f=document.createElement("div"),g,h,i=[],j=a.filename||b;f.id=c,f.className="less-error-message",h="<h3>"+(a.message||"There is an error in your .less file")+"</h3>"+'<p>in <a href="'+j+'">'+j+"</a> ";var k=function(a,b,c){a.extract[b]&&i.push(e.replace(/\{line\}/,parseInt(a.line)+(b-1)).replace(/\{class\}/,c).replace(/\{content\}/,a.extract[b]))};a.stack?h+="<br/>"+a.stack.split("\n").slice(1).join("<br/>"):a.extract&&(k(a,0,""),k(a,1,"line"),k(a,2,""),h+="on line "+a.line+", column "+(a.column+1)+":</p>"+"<ul>"+i.join("")+"</ul>"),f.innerHTML=h,r([".less-error-message ul, .less-error-message li {","list-style-type: none;","margin-right: 15px;","padding: 4px 0;","margin: 0;","}",".less-error-message label {","font-size: 12px;","margin-right: 15px;","padding: 4px 0;","color: #cc7777;","}",".less-error-message pre {","color: #dd6666;","padding: 4px 0;","margin: 0;","display: inline-block;","}",".less-error-message pre.line {","color: #ff0000;","}",".less-error-message h3 {","font-size: 20px;","font-weight: bold;","padding: 15px 0 5px 0;","margin: 0;","}",".less-error-message a {","color: #10a","}",".less-error-message .error {","color: red;","font-weight: bold;","padding-bottom: 2px;","border-bottom: 1px dashed red;","}"].join("\n"),{title:"error-message"}),f.style.cssText=["font-family: Arial, sans-serif","border: 1px solid #e00","background-color: #eee","border-radius: 5px","-webkit-border-radius: 5px","-moz-border-radius: 5px","color: #e00","padding: 15px","margin-bottom: 15px"].join(";"),d.env=="development"&&(g=setInterval(function(){document.body&&(document.getElementById(c)?document.body.replaceChild(f,document.getElementById(c)):document.body.insertBefore(f,document.body.firstChild),clearInterval(g))},10))}Array.isArray||(Array.isArray=function(a){return Object.prototype.toString.call(a)==="[object Array]"||a instanceof Array}),Array.prototype.forEach||(Array.prototype.forEach=function(a,b){var c=this.length>>>0;for(var d=0;d<c;d++)d in this&&a.call(b,this[d],d,this)}),Array.prototype.map||(Array.prototype.map=function(a){var b=this.length>>>0,c=new Array(b),d=arguments[1];for(var e=0;e<b;e++)e in this&&(c[e]=a.call(d,this[e],e,this));return c}),Array.prototype.filter||(Array.prototype.filter=function(a){var b=[],c=arguments[1];for(var d=0;d<this.length;d++)a.call(c,this[d])&&b.push(this[d]);return b}),Array.prototype.reduce||(Array.prototype.reduce=function(a){var b=this.length>>>0,c=0;if(b===0&&arguments.length===1)throw new TypeError;if(arguments.length>=2)var d=arguments[1];else do{if(c in this){d=this[c++];break}if(++c>=b)throw new TypeError}while(!0);for(;c<b;c++)c in this&&(d=a.call(null,d,this[c],c,this));return d}),Array.prototype.indexOf||(Array.prototype.indexOf=function(a){var b=this.length,c=arguments[1]||0;if(!b)return-1;if(c>=b)return-1;c<0&&(c+=b);for(;c<b;c++){if(!Object.prototype.hasOwnProperty.call(this,c))continue;if(a===this[c])return c}return-1}),Object.keys||(Object.keys=function(a){var b=[];for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&b.push(c);return b}),String.prototype.trim||(String.prototype.trim=function(){return String(this).replace(/^\s\s*/,"").replace(/\s\s*$/,"")});var d,f;typeof environment=="object"&&{}.toString.call(environment)==="[object Environment]"?(typeof a=="undefined"?d={}:d=a.less={},f=d.tree={},d.mode="rhino"):typeof a=="undefined"?(d=exports,f=c("./tree"),d.mode="node"):(typeof a.less=="undefined"&&(a.less={}),d=a.less,f=a.less.tree={},d.mode="browser"),d.Parser=function(b){function t(){j=m[i],k=h,n=h}function u(){m[i]=j,h=k,n=h}function v(){h>n&&(m[i]=m[i].slice(h-n),n=h)}function w(a){var b,c,d,e,f,j,k,l;if(a instanceof Function)return a.call(o.parsers);if(typeof a=="string")b=g.charAt(h)===a?a:null,d=1,v();else{v();if(!(b=a.exec(m[i])))return null;d=b[0].length}if(b){l=h+=d,j=h+m[i].length-d;while(h<j){e=g.charCodeAt(h);if(e!==32&&e!==10&&e!==9)break;h++}return m[i]=m[i].slice(d+(h-l)),n=h,m[i].length===0&&i<m.length-1&&i++,typeof b=="string"?b:b.length===1?b[0]:b}}function x(a,b){var c=w(a);if(!!c)return c;y(b||(typeof a=="string"?"expected '"+a+"' got '"+g.charAt(h)+"'":"unexpected token"))}function y(a,b){throw{index:h,type:b||"Syntax",message:a}}function z(a){return typeof a=="string"?g.charAt(h)===a:a.test(m[i])?!0:!1}function A(a,b){return a.filename&&b.filename&&a.filename!==b.filename?o.imports.contents[a.filename]:g}function B(a,b){for(var c=a,d=-1;c>=0&&b.charAt(c)!=="\n";c--)d++;return{line:typeof a=="number"?(b.slice(0,a).match(/\n/g)||"").length:null,column:d}}function C(a,b){var c=A(a,b),d=B(a.index,c),e=d.line,f=d.column,g=c.split("\n");this.type=a.type||"Syntax",this.message=a.message,this.filename=a.filename||b.filename,this.index=a.index,this.line=typeof e=="number"?e+1:null,this.callLine=a.call&&B(a.call,c)+1,this.callExtract=g[B(a.call,c)],this.stack=a.stack,this.column=f,this.extract=[g[e-1],g[e],g[e+1]]}var g,h,i,j,k,l,m,n,o,q=this,r=function(){},s=this.imports={paths:b&&b.paths||[],queue:[],files:{},contents:{},mime:b&&b.mime,error:null,push:function(a,c){var e=this;this.queue.push(a),d.Parser.importer(a,this.paths,function(b,d,f){e.queue.splice(e.queue.indexOf(a),1),e.files[a]=d,e.contents[a]=f,b&&!e.error&&(e.error=b),c(b,d),e.queue.length===0&&r()},b)}};return this.env=b=b||{},this.optimization="optimization"in this.env?this.env.optimization:1,this.env.filename=this.env.filename||null,o={imports:s,parse:function(a,e){var j,k,p,q,s,t,u=[],v,x=null;h=i=n=l=0,m=[],g=a.replace(/\r\n/g,"\n"),m=function(a){var c=0,d=/[^"'`\{\}\/\(\)]+/g,e=/\/\*(?:[^*]|\*+[^\/*])*\*+\/|\/\/.*/g,f=0,h,i=a[0],j,k;for(var l=0,m,n;l<g.length;l++){d.lastIndex=l,(h=d.exec(g))&&h.index===l&&(l+=h[0].length,i.push(h[0])),m=g.charAt(l),e.lastIndex=l,!k&&!j&&m==="/"&&(n=g.charAt(l+1),(n==="/"||n==="*")&&(h=e.exec(g))&&h.index===l&&(l+=h[0].length,i.push(h[0]),m=g.charAt(l)));if(m==="{"&&!k&&!j)f++,i.push(m);else if(m==="}"&&!k&&!j)f--,i.push(m),a[++c]=i=[];else if(m==="("&&!k&&!j)i.push(m),j=!0;else if(m===")"&&!k&&j)i.push(m),j=!1;else{if(m==='"'||m==="'"||m==="`")k?k=k===m?!1:k:k=m;i.push(m)}}if(f>0)throw{type:"Syntax",message:"Missing closing `}`",filename:b.filename};return a.map(function(a){return a.join("")})}([[]]);try{j=new f.Ruleset([],w(this.parsers.primary)),j.root=!0}catch(y){return e(new C(y,b))}j.toCSS=function(a){var e,g,h;return function(e,g){var h=[],i;e=e||{},typeof g=="object"&&!Array.isArray(g)&&(g=Object.keys(g).map(function(a){var b=g[a];return b instanceof f.Value||(b instanceof f.Expression||(b=new f.Expression([b])),b=new f.Value([b])),new f.Rule("@"+a,b,!1,0)}),h=[new f.Ruleset(null,g)]);try{var j=a.call(this,{frames:h}).toCSS([],{compress:e.compress||!1})}catch(k){throw new C(k,b)}if(i=o.imports.error)throw i instanceof C?i:new C(i,b);return e.yuicompress&&d.mode==="node"?c("./cssmin").compressor.cssmin(j):e.compress?j.replace(/(\s)+/g,"$1"):j}}(j.eval);if(h<g.length-1){h=l,t=g.split("\n"),s=(g.slice(0,h).match(/\n/g)||"").length+1;for(var z=h,A=-1;z>=0&&g.charAt(z)!=="\n";z--)A++;x={type:"Parse",message:"Syntax Error on line "+s,index:h,filename:b.filename,line:s,column:A,extract:[t[s-2],t[s-1],t[s]]}}this.imports.queue.length>0?r=function(){e(x,j)}:e(x,j)},parsers:{primary:function(){var a,b=[];while((a=w(this.mixin.definition)||w(this.rule)||w(this.ruleset)||w(this.mixin.call)||w(this.comment)||w(this.directive))||w(/^[\s\n]+/))a&&b.push(a);return b},comment:function(){var a;if(g.charAt(h)!=="/")return;if(g.charAt(h+1)==="/")return new f.Comment(w(/^\/\/.*/),!0);if(a=w(/^\/\*(?:[^*]|\*+[^\/*])*\*+\/\n?/))return new f.Comment(a)},entities:{quoted:function(){var a,b=h,c;g.charAt(b)==="~"&&(b++,c=!0);if(g.charAt(b)!=='"'&&g.charAt(b)!=="'")return;c&&w("~");if(a=w(/^"((?:[^"\\\r\n]|\\.)*)"|'((?:[^'\\\r\n]|\\.)*)'/))return new f.Quoted(a[0],a[1]||a[2],c)},keyword:function(){var a;if(a=w(/^[_A-Za-z-][_A-Za-z0-9-]*/))return f.colors.hasOwnProperty(a)?new f.Color(f.colors[a].slice(1)):new f.Keyword(a)},call:function(){var a,c,d=h;if(!(a=/^([\w-]+|%|progid:[\w\.]+)\(/.exec(m[i])))return;a=a[1].toLowerCase();if(a==="url")return null;h+=a.length;if(a==="alpha")return w(this.alpha);w("("),c=w(this.entities.arguments);if(!w(")"))return;if(a)return new f.Call(a,c,d,b.filename)},arguments:function(){var a=[],b;while(b=w(this.entities.assignment)||w(this.expression)){a.push(b);if(!w(","))break}return a},literal:function(){return w(this.entities.dimension)||w(this.entities.color)||w(this.entities.quoted)},assignment:function(){var a,b;if((a=w(/^\w+(?=\s?=)/i))&&w("=")&&(b=w(this.entity)))return new f.Assignment(a,b)},url:function(){var a;if(g.charAt(h)!=="u"||!w(/^url\(/))return;return a=w(this.entities.quoted)||w(this.entities.variable)||w(this.entities.dataURI)||w(/^[-\w%@$\/.&=:;#+?~]+/)||"",x(")"),new f.URL(a.value||a.data||a instanceof f.Variable?a:new f.Anonymous(a),s.paths)},dataURI:function(){var a;if(w(/^data:/)){a={},a.mime=w(/^[^\/]+\/[^,;)]+/)||"",a.charset=w(/^;\s*charset=[^,;)]+/)||"",a.base64=w(/^;\s*base64/)||"",a.data=w(/^,\s*[^)]+/);if(a.data)return a}},variable:function(){var a,c=h;if(g.charAt(h)==="@"&&(a=w(/^@@?[\w-]+/)))return new f.Variable(a,c,b.filename)},color:function(){var a;if(g.charAt(h)==="#"&&(a=w(/^#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})/)))return new f.Color(a[1])},dimension:function(){var a,b=g.charCodeAt(h);if(b>57||b<45||b===47)return;if(a=w(/^(-?\d*\.?\d+)(px|%|em|rem|pc|ex|in|deg|s|ms|pt|cm|mm|rad|grad|turn)?/))return new f.Dimension(a[1],a[2])},javascript:function(){var a,b=h,c;g.charAt(b)==="~"&&(b++,c=!0);if(g.charAt(b)!=="`")return;c&&w("~");if(a=w(/^`([^`]*)`/))return new f.JavaScript(a[1],h,c)}},variable:function(){var a;if(g.charAt(h)==="@"&&(a=w(/^(@[\w-]+)\s*:/)))return a[1]},shorthand:function(){var a,b;if(!z(/^[@\w.%-]+\/[@\w.-]+/))return;if((a=w(this.entity))&&w("/")&&(b=w(this.entity)))return new f.Shorthand(a,b)},mixin:{call:function(){var a=[],c,d,e,i=h,j=g.charAt(h),k=!1;if(j!=="."&&j!=="#")return;while(c=w(/^[#.](?:[\w-]|\\(?:[a-fA-F0-9]{1,6} ?|[^a-fA-F0-9]))+/))a.push(new f.Element(d,c,h)),d=w(">");w("(")&&(e=w(this.entities.arguments))&&w(")"),w(this.important)&&(k=!0);if(a.length>0&&(w(";")||z("}")))return new f.mixin.Call(a,e,i,b.filename,k)},definition:function(){var a,b=[],c,d,e,i,j;if(g.charAt(h)!=="."&&g.charAt(h)!=="#"||z(/^[^{]*(;|})/))return;t();if(c=w(/^([#.](?:[\w-]|\\(?:[a-fA-F0-9]{1,6} ?|[^a-fA-F0-9]))+)\s*\(/)){a=c[1];while(e=w(this.entities.variable)||w(this.entities.literal)||w(this.entities.keyword)){e instanceof f.Variable?w(":")?(i=x(this.expression,"expected expression"),b.push({name:e.name,value:i})):b.push({name:e.name}):b.push({value:e});if(!w(","))break}x(")"),w(/^when/)&&(j=x(this.conditions,"expected condition")),d=w(this.block);if(d)return new f.mixin.Definition(a,b,d,j);u()}}},entity:function(){return w(this.entities.literal)||w(this.entities.variable)||w(this.entities.url)||w(this.entities.call)||w(this.entities.keyword)||w(this.entities.javascript)||w(this.comment)},end:function(){return w(";")||z("}")},alpha:function(){var a;if(!w(/^\(opacity=/i))return;if(a=w(/^\d+/)||w(this.entities.variable))return x(")"),new f.Alpha(a)},element:function(){var a,b,c,d;c=w(this.combinator),a=w(/^(?:\d+\.\d+|\d+)%/)||w(/^(?:[.#]?|:*)(?:[\w-]|\\(?:[a-fA-F0-9]{1,6} ?|[^a-fA-F0-9]))+/)||w("*")||w(this.attribute)||w(/^\([^)@]+\)/),a||w("(")&&(d=w(this.entities.variable))&&w(")")&&(a=new f.Paren(d));if(a)return new f.Element(c,a,h);if(c.value&&c.value.charAt(0)==="&")return new f.Element(c,null,h)},combinator:function(){var a,b=g.charAt(h);if(b===">"||b==="+"||b==="~"){h++;while(g.charAt(h)===" ")h++;return new f.Combinator(b)}if(b==="&"){a="&",h++,g.charAt(h)===" "&&(a="& ");while(g.charAt(h)===" ")h++;return new f.Combinator(a)}if(b===":"&&g.charAt(h+1)===":"){h+=2;while(g.charAt(h)===" ")h++;return new f.Combinator("::")}return g.charAt(h-1)===" "?new f.Combinator(" "):new f.Combinator(null)},selector:function(){var a,b,c=[],d,e;while(b=w(this.element)){d=g.charAt(h),c.push(b);if(d==="{"||d==="}"||d===";"||d===",")break}if(c.length>0)return new f.Selector(c)},tag:function(){return w(/^[a-zA-Z][a-zA-Z-]*[0-9]?/)||w("*")},attribute:function(){var a="",b,c,d;if(!w("["))return;if(b=w(/^[a-zA-Z-]+/)||w(this.entities.quoted))(d=w(/^[|~*$^]?=/))&&(c=w(this.entities.quoted)||w(/^[\w-]+/))?a=[b,d,c.toCSS?c.toCSS():c].join(""):a=b;if(!w("]"))return;if(a)return"["+a+"]"},block:function(){var a;if(w("{")&&(a=w(this.primary))&&w("}"))return a},ruleset:function(){var a=[],b,c,d;t();while(b=w(this.selector)){a.push(b),w(this.comment);if(!w(","))break;w(this.comment)}if(a.length>0&&(c=w(this.block)))return new f.Ruleset(a,c);l=h,u()},rule:function(){var a,b,c=g.charAt(h),d,e;t();if(c==="."||c==="#"||c==="&")return;if(a=w(this.variable)||w(this.property)){a.charAt(0)!="@"&&(e=/^([^@+\/'"*`(;{}-]*);/.exec(m[i]))?(h+=e[0].length-1,b=new f.Anonymous(e[1])):a==="font"?b=w(this.font):b=w(this.value),d=w(this.important);if(b&&w(this.end))return new f.Rule(a,b,d,k);l=h,u()}},"import":function(){var a,b,c=h;if(w(/^@import\s+/)&&(a=w(this.entities.quoted)||w(this.entities.url))){b=w(this.mediaFeatures);if(w(";"))return new f.Import(a,s,b,c)}},mediaFeature:function(){var a=[];do if(e=w(this.entities.keyword))a.push(e);else if(w("(")){p=w(this.property),e=w(this.entity);if(!w(")"))return null;if(p&&e)a.push(new f.Paren(new f.Rule(p,e,null,h,!0)));else{if(!e)return null;a.push(new f.Paren(e))}}while(e);if(a.length>0)return new f.Expression(a)},mediaFeatures:function(){var a,b=[];while(a=w(this.mediaFeature)){b.push(a);if(!w(","))break}return b.length>0?b:null},media:function(){var a;if(w(/^@media/)){a=w(this.mediaFeatures);if(rules=w(this.block))return new f.Directive("@media",rules,a)}},directive:function(){var a,b,c,d,e,i;if(g.charAt(h)!=="@")return;if(b=w(this["import"])||w(this.media))return b;if(a=w(/^@page|@keyframes/)||w(/^@(?:-webkit-|-moz-|-o-|-ms-)[a-z0-9-]+/)){d=(w(/^[^{]+/)||"").trim();if(c=w(this.block))return new f.Directive(a+" "+d,c)}else if(a=w(/^@[-a-z]+/))if(a==="@font-face"){if(c=w(this.block))return new f.Directive(a,c)}else if((b=w(this.entity))&&w(";"))return new f.Directive(a,b)},font:function(){var a=[],b=[],c,d,e,g;while(g=w(this.shorthand)||w(this.entity))b.push(g);a.push(new f.Expression(b));if(w(","))while(g=w(this.expression)){a.push(g);if(!w(","))break}return new f.Value(a)},value:function(){var a,b=[],c;while(a=w(this.expression)){b.push(a);if(!w(","))break}if(b.length>0)return new f.Value(b)},important:function(){if(g.charAt(h)==="!")return w(/^! *important/)},sub:function(){var a;if(w("(")&&(a=w(this.expression))&&w(")"))return a},multiplication:function(){var a,b,c,d;if(a=w(this.operand)){while(!z(/^\/\*/)&&(c=w("/")||w("*"))&&(b=w(this.operand)))d=new f.Operation(c,[d||a,b]);return d||a}},addition:function(){var a,b,c,d;if(a=w(this.multiplication)){while((c=w(/^[-+]\s+/)||g.charAt(h-1)!=" "&&(w("+")||w("-")))&&(b=w(this.multiplication)))d=new f.Operation(c,[d||a,b]);return d||a}},conditions:function(){var a,b,c=h,d;if(a=w(this.condition)){while(w(",")&&(b=w(this.condition)))d=new f.Condition("or",d||a,b,c);return d||a}},condition:function(){var a,b,c,d,e=h,g=!1;w(/^not/)&&(g=!0),x("(");if(a=w(this.addition)||w(this.entities.keyword)||w(this.entities.quoted))return(d=w(/^(?:>=|=<|[<=>])/))?(b=w(this.addition)||w(this.entities.keyword)||w(this.entities.quoted))?c=new f.Condition(d,a,b,e,g):y("expected expression"):c=new f.Condition("=",a,new f.Keyword("true"),e,g),x(")"),w(/^and/)?new f.Condition("and",c,w(this.condition)):c},operand:function(){var a,b=g.charAt(h+1);g.charAt(h)==="-"&&(b==="@"||b==="(")&&(a=w("-"));var c=w(this.sub)||w(this.entities.dimension)||w(this.entities.color)||w(this.entities.variable)||w(this.entities.call);return a?new f.Operation("*",[new f.Dimension(-1),c]):c},expression:function(){var a,b,c=[],d;while(a=w(this.addition)||w(this.entity))c.push(a);if(c.length>0)return new f.Expression(c)},property:function(){var a;if(a=w(/^(\*?-?[-a-z_0-9]+)\s*:/))return a[1]}}}};if(d.mode==="browser"||d.mode==="rhino")d.Parser.importer=function(a,b,c,d){a.charAt(0)!=="/"&&b.length>0&&(a=b[0]+a),o({href:a,title:a,type:d.mime},c,!0)};(function(a){function b(b){return a.functions.hsla(b.h,b.s,b.l,b.a)}function c(b){if(b instanceof a.Dimension)return parseFloat(b.unit=="%"?b.value/100:b.value);if(typeof b=="number")return b;throw{error:"RuntimeError",message:"color functions take numbers as parameters"}}function d(a){return Math.min(1,Math.max(0,a))}a.functions={rgb:function(a,b,c){return this.rgba(a,b,c,1)},rgba:function(b,d,e,f){var g=[b,d,e].map(function(a){return c(a)}),f=c(f);return new a.Color(g,f)},hsl:function(a,b,c){return this.hsla(a,b,c,1)},hsla:function(a,b,d,e){function h(a){return a=a<0?a+1:a>1?a-1:a,a*6<1?g+(f-g)*a*6:a*2<1?f:a*3<2?g+(f-g)*(2/3-a)*6:g}a=c(a)%360/360,b=c(b),d=c(d),e=c(e);var f=d<=.5?d*(b+1):d+b-d*b,g=d*2-f;return this.rgba(h(a+1/3)*255,h(a)*255,h(a-1/3)*255,e)},hue:function(b){return new a.Dimension(Math.round(b.toHSL().h))},saturation:function(b){return new a.Dimension(Math.round(b.toHSL().s*100),"%")},lightness:function(b){return new a.Dimension(Math.round(b.toHSL().l*100),"%")},alpha:function(b){return new a.Dimension(b.toHSL().a)},saturate:function(a,c){var e=a.toHSL();return e.s+=c.value/100,e.s=d(e.s),b(e)},desaturate:function(a,c){var e=a.toHSL();return e.s-=c.value/100,e.s=d(e.s),b(e)},lighten:function(a,c){var e=a.toHSL();return e.l+=c.value/100,e.l=d(e.l),b(e)},darken:function(a,c){var e=a.toHSL();return e.l-=c.value/100,e.l=d(e.l),b(e)},fadein:function(a,c){var e=a.toHSL();return e.a+=c.value/100,e.a=d(e.a),b(e)},fadeout:function(a,c){var e=a.toHSL();return e.a-=c.value/100,e.a=d(e.a),b(e)},fade:function(a,c){var e=a.toHSL();return e.a=c.value/100,e.a=d(e.a),b(e)},spin:function(a,c){var d=a.toHSL(),e=(d.h+c.value)%360;return d.h=e<0?360+e:e,b(d)},mix:function(b,c,d){var e=d.value/100,f=e*2-1,g=b.toHSL().a-c.toHSL().a,h=((f*g==-1?f:(f+g)/(1+f*g))+1)/2,i=1-h,j=[b.rgb[0]*h+c.rgb[0]*i,b.rgb[1]*h+c.rgb[1]*i,b.rgb[2]*h+c.rgb[2]*i],k=b.alpha*e+c.alpha*(1-e);return new a.Color(j,k)},greyscale:function(b){return this.desaturate(b,new a.Dimension(100))},e:function(b){return new a.Anonymous(b instanceof a.JavaScript?b.evaluated:b)},escape:function(b){return new a.Anonymous(encodeURI(b.value).replace(/=/g,"%3D").replace(/:/g,"%3A").replace(/#/g,"%23").replace(/;/g,"%3B").replace(/\(/g,"%28").replace(/\)/g,"%29"))},"%":function(b){var c=Array.prototype.slice.call(arguments,1),d=b.value;for(var e=0;e<c.length;e++)d=d.replace(/%[sda]/i,function(a){var b=a.match(/s/i)?c[e].value:c[e].toCSS();return a.match(/[A-Z]$/)?encodeURIComponent(b):b});return d=d.replace(/%%/g,"%"),new a.Quoted('"'+d+'"',d)},round:function(a){return this._math("round",a)},ceil:function(a){return this._math("ceil",a)},floor:function(a){return this._math("floor",a)},_math:function(b,d){if(d instanceof a.Dimension)return new a.Dimension(Math[b](c(d)),d.unit);if(typeof d=="number")return Math[b](d);throw{type:"Argument",message:"argument must be a number"}},argb:function(b){return new a.Anonymous(b.toARGB())},percentage:function(b){return new a.Dimension(b.value*100,"%")},color:function(b){if(b instanceof a.Quoted)return new a.Color(b.value.slice(1));throw{type:"Argument",message:"argument must be a string"}},iscolor:function(b){return this._isa(b,a.Color)},isnumber:function(b){return this._isa(b,a.Dimension)},isstring:function(b){return this._isa(b,a.Quoted)},iskeyword:function(b){return this._isa(b,a.Keyword)},isurl:function(b){return this._isa(b,a.URL)},ispixel:function(b){return b instanceof a.Dimension&&b.unit==="px"?a.True:a.False},ispercentage:function(b){return b instanceof a.Dimension&&b.unit==="%"?a.True:a.False},isem:function(b){return b instanceof a.Dimension&&b.unit==="em"?a.True:a.False},_isa:function(b,c){return b instanceof c?a.True:a.False}}})(c("./tree")),function(a){a.colors={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgrey:"#a9a9a9",darkgreen:"#006400",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",grey:"#808080",green:"#008000",greenyellow:"#adff2f",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgrey:"#d3d3d3",lightgreen:"#90ee90",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370d8",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#d87093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"}}(c("./tree")),function(a){a.Alpha=function(a){this.value=a},a.Alpha.prototype={toCSS:function(){return"alpha(opacity="+(this.value.toCSS?this.value.toCSS():this.value)+")"},eval:function(a){return this.value.eval&&(this.value=this.value.eval(a)),this}}}(c("../tree")),function(a){a.Anonymous=function(a){this.value=a.value||a},a.Anonymous.prototype={toCSS:function(){return this.value},eval:function(){return this}}}(c("../tree")),function(a){a.Assignment=function(a,b){this.key=a,this.value=b},a.Assignment.prototype={toCSS:function(){return this.key+"="+(this.value.toCSS?this.value.toCSS():this.value)},eval:function(a){return this.value.eval&&(this.value=this.value.eval(a)),this}}}(c("../tree")),function(a){a.Call=function(a,b,c,d){this.name=a,this.args=b,this.index=c,this.filename=d},a.Call.prototype={eval:function(b){var c=this.args.map(function(a){return a.eval(b)});if(!(this.name in a.functions))return new a.Anonymous(this.name+"("+c.map(function(a){return a.toCSS()}).join(", ")+")");try{return a.functions[this.name].apply(a.functions,c)}catch(d){throw{type:d.type||"Runtime",message:"error evaluating function `"+this.name+"`"+(d.message?": "+d.message:""),index:this.index,filename:this.filename}}},toCSS:function(a){return this.eval(a).toCSS()}}}(c("../tree")),function(a){a.Color=function(a,b){Array.isArray(a)?this.rgb=a:a.length==6?this.rgb=a.match(/.{2}/g).map(function(a){return parseInt(a,16)}):this.rgb=a.split("").map(function(a){return parseInt(a+a,16)}),this.alpha=typeof b=="number"?b:1},a.Color.prototype={eval:function(){return this},toCSS:function(){return this.alpha<1?"rgba("+this.rgb.map(function(a){return Math.round(a)}).concat(this.alpha).join(", ")+")":"#"+this.rgb.map(function(a){return a=Math.round(a),a=(a>255?255:a<0?0:a).toString(16),a.length===1?"0"+a:a}).join("")},operate:function(b,c){var d=[];c instanceof a.Color||(c=c.toColor());for(var e=0;e<3;e++)d[e]=a.operate(b,this.rgb[e],c.rgb[e]);return new a.Color(d,this.alpha+c.alpha)},toHSL:function(){var a=this.rgb[0]/255,b=this.rgb[1]/255,c=this.rgb[2]/255,d=this.alpha,e=Math.max(a,b,c),f=Math.min(a,b,c),g,h,i=(e+f)/2,j=e-f;if(e===f)g=h=0;else{h=i>.5?j/(2-e-f):j/(e+f);switch(e){case a:g=(b-c)/j+(b<c?6:0);break;case b:g=(c-a)/j+2;break;case c:g=(a-b)/j+4}g/=6}return{h:g*360,s:h,l:i,a:d}},toARGB:function(){var a=[Math.round(this.alpha*255)].concat(this.rgb);return"#"+a.map(function(a){return a=Math.round(a),a=(a>255?255:a<0?0:a).toString(16),a.length===1?"0"+a:a}).join("")}}}(c("../tree")),function(a){a.Comment=function(a,b){this.value=a,this.silent=!!b},a.Comment.prototype={toCSS:function(a){return a.compress?"":this.value},eval:function(){return this}}}(c("../tree")),function(a){a.Condition=function(a,b,c,d,e){this.op=a.trim(),this.lvalue=b,this.rvalue=c,this.index=d,this.negate=e},a.Condition.prototype.eval=function(a){var b=this.lvalue.eval(a),c=this.rvalue.eval(a),d=this.index,e,e=function(a){switch(a){case"and":return b&&c;case"or":return b||c;default:if(b.compare)e=b.compare(c);else{if(!c.compare)throw{type:"Type",message:"Unable to perform comparison",index:d};e=c.compare(b)}switch(e){case-1:return a==="<"||a==="=<";case 0:return a==="="||a===">="||a==="=<";case 1:return a===">"||a===">="}}}(this.op);return this.negate?!e:e}}(c("../tree")),function(a){a.Dimension=function(a,b){this.value=parseFloat(a),this.unit=b||null},a.Dimension.prototype={eval:function(){return this},toColor:function(){return new a.Color([this.value,this.value,this.value])},toCSS:function(){var a=this.value+this.unit;return a},operate:function(b,c){return new a.Dimension(a.operate(b,this.value,c.value),this.unit||c.unit)},compare:function(b){return b instanceof a.Dimension?b.value>this.value?-1:b.value<this.value?1:0:-1}}}(c("../tree")),function(a){a.Directive=function(b,c,d){this.name=b,this.features=d&&new a.Value(d),Array.isArray(c)?(this.ruleset=new a.Ruleset([],c),this.ruleset.allowImports=!0):this.value=c},a.Directive.prototype={toCSS:function(a,b){var c=this.features?" "+this.features.toCSS(b):"";return this.ruleset?(this.ruleset.root=!0,this.name+c+(b.compress?"{":" {\n  ")+this.ruleset.toCSS(a,b).trim().replace(/\n/g,"\n  ")+(b.compress?"}":"\n}\n")):this.name+" "+this.value.toCSS()+";\n"},eval:function(a){return this.features=this.features&&this.features.eval(a),a.frames.unshift(this),this.ruleset=this.ruleset&&this.ruleset.eval(a),a.frames.shift(),this},variable:function(b){return a.Ruleset.prototype.variable.call(this.ruleset,b)},find:function(){return a.Ruleset.prototype.find.apply(this.ruleset,arguments)},rulesets:function(){return a.Ruleset.prototype.rulesets.apply(this.ruleset)}}}(c("../tree")),function(a){a.Element=function(b,c,d){this.combinator=b instanceof a.Combinator?b:new a.Combinator(b),typeof c=="string"?this.value=c.trim():c?this.value=c:this.value="",this.index=d},a.Element.prototype.eval=function(b){return new a.Element(this.combinator,this.value.eval?this.value.eval(b):this.value,this.index)},a.Element.prototype.toCSS=function(a){return this.combinator.toCSS(a||{})+(this.value.toCSS?this.value.toCSS(a):this.value)},a.Combinator=function(a){a===" "?this.value=" ":a==="& "?this.value="& ":this.value=a?a.trim():""},a.Combinator.prototype.toCSS=function(a){return{"":""," ":" ","&":"","& ":" ",":":" :","::":"::","+":a.compress?"+":" + ","~":a.compress?"~":" ~ ",">":a.compress?">":" > "}[this.value]}}(c("../tree")),function(a){a.Expression=function(a){this.value=a},a.Expression.prototype={eval:function(b){return this.value.length>1?new a.Expression(this.value.map(function(a){return a.eval(b)})):this.value.length===1?this.value[0].eval(b):this},toCSS:function(a){return this.value.map(function(b){return b.toCSS?b.toCSS(a):""}).join(" ")}}}(c("../tree")),function(a){a.Import=function(b,c,d,e){var f=this;this.index=e,this._path=b,this.features=d&&new a.Value(d),b instanceof a.Quoted?this.path=/\.(le?|c)ss(\?.*)?$/.test(b.value)?b.value:b.value+".less":this.path=b.value.value||b.value,this.css=/css(\?.*)?$/.test(this.path),this.css||c.push(this.path,function(b,c){b&&(b.index=e),f.root=c||new a.Ruleset([],[])})},a.Import.prototype={toCSS:function(a){var b=this.features?" "+this.features.toCSS(a):"";return this.css?"@import "+this._path.toCSS()+b+";\n":""},eval:function(b){var c,d=this.features&&this.features.eval(b);if(this.css)return this;c=new a.Ruleset([],this.root.rules.slice(0));for(var e=0;e<c.rules.length;e++)c.rules[e]instanceof a.Import&&Array.prototype.splice.apply(c.rules,[e,1].concat(c.rules[e].eval(b)));return this.features?new a.Directive("@media",c.rules,this.features.value):c.rules}}}(c("../tree")),function(a){a.JavaScript=function(a,b,c){this.escaped=c,this.expression=a,this.index=b},a.JavaScript.prototype={eval:function(b){var c,d=this,e={},f=this.expression.replace(/@\{([\w-]+)\}/g,function(c,e){return a.jsify((new a.Variable("@"+e,d.index)).eval(b))});try{f=new Function("return ("+f+")")}catch(g){throw{message:"JavaScript evaluation error: `"+
+f+"`",index:this.index}}for(var h in b.frames[0].variables())e[h.slice(1)]={value:b.frames[0].variables()[h].value,toJS:function(){return this.value.eval(b).toCSS()}};try{c=f.call(e)}catch(g){throw{message:"JavaScript evaluation error: '"+g.name+": "+g.message+"'",index:this.index}}return typeof c=="string"?new a.Quoted('"'+c+'"',c,this.escaped,this.index):Array.isArray(c)?new a.Anonymous(c.join(", ")):new a.Anonymous(c)}}}(c("../tree")),function(a){a.Keyword=function(a){this.value=a},a.Keyword.prototype={eval:function(){return this},toCSS:function(){return this.value},compare:function(b){return b instanceof a.Keyword?b.value===this.value?0:1:-1}},a.True=new a.Keyword("true"),a.False=new a.Keyword("false")}(c("../tree")),function(a){a.mixin={},a.mixin.Call=function(b,c,d,e,f){this.selector=new a.Selector(b),this.arguments=c,this.index=d,this.filename=e,this.important=f},a.mixin.Call.prototype={eval:function(a){var b,c,d=[],e=!1;for(var f=0;f<a.frames.length;f++)if((b=a.frames[f].find(this.selector)).length>0){c=this.arguments&&this.arguments.map(function(b){return b.eval(a)});for(var g=0;g<b.length;g++)if(b[g].match(c,a))try{Array.prototype.push.apply(d,b[g].eval(a,this.arguments,this.important).rules),e=!0}catch(h){throw{message:h.message,index:h.index,filename:this.filename,stack:h.stack,call:this.index}}if(e)return d;throw{type:"Runtime",message:"No matching definition was found for `"+this.selector.toCSS().trim()+"("+this.arguments.map(function(a){return a.toCSS()}).join(", ")+")`",index:this.index,filename:this.filename}}throw{type:"Name",message:this.selector.toCSS().trim()+" is undefined",index:this.index,filename:this.filename}}},a.mixin.Definition=function(b,c,d,e){this.name=b,this.selectors=[new a.Selector([new a.Element(null,b)])],this.params=c,this.condition=e,this.arity=c.length,this.rules=d,this._lookups={},this.required=c.reduce(function(a,b){return!b.name||b.name&&!b.value?a+1:a},0),this.parent=a.Ruleset.prototype,this.frames=[]},a.mixin.Definition.prototype={toCSS:function(){return""},variable:function(a){return this.parent.variable.call(this,a)},variables:function(){return this.parent.variables.call(this)},find:function(){return this.parent.find.apply(this,arguments)},rulesets:function(){return this.parent.rulesets.apply(this)},evalParams:function(b,c){var d=new a.Ruleset(null,[]);for(var e=0,f;e<this.params.length;e++)if(this.params[e].name){if(!(f=c&&c[e]||this.params[e].value))throw{type:"Runtime",message:"wrong number of arguments for "+this.name+" ("+c.length+" for "+this.arity+")"};d.rules.unshift(new a.Rule(this.params[e].name,f.eval(b)))}return d},eval:function(b,c,d){var e=this.evalParams(b,c),f,g=[],h;for(var i=0;i<Math.max(this.params.length,c&&c.length);i++)g.push(c[i]||this.params[i].value);return e.rules.unshift(new a.Rule("@arguments",(new a.Expression(g)).eval(b))),h=d?this.rules.map(function(b){return new a.Rule(b.name,b.value,"!important",b.index)}):this.rules.slice(0),(new a.Ruleset(null,h)).eval({frames:[this,e].concat(this.frames,b.frames)})},match:function(a,b){var c=a&&a.length||0,d,e;if(c<this.required)return!1;if(this.required>0&&c>this.params.length)return!1;if(this.condition&&!this.condition.eval({frames:[this.evalParams(b,a)].concat(b.frames)}))return!1;d=Math.min(c,this.arity);for(var f=0;f<d;f++)if(!this.params[f].name&&a[f].eval(b).toCSS()!=this.params[f].value.eval(b).toCSS())return!1;return!0}}}(c("../tree")),function(a){a.Operation=function(a,b){this.op=a.trim(),this.operands=b},a.Operation.prototype.eval=function(b){var c=this.operands[0].eval(b),d=this.operands[1].eval(b),e;if(c instanceof a.Dimension&&d instanceof a.Color){if(this.op!=="*"&&this.op!=="+")throw{name:"OperationError",message:"Can't substract or divide a color from a number"};e=d,d=c,c=e}return c.operate(this.op,d)},a.operate=function(a,b,c){switch(a){case"+":return b+c;case"-":return b-c;case"*":return b*c;case"/":return b/c}}}(c("../tree")),function(a){a.Paren=function(a){this.value=a},a.Paren.prototype={toCSS:function(a){return"("+this.value.toCSS(a)+")"},eval:function(b){return new a.Paren(this.value.eval(b))}}}(c("../tree")),function(a){a.Quoted=function(a,b,c,d){this.escaped=c,this.value=b||"",this.quote=a.charAt(0),this.index=d},a.Quoted.prototype={toCSS:function(){return this.escaped?this.value:this.quote+this.value+this.quote},eval:function(b){var c=this,d=this.value.replace(/`([^`]+)`/g,function(d,e){return(new a.JavaScript(e,c.index,!0)).eval(b).value}).replace(/@\{([\w-]+)\}/g,function(d,e){var f=(new a.Variable("@"+e,c.index)).eval(b);return"value"in f?f.value:f.toCSS()});return new a.Quoted(this.quote+d+this.quote,d,this.escaped,this.index)}}}(c("../tree")),function(a){a.Rule=function(b,c,d,e,f){this.name=b,this.value=c instanceof a.Value?c:new a.Value([c]),this.important=d?" "+d.trim():"",this.index=e,this.inline=f||!1,b.charAt(0)==="@"?this.variable=!0:this.variable=!1},a.Rule.prototype.toCSS=function(a){return this.variable?"":this.name+(a.compress?":":": ")+this.value.toCSS(a)+this.important+(this.inline?"":";")},a.Rule.prototype.eval=function(b){return new a.Rule(this.name,this.value.eval(b),this.important,this.index,this.inline)},a.Shorthand=function(a,b){this.a=a,this.b=b},a.Shorthand.prototype={toCSS:function(a){return this.a.toCSS(a)+"/"+this.b.toCSS(a)},eval:function(){return this}}}(c("../tree")),function(a){a.Ruleset=function(a,b){this.selectors=a,this.rules=b,this._lookups={}},a.Ruleset.prototype={eval:function(b){var c=this.selectors&&this.selectors.map(function(a){return a.eval(b)}),d=new a.Ruleset(c,this.rules.slice(0));d.root=this.root,d.allowImports=this.allowImports,b.frames.unshift(d);if(d.root||d.allowImports)for(var e=0;e<d.rules.length;e++)d.rules[e]instanceof a.Import&&Array.prototype.splice.apply(d.rules,[e,1].concat(d.rules[e].eval(b)));for(var e=0;e<d.rules.length;e++)d.rules[e]instanceof a.mixin.Definition&&(d.rules[e].frames=b.frames.slice(0));for(var e=0;e<d.rules.length;e++)d.rules[e]instanceof a.mixin.Call&&Array.prototype.splice.apply(d.rules,[e,1].concat(d.rules[e].eval(b)));for(var e=0,f;e<d.rules.length;e++)f=d.rules[e],f instanceof a.mixin.Definition||(d.rules[e]=f.eval?f.eval(b):f);return b.frames.shift(),d},match:function(a){return!a||a.length===0},variables:function(){return this._variables?this._variables:this._variables=this.rules.reduce(function(b,c){return c instanceof a.Rule&&c.variable===!0&&(b[c.name]=c),b},{})},variable:function(a){return this.variables()[a]},rulesets:function(){return this._rulesets?this._rulesets:this._rulesets=this.rules.filter(function(b){return b instanceof a.Ruleset||b instanceof a.mixin.Definition})},find:function(b,c){c=c||this;var d=[],e,f,g=b.toCSS();return g in this._lookups?this._lookups[g]:(this.rulesets().forEach(function(e){if(e!==c)for(var g=0;g<e.selectors.length;g++)if(f=b.match(e.selectors[g])){b.elements.length>e.selectors[g].elements.length?Array.prototype.push.apply(d,e.find(new a.Selector(b.elements.slice(1)),c)):d.push(e);break}}),this._lookups[g]=d)},toCSS:function(b,c){var d=[],e=[],f=[],g=[],h,i;this.root||(b.length===0?g=this.selectors.map(function(a){return[a]}):this.joinSelectors(g,b,this.selectors));for(var j=0;j<this.rules.length;j++)i=this.rules[j],i.rules||i instanceof a.Directive?f.push(i.toCSS(g,c)):i instanceof a.Comment?i.silent||(this.root?f.push(i.toCSS(c)):e.push(i.toCSS(c))):i.toCSS&&!i.variable?e.push(i.toCSS(c)):i.value&&!i.variable&&e.push(i.value.toString());return f=f.join(""),this.root?d.push(e.join(c.compress?"":"\n")):e.length>0&&(h=g.map(function(a){return a.map(function(a){return a.toCSS(c)}).join("").trim()}).join(c.compress?",":g.length>3?",\n":", "),d.push(h,(c.compress?"{":" {\n  ")+e.join(c.compress?"":"\n  ")+(c.compress?"}":"\n}\n"))),d.push(f),d.join("")+(c.compress?"\n":"")},joinSelectors:function(a,b,c){for(var d=0;d<c.length;d++)this.joinSelector(a,b,c[d])},joinSelector:function(b,c,d){var e=[],f=[],g=[],h=[],i=!1,j;for(var k=0;k<d.elements.length;k++)j=d.elements[k],j.combinator.value.charAt(0)==="&"&&(i=!0),i?h.push(j):g.push(j);i||(h=g,g=[]),g.length>0&&e.push(new a.Selector(g)),h.length>0&&f.push(new a.Selector(h));for(var l=0;l<c.length;l++)b.push(e.concat(c[l]).concat(f))}}}(c("../tree")),function(a){a.Selector=function(a){this.elements=a,this.elements[0].combinator.value===""&&(this.elements[0].combinator.value=" ")},a.Selector.prototype.match=function(a){var b=this.elements.length,c=a.elements.length,d=Math.min(b,c);if(b<c)return!1;for(var e=0;e<d;e++)if(this.elements[e].value!==a.elements[e].value)return!1;return!0},a.Selector.prototype.eval=function(b){return new a.Selector(this.elements.map(function(a){return a.eval(b)}))},a.Selector.prototype.toCSS=function(a){return this._css?this._css:this._css=this.elements.map(function(b){return typeof b=="string"?" "+b.trim():b.toCSS(a)}).join("")}}(c("../tree")),function(b){b.URL=function(b,c){b.data?this.attrs=b:(typeof a!="undefined"&&!/^(?:https?:\/\/|file:\/\/|data:|\/)/.test(b.value)&&c.length>0&&(b.value=c[0]+(b.value.charAt(0)==="/"?b.value.slice(1):b.value)),this.value=b,this.paths=c)},b.URL.prototype={toCSS:function(){return"url("+(this.attrs?"data:"+this.attrs.mime+this.attrs.charset+this.attrs.base64+this.attrs.data:this.value.toCSS())+")"},eval:function(a){return this.attrs?this:new b.URL(this.value.eval(a),this.paths)}}}(c("../tree")),function(a){a.Value=function(a){this.value=a,this.is="value"},a.Value.prototype={eval:function(b){return this.value.length===1?this.value[0].eval(b):new a.Value(this.value.map(function(a){return a.eval(b)}))},toCSS:function(a){return this.value.map(function(b){return b.toCSS(a)}).join(a.compress?",":", ")}}}(c("../tree")),function(a){a.Variable=function(a,b,c){this.name=a,this.index=b,this.file=c},a.Variable.prototype={eval:function(b){var c,d,e=this.name;e.indexOf("@@")==0&&(e="@"+(new a.Variable(e.slice(1))).eval(b).value);if(c=a.find(b.frames,function(a){if(d=a.variable(e))return d.value.eval(b)}))return c;throw{type:"Name",message:"variable "+e+" is undefined",filename:this.file,index:this.index}}}}(c("../tree")),function(a){a.find=function(a,b){for(var c=0,d;c<a.length;c++)if(d=b.call(a,a[c]))return d;return null},a.jsify=function(a){return Array.isArray(a.value)&&a.value.length>1?"["+a.value.map(function(a){return a.toCSS(!1)}).join(", ")+"]":a.toCSS(!1)}}(c("./tree"));var g=location.protocol==="file:"||location.protocol==="chrome:"||location.protocol==="chrome-extension:"||location.protocol==="resource:";d.env=d.env||(location.hostname=="127.0.0.1"||location.hostname=="0.0.0.0"||location.hostname=="localhost"||location.port.length>0||g?"development":"production"),d.async=!1,d.poll=d.poll||(g?1e3:1500),d.watch=function(){return this.watchMode=!0},d.unwatch=function(){return this.watchMode=!1},d.env==="development"?(d.optimization=0,/!watch/.test(location.hash)&&d.watch(),d.watchTimer=setInterval(function(){d.watchMode&&n(function(a,b,c,d,e){b&&r(b.toCSS(),d,e.lastModified)})},d.poll)):d.optimization=3;var h;try{h=typeof a.localStorage=="undefined"?null:a.localStorage}catch(i){h=null}var j=document.getElementsByTagName("link"),k=/^text\/(x-)?less$/;d.sheets=[];for(var l=0;l<j.length;l++)(j[l].rel==="stylesheet/less"||j[l].rel.match(/stylesheet/)&&j[l].type.match(k))&&d.sheets.push(j[l]);d.refresh=function(a){var b,c;b=c=new Date,n(function(a,d,e,f,g){g.local?v("loading "+f.href+" from cache."):(v("parsed "+f.href+" successfully."),r(d.toCSS(),f,g.lastModified)),v("css for "+f.href+" generated in "+(new Date-c)+"ms"),g.remaining===0&&v("css generated in "+(new Date-b)+"ms"),c=new Date},a),m()},d.refreshStyles=m,d.refresh(d.env==="development")})(window);
\ No newline at end of file
diff --git a/skins/.gitignore b/skins/.gitignore
deleted file mode 100644 (file)
index 143a107..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-*
-!cologneblue
-!CologneBlue.php
-!common
-!modern
-!Modern.php
-!monobook
-!MonoBook.php
-!vector
-!Vector.php
-!.gitignore
index f7fb0d8..bd914ce 100644 (file)
@@ -45,7 +45,7 @@ class SkinMonoBook extends SkinTemplate {
        function setupSkinUserCss( OutputPage $out ) {
                parent::setupSkinUserCss( $out );
 
-               $out->addModuleStyles( 'skins.monobook' );
+               $out->addModuleStyles( array( 'skins.common.interface', 'skins.monobook.styles' ) );
 
                // TODO: Migrate all of these
                $out->addStyle( 'monobook/IE60Fixes.css', 'screen', 'IE 6' );
index 288b5fd..00b920a 100644 (file)
@@ -67,7 +67,7 @@ class SkinVector extends SkinTemplate {
        function setupSkinUserCss( OutputPage $out ) {
                parent::setupSkinUserCss( $out );
 
-               $styles = array( 'skins.vector' );
+               $styles = array( 'skins.common.interface', 'skins.vector.styles' );
                wfRunHooks( 'SkinVectorStyleModules', array( &$this, &$styles ) );
                $out->addModuleStyles( $styles );
        }
index 14d39b9..35071a4 100644 (file)
@@ -163,12 +163,6 @@ img.thumbborder {
 /**
  * Basic styles for the user login and create account forms
  */
-#userlogin, #userloginForm {
-       border: solid 1px #cccccc;
-       padding: 1.2em;
-       margin: 0.5em;
-}
-
 #loginend {
        margin: 0.5em;
 }
index af6665e..7eca070 100644 (file)
@@ -59,7 +59,7 @@
        font-size: 84%;
        line-height: 1.2em;
        margin: 0 0 1.4em 1em;
-       color: #7d7d7d;
+       color: #545454;
        width: auto;
 }
 span.subpages {
index c7804a0..65f3fbe 100644 (file)
@@ -17,6 +17,12 @@ a.new {
        border: 1px solid #aaaaaa;
        background-color: #f9f9f9;
        padding: 5px;
+       display: -moz-inline-block;
+       display: inline-block;
+       display: table;
+       /* IE7 and earlier */
+       zoom: 1;
+       *display: inline;
 }
 
 /* images */
@@ -157,6 +163,10 @@ h1, h2, h3, h4, h5, h6 {
        font-weight: bold;
 }
 
+dt {
+       font-weight: bold;
+}
+
 p {
        margin: 1em 0;
        line-height: 1.2em;
index 310294a..b068915 100644 (file)
@@ -1176,14 +1176,15 @@ table.floatleft {
        display: none;
 }
 
-/* For developpers */
+/* For developers */
 .xdebug-error {
        position: absolute;
        z-index: 99;
 }
 
 .mw-editsection,
-.toctoggle {
+.toctoggle,
+#jump-to-nav {
        -moz-user-select: none;
        -webkit-user-select: none;
        -ms-user-select: none;
index 40fbfd7..5da7d5b 100644 (file)
@@ -303,7 +303,7 @@ hr {
 }
 
 #contentSub {
-       color: #888;
+       color: #545454;
        font-size: small;
        padding-left: 2em;
 }
index d8f25eb..145b375 100644 (file)
@@ -636,33 +636,6 @@ td.htmlform-tip {
        margin-top: 2em;
 }
 
-div#userloginForm,
-div#userlogin {
-       margin: 0 3em 1em 0;
-       border: 1px solid #aaa;
-       clear: both;
-       padding: 1.5em 2em;
-       background-color: #f9f9f9;
-       float: left;
-}
-
-div#userloginForm table,
-div#userlogin table {
-       background-color: #f9f9f9;
-}
-
-div#userloginForm h2,
-div#userlogin h2 {
-       padding-top: 0;
-}
-
-div#userlogin .captcha,
-div#userloginForm .captcha {
-       border: 1px solid #bbb;
-       padding: 1.5em 2em;
-       background-color: white;
-}
-
 #loginend, #signupend {
        clear: both;
 }
@@ -677,10 +650,6 @@ div#userloginForm .captcha {
        padding-top: 2em;
 }
 
-#userlogin .loginText, #userlogin .loginPassword {
-       width: 12em;
-}
-
 #userloginlink a, #wpLoginattempt, #wpCreateaccount {
        font-weight: bold;
 }
diff --git a/skins/vector/beta/screen.less b/skins/vector/beta/screen.less
deleted file mode 100644 (file)
index 6d56cd5..0000000
+++ /dev/null
@@ -1,75 +0,0 @@
-/* Content */
-#content {
-       line-height: 1.5em;
-       .mw-editsection {
-               font-family: @content-font-family;
-       }
-
-       h1,
-       #firstHeading {
-               font-family: @content-heading-font-family;
-               font-size: 1.833em;
-               line-height: 22pt;
-               padding: 0;
-               margin-bottom: 4pt;
-       }
-
-       h2 {
-               font-size: 1.5em;
-               line-height: 22pt;
-       }
-
-       h2,
-       h3,
-       h4,
-       h5,
-       h6 {
-               font-family: @content-heading-font-family;
-               padding: 0;
-               margin-bottom: 4pt;
-               margin-top: 14pt;
-       }
-
-       h3 {
-               font-size: 1.17em;
-               line-height: 22pt;
-       }
-
-       h3,
-       h4 {
-               font-weight: bold;
-       }
-
-       h4,
-       h5,
-       h6 {
-               font-size: 100%; /* (reset) */
-       }
-
-       h6 {
-               font-style: italic;
-       }
-
-       p {
-               margin-bottom: 8pt;
-       }
-
-       // FIXME: this is hacky
-       #toc h2 {
-               font-size: 100%;
-       }
-}
-
-/* Personal menu */
-#p-personal a {
-       color: #555;
-}
-
-/* Main menu */
-div#mw-panel div.portal {
-       margin-left: 1.25em;
-       h3 {
-               margin: 0;
-               line-height: 1;
-       }
-}
diff --git a/skins/vector/beta/variables.less b/skins/vector/beta/variables.less
deleted file mode 100644 (file)
index 08e662d..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-@html-font-size: 90%;
-
-@body-font-size: inherit;
-
-// Page content
-@content-font-family: "Helvetica Neue", "Helvetica", "Nimbus Sans L", "Arial", "Liberation Sans", sans-serif;
-@content-font-color: #252525;
-@content-font-size: 0.9em;
-@content-line-height: inherit;
-@content-padding: 1em;
-@content-heading-font-size: 1.6em;
-@content-heading-font-family: Georgia, "DejaVu Serif", serif;
-
-// Common menu
-@menu-link-color: #555;
-
-// Main menu
-@menu-main-font-size: 0.82em;
-@menu-main-heading-font-size: 100%;
-@menu-main-heading-padding: 5px 0;
-
-@menu-main-body-font-size: inherit;
-@menu-main-body-link-color: inherit;
-@menu-main-body-link-visited-color: inherit;
-@menu-main-body-margin: 0;
-@menu-main-body-padding: 0 0 10px;
-@menu-main-logo-left: 1.6em;
-
-// Personal menu
-@menu-personal-font-size: 0.75em;
-
-// Collapsible nav
-@collapsible-nav-heading-color: #555;
-@collapsible-nav-heading-collapsed-color: inherit;
-
-@collapsible-nav-heading-padding: 4px 0 3px 1.5em;
-@collapsible-nav-body-margin: 0 0 0 1.25em;
index 83d043e..e33cfc9 100644 (file)
                        collapsible: 'li.collapsible',
                        shifting: false,
                        expandCondition: function ( eleWidth ) {
-                               // If there's at least eleWidth pixels free space, expand.
-                               return calculateTabDistance() >= eleWidth;
+                               // If there are at least eleWidth + 1 pixels of free space, expand.
+                               // We add 1 because .width() will truncate fractional values
+                               // but .offset() will not.
+                               return calculateTabDistance() >= (eleWidth + 1);
                        },
                        collapseCondition: function () {
                                // If there's an overlap, collapse.
index 5b02abb..3e26a22 100644 (file)
@@ -4,34 +4,34 @@
 div#content a.external {
        background-position: center right;
        background-repeat: no-repeat;
-       .background-image('images/external-link-ltr-icon.png');
+       .background-image-svg('images/external-link-ltr-icon.svg', 'images/external-link-ltr-icon.png');
        padding-right: 13px;
 }
 div#content a.external[href ^="https://"],
 .link-https {
        background-position: center right;
        background-repeat: no-repeat;
-       .background-image('images/lock-icon.png');
+       .background-image-svg('images/lock-icon.svg', 'images/lock-icon.png');
        padding-right: 13px;
 }
 div#content a.external[href ^="mailto:"],
 .link-mailto {
        background-position: center right;
        background-repeat: no-repeat;
-       .background-image('images/mail-icon.png');
+       .background-image-svg('images/mail-icon.svg', 'images/mail-icon.png');
        padding-right: 13px;
 }
 div#content a.external[href ^="news:"] {
        background-position: center right;
        background-repeat: no-repeat;
-       .background-image('images/news-icon.png');
+       .background-image-svg('images/news-icon.svg', 'images/news-icon.png');
        padding-right: 13px;
 }
 div#content a.external[href ^="ftp://"],
 .link-ftp {
        background-position: center right;
        background-repeat: no-repeat;
-       .background-image('images/file-icon.png');
+       .background-image-svg('images/file-icon.svg', 'images/file-icon.png');
        padding-right: 13px;
 }
 div#content a.external[href ^="irc://"],
@@ -39,7 +39,7 @@ div#content a.external[href ^="ircs://"],
 .link-irc {
        background-position: center right;
        background-repeat: no-repeat;
-       .background-image('images/talk-icon.png');
+       .background-image-svg('images/talk-icon.svg', 'images/talk-icon.png');
        padding-right: 13px;
 }
 div#content a.external[href $=".ogg"], div#content a.external[href $=".OGG"],
@@ -51,7 +51,7 @@ div#content a.external[href $=".wma"], div#content a.external[href $=".WMA"],
 .link-audio {
        background-position: center right;
        background-repeat: no-repeat;
-       .background-image('images/audio-icon.png');
+       .background-image-svg('images/audio-icon.svg', 'images/audio-icon.png');
        padding-right: 13px;
 }
 div#content a.external[href $=".ogm"], div#content a.external[href $=".OGM"],
@@ -61,7 +61,7 @@ div#content a.external[href $=".mpg"], div#content a.external[href $=".MPG"],
 .link-video {
        background-position: center right;
        background-repeat: no-repeat;
-       .background-image('images/video-icon.png');
+       .background-image-svg('images/video-icon.svg', 'images/video-icon.png');
        padding-right: 13px;
 }
 div#content a.external[href $=".pdf"], div#content a.external[href $=".PDF"],
@@ -70,6 +70,6 @@ div#content a.external[href *=".pdf?"], div#content a.external[href *=".PDF?"],
 .link-document {
        background-position: center right;
        background-repeat: no-repeat;
-       .background-image('images/document-icon.png');
+       .background-image-svg('images/document-icon.svg', 'images/document-icon.png');
        padding-right: 13px;
 }
diff --git a/skins/vector/images/audio-icon.svg b/skins/vector/images/audio-icon.svg
new file mode 100644 (file)
index 0000000..d88b57f
--- /dev/null
@@ -0,0 +1,88 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="10"
+   height="10"
+   id="svg6167"
+   version="1.1"
+   inkscape:version="0.48.4 r9939"
+   sodipodi:docname="Nowy dokument 22">
+  <defs
+     id="defs6169">
+    <linearGradient
+       id="linearGradient6707">
+      <stop
+         style="stop-color:#b2bf46;stop-opacity:1;"
+         offset="0"
+         id="stop6709" />
+      <stop
+         style="stop-color:#c8d17b;stop-opacity:1;"
+         offset="1"
+         id="stop6711" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6707"
+       id="linearGradient6713"
+       x1="22.262903"
+       y1="9.1418257"
+       x2="22.262903"
+       y2="5.3889236"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.96979296,0,0,0.96979296,858.75554,710.2631)" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="45.254834"
+     inkscape:cx="7.6304965"
+     inkscape:cy="5.5914204"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-width="1920"
+     inkscape:window-height="1014"
+     inkscape:window-x="0"
+     inkscape:window-y="27"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata6172">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-877.85712,-710.2193)">
+    <path
+       style="fill:url(#linearGradient6713);fill-opacity:1;stroke:#757f2a;stroke-width:0.96979296px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 880.63649,710.74799 0,5.78845 c -0.30291,0.0337 -0.60613,0.10534 -0.90918,0.24245 -1.08747,0.49204 -1.62536,1.48002 -1.21224,2.21234 0.41311,0.73233 1.60977,0.91632 2.69723,0.42429 0.87694,-0.39677 1.37959,-1.10894 1.33347,-1.75775 l 0,-0.15153 0,-3.81856 2.93968,0 0,2.84876 c -0.30894,0.0309 -0.62965,0.10227 -0.93948,0.24245 -1.07493,0.48636 -1.6206,1.48846 -1.21225,2.21234 0.40836,0.72389 1.59201,0.91065 2.66694,0.42429 0.87404,-0.39547 1.38893,-1.11233 1.33346,-1.75775 l 0,-0.15153 0,-6.75825 -6.69763,0 z"
+       id="path6186"
+       inkscape:connector-curvature="0" />
+  </g>
+</svg>
diff --git a/skins/vector/images/document-icon.svg b/skins/vector/images/document-icon.svg
new file mode 100644 (file)
index 0000000..1055769
--- /dev/null
@@ -0,0 +1,213 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="10"
+   height="10"
+   id="svg7339"
+   version="1.1"
+   inkscape:version="0.48.4 r9939"
+   sodipodi:docname="document-icon.svg">
+  <defs
+     id="defs7341">
+    <linearGradient
+       id="linearGradient7918">
+      <stop
+         style="stop-color:#e2e2e2;stop-opacity:1;"
+         offset="0"
+         id="stop7920" />
+      <stop
+         style="stop-color:#f8f8f8;stop-opacity:1;"
+         offset="1"
+         id="stop7922" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient7902">
+      <stop
+         style="stop-color:#e2e2e2;stop-opacity:1;"
+         offset="0"
+         id="stop7904" />
+      <stop
+         style="stop-color:#e2e2e2;stop-opacity:1;"
+         offset="1"
+         id="stop7906" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient7918"
+       id="radialGradient7931"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.4065972,0,0,2.1428629,6.7977966,-4.7132748)"
+       cx="-16.71875"
+       cy="3.344311"
+       fx="-16.71875"
+       fy="3.344311"
+       r="2" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient7918"
+       id="radialGradient7968"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.4065972,0,0,2.1428629,810.35359,682.73485)"
+       cx="-16.71875"
+       cy="3.344311"
+       fx="-16.71875"
+       fy="3.344311"
+       r="2" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="32"
+     inkscape:cx="3.7383502"
+     inkscape:cy="5.7078811"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-width="1920"
+     inkscape:window-height="1041"
+     inkscape:window-x="0"
+     inkscape:window-y="0"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7344">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-783.57141,-687.36218)">
+    <path
+       inkscape:connector-curvature="0"
+       style="fill:#ffffff;fill-opacity:1;stroke:#878787;stroke-width:0.89999998;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       d="m 785.05579,687.85437 0,9.09375 7.03125,0 0,-6.84375 -2.25,-2.25 -4.78125,0 z"
+       id="rect7358" />
+    <path
+       inkscape:connector-curvature="0"
+       style="fill:url(#radialGradient7968);fill-opacity:1;stroke:none"
+       d="m 786.52454,689.44812 0,6.09375 4,0 0,-5.28125 -0.84375,0 0,-0.8125 -3.15625,0 z"
+       id="rect7896" />
+    <g
+       style="font-size:1px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+       id="text7952">
+      <path
+         d="m 786.54126,689.4494 0.0986,0 0,0.646 0.35498,0 0,0.083 -0.45361,0 0,-0.72901"
+         style=""
+         id="path2999" />
+      <path
+         d="m 787.28833,689.69452 c -0.0482,0 -0.0863,0.0189 -0.11426,0.0566 -0.028,0.0374 -0.042,0.0889 -0.042,0.1543 0,0.0654 0.0138,0.11702 0.0415,0.15478 0.028,0.0374 0.0662,0.0562 0.11475,0.0562 0.0479,0 0.0858,-0.0189 0.11377,-0.0566 0.028,-0.0378 0.042,-0.0892 0.042,-0.15429 0,-0.0648 -0.014,-0.11605 -0.042,-0.15381 -0.028,-0.0381 -0.0659,-0.0571 -0.11377,-0.0571 m 0,-0.0762 c 0.0781,0 0.13949,0.0254 0.18408,0.0762 0.0446,0.0508 0.0669,0.12109 0.0669,0.21094 0,0.0895 -0.0223,0.15983 -0.0669,0.21093 -0.0446,0.0508 -0.10596,0.0762 -0.18408,0.0762 -0.0784,0 -0.13997,-0.0254 -0.18457,-0.0762 -0.0443,-0.0511 -0.0664,-0.12142 -0.0664,-0.21093 0,-0.0898 0.0221,-0.16016 0.0664,-0.21094 0.0446,-0.0508 0.10612,-0.0762 0.18457,-0.0762"
+         style=""
+         id="path3001" />
+      <path
+         d="m 788.00464,689.71552 c -0.0101,-0.006 -0.0212,-0.0101 -0.0332,-0.0127 -0.0117,-0.003 -0.0247,-0.004 -0.0391,-0.004 -0.0508,0 -0.0898,0.0166 -0.11718,0.0498 -0.027,0.0329 -0.0405,0.0802 -0.0405,0.14209 l 0,0.28809 -0.0903,0 0,-0.54688 0.0903,0 0,0.085 c 0.0189,-0.0332 0.0435,-0.0578 0.0737,-0.0737 0.0303,-0.0163 0.0671,-0.0244 0.11035,-0.0244 0.006,0 0.013,4.9e-4 0.0205,0.001 0.007,6.5e-4 0.0158,0.002 0.0249,0.003 l 4.9e-4,0.0923"
+         style=""
+         id="path3003" />
+      <path
+         d="m 788.54614,689.88251 0,0.0439 -0.41308,0 c 0.004,0.0618 0.0225,0.10905 0.0557,0.1416 0.0335,0.0322 0.0801,0.0483 0.13965,0.0483 0.0345,0 0.0679,-0.004 0.1001,-0.0127 0.0326,-0.008 0.0648,-0.0212 0.0967,-0.0381 l 0,0.085 c -0.0322,0.0137 -0.0653,0.0241 -0.0991,0.0312 -0.0339,0.007 -0.0682,0.0108 -0.10303,0.0108 -0.0872,0 -0.15641,-0.0254 -0.20752,-0.0762 -0.0508,-0.0508 -0.0762,-0.11946 -0.0762,-0.20605 0,-0.0895 0.0241,-0.16048 0.0723,-0.21289 0.0485,-0.0527 0.11377,-0.0791 0.1958,-0.0791 0.0736,0 0.13168,0.0238 0.17432,0.0713 0.043,0.0472 0.0645,0.11149 0.0645,0.19287 m -0.0898,-0.0264 c -6.5e-4,-0.0491 -0.0145,-0.0884 -0.0415,-0.11768 -0.0267,-0.0293 -0.0622,-0.0439 -0.10644,-0.0439 -0.0501,0 -0.0903,0.0142 -0.12061,0.0425 -0.0299,0.0283 -0.0472,0.0682 -0.0517,0.11963 l 0.32031,-4.9e-4"
+         style=""
+         id="path3005" />
+      <path
+         d="m 789.11938,689.73651 c 0.0225,-0.0404 0.0493,-0.0701 0.0806,-0.0893 0.0312,-0.0192 0.068,-0.0288 0.11035,-0.0288 0.057,0 0.10091,0.02 0.13184,0.0601 0.0309,0.0397 0.0464,0.0964 0.0464,0.16992 l 0,0.33008 -0.0903,0 0,-0.32715 c 0,-0.0524 -0.009,-0.0913 -0.0278,-0.1167 -0.0186,-0.0254 -0.0469,-0.0381 -0.085,-0.0381 -0.0466,0 -0.0833,0.0155 -0.11035,0.0464 -0.027,0.0309 -0.0405,0.0731 -0.0405,0.12646 l 0,0.30909 -0.0903,0 0,-0.32715 c 0,-0.0527 -0.009,-0.0916 -0.0278,-0.1167 -0.0186,-0.0254 -0.0472,-0.0381 -0.0859,-0.0381 -0.0459,0 -0.0824,0.0156 -0.10938,0.0469 -0.027,0.0309 -0.0405,0.0729 -0.0405,0.12597 l 0,0.30909 -0.0903,0 0,-0.54688 0.0903,0 0,0.085 c 0.0205,-0.0335 0.0451,-0.0583 0.0737,-0.0742 0.0286,-0.016 0.0627,-0.0239 0.10205,-0.0239 0.0397,0 0.0734,0.0101 0.10107,0.0303 0.028,0.0202 0.0487,0.0495 0.062,0.0879"
+         style=""
+         id="path3007" />
+      <path
+         d="m 786.53735,690.88153 0.0899,0 0,0.54688 -0.0899,0 0,-0.54688 m 0,-0.21289 0.0899,0 0,0.11377 -0.0899,0 0,-0.11377"
+         style=""
+         id="path3009" />
+      <path
+         d="m 786.90161,691.34637 0,0.29004 -0.0903,0 0,-0.75488 0.0903,0 0,0.083 c 0.0189,-0.0326 0.0426,-0.0566 0.0713,-0.0723 0.029,-0.016 0.0635,-0.0239 0.10352,-0.0239 0.0664,0 0.12028,0.0264 0.16162,0.0791 0.0417,0.0527 0.0625,0.12207 0.0625,0.20801 0,0.0859 -0.0208,0.15527 -0.0625,0.208 -0.0413,0.0527 -0.0952,0.0791 -0.16162,0.0791 -0.04,0 -0.0745,-0.008 -0.10352,-0.0234 -0.0286,-0.0159 -0.0524,-0.0402 -0.0713,-0.0728 m 0.30567,-0.19091 c -10e-6,-0.0661 -0.0137,-0.11784 -0.041,-0.15528 -0.027,-0.0378 -0.0643,-0.0566 -0.11182,-0.0566 -0.0475,0 -0.085,0.0189 -0.1123,0.0566 -0.027,0.0374 -0.0405,0.0892 -0.0405,0.15528 0,0.0661 0.0135,0.118 0.0405,0.15576 0.0273,0.0374 0.0648,0.0562 0.1123,0.0562 0.0475,0 0.0848,-0.0187 0.11182,-0.0562 0.0273,-0.0378 0.041,-0.0897 0.041,-0.15576"
+         style=""
+         id="path3011" />
+      <path
+         d="m 787.7981,690.89764 0,0.085 c -0.0254,-0.013 -0.0518,-0.0228 -0.0791,-0.0293 -0.0273,-0.007 -0.0557,-0.01 -0.085,-0.01 -0.0446,0 -0.0781,0.007 -0.10058,0.0205 -0.0221,0.0137 -0.0332,0.0342 -0.0332,0.0615 0,0.0208 0.008,0.0373 0.0239,0.0493 0.0159,0.0117 0.048,0.023 0.0962,0.0337 l 0.0308,0.007 c 0.0638,0.0137 0.10905,0.033 0.13575,0.0581 0.027,0.0247 0.0405,0.0594 0.0405,0.10401 0,0.0508 -0.0202,0.091 -0.0605,0.1206 -0.04,0.0296 -0.0952,0.0444 -0.16553,0.0444 -0.0293,0 -0.0599,-0.003 -0.0918,-0.009 -0.0316,-0.006 -0.0649,-0.014 -0.1001,-0.0254 l 0,-0.0928 c 0.0332,0.0173 0.0659,0.0303 0.0982,0.0391 0.0322,0.008 0.0641,0.0127 0.0957,0.0127 0.0423,0 0.0749,-0.007 0.0977,-0.0215 0.0228,-0.0147 0.0342,-0.0352 0.0342,-0.0615 0,-0.0244 -0.008,-0.0431 -0.0249,-0.0562 -0.0163,-0.013 -0.0522,-0.0255 -0.10792,-0.0376 l -0.0312,-0.007 c -0.0557,-0.0117 -0.0959,-0.0296 -0.1206,-0.0537 -0.0247,-0.0244 -0.0371,-0.0578 -0.0371,-0.1001 0,-0.0514 0.0182,-0.0912 0.0547,-0.11914 0.0365,-0.028 0.0882,-0.042 0.15527,-0.042 0.0332,0 0.0644,0.002 0.0937,0.007 0.0293,0.005 0.0563,0.0122 0.0811,0.022"
+         style=""
+         id="path3013" />
+      <path
+         d="m 787.96167,691.21259 0,-0.33106 0.0898,0 0,0.32764 c 0,0.0518 0.0101,0.0907 0.0303,0.1167 0.0202,0.0257 0.0505,0.0386 0.0908,0.0386 0.0485,0 0.0868,-0.0155 0.11474,-0.0464 0.0283,-0.0309 0.0425,-0.0731 0.0425,-0.12646 l 0,-0.31006 0.0898,0 0,0.54688 -0.0898,0 0,-0.084 c -0.0218,0.0332 -0.0472,0.0579 -0.0762,0.0742 -0.0286,0.0159 -0.062,0.0239 -0.1001,0.0239 -0.0628,0 -0.11051,-0.0195 -0.14306,-0.0586 -0.0326,-0.0391 -0.0488,-0.0962 -0.0488,-0.17138 m 0.22607,-0.34424 0,0"
+         style=""
+         id="path3015" />
+      <path
+         d="m 789.03149,690.98651 c 0.0225,-0.0404 0.0493,-0.0701 0.0806,-0.0893 0.0312,-0.0192 0.068,-0.0288 0.11035,-0.0288 0.057,0 0.10091,0.02 0.13184,0.0601 0.0309,0.0397 0.0464,0.0964 0.0464,0.16992 l 0,0.33008 -0.0903,0 0,-0.32715 c 0,-0.0524 -0.009,-0.0913 -0.0278,-0.1167 -0.0186,-0.0254 -0.0469,-0.0381 -0.085,-0.0381 -0.0465,0 -0.0833,0.0155 -0.11035,0.0464 -0.027,0.0309 -0.0405,0.0731 -0.0405,0.12646 l 0,0.30909 -0.0903,0 0,-0.32715 c 0,-0.0527 -0.009,-0.0916 -0.0278,-0.1167 -0.0186,-0.0254 -0.0472,-0.0381 -0.0859,-0.0381 -0.0459,0 -0.0824,0.0156 -0.10938,0.0469 -0.027,0.0309 -0.0405,0.0729 -0.0405,0.12597 l 0,0.30909 -0.0903,0 0,-0.54688 0.0903,0 0,0.085 c 0.0205,-0.0335 0.0451,-0.0583 0.0737,-0.0742 0.0286,-0.016 0.0627,-0.0239 0.10205,-0.0239 0.0397,0 0.0734,0.0101 0.10107,0.0303 0.028,0.0202 0.0487,0.0495 0.062,0.0879"
+         style=""
+         id="path3017" />
+      <path
+         d="m 786.89722,692.21454 0,-0.2959 0.0898,0 0,0.75977 -0.0898,0 0,-0.082 c -0.0189,0.0326 -0.0428,0.0568 -0.0718,0.0728 -0.0286,0.0156 -0.0631,0.0234 -0.10352,0.0234 -0.0661,0 -0.11995,-0.0264 -0.16162,-0.0791 -0.0413,-0.0527 -0.062,-0.12207 -0.062,-0.208 0,-0.0859 0.0207,-0.15528 0.062,-0.20801 0.0417,-0.0527 0.0955,-0.0791 0.16162,-0.0791 0.0404,0 0.0749,0.008 0.10352,0.0239 0.029,0.0156 0.0529,0.0397 0.0718,0.0723 m -0.30616,0.19092 c 0,0.0661 0.0135,0.118 0.0405,0.15576 0.0274,0.0374 0.0648,0.0562 0.11231,0.0562 0.0475,0 0.085,-0.0187 0.1123,-0.0562 0.0273,-0.0378 0.041,-0.0897 0.041,-0.15576 0,-0.0661 -0.0137,-0.11784 -0.041,-0.15528 -0.0273,-0.0378 -0.0648,-0.0566 -0.1123,-0.0566 -0.0475,0 -0.085,0.0189 -0.11231,0.0566 -0.027,0.0374 -0.0405,0.0892 -0.0405,0.15528"
+         style=""
+         id="path3019" />
+      <path
+         d="m 787.38403,692.19452 c -0.0482,0 -0.0863,0.0189 -0.11425,0.0566 -0.028,0.0374 -0.042,0.0889 -0.042,0.1543 0,0.0654 0.0138,0.11702 0.0415,0.15478 0.028,0.0374 0.0662,0.0562 0.11474,0.0562 0.0478,0 0.0858,-0.0189 0.11377,-0.0566 0.028,-0.0378 0.042,-0.0892 0.042,-0.15429 0,-0.0648 -0.014,-0.11605 -0.042,-0.15381 -0.028,-0.0381 -0.0659,-0.0571 -0.11377,-0.0571 m 0,-0.0762 c 0.0781,0 0.13949,0.0254 0.18409,0.0762 0.0446,0.0508 0.0669,0.12109 0.0669,0.21094 0,0.0895 -0.0223,0.15983 -0.0669,0.21093 -0.0446,0.0508 -0.10596,0.0762 -0.18409,0.0762 -0.0785,0 -0.13997,-0.0254 -0.18457,-0.0762 -0.0443,-0.0511 -0.0664,-0.12142 -0.0664,-0.21093 0,-0.0898 0.0221,-0.16016 0.0664,-0.21094 0.0446,-0.0508 0.10612,-0.0762 0.18457,-0.0762"
+         style=""
+         id="path3021" />
+      <path
+         d="m 787.78345,691.91864 0.0898,0 0,0.75977 -0.0898,0 0,-0.75977"
+         style=""
+         id="path3023" />
+      <path
+         d="m 788.27271,692.19452 c -0.0482,0 -0.0863,0.0189 -0.11426,0.0566 -0.028,0.0374 -0.042,0.0889 -0.042,0.1543 -10e-6,0.0654 0.0138,0.11702 0.0415,0.15478 0.028,0.0374 0.0662,0.0562 0.11475,0.0562 0.0479,0 0.0858,-0.0189 0.11376,-0.0566 0.028,-0.0378 0.042,-0.0892 0.042,-0.15429 0,-0.0648 -0.014,-0.11605 -0.042,-0.15381 -0.028,-0.0381 -0.0659,-0.0571 -0.11376,-0.0571 m 0,-0.0762 c 0.0781,0 0.13948,0.0254 0.18408,0.0762 0.0446,0.0508 0.0669,0.12109 0.0669,0.21094 0,0.0895 -0.0223,0.15983 -0.0669,0.21093 -0.0446,0.0508 -0.10596,0.0762 -0.18408,0.0762 -0.0785,0 -0.13998,-0.0254 -0.18458,-0.0762 -0.0443,-0.0511 -0.0664,-0.12142 -0.0664,-0.21093 0,-0.0898 0.0221,-0.16016 0.0664,-0.21094 0.0446,-0.0508 0.10612,-0.0762 0.18458,-0.0762"
+         style=""
+         id="path3025" />
+      <path
+         d="m 788.98901,692.21552 c -0.0101,-0.006 -0.0212,-0.0101 -0.0332,-0.0127 -0.0117,-0.003 -0.0247,-0.004 -0.0391,-0.004 -0.0508,0 -0.0898,0.0166 -0.11719,0.0498 -0.027,0.0329 -0.0405,0.0802 -0.0405,0.14209 l 0,0.28809 -0.0903,0 0,-0.54688 0.0903,0 0,0.085 c 0.0189,-0.0332 0.0435,-0.0578 0.0737,-0.0737 0.0303,-0.0163 0.0671,-0.0244 0.11036,-0.0244 0.006,0 0.013,4.9e-4 0.0205,0.001 0.007,6.5e-4 0.0158,0.002 0.0249,0.003 l 4.8e-4,0.0923"
+         style=""
+         id="path3027" />
+      <path
+         d="m 786.88599,693.39764 0,0.085 c -0.0254,-0.013 -0.0518,-0.0228 -0.0791,-0.0293 -0.0273,-0.007 -0.0557,-0.01 -0.085,-0.01 -0.0446,0 -0.0781,0.007 -0.10058,0.0205 -0.0221,0.0137 -0.0332,0.0342 -0.0332,0.0615 0,0.0208 0.008,0.0373 0.0239,0.0493 0.0159,0.0117 0.048,0.023 0.0962,0.0337 l 0.0308,0.007 c 0.0638,0.0137 0.10905,0.033 0.13575,0.0581 0.027,0.0247 0.0405,0.0594 0.0405,0.10401 0,0.0508 -0.0202,0.091 -0.0605,0.1206 -0.04,0.0296 -0.0952,0.0444 -0.16553,0.0444 -0.0293,0 -0.0599,-0.003 -0.0918,-0.009 -0.0316,-0.006 -0.0649,-0.014 -0.1001,-0.0254 l 0,-0.0928 c 0.0332,0.0173 0.0659,0.0303 0.0982,0.0391 0.0322,0.008 0.0641,0.0127 0.0957,0.0127 0.0423,0 0.0749,-0.007 0.0977,-0.0215 0.0228,-0.0147 0.0342,-0.0352 0.0342,-0.0615 0,-0.0244 -0.008,-0.0431 -0.0249,-0.0562 -0.0163,-0.013 -0.0522,-0.0255 -0.10791,-0.0376 l -0.0312,-0.007 c -0.0557,-0.0117 -0.0959,-0.0296 -0.12061,-0.0537 -0.0247,-0.0244 -0.0371,-0.0578 -0.0371,-0.1001 0,-0.0514 0.0182,-0.0912 0.0547,-0.11914 0.0365,-0.028 0.0882,-0.042 0.15527,-0.042 0.0332,0 0.0644,0.002 0.0937,0.007 0.0293,0.005 0.0563,0.0122 0.0811,0.022"
+         style=""
+         id="path3029" />
+      <path
+         d="m 787.05884,693.38153 0.0898,0 0,0.54688 -0.0898,0 0,-0.54688 m 0,-0.21289 0.0898,0 0,0.11377 -0.0898,0 0,-0.11377"
+         style=""
+         id="path3031" />
+      <path
+         d="m 787.42505,693.22626 0,0.15527 0.18506,0 0,0.0698 -0.18506,0 0,0.29688 c 0,0.0446 0.006,0.0732 0.0181,0.0859 0.0124,0.0127 0.0373,0.019 0.0747,0.019 l 0.0923,0 0,0.0752 -0.0923,0 c -0.0693,0 -0.11719,-0.0129 -0.14355,-0.0386 -0.0264,-0.026 -0.0396,-0.0732 -0.0396,-0.1416 l 0,-0.29688 -0.0659,0 0,-0.0698 0.0659,0 0,-0.15527 0.0903,0"
+         style=""
+         id="path3033" />
+      <path
+         d="m 788.29565,693.6535 c -0.0726,0 -0.12288,0.008 -0.15087,0.0249 -0.028,0.0166 -0.042,0.0449 -0.042,0.085 0,0.0319 0.0104,0.0573 0.0312,0.0762 0.0212,0.0185 0.0498,0.0278 0.0859,0.0278 0.0498,0 0.0897,-0.0176 0.11963,-0.0527 0.0303,-0.0355 0.0454,-0.0825 0.0454,-0.14112 l 0,-0.02 -0.0894,0 m 0.1792,-0.0371 0,0.31202 -0.0898,0 0,-0.083 c -0.0205,0.0332 -0.0461,0.0578 -0.0767,0.0737 -0.0306,0.0156 -0.068,0.0234 -0.11231,0.0234 -0.056,0 -0.10058,-0.0156 -0.13378,-0.0469 -0.0329,-0.0316 -0.0493,-0.0737 -0.0493,-0.12646 0,-0.0615 0.0205,-0.10791 0.0615,-0.13916 0.0413,-0.0312 0.10287,-0.0469 0.18457,-0.0469 l 0.12598,0 0,-0.009 c 0,-0.0413 -0.0137,-0.0732 -0.041,-0.0957 -0.027,-0.0228 -0.0651,-0.0342 -0.11425,-0.0342 -0.0312,0 -0.0617,0.004 -0.0913,0.0112 -0.0296,0.007 -0.0581,0.0187 -0.0854,0.0337 l 0,-0.083 c 0.0329,-0.0127 0.0648,-0.0221 0.0957,-0.0283 0.0309,-0.007 0.061,-0.01 0.0903,-0.01 0.0791,0 0.13819,0.0205 0.17725,0.0615 0.0391,0.041 0.0586,0.10319 0.0586,0.18652"
+         style=""
+         id="path3035" />
+      <path
+         d="m 789.08618,693.48651 c 0.0225,-0.0404 0.0493,-0.0701 0.0806,-0.0893 0.0312,-0.0192 0.068,-0.0288 0.11035,-0.0288 0.057,0 0.10091,0.02 0.13184,0.0601 0.0309,0.0397 0.0464,0.0964 0.0464,0.16992 l 0,0.33008 -0.0903,0 0,-0.32715 c 0,-0.0524 -0.009,-0.0913 -0.0278,-0.1167 -0.0186,-0.0254 -0.0469,-0.0381 -0.085,-0.0381 -0.0466,0 -0.0833,0.0155 -0.11035,0.0464 -0.027,0.0309 -0.0405,0.0731 -0.0405,0.12646 l 0,0.30909 -0.0903,0 0,-0.32715 c 0,-0.0527 -0.009,-0.0916 -0.0278,-0.1167 -0.0186,-0.0254 -0.0472,-0.0381 -0.0859,-0.0381 -0.0459,0 -0.0824,0.0156 -0.10938,0.0469 -0.027,0.0309 -0.0405,0.0729 -0.0405,0.12597 l 0,0.30909 -0.0903,0 0,-0.54688 0.0903,0 0,0.085 c 0.0205,-0.0335 0.0451,-0.0583 0.0737,-0.0742 0.0286,-0.016 0.0627,-0.0239 0.10206,-0.0239 0.0397,0 0.0734,0.0101 0.10107,0.0303 0.028,0.0202 0.0487,0.0495 0.062,0.0879"
+         style=""
+         id="path3037" />
+      <path
+         d="m 790.10278,693.63251 0,0.0439 -0.41308,0 c 0.004,0.0618 0.0225,0.10905 0.0557,0.1416 0.0335,0.0322 0.0801,0.0483 0.13965,0.0483 0.0345,0 0.0679,-0.004 0.1001,-0.0127 0.0326,-0.008 0.0648,-0.0212 0.0967,-0.0381 l 0,0.085 c -0.0322,0.0137 -0.0653,0.0241 -0.0991,0.0312 -0.0339,0.007 -0.0682,0.0108 -0.10303,0.0108 -0.0872,0 -0.15641,-0.0254 -0.20752,-0.0762 -0.0508,-0.0508 -0.0762,-0.11946 -0.0762,-0.20605 0,-0.0895 0.0241,-0.16048 0.0723,-0.21289 0.0485,-0.0527 0.11377,-0.0791 0.1958,-0.0791 0.0736,0 0.13168,0.0238 0.17432,0.0713 0.043,0.0472 0.0645,0.11149 0.0645,0.19287 m -0.0898,-0.0264 c -6.5e-4,-0.0491 -0.0145,-0.0884 -0.0415,-0.11768 -0.0267,-0.0293 -0.0622,-0.0439 -0.10645,-0.0439 -0.0501,0 -0.0903,0.0142 -0.12061,0.0425 -0.0299,0.0283 -0.0472,0.0682 -0.0517,0.11963 l 0.32031,-4.9e-4"
+         style=""
+         id="path3039" />
+      <path
+         d="m 790.33911,693.22626 0,0.15527 0.18506,0 0,0.0698 -0.18506,0 0,0.29688 c 0,0.0446 0.006,0.0732 0.0181,0.0859 0.0124,0.0127 0.0373,0.019 0.0747,0.019 l 0.0923,0 0,0.0752 -0.0923,0 c -0.0693,0 -0.11718,-0.0129 -0.14355,-0.0386 -0.0264,-0.026 -0.0395,-0.0732 -0.0395,-0.1416 l 0,-0.29688 -0.0659,0 0,-0.0698 0.0659,0 0,-0.15527 0.0903,0"
+         style=""
+         id="path3041" />
+    </g>
+    <path
+       style="fill:none;stroke:#878787;stroke-width:0.89999998;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       d="m 789.74329,687.77624 0,2.35938 2.34375,0"
+       id="path7894"
+       inkscape:connector-curvature="0" />
+  </g>
+</svg>
diff --git a/skins/vector/images/external-link-ltr-icon.svg b/skins/vector/images/external-link-ltr-icon.svg
new file mode 100644 (file)
index 0000000..d77b879
--- /dev/null
@@ -0,0 +1,132 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="10"
+   height="10"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.48.4 r9939"
+   sodipodi:docname="external-link-ltr-icon.svg"
+   inkscape:export-filename="/run/user/1000/gvfs/sftp:host=users.v-lo.krakow.pl,user=m4tx/home/WWW/m4tx/WWW/Wikimedia/skins/vector/images/external-link-ltr-icon.png"
+   inkscape:export-xdpi="144.13724"
+   inkscape:export-ydpi="144.13724">
+  <defs
+     id="defs4">
+    <marker
+       inkscape:stockid="Club"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Club"
+       style="overflow:visible">
+      <path
+         id="path3996"
+         d="M -1.5971367,-7.0977635 C -3.4863874,-7.0977635 -5.0235187,-5.5606321 -5.0235187,-3.6713813 C -5.0235187,-3.0147015 -4.7851656,-2.4444556 -4.4641095,-1.9232271 C -4.5028609,-1.8911157 -4.5437814,-1.8647646 -4.5806531,-1.8299921 C -5.2030765,-2.6849849 -6.1700514,-3.2751330 -7.3077730,-3.2751330 C -9.1970245,-3.2751331 -10.734155,-1.7380016 -10.734155,0.15124914 C -10.734155,2.0404999 -9.1970245,3.5776313 -7.3077730,3.5776313 C -6.3143268,3.5776313 -5.4391540,3.1355702 -4.8137404,2.4588126 C -4.9384274,2.8137041 -5.0235187,3.1803000 -5.0235187,3.5776313 C -5.0235187,5.4668819 -3.4863874,7.0040135 -1.5971367,7.0040135 C 0.29211394,7.0040135 1.8292454,5.4668819 1.8292454,3.5776313 C 1.8292454,2.7842354 1.5136868,2.0838028 1.0600576,1.5031550 C 2.4152718,1.7663868 3.7718375,2.2973711 4.7661444,3.8340272 C 4.0279463,3.0958289 3.5540908,1.7534117 3.5540908,-0.058529361 L 2.9247554,-0.10514681 L 3.5074733,-0.12845553 C 3.5074733,-1.9403966 3.9580199,-3.2828138 4.6962183,-4.0210121 C 3.7371277,-2.5387813 2.4390549,-1.9946496 1.1299838,-1.7134486 C 1.5341802,-2.2753578 1.8292454,-2.9268556 1.8292454,-3.6713813 C 1.8292454,-5.5606319 0.29211394,-7.0977635 -1.5971367,-7.0977635 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:0.74587913pt"
+         transform="scale(0.6)" />
+    </marker>
+    <marker
+       inkscape:stockid="DiamondM"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="DiamondM"
+       style="overflow:visible">
+      <path
+         id="path3849"
+         d="M 0,-7.0710768 L -7.0710894,0 L 0,7.0710589 L 7.0710462,0 L 0,-7.0710768 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.4)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lstart"
+       style="overflow:visible">
+      <path
+         id="path3767"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(12.5,0)" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="22.627417"
+     inkscape:cx="11.725312"
+     inkscape:cy="5.6780159"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-width="1920"
+     inkscape:window-height="1041"
+     inkscape:window-x="0"
+     inkscape:window-y="0"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-826.42859,-698.79077)">
+    <rect
+       style="fill:#ffffff;stroke:#0066cc;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;fill-opacity:1"
+       id="rect2996"
+       width="5.9821429"
+       height="5.9821429"
+       x="826.92859"
+       y="702.30865"
+       inkscape:export-filename="/home/m4tx/Pulpit/eheheh.png"
+       inkscape:export-xdpi="90.085777"
+       inkscape:export-ydpi="90.085777" />
+    <g
+       id="g4815"
+       transform="matrix(0.70710678,0.70710678,-0.70710678,0.70710678,762.87,-359.88339)"
+       inkscape:export-filename="/home/m4tx/Pulpit/eheheh.png"
+       inkscape:export-xdpi="90.085777"
+       inkscape:export-ydpi="90.085777">
+      <path
+         sodipodi:nodetypes="cccccccccc"
+         inkscape:connector-curvature="0"
+         id="path4777"
+         d="m 796.90819,700.28317 3.70127,-3.70126 3.81174,3.81175 -0.0189,2.20336 -1.85234,0 0,3.8543 -3.80233,0 0,-3.97108 -1.8536,0 z"
+         style="fill:#0066ff;fill-opacity:1;stroke:none" />
+      <path
+         sodipodi:nodetypes="cccccccc"
+         inkscape:connector-curvature="0"
+         id="path4779"
+         d="m 800.60946,698.00244 3.46986,3.43865 -2.5702,0 0,4.07436 -1.7362,0 0,-4.07436 -2.61754,-3.6e-4 z"
+         style="fill:#ffffff;fill-opacity:1;stroke:none" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/vector/images/external-link-rtl-icon.svg b/skins/vector/images/external-link-rtl-icon.svg
new file mode 100644 (file)
index 0000000..7ddf89e
--- /dev/null
@@ -0,0 +1,133 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="10"
+   height="10"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.48.4 r9939"
+   sodipodi:docname="external-link-ltr-icon.svg"
+   inkscape:export-filename="/run/user/1000/gvfs/sftp:host=users.v-lo.krakow.pl,user=m4tx/home/WWW/m4tx/WWW/Wikimedia/skins/vector/images/external-link-ltr-icon.png"
+   inkscape:export-xdpi="144.13724"
+   inkscape:export-ydpi="144.13724">
+  <defs
+     id="defs4">
+    <marker
+       inkscape:stockid="Club"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Club"
+       style="overflow:visible">
+      <path
+         id="path3996"
+         d="M -1.5971367,-7.0977635 C -3.4863874,-7.0977635 -5.0235187,-5.5606321 -5.0235187,-3.6713813 C -5.0235187,-3.0147015 -4.7851656,-2.4444556 -4.4641095,-1.9232271 C -4.5028609,-1.8911157 -4.5437814,-1.8647646 -4.5806531,-1.8299921 C -5.2030765,-2.6849849 -6.1700514,-3.2751330 -7.3077730,-3.2751330 C -9.1970245,-3.2751331 -10.734155,-1.7380016 -10.734155,0.15124914 C -10.734155,2.0404999 -9.1970245,3.5776313 -7.3077730,3.5776313 C -6.3143268,3.5776313 -5.4391540,3.1355702 -4.8137404,2.4588126 C -4.9384274,2.8137041 -5.0235187,3.1803000 -5.0235187,3.5776313 C -5.0235187,5.4668819 -3.4863874,7.0040135 -1.5971367,7.0040135 C 0.29211394,7.0040135 1.8292454,5.4668819 1.8292454,3.5776313 C 1.8292454,2.7842354 1.5136868,2.0838028 1.0600576,1.5031550 C 2.4152718,1.7663868 3.7718375,2.2973711 4.7661444,3.8340272 C 4.0279463,3.0958289 3.5540908,1.7534117 3.5540908,-0.058529361 L 2.9247554,-0.10514681 L 3.5074733,-0.12845553 C 3.5074733,-1.9403966 3.9580199,-3.2828138 4.6962183,-4.0210121 C 3.7371277,-2.5387813 2.4390549,-1.9946496 1.1299838,-1.7134486 C 1.5341802,-2.2753578 1.8292454,-2.9268556 1.8292454,-3.6713813 C 1.8292454,-5.5606319 0.29211394,-7.0977635 -1.5971367,-7.0977635 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:0.74587913pt"
+         transform="scale(0.6)" />
+    </marker>
+    <marker
+       inkscape:stockid="DiamondM"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="DiamondM"
+       style="overflow:visible">
+      <path
+         id="path3849"
+         d="M 0,-7.0710768 L -7.0710894,0 L 0,7.0710589 L 7.0710462,0 L 0,-7.0710768 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.4)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lstart"
+       style="overflow:visible">
+      <path
+         id="path3767"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(12.5,0)" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="22.627417"
+     inkscape:cx="11.725312"
+     inkscape:cy="5.6780159"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-width="1920"
+     inkscape:window-height="1041"
+     inkscape:window-x="0"
+     inkscape:window-y="0"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-826.42859,-698.79077)">
+    <rect
+       style="fill:#ffffff;fill-opacity:1;stroke:#0066cc;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="rect2996"
+       width="5.9821429"
+       height="5.9821429"
+       x="-835.92859"
+       y="702.30865"
+       inkscape:export-filename="/home/m4tx/Pulpit/eheheh.png"
+       inkscape:export-xdpi="90.085777"
+       inkscape:export-ydpi="90.085777"
+       transform="scale(-1,1)" />
+    <g
+       id="g4815"
+       transform="matrix(-0.70710678,0.70710678,0.70710678,0.70710678,899.98717,-359.88339)"
+       inkscape:export-filename="/home/m4tx/Pulpit/eheheh.png"
+       inkscape:export-xdpi="90.085777"
+       inkscape:export-ydpi="90.085777">
+      <path
+         sodipodi:nodetypes="cccccccccc"
+         inkscape:connector-curvature="0"
+         id="path4777"
+         d="m 796.90819,700.28317 3.70127,-3.70126 3.81174,3.81175 -0.0189,2.20336 -1.85234,0 0,3.8543 -3.80233,0 0,-3.97108 -1.8536,0 z"
+         style="fill:#0066ff;fill-opacity:1;stroke:none" />
+      <path
+         sodipodi:nodetypes="cccccccc"
+         inkscape:connector-curvature="0"
+         id="path4779"
+         d="m 800.60946,698.00244 3.46986,3.43865 -2.5702,0 0,4.07436 -1.7362,0 0,-4.07436 -2.61754,-3.6e-4 z"
+         style="fill:#ffffff;fill-opacity:1;stroke:none" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/vector/images/file-icon.svg b/skins/vector/images/file-icon.svg
new file mode 100644 (file)
index 0000000..cd2106d
--- /dev/null
@@ -0,0 +1,128 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="10"
+   height="10"
+   id="svg7339"
+   version="1.1"
+   inkscape:version="0.48.4 r9939"
+   sodipodi:docname="Nowy dokument 30">
+  <defs
+     id="defs7341">
+    <linearGradient
+       id="linearGradient7918">
+      <stop
+         style="stop-color:#e2e2e2;stop-opacity:1;"
+         offset="0"
+         id="stop7920" />
+      <stop
+         style="stop-color:#f8f8f8;stop-opacity:1;"
+         offset="1"
+         id="stop7922" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient7902">
+      <stop
+         style="stop-color:#e2e2e2;stop-opacity:1;"
+         offset="0"
+         id="stop7904" />
+      <stop
+         style="stop-color:#e2e2e2;stop-opacity:1;"
+         offset="1"
+         id="stop7906" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient7918"
+       id="radialGradient7924"
+       cx="-16.71875"
+       cy="3.344311"
+       fx="-16.71875"
+       fy="3.344311"
+       r="2"
+       gradientTransform="matrix(1.4065972,0,0,2.1428629,6.7977966,-4.7132748)"
+       gradientUnits="userSpaceOnUse" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient7918"
+       id="radialGradient7931"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.4065972,0,0,2.1428629,6.7977966,-4.7132748)"
+       cx="-16.71875"
+       cy="3.344311"
+       fx="-16.71875"
+       fy="3.344311"
+       r="2" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="22.627417"
+     inkscape:cx="1.5361037"
+     inkscape:cy="9.1135498"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-width="1920"
+     inkscape:window-height="1014"
+     inkscape:window-x="0"
+     inkscape:window-y="27"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7344">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-783.57141,-687.36218)">
+    <g
+       id="g7926"
+       transform="translate(19.984375,0.08593751)">
+      <path
+         transform="translate(783.57141,687.36218)"
+         id="rect7358"
+         d="m -18.5,0.40625 0,9.09375 7.03125,0 0,-6.84375 -2.25,-2.25 -4.78125,0 z"
+         style="fill:#ffffff;fill-opacity:1;stroke:#878787;stroke-width:0.89999998;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+         inkscape:connector-curvature="0" />
+      <path
+         id="rect7896"
+         transform="translate(783.57141,687.36218)"
+         d="m -17.03125,2 0,6.09375 4,0 0,-5.28125 -0.84375,0 0,-0.8125 -3.15625,0 z"
+         style="fill:url(#radialGradient7931);fill-opacity:1;stroke:none"
+         inkscape:connector-curvature="0" />
+      <path
+         transform="translate(783.57141,687.36218)"
+         inkscape:connector-curvature="0"
+         id="path7894"
+         d="m -13.8125,0.32812497 0,2.35937503 2.34375,0"
+         style="fill:none;stroke:#878787;stroke-width:0.89999998;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/vector/images/lock-icon.svg b/skins/vector/images/lock-icon.svg
new file mode 100644 (file)
index 0000000..1c40d4a
--- /dev/null
@@ -0,0 +1,123 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="10"
+   height="10"
+   id="svg3813"
+   version="1.1"
+   inkscape:version="0.48.4 r9939"
+   sodipodi:docname="lock-icon.svg">
+  <defs
+     id="defs3815">
+    <linearGradient
+       id="linearGradient4348">
+      <stop
+         style="stop-color:#fff8bb;stop-opacity:1;"
+         offset="0"
+         id="stop4350" />
+      <stop
+         style="stop-color:#e9d84d;stop-opacity:1;"
+         offset="1"
+         id="stop4352" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4348"
+       id="radialGradient4354"
+       cx="806.97711"
+       cy="720.04266"
+       fx="806.97711"
+       fy="720.04266"
+       r="4.5721774"
+       gradientTransform="matrix(0.66177697,-3.2424834e-7,5.5632116e-7,1.1354276,273.09596,-96.976308)"
+       gradientUnits="userSpaceOnUse" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4348"
+       id="radialGradient4394"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.66177697,-3.2424834e-7,5.5632116e-7,1.1354276,273.09596,-96.976308)"
+       cx="806.97711"
+       cy="720.04266"
+       fx="806.97711"
+       fy="720.04266"
+       r="4.5721774" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.6568542"
+     inkscape:cx="-65.758796"
+     inkscape:cy="-20.849434"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-width="1920"
+     inkscape:window-height="1041"
+     inkscape:window-x="0"
+     inkscape:window-y="0"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata3818">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-817.85712,-715.93359)">
+    <g
+       id="g4389"
+       transform="translate(14.984745,-0.12063576)">
+      <rect
+         y="719.4939"
+         x="803.37238"
+         height="6.0609155"
+         width="8.1443548"
+         id="rect3832"
+         style="fill:url(#radialGradient4394);fill-opacity:1;stroke:#888a85;stroke-width:1;stroke-linejoin:round;stroke-miterlimit:2;stroke-opacity:1;stroke-dasharray:none" />
+      <path
+         sodipodi:end="6.2831853"
+         sodipodi:start="3.1415927"
+         transform="matrix(0.98668274,0,0,2.0515802,802.05109,715.32099)"
+         d="m 2.4622467,2.0134813 c 0,-0.7845354 1.3285159,-1.42052694 2.9673232,-1.4205269 1.6388072,3e-8 2.9673229,0.6359916 2.9673229,1.420527 l -2.9673231,0 z"
+         sodipodi:ry="1.420527"
+         sodipodi:rx="2.9673231"
+         sodipodi:cy="2.0134814"
+         sodipodi:cx="5.4295697"
+         id="path4346"
+         style="fill:none;stroke:#888a85;stroke-width:0.68014622;stroke-linejoin:miter;stroke-miterlimit:2;stroke-opacity:1;stroke-dasharray:none"
+         sodipodi:type="arc" />
+      <path
+         style="fill:none;stroke:#ac5f08;stroke-width:1.04513526px;stroke-linecap:square;stroke-linejoin:miter;stroke-opacity:0.69072164"
+         d="m 807.32587,723.57494 0,-1.12645"
+         id="path4368"
+         inkscape:connector-curvature="0" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/vector/images/mail-icon.svg b/skins/vector/images/mail-icon.svg
new file mode 100644 (file)
index 0000000..43b4ce8
--- /dev/null
@@ -0,0 +1,138 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="10"
+   height="10"
+   id="svg4396"
+   version="1.1"
+   inkscape:version="0.48.4 r9939"
+   sodipodi:docname="Nowy dokument 10">
+  <defs
+     id="defs4398">
+    <linearGradient
+       id="linearGradient4947">
+      <stop
+         style="stop-color:#d2d2d2;stop-opacity:1;"
+         offset="0"
+         id="stop4949" />
+      <stop
+         style="stop-color:#f6f6f6;stop-opacity:0;"
+         offset="1"
+         id="stop4951" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient4927">
+      <stop
+         style="stop-color:#888a85;stop-opacity:1;"
+         offset="0"
+         id="stop4929" />
+      <stop
+         style="stop-color:#888a85;stop-opacity:0;"
+         offset="1"
+         id="stop4931" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4927"
+       id="linearGradient4933"
+       x1="847.07153"
+       y1="696.06909"
+       x2="847.07153"
+       y2="699.29285"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(14,0)" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4947"
+       id="radialGradient4953"
+       cx="861.14233"
+       cy="699.01233"
+       fx="861.14233"
+       fy="699.01233"
+       r="4.987131"
+       gradientTransform="matrix(1.1817158,0,0,1.1856764,-156.48316,-109.77743)"
+       gradientUnits="userSpaceOnUse" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4947"
+       id="radialGradient4962"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.1817158,0,0,1.1856764,-156.48316,-109.77743)"
+       cx="861.14233"
+       cy="699.01233"
+       fx="861.14233"
+       fy="699.01233"
+       r="4.987131" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="8"
+     inkscape:cx="17.964337"
+     inkscape:cy="-3.5009398"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-width="1920"
+     inkscape:window-height="1014"
+     inkscape:window-x="0"
+     inkscape:window-y="27"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata4401">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-832.14288,-690.2193)">
+    <g
+       id="g4957"
+       transform="translate(-23.99948,-20.005085)">
+      <path
+         inkscape:connector-curvature="0"
+         id="path4415"
+         d="m 856.64003,714.98211 4.51344,-4.27677 4.49122,4.2557 0,4.78239 -8.96019,0 z"
+         style="fill:url(#radialGradient4962);fill-opacity:1;stroke:#888a85;stroke-width:0.96960205px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="ccc"
+         style="fill:#a8a7a3;fill-opacity:1;stroke:none"
+         d="m 858.18557,715.14414 2.96409,-2.80866 2.94949,2.79482"
+         id="path4937"
+         inkscape:connector-curvature="0" />
+      <path
+         sodipodi:nodetypes="ccccc"
+         inkscape:connector-curvature="0"
+         id="path4955"
+         d="m 857.89337,719.26617 3.26025,-3.14859 3.23877,3.11734 -3.24112,-1.90625 z"
+         style="fill:#888a85;fill-opacity:1;stroke:none" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/vector/images/news-icon.svg b/skins/vector/images/news-icon.svg
new file mode 100644 (file)
index 0000000..b8f2102
--- /dev/null
@@ -0,0 +1,220 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="10"
+   height="10"
+   id="svg4983"
+   version="1.1"
+   inkscape:version="0.48.4 r9939"
+   sodipodi:docname="news-icon.svg">
+  <defs
+     id="defs4985">
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient5528">
+      <stop
+         style="stop-color:#cccccc;stop-opacity:1;"
+         offset="0"
+         id="stop5530" />
+      <stop
+         style="stop-color:#cccccc;stop-opacity:0;"
+         offset="1"
+         id="stop5532" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5528"
+       id="linearGradient5534"
+       x1="902.61218"
+       y1="696.32751"
+       x2="902.61218"
+       y2="694.04303"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5528"
+       id="linearGradient5566"
+       gradientUnits="userSpaceOnUse"
+       x1="902.61218"
+       y1="696.32751"
+       x2="902.61218"
+       y2="694.04303" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5528"
+       id="linearGradient3048"
+       gradientUnits="userSpaceOnUse"
+       x1="902.61218"
+       y1="696.32751"
+       x2="902.61218"
+       y2="694.04303"
+       gradientTransform="translate(-19.98763,0.00341)" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5528"
+       id="linearGradient3799"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-29.98763,0.00341)"
+       x1="902.61218"
+       y1="696.32751"
+       x2="902.61218"
+       y2="694.04303" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5528"
+       id="linearGradient3821"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-907.84475,-687.35877)"
+       x1="902.61218"
+       y1="696.32751"
+       x2="902.61218"
+       y2="694.04303" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5528"
+       id="linearGradient3824"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-19.98763,0.00341)"
+       x1="902.61218"
+       y1="696.32751"
+       x2="902.61218"
+       y2="694.04303" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="45.254834"
+     inkscape:cx="0.50343757"
+     inkscape:cy="4.9811997"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-width="1920"
+     inkscape:window-height="1041"
+     inkscape:window-x="0"
+     inkscape:window-y="0"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata4988">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-877.85712,-687.36218)">
+    <g
+       style="font-size:41.13991928px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+       id="text5536">
+      <path
+         inkscape:connector-curvature="0"
+         d="m 879.87841,689.39933 0.19335,0 0,0.60364 0.33948,0 0,0.14614 -0.53283,0 0,-0.74978"
+         style="font-size:1.02849805px;font-weight:bold;-inkscape-font-specification:Sans Bold"
+         id="path3051" />
+      <path
+         inkscape:connector-curvature="0"
+         d="m 880.52524,689.58665 0.17978,0 0,0.56246 -0.17978,0 0,-0.56246 m 0,-0.21896 0.17978,0 0,0.14664 -0.17978,0 0,-0.14664"
+         style="font-size:1.02849805px;font-weight:bold;-inkscape-font-specification:Sans Bold"
+         id="path3053" />
+      <path
+         inkscape:connector-curvature="0"
+         d="m 881.05857,690.06775 0,0.29529 -0.17979,0 0,-0.77639 0.17979,0 0,0.0824 c 0.0248,-0.0328 0.0522,-0.0569 0.0824,-0.0723 0.0301,-0.0157 0.0648,-0.0236 0.10396,-0.0236 0.0693,0 0.12621,0.0276 0.17074,0.0829 0.0445,0.0549 0.0668,0.12572 0.0668,0.21243 0,0.0867 -0.0223,0.15769 -0.0668,0.21293 -0.0445,0.0549 -0.10144,0.0824 -0.17074,0.0824 -0.0392,0 -0.0738,-0.008 -0.10396,-0.0231 -0.0301,-0.0157 -0.0576,-0.04 -0.0824,-0.0728 m 0.11952,-0.36409 c -0.0385,0 -0.0681,0.0142 -0.0889,0.0427 -0.0204,0.0281 -0.0306,0.0688 -0.0306,0.12203 0,0.0532 0.0102,0.0941 0.0306,0.12254 0.0208,0.0281 0.0504,0.0422 0.0889,0.0422 0.0385,0 0.0678,-0.0141 0.0879,-0.0422 0.0204,-0.0281 0.0306,-0.069 0.0306,-0.12254 0,-0.0536 -0.0102,-0.0944 -0.0306,-0.12253 -0.0201,-0.0281 -0.0494,-0.0422 -0.0879,-0.0422"
+         style="font-size:1.02849805px;font-weight:bold;-inkscape-font-specification:Sans Bold"
+         id="path3055" />
+      <path
+         inkscape:connector-curvature="0"
+         d="m 882.05543,689.60423 0,0.13659 c -0.0385,-0.0161 -0.0757,-0.0281 -0.11149,-0.0362 -0.0358,-0.008 -0.0696,-0.0121 -0.10144,-0.0121 -0.0341,0 -0.0596,0.004 -0.0763,0.0131 -0.0164,0.008 -0.0246,0.0214 -0.0246,0.0392 0,0.0144 0.006,0.0255 0.0186,0.0332 0.0127,0.008 0.0353,0.0134 0.0678,0.0171 l 0.0316,0.005 c 0.0921,0.0117 0.15401,0.031 0.18582,0.0578 0.0318,0.0268 0.0477,0.0688 0.0477,0.12605 -10e-6,0.0599 -0.0221,0.10496 -0.0663,0.13509 -0.0442,0.0301 -0.11015,0.0452 -0.19787,0.0452 -0.0372,0 -0.0757,-0.003 -0.11551,-0.009 -0.0395,-0.006 -0.0802,-0.0144 -0.12203,-0.0261 l 0,-0.1366 c 0.0358,0.0174 0.0725,0.0305 0.10998,0.0392 0.0378,0.009 0.0762,0.0131 0.115,0.0131 0.0352,0 0.0616,-0.005 0.0793,-0.0146 0.0178,-0.01 0.0266,-0.0241 0.0266,-0.0432 0,-0.0161 -0.006,-0.028 -0.0186,-0.0357 -0.0121,-0.008 -0.0363,-0.0142 -0.0728,-0.0186 l -0.0316,-0.004 c -0.08,-0.01 -0.1361,-0.0286 -0.16824,-0.0557 -0.0321,-0.0271 -0.0482,-0.0683 -0.0482,-0.12354 0,-0.0596 0.0204,-0.10379 0.0613,-0.13258 0.0408,-0.0288 0.10345,-0.0432 0.18782,-0.0432 0.0331,0 0.068,0.003 0.10446,0.008 0.0365,0.005 0.0762,0.0129 0.11902,0.0236"
+         style="font-size:1.02849805px;font-weight:bold;-inkscape-font-specification:Sans Bold"
+         id="path3057" />
+      <path
+         inkscape:connector-curvature="0"
+         d="m 882.22266,689.93015 0,-0.3435 0.18079,0 0,0.0563 c 0,0.0305 -1.7e-4,0.0688 -5e-4,0.115 -3.3e-4,0.0459 -5e-4,0.0765 -5e-4,0.0919 0,0.0452 10e-4,0.0778 0.004,0.0979 0.002,0.0198 0.006,0.0342 0.0121,0.0432 0.007,0.0117 0.0169,0.0208 0.0286,0.0271 0.0121,0.006 0.0258,0.01 0.0412,0.01 0.0375,0 0.067,-0.0144 0.0884,-0.0432 0.0214,-0.0288 0.0321,-0.0688 0.0321,-0.12003 l 0,-0.27771 0.17978,0 0,0.56246 -0.17978,0 0,-0.0814 c -0.0271,0.0328 -0.0559,0.0571 -0.0864,0.0728 -0.0301,0.0154 -0.0634,0.0231 -0.0999,0.0231 -0.0649,0 -0.1145,-0.0199 -0.14865,-0.0598 -0.0338,-0.0398 -0.0507,-0.0978 -0.0507,-0.17376"
+         style="font-size:1.02849805px;font-weight:bold;-inkscape-font-specification:Sans Bold"
+         id="path3059" />
+      <path
+         inkscape:connector-curvature="0"
+         d="m 883.48317,689.68006 c 0.0228,-0.0348 0.0497,-0.0613 0.0809,-0.0793 0.0315,-0.0184 0.066,-0.0276 0.10345,-0.0276 0.0646,0 0.11383,0.0199 0.14765,0.0598 0.0338,0.0398 0.0507,0.0978 0.0507,0.17376 l 0,0.3425 -0.18079,0 0,-0.29328 c 3.3e-4,-0.004 5e-4,-0.009 5e-4,-0.0136 3.3e-4,-0.005 5e-4,-0.0114 5e-4,-0.0201 0,-0.0398 -0.006,-0.0686 -0.0176,-0.0864 -0.0117,-0.0181 -0.0306,-0.0271 -0.0567,-0.0271 -0.0342,0 -0.0606,0.0141 -0.0794,0.0422 -0.0184,0.0281 -0.028,0.0688 -0.0286,0.12203 l 0,0.27621 -0.18079,0 0,-0.29328 c 0,-0.0623 -0.005,-0.10228 -0.0161,-0.12003 -0.0107,-0.0181 -0.0298,-0.0271 -0.0573,-0.0271 -0.0345,0 -0.0611,0.0142 -0.0798,0.0427 -0.0187,0.0281 -0.0281,0.0685 -0.0281,0.12103 l 0,0.27671 -0.18079,0 0,-0.56246 0.18079,0 0,0.0824 c 0.0221,-0.0318 0.0474,-0.0557 0.0758,-0.0718 0.0288,-0.0161 0.0604,-0.0241 0.0949,-0.0241 0.0388,0 0.0732,0.009 0.10295,0.0281 0.0298,0.0187 0.0524,0.045 0.0678,0.0788"
+         style="font-size:1.02849805px;font-weight:bold;-inkscape-font-specification:Sans Bold"
+         id="path3061" />
+    </g>
+    <g
+       transform="scale(1.0447384,0.95717741)"
+       style="font-size:48.46436691px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+       id="text5540">
+      <path
+         inkscape:connector-curvature="0"
+         d="m 847.3858,720.32852 -0.1621,0.43956 0.3248,0 -0.1627,-0.43956 m -0.0674,-0.11773 0.13548,0 0.33662,0.88327 -0.12423,0 -0.0805,-0.22659 -0.39815,0 -0.0805,0.22659 -0.12601,0 0.33721,-0.88327"
+         style="font-size:1.21160913px;-inkscape-font-specification:Sans"
+         id="path3064" />
+    </g>
+    <g
+       style="font-size:1px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+       id="text5544">
+      <path
+         inkscape:connector-curvature="0"
+         d="m 883.88953,691.50378 0.13281,0 0.32324,0.60987 0,-0.60987 0.0957,0 0,0.72901 -0.13281,0 -0.32324,-0.60987 0,0.60987 -0.0957,0 0,-0.72901"
+         id="path3067" />
+      <path
+         inkscape:connector-curvature="0"
+         d="m 885.10144,691.93689 0,0.0439 -0.41309,0 c 0.004,0.0619 0.0225,0.10905 0.0557,0.14161 0.0335,0.0322 0.0801,0.0483 0.13965,0.0483 0.0345,0 0.0679,-0.004 0.10009,-0.0127 0.0326,-0.008 0.0648,-0.0212 0.0967,-0.0381 l 0,0.085 c -0.0322,0.0137 -0.0653,0.0241 -0.0991,0.0312 -0.0339,0.007 -0.0682,0.0107 -0.10302,0.0107 -0.0872,0 -0.15642,-0.0254 -0.20752,-0.0762 -0.0508,-0.0508 -0.0762,-0.11947 -0.0762,-0.20606 0,-0.0895 0.0241,-0.16048 0.0723,-0.21289 0.0485,-0.0527 0.11377,-0.0791 0.1958,-0.0791 0.0736,0 0.13167,0.0238 0.17432,0.0713 0.043,0.0472 0.0645,0.11149 0.0645,0.19287 m -0.0898,-0.0264 c -6.5e-4,-0.0492 -0.0145,-0.0884 -0.0415,-0.11767 -0.0267,-0.0293 -0.0622,-0.0439 -0.10644,-0.0439 -0.0501,0 -0.0903,0.0142 -0.12061,0.0425 -0.0299,0.0283 -0.0472,0.0682 -0.0518,0.11963 l 0.32032,-4.9e-4"
+         id="path3069" />
+      <path
+         inkscape:connector-curvature="0"
+         d="m 885.19666,691.68591 0.0898,0 0.1123,0.42676 0.11182,-0.42676 0.10596,0 0.1123,0.42676 0.11182,-0.42676 0.0898,0 -0.14306,0.54688 -0.10596,0 -0.11768,-0.44824 -0.11816,0.44824 -0.10596,0 -0.14306,-0.54688"
+         id="path3071" />
+    </g>
+    <g
+       style="font-size:1px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+       id="text5548">
+      <path
+         inkscape:connector-curvature="0"
+         d="m 883.88953,693.52722 0.13281,0 0.32324,0.60986 0,-0.60986 0.0957,0 0,0.72901 -0.13281,0 -0.32324,-0.60987 0,0.60987 -0.0957,0 0,-0.72901"
+         id="path3074" />
+      <path
+         inkscape:connector-curvature="0"
+         d="m 885.10144,693.96033 0,0.0439 -0.41309,0 c 0.004,0.0618 0.0225,0.10905 0.0557,0.1416 0.0335,0.0322 0.0801,0.0483 0.13965,0.0483 0.0345,0 0.0679,-0.004 0.10009,-0.0127 0.0326,-0.008 0.0648,-0.0212 0.0967,-0.0381 l 0,0.085 c -0.0322,0.0137 -0.0653,0.0241 -0.0991,0.0312 -0.0339,0.007 -0.0682,0.0108 -0.10302,0.0108 -0.0872,0 -0.15642,-0.0254 -0.20752,-0.0762 -0.0508,-0.0508 -0.0762,-0.11946 -0.0762,-0.20605 0,-0.0895 0.0241,-0.16048 0.0723,-0.21289 0.0485,-0.0527 0.11377,-0.0791 0.1958,-0.0791 0.0736,0 0.13167,0.0238 0.17432,0.0713 0.043,0.0472 0.0645,0.11149 0.0645,0.19287 m -0.0898,-0.0264 c -6.5e-4,-0.0491 -0.0145,-0.0884 -0.0415,-0.11768 -0.0267,-0.0293 -0.0622,-0.0439 -0.10644,-0.0439 -0.0501,0 -0.0903,0.0142 -0.12061,0.0425 -0.0299,0.0283 -0.0472,0.0682 -0.0518,0.11963 l 0.32032,-4.9e-4"
+         id="path3076" />
+      <path
+         inkscape:connector-curvature="0"
+         d="m 885.19666,693.70935 0.0898,0 0.1123,0.42676 0.11182,-0.42676 0.10596,0 0.1123,0.42676 0.11182,-0.42676 0.0898,0 -0.14306,0.54688 -0.10596,0 -0.11768,-0.44825 -0.11816,0.44825 -0.10596,0 -0.14306,-0.54688"
+         id="path3078" />
+    </g>
+    <rect
+       style="fill:#c0c1be;fill-opacity:1;stroke:#000000;stroke-width:0.10008001;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:2;stroke-opacity:1;stroke-dasharray:none"
+       id="rect5552"
+       width="2.8749001"
+       height="2.8749392"
+       x="879.96875"
+       y="691.46332" />
+    <path
+       style="fill:url(#linearGradient3824);fill-opacity:1;stroke:#888a85;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 878.38837,687.89343 0,7.40625 c -2.1e-4,0.0102 0,0.021 0,0.0312 0,0.8311 0.6689,1.5 1.5,1.5 l 5.90625,0 c 0.0102,2.1e-4 0.021,0 0.0312,0 0.8311,0 1.5,-0.6689 1.5,-1.5 0,-0.0206 8.2e-4,-0.0421 0,-0.0625 l 0,-7.375 -8.9375,0 z"
+       id="path3797"
+       inkscape:connector-curvature="0" />
+  </g>
+</svg>
diff --git a/skins/vector/images/talk-icon.svg b/skins/vector/images/talk-icon.svg
new file mode 100644 (file)
index 0000000..f37517d
--- /dev/null
@@ -0,0 +1,113 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="10"
+   height="10"
+   id="svg5587"
+   version="1.1"
+   inkscape:version="0.48.4 r9939"
+   sodipodi:docname="talk-icon.svg">
+  <defs
+     id="defs5589">
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient6134">
+      <stop
+         style="stop-color:#e9e9e9;stop-opacity:1;"
+         offset="0"
+         id="stop6136" />
+      <stop
+         style="stop-color:#e9e9e9;stop-opacity:0;"
+         offset="1"
+         id="stop6138" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6134"
+       id="radialGradient6140"
+       cx="755.80591"
+       cy="683.84875"
+       fx="755.80591"
+       fy="683.84875"
+       r="2.656485"
+       gradientTransform="matrix(2.4898047,0,0,2.5230165,-1126.0032,-1041.5417)"
+       gradientUnits="userSpaceOnUse" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6134"
+       id="radialGradient6146"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.4898047,0,0,2.5230165,-1126.0032,-1041.5417)"
+       cx="755.80591"
+       cy="683.84875"
+       fx="755.80591"
+       fy="683.84875"
+       r="2.656485" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="45.254834"
+     inkscape:cx="8.6391885"
+     inkscape:cy="3.9760181"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-width="1920"
+     inkscape:window-height="1041"
+     inkscape:window-x="0"
+     inkscape:window-y="0"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata5592">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-763.57141,-681.64789)">
+    <g
+       id="g6142"
+       transform="matrix(1.0212411,0,0,0.97119998,-5.0201418,19.699049)">
+      <path
+         sodipodi:nodetypes="sssscccsssss"
+         inkscape:connector-curvature="0"
+         id="rect5606"
+         transform="translate(763.57141,681.64789)"
+         d="m -8.625,0.4375 c -0.4851513,0 -0.875,0.38984873 -0.875,0.875 l 0,4.375 c 0,0.4851513 0.3898487,0.875 0.875,0.875 l 0.125,0 0,2.6739053 3.4513641,-2.6739053 2.5173859,0 c 0.4851513,0 0.875,-0.3898487 0.875,-0.875 l 0,-4.375 c 0,-0.48515127 -0.3898487,-0.875 -0.875,-0.875 z"
+         style="fill:#ffffff;fill-opacity:1;stroke:#888a85;stroke-width:0.98900002;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:9.80000019;stroke-opacity:1;stroke-dasharray:none" />
+      <path
+         style="fill:url(#radialGradient6146);fill-opacity:1;stroke:none"
+         d="m 755.96029,683.3154 c -0.32861,0 -0.59267,0.23853 -0.59267,0.53539 l 0,2.67695 c 0,0.29685 0.26406,0.53539 0.59267,0.53539 l 0.0847,0 0,1.63611 2.33776,-1.63611 1.70516,0 c 0.32862,0 0.59268,-0.23854 0.59268,-0.53539 l 0,-2.67695 c 0,-0.29686 -0.26406,-0.53539 -0.59268,-0.53539 z"
+         id="path6124"
+         inkscape:connector-curvature="0"
+         sodipodi:nodetypes="sssscccsssss" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/vector/images/video-icon.svg b/skins/vector/images/video-icon.svg
new file mode 100644 (file)
index 0000000..d5e44b6
--- /dev/null
@@ -0,0 +1,162 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="10"
+   height="10"
+   id="svg6734"
+   version="1.1"
+   inkscape:version="0.48.4 r9939"
+   sodipodi:docname="video-icon.svg">
+  <defs
+     id="defs6736">
+    <linearGradient
+       id="linearGradient7265">
+      <stop
+         style="stop-color:#cccccc;stop-opacity:1;"
+         offset="0"
+         id="stop7267" />
+      <stop
+         style="stop-color:#dfdfdf;stop-opacity:1;"
+         offset="1"
+         id="stop7269" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient7265"
+       id="radialGradient7271"
+       cx="5.0034118"
+       cy="4.9650207"
+       fx="5.0034118"
+       fy="4.9650207"
+       r="4.9996192"
+       gradientUnits="userSpaceOnUse" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient7265"
+       id="radialGradient7327"
+       gradientUnits="userSpaceOnUse"
+       cx="5.0034118"
+       cy="4.9650207"
+       fx="5.0034118"
+       fy="4.9650207"
+       r="4.9996192" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="22.627417"
+     inkscape:cx="4.0209944"
+     inkscape:cy="7.104383"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-width="1920"
+     inkscape:window-height="1014"
+     inkscape:window-x="0"
+     inkscape:window-y="27"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata6739">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-903.57141,-715.93359)">
+    <path
+       style="fill:none;stroke:#5f6060;stroke-width:0.89999998000000003;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       d="m 911.68723,725.33709 -0.61872,-0.92808 c 0,0 0.17677,0.92808 0.92808,1.01647 0.7513,0.0884 1.19324,0.0884 1.19324,0.0884"
+       id="path7292"
+       inkscape:connector-curvature="0" />
+    <path
+       sodipodi:type="arc"
+       style="fill:url(#radialGradient7327);fill-opacity:1;stroke:#848484;stroke-width:0.89999998;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:9.80000019;stroke-opacity:1;stroke-dasharray:none"
+       id="path6755"
+       sodipodi:cx="5.0034118"
+       sodipodi:cy="4.9650207"
+       sodipodi:rx="4.5141191"
+       sodipodi:ry="4.5141191"
+       d="m 9.5175309,4.9650207 a 4.5141191,4.5141191 0 1 1 -9.02823828,0 4.5141191,4.5141191 0 1 1 9.02823828,0 z"
+       transform="translate(903.4637,715.9024)" />
+    <g
+       id="g7310"
+       transform="matrix(0.897287,0,0,0.897287,111.13225,74.055304)">
+      <path
+         transform="matrix(1.4672484,-0.2948259,0.2948259,1.4672484,880.61345,716.13137)"
+         d="M 5.03125,2.59375 C 5.03125,2.9216691 4.7654191,3.1875 4.4375,3.1875 4.1095809,3.1875 3.84375,2.9216691 3.84375,2.59375 3.84375,2.2658309 4.1095809,2 4.4375,2 4.7654191,2 5.03125,2.2658309 5.03125,2.59375 z"
+         sodipodi:ry="0.59375"
+         sodipodi:rx="0.59375"
+         sodipodi:cy="2.59375"
+         sodipodi:cx="4.4375"
+         id="path7300"
+         style="fill:#818181;fill-opacity:1;stroke:none"
+         sodipodi:type="arc" />
+      <path
+         sodipodi:type="arc"
+         style="fill:#818181;fill-opacity:1;stroke:none"
+         id="path7302"
+         sodipodi:cx="4.4375"
+         sodipodi:cy="2.59375"
+         sodipodi:rx="0.59375"
+         sodipodi:ry="0.59375"
+         d="M 5.03125,2.59375 C 5.03125,2.9216691 4.7654191,3.1875 4.4375,3.1875 4.1095809,3.1875 3.84375,2.9216691 3.84375,2.59375 3.84375,2.2658309 4.1095809,2 4.4375,2 4.7654191,2 5.03125,2.2658309 5.03125,2.59375 z"
+         transform="matrix(1.4672484,-0.2948259,0.2948259,1.4672484,878.85062,718.47146)" />
+      <path
+         transform="matrix(1.4672484,-0.2948259,0.2948259,1.4672484,883.48161,716.7296)"
+         d="M 5.03125,2.59375 C 5.03125,2.9216691 4.7654191,3.1875 4.4375,3.1875 4.1095809,3.1875 3.84375,2.9216691 3.84375,2.59375 3.84375,2.2658309 4.1095809,2 4.4375,2 4.7654191,2 5.03125,2.2658309 5.03125,2.59375 z"
+         sodipodi:ry="0.59375"
+         sodipodi:rx="0.59375"
+         sodipodi:cy="2.59375"
+         sodipodi:cx="4.4375"
+         id="path7304"
+         style="fill:#818181;fill-opacity:1;stroke:none"
+         sodipodi:type="arc" />
+      <path
+         sodipodi:type="arc"
+         style="fill:#818181;fill-opacity:1;stroke:none"
+         id="path7306"
+         sodipodi:cx="4.4375"
+         sodipodi:cy="2.59375"
+         sodipodi:rx="0.59375"
+         sodipodi:ry="0.59375"
+         d="M 5.03125,2.59375 C 5.03125,2.9216691 4.7654191,3.1875 4.4375,3.1875 4.1095809,3.1875 3.84375,2.9216691 3.84375,2.59375 3.84375,2.2658309 4.1095809,2 4.4375,2 4.7654191,2 5.03125,2.2658309 5.03125,2.59375 z"
+         transform="matrix(1.4672484,-0.2948259,0.2948259,1.4672484,880.77974,720.67629)" />
+      <path
+         transform="matrix(1.4672484,-0.2948259,0.2948259,1.4672484,883.52712,719.65906)"
+         d="M 5.03125,2.59375 C 5.03125,2.9216691 4.7654191,3.1875 4.4375,3.1875 4.1095809,3.1875 3.84375,2.9216691 3.84375,2.59375 3.84375,2.2658309 4.1095809,2 4.4375,2 4.7654191,2 5.03125,2.2658309 5.03125,2.59375 z"
+         sodipodi:ry="0.59375"
+         sodipodi:rx="0.59375"
+         sodipodi:cy="2.59375"
+         sodipodi:cx="4.4375"
+         id="path7308"
+         style="fill:#818181;fill-opacity:1;stroke:none"
+         sodipodi:type="arc" />
+    </g>
+  </g>
+</svg>
index 5a1fc05..2683a21 100644 (file)
@@ -2,7 +2,7 @@
 
 div#content {
        margin-left: 11em;
-       padding: 1.25em 1.5em 1.5em 1.5em;
+       padding: 1.5em 1.5em 1.5em 1.75em;
 }
 #p-logo {
        left: @menu-main-logo-left;
diff --git a/skins/vector/styles-beta.less b/skins/vector/styles-beta.less
deleted file mode 100644 (file)
index a76b639..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-@import "variables.less";
-@import "beta/variables.less";
-
-@media screen {
-       @import "screen.less";
-       @import "beta/screen.less";
-       @import "externalLinks.less";
-       @import "collapsibleNav.less";
-}
-
-@media screen and (min-width: 982px) {
-       @import "screen-hd.less";
-}
index 691e0fd..f818401 100644 (file)
@@ -7,7 +7,7 @@
 @content-font-color: black;
 @content-font-size: 0.8em;
 @content-line-height: 1.5em;
-@content-padding: 1.5em 1.5em 1.5em 1.75em;
+@content-padding: 1.25em 1.5em 1.5em 1.5em;
 @content-heading-font-size: 1.6em;
 @content-heading-font-family: sans-serif;
 
index 46a894c..58df552 100644 (file)
@@ -57,6 +57,7 @@ $wgAutoloadClasses += array(
        'ApiTestCase' => "$testDir/phpunit/includes/api/ApiTestCase.php",
        'ApiTestContext' => "$testDir/phpunit/includes/api/ApiTestContext.php",
        'MockApi' => "$testDir/phpunit/includes/api/MockApi.php",
+       'MockApiQueryBase' => "$testDir/phpunit/includes/api/MockApiQueryBase.php",
        'UserWrapper' => "$testDir/phpunit/includes/api/UserWrapper.php",
        'RandomImageGenerator' => "$testDir/phpunit/includes/api/RandomImageGenerator.php",
 
index 7a7ec8f..9ebca3f 100644 (file)
@@ -53,7 +53,7 @@ abstract class MediaWikiTestCase extends PHPUnit_Framework_TestCase {
        /**
         * Holds original values of MediaWiki configuration settings
         * to be restored in tearDown().
-        * See also setMwGlobal().
+        * See also setMwGlobals().
         * @var array
         */
        private $mwGlobals = array();
index cd2a23a..f69fad4 100644 (file)
@@ -297,17 +297,6 @@ class RevisionStorageTest extends MediaWikiTestCase {
                $this->assertEquals( 'hello hello.', $rev->getContent()->getNativeData() );
        }
 
-       /**
-        * @covers Revision::revText
-        */
-       public function testRevText() {
-               $this->hideDeprecated( 'Revision::revText' );
-               $orig = $this->makeRevision( array( 'text' => 'hello hello rev.' ) );
-               $rev = Revision::newFromId( $orig->getId() );
-
-               $this->assertEquals( 'hello hello rev.', $rev->revText() );
-       }
-
        /**
         * @covers Revision::getRawText
         */
index 58f0146..54e6199 100644 (file)
@@ -104,7 +104,6 @@ class TitleTest extends MediaWikiTestCase {
                        'A ~~~~~ Timestamp',
                        str_repeat( 'x', 256 ),
                        // Namespace prefix without actual title
-                       // ':', // bug 54044
                        'Talk:',
                        'Category: ',
                        'Category: #bar'
diff --git a/tests/phpunit/includes/api/ApiQueryAllPagesTest.php b/tests/phpunit/includes/api/ApiQueryAllPagesTest.php
new file mode 100644 (file)
index 0000000..bc08afe
--- /dev/null
@@ -0,0 +1,30 @@
+<?php
+
+/**
+ * @group API
+ * @group Database
+ * @group medium
+ */
+class ApiQueryAllPagesTest extends ApiTestCase {
+       protected function setUp() {
+               parent::setUp();
+               $this->doLogin();
+       }
+
+       function testBug25702() {
+               $title = Title::newFromText( 'Category:Template:xyz' );
+               $page = WikiPage::factory( $title );
+               $page->doEdit( 'Some text', 'inserting content' );
+
+               $result = $this->doApiRequest( array(
+                       'action' => 'query',
+                       'list' => 'allpages',
+                       'apnamespace' => NS_CATEGORY,
+                       'apprefix' => 'Template:x' ) );
+
+               $this->assertArrayHasKey( 'query', $result[0] );
+               $this->assertArrayHasKey( 'allpages', $result[0]['query'] );
+               $this->assertNotEquals( 0, count( $result[0]['query']['allpages'] ),
+                       'allpages list does not contain page Category:Template:xyz' );
+       }
+}
diff --git a/tests/phpunit/includes/api/MockApiQueryBase.php b/tests/phpunit/includes/api/MockApiQueryBase.php
new file mode 100644 (file)
index 0000000..4bede51
--- /dev/null
@@ -0,0 +1,11 @@
+<?php
+class MockApiQueryBase extends ApiQueryBase {
+       public function execute() {
+       }
+
+       public function getVersion() {
+       }
+
+       public function __construct() {
+       }
+}
index 2ec5fe3..ea0b323 100644 (file)
@@ -7,10 +7,32 @@
  * @covers ApiQuery
  */
 class ApiQueryTest extends ApiTestCase {
+       /**
+        * @var array Storage for $wgHooks
+        */
+       protected $hooks;
 
        protected function setUp() {
+               global $wgHooks;
+
                parent::setUp();
                $this->doLogin();
+
+               // Setup en: as interwiki prefix
+               $this->hooks = $wgHooks;
+               $wgHooks['InterwikiLoadPrefix'][] = function ( $prefix, &$data ) {
+                       if ( $prefix == 'apiquerytestiw' ) {
+                               $data = array( 'iw_url' => 'wikipedia' );
+                       }
+                       return false;
+               };
+       }
+
+       protected function tearDown() {
+               global $wgHooks;
+               $wgHooks = $this->hooks;
+
+               parent::tearDown();
        }
 
        public function testTitlesGetNormalized() {
@@ -64,4 +86,38 @@ class ApiQueryTest extends ApiTestCase {
                $this->assertArrayHasKey( 'missing', $data[0]['query']['pages'][-2] );
                $this->assertArrayHasKey( 'invalid', $data[0]['query']['pages'][-1] );
        }
+
+       /**
+        * Test the ApiBase::titlePartToKey function
+        *
+        * @param string $titlePart
+        * @param int $namespace
+        * @param string $expected
+        * @param string $description
+        * @dataProvider provideTestTitlePartToKey
+        */
+       function testTitlePartToKey( $titlePart, $namespace, $expected, $expectException ) {
+               $api = new MockApiQueryBase();
+               $exceptionCaught = false;
+               try {
+                       $this->assertEquals( $expected, $api->titlePartToKey( $titlePart, $namespace ) );
+               } catch ( UsageException $e ) {
+                       $exceptionCaught = true;
+               }
+               $this->assertEquals( $expectException, $exceptionCaught,
+                       'UsageException thrown by titlePartToKey' );
+       }
+
+       function provideTestTitlePartToKey() {
+               return array(
+                       array( 'a  b  c', NS_MAIN, 'A_b_c', false ),
+                       array( 'x', NS_MAIN, 'X', false ),
+                       array( 'y ', NS_MAIN, 'Y_', false ),
+                       array( 'template:foo', NS_CATEGORY, 'Template:foo', false ),
+                       array( 'apiquerytestiw:foo', NS_CATEGORY, 'Apiquerytestiw:foo', false ),
+                       array( "\xF7", NS_MAIN, null, true ),
+                       array( 'template:foo', NS_MAIN, null, true ),
+                       array( 'apiquerytestiw:foo', NS_MAIN, null, true ),
+               );
+       }
 }
diff --git a/tests/phpunit/includes/db/LBFactoryTest.php b/tests/phpunit/includes/db/LBFactoryTest.php
new file mode 100644 (file)
index 0000000..4c59f47
--- /dev/null
@@ -0,0 +1,61 @@
+<?php
+/**
+ * Holds tests for LBFactory abstract MediaWiki class.
+ *
+ * @section LICENSE
+ * 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
+ *
+ * @group Database
+ * @file
+ * @author Antoine Musso
+ * @copyright © 2013 Antoine Musso
+ * @copyright © 2013 Wikimedia Foundation Inc.
+ */
+class LBFactoryTest extends MediaWikiTestCase {
+
+       /**
+        * @dataProvider getLBFactoryClassProvider
+        */
+       public function testGetLBFactoryClass( $expected, $deprecated ) {
+               $mockDB = $this->getMockBuilder( 'DatabaseMysql' )
+                       ->disableOriginalConstructor()
+                       ->getMock();
+
+               $config = array(
+                       'class'          => $deprecated,
+                       'connection'     => $mockDB,
+                       # Various other parameters required:
+                       'sectionsByDB'   => array(),
+                       'sectionLoads'   => array(),
+                       'serverTemplate' => array(),
+               );
+
+               $this->hideDeprecated( '$wgLBFactoryConf must be updated. See RELEASE-NOTES for details' );
+               $result = LBFactory::getLBFactoryClass( $config );
+
+               $this->assertEquals( $expected, $result );
+       }
+
+       public function getLBFactoryClassProvider() {
+               return array(
+                       # Format: new class, old class
+                       array( 'LBFactorySimple', 'LBFactory_Simple' ),
+                       array( 'LBFactorySingle', 'LBFactory_Single' ),
+                       array( 'LBFactoryMulti', 'LBFactory_Multi' ),
+                       array( 'LBFactoryFake', 'LBFactory_Fake' ),
+               );
+       }
+}
index 072cb7c..653205f 100644 (file)
@@ -37,7 +37,9 @@ class FileBackendTest extends MediaWikiTestCase {
                                $useConfig['shardViaHashLevels'] = array( // test sharding
                                        'unittest-cont1' => array( 'levels' => 1, 'base' => 16, 'repeat' => 1 )
                                );
-                               $useConfig['fileJournal'] = FileJournal::factory( $config['fileJournal'], $name );
+                               if ( isset( $useConfig['fileJournal'] ) ) {
+                                       $useConfig['fileJournal'] = FileJournal::factory( $useConfig['fileJournal'], $name );
+                               }
                                $useConfig['lockManager'] = LockManagerGroup::singleton()->get( $useConfig['lockManager'] );
                                $class = $useConfig['class'];
                                self::$backendToUse = new $class( $useConfig );
@@ -1114,6 +1116,57 @@ class FileBackendTest extends MediaWikiTestCase {
                return $cases;
        }
 
+       /**
+        * @dataProvider provider_testGetFileStat
+        * @covers FileBackend::streamFile
+        */
+       public function testStreamFile( $path, $content, $alreadyExists ) {
+               $this->backend = $this->singleBackend;
+               $this->tearDownFiles();
+               $this->doTestStreamFile( $path, $content, $alreadyExists );
+               $this->tearDownFiles();
+       }
+
+       private function doTestStreamFile( $path, $content ) {
+               $backendName = $this->backendClass();
+
+               // Test doStreamFile() directly to avoid header madness
+               $class = new ReflectionClass( $this->backend );
+               $method = $class->getMethod( 'doStreamFile' );
+               $method->setAccessible( true );
+
+               if ( $content !== null ) {
+                       $this->prepare( array( 'dir' => dirname( $path ) ) );
+                       $status = $this->create( array( 'dst' => $path, 'content' => $content ) );
+                       $this->assertGoodStatus( $status,
+                               "Creation of file at $path succeeded ($backendName)." );
+
+                       ob_start();
+                       $method->invokeArgs( $this->backend, array( array( 'src' => $path ) ) );
+                       $data = ob_get_contents();
+                       ob_end_clean();
+
+                       $this->assertEquals( $content, $data, "Correct content streamed from '$path'" );
+               } else { // 404 case
+                       ob_start();
+                       $method->invokeArgs( $this->backend, array( array( 'src' => $path ) ) );
+                       $data = ob_get_contents();
+                       ob_end_clean();
+
+                       $this->assertEquals( '', $data, "Correct content streamed from '$path' ($backendName)" );
+               }
+       }
+
+       public static function provider_testStreamFile() {
+               $cases = array();
+
+               $base = self::baseStorePath();
+               $cases[] = array( "$base/unittest-cont1/e/b/z/some_file.txt", "some file contents" );
+               $cases[] = array( "$base/unittest-cont1/e/b/some-other_file.txt", null );
+
+               return $cases;
+       }
+
        /**
         * @dataProvider provider_testGetFileContents
         * @covers FileBackend::getFileContents
diff --git a/tests/phpunit/includes/libs/MWMessagePackTest.php b/tests/phpunit/includes/libs/MWMessagePackTest.php
new file mode 100644 (file)
index 0000000..b99ef86
--- /dev/null
@@ -0,0 +1,70 @@
+<?php
+/**
+ * PHP Unit tests for MWMessagePack
+ * @covers MWMessagePack
+ */
+class MWMessagePackTest extends MediaWikiTestCase {
+
+       /**
+        * Provides test cases for MWMessagePackTest::testMessagePack
+        *
+        * Returns an array of test cases. Each case is an array of (type, value,
+        * expected encoding as hex string). The expected values were generated
+        * using <https://github.com/msgpack/msgpack-php>, which includes a
+        * serialization function.
+        */
+       public function provider() {
+               return array(
+                       array( 'nil', null, 'c0' ),
+                       array( 'bool', true, 'c3' ),
+                       array( 'bool', false, 'c2' ),
+                       array( 'positive fixnum', 0, '00' ),
+                       array( 'positive fixnum', 1, '01' ),
+                       array( 'positive fixnum', 5, '05' ),
+                       array( 'positive fixnum', 35, '23' ),
+                       array( 'uint 8', 128, 'cc80' ),
+                       array( 'uint 16', 1000, 'cd03e8' ),
+                       array( 'uint 32', 100000, 'ce000186a0' ),
+                       array( 'uint 64', 10000000000, 'cf00000002540be400' ),
+                       array( 'negative fixnum', -1, 'ff' ),
+                       array( 'negative fixnum', -2, 'fe' ),
+                       array( 'int 8', -128, 'd080' ),
+                       array( 'int 8', -35, 'd0dd' ),
+                       array( 'int 16', -1000, 'd1fc18' ),
+                       array( 'int 32', -100000, 'd2fffe7960' ),
+                       array( 'int 64', -10000000000, 'd3fffffffdabf41c00' ),
+                       array( 'int 64', -223372036854775807, 'd3fce66c50e2840001' ),
+                       array( 'int 64', -9223372036854775807, 'd38000000000000001' ),
+                       array( 'double', 0.1, 'cb3fb999999999999a' ),
+                       array( 'double', 1.1, 'cb3ff199999999999a' ),
+                       array( 'double', 123.456, 'cb405edd2f1a9fbe77' ),
+                       array( 'fix raw', '', 'a0' ),
+                       array( 'fix raw', 'foobar', 'a6666f6f626172' ),
+                       array(
+                               'raw 16',
+                               'Lorem ipsum dolor sit amet amet.',
+                               'da00204c6f72656d20697073756d20646f6c6f722073697420616d657420616d65742e'
+                       ),
+                       array(
+                               'fix array',
+                               array( 'abc', 'def', 'ghi' ),
+                               '93a3616263a3646566a3676869'
+                       ),
+                       array(
+                               'fix map',
+                               array( 'one' => 1, 'two' => 2 ),
+                               '82a36f6e6501a374776f02'
+                       ),
+               );
+       }
+
+       /**
+        * Verify that values are serialized correctly.
+        * @covers MWMessagePack::pack
+        * @dataProvider provider
+        */
+       public function testPack( $type, $value, $expected ) {
+               $actual = bin2hex( MWMessagePack::pack( $value ) );
+               $this->assertEquals( $actual, $expected, $type );
+       }
+}
diff --git a/tests/phpunit/includes/libs/RunningStatTest.php b/tests/phpunit/includes/libs/RunningStatTest.php
new file mode 100644 (file)
index 0000000..e24c088
--- /dev/null
@@ -0,0 +1,81 @@
+<?php
+/**
+ * PHP Unit tests for RunningStat class.
+ * @covers RunningStat
+ */
+class RunningStatTest extends MediaWikiTestCase {
+
+       public $points = array(
+               49.7168, 74.3804,  7.0115, 96.5769, 34.9458,
+               36.9947, 33.8926, 89.0774, 23.7745, 73.5154,
+               86.1322, 53.2124, 16.2046, 73.5130, 10.4209,
+               42.7299, 49.3330, 47.0215, 34.9950, 18.2914,
+       );
+
+       /**
+        * Verify that the statistical moments and extrema computed by RunningStat
+        * match expected values.
+        * @covers RunningStat::push
+        * @covers RunningStat::count
+        * @covers RunningStat::getMean
+        * @covers RunningStat::getVariance
+        * @covers RunningStat::getStdDev
+        */
+       public function testRunningStatAccuracy() {
+               $rstat = new RunningStat();
+               foreach( $this->points as $point ) {
+                       $rstat->push( $point );
+               }
+
+               $mean = array_sum( $this->points ) / count( $this->points );
+               $variance = array_sum( array_map( function ( $x ) use ( $mean ) {
+                       return pow( $mean - $x, 2 );
+               }, $this->points ) ) / ( count( $rstat ) - 1 );
+               $stddev = sqrt( $variance );
+               $min = min( $this->points );
+               $max = max( $this->points );
+
+               $this->assertEquals( count( $rstat ), count( $this->points ) );
+               $this->assertEquals( $rstat->min, min( $this->points ) );
+               $this->assertEquals( $rstat->max, max( $this->points ) );
+               $this->assertEquals( $rstat->getMean(), $mean );
+               $this->assertEquals( $rstat->getVariance(), $variance );
+               $this->assertEquals( $rstat->getStdDev(), $stddev );
+       }
+
+       /**
+        * When one RunningStat instance is merged into another, the state of the
+        * target RunningInstance should have the state that it would have had if
+        * all the data had been accumulated by it alone.
+        * @covers RunningStat::merge
+        * @covers RunningStat::count
+        */
+       public function testRunningStatMerge() {
+               $expected = new RunningStat();
+
+               foreach( $this->points as $point ) {
+                       $expected->push( $point );
+               }
+
+               // Split the data into two sets
+               $sets = array_chunk( $this->points, floor( count( $this->points ) / 2 ) );
+
+               // Accumulate the first half into one RunningStat object
+               $first = new RunningStat();
+               foreach( $sets[0] as $point ) {
+                       $first->push( $point );
+               }
+
+               // Accumulate the second half into another RunningStat object
+               $second = new RunningStat();
+               foreach( $sets[1] as $point ) {
+                       $second->push( $point );
+               }
+
+               // Merge the second RunningStat object into the first
+               $first->merge( $second );
+
+               $this->assertEquals( count( $first ), count( $this->points ) );
+               $this->assertEquals( $first, $expected );
+       }
+}
index 124b477..c742444 100644 (file)
@@ -308,7 +308,7 @@ class NewParserTest extends MediaWikiTestCase {
                                $useConfig['name'] = 'local-backend'; // swap name
                                unset( $useConfig['lockManager'] );
                                unset( $useConfig['fileJournal'] );
-                               $class = $conf['class'];
+                               $class = $useConfig['class'];
                                self::$backendToUse = new $class( $useConfig );
                                $backend = self::$backendToUse;
                        }
@@ -318,11 +318,7 @@ class NewParserTest extends MediaWikiTestCase {
                        # informations.
                        $backend = new MockFileBackend( array(
                                'name' => 'local-backend',
-                               'wikiId' => wfWikiId(),
-                               'containerPaths' => array(
-                                       'local-public' => "$uploadDir",
-                                       'local-thumb' => "$uploadDir/thumb",
-                               )
+                               'wikiId' => wfWikiId()
                        ) );
                }
 
@@ -448,16 +444,12 @@ class NewParserTest extends MediaWikiTestCase {
                ) );
 
                // No helpful SVG file to copy, so make one ourselves
-               $tmpDir = wfTempDir();
-               $tempFsFile = new TempFSFile( "$tmpDir/Foobar.svg" );
-               $tempFsFile->autocollect(); // destroy file when $tempFsFile leaves scope
-               file_put_contents( "$tmpDir/Foobar.svg",
-                       '<?xml version="1.0" encoding="utf-8"?>' .
-                       '<svg xmlns="http://www.w3.org/2000/svg" width="200" height="200"><text>Foo</text></svg>' );
+               $data = '<?xml version="1.0" encoding="utf-8"?>' .
+                       '<svg xmlns="http://www.w3.org/2000/svg" width="200" height="200"><text>Foo</text></svg>';
 
                $backend->prepare( array( 'dir' => "$base/local-public/f/ff" ) );
-               $backend->quickStore( array(
-                       'src' => "$tmpDir/Foobar.svg", 'dst' => "$base/local-public/f/ff/Foobar.svg"
+               $backend->quickCreate( array(
+                       'content' => $data, 'dst' => "$base/local-public/f/ff/Foobar.svg"
                ) );
        }
 
index e460591..ff360e9 100644 (file)
@@ -8,10 +8,12 @@
  * @note Coverage will only ever show one of on of the Search* classes
  */
 class SearchEngineTest extends MediaWikiLangTestCase {
+
        /**
         * @var SearchEngine
         */
        protected $search;
+
        protected $pageList;
 
        /**
@@ -22,17 +24,23 @@ class SearchEngineTest extends MediaWikiLangTestCase {
                parent::setUp();
 
                // Search tests require MySQL or SQLite with FTS
-               # Get database type and version
                $dbType = $this->db->getType();
-               $dbSupported =
-                       ( $dbType === 'mysql' )
-                               || ( $dbType === 'sqlite' && $this->db->getFulltextSearchModule() == 'FTS3' );
+               $dbSupported = ( $dbType === 'mysql' )
+                       || ( $dbType === 'sqlite' && $this->db->getFulltextSearchModule() == 'FTS3' );
 
                if ( !$dbSupported ) {
                        $this->markTestSkipped( "MySQL or SQLite with FTS3 only" );
                }
 
                $searchType = $this->db->getSearchEngine();
+               $this->setMwGlobals( array(
+                       'wgSearchType' => $searchType
+               ) );
+
+               if ( !isset( self::$pageList ) ) {
+                       $this->addPages();
+               }
+
                $this->search = new $searchType( $this->db );
        }
 
@@ -42,15 +50,7 @@ class SearchEngineTest extends MediaWikiLangTestCase {
                parent::tearDown();
        }
 
-       function pageExists( $title ) {
-               return false;
-       }
-
-       function addDBData() {
-               if ( $this->pageExists( 'Not_Main_Page' ) ) {
-                       return;
-               }
-
+       protected function addPages() {
                if ( !$this->isWikitextNS( NS_MAIN ) ) {
                        // @todo cover the case of non-wikitext content in the main namespace
                        return;
@@ -75,12 +75,11 @@ class SearchEngineTest extends MediaWikiLangTestCase {
                $this->insertPage( 'DomainName', 'example.com', 0 );
        }
 
-       function fetchIds( $results ) {
+       protected function fetchIds( $results ) {
                if ( !$this->isWikitextNS( NS_MAIN ) ) {
                        $this->markTestIncomplete( __CLASS__ . " does no yet support non-wikitext content "
                                . "in the main namespace" );
                }
-
                $this->assertTrue( is_object( $results ) );
 
                $matches = array();
@@ -105,7 +104,7 @@ class SearchEngineTest extends MediaWikiLangTestCase {
         * @param $text String: page's content
         * @param $n Integer: unused
         */
-       function insertPage( $pageName, $text, $ns ) {
+       protected function insertPage( $pageName, $text, $ns ) {
                $title = Title::newFromText( $pageName, $ns );
 
                $user = User::newFromName( 'WikiSysop' );
@@ -180,4 +179,5 @@ class SearchEngineTest extends MediaWikiLangTestCase {
                        $this->fetchIds( $this->search->searchTitle( 'smithee' ) ),
                        "Title power search failed" );
        }
+
 }
diff --git a/tests/phpunit/includes/specials/SpecialListFilesTest.php b/tests/phpunit/includes/specials/SpecialListFilesTest.php
new file mode 100644 (file)
index 0000000..2689236
--- /dev/null
@@ -0,0 +1,21 @@
+<?php
+/**
+ * Test class for SpecialListFiles class.
+ *
+ * Copyright © 2013, Antoine Musso
+ * Copyright © 2013, Siebrand Mazeland
+ * Copyright © 2013, Wikimedia Foundation Inc.
+ *
+ */
+
+class SpecialListFilesTest extends MediaWikiTestCase {
+       /**
+        * @expectedException MWException
+        * @expectedExceptionMesage invalid_field
+        * @covers ImageListPager::formatValue
+        */
+       public function testFormatValuesThrowException() {
+               $page = new ImageListPager( RequestContext::getMain() );
+               $page->formatValue( 'invalid_field', 'invalid_value' );
+       }
+}
index 8f78ae5..1a1bbaf 100644 (file)
@@ -95,4 +95,32 @@ class UIDGeneratorTest extends MediaWikiTestCase {
                }
        }
 
+       /**
+        * @covers UIDGenerator::newSequentialPerNodeID
+        */
+       public function testNewSequentialID() {
+               $id1 = UIDGenerator::newSequentialPerNodeID( 'test', 32 );
+               $id2 = UIDGenerator::newSequentialPerNodeID( 'test', 32 );
+
+               $this->assertType( 'float', $id1, "ID returned as float" );
+               $this->assertType( 'float', $id2, "ID returned as float" );
+               $this->assertGreaterThan( 0, $id1, "ID greater than 1" );
+               $this->assertGreaterThan( $id1, $id2, "IDs increasing in value" );
+       }
+
+       /**
+        * @covers UIDGenerator::newSequentialPerNodeIDs
+        */
+       public function testNewSequentialIDs() {
+               $ids = UIDGenerator::newSequentialPerNodeIDs( 'test', 32, 5 );
+               $lastId = null;
+               foreach ( $ids as $id ) {
+                       $this->assertType( 'float', $id, "ID returned as float" );
+                       $this->assertGreaterThan( 0, $id, "ID greater than 1" );
+                       if ( $lastId ) {
+                               $this->assertGreaterThan( $lastId, $id, "IDs increasing in value" );
+                       }
+                       $lastId = $id;
+               }
+       }
 }
index 97a17ec..dbdb588 100644 (file)
@@ -79,13 +79,13 @@ class LanguageBe_taraskTest extends LanguageClassesTestCase {
         * @covers Language::convertPlural
         */
        public function testPluralTwoForms( $result, $value ) {
-               $forms = array( 'one', 'other', '0=one' );
+               $forms = array( '1=one', 'other' );
                $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) );
        }
 
        public static function providePluralTwoForms() {
                return array(
-                       array( 'one', 0 ),
+                       array( 'other', 0 ),
                        array( 'one', 1 ),
                        array( 'other', 11 ),
                        array( 'other', 91 ),
index fb965b8..7aca2ab 100644 (file)
@@ -5,14 +5,14 @@
  * @file
  */
 
-/** Tests for MediaWiki languages/LanguageBs.php */
+/** Tests for Croatian (hrvatski) */
 class LanguageBsTest extends LanguageClassesTestCase {
        /**
         * @dataProvider providePlural
         * @covers Language::convertPlural
         */
        public function testPlural( $result, $value ) {
-               $forms = array( 'one', 'few', 'many', 'other' );
+               $forms = array( 'one', 'few', 'other' );
                $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) );
        }
 
@@ -26,17 +26,17 @@ class LanguageBsTest extends LanguageClassesTestCase {
 
        public static function providePlural() {
                return array(
-                       array( 'many', 0 ),
+                       array( 'other', 0 ),
                        array( 'one', 1 ),
                        array( 'few', 2 ),
                        array( 'few', 4 ),
-                       array( 'many', 5 ),
-                       array( 'many', 11 ),
-                       array( 'many', 20 ),
+                       array( 'other', 5 ),
+                       array( 'other', 11 ),
+                       array( 'other', 20 ),
                        array( 'one', 21 ),
                        array( 'few', 24 ),
-                       array( 'many', 25 ),
-                       array( 'many', 200 ),
+                       array( 'other', 25 ),
+                       array( 'other', 200 ),
                );
        }
 }
index a0def62..fc58022 100644 (file)
@@ -1,20 +1,19 @@
 <?php
 /**
+ * Test for Manx (Gaelg) language
+ *
  * @author Santhosh Thottingal
- * @copyright Copyright © 2012, Santhosh Thottingal
+ * @copyright Copyright © 2013, Santhosh Thottingal
  * @file
  */
 
-/** Tests for MediaWiki languages/classes/LanguageGv.php */
 class LanguageGvTest extends LanguageClassesTestCase {
        /**
         * @dataProvider providePlural
         * @covers Language::convertPlural
         */
        public function testPlural( $result, $value ) {
-               // This is not compatible with CLDR plural rules http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/language_plural_rules.html#gv
-               // What does this mean? Is there a hard-coded override for gv somewhere? -Ryan Kaldari 2013-01-28
-               $forms = array( 'Form 1', 'Form 2', 'Form 3', 'Form 4' );
+               $forms = array( 'one', 'two', 'few', 'other' );
                $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) );
        }
 
@@ -23,21 +22,23 @@ class LanguageGvTest extends LanguageClassesTestCase {
         * @covers Language::getPluralRuleType
         */
        public function testGetPluralRuleType( $result, $value ) {
-               $this->markTestSkipped( "This test won't work since convertPlural for gv doesn't seem to actually follow our plural rules." );
                $this->assertEquals( $result, $this->getLang()->getPluralRuleType( $value ) );
        }
 
        public static function providePlural() {
                return array(
-                       array( 'Form 4', 0 ),
-                       array( 'Form 2', 1 ),
-                       array( 'Form 3', 2 ),
-                       array( 'Form 4', 3 ),
-                       array( 'Form 1', 20 ),
-                       array( 'Form 2', 21 ),
-                       array( 'Form 3', 22 ),
-                       array( 'Form 4', 23 ),
-                       array( 'Form 4', 50 ),
+                       array( 'few', 0 ),
+                       array( 'one', 1 ),
+                       array( 'two', 2 ),
+                       array( 'other', 3 ),
+                       array( 'few', 20 ),
+                       array( 'one', 21 ),
+                       array( 'two', 22 ),
+                       array( 'other', 23 ),
+                       array( 'other', 50 ),
+                       array( 'few', 60 ),
+                       array( 'other', 80 ),
+                       array( 'few', 100 )
                );
        }
 }
index 6ce4aff..644c525 100644 (file)
@@ -12,7 +12,7 @@ class LanguageHrTest extends LanguageClassesTestCase {
         * @covers Language::convertPlural
         */
        public function testPlural( $result, $value ) {
-               $forms = array( 'one', 'few', 'many', 'other' );
+               $forms = array( 'one', 'few', 'other' );
                $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) );
        }
 
@@ -26,17 +26,17 @@ class LanguageHrTest extends LanguageClassesTestCase {
 
        public static function providePlural() {
                return array(
-                       array( 'many', 0 ),
+                       array( 'other', 0 ),
                        array( 'one', 1 ),
                        array( 'few', 2 ),
                        array( 'few', 4 ),
-                       array( 'many', 5 ),
-                       array( 'many', 11 ),
-                       array( 'many', 20 ),
+                       array( 'other', 5 ),
+                       array( 'other', 11 ),
+                       array( 'other', 20 ),
                        array( 'one', 21 ),
                        array( 'few', 24 ),
-                       array( 'many', 25 ),
-                       array( 'many', 200 ),
+                       array( 'other', 25 ),
+                       array( 'other', 200 ),
                );
        }
 }
index 896522b..92e0ef9 100644 (file)
@@ -5,7 +5,7 @@
  * @file
  */
 
-/** Tests for MediaWiki languages/LanguageHy.php */
+/** Tests for Armenian (Հայերեն) */
 class LanguageHyTest extends LanguageClassesTestCase {
        /**
         * @dataProvider providePlural
@@ -21,13 +21,12 @@ class LanguageHyTest extends LanguageClassesTestCase {
         * @covers Language::getPluralRuleType
         */
        public function testGetPluralRuleType( $result, $value ) {
-               // This fails for 0, but I'm not sure why. Some voodoo going on here.
                $this->assertEquals( $result, $this->getLang()->getPluralRuleType( $value ) );
        }
 
        public static function providePlural() {
                return array(
-                       array( 'other', 0 ),
+                       array( 'one', 0 ),
                        array( 'one', 1 ),
                        array( 'other', 2 ),
                        array( 'other', 200 ),
index c4d8a6f..7120cfe 100644 (file)
@@ -5,7 +5,7 @@
  * @file
  */
 
-/** Tests for MediaWiki languages/classes/LanguageLv.php */
+/** Tests for Latvian */
 class LanguageLvTest extends LanguageClassesTestCase {
        /**
         * @dataProvider providePlural
@@ -28,13 +28,17 @@ class LanguageLvTest extends LanguageClassesTestCase {
                return array(
                        array( 'zero', 0 ),
                        array( 'one', 1 ),
-                       array( 'other', 11 ),
+                       array( 'zero', 11 ),
                        array( 'one', 21 ),
-                       array( 'other', 411 ),
+                       array( 'zero', 411 ),
+                       array( 'other', 2 ),
+                       array( 'other', 9 ),
+                       array( 'zero', 12 ),
                        array( 'other', 12.345 ),
-                       array( 'other', 20 ),
+                       array( 'zero', 20 ),
+                       array( 'other', 22 ),
                        array( 'one', 31 ),
-                       array( 'other', 200 ),
+                       array( 'zero', 200 ),
                );
        }
 }
index 7d47b37..ed15526 100644 (file)
@@ -5,7 +5,7 @@
  * @file
  */
 
-/** Tests for MediaWiki languages/classes/LanguageMk.php */
+/** Tests for македонски/Macedonian */
 class LanguageMkTest extends LanguageClassesTestCase {
        /**
         * @dataProvider providePlural
@@ -28,7 +28,7 @@ class LanguageMkTest extends LanguageClassesTestCase {
                return array(
                        array( 'other', 0 ),
                        array( 'one', 1 ),
-                       array( 'other', 11 ),
+                       array( 'one', 11 ),
                        array( 'one', 21 ),
                        array( 'one', 411 ),
                        array( 'other', 12.345 ),
index 56f8490..e17c708 100644 (file)
@@ -13,7 +13,7 @@ class LanguageRuTest extends LanguageClassesTestCase {
         * @covers Language::convertPlural
         */
        public function testPlural( $result, $value ) {
-               $forms = array( 'one', 'few', 'many', 'other' );
+               $forms = array( 'one', 'many', 'other' );
                $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) );
        }
 
@@ -22,9 +22,9 @@ class LanguageRuTest extends LanguageClassesTestCase {
         * @covers Language::convertPlural
         */
        public function testExplicitPlural() {
-               $forms = array( 'one', 'few', 'many', 'other', '12=dozen' );
+               $forms = array( 'one','many', 'other', '12=dozen' );
                $this->assertEquals( 'dozen', $this->getLang()->convertPlural( 12, $forms ) );
-               $forms = array( 'one', 'few', 'many', '100=hundred', 'other', '12=dozen' );
+               $forms = array( 'one', 'many', '100=hundred', 'other', '12=dozen' );
                $this->assertEquals( 'hundred', $this->getLang()->convertPlural( 100, $forms ) );
        }
 
@@ -42,10 +42,10 @@ class LanguageRuTest extends LanguageClassesTestCase {
                        array( 'many', 11 ),
                        array( 'one', 91 ),
                        array( 'one', 121 ),
-                       array( 'few', 2 ),
-                       array( 'few', 3 ),
-                       array( 'few', 4 ),
-                       array( 'few', 334 ),
+                       array( 'other', 2 ),
+                       array( 'other', 3 ),
+                       array( 'other', 4 ),
+                       array( 'other', 334 ),
                        array( 'many', 5 ),
                        array( 'many', 15 ),
                        array( 'many', 120 ),
@@ -57,7 +57,7 @@ class LanguageRuTest extends LanguageClassesTestCase {
         * @covers Language::convertPlural
         */
        public function testPluralTwoForms( $result, $value ) {
-               $forms = array( 'one', 'other' );
+               $forms = array( '1=one', 'other' );
                $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) );
        }
 
index bf6a14b..fa49a4d 100644 (file)
@@ -5,7 +5,7 @@
  * @file
  */
 
-/** Tests for MediaWiki languages/classes/LanguageSgs.php */
+/** Tests for Samogitian */
 class LanguageSgsTest extends LanguageClassesTestCase {
        /**
         * @dataProvider providePluralAllForms
index 6d2e25a..1b39087 100644 (file)
@@ -5,14 +5,14 @@
  * @file
  */
 
-/** Tests for MediaWiki languages/classes/LanguageSh.php */
+/** Tests for  srpskohrvatski / српскохрватски / Serbocroatian */
 class LanguageShTest extends LanguageClassesTestCase {
        /**
         * @dataProvider providePlural
         * @covers Language::convertPlural
         */
        public function testPlural( $result, $value ) {
-               $forms = array( 'one', 'few', 'many', 'other' );
+               $forms = array( 'one', 'few', 'other' );
                $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) );
        }
 
@@ -26,17 +26,17 @@ class LanguageShTest extends LanguageClassesTestCase {
 
        public static function providePlural() {
                return array(
-                       array( 'many', 0 ),
+                       array( 'other', 0 ),
                        array( 'one', 1 ),
                        array( 'few', 2 ),
                        array( 'few', 4 ),
-                       array( 'many', 5 ),
-                       array( 'many', 10 ),
-                       array( 'many', 11 ),
-                       array( 'many', 12 ),
+                       array( 'other', 5 ),
+                       array( 'other', 10 ),
+                       array( 'other', 11 ),
+                       array( 'other', 12 ),
                        array( 'one', 101 ),
                        array( 'few', 102 ),
-                       array( 'many', 111 ),
+                       array( 'other', 111 ),
                );
        }
 }
index f551248..8d35f36 100644 (file)
@@ -130,7 +130,7 @@ class LanguageSrTest extends LanguageClassesTestCase {
         * @covers Language::convertPlural
         */
        public function testPlural( $result, $value ) {
-               $forms = array( 'one', 'few', 'many', 'other' );
+               $forms = array( 'one', 'few', 'other' );
                $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) );
        }
 
@@ -145,16 +145,16 @@ class LanguageSrTest extends LanguageClassesTestCase {
        public static function providePlural() {
                return array(
                        array( 'one', 1 ),
-                       array( 'many', 11 ),
+                       array( 'other', 11 ),
                        array( 'one', 91 ),
                        array( 'one', 121 ),
                        array( 'few', 2 ),
                        array( 'few', 3 ),
                        array( 'few', 4 ),
                        array( 'few', 334 ),
-                       array( 'many', 5 ),
-                       array( 'many', 15 ),
-                       array( 'many', 120 ),
+                       array( 'other', 5 ),
+                       array( 'other', 15 ),
+                       array( 'other', 120 ),
                );
        }
 
@@ -171,8 +171,9 @@ class LanguageSrTest extends LanguageClassesTestCase {
                return array(
                        array( 'one', 1 ),
                        array( 'other', 11 ),
-                       array( 'other', 91 ),
-                       array( 'other', 121 ),
+                       array( 'other', 4 ),
+                       array( 'one', 91 ),
+                       array( 'one', 121 ),
                );
        }
 
index 1d81bc5..9051bcf 100644 (file)
@@ -6,7 +6,7 @@
  * @file
  */
 
-/** Tests for MediaWiki languages/classes/LanguageUk.php */
+/** Tests for Ukrainian */
 class LanguageUkTest extends LanguageClassesTestCase {
        /**
         * @dataProvider providePlural
@@ -57,7 +57,7 @@ class LanguageUkTest extends LanguageClassesTestCase {
         * @covers Language::convertPlural
         */
        public function testPluralTwoForms( $result, $value ) {
-               $forms = array( 'one', 'other' );
+               $forms = array( '1=one', 'other' );
                $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) );
        }
 
index 6abd09f..71d32c3 100644 (file)
@@ -81,6 +81,56 @@ class CLDRPluralRuleEvaluatorTest extends MediaWikiTestCase {
                        array( 0, 'n in 3..10,13..19', 13, 'scottish rule - ranges with comma' ),
 
                        array( 0, '5 mod 3 is n', 2, 'n as result of mod - no need to pass' ),
+
+                       # Revision 33 new operand examples
+                       # expected, rule, number, comment
+                       array( 0, 'i is 1', '1.00', 'new operand i' ),
+                       array( 0, 'v is 2', '1.00', 'new operand v' ),
+                       array( 0, 'w is 0', '1.00', 'new operand w' ),
+                       array( 0, 'f is 0', '1.00', 'new operand f' ),
+                       array( 0, 't is 0', '1.00', 'new operand t' ),
+
+                       array( 0, 'i is 1', '1.30', 'new operand i' ),
+                       array( 0, 'v is 2', '1.30', 'new operand v' ),
+                       array( 0, 'w is 1', '1.30', 'new operand w' ),
+                       array( 0, 'f is 30', '1.30', 'new operand f' ),
+                       array( 0, 't is 3', '1.30', 'new operand t' ),
+
+                       array( 0, 'i is 1', '1.03', 'new operand i' ),
+                       array( 0, 'v is 2', '1.03', 'new operand v' ),
+                       array( 0, 'w is 2', '1.03', 'new operand w' ),
+                       array( 0, 'f is 3', '1.03', 'new operand f' ),
+                       array( 0, 't is 3', '1.03', 'new operand t' ),
+
+                       # Revision 33 new operator aliases
+                       # expected, rule, number, comment
+                       array( 0, 'n % 3 is 1', 7, 'new % operator' ),
+                       array( 0, 'n = 1,3,5', 3, 'new = operator' ),
+                       array( 1, 'n != 1,3,5', 5, 'new != operator' ),
+
+                       # Revision 33 samples
+                       # expected, rule, number, comment
+                       array( 0, 'n in 1,3,5@integer 3~10, 103~110, 1003, … @decimal 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 103.0, 1003.0, …', 3, 'samples' ),
+
+                       # Revision 33 some test cases from CLDR
+                       array( 0, 'i = 1 and v = 0 or i = 0 and t = 1', '0.1', 'pt one' ),
+                       array( 0, 'i = 1 and v = 0 or i = 0 and t = 1', '0.01', 'pt one' ),
+                       array( 0, 'i = 1 and v = 0 or i = 0 and t = 1', '0.10', 'pt one' ),
+                       array( 0, 'i = 1 and v = 0 or i = 0 and t = 1', '0.010', 'pt one' ),
+                       array( 0, 'i = 1 and v = 0 or i = 0 and t = 1', '0.100', 'pt one' ),
+                       array( 1, 'i = 1 and v = 0 or i = 0 and t = 1', '0.0', 'pt other' ),
+                       array( 1, 'i = 1 and v = 0 or i = 0 and t = 1', '0.2', 'pt other' ),
+                       array( 1, 'i = 1 and v = 0 or i = 0 and t = 1', '10.0', 'pt other' ),
+                       array( 1, 'i = 1 and v = 0 or i = 0 and t = 1', '100.0', 'pt other' ),
+                       array( 0, 'v = 0 and i % 10 = 2..4 and i % 100 != 12..14 or f % 10 = 2..4 and f % 100 != 12..14', '2', 'bs few' ),
+                       array( 0, 'v = 0 and i % 10 = 2..4 and i % 100 != 12..14 or f % 10 = 2..4 and f % 100 != 12..14', '4', 'bs few' ),
+                       array( 0, 'v = 0 and i % 10 = 2..4 and i % 100 != 12..14 or f % 10 = 2..4 and f % 100 != 12..14', '22', 'bs few' ),
+                       array( 0, 'v = 0 and i % 10 = 2..4 and i % 100 != 12..14 or f % 10 = 2..4 and f % 100 != 12..14', '102', 'bs few' ),
+                       array( 0, 'v = 0 and i % 10 = 2..4 and i % 100 != 12..14 or f % 10 = 2..4 and f % 100 != 12..14', '0.2', 'bs few' ),
+                       array( 0, 'v = 0 and i % 10 = 2..4 and i % 100 != 12..14 or f % 10 = 2..4 and f % 100 != 12..14', '0.4', 'bs few' ),
+                       array( 0, 'v = 0 and i % 10 = 2..4 and i % 100 != 12..14 or f % 10 = 2..4 and f % 100 != 12..14', '10.2', 'bs few' ),
+                       array( 1, 'v = 0 and i % 10 = 2..4 and i % 100 != 12..14 or f % 10 = 2..4 and f % 100 != 12..14', '10.0', 'bs other' ),
+
                );
 
                return $tests;
index 49aefbd..de8590e 100644 (file)
  * @ingroup FileBackend
  * @since 1.22
  */
-class MockFileBackend extends FileBackendStore {
-
-       protected $mocked = array();
-
-       /** Poor man debugging */
-       protected function debug( $msg = '' ) {
-               wfDebug( wfGetCaller() . "$msg\n" );
-       }
-
-       public function isPathUsableInternal( $storagePath ) {
-               return true;
-       }
-
-       protected function doCreateInternal( array $params ) {
-               if ( isset( $params['content'] ) ) {
-                       $content = $params['content'];
-               } else {
-                       $content = 'Default mocked file content';
-               }
-               $this->debug( serialize( $params ) );
-               $dst = $params['dst'];
-               $this->mocked[$dst] = $content;
-               return Status::newGood();
-       }
-
-       protected function doStoreInternal( array $params ) {
-               $this->debug( serialize( $params ) );
-               return $this->doCreateInternal( $params );
-       }
-
-       protected function doCopyInternal( array $params ) {
-               $this->debug( serialize( $params ) );
-               $src = $params['src'];
-               $dst = $params['dst'];
-               $this->mocked[$dst] = $this->mocked[$src];
-               return Status::newGood();
-       }
-
-       protected function doDeleteInternal( array $params ) {
-               $this->debug( serialize( $params ) );
-               $src = $params['src'];
-               unset( $this->mocked[$src] );
-               return Status::newGood();
-       }
-
-       protected function doGetFileStat( array $params ) {
-               $src = $params['src'];
-               if ( array_key_exists( $src, $this->mocked ) ) {
-                       $this->debug( "('$src') found" );
-                       return array(
-                               'mtime' => wfTimestamp( TS_MW ),
-                               'size' => strlen( $this->mocked[$src] ),
-                               # No sha1, stat does not need it.
-                       );
-               } else {
-                       $this->debug( "('$src') not found" );
-                       return false;
-               }
-       }
-
+class MockFileBackend extends MemoryFileBackend {
        protected function doGetLocalCopyMulti( array $params ) {
                $tmpFiles = array(); // (path => MockFSFile)
-
-               $this->debug( '(' . serialize( $params ) . ')' );
                foreach ( $params['srcs'] as $src ) {
-                       $tmpFiles[$src] = new MockFSFile(
-                               wfTempDir() . '/' . wfRandomString( 32 )
-                       );
+                       $tmpFiles[$src] = new MockFSFile( wfTempDir() . '/' . wfRandomString( 32 ) );
                }
                return $tmpFiles;
        }
-
-       protected function doDirectoryExists( $container, $dir, array $params ) {
-               $this->debug();
-               return true;
-       }
-
-       public function getDirectoryListInternal( $container, $dir, array $params ) {
-               $this->debug();
-               return array();
-       }
-
-       public function getFileListInternal( $container, $dir, array $params ) {
-               $this->debug();
-               return array();
-       }
-
-       protected function directoriesAreVirtual() {
-               $this->debug();
-               return true;
-       }
 }
index 4c7c302..6030206 100644 (file)
                                        rtl: true
                                }
                        },
-                       // Bug #34924
+                       // Rekonq (bug 34924)
                        'Mozilla/5.0 (X11; Linux i686) AppleWebKit/534.34 (KHTML, like Gecko) rekonq Safari/534.34': {
                                title: 'Rekonq',
                                platform: 'Linux i686',
                                        ltr: true,
                                        rtl: true
                                }
+                       },
+                       // Konqueror
+                       'Mozilla/5.0 (X11; Linux i686) KHTML/4.9.1 (like Gecko) Konqueror/4.9': {
+                               title: 'Konqueror',
+                               platform: 'Linux i686',
+                               profile: {
+                                       name: 'konqueror',
+                                       layout: 'khtml',
+                                       layoutVersion: 'unknown',
+                                       platform: 'linux',
+                                       version: '4.9.1',
+                                       versionBase: '4',
+                                       versionNumber: 4.9
+                               },
+                               wikiEditor: {
+                                       // '4.9' is less than '4.11'.
+                                       ltr: false,
+                                       rtl: false
+                               },
+                               wikiEditorLegacy: {
+                                       // The check is missing in legacyTestMap
+                                       ltr: true,
+                                       rtl: true
+                               }
                        }
                },
                testMap = {
-                       // Example from WikiEditor
-                       // Make sure to use raw numbers, a string like "7.0" would fail on a
-                       // version 10 browser since in string comparaison "10" is before "7.0" :)
+                       // Example from WikiEditor, modified to provide version identifiers as strings and with
+                       // Konqueror 4.11 check added.
+                       'ltr': {
+                               'msie': [['>=', '7.0']],
+                               'firefox': [['>=', '2']],
+                               'opera': [['>=', '9.6']],
+                               'safari': [['>=', '3']],
+                               'chrome': [['>=', '3']],
+                               'netscape': [['>=', '9']],
+                               'konqueror': [['>=', '4.11']],
+                               'blackberry': false,
+                               'ipod': false,
+                               'iphone': false
+                       },
+                       'rtl': {
+                               'msie': [['>=', '8']],
+                               'firefox': [['>=', '2']],
+                               'opera': [['>=', '9.6']],
+                               'safari': [['>=', '3']],
+                               'chrome': [['>=', '3']],
+                               'netscape': [['>=', '9']],
+                               'konqueror': [['>=', '4.11']],
+                               'blackberry': false,
+                               'ipod': false,
+                               'iphone': false
+                       }
+               },
+               legacyTestMap = {
+                       // Original example from WikiEditor.
+                       // This is using the old, but still supported way of providing version identifiers as numbers
+                       // instead of strings; with this method, 4.9 would be considered larger than 4.11.
                        'ltr': {
                                'msie': [['>=', 7.0]],
                                'firefox': [['>=', 2]],
                }, ie7Profile, true ), false, 'returns false if browser not found and exactMatchOnly is set' );
        } );
 
-       QUnit.test( 'test( testMap) - WikiEditor sample', uacount * 2, function ( assert ) {
+       QUnit.test( 'test( testMap ), test( legacyTestMap ) - WikiEditor sample', uacount * 2 * 2, function ( assert ) {
                var $body = $( 'body' ),
                        bodyClasses = $body.attr( 'class' );
 
                // Loop through and run tests
                $.each( uas, function ( agent, data ) {
                        $.each( ['ltr', 'rtl'], function ( i, dir ) {
-                               var profile, testMatch;
+                               var profile, testMatch, legacyTestMatch;
                                $body.removeClass( 'ltr rtl' ).addClass( dir );
                                profile = $.client.profile( {
                                        userAgent: agent,
                                        platform: data.platform
                                } );
                                testMatch = $.client.test( testMap, profile );
+                               legacyTestMatch = $.client.test( legacyTestMap, profile );
                                $body.removeClass( dir );
 
-                               assert.equal( testMatch, data.wikiEditor[dir], 'testing comparison based on ' + dir + ', ' + agent );
+                               assert.equal(
+                                       testMatch,
+                                       data.wikiEditor[dir],
+                                       'testing comparison based on ' + dir + ', ' + agent
+                               );
+                               assert.equal(
+                                       legacyTestMatch,
+                                       data.wikiEditorLegacy ? data.wikiEditorLegacy[dir] : data.wikiEditor[dir],
+                                       'testing comparison based on ' + dir + ', ' + agent + ' (legacyTestMap)'
+                               );
                        } );
                } );
 
index 4083564..aeefd64 100644 (file)
                        // purposes it is part of the title
                        repeat( 'x', 252 ) + '.json',
                        // Namespace prefix without actual title
-                       // ':', // bug 54044
                        'Talk:',
                        'Category: ',
                        'Category: #bar'
index 9913f5e..b6a8a46 100644 (file)
 
                assert.throws(
                        function () {
-                               return new mw.Uri( 'foo.com/bar/baz', {
+                               return new mw.Uri( 'example.com/bar/baz', {
                                        strictMode: true
                                } );
                        },
                        'throw error on URI without protocol or // or leading / in strict mode'
                );
 
-               uri = new mw.Uri( 'foo.com/bar/baz', {
+               uri = new mw.Uri( 'example.com/bar/baz', {
                        strictMode: false
                } );
-               assert.equal( uri.toString(), 'http://foo.com/bar/baz', 'normalize URI without protocol or // in loose mode' );
+               assert.equal( uri.toString(), 'http://example.com/bar/baz', 'normalize URI without protocol or // in loose mode' );
        } );
 
        QUnit.test( 'Constructor( Object )', 3, function ( assert ) {
        } );
 
        QUnit.test( '.getQueryString()', 2, function ( assert ) {
-               var uri = new mw.Uri( 'http://www.google.com/?q=uri' );
+               var uri = new mw.Uri( 'http://search.example.com/?q=uri' );
 
                assert.deepEqual(
                        {
                        },
                        {
                                protocol: 'http',
-                               host: 'www.google.com',
+                               host: 'search.example.com',
                                port: undefined,
                                path: '/',
                                query: { q: 'uri' },
                        'basic object properties'
                );
 
-               uri = new mw.Uri( 'https://example.org/mw/index.php?title=Sandbox/7&other=Sandbox/7&foo' );
+               uri = new mw.Uri( 'https://example.com/mw/index.php?title=Sandbox/7&other=Sandbox/7&foo' );
                assert.equal(
                        uri.getQueryString(),
                        'title=Sandbox/7&other=Sandbox%2F7&foo',